@wix/interact 2.0.0-rc.2 → 2.0.0-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +129 -31
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/react.js +1 -1
- package/dist/cjs/react.js.map +1 -1
- package/dist/cjs/web.js +1 -1
- package/dist/cjs/web.js.map +1 -1
- package/dist/es/index.js +1 -1
- package/dist/es/react.js +2 -2
- package/dist/es/react.js.map +1 -1
- package/dist/es/web.js +9 -9
- package/dist/es/web.js.map +1 -1
- package/dist/index-CKecAdEz.mjs +7348 -0
- package/dist/index-CKecAdEz.mjs.map +1 -0
- package/dist/index-DlTJdKHL.js +18 -0
- package/dist/index-DlTJdKHL.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/core/Interact.d.ts +9 -4
- package/dist/types/core/Interact.d.ts.map +1 -1
- package/dist/types/core/InteractionController.d.ts +7 -2
- package/dist/types/core/InteractionController.d.ts.map +1 -1
- package/dist/types/core/add.d.ts.map +1 -1
- package/dist/types/core/remove.d.ts +1 -1
- package/dist/types/core/remove.d.ts.map +1 -1
- package/dist/types/handlers/animationEnd.d.ts.map +1 -1
- package/dist/types/handlers/click.d.ts.map +1 -1
- package/dist/types/handlers/hover.d.ts.map +1 -1
- package/dist/types/handlers/utilities.d.ts.map +1 -1
- package/dist/types/handlers/viewEnter.d.ts +2 -0
- package/dist/types/handlers/viewEnter.d.ts.map +1 -1
- package/dist/types/react/Interaction.d.ts.map +1 -1
- package/dist/types/types.d.ts +11 -5
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/web/InteractElement.d.ts +3 -1
- package/dist/types/web/InteractElement.d.ts.map +1 -1
- package/docs/README.md +5 -7
- package/package.json +4 -3
- package/rules/Integration.md +87 -39
- package/rules/full-lean.md +63 -7
- package/rules/{viewprogress-rules.md → viewprogress.md} +38 -53
- package/dist/index-C8QxOkui.mjs +0 -7940
- package/dist/index-C8QxOkui.mjs.map +0 -1
- package/dist/index-DEPRHaUt.js +0 -18
- package/dist/index-DEPRHaUt.js.map +0 -1
- /package/rules/{click-rules.md → click.md} +0 -0
- /package/rules/{hover-rules.md → hover.md} +0 -0
- /package/rules/{pointermove-rules.md → pointermove.md} +0 -0
- /package/rules/{scroll-list-rules.md → scroll-list.md} +0 -0
- /package/rules/{viewenter-rules.md → viewenter.md} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-C8QxOkui.mjs","sources":["../src/core/utilities.ts","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/@wix/motion/dist/esm/AnimationGroup.js","../../../node_modules/@wix/motion/dist/esm/easings.js","../../../node_modules/@wix/motion/dist/esm/utils.js","../../../node_modules/@wix/motion/dist/esm/CustomAnimation.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/ArcScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/BlurScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/FadeScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/FlipScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/GrowScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/MoveScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/PanScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/ParallaxScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/RevealScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/ShapeScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/ShuttersScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/ShrinkScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/SkewPanScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/SlideScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/Spin3dScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/SpinScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/StretchScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/TiltScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/TurnScroll.js","../../../node_modules/@wix/motion/dist/esm/library/scroll/index.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/ArcIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/BlurIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/ShuttersIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/BounceIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/CurveIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/CircleIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/DropIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/ExpandIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/FadeIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/FlipIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/FloatIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/FoldIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/GlideIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/GlitchIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/GrowIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/PunchIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/ShapeIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/RevealIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/SlideIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/SpinIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/TiltIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/TurnIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/WinkIn.js","../../../node_modules/@wix/motion/dist/esm/library/entrance/index.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Bounce.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Breathe.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Cross.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Flash.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Flip.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Fold.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Jello.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Poke.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Rubber.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Pulse.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Spin.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Swing.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/Wiggle.js","../../../node_modules/@wix/motion/dist/esm/library/ongoing/index.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/CustomMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/AiryMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/BlobMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/BlurMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/TrackMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/BounceMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/ScaleMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/SkewMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/SpinMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/SwivelMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/Tilt3DMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/Track3DMouse.js","../../../node_modules/@wix/motion/dist/esm/library/mouse/index.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/utils.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgCloseUp.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgFade.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgFadeBack.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgFake3D.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgPan.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgParallax.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgPullBack.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgReveal.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgRotate.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgSkew.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/BgZoom.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/ImageParallax.js","../../../node_modules/@wix/motion/dist/esm/library/backgroundScroll/index.js","../../../node_modules/fastdom/fastdom.js","../../../node_modules/@wix/motion/dist/esm/api/common.js","../../../node_modules/@wix/motion/dist/esm/api/webAnimations.js","../../../node_modules/@wix/motion/dist/esm/api/prepare.js","../../../node_modules/@wix/motion/dist/esm/motion.js","../src/utils.ts","../src/handlers/utilities.ts","../src/handlers/viewEnter.ts","../../../node_modules/fizban/src/utilities.js","../../../node_modules/fizban/src/view.js","../../../node_modules/fizban/src/controller.js","../../../node_modules/fizban/src/Scroll.js","../src/handlers/viewProgress.ts","../src/handlers/hover.ts","../src/handlers/click.ts","../../../node_modules/kuliso/src/utilities.js","../../../node_modules/kuliso/src/scrollend.js","../../../node_modules/kuliso/src/controller.js","../../../node_modules/kuliso/src/Pointer.js","../src/handlers/pointerMove.ts","../src/handlers/animationEnd.ts","../src/handlers/index.ts","../src/core/Interact.ts","../src/core/add.ts","../src/core/remove.ts","../src/core/InteractionController.ts","../src/dom/api.ts","../src/core/css.ts"],"sourcesContent":["export function _processKeysForInterpolation(key: string) {\n return [...key.matchAll(/\\[([-\\w]+)]/g)].map(\n ([_, _instanceKey]) => _instanceKey,\n );\n}\n\n// TODO: currently only supports simple one-to-one mapping, e.g. item[0] -> item[0], item[1] -> item[1]\nexport function getInterpolatedKey(template: string, key: string) {\n const keys = _processKeysForInterpolation(key);\n let index = 0;\n return keys.length\n ? template.replace(/\\[]/g, () => `[${keys[index++]}]` || '[]')\n : template;\n}\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n/**\n * @class AnimationGroup\n *\n * A wrapper object for simulating a GroupEffect and managing multiple animations.\n * See: https://www.w3.org/TR/web-animations-2/#grouping-and-synchronization\n */\nexport class AnimationGroup {\n constructor(animations, options) {\n _defineProperty(this, \"animations\", void 0);\n _defineProperty(this, \"options\", void 0);\n _defineProperty(this, \"ready\", void 0);\n _defineProperty(this, \"isCSS\", void 0);\n this.animations = animations;\n this.options = options;\n this.ready = (options == null ? void 0 : options.measured) || Promise.resolve();\n this.isCSS = animations[0] instanceof CSSAnimation;\n }\n getProgress() {\n var _this$animations$;\n return ((_this$animations$ = this.animations[0]) == null || (_this$animations$ = _this$animations$.effect) == null ? void 0 : _this$animations$.getComputedTiming().progress) || 0;\n }\n async play(callback) {\n await this.ready;\n for (const animation of this.animations) {\n animation.play();\n }\n\n // TODO: Wait for all animations to be ready, using allSettled to handle rejections gracefully\n // await Promise.allSettled(\n await Promise.all(this.animations.map(animation => animation.ready));\n if (callback) {\n callback();\n }\n }\n pause() {\n for (const animation of this.animations) {\n animation.pause();\n }\n }\n async reverse(callback) {\n await this.ready;\n for (const animation of this.animations) {\n animation.reverse();\n }\n\n // TODO: Wait for all animations to be ready, using allSettled to handle rejections gracefully\n // await Promise.allSettled(\n await Promise.all(this.animations.map(animation => animation.ready));\n if (callback) {\n callback();\n }\n }\n progress(p) {\n for (const animation of this.animations) {\n const {\n activeDuration\n } = animation.effect.getComputedTiming();\n const {\n delay\n } = animation.effect.getTiming();\n animation.currentTime = ((delay || 0) + (activeDuration || 0)) * p;\n }\n }\n cancel() {\n for (const animation of this.animations) {\n animation.cancel();\n }\n }\n setPlaybackRate(rate) {\n for (const animation of this.animations) {\n animation.playbackRate = rate;\n }\n }\n async onFinish(callback) {\n try {\n await Promise.all(this.animations.map(animation => animation.finished));\n const a = this.animations[0];\n if (a && !this.isCSS) {\n var _a$effect;\n const target = (_a$effect = a.effect) == null ? void 0 : _a$effect.target;\n if (target) {\n const endEvent = new Event('animationend');\n target.dispatchEvent(endEvent);\n }\n }\n callback();\n } catch (_error) {\n console.warn('animation was interrupted - aborting onFinish callback - ', _error);\n }\n }\n get finished() {\n return Promise.all(this.animations.map(animation => animation.finished));\n }\n get playState() {\n var _this$animations$2;\n return (_this$animations$2 = this.animations[0]) == null ? void 0 : _this$animations$2.playState;\n }\n}\n//# sourceMappingURL=AnimationGroup.js.map","/**\n * @file Easing functions as defined by Robert Penner.\n * @example A playground I made https://codepen.io/tombigel/pen/eYLLVRg\n */\n\n/**\n * Linear easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const linear = t => t;\n\n/**\n * Sine-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const sineIn = t => 1 - Math.cos(t * Math.PI / 2);\n\n/**\n * Sine-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const sineOut = t => Math.sin(t * Math.PI / 2);\n\n/**\n * Sine-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const sineInOut = t => -(Math.cos(Math.PI * t) - 1) / 2;\n\n/**\n * Quadratic-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quadIn = t => t ** 2;\n\n/**\n * Quadratic-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quadOut = t => 1 - (1 - t) ** 2;\n\n/**\n * Quadratic-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quadInOut = t => t < 0.5 ? 2 * t ** 2 : 1 - (-2 * t + 2) ** 2 / 2;\n\n/**\n * Cubic-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const cubicIn = t => t ** 3;\n\n/**\n * Cubic-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const cubicOut = t => 1 - (1 - t) ** 3;\n\n/**\n * Cubic-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const cubicInOut = t => t < 0.5 ? 4 * t ** 3 : 1 - (-2 * t + 2) ** 3 / 2;\n\n/**\n * Quartic-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quartIn = t => t ** 4;\n\n/**\n * Quartic-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quartOut = t => 1 - (1 - t) ** 4;\n\n/**\n * Quartic-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quartInOut = t => t < 0.5 ? 8 * t ** 4 : 1 - (-2 * t + 2) ** 4 / 2;\n\n/**\n * Quintic-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quintIn = t => t ** 5;\n\n/**\n * Quintic-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quintOut = t => 1 - (1 - t) ** 5;\n\n/**\n * Quintic-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const quintInOut = t => t < 0.5 ? 16 * t ** 5 : 1 - (-2 * t + 2) ** 5 / 2;\n\n/**\n * Exponential-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const expoIn = t => t === 0 ? 0 : 2 ** (10 * t - 10);\n\n/**\n * Exponential-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const expoOut = t => t === 1 ? 1 : 1 - 2 ** (-10 * t);\n\n/**\n * Exponential-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const expoInOut = t => t === 0 ? 0 : t === 1 ? 1 : t < 0.5 ? 2 ** (20 * t - 10) / 2 : (2 - 2 ** (-20 * t + 10)) / 2;\n\n/**\n * Circular-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const circIn = t => 1 - Math.sqrt(1 - t ** 2);\n\n/**\n * Circular-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const circOut = t => Math.sqrt(1 - (t - 1) ** 2);\n\n/**\n * Circular-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const circInOut = t => t < 0.5 ? (1 - Math.sqrt(1 - 4 * t ** 2)) / 2 : (Math.sqrt(-(2 * t - 3) * (2 * t - 1)) + 1) / 2;\n\n/**\n * Back-in easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const backIn = t => 2.70158 * t ** 3 - 1.70158 * t ** 2;\n\n/**\n * Back-out easing function.\n * @param t - The time value (between 0 and 1).\n * @returns The eased value.\n */\nexport const backOut = t => 1 + 2.70158 * (t - 1) ** 3 + 1.70158 * (t - 1) ** 2;\n\n/**\n * Back-in-out easing function.\n * @param t - The time value (between 0 and 1).\n * @param k - The back factor (optional, default is 1.70158 * 1.525).\n * @returns The eased value.\n */\nexport const backInOut = function (t, k) {\n if (k === void 0) {\n k = 1.70158 * 1.525;\n }\n return t < 0.5 ? (2 * t) ** 2 * ((k + 1) * 2 * t - k) / 2 : ((2 * t - 2) ** 2 * ((k + 1) * (t * 2 - 2) + k) + 2) / 2;\n};\nexport const jsEasings = {\n linear,\n sineIn,\n sineOut,\n sineInOut,\n quadIn,\n quadOut,\n quadInOut,\n cubicIn,\n cubicOut,\n cubicInOut,\n quartIn,\n quartOut,\n quartInOut,\n quintIn,\n quintOut,\n quintInOut,\n expoIn,\n expoOut,\n expoInOut,\n circIn,\n circOut,\n circInOut,\n backIn,\n backOut,\n backInOut\n};\n\n/**\n * CSS cubic-bezier easings based on PostCSS Easings\n */\nexport const cssEasings = {\n linear: 'linear',\n ease: 'ease',\n easeIn: 'ease-in',\n easeOut: 'ease-out',\n easeInOut: 'ease-in-out',\n sineIn: 'cubic-bezier(0.47, 0, 0.745, 0.715)',\n sineOut: 'cubic-bezier(0.39, 0.575, 0.565, 1)',\n sineInOut: 'cubic-bezier(0.445, 0.05, 0.55, 0.95)',\n quadIn: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n quadOut: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n quadInOut: 'cubic-bezier(0.455, 0.03, 0.515, 0.955)',\n cubicIn: 'cubic-bezier(0.55, 0.055, 0.675, 0.19)',\n cubicOut: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n cubicInOut: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n quartIn: 'cubic-bezier(0.895, 0.03, 0.685, 0.22)',\n quartOut: 'cubic-bezier(0.165, 0.84, 0.44, 1)',\n quartInOut: 'cubic-bezier(0.77, 0, 0.175, 1)',\n quintIn: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)',\n quintOut: 'cubic-bezier(0.23, 1, 0.32, 1)',\n quintInOut: 'cubic-bezier(0.86, 0, 0.07, 1)',\n expoIn: 'cubic-bezier(0.95, 0.05, 0.795, 0.035)',\n expoOut: 'cubic-bezier(0.19, 1, 0.22, 1)',\n expoInOut: 'cubic-bezier(1, 0, 0, 1)',\n circIn: 'cubic-bezier(0.6, 0.04, 0.98, 0.335)',\n circOut: 'cubic-bezier(0.075, 0.82, 0.165, 1)',\n circInOut: 'cubic-bezier(0.785, 0.135, 0.15, 0.86)',\n backIn: 'cubic-bezier(0.6, -0.28, 0.735, 0.045)',\n backOut: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n backInOut: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)'\n};\n//# sourceMappingURL=easings.js.map","import { cssEasings, jsEasings } from './easings';\n/**\n * Map a value from one range 'a' to different range 'b'\n *\n * @param sourceMin - The minimum value of the source range\n * @param sourceMax - The maximum value of the source range\n * @param targetMin - The minimum value of the target range\n * @param targetMax - The maximum value of the target range\n * @param num - The number to map\n * @returns The mapped value\n */\nexport function mapRange(sourceMin, sourceMax, targetMin, targetMax, num) {\n return (num - sourceMin) * (targetMax - targetMin) / (sourceMax - sourceMin) + targetMin;\n}\n\n/**\n * Get the distance between 2 points\n *\n * @param p1 - The first point [x1, y1]\n * @param p2 - The second point [x2, y2]\n * @returns The distance between the two points\n */\nexport function distance2d(_ref, _ref2) {\n let [x1, y1] = _ref;\n let [x2, y2] = _ref2;\n return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n}\n\n/**\n * Get the angle between 2 points in degrees clamped between 0 and 360\n * Pass the third argument \"offset\" to rotate the angle source,\n * for example use 90 to move angle 0 to the top\n *\n * @param p1 - The first point [x1, y1]\n * @param p2 - The second point [x2, y2]\n * @param offset - The angle offset (default: 0)\n * @returns The angle between the two points in degrees\n */\nexport function getAngleInDeg(p1, p2, offset) {\n if (p1 === void 0) {\n p1 = [0, 0];\n }\n if (p2 === void 0) {\n p2 = [0, 0];\n }\n if (offset === void 0) {\n offset = 0;\n }\n const angle = Math.atan2(p2[1] - p1[1], p2[0] - p1[0]) * 180 / Math.PI;\n return (360 + offset + angle) % 360;\n}\nexport const INITIAL_FRAME_OFFSET = 1e-6;\nconst CLIP_POLYGON_TEMPLATES = {\n initial: _ref3 => {\n let {\n top,\n bottom,\n left,\n right\n } = _ref3;\n return `${left}% ${top}%, ${right}% ${top}%, ${right}% ${bottom}%, ${left}% ${bottom}%`;\n },\n top: _ref4 => {\n let {\n top,\n left,\n right,\n minimum\n } = _ref4;\n return `${left}% ${top}%, ${right}% ${top}%, ${right}% ${top + minimum}%, ${left}% ${top + minimum}%`;\n },\n right: _ref5 => {\n let {\n top,\n bottom,\n right,\n minimum\n } = _ref5;\n return `${right - minimum}% ${top}%, ${right}% ${top}%, ${right}% ${bottom}%, ${right - minimum}% ${bottom}%`;\n },\n center: _ref6 => {\n let {\n centerX,\n centerY,\n minimum\n } = _ref6;\n return `${centerX - minimum / 2}% ${centerY - minimum / 2}%, ${centerX + minimum / 2}% ${centerY - minimum / 2}%, ${centerX + minimum / 2}% ${centerY + minimum / 2}%, ${centerX - minimum / 2}% ${centerY + minimum / 2}%`;\n },\n bottom: _ref7 => {\n let {\n bottom,\n left,\n right,\n minimum\n } = _ref7;\n return `${left}% ${bottom - minimum}%, ${right}% ${bottom - minimum}%, ${right}% ${bottom}%, ${left}% ${bottom}%`;\n },\n left: _ref8 => {\n let {\n top,\n bottom,\n left,\n minimum\n } = _ref8;\n return `${left}% ${top}%, ${left + minimum}% ${top}%, ${left + minimum}% ${bottom}%, ${left}% ${bottom}%`;\n },\n vertical: _ref9 => {\n let {\n top,\n bottom,\n left,\n right,\n minimum\n } = _ref9;\n return `${left}% ${top + minimum / 2}%, ${right}% ${top + minimum / 2}%, ${right}% ${bottom - minimum / 2}%, ${left}% ${bottom - minimum / 2}%`;\n },\n horizontal: _ref10 => {\n let {\n top,\n bottom,\n left,\n right,\n minimum\n } = _ref10;\n return `${left + minimum / 2}% ${top}%, ${right - minimum / 2}% ${top}%, ${right - minimum / 2}% ${bottom}%, ${left + minimum / 2}% ${bottom}%`;\n }\n};\nexport function getClipPolygonParams(_ref11) {\n let {\n direction,\n scaleX = 1,\n scaleY = 1,\n minimum = 0\n } = _ref11;\n const top = (1 - scaleY) / 2 * 100;\n const left = (1 - scaleX) / 2 * 100;\n const right = 100 + left - (1 - scaleX) * 100;\n const bottom = 100 + top - (1 - scaleY) * 100;\n const centerX = (right + left) / 2;\n const centerY = (bottom + top) / 2;\n return `polygon(${CLIP_POLYGON_TEMPLATES[direction]({\n top,\n bottom,\n left,\n right,\n centerX,\n centerY,\n minimum\n })})`;\n}\n\n/**\n * Adjust direction by angle from predefined list\n */\nexport function getAdjustedDirection(availableDirections, direction, angleInDeg) {\n const index = availableDirections.indexOf(direction);\n const length = availableDirections.length;\n const shiftBy = Math.round((angleInDeg || 0) / 360 * length);\n const newIndex = (index + (length - 1) * shiftBy) % length; // eslint-disable-line no-mixed-operators\n return availableDirections[newIndex];\n}\nexport function transformPolarToXY(angle, distance) {\n const radians = angle * Math.PI / 180;\n const x = Math.cos(radians) * distance;\n const y = Math.sin(radians) * distance;\n return [x, y];\n}\nexport function getCssUnits(type) {\n return type === 'percentage' ? '%' : type || 'px';\n}\nexport function getEasing(easing) {\n return easing ? cssEasings[easing] || easing : cssEasings.linear;\n}\nexport function getJsEasing(easing) {\n return easing ? jsEasings[easing] : undefined;\n}\nexport function getEasingFamily(easing) {\n if (!cssEasings[easing]) {\n return {\n in: easing,\n inOut: easing,\n out: easing\n };\n }\n const ease = easing.replace(/In|Out/g, '');\n if (ease === 'linear') {\n return {\n in: `linear`,\n inOut: `linear`,\n out: `linear`\n };\n }\n return {\n in: `${ease}In`,\n inOut: `${ease}InOut`,\n out: `${ease}Out`\n };\n}\nconst MOUSE_TRANSITION_EASING_MAP = {\n linear: 'linear',\n easeOut: 'ease-out',\n hardBackOut: 'cubic-bezier(0.58, 2.5, 0, 0.95)',\n elastic: 'linear( 0, 0.2178 2.1%, 1.1144 8.49%, 1.2959 10.7%, 1.3463 11.81%, 1.3705 12.94%, 1.3726, 1.3643 14.48%, 1.3151 16.2%, 1.0317 21.81%, 0.941 24.01%, 0.8912 25.91%, 0.8694 27.84%, 0.8698 29.21%, 0.8824 30.71%, 1.0122 38.33%, 1.0357, 1.046 42.71%, 1.0416 45.7%, 0.9961 53.26%, 0.9839 57.54%, 0.9853 60.71%, 1.0012 68.14%, 1.0056 72.24%, 0.9981 86.66%, 1 )',\n bounce: 'linear( 0, 0.0039, 0.0157, 0.0352, 0.0625 9.09%, 0.1407, 0.25, 0.3908, 0.5625, 0.7654, 1, 0.8907, 0.8125 45.45%, 0.7852, 0.7657, 0.7539, 0.75, 0.7539, 0.7657, 0.7852, 0.8125 63.64%, 0.8905, 1 72.73%, 0.9727, 0.9532, 0.9414, 0.9375, 0.9414, 0.9531, 0.9726, 1, 0.9883, 0.9844, 0.9883, 1 )'\n};\nexport function getMouseTransitionEasing(value) {\n return value && MOUSE_TRANSITION_EASING_MAP[value] || 'linear';\n}\nexport function getOutOfScreenDistance(angle) {\n const angleInRad = angle * Math.PI / 180;\n const angleCos = Math.round(Math.cos(angleInRad) * 10) / 10;\n const angleSin = Math.round(Math.sin(angleInRad) * 10) / 10;\n\n // Calculate x and y direction based on angle\n const xDirection = Math.sign(angleCos);\n const yDirection = Math.sign(angleSin);\n const left = `var(--motion-left, 0px)`;\n const top = `var(--motion-top, 0px)`;\n\n // Calculate x and y distances between component and stage\n const xDistance = xDirection ? xDirection === -1 ? `(-1 * ${left} - 100%)` : `(100vw - ${left})` : 0;\n const yDistance = yDirection ? yDirection === -1 ? `(-1 * ${top} - 100%)` : `(100vh - ${top})` : 0;\n\n // Calculate hypotenuse\n let hypotenuse;\n const hypotX = `calc(${xDistance} / ${angleCos})`;\n const hypotY = `calc(${yDistance} / ${angleSin})`;\n if (!angleCos) {\n hypotenuse = hypotY;\n } else if (!angleSin) {\n hypotenuse = hypotX;\n } else {\n hypotenuse = `min(${hypotY}, ${hypotX})`;\n }\n return {\n // distance: Math.abs(hypotenuse),\n x: `calc(${hypotenuse} * ${angleCos})`,\n y: `calc(${hypotenuse} * ${angleSin})`\n };\n}\nexport function getElementOffset(element, parent) {\n let left = element.offsetLeft;\n let top = element.offsetTop;\n let offsetParent = element.offsetParent;\n while (offsetParent) {\n if (parent && offsetParent === parent) {\n break;\n }\n left += offsetParent.offsetLeft;\n top += offsetParent.offsetTop;\n offsetParent = offsetParent.offsetParent;\n }\n return {\n left,\n top\n };\n}\nconst generateShuttersClipPath = (direction, shutterCount, staggered) => {\n const isTopOrLeft = direction === 'top' || direction === 'left';\n const iterStart = isTopOrLeft ? shutterCount : 0;\n const iterEnd = isTopOrLeft ? 0 : shutterCount;\n const inc = isTopOrLeft ? -1 : 1;\n const isVerticalPath = direction === 'top' || direction === 'bottom';\n const clipPathStart = [];\n const clipPathEnd = [];\n for (let i = iterStart; i !== iterEnd; i += inc) {\n const shutterEndPosInPercentage = 100 * ((i + inc) / shutterCount);\n const clipStart = 100 * (i / shutterCount) | 0;\n let clipEnd;\n if (staggered) {\n const staggerFactor = isTopOrLeft ? 1 + (shutterCount - i) / shutterCount : 1 + i / shutterCount;\n // staggerFactor changes the speed in which the current shutter completes its animation.\n // case = 1: shutter closes at normal rate (as if there is no stagger at all)\n // case > 1: shutter closes faster (the bigger it is, the faster it closes)\n\n clipEnd = isTopOrLeft ? 100 - (100 - shutterEndPosInPercentage) * staggerFactor : shutterEndPosInPercentage * staggerFactor;\n } else {\n clipEnd = shutterEndPosInPercentage;\n }\n clipEnd |= 0;\n if (isVerticalPath) {\n clipPathStart.push(`0% ${clipStart}%, 100% ${clipStart}%, 100% ${clipStart}%, 0% ${clipStart}%`);\n clipPathEnd.push(`0% ${clipStart}%, 100% ${clipStart}%, 100% ${clipEnd}%, 0% ${clipEnd}%`);\n } else {\n clipPathStart.push(`${clipStart}% 0%, ${clipStart}% 100%, ${clipStart}% 100%, ${clipStart}% 0%`);\n clipPathEnd.push(`${clipStart}% 0%, ${clipStart}% 100%, ${clipEnd}% 100%, ${clipEnd}% 0%`);\n }\n }\n return {\n start: clipPathStart,\n end: clipPathEnd\n };\n};\nexport function getShuttersClipPaths(direction, shutterCount, staggered, reverse) {\n const {\n start,\n end\n } = generateShuttersClipPath(direction, shutterCount, staggered);\n if (reverse) {\n start.reverse();\n end.reverse();\n }\n return {\n clipStart: `polygon(${start.join(', ')})`,\n clipEnd: `polygon(${end.join(', ')})`\n };\n}\nexport function roundNumber(num, precision) {\n if (precision === void 0) {\n precision = 2;\n }\n return parseFloat(num.toFixed(precision));\n}\nexport function toKeyframeValue(custom, key, useValue, fallback) {\n if (useValue === void 0) {\n useValue = false;\n }\n if (fallback === void 0) {\n fallback = '';\n }\n return useValue ? custom[key] : `var(${key}${fallback ? `,${fallback}` : ''})`;\n}\nexport function getTimingFactor(duration, delay, asString) {\n if (asString === void 0) {\n asString = false;\n }\n const duration_ = duration || 1;\n const delay_ = delay || 0;\n const timingFactor = roundNumber(duration_ / (duration_ + delay_));\n return asString ? timingFactor.toString().replace(/\\./g, '') : timingFactor;\n}\n//# sourceMappingURL=utils.js.map","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n/**\n * @class CustomAnimation\n *\n * A wrapper object for Animation that mimics the same interface but implements CustomEffect that runs JS code instead of KeyframeEffect.\n * The class is implemented by holding an inner Animation object instead of inheritance due to some browsers not allowing extension of built-in objects.\n */\nexport class CustomAnimation {\n constructor(customEffect, target, effectOptions, timingOptions) {\n _defineProperty(this, \"_animation\", void 0);\n _defineProperty(this, \"customEffect\", void 0);\n _defineProperty(this, \"progress\", void 0);\n _defineProperty(this, \"_tickCbId\", void 0);\n _defineProperty(this, \"_finishHandler\", void 0);\n // overriding composite so that animation is not replaced and removed\n const effect = new KeyframeEffect(target, [], {\n ...effectOptions,\n composite: 'add'\n });\n const {\n timeline\n } = timingOptions;\n this._animation = new Animation(effect, timeline);\n this._tickCbId = null;\n this.progress = null;\n this.customEffect = progress => customEffect(effect.target, progress);\n\n // stop loop if animation is removed from the DOM after finish (does not fire 'remove' event)\n this._finishHandler = _ => {\n var _target;\n if (!((_target = this.effect.target) != null && _target.getAnimations().find(a => a === this._animation))) {\n this.cancel();\n }\n };\n this.addEventListener('finish', this._finishHandler);\n this.addEventListener('remove', this._finishHandler);\n }\n\n // private tick method for customEffect loop implementation\n _tick() {\n try {\n var _this$effect;\n const progress = ((_this$effect = this.effect) == null ? void 0 : _this$effect.getComputedTiming().progress) ?? null;\n if (progress !== this.progress) {\n var _this$customEffect;\n (_this$customEffect = this.customEffect) == null || _this$customEffect.call(this, progress);\n this.progress = progress;\n }\n this._tickCbId = requestAnimationFrame(() => {\n this._tick();\n });\n } catch (error) {\n this._tickCbId = null;\n console.error(`failed to run customEffect! effectId: ${this.id}, error: ${error instanceof Error ? error.message : error}`);\n }\n }\n\n // Animation timing properties\n get currentTime() {\n return this._animation.currentTime;\n }\n set currentTime(time) {\n this._animation.currentTime = time;\n }\n get startTime() {\n return this._animation.startTime;\n }\n set startTime(time) {\n this._animation.startTime = time;\n }\n get playbackRate() {\n return this._animation.playbackRate;\n }\n set playbackRate(speed) {\n this._animation.playbackRate = speed;\n }\n\n // Animation basic properties\n get id() {\n return this._animation.id;\n }\n set id(uid) {\n this._animation.id = uid;\n }\n get effect() {\n return this._animation.effect;\n }\n set effect(e) {\n this._animation.effect = e;\n }\n get timeline() {\n return this._animation.timeline;\n }\n set timeline(tl) {\n this._animation.timeline = tl;\n }\n\n // Animation readonly state properties\n get finished() {\n return this._animation.finished;\n }\n get pending() {\n return this._animation.pending;\n }\n get playState() {\n return this._animation.playState;\n }\n get ready() {\n return this._animation.ready;\n }\n get replaceState() {\n return this._animation.replaceState;\n }\n\n // Animation event handlers\n get oncancel() {\n return this._animation.oncancel;\n }\n set oncancel(cb) {\n this._animation.oncancel = cb;\n }\n get onfinish() {\n return this._animation.onfinish;\n }\n set onfinish(cb) {\n this._animation.onfinish = cb;\n }\n get onremove() {\n return this._animation.onremove;\n }\n set onremove(cb) {\n this._animation.onremove = cb;\n }\n\n // CustomAnimation overridden methods\n play() {\n this._animation.play();\n cancelAnimationFrame(this._tickCbId);\n this._tickCbId = requestAnimationFrame(() => this._tick());\n }\n pause() {\n this._animation.pause();\n cancelAnimationFrame(this._tickCbId);\n this._tickCbId = null;\n }\n cancel() {\n this.removeEventListener('finish', this._finishHandler);\n this.removeEventListener('remove', this._finishHandler);\n this._animation.cancel();\n // signaling cancelation for customEffect to handle it as desired\n this.customEffect(null);\n cancelAnimationFrame(this._tickCbId);\n this._tickCbId = null;\n }\n commitStyles() {\n console.warn('CustomEffect animations do not support commitStyles method as they have no style to commit');\n }\n\n // Animation methods without override\n finish() {\n this._animation.finish();\n }\n persist() {\n this._animation.persist();\n }\n reverse() {\n this._animation.reverse();\n }\n updatePlaybackRate(playbackRate) {\n this._animation.updatePlaybackRate(playbackRate);\n }\n\n // Animation events API\n addEventListener(type, listener, options) {\n this._animation.addEventListener(type, listener, options);\n }\n removeEventListener(type, listener, options) {\n this._animation.removeEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n return this._animation.dispatchEvent(event);\n }\n}\n//# sourceMappingURL=CustomAnimation.js.map","const ROTATE_DIRECTION_MAP = {\n vertical: 'rotateX',\n horizontal: 'rotateY'\n};\nconst ROTATION = 68;\nconst RANGES_MAP = {\n in: {\n fromValue: -ROTATION,\n toValue: 0\n },\n out: {\n fromValue: 0,\n toValue: ROTATION\n },\n continuous: {\n fromValue: -ROTATION,\n toValue: ROTATION\n }\n};\nexport default function create(options) {\n const {\n direction = 'horizontal',\n range = 'in'\n } = options.namedEffect;\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const rotateAxis = ROTATE_DIRECTION_MAP[direction];\n const {\n fromValue,\n toValue\n } = RANGES_MAP[range];\n const easing = 'linear';\n return [{\n ...options,\n fill,\n easing,\n keyframes: [{\n transform: `perspective(500px) translateZ(-300px) ${rotateAxis}(${fromValue}deg) translateZ(300px) rotate(var(--comp-rotate-z, 0deg))`\n }, {\n transform: `perspective(500px) translateZ(-300px) ${rotateAxis}(${toValue}deg) translateZ(300px) rotate(var(--comp-rotate-z, 0deg))`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * transform: perspective(500px) translateZ(-300px) <rotateAxis>(<fromValue>deg) translateZ(300px) rotate(<rotation>);\n * }\n * to {\n * transform-origin: 50% 50% -300px;\n * transform: perspective(500px) translateZ(-300px) <rotateAxis>(<toValue>deg) translateZ(300px) rotate(<rotation>);\n * }\n * }\n */\n}\n//# sourceMappingURL=ArcScroll.js.map","const BLUR_POWER_MAP = {\n soft: 6,\n medium: 25,\n hard: 50\n};\nexport default function create(options) {\n const {\n blur = 6,\n power,\n range = 'in'\n } = options.namedEffect;\n const blurFactor = power && BLUR_POWER_MAP[power] ? BLUR_POWER_MAP[power] : blur;\n const fromValue = range === 'out' ? 0 : blurFactor;\n const toValue = range === 'out' ? blurFactor : 0;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n return [{\n ...options,\n fill,\n easing,\n composite: 'add',\n keyframes: [{\n filter: `blur(${fromValue}px)`\n }, {\n filter: `blur(${toValue}px)`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * filter: blur(<fromValue>px);\n * }\n * to {\n * filter: blur(<toValue>px);\n * }\n * }\n */\n}\n//# sourceMappingURL=BlurScroll.js.map","export default function create(options) {\n const {\n opacity = 0,\n range = 'in'\n } = options.namedEffect;\n const isOut = range === 'out';\n const fromValue = isOut ? 'var(--comp-opacity, 1)' : opacity;\n const toValue = isOut ? opacity : 'var(--comp-opacity, 1)';\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n return [{\n ...options,\n fill,\n easing,\n keyframes: [{\n opacity: fromValue\n }, {\n opacity: toValue\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * opacity: <fromValue>;\n * }\n * to {\n * opacity: <toValue>;\n * }\n * }\n */\n}\n//# sourceMappingURL=FadeScroll.js.map","const ROTATE_POWER_MAP = {\n soft: 60,\n medium: 120,\n hard: 420\n};\nconst ROTATE_DIRECTION_MAP = {\n vertical: 'rotateX',\n horizontal: 'rotateY'\n};\nexport default function create(options) {\n const {\n rotate = 240,\n direction = 'horizontal',\n power,\n range = 'continuous'\n } = options.namedEffect;\n const rotationAxis = ROTATE_DIRECTION_MAP[direction];\n const flipValue = power && ROTATE_POWER_MAP[power] ? ROTATE_POWER_MAP[power] : rotate;\n\n // const { fromValue, toValue } = rangeValues[range](rotation);\n const fromValue = range === 'out' ? 0 : -flipValue;\n const toValue = range === 'in' ? 0 : flipValue;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n return [{\n ...options,\n fill,\n easing,\n keyframes: [{\n transform: `perspective(800px) ${rotationAxis}(${fromValue}deg) rotate(var(--comp-rotate-z, 0deg))`\n }, {\n transform: `perspective(800px) ${rotationAxis}(${toValue}deg) rotate(var(--comp-rotate-z, 0deg))`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * transform: perspective(800px) <rotationAxis>(fromValue) rotate(<rotation>);\n * }\n * to {\n * transform: perspective(800px) <rotationAxis>(toValue) rotate(<rotation>);\n * }\n * }\n */\n}\n//# sourceMappingURL=FlipScroll.js.map","const MAX_Y_TRAVEL = 40;\nconst POWER_MAP = {\n soft: {\n scaleFrom: 0.8,\n scaleTo: 1.2,\n travelY: 0\n },\n medium: {\n scaleFrom: 0.3,\n scaleTo: 1.7,\n travelY: 0.75\n },\n hard: {\n scaleFrom: 0,\n scaleTo: 4,\n travelY: 1\n }\n};\nconst directionMap = {\n top: [0, -50],\n 'top-right': [50, -50],\n right: [50, 0],\n 'bottom-right': [50, 50],\n bottom: [0, 50],\n 'bottom-left': [-50, 50],\n left: [-50, 0],\n 'top-left': [-50, -50],\n center: [0, 0]\n};\nconst RANGES_MAP = {\n in: (scaleFrom, _scaleTo, travelY) => ({\n fromValues: {\n scale: scaleFrom,\n travel: travelY\n },\n toValues: {\n scale: 1,\n travel: 0\n }\n }),\n out: (_scaleFrom, scaleTo, travelY) => ({\n fromValues: {\n scale: 1,\n travel: 0\n },\n toValues: {\n scale: scaleTo,\n travel: -travelY\n }\n }),\n continuous: (scaleFrom, scaleTo, travelY) => ({\n fromValues: {\n scale: scaleFrom,\n travel: travelY\n },\n toValues: {\n scale: scaleTo,\n travel: -travelY\n }\n })\n};\nfunction getScrubOffsets(_ref) {\n let {\n power,\n range = 'in',\n speed = 0\n } = _ref;\n const offset = power && POWER_MAP[power] ? POWER_MAP[power].travelY : Math.abs(speed) * MAX_Y_TRAVEL;\n return {\n start: range === 'out' ? '0px' : `${-offset}vh`,\n end: range === 'in' ? '0px' : `${offset}vh`\n };\n}\nexport default function create(options) {\n const {\n power,\n range = 'in',\n scale = range === 'in' ? POWER_MAP.hard.scaleFrom : POWER_MAP.hard.scaleTo,\n direction = 'center',\n speed = 0\n } = options.namedEffect;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const {\n scaleFrom,\n scaleTo,\n travelY\n } = power && POWER_MAP[power] ? POWER_MAP[power] : {\n scaleFrom: scale,\n scaleTo: scale,\n travelY: speed\n };\n const {\n fromValues,\n toValues\n } = RANGES_MAP[range](scaleFrom, scaleTo, travelY * -MAX_Y_TRAVEL);\n const {\n start,\n end\n } = getScrubOffsets(options.namedEffect);\n const [trnsX, trnsY] = directionMap[direction];\n return [{\n ...options,\n fill,\n easing,\n startOffsetAdd: start,\n endOffsetAdd: end,\n keyframes: [{\n transform: `translateY(${fromValues.travel}vh) translate(${trnsX}%, ${trnsY}%) scale(${fromValues.scale}) translate(${-trnsX}%, ${-trnsY}%) rotate(var(--comp-rotate-z, 0))`\n }, {\n transform: `translateY(${toValues.travel}vh) translate(${trnsX}%, ${trnsY}%) scale(${toValues.scale}) translate(${-trnsX}%, ${-trnsY}%) rotate(var(--comp-rotate-z, 0))`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * translate: 0 <fromValues.travel>;\n * }\n * to {\n * translate: 0 <toValues.travel>;\n * }\n * }\n *\n * @keyframes <name>-scale {\n * from {\n * scale: <fromValues.scale>;\n * }\n * <scaleDelay>% {\n * scale: <fromValues.scale>;\n * animation-timing-function: <scaleEase>;\n * }\n * <scaleDuration>% {\n * scale: <toValues.scale>;\n * }\n * to {\n * scale: <toValues.scale>;\n * }\n * }\n *\n * @supports (animation-timeline: view()) {\n * #target {\n * animation: <name> auto <easing> both,\n * <name>-scale auto linear both;\n * animation-range: cover <start> cover <end>,\n * cover <start> cover <end>;\n * animation-timeline: view(), view();\n * }\n * }\n * @supports not (animation-timeline: view()) {\n * #target {\n * animation: <name> 100ms linear <fill> paused,\n * <name>-scale 100ms linear <fill> paused;\n * }\n * }\n */\n}\n//# sourceMappingURL=GrowScroll.js.map","import { getCssUnits, transformPolarToXY } from '../../utils';\nconst POWER_MAP = {\n soft: {\n value: 150,\n type: 'px'\n },\n medium: {\n value: 400,\n type: 'px'\n },\n hard: {\n value: 800,\n type: 'px'\n }\n};\nconst RANGES_MAP = {\n in: (travelX, travelY) => ({\n fromValue: {\n x: travelX,\n y: travelY\n },\n toValue: {\n x: 0,\n y: 0\n }\n }),\n out: (travelX, travelY) => ({\n fromValue: {\n x: 0,\n y: 0\n },\n toValue: {\n x: travelX,\n y: travelY\n }\n }),\n continuous: (travelX, travelY) => ({\n fromValue: {\n x: travelX,\n y: travelY\n },\n toValue: {\n x: -travelX,\n y: -travelY\n }\n })\n};\nfunction getScrubOffsets(_ref) {\n let {\n angle = 210,\n distance = {\n value: 400,\n type: 'px'\n },\n power,\n range = 'in'\n } = _ref;\n const travel = power ? POWER_MAP[power] : distance;\n const [, travelY] = transformPolarToXY(angle - 90, travel.value);\n const isTravelingDownwards = travelY < 0 && range !== 'out' || travelY > 0 && range === 'out';\n const units = getCssUnits(travel.type);\n const startOffsetAdd = isTravelingDownwards ? `${travelY}${units}` : '0px';\n const endOffsetAdd = isTravelingDownwards ? `${Math.abs(travelY)}${units}` : '0px';\n return {\n start: range === 'out' ? '0px' : startOffsetAdd,\n end: range === 'in' ? '0px' : endOffsetAdd\n };\n}\nexport default function create(options, _, config) {\n const {\n power,\n distance = {\n value: 400,\n type: 'px'\n },\n angle = 210,\n range = 'in'\n } = options.namedEffect;\n const travel = power ? POWER_MAP[power] : distance;\n const [travelX, travelY] = transformPolarToXY(angle - 90, travel.value);\n const {\n fromValue,\n toValue\n } = RANGES_MAP[range](Math.round(travelX), Math.round(travelY));\n const unit = getCssUnits(travel.type);\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const {\n start,\n end\n } = config != null && config.ignoreScrollMoveOffsets ? {\n start: '',\n end: ''\n } : getScrubOffsets(options.namedEffect);\n\n // use transform: translate(<value>) and not translate: <value> because of WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=276281\n return [{\n ...options,\n fill,\n easing,\n startOffsetAdd: start,\n endOffsetAdd: end,\n keyframes: [{\n transform: `translate(${fromValue.x}${unit}, ${fromValue.y}${unit}) rotate(var(--comp-rotate-z, 0))`\n }, {\n transform: `translate(${toValue.x}${unit}, ${toValue.y}${unit}) rotate(var(--comp-rotate-z, 0))`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * transform: translate(<fromValue.x>, <fromValue.y>) rotate(var(--comp-rotate-z, 0));\n * }\n * to {\n * transform: translate(<toValue.x>, <toValue.y>) rotate(var(--comp-rotate-z, 0));\n * }\n * }\n */\n}\n//# sourceMappingURL=MoveScroll.js.map","import { getCssUnits } from '../../utils';\nconst DIRECTIONS = {\n left: 1,\n right: -1\n};\nconst OFFSCREEN_POSITIONS = {\n left: {\n startX: `calc(var(--motion-left, calc(100vw - 100%)) * -1 - 100%)`,\n endX: `calc(100vw - var(--motion-left, 0px))`\n },\n right: {\n startX: `calc(100vw - var(--motion-left, 0px))`,\n endX: `calc(var(--motion-left, calc(100vw - 100%)) * -1 - 100%)`\n }\n};\nexport default function create(options, dom) {\n const {\n distance = {\n value: 400,\n type: 'px'\n },\n direction = 'left',\n startFromOffScreen = true,\n range = 'in'\n } = options.namedEffect;\n const travel = distance.value * DIRECTIONS[direction];\n const {\n startX,\n endX\n } = startFromOffScreen ? OFFSCREEN_POSITIONS[direction] : {\n startX: `${-travel}${getCssUnits(distance.type)}`,\n endX: `${travel}${getCssUnits(distance.type)}`\n };\n const fromValue = range === 'out' ? 0 : startX;\n const toValue = range === 'in' ? 0 : range === 'out' ? startX : endX;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n if (startFromOffScreen && dom) {\n let left = 0;\n dom.measure(target => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-left', `${left}px`);\n });\n }\n\n // use transform: translateX(<value>) and not translate: <value> because of WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=276281\n return [{\n ...options,\n fill,\n easing,\n keyframes: [{\n transform: `translateX(${fromValue}) rotate(var(--comp-rotate-z, 0))`\n }, {\n transform: `translateX(${toValue}) rotate(var(--comp-rotate-z, 0))`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * transform: translateX(<fromValue>) rotate(var(--comp-rotate-z, 0));\n * }\n * to {\n * transform: translateX(<toValue>) rotate(var(--comp-rotate-z, 0));\n * }\n * }\n */\n}\n//# sourceMappingURL=PanScroll.js.map","const DEFAULT_SPEED = 0.5;\nfunction getOffsetAdd(factor, speed) {\n return `${100 * factor * speed}vh`;\n}\nfunction getScrubOffsets(_ref) {\n let {\n speed = DEFAULT_SPEED\n } = _ref;\n const start = getOffsetAdd(-0.5, speed);\n const end = getOffsetAdd(0.5, speed);\n return {\n start,\n end\n };\n}\nexport default function create(options) {\n const {\n speed = DEFAULT_SPEED\n } = options.namedEffect;\n const fromValue = `${-50 * speed}vh`;\n const toValue = `${50 * speed}vh`;\n const easing = 'linear';\n const {\n start,\n end\n } = getScrubOffsets(options.namedEffect);\n\n // use transform: translateY(<value>) and not translate: 0 <value> because of WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=276281\n return [{\n ...options,\n fill: 'both',\n easing,\n startOffsetAdd: start,\n endOffsetAdd: end,\n keyframes: [{\n transform: `translateY(${fromValue}) rotate(var(--comp-rotate-z, 0))`\n }, {\n transform: `translateY(${toValue}) rotate(var(--comp-rotate-z, 0))`\n }]\n }];\n // only 'continuous' and 0%-100% of range\n /*\n * @keyframes <name> {\n * from {\n * transform: translateY(<fromValue>) rotate(var(--comp-rotate-z, 0));\n * }\n * to {\n * transform: translateY(<toValue>) rotate(var(--comp-rotate-z, 0));\n * }\n * }\n */\n}\n//# sourceMappingURL=ParallaxScroll.js.map","import { getClipPolygonParams, getAdjustedDirection } from '../../utils';\nconst DIRECTIONS = ['bottom', 'left', 'top', 'right'];\nconst OPPOSITE_DIRECTION_MAP = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\nconst initialClip = getClipPolygonParams({\n direction: 'initial'\n});\nfunction getClipFrom(direction, range) {\n return range === 'out' ? initialClip : getClipPolygonParams({\n direction: OPPOSITE_DIRECTION_MAP[direction]\n });\n}\nfunction getClipTo(direction, range) {\n return range === 'in' ? initialClip : getClipPolygonParams({\n direction: range === 'out' ? OPPOSITE_DIRECTION_MAP[direction] : direction\n });\n}\nexport default function create(options, dom) {\n const {\n direction = 'bottom',\n range = 'in'\n } = options.namedEffect;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n let clipFrom = getClipFrom(direction, range);\n let clipTo = getClipTo(direction, range);\n if (dom) {\n dom.measure(target => {\n if (!target) {\n return;\n }\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0';\n dom.mutate(() => {\n const adjDirection = getAdjustedDirection(DIRECTIONS, direction, parseInt(rotation, 10));\n clipFrom = getClipFrom(adjDirection, range);\n clipTo = getClipTo(adjDirection, range);\n target.style.setProperty('--motion-clip-from', clipFrom);\n target.style.setProperty('--motion-clip-to', clipTo);\n });\n });\n }\n const keyframes = range === 'continuous' ? [{\n clipPath: `var(--motion-clip-from, ${clipFrom})`\n }, {\n clipPath: initialClip\n }, {\n clipPath: `var(--motion-clip-to, ${clipTo})`\n }] : [{\n clipPath: `var(--motion-clip-from, ${clipFrom})`\n }, {\n clipPath: `var(--motion-clip-to, ${clipTo})`\n }];\n return [{\n ...options,\n fill,\n easing,\n keyframes\n }];\n /*\n * @keyframes <name> {\n * from {\n * clip-path: <fromValue>;\n * }\n * to {\n * clip-path: <toValue>;\n * }\n * }\n *\n * OR for continuous:\n *\n * @keyframes <name> {\n * from {\n * clip-path: <fromValue>;\n * }\n * 50% {\n * clip-path: <initialClip>;\n * }\n * to {\n * clip-path: <toValue>;\n * }\n * }\n */\n}\n//# sourceMappingURL=RevealScroll.js.map","import { getEasing } from '../../utils';\nconst SHAPES = {\n diamond: {\n start: {\n soft: 'polygon(50% 20%, 80% 50%, 50% 80%, 20% 50%)',\n medium: 'polygon(50% 40%, 60% 50%, 50% 60%, 40% 50%)',\n hard: 'polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%)'\n },\n end: 'polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%)'\n },\n window: {\n start: {\n soft: 'inset(20% round 50% 50% 0% 0%)',\n medium: 'inset(35% round 50% 50% 0% 0%)',\n hard: 'inset(50% round 50% 50% 0% 0%)'\n },\n end: 'inset(-20% round 50% 50% 0% 0%)'\n },\n rectangle: {\n start: {\n soft: 'inset(20%)',\n medium: 'inset(50%)',\n hard: 'inset(80%)'\n },\n end: 'inset(0%)'\n },\n circle: {\n start: {\n soft: 'circle(40%)',\n medium: 'circle(25%)',\n hard: 'circle(0%)'\n },\n end: 'circle(75%)'\n },\n ellipse: {\n start: {\n soft: 'ellipse(50% 50%)',\n medium: 'ellipse(30% 30%)',\n hard: 'ellipse(0% 0%)'\n },\n end: 'ellipse(75% 75%)'\n }\n};\nconst RESPONSIVE_SHAPES_MAP = {\n diamond: clipFactor => {\n const clip = clipFactor / 2;\n const clipNeg = 100 - clip;\n return [`polygon(50% ${clip}%, ${clipNeg}% 50%, 50% ${clipNeg}%, ${clip}% 50%)`, 'polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%)'];\n },\n window: clipFactor => [`inset(${clipFactor / 2}% round 50% 50% 0% 0%)`, 'inset(-20% round 50% 50% 0% 0%)'],\n rectangle: clipFactor => [`inset(${clipFactor}%)`, `inset(0%)`],\n circle: clipFactor => [`circle(${100 - clipFactor}%)`, `circle(75%)`],\n ellipse: clipFactor => {\n const clip = 50 - clipFactor / 2;\n return [`ellipse(${clip}% ${clip}%)`, `ellipse(75% 75%)`];\n }\n};\nconst easing = getEasing('circInOut');\nconst KEYFRAMES_RANGE_MAP = {\n in: (start, end) => [{\n clipPath: start,\n easing\n }, {\n clipPath: end\n }],\n out: (start, end) => [{\n clipPath: end,\n easing\n }, {\n clipPath: start\n }],\n continuous: (start, end) => [{\n clipPath: start,\n easing\n }, {\n clipPath: end,\n easing\n }, {\n clipPath: start\n }]\n};\nexport default function create(options) {\n const {\n shape = 'circle',\n power,\n intensity = 0.5,\n range = 'in'\n } = options.namedEffect;\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const [start, end] = power && SHAPES[shape].start[power] ? [SHAPES[shape].start[power], SHAPES[shape].end] : RESPONSIVE_SHAPES_MAP[shape](intensity * 100);\n const keyframes = KEYFRAMES_RANGE_MAP[range](start, end);\n return [{\n ...options,\n fill,\n easing: 'linear',\n keyframes\n }];\n /*\n * @keyframes <name> {\n * from {\n * clip-path: <fromValue>;\n * easing: <easing>;\n * }\n * to {\n * clip-path: <toValue>;\n * }\n * }\n */\n}\n//# sourceMappingURL=ShapeScroll.js.map","import { getShuttersClipPaths, getEasing } from '../../utils';\nconst OPPOSITE_DIRECTION_MAP = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n};\nexport default function create(options) {\n const {\n direction = 'right',\n shutters = 12,\n staggered = true,\n range = 'in'\n } = options.namedEffect;\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const easing = range === 'in' ? getEasing('sineIn') : getEasing('sineOut');\n const directionOpp = OPPOSITE_DIRECTION_MAP[direction];\n const {\n clipStart,\n clipEnd\n } = getShuttersClipPaths(range === 'out' ? directionOpp : direction, shutters, staggered);\n const start = range !== 'out' ? clipStart : clipEnd;\n const end = range !== 'out' ? clipEnd : clipStart;\n let keyframes;\n if (range === 'continuous') {\n const {\n clipStart: oppClipStart,\n clipEnd: oppClipEnd\n } = getShuttersClipPaths(directionOpp, shutters, staggered, true);\n keyframes = [{\n clipPath: start,\n easing\n }, {\n clipPath: end,\n offset: staggered ? 0.45 : 0.4,\n easing\n }, {\n clipPath: end,\n offset: staggered ? 0.55 : 0.6,\n easing\n }, {\n clipPath: oppClipEnd,\n offset: staggered ? 0.55 : 0.6,\n easing\n }, {\n clipPath: oppClipStart\n }];\n } else {\n keyframes = [{\n clipPath: start,\n easing\n }, {\n clipPath: end\n }];\n }\n return [{\n ...options,\n fill,\n easing: 'linear',\n keyframes\n }];\n}\n//# sourceMappingURL=ShuttersScroll.js.map","const MAX_Y_TRAVEL = 40;\nconst POWER_MAP = {\n soft: {\n scaleFrom: 1.2,\n scaleTo: 0.8,\n travelY: 0\n },\n medium: {\n scaleFrom: 1.7,\n scaleTo: 0.3,\n travelY: 0.5\n },\n hard: {\n scaleFrom: 3.5,\n scaleTo: 0,\n travelY: 1\n }\n};\nconst directionMap = {\n top: [0, -50],\n 'top-right': [50, -50],\n right: [50, 0],\n 'bottom-right': [50, 50],\n bottom: [0, 50],\n 'bottom-left': [-50, 50],\n left: [-50, 0],\n 'top-left': [-50, -50],\n center: [0, 0]\n};\nconst RANGES_MAP = {\n in: (scaleFrom, _scaleTo, travelY) => ({\n fromValues: {\n scale: scaleFrom,\n travel: travelY\n },\n toValues: {\n scale: 1,\n travel: 0\n }\n }),\n out: (_scaleFrom, scaleTo, travelY) => ({\n fromValues: {\n scale: 1,\n travel: 0\n },\n toValues: {\n scale: scaleTo,\n travel: -travelY\n }\n }),\n continuous: (scaleFrom, scaleTo, travelY) => ({\n fromValues: {\n scale: scaleFrom,\n travel: travelY\n },\n toValues: {\n scale: scaleTo,\n travel: -travelY\n }\n })\n};\nfunction getScrubOffsets(_ref) {\n let {\n power,\n range = 'in',\n speed = 0\n } = _ref;\n const offset = power && POWER_MAP[power] ? POWER_MAP[power].travelY : Math.abs(speed) * MAX_Y_TRAVEL;\n return {\n start: range === 'out' ? '0px' : `${-offset}vh`,\n end: range === 'in' ? '0px' : `${offset}vh`\n };\n}\nexport default function create(options) {\n const {\n power,\n range = 'in',\n scale = range === 'in' ? 1.2 : 0.8,\n direction = 'center',\n speed = 0\n } = options.namedEffect;\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const {\n scaleFrom,\n scaleTo,\n travelY\n } = power && POWER_MAP[power] ? POWER_MAP[power] : {\n scaleFrom: scale,\n scaleTo: scale,\n travelY: speed\n };\n const {\n fromValues,\n toValues\n } = RANGES_MAP[range](scaleFrom, scaleTo, travelY * -MAX_Y_TRAVEL);\n const easing = 'linear';\n const {\n start: startOffsetAdd,\n end: endOffsetAdd\n } = getScrubOffsets(options.namedEffect);\n const [trnsX, trnsY] = directionMap[direction];\n return [{\n ...options,\n fill,\n easing,\n startOffsetAdd,\n endOffsetAdd,\n keyframes: [{\n transform: `translateY(${fromValues.travel}vh) translate(${trnsX}%, ${trnsY}%) scale(${fromValues.scale}) translate(${-trnsX}%, ${-trnsY}%) rotate(var(--comp-rotate-z, 0))`\n }, {\n transform: `translateY(${toValues.travel}vh) translate(${trnsX}%, ${trnsY}%) scale(${toValues.scale}) translate(${-trnsX}%, ${-trnsY}%) rotate(var(--comp-rotate-z, 0))`\n }]\n }];\n /* // we may want to squash both animations into a single one and simply generate dynamically all the necessary keyframes to reach same result\n * @keyframes <name> {\n * from {\n * translate: 0 <fromValues.travel>;\n * }\n * to {\n * translate: 0 <toValues.travel>;\n * }\n * }\n *\n * @keyframes <name>-scale {\n * from {\n * scale: <fromValues.scale>;\n * animation-timing-function: <scaleEase>;\n * }\n * <scaleDuration>% {\n * scale: <toValues.scale>;\n * }\n * to {\n * scale: <toValues.scale>;\n * }\n * }\n *\n * @supports (animation-timeline: view()) {\n * #target {\n * animation: <name> auto <easing> both,\n * <name>-scale auto linear both;\n * animation-range: cover <start> cover <end>,\n * cover <start> cover <end>;\n * animation-timeline: view(), view();\n * }\n * }\n * @supports not (animation-timeline: view()) {\n * #target {\n * animation: <name> 100ms linear <fill> paused,\n * <name>-scale 100ms linear <fill> paused;\n * }\n * }\n */\n}\n//# sourceMappingURL=ShrinkScroll.js.map","const POWER_MAP = {\n soft: {\n skewX: 10\n },\n medium: {\n skewX: 17\n },\n hard: {\n skewX: 24\n }\n};\nconst DIRECTION_MAP = {\n right: -1,\n left: 1\n};\nconst RANGES_MAP = {\n in: (skewX, startX, _endX) => ({\n fromValues: {\n skewX,\n startX\n },\n toValues: {\n skewX: 0,\n endX: 0\n }\n }),\n out: (skewX, startX, _endX) => ({\n fromValues: {\n skewX: 0,\n startX: 0\n },\n toValues: {\n skewX: -skewX,\n endX: startX\n }\n }),\n continuous: (skewX, startX, endX) => ({\n fromValues: {\n skewX,\n startX\n },\n toValues: {\n skewX: -skewX,\n endX\n }\n })\n};\nconst POSITIONS = {\n left: {\n startX: `calc(var(--motion-left, calc(100vw - 100%)) * -1 - 100%)`,\n endX: `calc(100vw - var(--motion-left, 0px))`\n },\n right: {\n startX: `calc(100vw - var(--motion-left, 0px))`,\n endX: `calc(var(--motion-left, calc(100vw - 100%)) * -1 - 100%)`\n }\n};\nexport default function create(options, dom) {\n const {\n skew = 10,\n direction = 'right',\n power,\n range = 'in'\n } = options.namedEffect;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const skewX = (power && POWER_MAP[power] ? POWER_MAP[power].skewX : skew) * DIRECTION_MAP[direction];\n const {\n startX,\n endX\n } = POSITIONS[direction];\n const {\n fromValues,\n toValues\n } = RANGES_MAP[range](skewX, startX, endX);\n let left = 0;\n if (dom) {\n dom.measure(target => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-left', `${left}px`);\n });\n }\n return [{\n ...options,\n fill,\n easing,\n keyframes: [{\n transform: `translateX(${fromValues.startX}) skewX(${fromValues.skewX}deg) rotate(var(--comp-rotate-z, 0))`\n }, {\n transform: `translateX(${toValues.endX}) skewX(${toValues.skewX}deg) rotate(var(--comp-rotate-z, 0))`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * transform: translateX(<fromValue.startX>) skewX(<fromValue.skew>) rotate(<rotation>);\n * }\n * to {\n * transform: translateX(<toValue.endX>) skewX(<toValue.skew>) rotate(<rotation>);\n * }\n * }\n */\n}\n//# sourceMappingURL=SkewPanScroll.js.map","import { getAdjustedDirection, getClipPolygonParams } from '../../utils';\nconst DIRECTIONS = ['bottom', 'left', 'top', 'right'];\nconst OPPOSITE_DIRECTION_MAP = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\nconst DIRECTION_TRANSLATION_MAP = {\n top: {\n x: '0',\n y: '-100%'\n },\n right: {\n x: '100%',\n y: '0'\n },\n bottom: {\n x: '0',\n y: '100%'\n },\n left: {\n x: '-100%',\n y: '0'\n }\n};\nconst initialClip = getClipPolygonParams({\n direction: 'initial'\n});\nconst KEYFRAMES_RANGE_MAP = {\n in: (clip, translate) => [{\n clipPath: `var(--motion-clip-from, ${clip.from})`,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(${translate.from.x}, ${translate.from.y})`\n }, {\n clipPath: initialClip,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(0, 0)`\n }],\n out: (clip, translate) => [{\n clipPath: initialClip,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(0, 0)`\n }, {\n clipPath: `var(--motion-clip-from, ${clip.from})`,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(${translate.from.x}, ${translate.from.y})`\n }],\n continuous: (clip, translate) => [{\n clipPath: `var(--motion-clip-from, ${clip.from})`,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(${translate.from.x}, ${translate.from.y})`\n }, {\n clipPath: initialClip,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(0, 0)`\n }, {\n clipPath: `var(--motion-clip-to, ${clip.to})`,\n transform: `rotate(var(--comp-rotate-z, 0)) translate(${translate.to.x}, ${translate.to.y})`\n }]\n};\nexport default function create(options, dom) {\n const {\n direction = 'bottom',\n range = 'in'\n } = options.namedEffect;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const oppositeDirection = OPPOSITE_DIRECTION_MAP[direction];\n const keyframes = KEYFRAMES_RANGE_MAP[range]({\n from: getClipPolygonParams({\n direction: oppositeDirection\n }),\n to: getClipPolygonParams({\n direction\n })\n }, {\n from: DIRECTION_TRANSLATION_MAP[direction],\n to: DIRECTION_TRANSLATION_MAP[oppositeDirection]\n });\n if (dom) {\n dom.measure(target => {\n if (!target) {\n return;\n }\n const rotation = parseInt(getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0', 10);\n dom.mutate(() => {\n const adjDirection = getAdjustedDirection(DIRECTIONS, direction, rotation);\n target.style.setProperty('--motion-clip-from', getClipPolygonParams({\n direction: OPPOSITE_DIRECTION_MAP[adjDirection]\n }));\n target.style.setProperty('--motion-clip-to', getClipPolygonParams({\n direction: adjDirection\n }));\n });\n });\n }\n return [{\n ...options,\n fill,\n easing,\n keyframes\n }];\n /*\n * @keyframes <name> {\n * from {\n * clip-path: <clip.from>;\n * translate: <translate.from.x> <translate.from.y>;\n * }\n * to {\n * clip-path: none;\n * translate: 0 0;\n * }\n * }\n */\n}\n//# sourceMappingURL=SlideScroll.js.map","const MAX_Y_TRAVEL = 40;\nconst POWER_MAP = {\n soft: {\n rotationZ: 45,\n travelY: 0\n },\n medium: {\n rotationZ: 100,\n travelY: 0.5\n },\n hard: {\n rotationZ: 200,\n travelY: 1\n }\n};\nconst RANGES_MAP = {\n in: (rotation, travelY) => ({\n fromValues: {\n rotationX: -2 * rotation,\n rotationY: -rotation,\n rotationZ: -rotation,\n travel: travelY\n },\n toValues: {\n rotationX: 0,\n rotationY: 0,\n rotationZ: 0,\n travel: 0\n }\n }),\n out: (rotation, travelY) => ({\n fromValues: {\n rotationX: 0,\n rotationY: 0,\n rotationZ: 0,\n travel: 0\n },\n toValues: {\n rotationX: rotation * 3,\n rotationY: rotation * 2,\n rotationZ: rotation,\n travel: -travelY\n }\n }),\n continuous: (rotation, travelY) => ({\n fromValues: {\n rotationX: -2 * rotation,\n rotationY: -rotation,\n rotationZ: -rotation,\n travel: travelY\n },\n toValues: {\n rotationX: rotation * 1.8,\n rotationY: rotation,\n rotationZ: 2 * rotation,\n travel: -travelY\n }\n })\n};\nfunction getScrubOffsets(_ref) {\n let {\n power,\n range = 'in',\n speed = 0\n } = _ref;\n const offset = (power && POWER_MAP[power] ? POWER_MAP[power].travelY : Math.abs(speed)) * MAX_Y_TRAVEL;\n return {\n start: range === 'out' ? '0px' : `${-offset}vh`,\n end: range === 'in' ? '0px' : `${offset}vh`\n };\n}\nexport default function create(options) {\n const {\n rotate = -100,\n power,\n range = 'in',\n speed = 0\n } = options.namedEffect;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const initialParams = power && POWER_MAP[power] ? POWER_MAP[power] : {\n rotationZ: rotate,\n travelY: speed\n };\n const {\n fromValues,\n toValues\n } = RANGES_MAP[range](initialParams.rotationZ, initialParams.travelY * -MAX_Y_TRAVEL);\n const {\n start: startOffsetAdd,\n end: endOffsetAdd\n } = getScrubOffsets(options.namedEffect);\n return [{\n ...options,\n fill,\n easing,\n startOffsetAdd,\n endOffsetAdd,\n keyframes: [{\n transform: `perspective(1000px) translateY(${fromValues.travel}vh) rotateZ(calc(var(--comp-rotate-z, 0deg) + ${fromValues.rotationZ}deg)) rotateY(${fromValues.rotationY}deg) rotateX(${fromValues.rotationX}deg)`\n }, {\n transform: `perspective(1000px) translateY(${toValues.travel}vh) rotateZ(calc(var(--comp-rotate-z, 0deg) + ${toValues.rotationZ}deg)) rotateY(${toValues.rotationY}deg) rotateX(${toValues.rotationX}deg)`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * transform: perspective(1000px) translateY(<fromValue.travel>vh) rotateZ(<fromValue.rotateZ> + <rotation>) rotateY(<fromValue.rotateY>deg) rotateX(<fromValue.rotateX>deg);\n * }\n * to {\n * transform: perspective(1000px) translateY(<toValue.travel>vh) rotateZ(<fromValue.rotateZ> + <rotation>) rotateY(<toValue.rotateY>deg) rotateX(<toValue.rotateX>deg);\n * }\n * }\n */\n}\n//# sourceMappingURL=Spin3dScroll.js.map","const POWER_MAP = {\n soft: 1,\n medium: 0.7,\n hard: 0.4\n};\nconst DIRECTION_MAP = {\n clockwise: 1,\n 'counter-clockwise': -1\n};\nexport default function create(options) {\n const {\n spins = 0.15,\n scale = 1,\n direction = 'clockwise',\n power,\n range = 'in'\n } = options.namedEffect;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const spinDirection = DIRECTION_MAP[direction];\n const rotationZ = spins * 360;\n const scaleFactor = power && POWER_MAP[power] ? POWER_MAP[power] : scale;\n const isIn = range === 'in';\n const fromValue = isIn ? -rotationZ : range === 'out' ? 0 : -rotationZ / 2;\n const toValue = isIn ? 0 : range === 'out' ? rotationZ : rotationZ / 2;\n return [{\n ...options,\n fill,\n easing,\n keyframes: [{\n transform: `scale(${isIn ? scaleFactor : 1}) rotate(calc(var(--comp-rotate-z, 0deg) + ${fromValue * spinDirection}deg))`\n }, {\n transform: `scale(${isIn ? 1 : scaleFactor}) rotate(calc(var(--comp-rotate-z, 0deg) + ${toValue * spinDirection}deg))`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * transform: scale(<fromValues.scale>) rotate(<rotation> - <fromValue.rotate * spinDirection>);\n * }\n * to {\n * transform: scale(<toValues.scale>) rotate(<rotation> + <toValue.rotate * spinDirection>);\n * }\n * }\n */\n}\n//# sourceMappingURL=SpinScroll.js.map","import { cssEasings as easings } from '../../easings';\nconst POWER_MAP = {\n soft: {\n scaleY: 1.2,\n scaleX: 0.8\n },\n medium: {\n scaleY: 1.5,\n scaleX: 0.6\n },\n hard: {\n scaleY: 2,\n scaleX: 0.4\n }\n};\nconst KEYFRAMES_RANGE_MAP = {\n in: (scaleX, scaleY) => [{\n scale: `${scaleX} ${scaleY}`,\n translate: `0 ${100 * (scaleY - 1)}%`\n }, {\n scale: '1 1',\n translate: '0 0'\n }],\n out: (scaleX, scaleY) => [{\n scale: '1 1',\n translate: '0 0'\n }, {\n scale: `${scaleX} ${scaleY}`,\n translate: `0 ${100 * (1 - scaleY)}%`\n }],\n continuous: (scaleX, scaleY) => [{\n scale: `${scaleX} ${scaleY}`,\n translate: `0 ${100 * (scaleY - 1)}%`,\n easing: easings.backInOut\n }, {\n scale: '1 1',\n translate: '0 0',\n easing: easings.backInOut\n }, {\n scale: `${scaleX} ${scaleY}`,\n translate: `0 ${100 * (1 - scaleY)}%`\n }]\n};\nconst opacityKeyframesMap = {\n in: [{\n opacity: 0,\n offset: 0\n }, {\n opacity: 1,\n offset: 0.65\n }],\n out: [{\n opacity: 1,\n offset: 0.35\n }, {\n opacity: 0,\n offset: 1\n }],\n continuous: [{\n opacity: 0,\n offset: 0\n }, {\n opacity: 1,\n offset: 0.325\n }, {\n opacity: 1,\n offset: 0.7\n }, {\n opacity: 0,\n offset: 1\n }]\n};\nexport default function create(options) {\n const {\n power,\n stretch = 0.6,\n range = 'out'\n } = options.namedEffect;\n const easing = range === 'continuous' ? 'linear' : 'backInOut';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const {\n scaleX,\n scaleY\n } = power && POWER_MAP[power] ? POWER_MAP[power] : {\n scaleX: 1 - stretch,\n scaleY: 1 + stretch\n };\n const animations = KEYFRAMES_RANGE_MAP[range](scaleX, scaleY);\n return [{\n ...options,\n fill,\n easing,\n keyframes: animations\n }, {\n ...options,\n fill,\n easing,\n keyframes: opacityKeyframesMap[range]\n }];\n}\n//# sourceMappingURL=StretchScroll.js.map","import { cssEasings as easings } from '../../easings';\nconst MAX_Y_TRAVEL = 40;\nconst [ROTATION_X, ROTATION_Y, ROTATION_Z] = [10, 25, 25];\nconst [UP, DOWN, ORIGINAL_LAYOUT] = [-1, 1, 0];\nconst TRANSLATE_Y_POWER_MAP = {\n soft: 0,\n medium: 0.5,\n hard: 1\n};\nconst DIRECTIONS_MAP = {\n right: 1,\n left: -1\n};\nconst RANGES_MAP = {\n in: {\n from: {\n x: -1,\n y: -1,\n z: 1,\n transY: DOWN\n },\n to: {\n x: 0,\n y: 0,\n z: 0,\n transY: ORIGINAL_LAYOUT\n }\n },\n out: {\n from: {\n x: 0,\n y: 0,\n z: 0,\n transY: ORIGINAL_LAYOUT\n },\n to: {\n x: -1,\n y: -1,\n z: 1,\n transY: UP\n }\n },\n continuous: {\n from: {\n x: -1,\n y: -1,\n z: -1,\n transY: DOWN\n },\n to: {\n x: 1,\n y: 0.5,\n z: 1.25,\n transY: UP\n }\n }\n};\nfunction getYTravel(distance, power) {\n return (power && power in TRANSLATE_Y_POWER_MAP ? TRANSLATE_Y_POWER_MAP[power] : distance) * MAX_Y_TRAVEL;\n}\nfunction getScrubOffsets(_ref) {\n let {\n power,\n range = 'in',\n distance = 0\n } = _ref;\n const offset = Math.abs(getYTravel(distance, power));\n return {\n start: range === 'out' ? '0px' : `${-offset}vh`,\n end: range === 'in' ? '0px' : `${offset}vh`\n };\n}\nexport default function create(options) {\n const {\n power,\n distance = 0,\n range = 'in',\n direction = 'right'\n } = options.namedEffect;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const {\n from,\n to\n } = RANGES_MAP[range];\n const dir = DIRECTIONS_MAP[direction];\n const rotateZFrom = Math.abs(from.z) * ROTATION_Z * dir * (from.z < 0 ? -1 : 1);\n const rotateZTo = Math.abs(to.z) * ROTATION_Z * dir * (to.z < 0 ? -1 : 1);\n const travelY = getYTravel(distance, power);\n const travelYFrom = travelY * from.transY;\n const travelYTo = travelY * to.transY;\n const rotationXFrom = from.x * ROTATION_X;\n const rotationYFrom = from.y * ROTATION_Y;\n const rotationXTo = to.x * ROTATION_X;\n const rotationYTo = to.y * ROTATION_Y;\n const {\n start: startOffsetAdd,\n end: endOffsetAdd\n } = getScrubOffsets(options.namedEffect);\n return [{\n ...options,\n fill,\n easing,\n startOffsetAdd,\n endOffsetAdd,\n keyframes: [{\n transform: `perspective(400px) translateY(${travelYFrom}vh) rotateX(${rotationXFrom}deg) rotateY(${rotationYFrom}deg)`\n }, {\n transform: `perspective(400px) translateY(${travelYTo}vh) rotateX(${rotationXTo}deg) rotateY(${rotationYTo}deg)`\n }]\n }, {\n ...options,\n fill,\n easing: easings.sineInOut,\n startOffsetAdd,\n endOffsetAdd,\n composite: 'add',\n // add this animation on top of the previous one\n keyframes: [{\n transform: `rotate(calc(var(--comp-rotate-z, 0deg) + ${rotateZFrom}deg))`\n }, {\n transform: `rotate(calc(var(--comp-rotate-z, 0deg) + ${rotateZTo}deg))`\n }]\n }];\n}\n//# sourceMappingURL=TiltScroll.js.map","const ELEMENT_ROTATION = 45;\nconst POWER_MAP = {\n soft: {\n scaleFrom: 1,\n scaleTo: 1\n },\n medium: {\n scaleFrom: 0.7,\n scaleTo: 1.3\n },\n hard: {\n scaleFrom: 0.4,\n scaleTo: 1.6\n }\n};\nconst ROTATE_DIRECTION_MAP = {\n clockwise: 1,\n 'counter-clockwise': -1\n};\nconst TRANSLATE_X_MAP = {\n left: {\n startX: `calc(-1 * var(--motion-left, calc(100vw - 100%)) - 100%)`,\n endX: `calc(100vw - var(--motion-left, 0px))`\n },\n right: {\n startX: `calc(100vw - var(--motion-left, 0px))`,\n endX: `calc(-1 * var(--motion-left, calc(100vw - 100%)) - 100%)`\n }\n};\nconst RANGES_MAP = {\n in: (rotate, scale, travel) => ({\n fromValues: {\n rotation: -rotate,\n scale: scale.scaleFrom,\n translate: travel.startX\n },\n toValues: {\n rotation: 0,\n scale: 1,\n translate: '0px'\n }\n }),\n out: (rotate, scale, travel) => ({\n fromValues: {\n rotation: 0,\n scale: 1,\n translate: '0px'\n },\n toValues: {\n rotation: rotate,\n scale: scale.scaleFrom,\n translate: travel.endX\n }\n }),\n continuous: (rotate, scale, travel) => ({\n fromValues: {\n rotation: -rotate,\n scale: scale.scaleFrom,\n translate: travel.startX\n },\n toValues: {\n rotation: rotate,\n scale: scale.scaleTo,\n translate: travel.endX\n }\n })\n};\nexport default function create(options, dom) {\n const {\n power,\n spin = 'clockwise',\n direction = 'right',\n scale = 1,\n range = 'in'\n } = options.namedEffect;\n const easing = 'linear';\n const fill = range === 'out' ? 'forwards' : range === 'in' ? 'backwards' : options.fill;\n const transX = TRANSLATE_X_MAP[direction];\n const rotateZ = ELEMENT_ROTATION * ROTATE_DIRECTION_MAP[spin];\n const scaleFactors = power && POWER_MAP[power] ? POWER_MAP[power] : {\n scaleFrom: scale,\n scaleTo: scale\n };\n const {\n fromValues,\n toValues\n } = RANGES_MAP[range](rotateZ, scaleFactors, transX);\n let left = 0;\n if (dom) {\n dom.measure(target => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-left', `${left}px`);\n });\n }\n return [{\n ...options,\n fill,\n easing,\n keyframes: [{\n transform: `translateX(${fromValues.translate}) scale(${fromValues.scale}) rotate(calc(var(--comp-rotate-z, 0deg) + ${fromValues.rotation}deg))`\n }, {\n transform: `translateX(${toValues.translate}) scale(${toValues.scale}) rotate(calc(var(--comp-rotate-z, 0deg) + ${toValues.rotation}deg))`\n }]\n }];\n /*\n * @keyframes <name> {\n * from {\n * transform: translateX(<fromValues.position>) scale(<fromValues.scale>) rotate(calc(<rotation> - <fromValues.rotation>));\n * }\n * to {\n * transform: translateX(<toValues.position>) scale(<toValues.scale>) rotate(calc(<rotation> + <toValues.rotation>));\n * }\n * }\n */\n}\n//# sourceMappingURL=TurnScroll.js.map","import ArcScroll from './ArcScroll';\nimport BlurScroll from './BlurScroll';\nimport FadeScroll from './FadeScroll';\nimport FlipScroll from './FlipScroll';\nimport GrowScroll from './GrowScroll';\nimport MoveScroll from './MoveScroll';\nimport PanScroll from './PanScroll';\nimport ParallaxScroll from './ParallaxScroll';\nimport RevealScroll from './RevealScroll';\nimport ShapeScroll from './ShapeScroll';\nimport ShuttersScroll from './ShuttersScroll';\nimport ShrinkScroll from './ShrinkScroll';\nimport SkewPanScroll from './SkewPanScroll';\nimport SlideScroll from './SlideScroll';\nimport Spin3dScroll from './Spin3dScroll';\nimport SpinScroll from './SpinScroll';\nimport StretchScroll from './StretchScroll';\nimport TiltScroll from './TiltScroll';\nimport TurnScroll from './TurnScroll';\nexport const scrollAnimations = {\n ArcScroll,\n BlurScroll,\n FadeScroll,\n FlipScroll,\n GrowScroll,\n MoveScroll,\n PanScroll,\n ParallaxScroll,\n RevealScroll,\n ShapeScroll,\n ShuttersScroll,\n ShrinkScroll,\n SkewPanScroll,\n SlideScroll,\n Spin3dScroll,\n SpinScroll,\n StretchScroll,\n TiltScroll,\n TurnScroll\n};\n//# sourceMappingURL=index.js.map","import { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nconst ROTATION_ANGLE = 80;\nconst DIRECTION_MAP = {\n top: {\n x: 1,\n y: 0,\n sign: 1\n },\n right: {\n x: 0,\n y: 1,\n sign: 1\n },\n bottom: {\n x: 1,\n y: 0,\n sign: -1\n },\n left: {\n x: 0,\n y: 1,\n sign: -1\n }\n};\nconst EASING_MAP = {\n soft: 'cubicInOut',\n medium: 'quintInOut',\n hard: 'backOut'\n};\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options, true);\n}\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-arcIn'];\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n direction = 'right'\n } = options.namedEffect;\n const [fadeIn, arcIn] = getNames(options);\n const easing = power && EASING_MAP[power] || options.easing || 'quintInOut';\n\n // we can remove dependency on measurement here if we use a \"layout wrapper\" as a `container`: https://jsbin.com/mulojuwogi/edit?css,output\n // we could also consider a fixed value for z, e.g. 300px like in ArcScroll\n // const { width, height } = element.getBoundingClientRect();\n\n const {\n x,\n y,\n sign\n } = DIRECTION_MAP[direction];\n // const z = rotateX ? height / 2 : width / 2;\n const z = `(-1 * (var(--motion-height, 100vh) * var(--motion-arc-x, 1) + var(--motion-width, 100vw) * var(--motion-arc-y, 0))) / 2`;\n const custom = {\n '--motion-arc-x': `${x}`,\n '--motion-arc-y': `${y}`,\n '--motion-arc-sign': `${sign}`\n };\n return [{\n ...options,\n name: fadeIn,\n duration: options.duration * 0.7,\n easing: 'sineIn',\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n name: arcIn,\n easing,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n transform: `perspective(800px) translateZ(calc(${z})) rotateX(calc(${toKeyframeValue(custom, '--motion-arc-x', asWeb)} * ${toKeyframeValue(custom, '--motion-arc-sign', asWeb)} * ${ROTATION_ANGLE}deg)) rotateY(calc(${toKeyframeValue(custom, '--motion-arc-y', asWeb)} * ${toKeyframeValue(custom, '--motion-arc-sign', asWeb)} * ${ROTATION_ANGLE}deg)) translateZ(calc(-1 * ${z})) rotate(var(--comp-rotate-z, 0deg))`\n }, {\n transform: `perspective(800px) translateZ(calc(${z})) rotateX(0deg) rotateY(0deg) translateZ(calc(-1 * ${z})) rotate(var(--comp-rotate-z, 0deg))`\n }]\n }];\n}\nexport function prepare(_, dom) {\n if (dom) {\n let width, height;\n dom.measure(target => {\n if (!target) {\n return;\n }\n const rect = target.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-height', `${height}px`);\n target == null || target.style.setProperty('--motion-width', `${width}px`);\n });\n }\n}\n//# sourceMappingURL=ArcIn.js.map","import { toKeyframeValue } from '../../utils';\nconst BLUR_POWER_MAP = {\n soft: 6,\n medium: 25,\n hard: 50\n};\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-blurIn'];\n}\nexport function web(options) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n blur = 6,\n power\n } = options.namedEffect;\n const [fadeIn, blurIn] = getNames(options);\n const easing = options.easing || 'linear';\n const blurFactor = power && BLUR_POWER_MAP[power] ? BLUR_POWER_MAP[power] : blur;\n const custom = {\n '--motion-blur': `${blurFactor}px`\n };\n return [{\n ...options,\n name: fadeIn,\n duration: options.duration * 0.7,\n easing: 'sineIn',\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n name: blurIn,\n easing,\n composite: 'add',\n // make sure we don't override existing filters on the component\n custom,\n keyframes: [{\n filter: `blur(${toKeyframeValue(custom, '--motion-blur', asWeb)})`\n }, {\n filter: 'blur(0px)'\n }]\n }];\n}\n//# sourceMappingURL=BlurIn.js.map","import { getShuttersClipPaths, getEasing, toKeyframeValue, INITIAL_FRAME_OFFSET } from '../../utils';\nexport function getNames(_) {\n return ['motion-shuttersIn'];\n}\nexport function web(options) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'right',\n shutters = 12,\n staggered = true\n } = options.namedEffect;\n const [shuttersIn] = getNames(options);\n const {\n clipStart,\n clipEnd\n } = getShuttersClipPaths(direction, shutters, staggered);\n const custom = {\n '--motion-shutters-start': clipStart,\n '--motion-shutters-end': clipEnd\n };\n const easing = getEasing(options.easing || 'sineIn');\n return [{\n ...options,\n easing,\n name: shuttersIn,\n custom,\n keyframes: [{\n offset: 0,\n opacity: 0,\n easing: 'step-end'\n }, {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 'var(--comp-opacity, 1)',\n clipPath: toKeyframeValue(custom, '--motion-shutters-start', asWeb)\n }, {\n clipPath: toKeyframeValue(custom, '--motion-shutters-end', asWeb)\n }]\n }];\n}\n//# sourceMappingURL=ShuttersIn.js.map","import { getEasingFamily, getEasing, toKeyframeValue, INITIAL_FRAME_OFFSET } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-bounceIn'];\n}\nconst {\n in: easeIn,\n out: easeOut\n} = getEasingFamily('sineIn');\nconst BOUNCE_KEYFRAMES = [{\n offset: INITIAL_FRAME_OFFSET * 100,\n translate: 100\n}, {\n offset: 30,\n translate: 0\n}, {\n offset: 42,\n translate: 35\n}, {\n offset: 54,\n translate: 0\n}, {\n offset: 62,\n translate: 21\n}, {\n offset: 74,\n translate: 0\n}, {\n offset: 82,\n translate: 9\n}, {\n offset: 90,\n translate: 0\n}, {\n offset: 95,\n translate: 2\n}, {\n offset: 100,\n translate: 0,\n isIn: true\n}];\nconst POWER_MAP = {\n soft: 1,\n medium: 2,\n hard: 3\n};\nconst TRANSLATE_DIRECTION_MAP = {\n top: {\n y: -1,\n x: 0,\n z: 0\n },\n right: {\n y: 0,\n x: 1,\n z: 0\n },\n bottom: {\n y: 1,\n x: 0,\n z: 0\n },\n left: {\n y: 0,\n x: -1,\n z: 0\n },\n center: {\n x: 0,\n y: 0,\n z: -1\n }\n};\nexport function web(options) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n distanceFactor: distance = 1,\n direction = 'bottom'\n } = options.namedEffect;\n const [fadeIn, bounceIn] = getNames(options);\n const distanceFactor = power && POWER_MAP[power] || distance;\n const perspective = direction === 'center' ? 'perspective(800px)' : ' ';\n const {\n x,\n y,\n z\n } = TRANSLATE_DIRECTION_MAP[direction];\n const custom = {\n '--motion-direction-x': x,\n '--motion-direction-y': y,\n '--motion-direction-z': z,\n '--motion-distance-factor': distanceFactor,\n '--motion-perspective': perspective,\n '--motion-ease-in': getEasing(easeOut),\n '--motion-ease-out': getEasing(easeIn)\n };\n const easeIn_ = toKeyframeValue(custom, '--motion-ease-in', asWeb);\n const easeOut_ = toKeyframeValue(custom, '--motion-ease-out', asWeb);\n const distanceFactor_ = toKeyframeValue(custom, '--motion-distance-factor', asWeb);\n const perspective_ = toKeyframeValue(custom, '--motion-perspective', asWeb, ' ');\n const directionX = toKeyframeValue(custom, '--motion-direction-x', asWeb);\n const directionY = toKeyframeValue(custom, '--motion-direction-y', asWeb);\n const directionZ = toKeyframeValue(custom, '--motion-direction-z', asWeb);\n const keyframes = BOUNCE_KEYFRAMES.map((_ref, index) => {\n let {\n offset,\n translate\n } = _ref;\n return {\n offset: offset / 100,\n animationTimingFunction: index % 2 ? easeIn_ : easeOut_,\n transform: `${perspective_.trim()} translate3d(calc(${directionX} * ${distanceFactor_} * ${translate / 2}px), calc(${directionY} * ${distanceFactor_} * ${translate / 2}px), calc(${directionZ} * ${distanceFactor_} * ${translate / 2}px)) rotateZ(var(--comp-rotate-z, 0deg))`\n };\n });\n return [{\n ...options,\n name: fadeIn,\n easing: 'quadOut',\n duration: options.duration * BOUNCE_KEYFRAMES[3].offset / 100,\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n name: bounceIn,\n easing: 'linear',\n custom,\n keyframes: [{\n offset: 0,\n transform: `perspective(800px) translate3d(0, 0, 0) rotateZ(var(--comp-rotate-z, 0deg))`\n }, ...keyframes]\n }];\n}\n//# sourceMappingURL=BounceIn.js.map","import { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-curveIn'];\n}\nconst PARAMS_MAP = {\n pseudoRight: {\n rotationX: '180',\n rotationY: '0'\n },\n right: {\n rotationX: '0',\n rotationY: '180'\n },\n pseudoLeft: {\n rotationX: '-180',\n rotationY: '0'\n },\n left: {\n rotationX: '0',\n rotationY: '-180'\n }\n};\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'right'\n } = options.namedEffect;\n const [curveIn] = getNames(options);\n const {\n rotationX,\n rotationY\n } = PARAMS_MAP[direction];\n const custom = {\n '--motion-rotate-x': `${rotationX}deg`,\n '--motion-rotate-y': `${rotationY}deg`\n };\n return [{\n ...options,\n name: curveIn,\n easing: 'quadOut',\n custom,\n keyframes: [{\n offset: 0,\n opacity: 0,\n easing: 'step-end'\n }, {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 0,\n transform: `perspective(200px) translateZ(calc(var(--motion-width, 300px) * -3)) rotateX(${toKeyframeValue(custom, '--motion-rotate-x', asWeb)}) rotateY(${toKeyframeValue(custom, '--motion-rotate-y', asWeb)}) translateZ(calc(var(--motion-width, 300px) * 3)) rotateZ(var(--comp-rotate-z, 0deg))`\n }, {\n opacity: 'var(--comp-opacity, 1)',\n transform: 'perspective(200px) translateZ(calc(var(--motion-width, 300px) * -3)) rotateX(0deg) rotateY(0deg) translateZ(calc(var(--motion-width, 300px) * 3)) rotateZ(var(--comp-rotate-z, 0deg))'\n }]\n }];\n}\nexport function prepare(_, dom) {\n if (dom) {\n let width;\n dom.measure(target => {\n if (!target) {\n return;\n }\n width = target.getBoundingClientRect().width;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-width', `${width}px`);\n });\n }\n}\n//# sourceMappingURL=CurveIn.js.map","import { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-circleXIn', 'motion-circleYIn'];\n}\nconst ROTATION = 45;\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'right'\n } = options.namedEffect;\n const [circleXIn, circleYIn] = getNames(options);\n const x = direction === 'right' ? 'calc(100vw - var(--motion-left, 0px))' : 'calc(var(--motion-left, 0px) * -1 - 100%)';\n const y = 'min(calc(100% * -1.5), max(-300px, calc(100% * -5.5)))';\n const customX = {\n '--motion-translate-x': x\n };\n const customY = {\n '--motion-translate-y': y,\n '--motion-rotate-z': `${(direction === 'right' ? 1 : -1) * ROTATION}deg`\n };\n return [{\n ...options,\n name: circleXIn,\n easing: 'circOut',\n custom: customX,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n translate: toKeyframeValue(customX, '--motion-translate-x', asWeb)\n }, {\n translate: '0'\n }]\n }, {\n ...options,\n name: circleYIn,\n easing: 'linear',\n custom: customY,\n keyframes: [{\n offset: 0,\n opacity: 0,\n easing: 'step-end'\n }, {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 0,\n transform: `translateY(${toKeyframeValue(customY, '--motion-translate-y', asWeb)}) rotate(calc(var(--comp-rotate-z, 0deg) + ${toKeyframeValue(customY, '--motion-rotate-z', asWeb)}))`\n }, {\n opacity: 'var(--comp-opacity, 1)',\n transform: `translateY(0) rotate(var(--comp-rotate-z, 0deg))`\n }]\n }];\n}\nexport function prepare(_, dom) {\n if (dom) {\n let left = 0;\n dom.measure(target => {\n if (!target) {\n return;\n }\n left = target.getBoundingClientRect().left;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-left', `${left}px`);\n });\n }\n}\n//# sourceMappingURL=CircleIn.js.map","import { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-dropIn'];\n}\nconst PARAMS_MAP = {\n soft: {\n scale: 1.2,\n ease: 'cubicInOut'\n },\n medium: {\n scale: 1.6,\n ease: 'quintInOut'\n },\n hard: {\n scale: 2,\n ease: 'backOut'\n }\n};\nexport function web(options) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n initialScale = PARAMS_MAP.medium.scale\n } = options.namedEffect;\n const [fadeIn, dropIn] = getNames(options);\n const scale = power && PARAMS_MAP[power].scale || initialScale;\n const easing = power && PARAMS_MAP[power].ease || options.easing || 'quintInOut';\n const custom = {\n '--motion-scale': `${scale}`\n };\n return [{\n ...options,\n name: fadeIn,\n easing: 'quadOut',\n duration: options.duration * 0.8,\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n name: dropIn,\n easing,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n scale: toKeyframeValue(custom, '--motion-scale', asWeb)\n }, {\n scale: '1'\n }]\n }];\n}\n//# sourceMappingURL=DropIn.js.map","import { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-expandIn'];\n}\nconst SCALE_MAP = {\n soft: 0.8,\n medium: 0.6,\n hard: 0\n};\nconst TRANSFORM_ORIGIN_MAP = {\n top: {\n x: 0,\n y: -0.5\n },\n 'top-right': {\n x: 0.5,\n y: -0.5\n },\n right: {\n x: 0.5,\n y: 0\n },\n 'bottom-right': {\n x: 0.5,\n y: 0.5\n },\n bottom: {\n x: 0,\n y: 0.5\n },\n 'bottom-left': {\n x: -0.5,\n y: 0.5\n },\n left: {\n x: -0.5,\n y: 0\n },\n 'top-left': {\n x: -0.5,\n y: -0.5\n },\n center: {\n x: 0,\n y: 0\n }\n};\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n initialScale = 0,\n direction = 'center'\n } = options.namedEffect;\n const [fadeIn, expandIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n const scale_ = power && power in SCALE_MAP ? SCALE_MAP[power] : initialScale;\n const {\n x,\n y\n } = TRANSFORM_ORIGIN_MAP[direction];\n const custom = {\n '--motion-translate-x': x,\n '--motion-translate-y': y,\n '--motion-scale': scale_\n };\n const transX = toKeyframeValue(custom, '--motion-translate-x', asWeb);\n const transY = toKeyframeValue(custom, '--motion-translate-y', asWeb);\n const scale = toKeyframeValue(custom, '--motion-scale', asWeb);\n return [{\n ...options,\n name: fadeIn,\n easing: 'linear',\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n name: expandIn,\n easing,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n transform: `translateX(calc(var(--motion-width, 100%) * ${transX})) translateY(calc(var(--motion-height, 100%) * ${transY})) scale(${scale}) translateX(calc(var(--motion-width, 100%) * -1 * ${transX})) translateY(calc(var(--motion-height, 100%) * -1 * ${transY})) rotate(var(--comp-rotate-z, 0deg))`\n }, {\n transform: `translateX(calc(var(--motion-width, 100%) * ${transX})) translateY(calc(var(--motion-height, 100%) * ${transY})) scale(1) translateX(calc(var(--motion-width, 100%) * -1 * ${transX})) translateY(calc(var(--motion-height, 100%) * -1 * ${transY})) rotate(var(--comp-rotate-z, 0deg))`\n }]\n }];\n}\nexport function prepare(_, dom) {\n if (dom) {\n let width, height;\n dom.measure(target => {\n if (!target) {\n return;\n }\n const rect = target.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-width', `${width}px`);\n target == null || target.style.setProperty('--motion-height', `${height}px`);\n });\n }\n}\n//# sourceMappingURL=ExpandIn.js.map","export function getNames(_) {\n return ['motion-fadeIn'];\n}\nexport function web(options) {\n return style(options);\n}\nexport function style(options) {\n const [fadeIn] = getNames(options);\n return [{\n ...options,\n name: fadeIn,\n easing: 'sineInOut',\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }];\n}\n//# sourceMappingURL=FadeIn.js.map","import { getAdjustedDirection, INITIAL_FRAME_OFFSET } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-flipIn'];\n}\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'];\nconst POWER_TO_ROTATE_MAP = {\n soft: 45,\n medium: 90,\n hard: 270\n};\nfunction getRotateFrom(direction, rotate) {\n return {\n x: ROTATE_MAP[direction].x * rotate,\n y: ROTATE_MAP[direction].y * rotate\n };\n}\nconst ROTATE_MAP = {\n top: {\n x: 1,\n y: 0\n },\n right: {\n x: 0,\n y: 1\n },\n bottom: {\n x: -1,\n y: 0\n },\n left: {\n x: 0,\n y: -1\n }\n};\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options);\n}\nexport function style(options) {\n const {\n direction = 'top',\n power,\n initialRotate = 90\n } = options.namedEffect;\n const [fadeIn, flipIn] = getNames(options);\n const rotate = power && POWER_TO_ROTATE_MAP[power] || initialRotate;\n const easing = options.easing || 'backOut';\n const from = getRotateFrom(direction, rotate);\n const custom = {\n '--motion-rotate-x': `${from.x}deg`,\n '--motion-rotate-y': `${from.y}deg`\n };\n return [{\n ...options,\n easing: 'quadOut',\n name: fadeIn,\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n easing,\n name: flipIn,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n transform: `perspective(800px) rotate(var(--comp-rotate-z, 0deg)) rotateX(var(--motion-rotate-x , ${custom['--motion-rotate-x']})) rotateY(var(--motion-rotate-y , ${custom['--motion-rotate-y']}))`\n }, {\n transform: `perspective(800px) rotate(var(--comp-rotate-z, 0deg)) rotateX(0deg) rotateY(0deg)`\n }]\n }];\n}\nexport function prepare(options, dom) {\n const {\n direction = 'top',\n power,\n initialRotate = 90\n } = options.namedEffect;\n const rotate = power && POWER_TO_ROTATE_MAP[power] || initialRotate;\n if (dom) {\n let adjustedDirection = direction;\n dom.measure(target => {\n if (!target) {\n return;\n }\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n adjustedDirection = getAdjustedDirection(DIRECTIONS, direction, parseInt(rotation, 10));\n });\n dom.mutate(target => {\n const from = getRotateFrom(adjustedDirection, rotate);\n target == null || target.style.setProperty('--motion-rotate-x', `${from.x}deg`);\n target == null || target.style.setProperty('--motion-rotate-y', `${from.y}deg`);\n });\n }\n}\n//# sourceMappingURL=FlipIn.js.map","import { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-floatIn'];\n}\nconst PARAMS_MAP = {\n top: {\n dx: 0,\n dy: -1,\n distance: 120\n },\n right: {\n dx: 1,\n dy: 0,\n distance: 120\n },\n bottom: {\n dx: 0,\n dy: 1,\n distance: 120\n },\n left: {\n dx: -1,\n dy: 0,\n distance: 120\n }\n};\nexport function web(options) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'left'\n } = options.namedEffect;\n const [floatIn] = getNames(options);\n const fromParams = PARAMS_MAP[direction];\n const translateX = fromParams.dx * fromParams.distance;\n const translateY = fromParams.dy * fromParams.distance;\n const custom = {\n '--motion-translate-x': `${translateX}px`,\n '--motion-translate-y': `${translateY}px`\n };\n return [{\n ...options,\n name: floatIn,\n easing: 'sineInOut',\n custom,\n keyframes: [{\n offset: 0,\n opacity: 0,\n easing: 'step-end'\n }, {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 0,\n transform: `translate(${toKeyframeValue(custom, '--motion-translate-x', asWeb)}, ${toKeyframeValue(custom, '--motion-translate-y', asWeb)}) rotate(var(--comp-rotate-z, 0deg))`\n }, {\n opacity: 'var(--comp-opacity, 1)',\n transform: 'translate(0, 0) rotate(var(--comp-rotate-z, 0deg))'\n }]\n }];\n}\n//# sourceMappingURL=FloatIn.js.map","import { getAdjustedDirection, INITIAL_FRAME_OFFSET } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-foldIn'];\n}\nconst POWER_TO_ROTATE_MAP = {\n soft: 35,\n medium: 60,\n hard: 90\n};\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'];\nconst PARAM_MAP = {\n top: {\n x: -1,\n y: 0,\n origin: {\n x: 0,\n y: -50\n }\n },\n right: {\n x: 0,\n y: -1,\n origin: {\n x: 50,\n y: 0\n }\n },\n bottom: {\n x: 1,\n y: 0,\n origin: {\n x: 0,\n y: 50\n }\n },\n left: {\n x: 0,\n y: 1,\n origin: {\n x: -50,\n y: 0\n }\n }\n};\nfunction getRotateFrom(direction, rotate) {\n return {\n x: PARAM_MAP[direction].x * rotate,\n y: PARAM_MAP[direction].y * rotate\n };\n}\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options);\n}\nexport function style(options) {\n const {\n direction = 'top',\n power,\n initialRotate = 90\n } = options.namedEffect;\n const [fadeIn, foldIn] = getNames(options);\n const easing = options.easing || 'backOut';\n const rotate = power && POWER_TO_ROTATE_MAP[power] || initialRotate;\n const {\n x,\n y\n } = PARAM_MAP[direction].origin;\n const from = getRotateFrom(direction, rotate);\n const custom = {\n '--motion-origin-x': `${x}%`,\n '--motion-origin-y': `${y}%`,\n '--motion-rotate-x': `${from.x}deg`,\n '--motion-rotate-y': `${from.y}deg`\n };\n return [{\n ...options,\n easing: 'quadOut',\n name: fadeIn,\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n easing,\n name: foldIn,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n transform: `rotate(var(--comp-rotate-z, 0deg)) translate(var(--motion-origin-x ,${custom['--motion-origin-x']}), var(--motion-origin-y, ${custom['--motion-origin-y']})) perspective(800px) rotateX(var(--motion-rotate-x, ${custom['--motion-rotate-x']})) rotateY(var(--motion-rotate-y, ${custom['--motion-rotate-y']})) translate(calc(-1 * var(--motion-origin-x ,${custom['--motion-origin-x']})), calc(-1 * var(--motion-origin-y, ${custom['--motion-origin-y']})))`\n }, {\n transform: `rotate(var(--comp-rotate-z, 0deg)) translate(var(--motion-origin-x ,${custom['--motion-origin-x']}), var(--motion-origin-y, ${custom['--motion-origin-y']})) perspective(800px) rotateX(0deg) rotateY(0deg) translate(calc(-1 * var(--motion-origin-x ,${custom['--motion-origin-x']})), calc(-1 * var(--motion-origin-y, ${custom['--motion-origin-y']})))`\n }]\n }];\n}\nexport function prepare(options, dom) {\n const {\n direction = 'top',\n power,\n initialRotate = 90\n } = options.namedEffect;\n const rotate = power && POWER_TO_ROTATE_MAP[power] || initialRotate;\n if (dom) {\n let adjustedDirection = direction;\n dom.measure(target => {\n if (!target) {\n return;\n }\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n adjustedDirection = getAdjustedDirection(DIRECTIONS, direction, parseInt(rotation, 10));\n });\n dom.mutate(target => {\n const {\n origin\n } = PARAM_MAP[adjustedDirection];\n const newRotate = getRotateFrom(adjustedDirection, rotate);\n target == null || target.style.setProperty('--motion-origin-x', `${origin.x}%`);\n target == null || target.style.setProperty('--motion-origin-y', `${origin.y}%`);\n target == null || target.style.setProperty('--motion-rotate-x', `${newRotate.x}deg`);\n target == null || target.style.setProperty('--motion-rotate-y', `${newRotate.y}deg`);\n });\n }\n}\n//# sourceMappingURL=FoldIn.js.map","import { getCssUnits, getOutOfScreenDistance, INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-glideIn'];\n}\nconst EASING_MAP = {\n soft: 'cubicInOut',\n medium: 'quintInOut',\n hard: 'backOut'\n};\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 0,\n distance = {\n value: 100,\n type: 'percentage'\n },\n power,\n startFromOffScreen = false\n } = options.namedEffect;\n const [glideIn] = getNames(options);\n const angleInRad = direction * Math.PI / 180;\n const unit = getCssUnits(distance.type);\n const easing = power && EASING_MAP[power] || options.easing || 'quintInOut';\n const {\n x,\n y\n } = getOutOfScreenDistance(direction);\n const translateX = startFromOffScreen ? x : `${Math.sin(angleInRad) * distance.value | 0}${unit}`;\n const translateY = startFromOffScreen ? y : `${Math.cos(angleInRad) * distance.value * -1 | 0}${unit}`;\n const custom = {\n '--motion-translate-x': `${translateX}`,\n '--motion-translate-y': `${translateY}`\n };\n return [{\n ...options,\n name: glideIn,\n easing,\n custom,\n keyframes: [{\n offset: 0,\n opacity: 0,\n easing: 'step-end'\n }, {\n offset: INITIAL_FRAME_OFFSET,\n // TODO: remove opacity when not necessary to override hard-coded opacity:0 in style\n opacity: 'var(--comp-opacity, 1)',\n transform: `translate(${toKeyframeValue(custom, '--motion-translate-x', asWeb)}, ${toKeyframeValue(custom, '--motion-translate-y', asWeb)}) rotate(var(--comp-rotate-z, 0deg))`\n }, {\n opacity: 'var(--comp-opacity, 1)',\n transform: 'translate(0, 0) rotate(var(--comp-rotate-z, 0deg))'\n }]\n }];\n}\nexport function prepare(options, dom) {\n const {\n startFromOffScreen = false\n } = options.namedEffect;\n if (dom && startFromOffScreen) {\n let left = 0;\n let top = 0;\n dom.measure(target => {\n if (!target) {\n return;\n }\n const {\n left: targetLeft,\n top: targetTop\n } = target.getBoundingClientRect();\n left = targetLeft;\n top = targetTop;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-left', `${left}px`);\n target == null || target.style.setProperty('--motion-top', `${top}px`);\n });\n }\n}\n//# sourceMappingURL=GlideIn.js.map","import { web as glideInWeb, style as glideInStyle } from './GlideIn';\nexport { prepare, getNames } from './GlideIn';\nfunction getFixedDirection(options) {\n // TODO replace with structuredClone() when possible\n const duplicate = JSON.parse(JSON.stringify(options));\n const {\n direction\n } = duplicate.namedEffect;\n if (duplicate.namedEffect.startFromOffScreen) {\n duplicate.namedEffect.direction = (direction ?? 270) - 90;\n } else if (typeof direction === 'undefined') {\n duplicate.namedEffect.direction = 270;\n }\n return duplicate;\n}\nexport function web(options, dom) {\n return glideInWeb(getFixedDirection(options), dom);\n}\nexport function style(options) {\n return glideInStyle(getFixedDirection(options));\n}\n//# sourceMappingURL=GlitchIn.js.map","import { getCssUnits, INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-growIn'];\n}\nconst SCALE_MAP = {\n soft: 0.8,\n medium: 0.6,\n hard: 0\n};\nexport function web(options) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n initialScale = 0,\n distance = {\n value: 120,\n type: 'percentage'\n },\n direction = 0\n } = options.namedEffect;\n const [fadeIn, growIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n const scale = typeof power !== 'undefined' ? SCALE_MAP[power] : initialScale;\n const angleInRad = direction * Math.PI / 180;\n const unit = getCssUnits(distance.type);\n const x = `${Math.sin(angleInRad) * distance.value | 0}${unit}`;\n const y = `${Math.cos(angleInRad) * distance.value * -1 | 0}${unit}`;\n const custom = {\n '--motion-translate-x': `${x}`,\n '--motion-translate-y': `${y}`,\n '--motion-scale': `${scale}`\n };\n return [{\n ...options,\n easing,\n duration: options.duration * scale,\n name: fadeIn,\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n easing,\n name: growIn,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n transform: `translate(${toKeyframeValue(custom, '--motion-translate-x', asWeb)}, ${toKeyframeValue(custom, '--motion-translate-y', asWeb)}) rotate(var(--comp-rotate-z, 0deg)) scale(${toKeyframeValue(custom, '--motion-scale', asWeb)})`\n }, {\n transform: 'translate(0px, 0px) rotate(var(--comp-rotate-z, 0deg)) scale(1)'\n }]\n }];\n}\n//# sourceMappingURL=GrowIn.js.map","import { getEasingFamily, getEasing, toKeyframeValue, INITIAL_FRAME_OFFSET } from '../../utils';\nimport { cssEasings as easings } from '../../easings';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-punchIn'];\n}\nconst TRANSLATION_FACTORS_MAP = {\n 'top-left': {\n y: -1,\n x: -1\n },\n 'top-right': {\n y: -1,\n x: 1\n },\n 'bottom-right': {\n y: 1,\n x: 1\n },\n 'bottom-left': {\n y: 1,\n x: -1\n },\n center: {\n y: 0,\n x: 0\n }\n};\nconst POWER_MAP = {\n soft: 'sineIn',\n medium: 'quadIn',\n hard: 'quintIn'\n};\nfunction getMidPoint(x, y, factor) {\n return {\n x: `calc(var(--motion-width, 100%) * 1.1 / 3 * ${x} * ${factor})`,\n y: `calc(var(--motion-height, 100%) * 1.1 / 3 * ${y} * ${factor})`\n };\n}\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'top-right',\n power = 'medium'\n } = options.namedEffect;\n const [fadeIn, punchIn] = getNames(options);\n const translationFactors = TRANSLATION_FACTORS_MAP[direction];\n const sourcePoint = {\n x: `calc(var(--motion-width, 100%) * 1.1 / 2 * ${translationFactors.x})`,\n y: `calc(var(--motion-height, 100%) * 1.1 / 2 * ${translationFactors.y})`\n };\n const {\n in: _in,\n out: _out\n } = getEasingFamily(POWER_MAP[power]);\n const KEYFRAMES = [{\n offset: 30,\n scale: 0.3,\n factor: 1,\n ease: 'linear'\n }, {\n offset: 45,\n scale: 1.4,\n factor: -0.4,\n ease: _out\n }, {\n offset: 62.65,\n scale: 0.8,\n factor: 0.2,\n ease: _in\n }, {\n offset: 77.27,\n scale: 1.1,\n factor: -0.1,\n ease: _out\n }, {\n offset: 86.23,\n scale: 0.94,\n factor: 0.06,\n ease: _in\n }, {\n offset: 91.73,\n scale: 1.03,\n factor: -0.03,\n ease: _out\n }, {\n offset: 95.11,\n scale: 0.98,\n factor: 0.02,\n ease: _in\n }, {\n offset: 97.18,\n scale: 1.01,\n factor: -0.01,\n ease: _out\n }, {\n offset: 98.45,\n scale: 0.99,\n factor: 0.01,\n ease: _in\n }, {\n offset: 100,\n scale: 1,\n factor: 0,\n ease: _out\n }];\n const keyframes = KEYFRAMES.map(_ref => {\n let {\n offset,\n scale,\n ease,\n factor\n } = _ref;\n const {\n x,\n y\n } = getMidPoint(translationFactors.x, translationFactors.y, factor);\n return {\n offset: offset / 100,\n easing: getEasing(ease),\n scale: `${scale}`,\n translate: `${x} ${y}`\n };\n });\n const custom = {\n '--motion-translate': `${sourcePoint.x} ${sourcePoint.y}`\n };\n return [{\n ...options,\n easing: 'cubicIn',\n duration: options.duration * 0.3,\n name: fadeIn,\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n easing: 'linear',\n name: punchIn,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n translate: toKeyframeValue(custom, '--motion-translate', asWeb),\n scale: '0',\n easing: easings.expoIn\n }, ...keyframes]\n }];\n}\nexport function prepare(_, dom) {\n if (dom) {\n let width, height;\n dom.measure(target => {\n if (!target) {\n return;\n }\n const rect = target.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-width', `${width}px`);\n target == null || target.style.setProperty('--motion-height', `${height}px`);\n });\n }\n}\n//# sourceMappingURL=PunchIn.js.map","import { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-shapeIn'];\n}\nconst shapes = {\n diamond: {\n start: 'polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%)',\n end: 'polygon(50% -50%, 150% 50%, 50% 150%, -50% 50%)'\n },\n window: {\n start: 'inset(50% round 50% 50% 0% 0%)',\n end: 'inset(-20% round 50% 50% 0% 0%)'\n },\n rectangle: {\n start: 'inset(50%)',\n end: 'inset(0%)'\n },\n circle: {\n start: 'circle(0%)',\n end: 'circle(75%)'\n },\n ellipse: {\n start: 'ellipse(0% 0%)',\n end: 'ellipse(75% 75%)'\n }\n};\nexport function web(options) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n shape = 'rectangle'\n } = options.namedEffect;\n const [fadeIn, shapeIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n const {\n start,\n end\n } = shapes[shape];\n const custom = {\n '--motion-shape-start': start,\n '--motion-shape-end': end\n };\n return [{\n ...options,\n name: fadeIn,\n easing: 'quadOut',\n duration: options.duration * 0.8,\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n name: shapeIn,\n easing,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n clipPath: toKeyframeValue(custom, '--motion-shape-start', asWeb)\n }, {\n clipPath: toKeyframeValue(custom, '--motion-shape-end', asWeb)\n }]\n }];\n}\n//# sourceMappingURL=ShapeIn.js.map","import { getAdjustedDirection, getClipPolygonParams, INITIAL_FRAME_OFFSET } from '../../utils';\nexport function getNames(_) {\n return ['motion-revealIn'];\n}\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'];\nfunction getClipStart(rotateZ, direction) {\n const clipDirection = getAdjustedDirection(DIRECTIONS, direction, rotateZ);\n return getClipPolygonParams({\n direction: clipDirection,\n minimum: 0\n });\n}\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options);\n}\nexport function style(options) {\n const {\n direction = 'left'\n } = options.namedEffect;\n const [revealIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n const start = getClipStart(0, direction);\n const end = getClipPolygonParams({\n direction: 'initial'\n });\n const custom = {\n '--motion-clip-start': start\n };\n return [{\n ...options,\n easing,\n name: revealIn,\n custom,\n keyframes: [{\n offset: 0,\n opacity: 0,\n easing: 'step-end'\n }, {\n offset: INITIAL_FRAME_OFFSET,\n opacity: 'var(--comp-opacity, 1)',\n clipPath: `var(--motion-clip-start, ${start})`\n }, {\n clipPath: end\n }]\n }];\n}\nexport function prepare(options, dom) {\n const {\n direction = 'left'\n } = options.namedEffect;\n if (dom) {\n let rotation = '0deg';\n dom.measure(target => {\n if (!target) {\n return;\n }\n rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n });\n dom.mutate(target_ => {\n target_ == null || target_.style.setProperty('--motion-clip-start', getClipStart(parseInt(rotation, 10), direction));\n });\n }\n}\n//# sourceMappingURL=RevealIn.js.map","import { getAdjustedDirection, getClipPolygonParams, INITIAL_FRAME_OFFSET } from '../../utils';\nexport function getNames(options) {\n const {\n power\n } = options.namedEffect;\n return power !== 'hard' ? ['motion-slideIn', 'motion-fadeIn'] : ['motion-slideIn'];\n}\nconst PARAM_MAP = {\n top: {\n dx: 0,\n dy: -1,\n clip: 'bottom'\n },\n right: {\n dx: 1,\n dy: 0,\n clip: 'left'\n },\n bottom: {\n dx: 0,\n dy: 1,\n clip: 'top'\n },\n left: {\n dx: -1,\n dy: 0,\n clip: 'right'\n }\n};\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'];\nconst INITIAL_TRANSLATE_MAP = {\n soft: 0.2,\n medium: 0.8,\n hard: 1\n};\nexport function web(options, dom) {\n const animations = style(options);\n prepare(options, dom);\n return animations;\n}\nexport function style(options) {\n const {\n direction = 'left',\n power,\n initialTranslate = 1\n } = options.namedEffect;\n const [slideIn, fadeIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n const scale = power && INITIAL_TRANSLATE_MAP[power] || initialTranslate;\n const minimum = 100 - scale * 100;\n const start = getClipPolygonParams({\n direction,\n minimum\n });\n const clipEnd = getClipPolygonParams({\n direction: 'initial'\n });\n const custom = {\n '--motion-clip-start': start,\n '--motion-translate-x': `${PARAM_MAP[direction].dx * 100}%`,\n '--motion-translate-y': `${PARAM_MAP[direction].dy * 100}%`\n };\n const animations = [{\n ...options,\n name: slideIn,\n easing,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n opacity: 'var(--comp-opacity, 1)',\n transform: `rotate(var(--comp-rotate-z, 0deg)) translate(var(--motion-translate-x, -100%), var(--motion-translate-y, 0%))`,\n clipPath: `var(--motion-clip-start, ${custom['--motion-clip-start']})`\n }, {\n transform: 'rotate(var(--comp-rotate-z, 0deg)) translate(0px, 0px)',\n clipPath: clipEnd\n }]\n }];\n if (power !== 'hard') {\n animations.push({\n ...options,\n easing: 'cubicInOut',\n name: fadeIn,\n // @ts-expect-error\n custom: {},\n keyframes: [\n // @ts-expect-error\n {\n offset: 0,\n opacity: 0\n },\n // @ts-expect-error\n {\n opacity: 'var(--comp-opacity, 1)'\n }]\n });\n } else {\n animations[0].keyframes.unshift({\n offset: 0,\n // @ts-expect-error\n opacity: 0,\n easing: 'step-end'\n });\n }\n return animations;\n}\nexport function prepare(options, dom) {\n const {\n direction = 'left',\n power,\n initialTranslate = 1\n } = options.namedEffect;\n const scale = power && INITIAL_TRANSLATE_MAP[power] || initialTranslate;\n const minimum = 100 - scale * 100;\n if (dom) {\n let rotation = 0;\n dom.measure(target => {\n if (!target) {\n return;\n }\n rotation = parseInt(getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg', 10);\n });\n dom.mutate(target => {\n const adjustedDirection = getAdjustedDirection(DIRECTIONS, direction, rotation);\n target == null || target.style.setProperty('--motion-clip-start', getClipPolygonParams({\n direction: PARAM_MAP[adjustedDirection].clip,\n minimum\n }));\n target == null || target.style.setProperty('--motion-translate-x', `${PARAM_MAP[adjustedDirection].dx * 100}%`);\n target == null || target.style.setProperty('--motion-translate-y', `${PARAM_MAP[adjustedDirection].dy * 100}%`);\n });\n }\n}\n//# sourceMappingURL=SlideIn.js.map","import { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-spinIn'];\n}\nconst SCALE_MAP = {\n soft: 1,\n medium: 0.6,\n hard: 0\n};\nconst DIRECTION_MAP = {\n clockwise: -1,\n 'counter-clockwise': 1\n};\nexport function web(options) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'clockwise',\n spins = 0.5,\n initialScale = 0,\n power\n } = options.namedEffect;\n const [fadeIn, spinIn] = getNames(options);\n const easing = options.easing || 'cubicInOut';\n const scale = typeof power !== 'undefined' ? SCALE_MAP[power] : initialScale;\n const transformRotate = (DIRECTION_MAP[direction] > 0 ? 1 : -1) * 360 * spins;\n const custom = {\n '--motion-scale': `${scale}`,\n '--motion-rotate': `${transformRotate}deg`\n };\n return [{\n ...options,\n name: fadeIn,\n easing: 'cubicIn',\n duration: options.duration * scale,\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n name: spinIn,\n easing,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n scale: toKeyframeValue(custom, '--motion-scale', asWeb),\n rotate: toKeyframeValue(custom, '--motion-rotate', asWeb)\n }, {\n scale: '1',\n rotate: `0deg`\n }]\n }];\n}\n//# sourceMappingURL=SpinIn.js.map","import { getAdjustedDirection, getClipPolygonParams, INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-tiltInRotate', 'motion-tiltInClip'];\n}\nconst ROTATION_MAP = {\n left: 30,\n right: -30\n};\nconst DIRECTIONS = ['top', 'right', 'bottom', 'left'];\nfunction getClipStart(rotateZ) {\n const clipDirection = getAdjustedDirection(DIRECTIONS, 'top', rotateZ);\n return getClipPolygonParams({\n direction: clipDirection,\n minimum: 0\n });\n}\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'left'\n } = options.namedEffect;\n const [fadeIn, tiltInRotate, tiltInClip] = getNames(options);\n const easing = options.easing || 'cubicOut';\n const clipStart = getClipStart(0);\n const rotationZ = ROTATION_MAP[direction];\n const clipEnd = getClipPolygonParams({\n direction: 'initial'\n });\n const translateZ = '(var(--motion-height, 200px) / 2)';\n const clipCustom = {\n '--motion-rotate-z': `${rotationZ}deg`,\n '--motion-clip-start': clipStart\n };\n return [{\n ...options,\n name: fadeIn,\n duration: options.duration * 0.2,\n easing: 'cubicOut',\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n name: tiltInRotate,\n easing,\n custom: {},\n keyframes: [{\n offset: 0,\n easing: 'step-end',\n transform: 'perspective(800px)'\n }, {\n offset: INITIAL_FRAME_OFFSET,\n transform: `perspective(800px) translateZ(calc(${translateZ} * -1)) rotateX(-90deg) translateZ(calc${translateZ}) rotate(var(--comp-rotate-z, 0deg))`\n }, {\n transform: `perspective(800px) translateZ(calc(${translateZ} * -1)) rotateX(0deg) translateZ(calc${translateZ}) rotate(var(--comp-rotate-z, 0deg))`\n }]\n }, {\n ...options,\n name: tiltInClip,\n easing,\n composite: 'add',\n duration: options.duration * 0.8,\n custom: clipCustom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n clipPath: `var(--motion-clip-start, ${clipCustom['--motion-clip-start']})`,\n transform: `rotateZ(${toKeyframeValue(clipCustom, '--motion-rotate-z', asWeb)})`\n }, {\n clipPath: clipEnd,\n transform: `rotateZ(0deg)`\n }]\n }];\n}\nexport function prepare(_, dom) {\n if (dom) {\n let rotation = '0deg';\n dom.measure(target => {\n if (!target) {\n return;\n }\n rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0deg';\n });\n dom.mutate(target_ => {\n target_ == null || target_.style.setProperty('--motion-clip-start', getClipStart(parseInt(rotation, 10)));\n });\n }\n}\n//# sourceMappingURL=TiltIn.js.map","import { INITIAL_FRAME_OFFSET, toKeyframeValue } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-turnIn'];\n}\nconst EASING_MAP = {\n soft: 'cubicInOut',\n medium: 'quintInOut',\n hard: 'backOut'\n};\nconst DIRECTION_TO_TRANSFORM_MAP = {\n 'top-left': {\n angle: -50,\n x: -50,\n y: -50\n },\n 'top-right': {\n angle: 50,\n x: 50,\n y: -50\n },\n 'bottom-right': {\n angle: 50,\n x: 50,\n y: 50\n },\n 'bottom-left': {\n angle: -50,\n x: -50,\n y: 50\n }\n};\nexport function web(options) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'top-left',\n power\n } = options.namedEffect;\n const [fadeIn, turnIn] = getNames(options);\n const easing = power && EASING_MAP[power] ? EASING_MAP[power] : options.easing || 'backOut';\n const {\n x,\n y\n } = DIRECTION_TO_TRANSFORM_MAP[direction];\n const transformRotate = DIRECTION_TO_TRANSFORM_MAP[direction].angle;\n const custom = {\n '--motion-origin': `${x}%, ${y}%`,\n '--motion-origin-invert': `${-x}%, ${-y}%`,\n '--motion-rotate-z': `${transformRotate}deg`\n };\n const origin = toKeyframeValue(custom, '--motion-origin', asWeb);\n const invertedOrigin = toKeyframeValue(custom, '--motion-origin-invert', asWeb);\n return [{\n ...options,\n name: fadeIn,\n duration: options.duration * 0.6,\n easing: 'sineIn',\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n name: turnIn,\n easing,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n transform: `translate(${origin}) rotate(${toKeyframeValue(custom, '--motion-rotate-z', asWeb)}) translate(${invertedOrigin}) rotate(var(--comp-rotate-z, 0deg))`\n }, {\n transform: `translate(${origin}) rotate(0deg) translate(${invertedOrigin}) rotate(var(--comp-rotate-z, 0deg))`\n }]\n }];\n}\n//# sourceMappingURL=TurnIn.js.map","import { getClipPolygonParams, getAdjustedDirection, INITIAL_FRAME_OFFSET } from '../../utils';\nexport function getNames(_) {\n return ['motion-fadeIn', 'motion-winkInClip', 'motion-winkInRotate'];\n}\nconst PARAM_MAP = {\n vertical: {\n scaleY: 0,\n scaleX: 1\n },\n horizontal: {\n scaleY: 1,\n scaleX: 0\n }\n};\nconst DIRECTIONS = ['vertical', 'horizontal'];\nexport function web(options, dom) {\n prepare(options, dom);\n return style(options);\n}\nexport function style(options) {\n const {\n direction = 'horizontal'\n } = options.namedEffect;\n const [fadeIn, winkInClip, winkInRotate] = getNames(options);\n const adjustedDirection = getAdjustedDirection(DIRECTIONS, direction, 0);\n const {\n scaleX,\n scaleY\n } = PARAM_MAP[adjustedDirection];\n const easing = options.easing || 'quintInOut';\n const start = getClipPolygonParams({\n direction,\n minimum: 100\n });\n const end = getClipPolygonParams({\n direction: 'initial'\n });\n const custom = {\n '--motion-scale-x': scaleX,\n '--motion-scale-y': scaleY,\n '--motion-clip-start': start\n };\n return [{\n ...options,\n easing: 'quadOut',\n name: fadeIn,\n custom: {},\n keyframes: [{\n offset: 0,\n opacity: 0\n }, {\n opacity: 'var(--comp-opacity, 1)'\n }]\n }, {\n ...options,\n easing,\n name: winkInClip,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n clipPath: `var(--motion-clip-start, ${custom['--motion-clip-start']})`\n }, {\n clipPath: end\n }]\n }, {\n ...options,\n duration: options.duration * 0.85,\n easing,\n name: winkInRotate,\n custom,\n keyframes: [{\n offset: INITIAL_FRAME_OFFSET,\n transform: `rotate(var(--comp-rotate-z, 0deg)) scale(var(--motion-scale-x, ${custom['--motion-scale-x']}), var(--motion-scale-y, ${custom['--motion-scale-y']}))`\n }, {\n transform: 'rotate(var(--comp-rotate-z, 0deg)) scale(1, 1)'\n }]\n }];\n}\nexport function prepare(options, dom) {\n const {\n direction = 'horizontal'\n } = options.namedEffect;\n if (dom) {\n let scale = PARAM_MAP.horizontal;\n let rotatedClip = getClipPolygonParams({\n direction: 'horizontal',\n minimum: 100\n });\n dom.measure(target => {\n if (!target) {\n return;\n }\n const rotation = getComputedStyle(target).getPropertyValue('--comp-rotate-z') || '0';\n const rotatedDirection = getAdjustedDirection(DIRECTIONS, direction, parseInt(rotation, 10));\n scale = PARAM_MAP[rotatedDirection];\n rotatedClip = getClipPolygonParams({\n direction: rotatedDirection,\n minimum: 100\n });\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-clip-start', rotatedClip);\n target == null || target.style.setProperty('--motion-scale-x', `${scale.scaleX}`);\n target == null || target.style.setProperty('--motion-scale-y', `${scale.scaleY}`);\n });\n }\n}\n//# sourceMappingURL=WinkIn.js.map","import * as ArcIn from './ArcIn';\nimport * as BlurIn from './BlurIn';\nimport * as ShuttersIn from './ShuttersIn';\nimport * as BounceIn from './BounceIn';\nimport * as CurveIn from './CurveIn';\nimport * as CircleIn from './CircleIn';\nimport * as DropIn from './DropIn';\nimport * as ExpandIn from './ExpandIn';\nimport * as FadeIn from './FadeIn';\nimport * as FlipIn from './FlipIn';\nimport * as FloatIn from './FloatIn';\nimport * as FoldIn from './FoldIn';\nimport * as GlideIn from './GlideIn';\nimport * as GlitchIn from './GlitchIn';\nimport * as GrowIn from './GrowIn';\nimport * as PunchIn from './PunchIn';\nimport * as ShapeIn from './ShapeIn';\nimport * as RevealIn from './RevealIn';\nimport * as SlideIn from './SlideIn';\nimport * as SpinIn from './SpinIn';\nimport * as TiltIn from './TiltIn';\nimport * as TurnIn from './TurnIn';\nimport * as WinkIn from './WinkIn';\nexport const entranceAnimations = {\n ArcIn,\n BlurIn,\n ShuttersIn,\n BounceIn,\n CurveIn,\n CircleIn,\n DropIn,\n ExpandIn,\n FadeIn,\n FlipIn,\n FloatIn,\n FoldIn,\n GlideIn,\n GlitchIn,\n GrowIn,\n PunchIn,\n ShapeIn,\n RevealIn,\n SlideIn,\n SpinIn,\n TiltIn,\n TurnIn,\n WinkIn\n};\n//# sourceMappingURL=index.js.map","import { getEasing, getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\nconst POWER_TO_BOUNCE_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 3\n};\nconst TRANSLATE_Y_KEYFRAMES = [{\n keyframe: 0,\n translateY: 0\n}, {\n keyframe: 8.8,\n translateY: -55\n}, {\n keyframe: 17.6,\n translateY: -87\n}, {\n keyframe: 26.5,\n translateY: -98\n}, {\n keyframe: 35.3,\n translateY: -87\n}, {\n keyframe: 44.1,\n translateY: -55\n}, {\n keyframe: 53.1,\n translateY: 0\n}, {\n keyframe: 66.2,\n translateY: -23\n}, {\n keyframe: 81,\n translateY: 0\n}, {\n keyframe: 86.8,\n translateY: -5\n}, {\n keyframe: 94.1,\n translateY: 0\n}, {\n keyframe: 97.1,\n translateY: -2\n}, {\n keyframe: 100,\n translateY: 0\n}];\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power = 'soft',\n intensity\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay);\n const [name] = getNames(options);\n const bounceFactor = intensity ? mapRange(0, 1, POWER_TO_BOUNCE_FACTOR_MAP.soft, POWER_TO_BOUNCE_FACTOR_MAP.hard, intensity) : POWER_TO_BOUNCE_FACTOR_MAP[power];\n const easing = getEasing('sineOut');\n const custom = {\n '--motion-bounce-factor': bounceFactor\n };\n const keyframes = TRANSLATE_Y_KEYFRAMES.map(_ref => {\n let {\n keyframe,\n translateY\n } = _ref;\n return {\n offset: keyframe / 100 * timingFactor,\n translate: `0px calc(${translateY / 2}px * ${toKeyframeValue(custom, '--motion-bounce-factor', asWeb)})`,\n easing\n };\n });\n return [{\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n keyframes\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-bounce-${timingFactor}`];\n}\n//# sourceMappingURL=Bounce.js.map","import { getCssUnits, getEasing, getEasingFamily, getTimingFactor, toKeyframeValue } from '../../utils';\nconst DIRECTION_MAP = {\n vertical: {\n x: 0,\n y: 1,\n z: 0\n },\n horizontal: {\n x: 1,\n y: 0,\n z: 0\n },\n center: {\n x: 0,\n y: 0,\n z: 1\n }\n};\nconst FACTORS_SEQUENCE = [{\n translateFactor: 1,\n timeFactor: 0.25\n}, {\n translateFactor: -1,\n timeFactor: 0.5\n}, {\n translateFactor: 1,\n timeFactor: 0.5\n}, {\n translateFactor: -0.7,\n timeFactor: 0.5\n}, {\n translateFactor: 0.6,\n timeFactor: 0.3333\n}];\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'vertical',\n distance = {\n value: 25,\n type: 'px'\n }\n } = options.namedEffect;\n const easing = options.easing || 'sineInOut';\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const totalDurationWithDelay = 3.2 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDurationWithDelay - duration);\n const [name] = getNames(options);\n const {\n x,\n y,\n z\n } = DIRECTION_MAP[direction];\n const ease = getEasingFamily(easing);\n const perspectiveTransform = direction === 'center' ? 'perspective(800px)' : '';\n\n // Create CSS custom properties for the Breathe configuration\n const custom = {\n '--motion-breathe-perspective': perspectiveTransform,\n '--motion-breathe-distance': `${distance.value}${getCssUnits(distance.type || 'px')}`,\n '--motion-breathe-x': x,\n '--motion-breathe-y': y,\n '--motion-breathe-z': z\n };\n const breatheX = `${toKeyframeValue(custom, '--motion-breathe-x', asWeb)}`;\n const breatheY = `${toKeyframeValue(custom, '--motion-breathe-y', asWeb)}`;\n const breatheZ = `${toKeyframeValue(custom, '--motion-breathe-z', asWeb)}`;\n const breathePerspective = `${toKeyframeValue(custom, '--motion-breathe-perspective', asWeb, ' ')}`;\n const breatheDistance = `${toKeyframeValue(custom, '--motion-breathe-distance', asWeb)}`;\n let currentOffset = 0;\n\n // in case a delay is applied, animate a different sequence which decays to a stop\n const keyframes = delay ? FACTORS_SEQUENCE.map(_ref => {\n let {\n translateFactor,\n timeFactor\n } = _ref;\n const keyframeOffset = currentOffset + timeFactor * timingFactor;\n currentOffset = keyframeOffset;\n const distancePart = `${breatheDistance} * ${translateFactor}`;\n return {\n offset: keyframeOffset,\n easing: getEasing(ease.inOut),\n transform: `${breathePerspective} translate3d(calc(${breatheX} * ${distancePart}), calc(${breatheY} * ${distancePart}), calc(${breatheZ} * ${distancePart})) rotateZ(var(--comp-rotate-z, 0deg))`\n };\n }) : [{\n offset: 0.25,\n easing: getEasing(ease.inOut),\n transform: `${breathePerspective} translate3d(calc(${breatheX} * ${breatheDistance}), calc(${breatheY} * ${breatheDistance}), calc(${breatheZ} * ${breatheDistance})) rotateZ(var(--comp-rotate-z, 0deg))`\n }, {\n offset: 0.75,\n easing: getEasing(ease.in),\n transform: `${breathePerspective} translate3d(calc(${breatheX} * -1 * ${breatheDistance}), calc(${breatheY} * -1 * ${breatheDistance}), calc(${breatheZ} * -1 * ${breatheDistance})) rotateZ(var(--comp-rotate-z, 0deg))`\n }];\n return [{\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: delay ? totalDurationWithDelay : duration,\n custom,\n keyframes: [{\n offset: 0,\n easing: getEasing(ease.out),\n transform: `${breathePerspective} translate3d(0, 0, 0) rotateZ(var(--comp-rotate-z, 0deg))`\n }, ...keyframes, {\n offset: 1,\n transform: `${breathePerspective} translate3d(0, 0, 0) rotateZ(var(--comp-rotate-z, 0deg))`\n }]\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-breathe-${timingFactor}`];\n}\n//# sourceMappingURL=Breathe.js.map","import { getElementOffset, getTimingFactor } from '../../utils';\nconst FOUR_DIRECTIONS_TRANSLATIONS = {\n // 100cqw - left\n RIGHT: 'calc(var(--motion-parent-width, 100vw) - var(--motion-left, 0px))',\n // left * -1 - width\n LEFT: 'calc(var(--motion-left, 0px) * -1 - var(--motion-width, 100%))',\n // top * -1 - height\n TOP: 'calc(var(--motion-top, 0px) * -1 - var(--motion-height, 100%))',\n // 100cqh - top\n BOTTOM: 'calc(var(--motion-parent-height, 100vh) - var(--motion-top, 0px))'\n};\nconst {\n RIGHT,\n LEFT,\n TOP,\n BOTTOM\n} = FOUR_DIRECTIONS_TRANSLATIONS;\nconst FOUR_CORNERS_TRANSLATIONS = {\n 'top-left': {\n // min(100cqw - left, 100cqh - top)\n from: `min(${RIGHT}, ${BOTTOM})`,\n // min(abs(left * -1 - width), abs(top * -1 - height))\n to: `min(calc(${LEFT} * -1), calc(${TOP} * -1))`\n },\n 'top-right': {\n // min(abs(left * -1 - width), 100cqh - top)\n from: `min(calc(${LEFT} * -1), ${BOTTOM})`,\n // min(100cqw - left, abs(top * -1 - height))\n to: `min(${RIGHT}, calc(${TOP} * -1))`\n },\n 'bottom-left': {\n // min(100cqw - left, abs(top * -1 - height))\n from: `min(${RIGHT}, calc(${TOP} * -1))`,\n // min(abs(left * -1 - width), 100cqh - top)\n to: `min(calc(${LEFT} * -1), ${BOTTOM})`\n },\n 'bottom-right': {\n // min(abs(left * -1 - width), abs(top * -1 - height))\n from: `min(calc(${LEFT} * -1), calc(${TOP} * -1))`,\n // min(100cqw - left, 100cqh - top)\n to: `min(${RIGHT}, ${BOTTOM})`\n }\n};\nconst TRANSLATE_BY_DIRECTION_MAP = {\n left: {\n from: `${RIGHT} 0`,\n to: `${LEFT} 0`\n },\n right: {\n from: `${LEFT} 0`,\n to: `${RIGHT} 0`\n },\n top: {\n from: `0 ${BOTTOM}`,\n to: `0 ${TOP}`\n },\n bottom: {\n from: `0 ${TOP}`,\n to: `0 ${BOTTOM}`\n }\n};\nconst GET_OFFSET_BY_DIRECTION_MAP = {\n // (width + left) / (100cqw + width)\n left: _ref => {\n let {\n left,\n width,\n parentWidth\n } = _ref;\n return (width + left) / (parentWidth + width || 1);\n },\n // (100cqw - left) / (100cqw + width)\n right: _ref2 => {\n let {\n left,\n width,\n parentWidth\n } = _ref2;\n return (parentWidth - left) / (parentWidth + width || 1);\n },\n // (100cqh - top) / (100cqh + height)\n bottom: _ref3 => {\n let {\n top,\n height,\n parentHeight\n } = _ref3;\n return (parentHeight - top) / (parentHeight + height || 1);\n },\n // (height + top) / (100cqh + height)\n top: _ref4 => {\n let {\n top,\n height,\n parentHeight\n } = _ref4;\n return (height + top) / (parentHeight + height || 1);\n },\n // min(<left>, <top>)\n 'bottom-right': _ref5 => {\n let {\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight\n } = _ref5;\n const leftDistance = width + left;\n const topDistance = parentHeight - top;\n return leftDistance < topDistance ? leftDistance / (parentWidth + width || 1) : topDistance / (parentHeight + height || 1);\n },\n // min(<right>, <top>)\n 'bottom-left': _ref6 => {\n let {\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight\n } = _ref6;\n const rightDistance = parentWidth - left;\n const topDistance = parentHeight - top;\n return rightDistance < topDistance ? rightDistance / (parentWidth + width || 1) : topDistance / (parentHeight + height || 1);\n },\n // min(<left>, <bottom>)\n 'top-right': _ref7 => {\n let {\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight\n } = _ref7;\n const leftDistance = parentWidth - left;\n const bottomDistance = height + top;\n return leftDistance < bottomDistance ? leftDistance / (parentWidth + width || 1) : bottomDistance / (parentHeight + height || 1);\n },\n // min(<right>, <bottom>)\n 'top-left': _ref8 => {\n let {\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight\n } = _ref8;\n const rightDistance = parentWidth - left;\n const bottomDistance = height + top;\n return rightDistance < bottomDistance ? rightDistance / (parentWidth + width || 1) : bottomDistance / (parentHeight + height || 1);\n }\n};\nfunction generateTranslate(direction) {\n const _from = FOUR_CORNERS_TRANSLATIONS[direction].from;\n const _to = FOUR_CORNERS_TRANSLATIONS[direction].to;\n const fromYFactor = direction.startsWith('top') ? 1 : -1;\n const toYFactor = -fromYFactor;\n const fromXFactor = direction.endsWith('left') ? 1 : -1;\n const toXFactor = -fromXFactor;\n return {\n from: `calc(${_from} * ${fromXFactor}) calc(${_from} * ${fromYFactor})`,\n to: `calc(${_to} * ${toXFactor}) calc(${_to} * ${toYFactor})`\n };\n}\nexport function web(options, dom) {\n const {\n direction = 'right'\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay);\n const [name] = getNames(options);\n\n // Create CSS custom properties for the Cross configuration\n const custom = {\n '--motion-left': '0px',\n '--motion-top': '0px',\n '--motion-width': '100%',\n '--motion-height': '100%',\n '--motion-parent-width': '100vw',\n '--motion-parent-height': '100vh'\n };\n\n /*\n * Prepare function\n */\n let left = 0;\n let top = 0;\n let width = 0;\n let height = 0;\n let parentWidth = 0;\n let parentHeight = 0;\n if (dom) {\n dom.measure(target => {\n if (!target) {\n return;\n }\n const {\n width: targetWidth,\n height: targetHeight\n } = target.getBoundingClientRect();\n const parent = target.offsetParent;\n const parentRect = (parent == null ? void 0 : parent.getBoundingClientRect()) || {};\n const offset = getElementOffset(target, parent);\n left = offset.left;\n top = offset.top;\n width = targetWidth;\n height = targetHeight;\n parentWidth = parentRect.width;\n parentHeight = parentRect.height;\n });\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-left', `${left}px`);\n target == null || target.style.setProperty('--motion-top', `${top}px`);\n target == null || target.style.setProperty('--motion-width', `${width}px`);\n target == null || target.style.setProperty('--motion-height', `${height}px`);\n target == null || target.style.setProperty('--motion-parent-width', `${parentWidth}px`);\n target == null || target.style.setProperty('--motion-parent-height', `${parentHeight}px`);\n });\n }\n return [{\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n get keyframes() {\n // Calculate the timing offset for keyframes\n const toDurationOffset = GET_OFFSET_BY_DIRECTION_MAP[direction]({\n left,\n top,\n width,\n height,\n parentWidth,\n parentHeight\n }) * timingFactor;\n let from, to;\n if (direction in TRANSLATE_BY_DIRECTION_MAP) {\n from = TRANSLATE_BY_DIRECTION_MAP[direction].from;\n to = TRANSLATE_BY_DIRECTION_MAP[direction].to;\n } else {\n const cornerFromTo = generateTranslate(direction);\n from = cornerFromTo.from;\n to = cornerFromTo.to;\n }\n return [{\n offset: 0,\n translate: '0 0'\n }, {\n offset: toDurationOffset,\n translate: to,\n easing: 'step-start'\n }, {\n offset: toDurationOffset,\n translate: from\n }, {\n offset: timingFactor,\n translate: '0 0'\n }, {\n offset: 1,\n translate: '0 0'\n }];\n }\n }];\n}\nexport function getNames(_) {\n return ['motion-cross'];\n}\n//# sourceMappingURL=Cross.js.map","import { getEasing, getTimingFactor } from '../../utils';\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, _asWeb) {\n if (_asWeb === void 0) {\n _asWeb = false;\n }\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const easing = getEasing(options.easing || 'cubicInOut');\n const timingFactor = getTimingFactor(duration, delay);\n const [name] = getNames(options);\n const keyframes = [{\n offset: 0,\n opacity: 1,\n easing\n }, {\n offset: 0.5 * timingFactor,\n opacity: 0,\n easing\n }, {\n offset: timingFactor,\n opacity: 1\n }, {\n offset: 1,\n opacity: 1\n }];\n return [{\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n keyframes\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-flash-${timingFactor}`];\n}\n//# sourceMappingURL=Flash.js.map","import { getEasing, getTimingFactor, toKeyframeValue } from '../../utils';\nconst POWER_EASING_MAP = {\n soft: 'linear',\n medium: 'quintInOut',\n hard: 'backOut'\n};\nconst DIRECTION_MAP = {\n vertical: {\n x: '1',\n y: '0'\n },\n horizontal: {\n x: '0',\n y: '1'\n }\n};\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'horizontal',\n power\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const offset = getTimingFactor(duration, delay);\n const [name] = getNames(options);\n const rotationAxes = DIRECTION_MAP[direction];\n const easing = power && POWER_EASING_MAP[power] || options.easing || 'linear';\n const custom = {\n '--motion-rotate-x': rotationAxes.x,\n '--motion-rotate-y': rotationAxes.y\n };\n const rotateStart = `rotate3d(${toKeyframeValue(custom, '--motion-rotate-x', asWeb)}, ${toKeyframeValue(custom, '--motion-rotate-y', asWeb)}, 0, 0deg)`;\n const rotateEnd = `rotate3d(${toKeyframeValue(custom, '--motion-rotate-x', asWeb)}, ${toKeyframeValue(custom, '--motion-rotate-y', asWeb)}, 0, 360deg)`;\n return [{\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n keyframes: [{\n offset: 0,\n transform: `perspective(800px) rotateZ(var(--comp-rotate-z, 0deg)) ${rotateStart}`,\n easing: getEasing(easing)\n }, {\n offset,\n transform: `perspective(800px) rotateZ(var(--comp-rotate-z, 0deg)) ${rotateEnd}`\n }, {\n offset: 1,\n transform: `perspective(800px) rotateZ(var(--comp-rotate-z, 0deg)) ${rotateEnd}`\n }]\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-flip-${timingFactor}`];\n}\n//# sourceMappingURL=Flip.js.map","import { getEasing, getEasingFamily, getTimingFactor, toKeyframeValue } from '../../utils';\nconst POWER_TO_ROTATION_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 3\n};\nconst DIRECTION_MAP = {\n top: {\n rotation: {\n x: 1,\n y: 0\n },\n origin: {\n x: 0,\n y: -50\n }\n },\n right: {\n rotation: {\n x: 0,\n y: 1\n },\n origin: {\n x: 50,\n y: 0\n }\n },\n bottom: {\n rotation: {\n x: 1,\n y: 0\n },\n origin: {\n x: 0,\n y: 50\n }\n },\n left: {\n rotation: {\n x: 0,\n y: 1\n },\n origin: {\n x: -50,\n y: 0\n }\n }\n};\nconst MIN_ROTATE_ANGLE = 15;\nconst KEYFRAME_FACTORS = [{\n fold: 1,\n frameFactor: 0.25\n}, {\n fold: -0.7,\n frameFactor: 0.5\n}, {\n fold: 0.6,\n frameFactor: 0.5\n}, {\n fold: -0.3,\n frameFactor: 0.45\n}, {\n fold: 0.2,\n frameFactor: 0.4\n}, {\n fold: -0.05,\n frameFactor: 0.5\n}, {\n fold: 0,\n frameFactor: 0.35\n}];\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n direction = 'top',\n power,\n angle = MIN_ROTATE_ANGLE\n } = options.namedEffect;\n const easing = options.easing || 'cubicInOut';\n const duration = options.duration || 1;\n const delay = +(options.delay || 0);\n const [name] = getNames(options);\n const isResponsive = typeof power === 'undefined';\n const {\n rotation,\n origin\n } = DIRECTION_MAP[direction];\n const {\n x,\n y\n } = origin;\n const ease = getEasingFamily(isResponsive ? easing : 'cubicInOut');\n const rotateTransform = isResponsive ? angle : MIN_ROTATE_ANGLE * POWER_TO_ROTATION_FACTOR_MAP[power];\n const totalDurationWithDelay = 3.2 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDurationWithDelay - duration);\n let currentOffset = 0;\n\n // Create CSS custom properties for the fold configuration\n const custom = {\n '--motion-origin-x': `${x}%`,\n '--motion-origin-y': `${y}%`,\n '--motion-rotate-angle': `${rotateTransform}deg`,\n '--motion-rotate-x': `${rotation.x}`,\n '--motion-rotate-y': `${rotation.y}`\n };\n const transformLeft = `rotateZ(var(--comp-rotate-z, 0deg)) translateX(${toKeyframeValue(custom, '--motion-origin-x', asWeb)}) translateY(${toKeyframeValue(custom, '--motion-origin-y', asWeb)}) perspective(800px)`;\n const transformRight = `translateX(calc(-1 * ${toKeyframeValue(custom, '--motion-origin-x', asWeb)})) translateY(calc(-1 * ${toKeyframeValue(custom, '--motion-origin-y', asWeb)}))`;\n const getTransform = value => `${transformLeft} rotateX(calc(${toKeyframeValue(custom, '--motion-rotate-x', asWeb)} * ${value} * ${rotateTransform}deg)) rotateY(calc(${toKeyframeValue(custom, '--motion-rotate-y', asWeb)} * ${value} * ${rotateTransform}deg)) ${transformRight}`;\n\n // in case a delay is applied, animate a different sequence which decays to a stop\n const keyframes = delay ? KEYFRAME_FACTORS.map(_ref => {\n let {\n fold,\n frameFactor\n } = _ref;\n const keyframeOffset = currentOffset + frameFactor * timingFactor;\n currentOffset = keyframeOffset;\n return {\n offset: keyframeOffset,\n easing: getEasing('sineInOut'),\n transform: getTransform(fold)\n };\n }) : [{\n offset: 0.25,\n easing: getEasing(ease.inOut),\n transform: getTransform(1)\n }, {\n offset: 0.75,\n easing: getEasing(ease.in),\n transform: getTransform(-1)\n }];\n const transform_0 = getTransform(0);\n return [{\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: delay ? totalDurationWithDelay : duration,\n custom,\n keyframes: [{\n offset: 0,\n easing: getEasing(ease.out),\n transform: transform_0\n }, ...keyframes, {\n offset: 1,\n transform: transform_0\n }]\n }];\n}\nexport function getNames(options) {\n const duration = options.duration || 1;\n const delay = +(options.delay || 0);\n if (!delay) {\n return ['motion-fold'];\n }\n const totalDurationWithDelay = 3.2 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDurationWithDelay - duration, true);\n return [`motion-fold-${timingFactor}`];\n}\n//# sourceMappingURL=Fold.js.map","import { getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\nconst POWER_TO_JELLO_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 4\n};\nconst SKEW_Y_KEYFRAMES = [{\n keyframe: 24,\n skewY: 7\n}, {\n keyframe: 38,\n skewY: -2\n}, {\n keyframe: 58,\n skewY: 4\n}, {\n keyframe: 80,\n skewY: -2\n}, {\n keyframe: 100,\n skewY: 0\n}];\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n intensity = 0.25\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const [name] = getNames(options);\n const timingFactor = getTimingFactor(duration, delay);\n const responsiveJelloFactor = mapRange(0, 1, POWER_TO_JELLO_FACTOR_MAP.soft, POWER_TO_JELLO_FACTOR_MAP.hard, intensity);\n const jelloFactor = power && POWER_TO_JELLO_FACTOR_MAP[power] || responsiveJelloFactor;\n\n // Create CSS custom properties for the jello configuration\n const custom = {\n '--motion-skew-y': jelloFactor\n };\n const keyframes = SKEW_Y_KEYFRAMES.map(_ref => {\n let {\n keyframe,\n skewY\n } = _ref;\n const offset = keyframe / 100 * timingFactor;\n return {\n offset,\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) skewY(calc(${toKeyframeValue(custom, '--motion-skew-y', asWeb)} * ${skewY}deg))`\n };\n });\n return [{\n ...options,\n name,\n delay: 0,\n easing: 'linear',\n duration: duration + delay,\n custom,\n keyframes\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-jello-${timingFactor}`];\n}\n//# sourceMappingURL=Jello.js.map","import { getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\nconst TRANSLATE_KEYFRAMES = [{\n keyframe: 17,\n translate: 7\n}, {\n keyframe: 32,\n translate: 25\n}, {\n keyframe: 48,\n translate: 8\n}, {\n keyframe: 56,\n translate: 11\n}, {\n keyframe: 66,\n translate: 25\n}, {\n keyframe: 83,\n translate: 4\n}, {\n keyframe: 100,\n translate: 0\n}];\nconst POWER_TO_POKE_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 4\n};\nconst DIRECTION_MAP = {\n top: {\n x: 0,\n y: -1\n },\n bottom: {\n x: 0,\n y: 1\n },\n right: {\n x: 1,\n y: 0\n },\n left: {\n x: -1,\n y: 0\n }\n};\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n intensity = 0.5,\n direction = 'right'\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = +(options.delay || 0);\n const {\n x,\n y\n } = DIRECTION_MAP[direction];\n const timingFactor = getTimingFactor(duration, delay);\n const [name] = getNames(options);\n const responsivePokeFactor = mapRange(0, 1, POWER_TO_POKE_FACTOR_MAP.soft, POWER_TO_POKE_FACTOR_MAP.hard, intensity);\n const pokeFactor = power ? POWER_TO_POKE_FACTOR_MAP[power] : responsivePokeFactor;\n\n // Create CSS custom properties for the poke configuration\n const custom = {\n '--motion-translate-x': x * pokeFactor,\n '--motion-translate-y': y * pokeFactor\n };\n const keyframes = TRANSLATE_KEYFRAMES.map(_ref => {\n let {\n keyframe,\n translate\n } = _ref;\n const translateValue = `calc(${toKeyframeValue(custom, '--motion-translate-x', asWeb)} * ${translate}px) calc(${toKeyframeValue(custom, '--motion-translate-y', asWeb)} * ${translate}px)`;\n return {\n offset: keyframe / 100 * timingFactor,\n translate: translateValue\n };\n });\n return [{\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-poke-${timingFactor}`];\n}\n//# sourceMappingURL=Poke.js.map","import { getTimingFactor, roundNumber, toKeyframeValue, mapRange } from '../../utils';\nconst POWER_TO_RUBBER_OFFSET_MAP = {\n soft: 0,\n medium: 0.05,\n hard: 0.1\n};\nconst SCALE_KEYFRAMES = [{\n keyframe: 45,\n scaleX: 1.03,\n scaleY: 0.93\n}, {\n keyframe: 56,\n scaleX: 0.9,\n scaleY: 1.03\n}, {\n keyframe: 66,\n scaleX: 1.02,\n scaleY: 0.96\n}, {\n keyframe: 78,\n scaleX: 0.98,\n scaleY: 1.02\n}, {\n keyframe: 89,\n scaleX: 1.005,\n scaleY: 0.9995\n}, {\n keyframe: 100,\n scaleX: 1,\n scaleY: 1\n}];\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n intensity = 0.5\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay);\n const [name] = getNames(options);\n const responsiveRubberOffset = mapRange(0, 1, POWER_TO_RUBBER_OFFSET_MAP.soft, POWER_TO_RUBBER_OFFSET_MAP.hard, intensity);\n const rubberOffset = typeof power !== 'undefined' ? POWER_TO_RUBBER_OFFSET_MAP[power] : responsiveRubberOffset;\n\n // Create CSS custom properties for the rubber configuration\n const custom = {};\n const keyframes = SCALE_KEYFRAMES.map((_ref, index) => {\n let {\n keyframe,\n scaleX,\n scaleY\n } = _ref;\n const isLastKeyframe = index === SCALE_KEYFRAMES.length - 1;\n const isEvenKeyframe = index % 2 === 0;\n const offset = rubberOffset * (isLastKeyframe ? 0 : isEvenKeyframe ? 1 : -0.5);\n const adjustedScaleX = roundNumber(scaleX + offset, 4);\n const adjustedScaleY = roundNumber(scaleY - offset, 4);\n\n // Create custom property keys for this keyframe\n const scaleXKey = `--motion-scale-x-${keyframe}`;\n const scaleYKey = `--motion-scale-y-${keyframe}`;\n\n // Add the scale values to custom properties\n custom[scaleXKey] = adjustedScaleX;\n custom[scaleYKey] = adjustedScaleY;\n return {\n offset: keyframe / 100 * timingFactor,\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) scale(${toKeyframeValue(custom, scaleXKey, asWeb)}, ${toKeyframeValue(custom, scaleYKey, asWeb)})`\n };\n });\n return [{\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-rubber-${timingFactor}`];\n}\n//# sourceMappingURL=Rubber.js.map","import { getTimingFactor, toKeyframeValue, mapRange } from '../../utils';\nconst POWER_TO_PULSE_OFFSET_MAP = {\n soft: 0,\n medium: 0.06,\n hard: 0.12\n};\nconst SCALE_KEYFRAMES = [{\n keyframe: 27,\n scale: 0.96\n}, {\n keyframe: 45,\n scale: 1\n}, {\n keyframe: 72,\n scale: 0.93\n}, {\n keyframe: 100,\n scale: 1\n}];\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n intensity = 0\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay);\n const [name] = getNames(options);\n const responsivePulseOffset = mapRange(0, 1, POWER_TO_PULSE_OFFSET_MAP.soft, POWER_TO_PULSE_OFFSET_MAP.hard, intensity);\n const pulseOffset = typeof power !== 'undefined' ? POWER_TO_PULSE_OFFSET_MAP[power] : responsivePulseOffset;\n\n // Create CSS custom properties for the pulse configuration\n const custom = {\n '--motion-pulse-offset': pulseOffset\n };\n const keyframes = SCALE_KEYFRAMES.map(_ref => {\n let {\n keyframe,\n scale\n } = _ref;\n const offset = keyframe / 100 * timingFactor;\n return {\n offset,\n transform: `scale(${scale < 1 ? `calc(${scale} - ${toKeyframeValue(custom, '--motion-pulse-offset', asWeb)})` : '1'})`\n };\n });\n if (timingFactor < 1) {\n keyframes.push({\n offset: 1,\n transform: 'scale(1)'\n });\n }\n return [{\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-pulse-${timingFactor}`];\n}\n//# sourceMappingURL=Pulse.js.map","import { getEasing, getTimingFactor, toKeyframeValue } from '../../utils';\nconst POWER_EASING_MAP = {\n soft: 'linear',\n medium: 'quintInOut',\n hard: 'backOut'\n};\nconst DIRECTION_MAP = {\n clockwise: -1,\n 'counter-clockwise': 1\n};\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n direction = 'clockwise'\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay);\n const [name] = getNames(options);\n const easing = power && POWER_EASING_MAP[power] || options.easing || 'linear';\n const transformRotate = (DIRECTION_MAP[direction] > 0 ? 1 : -1) * 360;\n const custom = {\n '--motion-rotate-start': `calc(var(--comp-rotate-z, 0deg) + ${transformRotate}deg)`\n };\n return [{\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes: [{\n offset: 0,\n easing: getEasing(easing),\n rotate: toKeyframeValue(custom, '--motion-rotate-start', asWeb)\n }, {\n offset: timingFactor,\n rotate: `var(--comp-rotate-z, 0deg)`\n }]\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-spin-${timingFactor}`];\n}\n//# sourceMappingURL=Spin.js.map","import { getEasing, getEasingFamily, getTimingFactor, toKeyframeValue } from '../../utils';\nconst POWER_TO_SWING_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 3\n};\nconst DIRECTION_MAP = {\n top: {\n x: 0,\n y: -1\n },\n right: {\n x: 1,\n y: 0\n },\n bottom: {\n x: 0,\n y: 1\n },\n left: {\n x: -1,\n y: 0\n }\n};\nconst TRANSLATE_DISTANCE = 50;\nconst FACTORS_SEQUENCE = [{\n factor: 1,\n timeFactor: 0.25\n}, {\n factor: -1,\n timeFactor: 0.5\n}, {\n factor: 0.6,\n timeFactor: 0.5\n}, {\n factor: -0.3,\n timeFactor: 0.5\n}, {\n factor: 0.2,\n timeFactor: 0.5\n}, {\n factor: -0.05,\n timeFactor: 0.5\n}, {\n factor: 0,\n timeFactor: 0.4\n}];\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n swing = 20,\n direction = 'top'\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const easing = options.easing || 'sineInOut';\n const ease = getEasingFamily(easing);\n const [name] = getNames(options);\n const swingDeg = typeof power !== 'undefined' ? 20 * POWER_TO_SWING_FACTOR_MAP[power] : swing;\n const {\n x,\n y\n } = DIRECTION_MAP[direction];\n const totalDuration = 3.55 * duration + delay;\n const timingFactor = getTimingFactor(duration, totalDuration - duration);\n\n // Create CSS custom properties for the swing configuration\n const custom = {\n '--motion-swing-deg': `${swingDeg}deg`,\n '--motion-trans-x': `${x * TRANSLATE_DISTANCE}%`,\n '--motion-trans-y': `${y * TRANSLATE_DISTANCE}%`,\n '--motion-ease-in': getEasing(ease.in),\n '--motion-ease-inout': getEasing(ease.inOut),\n '--motion-ease-out': getEasing(ease.out)\n };\n const translateBefore = `translate(${toKeyframeValue(custom, '--motion-trans-x', asWeb)}, ${toKeyframeValue(custom, '--motion-trans-y', asWeb)})`;\n const translateAfter = `translate(calc(${toKeyframeValue(custom, '--motion-trans-x', asWeb)} * -1), calc(${toKeyframeValue(custom, '--motion-trans-y', asWeb)} * -1))`;\n let currentOffset = 0;\n // in case a delay is applied, animate a different sequence which decays to a stop\n const keyframes = delay ? FACTORS_SEQUENCE.map(_ref => {\n let {\n factor,\n timeFactor\n } = _ref;\n const keyframeOffset = currentOffset + timeFactor * timingFactor;\n currentOffset = keyframeOffset;\n return {\n offset: keyframeOffset,\n easing: toKeyframeValue(custom, '--motion-ease-inout', asWeb),\n transform: `rotate(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(calc(${toKeyframeValue(custom, '--motion-swing-deg', asWeb)} * ${factor})) ${translateAfter}`\n };\n }) : [{\n offset: 0.25,\n easing: toKeyframeValue(custom, '--motion-ease-inout', asWeb),\n transform: `rotate(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(${toKeyframeValue(custom, '--motion-swing-deg', asWeb)}) ${translateAfter}`\n }, {\n offset: 0.75,\n easing: toKeyframeValue(custom, '--motion-ease-in', asWeb),\n transform: `rotate(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(calc(${toKeyframeValue(custom, '--motion-swing-deg', asWeb)} * -1)) ${translateAfter}`\n }];\n return [{\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: delay ? totalDuration : duration,\n custom,\n keyframes: [{\n offset: 0,\n easing: toKeyframeValue(custom, '--motion-ease-out', asWeb),\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(0deg) ${translateAfter}`\n }, ...keyframes, {\n offset: 1,\n transform: `rotateZ(var(--comp-rotate-z, 0deg)) ${translateBefore} rotate(0deg) ${translateAfter}`\n }]\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-swing-${timingFactor}`];\n}\n//# sourceMappingURL=Swing.js.map","import { getTimingFactor, roundNumber, toKeyframeValue, mapRange } from '../../utils';\nconst POWER_TO_WIGGLE_FACTOR_MAP = {\n soft: 1,\n medium: 2,\n hard: 4\n};\nconst TRANSFORM_KEYFRAMES = [{\n keyframe: 18,\n transY: -10,\n accRotate: 10\n}, {\n keyframe: 35,\n transY: 0,\n accRotate: -18\n}, {\n keyframe: 53,\n transY: 0,\n accRotate: 14\n}, {\n keyframe: 73,\n transY: 0,\n accRotate: -10\n}, {\n keyframe: 100,\n transY: 0,\n accRotate: 4\n}];\nexport function web(options, _dom) {\n return style(options, true);\n}\nexport function style(options, asWeb) {\n if (asWeb === void 0) {\n asWeb = false;\n }\n const {\n power,\n intensity = 0.5\n } = options.namedEffect;\n const duration = options.duration || 1;\n const delay = options.delay || 0;\n const timingFactor = getTimingFactor(duration, delay);\n const [name] = getNames(options);\n const responsiveWiggleFactor = mapRange(0, 1, POWER_TO_WIGGLE_FACTOR_MAP.soft, POWER_TO_WIGGLE_FACTOR_MAP.hard, intensity);\n const wiggleFactor = power && POWER_TO_WIGGLE_FACTOR_MAP[power] || responsiveWiggleFactor;\n let currentRotation = 0;\n\n // Create CSS custom properties for the wiggle configuration\n const custom = {\n '--motion-wiggle-factor': wiggleFactor\n };\n const keyframes = TRANSFORM_KEYFRAMES.map(_ref => {\n let {\n keyframe,\n transY,\n accRotate\n } = _ref;\n const offset = keyframe / 100 * timingFactor;\n const rotateValue = `calc(var(--comp-rotate-z, 0deg) + ${roundNumber(currentRotation + accRotate * wiggleFactor)}deg)`;\n const translateYValue = `${transY * wiggleFactor}px`;\n const rotateKey = `--motion-rotate-${keyframe}`;\n const translateYKey = `--motion-translate-y-${keyframe}`;\n\n // For non-web usage, add the values to custom properties\n custom[rotateKey] = rotateValue;\n custom[translateYKey] = translateYValue;\n currentRotation += accRotate * wiggleFactor;\n return {\n offset,\n transform: `rotate(${toKeyframeValue(custom, rotateKey, asWeb)}) translateY(${toKeyframeValue(custom, translateYKey, asWeb)})`\n };\n });\n return [{\n ...options,\n name,\n easing: 'linear',\n delay: 0,\n duration: duration + delay,\n custom,\n keyframes\n }];\n}\nexport function getNames(options) {\n const timingFactor = getTimingFactor(options.duration, options.delay, true);\n return [`motion-wiggle-${timingFactor}`];\n}\n//# sourceMappingURL=Wiggle.js.map","import * as Bounce from './Bounce';\nimport * as Breathe from './Breathe';\n// import * as Blink from './Blink';\nimport * as Cross from './Cross';\n// import * as DVD from './DVD';\nimport * as Flash from './Flash';\nimport * as Flip from './Flip';\nimport * as Fold from './Fold';\nimport * as Jello from './Jello';\nimport * as Poke from './Poke';\nimport * as Rubber from './Rubber';\nimport * as Pulse from './Pulse';\nimport * as Spin from './Spin';\nimport * as Swing from './Swing';\nimport * as Wiggle from './Wiggle';\nexport const ongoingAnimations = {\n Bounce,\n Breathe,\n // Blink,\n Cross,\n // DVD,\n Flash,\n Flip,\n Fold,\n Jello,\n Poke,\n Rubber,\n Pulse,\n Spin,\n Swing,\n Wiggle\n};\n//# sourceMappingURL=index.js.map","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport class CustomMouse {\n constructor(target, options) {\n _defineProperty(this, \"target\", void 0);\n _defineProperty(this, \"options\", void 0);\n _defineProperty(this, \"currentProgress\", void 0);\n this.target = target;\n this.options = options || {};\n this.currentProgress = {\n x: 0.5,\n y: 0.5,\n v: {\n x: 0,\n y: 0\n },\n active: true\n };\n this.play();\n }\n progress(_ref) {\n let {\n x,\n y,\n v,\n active\n } = _ref;\n this.currentProgress = {\n x,\n y,\n v,\n active\n };\n if (typeof this.options.customEffect === 'function') {\n this.options.customEffect(this.target, this.currentProgress);\n }\n }\n cancel() {\n this.currentProgress = {\n x: 0.5,\n y: 0.5,\n v: {\n x: 0,\n y: 0\n }\n };\n }\n getProgress() {\n return this.currentProgress;\n }\n play() {\n if (this.options.transition && this.target) {\n this.target.style.transition = this.options.transition;\n }\n }\n}\nexport function create(options) {\n return target => new CustomMouse(target, options);\n}\n//# sourceMappingURL=CustomMouse.js.map","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nconst paramsMap = {\n soft: {\n angle: 10,\n easing: 'easeOut'\n },\n medium: {\n angle: 50,\n easing: 'easeOut'\n },\n hard: {\n angle: 85,\n easing: 'easeOut'\n }\n};\nclass AiryMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n let translateX = 0;\n let translateY = 0;\n const {\n distance,\n invert,\n angle,\n axis\n } = this.options;\n if (axis !== 'vertical') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n }\n if (axis !== 'horizontal') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n }\n\n // if progress === 0, rotate === angle, if progress === 0.5, rotate === 0, if progress === 1, rotate === angle\n const rotate = mapRange(0, 1, -angle, angle, progressX) * invert;\n const units = getCssUnits(distance.type);\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) rotate(calc(${rotate}deg + var(--comp-rotate-z, 0deg)))`;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing\n } = options;\n const {\n power,\n inverted = false,\n distance = {\n value: 200,\n type: 'px'\n },\n angle = 30,\n axis = 'both'\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(power ? paramsMap[power].easing : transitionEasing)}` : '',\n invert,\n distance,\n angle: power ? paramsMap[power].angle : angle,\n axis\n };\n return target => new AiryMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=AiryMouse.js.map","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nconst paramsMap = {\n soft: {\n scale: 1.2,\n easing: 'easeOut'\n },\n medium: {\n scale: 1.6,\n easing: 'easeOut'\n },\n hard: {\n scale: 2.4,\n easing: 'easeOut'\n }\n};\nclass BlobMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n const {\n distance,\n scale,\n invert\n } = this.options;\n const translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n\n // if progressX === 0 || progressX === 1, scaleX === scale, if progressX === 0.5, scaleX === 1\n const scaleX = progressX < 0.5 ? mapRange(0, 0.5, scale, 1, progressX) : mapRange(0.5, 1, 1, scale, progressX);\n\n // if progressY === 0 || progressY === 1, scaleY === scale, if progressY === 0.5, scaleY === 1\n const scaleY = progressY < 0.5 ? mapRange(0, 0.5, scale, 1, progressY) : mapRange(0.5, 1, 1, scale, progressY);\n const units = getCssUnits(distance.type);\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) scale(${scaleX}, ${scaleY}) rotate(var(--comp-rotate-z, 0deg))`;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing\n } = options;\n const {\n power,\n inverted = false,\n distance = {\n value: 200,\n type: 'px'\n },\n scale = 1.4\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(power ? paramsMap[power].easing : transitionEasing)}` : '',\n invert,\n distance,\n scale: power ? paramsMap[power].scale : scale\n };\n return target => new BlobMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=BlobMouse.js.map","import { getCssUnits, getMouseTransitionEasing, distance2d, mapRange } from '../../utils';\nimport { quadInOut } from '../../easings';\nimport { CustomMouse } from './CustomMouse';\nconst paramsMap = {\n soft: {\n angle: 0,\n scale: 1,\n easing: 'easeOut'\n },\n medium: {\n angle: 25,\n scale: 0.7,\n easing: 'easeOut'\n },\n hard: {\n angle: 65,\n scale: 0.25,\n easing: 'easeOut'\n }\n};\nclass BlurMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n const {\n distance,\n angle,\n scale,\n invert,\n blur,\n perspective\n } = this.options;\n const translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n const translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n\n // if progressX === 0 || progressX === 1, scaleX === scale, if progressX === 0.5, scaleX === 1\n const scaleX = progressX < 0.5 ? mapRange(0, 0.5, scale, 1, progressX) : mapRange(0.5, 1, 1, scale, progressX);\n\n // if progressY === 0 || progressY === 1, scaleY === scale, if progressY === 0.5, scaleY === 1\n const scaleY = progressY < 0.5 ? mapRange(0, 0.5, scale, 1, progressY) : mapRange(0.5, 1, 1, scale, progressY);\n const maxScale = Math.min(scaleX, scaleY);\n\n // if progressX === 0, rotateX === -angle, if progressX === 0.5, rotateX === 0, if progressX === 1, rotateX === angle\n const rotateX = mapRange(0, 1, -angle, angle, progressY) * invert;\n const rotateY = mapRange(0, 1, angle, -angle, progressX) * invert;\n const units = getCssUnits(distance.type);\n const transform = `perspective(${perspective}px) translateX(${translateX}${units}) translateY(${translateY}${units}) scale(${maxScale}, ${maxScale}) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n const progressDistance = distance2d([0.5, 0.5], [progressX, progressY]);\n const blurFilter = Math.round(mapRange(0, 1, 0, blur, quadInOut(progressDistance)));\n const filter = `blur(${blurFilter}px)`;\n this.target.style.transform = transform;\n this.target.style.filter = filter;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.filter = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing\n } = options;\n const {\n power,\n inverted = false,\n distance = {\n value: 80,\n type: 'px'\n },\n angle = 5,\n scale = 0.3,\n blur = 20,\n perspective = 600\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(power ? paramsMap[power].easing : transitionEasing)}, filter ${transitionDuration}ms ${getMouseTransitionEasing(power ? paramsMap[power].easing : transitionEasing)}` : '',\n distance,\n angle: power ? paramsMap[power].angle : angle,\n scale: power ? paramsMap[power].scale : scale,\n blur,\n perspective,\n invert\n };\n return target => new BlurMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=BlurMouse.js.map","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nconst easingMap = {\n soft: 'linear',\n medium: 'easeOut',\n hard: 'hardBackOut'\n};\nclass TrackMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n const {\n invert,\n distance,\n axis\n } = this.options;\n let translateX = 0;\n let translateY = 0;\n\n // if progressX === 0, translateX === -distance\n // if progressX === 0.5, translateX === 0\n // if progressX === 1, translateX === distance\n if (axis === 'both' || axis === 'horizontal') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n }\n if (axis === 'both' || axis === 'vertical') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n }\n const units = getCssUnits(distance.type);\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) rotate(var(--comp-rotate-z, 0deg))`;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing\n } = options;\n const {\n power,\n inverted = false,\n distance = {\n value: 200,\n type: 'px'\n },\n axis = 'both'\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(power ? easingMap[power] : transitionEasing)}` : '',\n invert,\n distance,\n axis\n };\n return target => new TrackMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=TrackMouse.js.map","import createTrack from './TrackMouse';\nexport default function create(options) {\n const {\n distance = {\n value: 80,\n type: 'px'\n }\n } = options.namedEffect;\n const {\n transitionEasing = 'elastic'\n } = options;\n return createTrack({\n ...options,\n transitionEasing,\n namedEffect: {\n ...options.namedEffect,\n distance\n }\n });\n}\n//# sourceMappingURL=BounceMouse.js.map","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nconst paramsMap = {\n down: {\n soft: {\n scale: 0.85,\n easing: 'easeOut'\n },\n medium: {\n scale: 0.5,\n easing: 'easeOut'\n },\n hard: {\n scale: 0,\n easing: 'easeOut'\n }\n },\n up: {\n soft: {\n scale: 1.2,\n easing: 'easeOut'\n },\n medium: {\n scale: 1.6,\n easing: 'easeOut'\n },\n hard: {\n scale: 2.4,\n easing: 'easeOut'\n }\n }\n};\nclass ScaleMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n const {\n distance,\n scale,\n invert,\n axis\n } = this.options;\n let translateX = 0;\n let translateY = 0;\n let scaleX = 1;\n let scaleY = 1;\n if (axis === 'both' || axis === 'horizontal') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n scaleX = progressX < 0.5 ? mapRange(0, 0.5, scale, 1, progressX) : mapRange(0.5, 1, 1, scale, progressX);\n }\n if (axis === 'both' || axis === 'vertical') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n scaleY = progressY < 0.5 ? mapRange(0, 0.5, scale, 1, progressY) : mapRange(0.5, 1, 1, scale, progressY);\n }\n\n // scale is uniform so we use the smaller scale value if scale < 1\n // and the bigger scale value if scale > 1\n const scaleBoth = scale < 1 ? Math.min(scaleX, scaleY) : Math.max(scaleX, scaleY);\n const units = getCssUnits(distance.type);\n this.target.style.transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) scale(${scaleBoth}) rotate(var(--comp-rotate-z, 0deg))`;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing\n } = options;\n const {\n power,\n scaleDirection = 'down',\n inverted = false,\n distance = {\n value: 80,\n type: 'px'\n },\n axis = 'both',\n scale = 1.4\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(power ? paramsMap[scaleDirection][power].easing : transitionEasing)}` : '',\n invert,\n distance,\n axis,\n scale: power ? paramsMap[scaleDirection][power].scale : scale\n };\n return target => new ScaleMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=ScaleMouse.js.map","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { circInOut } from '../../easings';\nimport { CustomMouse } from './CustomMouse';\nconst paramsMap = {\n soft: {\n angle: 10,\n easing: 'easeOut'\n },\n medium: {\n angle: 20,\n easing: 'easeOut'\n },\n hard: {\n angle: 45,\n easing: 'easeOut'\n }\n};\nclass SkewMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n let translateX = 0;\n let translateY = 0;\n let skewX = 0;\n let skewY = 0;\n const {\n distance,\n angle,\n axis,\n invert\n } = this.options;\n\n // distance\n if (axis !== 'vertical') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX) * invert;\n skewX = mapRange(0, 1, angle, -angle, progressX) * invert;\n }\n if (axis !== 'horizontal') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY) * invert;\n skewY = mapRange(0, 1, angle, -angle, progressY) * invert;\n }\n if (axis === 'both') {\n // We want to do `skewX *= progressY < 0.5 ? 1 : -1`\n // but normalize it by y progress (so it will be 0 when y is 0.5)\n // and apply a circInOut easing on the progress so it will feel more natural\n skewX *= mapRange(0, 1, 1, -1, circInOut(progressY));\n\n // we want to do `skewY *= progressX < 0.5 ? 1 : -1`\n // but normalize it by x progress (so it will be 0 when x is 0.5)\n // and apply a circInOut easing on the progress so it will feel more natural\n skewY *= mapRange(0, 1, 1, -1, circInOut(progressX));\n }\n const units = getCssUnits(distance.type);\n const transform = `translateX(${translateX}${units}) translateY(${translateY}${units}) skew(${skewX}deg, ${skewY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n this.target.style.transform = transform;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing\n } = options;\n const {\n power,\n inverted = false,\n distance = {\n value: 200,\n type: 'px'\n },\n angle = 25,\n axis = 'both'\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(power ? paramsMap[power].easing : transitionEasing)}` : '',\n invert,\n distance,\n angle: power ? paramsMap[power].angle : angle,\n axis\n };\n return target => new SkewMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=SkewMouse.js.map","import { getMouseTransitionEasing, getAngleInDeg } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nclass SpinMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n const {\n invert,\n axis\n } = this.options;\n const rotation = getAngleInDeg([0.5, 0.5], [axis === 'vertical' ? 0 : progressX, axis === 'horizontal' ? 0 : progressY], 90) * invert;\n this.target.style.transform = `rotate(calc(${rotation}deg + var(--comp-rotate-z, 0deg)))`;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing = 'linear'\n } = options;\n const {\n inverted = false,\n axis = 'both'\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(transitionEasing)}` : '',\n invert,\n axis\n };\n return target => new SpinMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=SpinMouse.js.map","import { getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nconst paramsMap = {\n soft: {\n angle: 25,\n perspective: 1000,\n easing: 'easeOut'\n },\n medium: {\n angle: 50,\n perspective: 700,\n easing: 'easeOut'\n },\n hard: {\n angle: 85,\n perspective: 300,\n easing: 'easeOut'\n }\n};\nconst transformOrigins = {\n top: [0, -50],\n bottom: [0, 50],\n right: [50, 0],\n left: [-50, 0],\n 'center-horizontal': [0, 0],\n 'center-vertical': [0, 0]\n};\nclass SwivelMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n let rotateAxis = 'rotateX';\n let progress = progressY;\n let invertVertical = -1;\n const {\n pivotAxis,\n angle,\n invert,\n perspective\n } = this.options;\n if (pivotAxis === 'center-horizontal' || pivotAxis === 'right' || pivotAxis === 'left') {\n rotateAxis = 'rotateY';\n progress = progressX;\n invertVertical = 1;\n }\n\n // if progress === 0, rotate === angle, if progress === 0.5, rotate === 0, if progress === 1, rotate === angle\n const rotate = mapRange(0, 1, -angle, angle, progress) * invertVertical * invert;\n const [translateX, translateY] = transformOrigins[pivotAxis];\n const transform = `perspective(${perspective}px) translateX(${translateX}%) translateY(${translateY}%) ${rotateAxis}(${rotate}deg) translateX(${-translateX}%) translateY(${-translateY}%) rotate(var(--comp-rotate-z, 0deg))`;\n this.target.style.transform = transform;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing\n } = options;\n const {\n power,\n inverted = false,\n angle = 5,\n perspective = 800,\n pivotAxis = 'center-horizontal'\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(power ? paramsMap[power].easing : transitionEasing)}` : '',\n invert,\n angle: power ? paramsMap[power].angle : angle,\n perspective: power ? paramsMap[power].perspective : perspective,\n pivotAxis\n };\n return target => new SwivelMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=SwivelMouse.js.map","import { getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nconst paramsMap = {\n soft: {\n angle: 25,\n perspective: 1000,\n easing: 'easeOut'\n },\n medium: {\n angle: 50,\n perspective: 500,\n easing: 'easeOut'\n },\n hard: {\n angle: 85,\n perspective: 200,\n easing: 'easeOut'\n }\n};\nclass Tilt3DMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n const {\n invert,\n angle,\n perspective\n } = this.options;\n\n // if progressX === 0, rotateX === -angle, if progressX === 0.5, rotateX === 0, if progressX === 1, rotateX === angle\n const rotateX = mapRange(0, 1, angle, -angle, progressY) * invert;\n const rotateY = mapRange(0, 1, -angle, angle, progressX) * invert;\n this.target.style.transform = `perspective(${perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing\n } = options;\n const {\n power,\n inverted = false,\n angle = 5,\n perspective = 800\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(power ? paramsMap[power].easing : transitionEasing)}` : '',\n invert,\n angle: power ? paramsMap[power].angle : angle,\n perspective: power ? paramsMap[power].perspective : perspective\n };\n return target => new Tilt3DMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=Tilt3DMouse.js.map","import { getCssUnits, getMouseTransitionEasing, mapRange } from '../../utils';\nimport { CustomMouse } from './CustomMouse';\nconst paramsMap = {\n soft: {\n angle: 25,\n perspective: 1000,\n easing: 'easeOut'\n },\n medium: {\n angle: 50,\n perspective: 500,\n easing: 'easeOut'\n },\n hard: {\n angle: 85,\n perspective: 333,\n easing: 'easeOut'\n }\n};\nclass Track3DMouseAnimation extends CustomMouse {\n progress(_ref) {\n let {\n x: progressX,\n y: progressY\n } = _ref;\n const {\n invert,\n distance,\n angle,\n axis,\n perspective\n } = this.options;\n let translateX = 0;\n let translateY = 0;\n let rotateX = 0;\n let rotateY = 0;\n // if progressX === 0, translateX === -distance\n // if progressX === 0.5, translateX === 0\n // if progressX === 1, translateX === distance\n // if progressX === 0, rotateX === -angle, if progressX === 0.5, rotateX === 0, if progressX === 1, rotateX === angle\n if (axis === 'both' || axis === 'horizontal') {\n translateX = mapRange(0, 1, -distance.value, distance.value, progressX);\n rotateY = mapRange(0, 1, -angle, angle, progressX) * invert;\n }\n if (axis === 'both' || axis === 'vertical') {\n translateY = mapRange(0, 1, -distance.value, distance.value, progressY);\n rotateX = mapRange(0, 1, angle, -angle, progressY) * invert;\n }\n const units = getCssUnits(distance.type);\n this.target.style.transform = `perspective(${perspective}px) translateX(${translateX}${units}) translateY(${translateY}${units}) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotate(var(--comp-rotate-z, 0deg))`;\n }\n cancel() {\n this.target.style.transform = '';\n this.target.style.transition = '';\n }\n}\nexport default function create(options) {\n const {\n transitionDuration,\n transitionEasing\n } = options;\n const {\n power,\n inverted = false,\n distance = {\n value: 200,\n type: 'px'\n },\n angle = 5,\n axis = 'both',\n perspective = 800\n } = options.namedEffect;\n const invert = inverted ? -1 : 1;\n const animationOptions = {\n transition: transitionDuration ? `transform ${transitionDuration}ms ${getMouseTransitionEasing(power ? paramsMap[power].easing : transitionEasing)}` : '',\n invert,\n distance,\n axis,\n angle: power ? paramsMap[power].angle : angle,\n perspective: power ? paramsMap[power].perspective : perspective\n };\n return target => new Track3DMouseAnimation(target, animationOptions);\n}\n//# sourceMappingURL=Track3DMouse.js.map","import { create as CreateCustomMouse } from './CustomMouse';\nimport AiryMouse from './AiryMouse';\nimport BlobMouse from './BlobMouse';\nimport BlurMouse from './BlurMouse';\nimport BounceMouse from './BounceMouse';\nimport ScaleMouse from './ScaleMouse';\nimport SkewMouse from './SkewMouse';\nimport SpinMouse from './SpinMouse';\nimport SwivelMouse from './SwivelMouse';\nimport Tilt3DMouse from './Tilt3DMouse';\nimport Track3DMouse from './Track3DMouse';\nimport TrackMouse from './TrackMouse';\nexport const mouseAnimations = {\n AiryMouse,\n BlobMouse,\n BlurMouse,\n BounceMouse,\n CustomMouse: CreateCustomMouse,\n ScaleMouse,\n SkewMouse,\n SpinMouse,\n SwivelMouse,\n Tilt3DMouse,\n Track3DMouse,\n TrackMouse\n};\n//# sourceMappingURL=index.js.map","export function measureCompHeight(measures, dom, assignToCss) {\n dom.measure(target => {\n if (!target) {\n return;\n }\n measures.compHeight = target.offsetHeight;\n });\n if (assignToCss) {\n dom.mutate(target => {\n target == null || target.style.setProperty('--motion-comp-height', `${measures.compHeight}px`);\n });\n }\n}\nconst getMasterPage = () => window.document.getElementById('masterPage');\nconst getWixAdsHeight = () => {\n const wixAds = window.document.getElementById('WIX_ADS');\n return wixAds ? wixAds.offsetHeight : 0;\n};\nconst getSiteHeight = () => {\n const masterPage = getMasterPage();\n return masterPage ? masterPage.offsetHeight + getWixAdsHeight() : 0; // probably tests that don't have masterPage created\n};\nexport function measureSiteHeight(measures, dom) {\n dom.measure(() => {\n measures.siteHeight = getSiteHeight();\n });\n}\nexport function getScaleFromPerspectiveAndZ(z, perspective) {\n return z > perspective ? 0 : 1.0 / (1 - z / perspective);\n}\n//# sourceMappingURL=utils.js.map","import { measureCompHeight } from './utils';\nexport default function create(options, dom) {\n const measures = {\n compHeight: 0\n };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n const easing = 'linear';\n const {\n scale = 80\n } = options.namedEffect;\n return [{\n ...options,\n easing,\n part: 'BG_LAYER',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get startOffsetAdd() {\n return `calc(50vh + ${Math.round(0.5 * measures.compHeight)}px)`;\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n opacity: 1\n }, {\n opacity: 0\n }]\n }, {\n ...options,\n easing,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n transform: 'perspective(100px) translateZ(0px)'\n }, {\n transform: `perspective(100px) translateZ(${scale}px)`\n }]\n }];\n}\n//# sourceMappingURL=BgCloseUp.js.map","import { measureCompHeight } from './utils';\nconst EASE_IN = 'sineIn';\nconst EASE_OUT = 'sineOut';\nexport default function create(options, dom) {\n const measures = {\n compHeight: 0\n };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n const {\n range = 'in'\n } = options.namedEffect;\n const isOut = range === 'out';\n const fromValue = isOut ? 1 : 0;\n const toValue = isOut ? 0 : 1;\n const easing = isOut ? EASE_OUT : EASE_IN;\n return [{\n ...options,\n part: 'BG_LAYER',\n easing,\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n startOffsetAdd: isOut ? '100vh' : '0px',\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return isOut ? `calc(100vh + ${measures.compHeight}px)` : `calc(50vh + ${Math.round(0.5 * measures.compHeight)}px)`;\n },\n keyframes: [{\n opacity: fromValue\n }, {\n opacity: toValue\n }]\n }];\n}\n//# sourceMappingURL=BgFade.js.map","import { measureCompHeight } from './utils';\nexport default function create(options, dom) {\n const measures = {\n compHeight: 0\n };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n const easing = 'sineOut';\n const {\n scale = 0.7\n } = options.namedEffect;\n return [{\n ...options,\n easing: 'linear',\n part: 'BG_LAYER',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n startOffsetAdd: '100vh',\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n opacity: 1\n }, {\n opacity: 0\n }]\n }, {\n ...options,\n easing,\n part: 'BG_LAYER',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n startOffsetAdd: '100vh',\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100vh + ${Math.round(0.5 * measures.compHeight)}px)`;\n },\n keyframes: [{\n scale: 1\n }, {\n scale\n }]\n }];\n}\n//# sourceMappingURL=BgFadeBack.js.map","import { measureCompHeight, getScaleFromPerspectiveAndZ } from './utils';\nconst PERSPECTIVE = 100;\nexport default function create(options, dom) {\n const measures = {\n compHeight: 0\n };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n const {\n stretch = 1.3,\n zoom = 100 / 6\n } = options.namedEffect;\n const scale = getScaleFromPerspectiveAndZ(zoom, PERSPECTIVE);\n return [{\n ...options,\n part: 'BG_IMG',\n easing: 'sineOut',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n get keyframes() {\n return [{\n transform: 'translateY(10svh)'\n }, {\n transform: `translateY(calc(${parseFloat((-0.1 * (2 - scale)).toFixed(2))} * var(--motion-comp-height, ${measures.compHeight}px)))`\n }];\n }\n }, {\n ...options,\n part: 'BG_IMG',\n easing: 'linear',\n composite: 'add',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n transform: `scaleY(${stretch})`\n }, {\n transform: `scaleY(1)`\n }]\n }, {\n ...options,\n part: 'BG_IMG',\n easing: 'sineIn',\n composite: 'add',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n transform: `perspective(${PERSPECTIVE}px) translateZ(0px)`\n }, {\n transform: `perspective(${PERSPECTIVE}px) translateZ(${parseFloat(zoom.toFixed(2))}px)`\n }]\n }];\n}\n//# sourceMappingURL=BgFake3D.js.map","import { measureCompHeight } from './utils';\nexport default function create(options, dom) {\n const measures = {\n compHeight: 0\n };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n const {\n direction = 'left',\n speed = 0.2\n } = options.namedEffect;\n const offsetPercentage = 50 * speed / (1 + speed) | 0;\n let fromValue = `${offsetPercentage}%`;\n let toValue = `-${offsetPercentage}%`;\n if (direction === 'right') {\n [fromValue, toValue] = [toValue, fromValue];\n }\n return [{\n ...options,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n transform: `translateX(${fromValue})`\n }, {\n transform: `translateX(${toValue})`\n }]\n }];\n}\n//# sourceMappingURL=BgPan.js.map","import { measureCompHeight } from './utils';\nexport default function create(options, dom) {\n const measures = {\n compHeight: 0\n };\n if (dom) {\n measureCompHeight(measures, dom, true);\n }\n const {\n speed = 0.2\n } = options.namedEffect;\n return [{\n ...options,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n transform: `translateY(${100 * speed}svh)`\n }, {\n transform: `translateY(calc((100% - 200lvh) * ${-speed}))`\n }]\n }];\n}\n//# sourceMappingURL=BgParallax.js.map","import { measureCompHeight } from './utils';\nexport default function create(options, dom) {\n const measures = {\n compHeight: 0\n };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n const easing = 'linear';\n const {\n scale = 50\n } = options.namedEffect;\n return [{\n ...options,\n easing,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `${measures.compHeight}px`;\n },\n keyframes: [{\n transform: `perspective(100px) translate3d(0px, -${scale / 3 | 0}%, ${scale}px)`\n }, {\n transform: 'perspective(100px) translate3d(0px, 0px, 0px)'\n }]\n }];\n}\n//# sourceMappingURL=BgPullBack.js.map","import { measureCompHeight } from './utils';\nexport default function create(_options, dom) {\n if (dom) {\n measureCompHeight({\n compHeight: 0\n }, dom, true);\n }\n return [];\n}\n//# sourceMappingURL=BgReveal.js.map","export default function create(options) {\n const easing = 'sineOut';\n const {\n angle = 22,\n direction = 'counter-clockwise'\n } = options.namedEffect;\n return [{\n ...options,\n easing,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffsetAdd: '100vh',\n keyframes: [{\n transform: `rotate(${direction === 'counter-clockwise' ? angle : -angle}deg)`\n }, {\n transform: 'rotate(0deg)'\n }]\n }];\n}\n//# sourceMappingURL=BgRotate.js.map","import { measureCompHeight } from './utils';\nexport default function create(options, dom) {\n const measures = {\n compHeight: 0\n };\n if (dom) {\n measureCompHeight(measures, dom);\n }\n const {\n angle = 20,\n direction = 'counter-clockwise'\n } = options.namedEffect;\n return [{\n ...options,\n part: 'BG_MEDIA',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n transform: `skewY(${direction === 'counter-clockwise' ? angle : -angle}deg)`\n }, {\n transform: `skewY(${direction === 'counter-clockwise' ? -angle : angle}deg)`\n }]\n }];\n}\n//# sourceMappingURL=BgSkew.js.map","import { roundNumber } from '../../utils';\nimport { measureCompHeight, getScaleFromPerspectiveAndZ } from './utils';\nconst PERSPECTIVE = 100;\nconst DEFAULT_ZOOM = 40;\nconst ZOOM_OUT_FACTOR = 0.375; // 15/40 - this for using the same scale of values in the data\nconst DIRECTION_TO_PARAMS = {\n in: {\n easing: 'sineIn',\n fromY: '20svh'\n },\n out: {\n easing: 'sineInOut',\n fromY: '0px'\n }\n};\nexport default function create(options, dom) {\n const {\n direction = 'in'\n } = options.namedEffect;\n const isIn = direction === 'in';\n const measures = {\n compHeight: 0\n };\n if (dom) {\n measureCompHeight(measures, dom, isIn);\n }\n const {\n easing,\n fromY\n } = DIRECTION_TO_PARAMS[direction];\n let {\n zoom = DEFAULT_ZOOM\n } = options.namedEffect;\n if (!isIn) {\n zoom *= ZOOM_OUT_FACTOR;\n }\n const fromZ = roundNumber(isIn ? 0 : zoom / 1.3);\n const toZ = roundNumber(isIn ? zoom : -zoom);\n const toScale = roundNumber(getScaleFromPerspectiveAndZ(toZ, PERSPECTIVE));\n return [{\n ...options,\n part: 'BG_MEDIA',\n easing: 'linear',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n keyframes: [{\n transform: 'translate3d(0, 0, 0)'\n }, {\n transform: 'translate3d(0, 0, 0)'\n }]\n }, {\n ...options,\n part: 'BG_IMG',\n easing: 'linear',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n get keyframes() {\n const toY = isIn ? `calc(-0.2 * var(--motion-comp-height, ${measures.compHeight}px) + 0.5 * ${zoom / PERSPECTIVE} * max(0px, 100lvh - var(--motion-comp-height, ${measures.compHeight}px)))` : '0px';\n return [{\n transform: `translateY(${fromY})`\n }, {\n transform: `translateY(calc(${toY} * ${toScale}))`\n }];\n }\n }, {\n ...options,\n easing,\n part: 'BG_IMG',\n composite: isIn ? 'add' : 'replace',\n startOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return `calc(100svh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n transform: `perspective(${PERSPECTIVE}px) translateZ(${fromZ}px)`\n }, {\n transform: `perspective(${PERSPECTIVE}px) translateZ(${toZ}px)`\n }]\n }];\n}\n//# sourceMappingURL=BgZoom.js.map","import { measureCompHeight, measureSiteHeight } from './utils';\nexport default function create(options, dom) {\n const {\n speed = 1.5,\n reverse = false,\n isPage = false\n } = options.namedEffect;\n const measures = {\n compHeight: 0,\n siteHeight: 0\n };\n if (dom) {\n if (isPage) {\n measureSiteHeight(measures, dom);\n } else {\n measureCompHeight(measures, dom);\n }\n }\n let start = -100 * (speed - 1);\n if (!isPage) {\n start = start / speed;\n }\n let end = 0;\n if (reverse) {\n [start, end] = [end, start];\n }\n return [{\n ...options,\n part: 'BG_MEDIA',\n startOffset: {\n name: isPage ? 'contain' : 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n endOffset: {\n name: 'cover',\n offset: {\n type: 'percentage',\n value: 0\n }\n },\n get endOffsetAdd() {\n return isPage ? `${measures.siteHeight}px` : `calc(100vh + ${measures.compHeight}px)`;\n },\n keyframes: [{\n transform: `translateY(${start | 0}%)`\n }, {\n transform: `translateY(${end | 0}%)`\n }]\n }];\n}\n//# sourceMappingURL=ImageParallax.js.map","import BgCloseUp from './BgCloseUp';\nimport BgFade from './BgFade';\nimport BgFadeBack from './BgFadeBack';\nimport BgFake3D from './BgFake3D';\nimport BgPan from './BgPan';\nimport BgParallax from './BgParallax';\nimport BgPullBack from './BgPullBack';\nimport BgReveal from './BgReveal';\nimport BgRotate from './BgRotate';\nimport BgSkew from './BgSkew';\nimport BgZoom from './BgZoom';\nimport ImageParallax from './ImageParallax';\nexport const backgroundScrollAnimations = {\n BgCloseUp,\n BgFade,\n BgFadeBack,\n BgFake3D,\n BgPan,\n BgParallax,\n BgPullBack,\n BgReveal,\n BgRotate,\n BgSkew,\n BgZoom,\n ImageParallax\n};\n//# sourceMappingURL=index.js.map","!(function(win) {\n\n/**\n * FastDom\n *\n * Eliminates layout thrashing\n * by batching DOM read/write\n * interactions.\n *\n * @author Wilson Page <wilsonpage@me.com>\n * @author Kornel Lesinski <kornel.lesinski@ft.com>\n */\n\n'use strict';\n\n/**\n * Mini logger\n *\n * @return {Function}\n */\nvar debug = 0 ? console.log.bind(console, '[fastdom]') : function() {};\n\n/**\n * Normalized rAF\n *\n * @type {Function}\n */\nvar raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n\n/**\n * Initialize a `FastDom`.\n *\n * @constructor\n */\nfunction FastDom() {\n var self = this;\n self.reads = [];\n self.writes = [];\n self.raf = raf.bind(win); // test hook\n debug('initialized', self);\n}\n\nFastDom.prototype = {\n constructor: FastDom,\n\n /**\n * We run this inside a try catch\n * so that if any jobs error, we\n * are able to recover and continue\n * to flush the batch until it's empty.\n *\n * @param {Array} tasks\n */\n runTasks: function(tasks) {\n debug('run tasks');\n var task; while (task = tasks.shift()) task();\n },\n\n /**\n * Adds a job to the read batch and\n * schedules a new frame if need be.\n *\n * @param {Function} fn\n * @param {Object} ctx the context to be bound to `fn` (optional).\n * @public\n */\n measure: function(fn, ctx) {\n debug('measure');\n var task = !ctx ? fn : fn.bind(ctx);\n this.reads.push(task);\n scheduleFlush(this);\n return task;\n },\n\n /**\n * Adds a job to the\n * write batch and schedules\n * a new frame if need be.\n *\n * @param {Function} fn\n * @param {Object} ctx the context to be bound to `fn` (optional).\n * @public\n */\n mutate: function(fn, ctx) {\n debug('mutate');\n var task = !ctx ? fn : fn.bind(ctx);\n this.writes.push(task);\n scheduleFlush(this);\n return task;\n },\n\n /**\n * Clears a scheduled 'read' or 'write' task.\n *\n * @param {Object} task\n * @return {Boolean} success\n * @public\n */\n clear: function(task) {\n debug('clear', task);\n return remove(this.reads, task) || remove(this.writes, task);\n },\n\n /**\n * Extend this FastDom with some\n * custom functionality.\n *\n * Because fastdom must *always* be a\n * singleton, we're actually extending\n * the fastdom instance. This means tasks\n * scheduled by an extension still enter\n * fastdom's global task queue.\n *\n * The 'super' instance can be accessed\n * from `this.fastdom`.\n *\n * @example\n *\n * var myFastdom = fastdom.extend({\n * initialize: function() {\n * // runs on creation\n * },\n *\n * // override a method\n * measure: function(fn) {\n * // do extra stuff ...\n *\n * // then call the original\n * return this.fastdom.measure(fn);\n * },\n *\n * ...\n * });\n *\n * @param {Object} props properties to mixin\n * @return {FastDom}\n */\n extend: function(props) {\n debug('extend', props);\n if (typeof props != 'object') throw new Error('expected object');\n\n var child = Object.create(this);\n mixin(child, props);\n child.fastdom = this;\n\n // run optional creation hook\n if (child.initialize) child.initialize();\n\n return child;\n },\n\n // override this with a function\n // to prevent Errors in console\n // when tasks throw\n catch: null\n};\n\n/**\n * Schedules a new read/write\n * batch if one isn't pending.\n *\n * @private\n */\nfunction scheduleFlush(fastdom) {\n if (!fastdom.scheduled) {\n fastdom.scheduled = true;\n fastdom.raf(flush.bind(null, fastdom));\n debug('flush scheduled');\n }\n}\n\n/**\n * Runs queued `read` and `write` tasks.\n *\n * Errors are caught and thrown by default.\n * If a `.catch` function has been defined\n * it is called instead.\n *\n * @private\n */\nfunction flush(fastdom) {\n debug('flush');\n\n var writes = fastdom.writes;\n var reads = fastdom.reads;\n var error;\n\n try {\n debug('flushing reads', reads.length);\n fastdom.runTasks(reads);\n debug('flushing writes', writes.length);\n fastdom.runTasks(writes);\n } catch (e) { error = e; }\n\n fastdom.scheduled = false;\n\n // If the batch errored we may still have tasks queued\n if (reads.length || writes.length) scheduleFlush(fastdom);\n\n if (error) {\n debug('task errored', error.message);\n if (fastdom.catch) fastdom.catch(error);\n else throw error;\n }\n}\n\n/**\n * Remove an item from an Array.\n *\n * @param {Array} array\n * @param {*} item\n * @return {Boolean}\n */\nfunction remove(array, item) {\n var index = array.indexOf(item);\n return !!~index && !!array.splice(index, 1);\n}\n\n/**\n * Mixin own properties of source\n * object into the target.\n *\n * @param {Object} target\n * @param {Object} source\n */\nfunction mixin(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) target[key] = source[key];\n }\n}\n\n// There should never be more than\n// one instance of `FastDom` in an app\nvar exports = win.fastdom = (win.fastdom || new FastDom()); // jshint ignore:line\n\n// Expose to CJS & AMD\nif ((typeof define) == 'function') define(function() { return exports; });\nelse if ((typeof module) == 'object') module.exports = exports;\n\n})( typeof window !== 'undefined' ? window : typeof this != 'undefined' ? this : globalThis);\n","import { scrollAnimations } from '../library/scroll';\nimport { entranceAnimations } from '../library/entrance';\nimport { ongoingAnimations } from '../library/ongoing';\nimport { mouseAnimations } from '../library/mouse';\nimport { backgroundScrollAnimations } from '../library/backgroundScroll';\nimport { getCssUnits, getEasing } from '../utils';\nimport fastdom from 'fastdom';\nfunction getElement(id, ownerDocument) {\n return id ? (ownerDocument || document).getElementById(id) : null;\n}\nfunction getElementMotionPart(element, part) {\n if (element != null && element.matches(`[data-motion-part~=\"${part}\"]`)) {\n return element;\n }\n return element == null ? void 0 : element.querySelector(`[data-motion-part~=\"${part}\"]`);\n}\nfunction getDirection(effect) {\n const alternate = effect.alternate ? 'alternate' : '';\n return effect.reversed ? `${alternate ? `${alternate}-` : ''}reverse` : alternate || 'normal';\n}\nfunction getLength(length) {\n return `${length.value}${getCssUnits(length.type)}`;\n}\nfunction getRange(range, add, isEnd) {\n // according to the CSS spec if the end range is a <length> then it is calculated from the start of the named range\n // our model assumes that <length> in end range is calculated from the end of the named range\n return `${range.name || 'cover'} ${isEnd && range.offset.type !== 'percentage' ? `calc(100% + ${getLength(range.offset)}${add ? ` + ${add}` : ''})` : add ? `calc(${getLength(range.offset)} + ${add})` : getLength(range.offset)}`;\n}\nfunction getRanges(effect) {\n return {\n start: getRange(effect.startOffset, effect.startOffsetAdd),\n end: getRange(effect.endOffset, effect.endOffsetAdd, true)\n };\n}\nfunction measure(target) {\n return fn => fastdom.measure(() => fn(target));\n}\nfunction mutate(target) {\n return fn => fastdom.mutate(() => fn(target));\n}\nfunction getNamedEffect(animation) {\n if (animation.namedEffect) {\n const name = animation.namedEffect.type;\n\n // check each preset library for the named effect\n if (name in scrollAnimations) {\n return scrollAnimations[name];\n } else if (name in entranceAnimations) {\n return entranceAnimations[name];\n } else if (name in ongoingAnimations) {\n return ongoingAnimations[name];\n } else if (name in mouseAnimations) {\n return mouseAnimations[name];\n } else if (name in backgroundScrollAnimations) {\n return backgroundScrollAnimations[name];\n }\n } else if (animation.keyframeEffect) {\n const effect = animation_ => {\n const {\n name,\n keyframes\n } = animation_.keyframeEffect;\n return [{\n ...animation_,\n name,\n keyframes\n }];\n };\n const getNames = animation_ => {\n const {\n effectId\n } = animation_;\n const {\n name\n } = animation_.keyframeEffect;\n const uid = name || effectId;\n return uid ? [uid] : [];\n };\n return {\n web: effect,\n style: effect,\n getNames\n };\n } else if (animation.customEffect) {\n return animation_ => [{\n ...animation_,\n keyframes: []\n }];\n }\n return null;\n}\nfunction getEffectsData(animations, trigger, effectId) {\n // process each AnimationData object into a KeyframeEffect object\n return animations.map((effect, index) => {\n // prepare the KeyframeEffectOptions object\n const effectOptions = {\n fill: effect.fill,\n easing: getEasing(effect.easing),\n iterations: effect.iterations === 0 ? Infinity : effect.iterations || 1,\n composite: effect.composite,\n direction: getDirection(effect)\n };\n\n // if this is a time-based animation then set the duration and delay as time values\n if (isNotAScrubTrigger(trigger)) {\n effectOptions.duration = effect.duration;\n effectOptions.delay = effect.delay || 0;\n } else {\n // if ViewTimeline is supported\n if (window.ViewTimeline) {\n // set duration to 'auto'\n effectOptions.duration = 'auto';\n } else {\n // if ViewTimeline not supported then put a 100ms value in duration get a progress we can easily relate to\n // we split the duration to 99.99ms and delay of 0.01ms to get the fill-mode effect working\n effectOptions.duration = 99.99;\n effectOptions.delay = 0.01;\n }\n }\n return {\n effect,\n options: effectOptions,\n id: effectId && `${effectId}-${index + 1}`,\n part: effect.part\n };\n });\n}\nfunction isNotAScrubTrigger(trigger) {\n return !trigger || trigger.trigger !== 'pointer-move' && trigger.trigger !== 'view-progress';\n}\nexport { isNotAScrubTrigger, getElement, getElementMotionPart, getNamedEffect, getEffectsData, measure, mutate, getDirection, getLength, getRanges };\n//# sourceMappingURL=common.js.map","import { CustomAnimation } from '../CustomAnimation';\nimport { AnimationGroup } from '../AnimationGroup';\nimport { getElement, getElementMotionPart, measure, mutate, getRanges, getNamedEffect, getEffectsData, isNotAScrubTrigger } from './common';\nimport fastdom from 'fastdom';\nfunction getWebAnimationEffect(preset, animation, target, trigger, options) {\n if (preset) {\n // validate duration is a number over 0\n if (isNotAScrubTrigger(trigger)) {\n animation.duration = animation.duration || 1;\n if (options != null && options.reducedMotion) {\n if (animation.iterations === 1 || animation.iterations == undefined) {\n animation = {\n ...animation,\n duration: 1\n };\n } else {\n return [];\n }\n }\n }\n let domApi;\n if (target instanceof HTMLElement) {\n domApi = {\n measure: measure(target),\n mutate: mutate(target)\n };\n }\n return preset.web ? preset.web(animation, domApi, options) : preset(animation, domApi, options);\n }\n return [];\n}\nfunction getWebAnimation(target, animationOptions, trigger, options, ownerDocument) {\n const element = target instanceof HTMLElement ? target : getElement(target, ownerDocument);\n if ((trigger == null ? void 0 : trigger.trigger) === 'pointer-move') {\n let effectOptions = animationOptions;\n if (animationOptions.customEffect) {\n effectOptions = {\n ...animationOptions,\n namedEffect: {\n id: '',\n type: 'CustomMouse'\n }\n };\n }\n\n // TODO: need to fix the type here, currently lying about the returned type to be WebAnimationEffectFactory instead of MouseAnimationFactoryCreate\n const mouseAnimationPreset = getNamedEffect(effectOptions);\n const mouseAnimationFactory = getWebAnimationEffect(mouseAnimationPreset, animationOptions, element, trigger, options);\n return mouseAnimationFactory(element);\n }\n\n // get the preset for the given animation options\n const namedEffect = getNamedEffect(animationOptions);\n const animationsData = getWebAnimationEffect(namedEffect, animationOptions, element, trigger, options);\n const data = getEffectsData(animationsData, trigger, animationOptions.effectId);\n let timeline;\n const isViewProgress = (trigger == null ? void 0 : trigger.trigger) === 'view-progress';\n\n // if this is a ScrubAnimation with view-progress trigger and the browser supports the ViewTimeline API\n if (isViewProgress && window.ViewTimeline) {\n // generate the timeline object\n // @ts-expect-error\n timeline = new ViewTimeline({\n subject: trigger.element || getElement(trigger.componentId)\n });\n }\n\n // generate an Animation object for each data object\n const animations = data.map(_ref => {\n let {\n effect,\n options: effectOptions,\n id,\n part\n } = _ref;\n const effectTarget = part ? getElementMotionPart(element, part) : element;\n const keyframeEffect = new KeyframeEffect(effectTarget || null, [], effectOptions);\n\n // set the keyframes for the KeyframeEffect after measurements and mutations\n fastdom.mutate(() => {\n if ('timing' in effect) {\n keyframeEffect.updateTiming(effect.timing);\n }\n keyframeEffect.setKeyframes(effect.keyframes);\n });\n const timingOptions = isViewProgress && timeline ? {\n timeline: timeline\n } : {};\n const animation = typeof effect.customEffect === 'function' ? new CustomAnimation(effect.customEffect, effectTarget || null, effectOptions, timingOptions) : new Animation(keyframeEffect, timingOptions.timeline);\n\n // if this is a ScrubAnimation with view-progress trigger and the browser supports the ViewTimeline API\n if (isViewProgress) {\n if (timeline) {\n // set the ranges for the animation after measurements and mutations\n fastdom.mutate(() => {\n const {\n start,\n end\n } = getRanges(effect);\n // @ts-expect-error\n animation.rangeStart = start;\n // @ts-expect-error\n animation.rangeEnd = end;\n animation.play();\n });\n } else {\n const {\n startOffset,\n endOffset\n } = animationOptions;\n\n // set the ranges for the animation after measurements and mutations\n fastdom.mutate(() => {\n var _offset, _offset2;\n const startOffsetToWrite = effect.startOffset || startOffset;\n const endOffsetToWrite = effect.endOffset || endOffset;\n Object.assign(animation, {\n start: {\n name: startOffsetToWrite.name,\n offset: (_offset = startOffsetToWrite.offset) == null ? void 0 : _offset.value,\n add: effect.startOffsetAdd\n },\n end: {\n name: endOffsetToWrite.name,\n offset: (_offset2 = endOffsetToWrite.offset) == null ? void 0 : _offset2.value,\n add: effect.endOffsetAdd\n }\n });\n });\n }\n }\n if (id) {\n animation.id = id;\n }\n return animation;\n });\n\n // create an AnimationGroup with the generate animations\n return new AnimationGroup(animations, {\n ...animationOptions,\n trigger: {\n ...(trigger || {})\n },\n // make sure the group is ready after all animation targets are measured and mutated\n measured: new Promise(resolve => fastdom.mutate(resolve))\n });\n}\nexport { getWebAnimation };\n//# sourceMappingURL=webAnimations.js.map","import { getElement, getNamedEffect, measure, mutate } from './common';\nimport fastdom from 'fastdom';\nfunction prepareAnimation(target, animation, callback) {\n const preset = getNamedEffect(animation);\n const element = target instanceof HTMLElement ? target : getElement(target);\n if (preset && preset.prepare && element) {\n const domApi = {\n measure: measure(element),\n mutate: mutate(element)\n };\n preset.prepare(animation, domApi);\n }\n callback && fastdom.mutate(callback);\n}\nexport { prepareAnimation };\n//# sourceMappingURL=prepare.js.map","import { AnimationGroup } from './AnimationGroup';\nimport { getEasing, getJsEasing } from './utils';\nimport { getWebAnimation } from './api/webAnimations';\nimport { getCSSAnimation } from './api/cssAnimations';\nimport { prepareAnimation } from './api/prepare';\nimport { getElement, getNamedEffect } from './api/common';\nfunction getElementCSSAnimation(target, animationOptions) {\n const namedEffect = getNamedEffect(animationOptions);\n if (!namedEffect) {\n return null;\n }\n if (!namedEffect.style) {\n // if this named effect does not have a style method, attempt to get group of Web Animations\n if (animationOptions.effectId && target) {\n return getElementAnimation(target, animationOptions.effectId);\n }\n return null;\n }\n const effectNames = namedEffect.getNames(animationOptions);\n const element = typeof target === 'string' ? getElement(target) : target;\n const animations = element == null ? void 0 : element.getAnimations();\n const animationNames = (animations == null ? void 0 : animations.map(anim => anim.animationName)) || [];\n const filteredAnimations = [];\n effectNames.forEach(name => {\n if (animationNames.includes(name)) {\n filteredAnimations.push(animations == null ? void 0 : animations.find(anim => anim.animationName === name));\n }\n });\n return filteredAnimations != null && filteredAnimations.length ? new AnimationGroup(filteredAnimations) : null;\n}\nfunction getElementAnimation(target, effectId) {\n const element = typeof target === 'string' ? getElement(target) : target;\n // somehow get the right animations\n const animations = element == null ? void 0 : element.getAnimations().filter(anim => {\n const id = anim.id || anim.animationName;\n // if no id/name just return all animations\n return id ? id.startsWith(effectId) : true;\n });\n return animations != null && animations.length ? new AnimationGroup(animations) : null;\n}\nfunction getScrubScene(target, animationOptions, trigger, sceneOptions) {\n if (sceneOptions === void 0) {\n sceneOptions = {};\n }\n const {\n disabled,\n allowActiveEvent,\n ...rest\n } = sceneOptions;\n const animation = getWebAnimation(target, animationOptions, trigger, rest);\n let typeSpecificOptions = {};\n if (trigger.trigger === 'view-progress' && !window.ViewTimeline) {\n // TODO(ameerf): consider doing this only for bgscrub to not affect the other scroll effects\n const viewSource = trigger.element || getElement(trigger.componentId);\n const {\n ready\n } = animation;\n return animation.animations.map(partialAnimation => {\n return {\n /* we use getters for start and end in order to access the animation's start and end\n only when initializing the scrub scene rather than immediately */\n get start() {\n return partialAnimation.start;\n },\n get end() {\n return partialAnimation.end;\n },\n viewSource,\n ready,\n getProgress() {\n return animation.getProgress();\n },\n effect(__, p) {\n const {\n activeDuration\n } = partialAnimation.effect.getComputedTiming();\n const {\n delay\n } = partialAnimation.effect.getTiming();\n partialAnimation.currentTime = ((delay || 0) + (activeDuration || 0)) * p;\n },\n disabled,\n destroy() {\n partialAnimation.cancel();\n }\n };\n });\n } else if (trigger.trigger === 'pointer-move') {\n const {\n centeredToTarget,\n transitionDuration,\n transitionEasing\n } = animationOptions;\n typeSpecificOptions = {\n target: animation.target,\n centeredToTarget,\n allowActiveEvent\n };\n if (animationOptions.customEffect && transitionDuration) {\n typeSpecificOptions.transitionDuration = transitionDuration;\n typeSpecificOptions.transitionEasing = getJsEasing(transitionEasing);\n }\n }\n return {\n ...typeSpecificOptions,\n getProgress() {\n return animation.getProgress();\n },\n effect(__, p, v, active) {\n animation.progress(v ? {\n // @ts-expect-error spread error on p\n ...p,\n v,\n active\n } : p);\n },\n disabled,\n destroy() {\n animation.cancel();\n }\n };\n}\nfunction getAnimation(target, animationOptions, trigger, reducedMotion) {\n if (reducedMotion === void 0) {\n reducedMotion = false;\n }\n const animation = getElementCSSAnimation(target, animationOptions);\n if (animation) {\n animation.ready = new Promise(resolve => {\n prepareAnimation(target, animationOptions, resolve);\n });\n return animation;\n }\n return getWebAnimation(target, animationOptions, trigger, {\n reducedMotion\n });\n}\nexport { getCSSAnimation, getWebAnimation, getElementCSSAnimation, getElementAnimation, getScrubScene, prepareAnimation, getAnimation, getEasing };\n//# sourceMappingURL=motion.js.map","import { getEasing } from '@wix/motion';\nimport type { Condition, CreateTransitionCSSParams } from './types';\n\n/**\n * Applies a selector condition predicate to a base selector.\n * - If `&` is in the predicate, replace `&` with the base selector\n * - If no `&`, assume `&<predicate>` (append predicate to base selector)\n */\nfunction applySelectorCondition(baseSelector: string, predicate: string): string {\n if (predicate.includes('&')) {\n return predicate.replace(/&/g, baseSelector);\n }\n return `${baseSelector}${predicate}`;\n}\n\nexport function generateId() {\n return 'wi-12343210'.replace(\n /\\d/g,\n (c) =>\n String.fromCharCode(\n (+c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))) + 97,\n ), // 97 for \"a\"\n );\n}\n\nexport function createTransitionCSS({\n key,\n effectId,\n transition,\n properties,\n childSelector = '> :first-child',\n selectorCondition,\n}: CreateTransitionCSSParams): string[] {\n let transitions: string[] = [];\n\n if (transition?.styleProperties) {\n const { duration, easing, delay } = transition;\n\n if (duration) {\n const hasCustomPropertiesTransition = transition.styleProperties.some((styleProperty) =>\n styleProperty.name.startsWith('--'),\n );\n\n if (hasCustomPropertiesTransition) {\n // If there are custom properties in the transition, we need to fall back to Viewer's legacy implementation\n transitions = [\n `all ${duration}ms ${getEasing(easing || 'ease')}${delay ? ` ${delay}ms` : ''}`,\n 'visibility 0s',\n ];\n } else {\n transitions = transition.styleProperties.map(\n (styleProperty) =>\n `${styleProperty.name} ${duration}ms ${getEasing(\n easing || 'ease',\n )}${delay ? ` ${delay}ms` : ''}`,\n );\n }\n }\n\n properties = transition.styleProperties;\n } else {\n transitions =\n properties\n ?.filter((property) => property.duration)\n .map(\n (property) =>\n `${property.name} ${property.duration}ms ${\n getEasing(property.easing) || 'ease'\n }${property.delay ? ` ${property.delay}ms` : ''}`,\n ) || [];\n }\n\n const styleProperties =\n properties?.map((property) => `${property.name}: ${property.value};`) || [];\n const escapedKey = key.replace(/\"/g, \"'\");\n\n // Build selectors, applying condition if present\n const stateSelector = `:is(:state(${effectId}), :--${effectId}) ${childSelector}`;\n const dataAttrSelector = `[data-interact-effect~=\"${effectId}\"] ${childSelector}`;\n\n const finalStateSelector = selectorCondition\n ? applySelectorCondition(stateSelector, selectorCondition)\n : stateSelector;\n const finalDataAttrSelector = selectorCondition\n ? applySelectorCondition(dataAttrSelector, selectorCondition)\n : dataAttrSelector;\n\n const result = [\n `${finalStateSelector},\n ${finalDataAttrSelector} {\n ${styleProperties.join(`\n `)}\n }`,\n ];\n\n if (transitions.length) {\n const transitionSelector = `[data-interact-key=\"${escapedKey}\"] ${childSelector}`;\n const finalTransitionSelector = selectorCondition\n ? applySelectorCondition(transitionSelector, selectorCondition)\n : transitionSelector;\n\n result.push(`@media (prefers-reduced-motion: no-preference) { ${finalTransitionSelector} {\n transition: ${transitions.join(', ')};\n } }`);\n }\n return result;\n}\n\nexport function getMediaQuery(\n conditionNames: string[] | undefined,\n conditions: Record<string, Condition>,\n) {\n const conditionContent = (conditionNames || [])\n .filter((conditionName) => {\n return conditions[conditionName]?.type === 'media' && conditions[conditionName].predicate;\n })\n .map((conditionName) => {\n return conditions[conditionName].predicate;\n })\n .join(') and (');\n\n const condition = conditionContent && `(${conditionContent})`;\n const mql = condition && window.matchMedia(condition);\n\n return mql;\n}\n\nexport function getSelectorCondition(\n conditionNames: string[] | undefined,\n conditions: Record<string, Condition>,\n): string | undefined {\n for (const name of conditionNames || []) {\n const condition = conditions[name];\n if (condition?.type === 'selector' && condition.predicate) {\n return condition.predicate;\n }\n }\n return;\n}\n","import type {\n TimeEffect,\n ScrubEffect,\n HandlerObject,\n HandlerObjectMap,\n AnimationOptions,\n} from '../types';\n\nexport function effectToAnimationOptions(effect: TimeEffect | ScrubEffect) {\n if ((effect as TimeEffect).duration) {\n return {\n id: '',\n ...effect,\n } as AnimationOptions<'time'>;\n }\n\n const { rangeStart, rangeEnd, ...rest } = effect as ScrubEffect;\n return {\n id: '',\n startOffset: rangeStart,\n endOffset: rangeEnd,\n ...rest,\n } as AnimationOptions<'scrub'>;\n}\n\nexport function addHandlerToMap(\n handlersMap: HandlerObjectMap,\n element: HTMLElement,\n handlerObj: HandlerObject,\n) {\n let handlers = handlersMap.get(element);\n\n if (!handlers) {\n handlers = new Set();\n handlersMap.set(element, handlers);\n }\n\n handlers.add(handlerObj);\n}\n\nexport function removeElementFromHandlerMap(\n handlerMap: HandlerObjectMap,\n element: HTMLElement,\n) {\n const handlers = handlerMap.get(element);\n\n handlers?.forEach((handlerObj) => {\n const { source, target, cleanup } = handlerObj;\n cleanup();\n\n const otherKey = source === element ? target : source;\n const otherHandlers = handlerMap.get(otherKey);\n otherHandlers?.delete(handlerObj);\n });\n\n handlerMap.delete(element);\n}\n","import type { AnimationGroup } from '@wix/motion';\nimport { getAnimation } from '@wix/motion';\nimport type { TimeEffect, HandlerObjectMap, ViewEnterParams, InteractOptions } from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\nimport fastdom from 'fastdom';\n\nconst SAFE_OBSERVER_CONFIG: IntersectionObserverInit = {\n root: null,\n rootMargin: '0px 0px -10% 0px',\n threshold: [0],\n};\n\nconst observers: Record<string, IntersectionObserver> = {};\nconst handlerMap = new WeakMap() as HandlerObjectMap;\nconst elementFirstRun = new WeakSet<HTMLElement>();\nconst elementObserverMap = new WeakMap<HTMLElement, IntersectionObserver>();\nlet viewEnterOptions: Partial<ViewEnterParams> = {};\n\nfunction setOptions(options: Partial<ViewEnterParams>) {\n viewEnterOptions = options;\n}\n\nfunction getObserver(options: ViewEnterParams, isSafeMode: boolean = false) {\n const key = JSON.stringify({ ...options, isSafeMode });\n\n if (observers[key]) {\n return observers[key];\n }\n\n const config: IntersectionObserverInit = isSafeMode\n ? SAFE_OBSERVER_CONFIG\n : {\n root: null,\n rootMargin: options.inset\n ? `${options.inset} 0px ${options.inset}`\n : '0px',\n threshold: options.threshold,\n };\n\nconst observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const target = entry.target as HTMLElement;\n const isFirstRun = !elementFirstRun.has(target);\n\n if (isFirstRun) {\n elementFirstRun.add(target);\n\n if (options.useSafeViewEnter && !entry.isIntersecting) {\n fastdom.measure(() => {\n const sourceHeight = entry.boundingClientRect.height;\n const rootHeight = entry.rootBounds?.height;\n\n if (!rootHeight) {\n return;\n }\n\n const threshold = Array.isArray(options.threshold)\n ? Math.min(...options.threshold)\n : options.threshold;\n\n const needsSafeObserver =\n threshold && sourceHeight * threshold > rootHeight;\n\n if (needsSafeObserver) {\n fastdom.mutate(() => {\n observer.unobserve(target);\n const safeObserver = getObserver(options, true);\n elementObserverMap.set(target, safeObserver);\n safeObserver.observe(target);\n });\n }\n });\n return;\n }\n }\n\n if (entry.isIntersecting) {\n const handlers = handlerMap.get(target);\n\n handlers?.forEach(({ source, handler }) => {\n if (source === entry.target) {\n handler!();\n }\n });\n\n if (options.type === 'once') {\n observer.unobserve(entry.target);\n elementFirstRun.delete(target);\n }\n }\n });\n}, config);\n\n observers[key] = observer;\n\n return observer;\n}\n\nfunction addViewEnterHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: TimeEffect,\n options: ViewEnterParams = {},\n { reducedMotion, selectorCondition }: InteractOptions = {},\n) {\n const observer = getObserver({ ...viewEnterOptions, ...options });\n const animation = getAnimation(\n target,\n effectToAnimationOptions(effect),\n undefined,\n reducedMotion,\n ) as AnimationGroup;\n\n if (animation?.isCSS && options.type === 'once') {\n animation.onFinish(() => {\n target.dataset.motionEnter = 'done';\n });\n }\n\n const handler = () => {\n if (selectorCondition && !target.matches(selectorCondition)) return;\n animation.play(() => {\n if (!animation.isCSS) {\n target.dataset.motionEnter = 'done';\n }\n });\n };\n const cleanup = () => {\n const currentObserver = elementObserverMap.get(source) || observer;\n currentObserver.unobserve(source);\n animation.cancel();\n elementFirstRun.delete(source);\n elementObserverMap.delete(source);\n };\n const handlerObj = { source, target, handler, cleanup };\n\n addHandlerToMap(handlerMap, source, handlerObj);\n addHandlerToMap(handlerMap, target, handlerObj);\n\n elementObserverMap.set(source, observer);\n observer.observe(source);\n}\n\nfunction removeViewEnterHandler(element: HTMLElement) {\n removeElementFromHandlerMap(handlerMap, element);\n}\n\nexport default {\n add: addViewEnterHandler,\n remove: removeViewEnterHandler,\n setOptions,\n};\n","/**\n * Returns a new Object with the properties of the first argument\n * assigned to it, and the second argument as its prototype, so\n * its properties are served as defaults.\n *\n * @param {Object} obj properties to assign\n * @param {Object|null} defaults\n * @return {Object}\n */\nfunction defaultTo (obj, defaults) {\n return Object.assign(Object.create(defaults), obj);\n}\n\n/**\n * Interpolate from a to b by the factor t.\n *\n * @param {number} a start point\n * @param {number} b end point\n * @param {number} t interpolation factor\n * @param {number} e minimal possible delta between result and start, and between result and end\n * @return {number}\n */\nfunction lerp (a, b, t, e) {\n let res = a * (1 - t) + b * t;\n\n if (e) {\n const deltaFromStart = res - a;\n if (Math.abs(deltaFromStart) < e) {\n res = a + e * Math.sign(deltaFromStart);\n }\n\n const deltaFromEnd = b - res;\n\n if (Math.abs(deltaFromEnd) < e) {\n return b;\n }\n }\n\n return res;\n}\n\n/**\n * Throttle a function to trigger once per animation frame.\n * Keeps the arguments from last call, even if that call gets ignored.\n *\n * @param {function} fn function to throttle\n * @return {(function(): void)}\n */\nfunction frameThrottle (fn) {\n let throttled = false;\n\n return function () {\n if (!throttled) {\n throttled = true;\n\n window.requestAnimationFrame(() => {\n throttled = false;\n fn();\n });\n }\n };\n}\n\n/**\n * Debounce a function by interval in milliseconds.\n *\n * @param {function} fn\n * @param {number} interval\n * @return {function}\n */\nfunction debounce (fn, interval) {\n let debounced = 0;\n\n return function bounce () {\n if (debounced) {\n window.clearTimeout(debounced);\n }\n\n debounced = window.setTimeout(() => {\n debounced = 0;\n fn();\n }, interval);\n };\n}\n\nexport {\n defaultTo,\n lerp,\n frameThrottle,\n debounce\n};\n","/**\n * parses offsetString of the format calc(<length> + <length>)\n * @param {string|undefined} offsetString\n * @param {AbsoluteOffsetContext} absoluteOffsetContext\n */\nfunction parseOffsetCalc(offsetString, absoluteOffsetContext) {\n const match = offsetString.match(/^calc\\s*\\(\\s*(-?\\d+((px)|([lsd]?vh)|([lsd]?vw)))\\s*\\+\\s*(-?\\d+((px)|([lsd]?vh)|([lsd]?vw)))\\s*\\)\\s*$/);\n return transformAbsoluteOffsetToNumber(match[1], absoluteOffsetContext) + transformAbsoluteOffsetToNumber(match[6], absoluteOffsetContext);\n}\n\n/**\n * Convert an absolute offset as string to number of pixels\n *\n * @param {string|undefined} offsetString\n * @param {AbsoluteOffsetContext} absoluteOffsetContext\n * @return {number}\n */\nfunction transformAbsoluteOffsetToNumber (offsetString, absoluteOffsetContext) {\n return offsetString\n ? /^-?\\d+px$/.test(offsetString)\n ? parseInt(offsetString)\n : /^-?\\d+[lsd]?vh$/.test(offsetString)\n ? parseInt(offsetString) * absoluteOffsetContext.viewportHeight / 100\n : /^-?\\d+[lsd]?vw$/.test(offsetString)\n ? parseInt(offsetString) * absoluteOffsetContext.viewportWidth / 100\n : /^calc\\s*\\(\\s*-?\\d+((px)|([lsd]?vh)|([lsd]?vw))\\s*\\+\\s*-?\\d+((px)|([lsd]?vh)|([lsd]?vw))\\s*\\)\\s*$/.test(offsetString)\n ? parseOffsetCalc(offsetString, absoluteOffsetContext)\n : parseInt(offsetString) || 0\n : 0;\n}\n\n/**\n * Convert a range into offset in pixels.\n *\n * @param {{name: RangeName, offset: number}} range\n * @param {number} viewportSize\n * @param {{start: number, end: number}} rect\n * @return {number}\n */\nfunction transformRangeToPosition (range, viewportSize, rect) {\n const { name, offset = 0 } = range;\n const { start, end } = rect;\n const height = end - start;\n const percentage = offset / 100;\n\n let startPosition, duration;\n\n if (name === 'entry') {\n startPosition = start - viewportSize;\n duration = Math.min(viewportSize, height);\n }\n else if (name === 'entry-crossing') {\n startPosition = start - viewportSize;\n duration = height;\n }\n else if (name === 'contain') {\n startPosition = Math.min(end - viewportSize, start);\n // it's either VH - height OR height - VH; so it boils down to just the absolute value of that\n duration = Math.abs(viewportSize - height);\n }\n else if (name === 'exit') {\n startPosition = Math.max(start, end - viewportSize);\n duration = Math.min(viewportSize, height);\n }\n else if (name === 'exit-crossing') {\n startPosition = start;\n duration = height;\n }\n else if (name === 'cover') {\n startPosition = start - viewportSize;\n duration = height + viewportSize;\n }\n\n return (startPosition + percentage * duration) | 0;\n}\n\nfunction computeStickinessIntoFullRange(offsetTree, absoluteStartOffset, absoluteEndOffset, viewportSize, isHorizontal) {\n let accumulatedOffset = 0;\n const newAbsoluteRange = {start: absoluteStartOffset, end: absoluteEndOffset}\n\n /*\n * loop from root down to subject\n * check for sticky positioned elements in the tree and add stuck intervals if needed\n */\n offsetTree.forEach((node, index) => {\n accumulatedOffset += node.offset;\n const sticky = node.sticky;\n\n if (sticky) {\n if ('end' in sticky) {\n const parent = offsetTree[index - 1]?.element;\n\n if (parent) {\n const elementSize = (isHorizontal ? node.element.offsetWidth : node.element.offsetHeight) || 0;\n const offsetFromViewEnd = elementSize + sticky.end - viewportSize;\n /*\n * Sticky bottom:\n * starts on the starting edge of element's parent - viewport size + element size + offset from bottom of view\n * ends on the element's offset + offset from bottom of view\n * duration is essentially element's offset\n */\n const stuckStart = accumulatedOffset + offsetFromViewEnd - node.offset;\n // check if stuckStart is before the point of scroll where the timeline starts\n const isBeforeStart = stuckStart < newAbsoluteRange.start;\n // check if stuckStart is inside the timeline's active scroll interval\n const isInsideDuration = !isBeforeStart && stuckStart <= absoluteEndOffset;\n\n let extraOffset = 0;\n if (isBeforeStart || isInsideDuration) {\n extraOffset = node.offset;\n newAbsoluteRange.end += extraOffset;\n }\n\n if (isBeforeStart) {\n newAbsoluteRange.start += extraOffset;\n }\n }\n }\n\n if ('start' in sticky) {\n // stuckStart is the amount needed to scroll to reach the stuck state\n const stuckStart = accumulatedOffset - sticky.start;\n\n // check if stuckStart is before the point of scroll where the timeline starts\n const isBeforeStart = stuckStart < newAbsoluteRange.start;\n // check if stuckStart is inside the timeline's active scroll interval\n const isInsideDuration = !isBeforeStart && stuckStart <= newAbsoluteRange.end;\n\n let extraOffset = 0;\n const parent = offsetTree[index - 1]?.element;\n\n if (parent) {\n if (isBeforeStart || isInsideDuration) {\n const parentSize = (isHorizontal ? parent.offsetWidth : parent.offsetHeight) || 0;\n const elementOffset = node.offset;\n const elementSize = (isHorizontal ? node.element.offsetWidth : node.element.offsetHeight) || 0;\n\n extraOffset = parentSize - (elementOffset + elementSize);\n accumulatedOffset += extraOffset;\n newAbsoluteRange.end += extraOffset;\n }\n\n if (isBeforeStart) {\n newAbsoluteRange.start += extraOffset;\n }\n }\n }\n }\n });\n\n return newAbsoluteRange;\n}\n\n/**\n * Convert scene data in ranges into offsets in pixels.\n *\n * @param {ScrollScene} scene\n * @param {{start: number, end: number}} rect\n * @param {number} viewportSize\n * @param {boolean} isHorizontal\n * @param {AbsoluteOffsetContext} absoluteOffsetContext\n * @param {Array<{element: HTMLElement, offset: number, sticky: {start?: number, end?: number}}>} offsetTree\n * @return {ScrollScene}\n */\nfunction transformSceneRangesToOffsets (scene, rect, viewportSize, isHorizontal, absoluteOffsetContext, offsetTree) {\n const { start, end, duration } = scene;\n\n let startOffset = start;\n let endOffset = end;\n let startRange = scene.startRange;\n let endRange = scene.endRange;\n let overrideDuration;\n\n if (typeof duration === 'string') {\n startRange = { name: duration, offset: 0 }\n endRange = { name: duration, offset: 100 }\n\n startOffset = transformRangeToPosition(startRange, viewportSize, rect);\n endOffset = transformRangeToPosition(endRange, viewportSize, rect);\n overrideDuration = endOffset - startOffset;\n\n const newAbsoluteRange = computeStickinessIntoFullRange(offsetTree, startOffset, endOffset, viewportSize, isHorizontal);\n\n startOffset = newAbsoluteRange.start;\n endOffset = newAbsoluteRange.end;\n }\n else {\n if (startRange || start?.name) {\n startRange = startRange || start;\n\n const startAdd = transformAbsoluteOffsetToNumber(startRange.add, absoluteOffsetContext);\n const absoluteStartOffset = transformRangeToPosition({...startRange, offset: 0}, viewportSize, rect);\n const absoluteEndOffset = transformRangeToPosition({...startRange, offset: 100}, viewportSize, rect);\n // we take 0% to 100% of the named range for start, and we compute the position by adding the sticky addition for the given start offset\n const newAbsoluteRange = computeStickinessIntoFullRange(offsetTree, absoluteStartOffset, absoluteEndOffset, viewportSize, isHorizontal);\n\n startOffset = newAbsoluteRange.start + (startRange.offset / 100) * (newAbsoluteRange.end - newAbsoluteRange.start) + startAdd;\n }\n\n if (endRange || end?.name) {\n endRange = endRange || end;\n\n const endAdd = transformAbsoluteOffsetToNumber(endRange.add, absoluteOffsetContext);\n const absoluteStartOffset = transformRangeToPosition({...endRange, offset: 0}, viewportSize, rect);\n const absoluteEndOffset = transformRangeToPosition({...endRange, offset: 100}, viewportSize, rect);\n // we take 0% to 100% of the named range for end, and we compute the position by adding the sticky addition for the given end offset\n const newAbsoluteRange = computeStickinessIntoFullRange(offsetTree, absoluteStartOffset, absoluteEndOffset, viewportSize, isHorizontal);\n\n endOffset = newAbsoluteRange.start + (endRange.offset / 100) * (newAbsoluteRange.end - newAbsoluteRange.start) + endAdd;\n }\n else if (typeof duration === 'number') {\n endOffset = startOffset + duration;\n }\n }\n\n if (!overrideDuration && !duration) {\n overrideDuration = endOffset - startOffset;\n }\n\n return {...scene, start: startOffset, end: endOffset, startRange, endRange, duration: overrideDuration || duration };\n}\n\n/**\n * Check whether the position of an element is sticky.\n *\n * @param {CSSStyleDeclaration} style\n * @return {boolean}\n */\nfunction getIsSticky (style) {\n return style.position === 'sticky';\n}\n\n/**\n * Check whether the position of an element is sticky.\n *\n * @param {CSSStyleDeclaration} style\n * @param {HTMLElement} offsetParent\n * @param {HTMLElement} root\n * @return {boolean}\n */\nfunction getIsFixed (style, offsetParent, root) {\n return style.position === 'fixed' && (!offsetParent || offsetParent === window.document.body || offsetParent === root);\n}\n\n/**\n * Get start offset of an element in scroll direction.\n *\n * @param {CSSStyleDeclaration} style\n * @param {boolean} isHorizontal\n * @return {number}\n */\nfunction getStickyStartOffset (style, isHorizontal) {\n return parseInt(isHorizontal ? style.left : style.top);\n}\n\n/**\n * Get end offset of an element in scroll direction.\n *\n * @param {CSSStyleDeclaration} style\n * @param {boolean} isHorizontal\n * @return {number}\n */\nfunction getStickyEndOffset (style, isHorizontal) {\n return parseInt(isHorizontal ? style.right : style.bottom);\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {boolean} isHorizontal\n * @param {boolean} isSticky\n * @return {number}\n */\nfunction getRectStart (element, isHorizontal, isSticky) {\n // TODO: implement support for RTL writing-mode\n if (isSticky) {\n element.style.position = 'static';\n }\n\n const result = (isHorizontal ? element.offsetLeft : element.offsetTop) || 0;\n\n if (isSticky) {\n // assuming the sticky position came from a stylesheet and not set inline\n element.style.position = null;\n }\n\n return result\n}\n\nfunction getStickyData (style, isHorizontal) {\n let sticky;\n const stickyStart = getStickyStartOffset(style, isHorizontal);\n const stickyEnd = getStickyEndOffset(style, isHorizontal);\n const hasStickyStart = !isNaN(stickyStart);\n const hasStickyEnd = !isNaN(stickyEnd);\n\n if (hasStickyStart || hasStickyEnd) {\n sticky = {};\n\n if (hasStickyStart) {\n sticky.start = stickyStart;\n }\n if (hasStickyEnd) {\n sticky.end = stickyEnd;\n }\n }\n\n return sticky;\n}\n\n/**\n * Returns an array of converted scenes' data for grouped scenes (assumes same viewSource) from ranges into offsets in pixels.\n *\n * @param {ScrollScene[]} scenes\n * @param {Window|HTMLElement} root\n * @param {number} viewportSize\n * @param {boolean} isHorizontal\n * @param {AbsoluteOffsetContext} absoluteOffsetContext\n * @return {ScrollScene[]}\n */\nexport function getTransformedSceneGroup (scenes, root, viewportSize, isHorizontal, absoluteOffsetContext) {\n const element = scenes[0].viewSource;\n const offsetTree = [];\n let size = (isHorizontal ? element.offsetWidth : element.offsetHeight) || 0;\n let elementLayoutStart = 0;\n let parent = element;\n\n while (parent) {\n const nodeStyle = window.getComputedStyle(parent);\n const isSticky = getIsSticky(nodeStyle);\n const sticky = isSticky ? getStickyData(nodeStyle, isHorizontal) : undefined;\n\n // get the base offset of the source element - before adding sticky intervals\n const offset = getRectStart(parent, isHorizontal, isSticky);\n\n // if we have sticky end (bottom or right) ignore offset for this element because it will stick to its parent's start edge\n if (!sticky || !('end' in sticky)) {\n elementLayoutStart += offset;\n }\n\n offsetTree.push({element: parent, offset, sticky});\n\n parent = parent.offsetParent;\n const isFixed = getIsFixed(nodeStyle, parent, root);\n if (isFixed) {\n break;\n } else if (parent === root) {\n offsetTree.push({element: parent, offset: 0});\n break;\n }\n }\n\n offsetTree.reverse();\n\n const transformedScenes = scenes.map(scene => ({\n ...transformSceneRangesToOffsets(\n scene,\n {start: elementLayoutStart, end: elementLayoutStart + size},\n viewportSize,\n isHorizontal,\n absoluteOffsetContext,\n offsetTree\n ),\n }));\n\n return transformedScenes;\n}\n\n/**\n * Returns a converted scene data from ranges into offsets in pixels.\n *\n * @param {ScrollScene} scene\n * @param {Window|HTMLElement} root\n * @param {number} viewportSize\n * @param {boolean} isHorizontal\n * @param {AbsoluteOffsetContext} absoluteOffsetContext\n * @return {ScrollScene}\n */\nexport function getTransformedScene (scene, root, viewportSize, isHorizontal, absoluteOffsetContext) {\n return getTransformedSceneGroup([scene], root, viewportSize, isHorizontal, absoluteOffsetContext)[0];\n}\n\n","import { debounce, defaultTo } from './utilities.js';\nimport { getTransformedSceneGroup } from './view.js';\n\nconst VIEWPORT_RESIZE_INTERVAL = 100;\n\n/**\n * @private\n * @type {scrollConfig}\n */\nconst DEFAULTS = {\n horizontal: false,\n observeViewportEntry: true,\n viewportRootMargin: '7% 7%',\n observeViewportResize: false,\n observeSourcesResize: false,\n observeContentResize: false,\n};\n\n/*\n * Utilities for scroll controller\n */\n\n\n/**\n * Utility for calculating effect progress.\n *\n * @private\n * @param {number} p current scroll position\n * @param {number} start start position\n * @param {number} end end position\n * @param {number} duration duration of effect in scroll pixels\n * @return {number} effect progress, between 0 and 1\n */\nfunction calcProgress (p, start, end, duration) {\n let progress = 0;\n\n if (p >= start && p <= end) {\n progress = duration ? (p - start) / duration : 1;\n }\n else if (p > end) {\n progress = 1;\n }\n\n return progress;\n}\n\n/**\n *\n * @param {Window|HTMLElement} root\n * @param {boolean} isHorizontal\n * @return {number}\n */\nfunction getViewportSize (root, isHorizontal) {\n if (root === window) {\n return isHorizontal\n ? window.document.documentElement.clientWidth\n : window.document.documentElement.clientHeight;\n }\n\n return isHorizontal ? root.clientWidth : root.clientHeight;\n}\n\nfunction getAbsoluteOffsetContext () {\n // TODO: re-calc on viewport resize\n return {\n viewportWidth: window.document.documentElement.clientWidth,\n viewportHeight: window.document.documentElement.clientHeight\n };\n}\n\n/*\n * Scroll controller factory\n */\n\n/**\n * Initialize and return a scroll controller.\n *\n * @private\n * @param {scrollConfig} config\n * @return {{tick: function, destroy: function}}\n */\nexport function getController (config) {\n const _config = defaultTo(config, DEFAULTS);\n const root = _config.root;\n const horizontal = _config.horizontal;\n const scenesByElement = new WeakMap();\n let viewportSize = getViewportSize(root, horizontal);\n\n let lastP;\n let viewportObserver, rangesResizeObserver, viewportResizeHandler, scrollportResizeObserver;\n const rangesToObserve = [];\n const absoluteOffsetContext = getAbsoluteOffsetContext()\n\n /*\n * Prepare scenes data.\n */\n _config.scenes = Object.values(\n // TODO(ameerf): find a polyfill and use groupBy instead of following reduce\n config.scenes.reduce((acc, scene, index) => {\n const key = scene.groupId ? `group-${scene.groupId}` : String(index);\n if (acc[key]) {\n acc[key].push(scene)\n } else {\n acc[key] = [scene];\n }\n return acc;\n },\n {})\n ).flatMap(sceneGroup => {\n if (sceneGroup.every(scene => (scene.viewSource && (typeof scene.duration === 'string' || scene.start?.name)))) {\n sceneGroup = getTransformedSceneGroup(sceneGroup, root, viewportSize, horizontal, absoluteOffsetContext);\n if (_config.observeSourcesResize || _config.observeContentResize) {\n rangesToObserve.push(sceneGroup);\n }\n } else {\n sceneGroup.forEach(scene => {\n if (scene.end == null) {\n scene.end = scene.start + scene.duration;\n }\n if (scene.duration == null) {\n scene.duration = scene.end - scene.start;\n }\n });\n }\n\n return sceneGroup;\n });\n _config.scenes.forEach((scene, index) => {scene.index = index;});\n\n if (rangesToObserve.length) {\n const targetToSceneGroup = new Map();\n\n if (window.ResizeObserver) {\n /*\n * Observe resize of view-timeline subjects.\n */\n rangesResizeObserver = new window.ResizeObserver(function (entries) {\n entries.forEach(entry => {\n const sceneGroup = targetToSceneGroup.get(entry.target);\n // TODO: try to optimize by using `const {blockSize, inlineSize} = entry.borderBoxSize[0]`\n const transformedSceneGroup = getTransformedSceneGroup(sceneGroup, root, viewportSize, horizontal, absoluteOffsetContext);\n transformedSceneGroup.forEach((scene, localIndex) => {_config.scenes[scene.index] = transformedSceneGroup[localIndex];});\n // replace the old object from the cache with the new one\n rangesToObserve.splice(rangesToObserve.indexOf(sceneGroup), 1, transformedSceneGroup);\n });\n });\n\n rangesToObserve.forEach(sceneGroup => {\n rangesResizeObserver.observe(sceneGroup[0].viewSource, {box: 'border-box'});\n targetToSceneGroup.set(sceneGroup[0].viewSource, sceneGroup);\n });\n\n /*\n * Observe resize of content root.\n */\n if (_config.observeContentResize && _config.contentRoot) {\n const contentResizeObserver = new window.ResizeObserver(debounce(() => {\n const newRanges = rangesToObserve.map(sceneGroup => {\n const newSceneGroup = getTransformedSceneGroup(sceneGroup, root, viewportSize, horizontal, absoluteOffsetContext);\n newSceneGroup.forEach((scene, localIndex) => {_config.scenes[scene.index] = newSceneGroup[localIndex];});\n\n return newSceneGroup;\n });\n\n // reset cache\n rangesToObserve.length = 0;\n rangesToObserve.push(...newRanges);\n rangesToObserve.forEach(sceneGroup => {\n targetToSceneGroup.set(sceneGroup[0].viewSource, sceneGroup);\n });\n }, VIEWPORT_RESIZE_INTERVAL));\n\n contentResizeObserver.observe(_config.contentRoot, {box: 'border-box'});\n }\n }\n\n if (_config.observeViewportResize) {\n viewportResizeHandler = debounce(function () {\n viewportSize = getViewportSize(root, horizontal);\n\n const newRanges = rangesToObserve.map(sceneGroup => {\n const newSceneGroup = getTransformedSceneGroup(sceneGroup, root, viewportSize, horizontal, absoluteOffsetContext);\n newSceneGroup.forEach((scene, localIndex) => {_config.scenes[scene.index] = newSceneGroup[localIndex];});\n\n return newSceneGroup;\n });\n\n // reset cache\n rangesToObserve.length = 0;\n rangesToObserve.push(...newRanges);\n rangesToObserve.forEach(sceneGroup => {\n targetToSceneGroup.set(sceneGroup[0].viewSource, sceneGroup);\n });\n }, VIEWPORT_RESIZE_INTERVAL);\n\n if (root === window) {\n window.addEventListener('resize', viewportResizeHandler);\n }\n else if (window.ResizeObserver) {\n scrollportResizeObserver = new window.ResizeObserver(viewportResizeHandler);\n scrollportResizeObserver.observe(root, {box: 'border-box'});\n }\n }\n }\n\n /*\n * Observe entry and exit of scenes into view\n */\n if (_config.observeViewportEntry && window.IntersectionObserver) {\n viewportObserver = new window.IntersectionObserver(function (intersections) {\n intersections.forEach(intersection => {\n (scenesByElement.get(intersection.target) || []).forEach(scene => {\n scene.disabled = !intersection.isIntersecting;\n });\n });\n }, {\n root: root === window ? window.document : root,\n rootMargin: _config.viewportRootMargin,\n threshold: 0\n });\n\n _config.scenes.forEach(scene => {\n if (scene.viewSource) {\n let scenesArray = scenesByElement.get(scene.viewSource);\n\n if (!scenesArray) {\n scenesArray = [];\n scenesByElement.set(scene.viewSource, scenesArray);\n\n viewportObserver.observe(scene.viewSource);\n }\n\n scenesArray.push(scene);\n }\n });\n }\n\n /**\n * Updates progress in all scene effects.\n *\n * @private\n * @param {Object} progress\n * @param {number} progress.p\n * @param {number} progress.vp\n */\n function tick ({p, vp}) {\n p = +p.toFixed(1);\n\n const velocity = +vp.toFixed(4);\n\n // if nothing changed bail out\n if (p === lastP) return;\n\n /*\n * Perform scene progression.\n */\n for (let scene of _config.scenes) {\n // if active\n if (!scene.disabled) {\n const {start, end, duration} = scene;\n // calculate scene's progress\n const progress = calcProgress(p, start, end, duration);\n\n // run effect\n scene.effect(scene, progress, velocity);\n }\n }\n\n // cache last position\n lastP = p;\n }\n\n /**\n * Removes all side effects and deletes all objects.\n */\n function destroy () {\n _config.scenes.forEach(scene => scene.destroy?.());\n\n if (viewportObserver) {\n viewportObserver.disconnect();\n viewportObserver = null;\n }\n\n if (rangesResizeObserver) {\n rangesResizeObserver.disconnect();\n rangesResizeObserver = null;\n }\n\n if (viewportResizeHandler) {\n if (scrollportResizeObserver) {\n scrollportResizeObserver.disconnect();\n scrollportResizeObserver = null;\n }\n else {\n window.removeEventListener('resize', viewportResizeHandler);\n }\n }\n }\n\n /**\n * Scroll controller.\n */\n return {\n tick,\n destroy\n };\n}\n","import { getController } from './controller.js';\nimport { defaultTo, frameThrottle, lerp } from './utilities.js';\n\n/**\n * @private\n */\nconst DEFAULTS = {\n transitionActive: false,\n transitionFriction: 0.9,\n transitionEpsilon: 1,\n velocityActive: false,\n velocityMax: 1\n};\n\n/**\n * @class Scroll\n * @param {scrollConfig} config\n *\n * @example\n * import { Scroll } from 'fizban';\n *\n * const scroll = new Scroll({\n * scenes: [...]\n * });\n * scroll.start();\n */\nexport class Scroll {\n constructor (config = {}) {\n this.config = defaultTo(config, DEFAULTS);\n\n this.progress = {\n p: 0,\n prevP: 0,\n vp: 0\n };\n this.currentProgress = {\n p: 0,\n prevP: 0,\n vp: 0\n };\n\n this._lerpFrameId = 0;\n this.effect = null;\n const isDocumentRoot = (!this.config.root || this.config.root === window.document.body);\n // if no root or root is document.body then use window\n this.config.root = isDocumentRoot ? window : this.config.root;\n this.config.contentRoot = this.config.contentRoot || (isDocumentRoot ? window.document.body : this.config.root.firstElementChild);\n this.config.resetProgress = this.config.resetProgress || this.resetProgress.bind(this);\n\n this._measure = this.config.measure || (() => {\n const root = this.config.root;\n // get current scroll position from window or element\n this.progress.p = this.config.horizontal\n ? root.scrollX || root.scrollLeft || 0\n : root.scrollY || root.scrollTop || 0;\n });\n\n this._trigger = frameThrottle(() => {\n this._measure?.();\n this.tick(true);\n });\n }\n\n /**\n * Setup event and effect, and reset progress and frame.\n */\n start () {\n this.setupEffect();\n this.setupEvent();\n this.resetProgress();\n this.tick();\n }\n\n /**\n * Removes event listener.\n */\n pause () {\n this.removeEvent();\n }\n\n /**\n * Reset progress in the DOM and inner state to given x and y.\n *\n * @param {Object} [scrollPosition]\n * @param {number} [scrollPosition.x]\n * @param {number} [scrollPosition.y]\n */\n resetProgress (scrollPosition = {}) {\n // get current scroll position (support window, element)\n const root = this.config.root;\n const x = scrollPosition.x || scrollPosition.x === 0 ? scrollPosition.x : root.scrollX || root.scrollLeft || 0;\n const y = scrollPosition.y || scrollPosition.y === 0 ? scrollPosition.y : root.scrollY || root.scrollTop || 0;\n const p = this.config.horizontal ? x : y;\n this.progress.p = p;\n this.progress.prevP = p;\n this.progress.vp = 0;\n\n if ( this.config.transitionActive ) {\n this.currentProgress.p = p;\n this.currentProgress.prevP = p;\n this.currentProgress.vp = 0;\n }\n\n if (scrollPosition) {\n this.config.root.scrollTo(x, y);\n }\n }\n\n /**\n * Handle animation frame work.\n *\n * @param {boolean} [clearLerpFrame] whether to cancel an existing lerp frame\n */\n tick (clearLerpFrame) {\n const hasLerp = this.config.transitionActive;\n\n // if transition is active interpolate to next point\n if (hasLerp) {\n this.lerp();\n }\n\n // choose the object we iterate on\n const progress = hasLerp ? this.currentProgress : this.progress;\n\n if (this.config.velocityActive) {\n const dp = progress.p - progress.prevP;\n const factorP = dp < 0 ? -1 : 1;\n progress.vp = Math.min(this.config.velocityMax, Math.abs(dp)) / this.config.velocityMax * factorP;\n }\n\n // update effect\n this.effect.tick(progress);\n\n if (hasLerp && (progress.p !== this.progress.p)) {\n if (clearLerpFrame && this._lerpFrameId) {\n window.cancelAnimationFrame(this._lerpFrameId);\n }\n\n this._lerpFrameId = window.requestAnimationFrame(() => this.tick());\n }\n\n progress.prevP = progress.p;\n }\n\n /**\n * Calculate current progress.\n */\n lerp () {\n this.currentProgress.p = lerp(this.currentProgress.p, this.progress.p, +(1 - this.config.transitionFriction).toFixed(3), this.config.transitionEpsilon);\n }\n\n /**\n * Stop the event and effect, and remove all DOM side-effects.\n */\n destroy () {\n this.pause();\n this.removeEffect();\n }\n\n /**\n * Register to scroll for triggering update.\n */\n setupEvent () {\n this.removeEvent();\n this.config.root.addEventListener('scroll', this._trigger);\n }\n\n /**\n * Remove scroll handler.\n */\n removeEvent () {\n this.config.root.removeEventListener('scroll', this._trigger);\n }\n\n /**\n * Reset registered effect.\n */\n setupEffect () {\n this.removeEffect();\n this.effect = getController(this.config);\n }\n\n /**\n * Remove registered effect.\n */\n removeEffect () {\n this.effect && this.effect.destroy();\n this.effect = null;\n }\n}\n\n/**\n * @typedef {object} scrollConfig\n * @property {ScrollScene[]} scenes list of effect scenes to perform during scroll.\n * @property {boolean} [horizontal] whether to use the horizontal axis. Defaults to `false`.\n * @property {boolean} [transitionActive] whether to animate effect progress.\n * @property {number} [transitionFriction] between 0 to 1, amount of friction effect in the transition. 1 being no movement and 0 as no friction. Defaults to 0.4.\n * @property {boolean} [velocityActive] whether to calculate velocity with progress.\n * @property {number} [velocityMax] max possible value for velocity. Velocity value will be normalized according to this number, so it is kept between 0 and 1. Defaults to 1.\n * @property {boolean} [observeViewportEntry] whether to observe entry/exit of scenes into viewport for disabling/enabling them. Defaults to `true`.\n * @property {boolean} [viewportRootMargin] `rootMargin` option to be used for viewport observation. Defaults to `'7% 7%'`.\n * @property {boolean} [observeViewportResize] whether to observe resize of the layout viewport. Defaults to `false`.\n * @property {boolean} [observeSourcesResize] whether to observe resize of view-timeline source elements. Defaults to `false`.\n * @property {boolean} [observeContentResize] whether to observe resize of content root of the scroll container. Defaults to `false`.\n * @property {Element|Window} [root] the scrollable element, defaults to window.\n * @property {Element} [contentRoot] the root element for the content, defaults to first child of root or body element.\n */\n\n/**\n * @typedef {Object} ScrollScene\n * @desc A configuration object for a scene. Must be provided an effect function, and either a start and end, a start and duration, or a duration as RangeName.\n * @example { effects: (scene, p) => { animation.currentTime = p; }, duration: 'contain' }\n * @property {EffectCallback} effect the effect to perform.\n * @property {number|RangeOffset} start scroll position in pixels where effect starts.\n * @property {number|RangeName} [duration] duration of effect in pixels. Defaults to end - start.\n * @property {number|RangeOffset} [end] scroll position in pixels where effect ends. Defaults to start + duration.\n * @property {boolean} [disabled] whether to perform updates on the scene. Defaults to false.\n * @property {Element} [viewSource] an element to be used for observing intersection with viewport for disabling/enabling the scene, or the source of a ViewTimeline if scene start/end are provided as ranges.\n * @property {function} [destroy] a function clean up the scene when it's controller is destroyed.\n * @property {string} [groupId] a string id for a group of scenes sharing same viewSource and part of the same overall animation\n */\n\n/**\n * @typedef {function(scene: ScrollScene, progress: number, velocity: number): void} EffectCallback\n * @param {ScrollScene} scene\n * @param {number} progress\n * @param {number} velocity\n */\n\n/**\n * @typedef {'entry' | 'contain' | 'exit' | 'cover' | 'entry-crossing' | 'exit-crossing'} RangeName\n */\n\n/**\n * @typedef {Object} RangeOffset\n * @property {RangeName} name\n * @property {number} offset\n * @property {CSSUnitValue} [add]\n */\n\n/**\n * @typedef {Object} CSSUnitValue\n * @property {number} value\n * @property {'px'|'vh'|'vw'} unit\n */\n\n/**\n * @typedef {Object} AbsoluteOffsetContext\n * @property {number} viewportWidth\n * @property {number} viewportHeight\n */\n","import type { AnimationGroup, ScrubScrollScene } from '@wix/motion';\nimport { getWebAnimation, getScrubScene } from '@wix/motion';\nimport { Scroll } from 'fizban';\nimport type { ViewEnterParams, ScrubEffect, HandlerObjectMap, InteractOptions } from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst scrollManagerMap = new WeakMap() as HandlerObjectMap;\nlet scrollOptionsGetter: () => Partial<scrollConfig> = () => ({});\n\nfunction registerOptionsGetter(getter: () => Partial<scrollConfig>) {\n scrollOptionsGetter = getter;\n}\n\nfunction addViewProgressHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: ScrubEffect,\n __: ViewEnterParams,\n { reducedMotion }: InteractOptions,\n): void {\n if (reducedMotion) {\n return;\n }\n\n const triggerParams = {\n trigger: 'view-progress' as const,\n element: source,\n };\n\n const effectOptions = effectToAnimationOptions(effect);\n let cleanup;\n if ('ViewTimeline' in window) {\n // Use ViewTimeline for modern browsers\n const animationGroup = getWebAnimation(\n target,\n effectOptions,\n triggerParams,\n );\n\n if (animationGroup) {\n animationGroup.play();\n\n cleanup = () => {\n (animationGroup as AnimationGroup).ready.then(() => {\n animationGroup.cancel();\n });\n };\n }\n } else {\n const scene = getScrubScene(target, effectOptions, triggerParams);\n\n if (scene) {\n const scenes = Array.isArray(scene) ? scene : [scene];\n const scroll = new Scroll({\n viewSource: source,\n scenes,\n observeViewportEntry: false,\n observeViewportResize: false,\n observeSourcesResize: true,\n root: document.body,\n ...scrollOptionsGetter(),\n });\n\n cleanup = () => {\n scroll.destroy();\n };\n\n Promise.all(\n (scenes as ScrubScrollScene[]).map((s) => s.ready || Promise.resolve()),\n ).then(() => {\n scroll.start();\n });\n }\n }\n\n if(!cleanup) return;\n \n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(scrollManagerMap, source, handlerObj);\n addHandlerToMap(scrollManagerMap, target, handlerObj);\n}\n\nfunction removeViewProgressHandler(element: HTMLElement): void {\n removeElementFromHandlerMap(scrollManagerMap, element);\n}\n\nexport default {\n add: addViewProgressHandler,\n remove: removeViewProgressHandler,\n registerOptionsGetter,\n};\n","import type { AnimationGroup } from '@wix/motion';\nimport { getAnimation } from '@wix/motion';\nimport type {\n TimeEffect,\n TransitionEffect,\n StateParams,\n HandlerObjectMap,\n PointerTriggerParams,\n EffectBase,\n IInteractionController,\n InteractOptions,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst handlerMap = new WeakMap() as HandlerObjectMap;\n\nfunction createTimeEffectHandler(\n element: HTMLElement,\n effect: TimeEffect & EffectBase,\n options: PointerTriggerParams,\n reducedMotion: boolean = false,\n selectorCondition?: string,\n) {\n const animation = getAnimation(\n element,\n effectToAnimationOptions(effect),\n undefined,\n reducedMotion,\n ) as AnimationGroup;\n const type = options.type || 'alternate';\n let initialPlay = true;\n\n return (event: MouseEvent | FocusEvent) => {\n if (selectorCondition && !element.matches(selectorCondition)) return;\n if (event.type === 'mouseenter' || event.type === 'focusin') {\n if (type === 'alternate') {\n if (initialPlay) {\n initialPlay = false;\n animation.play();\n } else {\n animation.reverse();\n }\n } else if (type === 'state') {\n if (animation.playState !== 'finished') {\n // 'idle' OR 'paused'\n animation.play();\n }\n } else {\n // type === 'repeat'\n // type === 'once'\n animation.progress(0);\n\n if (animation.isCSS) {\n animation.onFinish(() => {\n element.dataset.motionEnter = 'done';\n });\n }\n\n animation.play();\n }\n } else if (event.type === 'mouseleave' || event.type === 'focusout') {\n if (type === 'alternate') {\n animation.reverse();\n } else if (type === 'repeat') {\n animation.cancel();\n delete element.dataset.motionEnter;\n } else if (type === 'state') {\n if (animation.playState === 'running') {\n animation.pause();\n }\n }\n }\n };\n}\n\nfunction createTransitionHandler(\n element: HTMLElement,\n targetController: IInteractionController,\n {\n effectId,\n listContainer,\n listItemSelector,\n }: TransitionEffect & EffectBase & { effectId: string },\n options: StateParams,\n selectorCondition?: string,\n) {\n const method = options.method || 'toggle';\n const isToggle = method === 'toggle';\n const shouldSetStateOnElement = !!listContainer;\n\n return (event: MouseEvent | FocusEvent) => {\n if (selectorCondition && !element.matches(selectorCondition)) return;\n let item;\n if (shouldSetStateOnElement) {\n item = element.closest(\n `${listContainer} > ${listItemSelector || ''}:has(:scope)`,\n ) as HTMLElement | null;\n }\n\n if (event.type === 'mouseenter' || event.type === 'focusin') {\n const method_ = isToggle ? 'add' : method;\n targetController.toggleEffect(effectId, method_, item);\n } else if ((event.type === 'mouseleave' || event.type === 'focusout') && isToggle) {\n targetController.toggleEffect(effectId, 'remove', item);\n }\n };\n}\n\nfunction addHoverHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: (TransitionEffect | TimeEffect) & EffectBase,\n options: StateParams | PointerTriggerParams = {},\n { reducedMotion, targetController, selectorCondition, allowA11yTriggers }: InteractOptions,\n) {\n let handler: (event: MouseEvent | FocusEvent) => void;\n let isStateTrigger = false;\n let once = false;\n\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n handler = createTransitionHandler(\n target,\n targetController!,\n effect as TransitionEffect & EffectBase & { effectId: string },\n options as StateParams,\n selectorCondition,\n );\n isStateTrigger = true;\n } else {\n handler = createTimeEffectHandler(\n target,\n effect as TimeEffect & EffectBase,\n options as PointerTriggerParams,\n reducedMotion,\n selectorCondition,\n );\n once = (options as PointerTriggerParams).type === 'once';\n }\n\n const cleanup = () => {\n source.removeEventListener('mouseenter', handler);\n source.removeEventListener('mouseleave', handler);\n if (allowA11yTriggers) {\n source.removeEventListener('focusin', handler);\n source.removeEventListener('focusout', handler);\n }\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(handlerMap, source, handlerObj);\n addHandlerToMap(handlerMap, target, handlerObj);\n\n if (allowA11yTriggers) {\n source.tabIndex = 0;\n source.addEventListener(\n 'focusin',\n (event) => {\n if (!source.contains(event.relatedTarget as HTMLElement)) {\n handler(event);\n }\n },\n { once },\n );\n }\n\n source.addEventListener('mouseenter', handler, { passive: true, once });\n\n const addLeave = isStateTrigger\n ? ((options as StateParams).method || 'toggle') === 'toggle'\n : (options as PointerTriggerParams).type !== 'once';\n if (addLeave) {\n source.addEventListener('mouseleave', handler, { passive: true });\n\n if (allowA11yTriggers) {\n source.addEventListener(\n 'focusout',\n (event) => {\n if (!source.contains(event.relatedTarget as HTMLElement)) {\n handler(event);\n }\n },\n { once },\n );\n }\n }\n}\n\nfunction removeHoverHandler(element: HTMLElement) {\n removeElementFromHandlerMap(handlerMap, element);\n}\n\nexport default {\n add: addHoverHandler,\n remove: removeHoverHandler,\n};\n","import { getAnimation } from '@wix/motion';\nimport type { AnimationGroup } from '@wix/motion';\nimport type {\n TimeEffect,\n TransitionEffect,\n StateParams,\n HandlerObjectMap,\n PointerTriggerParams,\n EffectBase,\n IInteractionController,\n InteractOptions,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst handlerMap = new WeakMap() as HandlerObjectMap;\n\nfunction createTimeEffectHandler(\n element: HTMLElement,\n effect: TimeEffect & EffectBase,\n options: PointerTriggerParams,\n reducedMotion: boolean = false,\n selectorCondition?: string,\n) {\n const animation = getAnimation(\n element,\n effectToAnimationOptions(effect),\n undefined,\n reducedMotion,\n ) as AnimationGroup;\n let initialPlay = true;\n const type = options.type || 'alternate';\n\n return (__: MouseEvent | KeyboardEvent) => {\n if (selectorCondition && !element.matches(selectorCondition)) return;\n if (type === 'alternate') {\n if (initialPlay) {\n initialPlay = false;\n animation.play();\n } else {\n animation.reverse();\n }\n } else if (type === 'state') {\n if (initialPlay) {\n initialPlay = false;\n animation.play();\n } else {\n if (animation.playState === 'running') {\n animation.pause();\n } else if (animation.playState !== 'finished') {\n // 'idle' OR 'paused'\n animation.play();\n }\n }\n } else {\n // type === 'repeat'\n // type === 'once'\n animation.progress(0);\n\n if (animation.isCSS) {\n animation.onFinish(() => {\n element.dataset.motionEnter = 'done';\n });\n }\n\n animation.play();\n }\n };\n}\n\nfunction createTransitionHandler(\n element: HTMLElement,\n targetController: IInteractionController,\n {\n effectId,\n listContainer,\n listItemSelector,\n }: TransitionEffect & EffectBase & { effectId: string },\n options: StateParams,\n selectorCondition?: string,\n) {\n const shouldSetStateOnElement = !!listContainer;\n\n return (__: MouseEvent | KeyboardEvent) => {\n if (selectorCondition && !element.matches(selectorCondition)) return;\n let item;\n if (shouldSetStateOnElement) {\n item = element.closest(\n `${listContainer} > ${listItemSelector || ''}:has(:scope)`,\n ) as HTMLElement | null;\n }\n\n targetController.toggleEffect(effectId, options.method || 'toggle', item);\n };\n}\n\nfunction addClickHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: (TimeEffect | TransitionEffect) & EffectBase,\n options: StateParams | PointerTriggerParams = {} as StateParams,\n { reducedMotion, targetController, selectorCondition, allowA11yTriggers }: InteractOptions,\n) {\n let handler: (event: MouseEvent | KeyboardEvent) => void;\n let once = false;\n\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n handler = createTransitionHandler(\n target,\n targetController!,\n effect as TransitionEffect & EffectBase & { effectId: string },\n options as StateParams,\n selectorCondition,\n );\n } else {\n handler = createTimeEffectHandler(\n target,\n effect as TimeEffect & EffectBase,\n options as PointerTriggerParams,\n reducedMotion,\n selectorCondition,\n );\n once = (options as PointerTriggerParams).type === 'once';\n }\n\n const cleanup = () => {\n source.removeEventListener('click', handler);\n if (allowA11yTriggers) {\n source.removeEventListener('keydown', handler);\n }\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(handlerMap, source, handlerObj);\n addHandlerToMap(handlerMap, target, handlerObj);\n\n source.addEventListener(\n 'click',\n (e) => {\n if ((e as PointerEvent).pointerType) {\n handler(e);\n }\n },\n { passive: true, once },\n );\n\n if (allowA11yTriggers) {\n source.tabIndex = 0;\n\n source.addEventListener(\n 'keydown',\n (event: KeyboardEvent) => {\n if (event.code === 'Space') {\n event.preventDefault();\n handler(event);\n } else if (event.code === 'Enter') {\n handler(event);\n }\n },\n { once },\n );\n }\n}\n\nfunction removeClickHandler(element: HTMLElement) {\n removeElementFromHandlerMap(handlerMap, element);\n}\n\nexport default {\n add: addClickHandler,\n remove: removeClickHandler,\n};\n","/**\n * Clamps a value between limits.\n *\n * @private\n * @param {number} min lower limit\n * @param {number} max upper limit\n * @param {number} value value to clamp\n * @return {number} clamped value\n *\n * @example\n * const x = clamp(0, 1, 1.5); // returns 1\n */\nfunction clamp (min, max, value) {\n return Math.min(Math.max(min, value), max);\n}\n\n/**\n * Throttle a function to trigger once per animation frame.\n * Keeps the arguments from last call, even if that call gets ignored.\n *\n * @private\n * @param {function} fn function to throttle\n * @return {(function(): number)} a function that will trigger the throttled function on next animation frame,\n * returns the requestAnimationFrame id, so it can be cancelled\n */\nfunction frameThrottle (fn) {\n let throttled = false;\n\n return function () {\n if (!throttled) {\n throttled = true;\n\n return window.requestAnimationFrame(() => {\n throttled = false;\n fn();\n });\n }\n };\n}\n\n/**\n * Returns an object containing the layout properties (left, top, width, and height) of the given element.\n *\n * @private\n * @param {HTMLElement} element\n * @returns {{top: number, left: number, width: number, height: number}}\n */\nfunction getRect (element) {\n let el = element;\n let left = 0;\n let top = 0;\n\n if (el.offsetParent) {\n do {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n } while (el);\n }\n\n return {\n left,\n top,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}\n\n/**\n * @see https://issues.chromium.org/issues/40887601?pli=1\n */\nfunction testPointerOffsetDprBug () {\n const DPR = window.devicePixelRatio;\n let fixRequired = false;\n\n if (DPR === 1) {\n // we can immediately return here, not required to fix\n return false;\n }\n\n document.body.addEventListener('pointerdown', (e) => {\n fixRequired = e.offsetX !== 10;\n }, { once: true });\n\n const event = new PointerEvent('pointerdown', {\n clientX: 10\n });\n\n document.body.dispatchEvent(event);\n\n return fixRequired;\n}\n\nfunction testPointerOffsetScrollBug () {\n return new Promise((resolve) => {\n const startY = window.scrollY;\n let fixRequired = false;\n let currentY;\n\n function sampleOffsetY () {\n document.body.addEventListener('pointerdown', (e) => {\n if (currentY === undefined) {\n currentY = e.offsetY;\n } else {\n // when dispatching on BODY in different scroll it gives the same offsetY value only on WebKit\n fixRequired = e.offsetY === currentY;\n }\n }, { once: true });\n\n const event = new PointerEvent('pointerdown', {\n clientY: 500\n });\n\n document.body.dispatchEvent(event);\n }\n\n function scrollHandler () {\n if (window.scrollY !== startY) {\n window.removeEventListener('scroll', scrollHandler);\n sampleOffsetY();\n resolve(fixRequired);\n }\n }\n\n sampleOffsetY();\n\n window.addEventListener('scroll', scrollHandler);\n\n if (window.scrollY > 0) {\n window.scrollBy(0, -1);\n }\n });\n}\n\n/**\n * @see https://bugs.webkit.org/show_bug.cgi?id=287799\n */\nfunction testScrollOffsetsForWebKitPointerBug (scrollOffsets) {\n testPointerOffsetScrollBug().then((fixRequired) => {\n scrollOffsets.fixRequired = fixRequired;\n\n if (fixRequired) {\n window.addEventListener('scroll', scrollOffsets.scrollHandler);\n scrollOffsets.scrollHandler();\n }\n });\n}\n\nexport {\n getRect,\n clamp,\n frameThrottle,\n testPointerOffsetDprBug,\n testScrollOffsetsForWebKitPointerBug\n};\n","let listeners = 0;\nconst pointers = new Set();\n\nfunction initScrollendPolyfill () {\n const touchStartHandler = e => {\n for (let touch of e.changedTouches) {\n pointers.add(touch.identifier);\n }\n };\n const touchEndHandler = e => {\n for (let touch of e.changedTouches) {\n pointers.delete(touch.identifier);\n }\n };\n // Track if any pointer is active\n document.addEventListener('touchstart', touchStartHandler, {passive: true});\n document.addEventListener('touchend', touchEndHandler, {passive: true});\n\n return function () {\n pointers.clear();\n document.removeEventListener('touchstart', touchStartHandler);\n document.removeEventListener('touchend', touchEndHandler);\n };\n}\n\nexport function addScrollendListener (target, listener) {\n if ('onscrollend' in window) {\n target.addEventListener('scrollend', listener);\n\n return function () {\n target.removeEventListener('scrollend', listener);\n };\n }\n\n let timeout = 0;\n let removeScrollendPolyfill;\n\n if (!listeners) {\n removeScrollendPolyfill = initScrollendPolyfill();\n }\n\n listeners += 1;\n\n function scrollListener (evt) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n if (pointers.size) {\n // if pointer(s) are down, wait longer\n setTimeout(scrollListener, 100);\n }\n else {\n // dispatch\n listener(evt);\n timeout = 0;\n }\n }, 100);\n }\n\n target.addEventListener('scroll', scrollListener);\n\n return function () {\n target.removeEventListener('scroll', scrollListener);\n listeners -= 1;\n\n if (!listeners) {\n removeScrollendPolyfill();\n }\n };\n}\n","import { getRect, clamp } from './utilities.js';\nimport { addScrollendListener } from './scrollend.js';\n\n/**\n * Return new progress for {x, y} for the farthest-side formula (\"cover\").\n *\n * @param {Object} target\n * @param {number} target.left\n * @param {number} target.top\n * @param {number} target.width\n * @param {number} target.height\n * @param {Object} root\n * @param {number} root.width\n * @param {number} root.height\n * @param {{x: number, y: number}} scrollPosition\n * @returns {{x: (x: number) => number, y: (y: number) => number}}\n */\nfunction centerToTargetFactory (target, root, scrollPosition) {\n // we store reference to the arguments and do all calculation on the fly\n // so that target dims, scroll position, and root dims are always up-to-date\n return {\n x (x1) {\n const layerCenterX = target.left - scrollPosition.x + target.width / 2;\n const isXStartFarthest = layerCenterX >= root.width / 2;\n\n const xDuration = (isXStartFarthest ? layerCenterX : root.width - layerCenterX) * 2;\n const x0 = isXStartFarthest ? 0 : layerCenterX - xDuration / 2;\n\n return (x1 - x0) / xDuration;\n },\n y (y1) {\n const layerCenterY = target.top - scrollPosition.y + target.height / 2;\n const isYStartFarthest = layerCenterY >= root.height / 2;\n\n const yDuration = (isYStartFarthest ? layerCenterY : root.height - layerCenterY) * 2;\n const y0 = isYStartFarthest ? 0 : layerCenterY - yDuration / 2;\n\n return (y1 - y0) / yDuration;\n }\n };\n}\n\n/**\n * Updates scroll position on scrollend.\n * Used when root is entire viewport and centeredOnTarget=true.\n */\nfunction scrollendCallback (tick, lastProgress) {\n this.x = window.scrollX;\n this.y = window.scrollY;\n\n requestAnimationFrame(() => tick && tick(lastProgress));\n}\n\n/**\n * Update root rect when root is entire viewport.\n *\n * @param {PointerConfig} config\n */\nfunction windowResize (config) {\n config.rect.width = window.document.documentElement.clientWidth;\n config.rect.height = window.document.documentElement.clientHeight;\n}\n\n/**\n * Observe and update root rect when root is an element.\n *\n * @param {PointerConfig} config\n * @returns {ResizeObserver}\n */\nfunction observeRootResize (config) {\n const observer = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n config.rect.width = entry.borderBoxSize[0].inlineSize;\n config.rect.height = entry.borderBoxSize[0].blockSize;\n });\n });\n\n observer.observe(config.root, { box: 'border-box' });\n\n return observer;\n}\n\n/**\n * Initialize and return a pointer controller.\n *\n * @private\n * @param {PointerConfig} config\n * @return {{tick: function, destroy: function}}\n */\nexport function getController (config) {\n let hasCenteredToTarget = false;\n let lastProgress = {x: config.rect.width / 2, y: config.rect.height / 2, vx: 0, vy: 0};\n let tick, resizeObserver, windowResizeHandler, scrollendHandler, removeScrollendListener;\n\n const scrollPosition = {x: 0, y: 0};\n\n /*\n * Prepare scenes data.\n */\n config.scenes.forEach((scene) => {\n if (scene.target && scene.centeredToTarget) {\n scene.transform = centerToTargetFactory(getRect(scene.target), config.rect, scrollPosition);\n\n hasCenteredToTarget = true;\n }\n\n if (config.root) {\n resizeObserver = observeRootResize(config);\n }\n else {\n windowResizeHandler = windowResize.bind(null, config);\n window.addEventListener('resize', windowResizeHandler);\n }\n });\n\n /**\n * Updates progress in all scene effects.\n *\n * @private\n * @param {Object} progress\n * @param {number} progress.x\n * @param {number} progress.y\n * @param {number} progress.vx\n * @param {number} progress.vy\n */\n tick = function (progress) {\n for (let scene of config.scenes) {\n if (!scene.disabled) {\n // get scene's progress\n const normalizedX = scene.transform?.x(progress.x) || progress.x / config.rect.width;\n const normalizedY = scene.transform?.y(progress.y) || progress.y / config.rect.height;\n\n const x = +clamp(0, 1, normalizedX).toPrecision(4);\n const y = +clamp(0, 1, normalizedY).toPrecision(4);\n\n const velocity = {x: progress.vx, y: progress.vy};\n\n if (config.allowActiveEvent) {\n progress.active = (normalizedX <= 1 && normalizedY <= 1 && normalizedX >= 0 && normalizedY >= 0);\n }\n\n // run effect\n scene.effect(scene, {x, y}, velocity, progress.active);\n }\n }\n\n Object.assign(lastProgress, progress);\n }\n\n if (hasCenteredToTarget) {\n scrollendHandler = scrollendCallback.bind(scrollPosition, tick, lastProgress)\n removeScrollendListener = addScrollendListener(document, scrollendHandler);\n }\n\n /**\n * Removes all side effects and deletes all objects.\n */\n function destroy () {\n config.scenes.forEach(scene => scene.destroy?.());\n\n removeScrollendListener?.();\n\n if (resizeObserver) {\n resizeObserver.disconnect();\n resizeObserver = null;\n }\n else {\n window.removeEventListener('resize', windowResizeHandler);\n windowResizeHandler = null;\n }\n\n tick = null;\n lastProgress = null;\n }\n\n /**\n * Mouse controller.\n */\n return {\n tick,\n destroy\n };\n}\n","import { getController } from './controller.js';\nimport { frameThrottle, testPointerOffsetDprBug, testScrollOffsetsForWebKitPointerBug } from './utilities.js';\n\nconst MOVEMENT_RESET_DELAY = 1e3 / 60 * 3; // == 50 (3 frames in 60fps)\nlet shouldFixSynthPointer;\n\nfunction scrollHandler () {\n scrollOffsets.x = window.scrollX;\n scrollOffsets.y = window.scrollY;\n}\nconst scrollOffsets = { x: 0, y: 0, scrollHandler, fixRequired: undefined };\n\n/**\n * @class Pointer\n * @param {PointerConfig} config\n *\n * @example\n * import { Pointer } from 'kuliso';\n *\n * const pointer = new Pointer({\n * scenes: [...]\n * });\n *\n * pointer.start();\n */\nexport class Pointer {\n constructor (config = {}) {\n this.config = { ...config };\n\n this.effect = null;\n this._nextTick = null;\n this._nextTransitionTick = null;\n this._startTime = 0;\n\n let trigger;\n\n if (this.config.transitionDuration) {\n trigger = this.config.noThrottle\n ? () => this.transition()\n : frameThrottle(() => this.transition());\n }\n else {\n trigger = this.config.noThrottle\n ? () => {\n this.tick();\n return null;\n }\n : frameThrottle(() => {\n this.tick();\n });\n }\n\n // in no root then use the viewport's size\n this.config.rect = this.config.root\n ? {\n width: this.config.root.offsetWidth,\n height: this.config.root.offsetHeight\n }\n : {\n width: window.document.documentElement.clientWidth,\n height: window.document.documentElement.clientHeight\n };\n\n\n this.progress = {\n x: this.config.rect.width / 2,\n y: this.config.rect.height / 2,\n vx: 0,\n vy: 0\n };\n this.previousProgress = { ...this.progress };\n this.currentProgress = null;\n\n const _measure = (event) => {\n const newX = this.config.root ? event.offsetX : event.x;\n const newY = this.config.root ? event.offsetY : event.y;\n this.progress.vx = newX - this.progress.x;\n this.progress.vy = newY - this.progress.y;\n this.progress.x = newX;\n this.progress.y = newY;\n this._nextTick = trigger();\n };\n\n this._pointerLeave = () => {\n this.progress.active = false;\n this.progress.vx = 0;\n this.progress.vy = 0;\n this._nextTick = trigger();\n };\n\n this._pointerEnter = () => {\n this.progress.active = true;\n this._nextTick = trigger();\n };\n\n if (this.config.root) {\n shouldFixSynthPointer = typeof shouldFixSynthPointer === 'boolean' ? shouldFixSynthPointer : testPointerOffsetDprBug();\n const DPR = shouldFixSynthPointer ? window.devicePixelRatio : 1;\n\n if (typeof scrollOffsets.fixRequired === 'undefined') {\n testScrollOffsetsForWebKitPointerBug(scrollOffsets);\n }\n\n this._measure = (e) => {\n if (e.target !== this.config.root) {\n const event = new PointerEvent('pointermove', {\n bubbles: true,\n cancelable: true,\n clientX: e.x * DPR + scrollOffsets.x,\n clientY: e.y * DPR + scrollOffsets.y,\n });\n\n e.stopPropagation();\n\n this.config.root.dispatchEvent(event);\n } else {\n _measure(e);\n }\n }\n } else {\n this._measure = _measure;\n }\n }\n\n /**\n * Setup event and effect, and reset progress and frame.\n */\n start () {\n this.setupEffect();\n this.setupEvent();\n }\n\n /**\n * Removes event listener.\n */\n pause () {\n this.removeEvent();\n }\n\n /**\n * Handle animation frame work.\n */\n tick () {\n this.effect.tick(this.progress);\n }\n\n /**\n * Starts a transition from the previous progress to the current progress.\n *\n * @returns {number} the requestAnimationFrame id for the transition tick.\n */\n transition () {\n const duration = this.config.transitionDuration;\n const easing = this.config.transitionEasing || ((p) => p);\n const now = performance.now();\n let resetMovement = false;\n\n const tick = (time) => {\n const p = (time - this._startTime) / duration;\n const t = easing(Math.min(1, p));\n\n if (resetMovement) {\n this.progress.vx = 0;\n this.progress.vy = 0;\n resetMovement = false;\n }\n\n this.currentProgress = Object.entries(this.progress).reduce((acc, [key, value]) => {\n if (key === 'active') {\n acc[key] = value;\n } else {\n acc[key] = this.previousProgress[key] + (value - this.previousProgress[key]) * t;\n }\n return acc;\n }, this.currentProgress || {});\n\n if (p < 1) {\n this._nextTransitionTick = requestAnimationFrame(tick);\n\n // reset movement on next frame\n resetMovement = time - this._startTime > MOVEMENT_RESET_DELAY;\n }\n\n this.effect.tick(this.currentProgress);\n };\n\n if (this._startTime) {\n this._nextTransitionTick && cancelAnimationFrame(this._nextTransitionTick);\n\n Object.assign(this.previousProgress, this.currentProgress);\n\n this._startTime = now;\n\n tick(now);\n } else {\n this._startTime = now;\n }\n\n return this._nextTransitionTick;\n }\n\n /**\n * Stop the event and effect, and remove all DOM side effects.\n */\n destroy () {\n this.pause();\n this.removeEffect();\n this._nextTick && cancelAnimationFrame(this._nextTick);\n this._nextTransitionTick && cancelAnimationFrame(this._nextTransitionTick);\n }\n\n /**\n * Register to pointermove for triggering update.\n */\n setupEvent () {\n this.removeEvent();\n const element = this.config.root || window;\n element.addEventListener('pointermove', this._measure, {passive: true});\n\n if (this.config.eventSource) {\n this.config.eventSource.addEventListener('pointermove', this._measure, {passive: true});\n }\n\n if (this.config.allowActiveEvent) {\n element.addEventListener('pointerleave', this._pointerLeave, {passive: true});\n element.addEventListener('pointerenter', this._pointerEnter, {passive: true});\n\n if (this.config.eventSource) {\n this.config.eventSource.addEventListener('pointerleave', this._pointerLeave, {passive: true});\n this.config.eventSource.addEventListener('pointerenter', this._pointerEnter, {passive: true});\n }\n }\n }\n\n /**\n * Remove pointermove handler.\n */\n removeEvent () {\n const element = this.config.root || window;\n element.removeEventListener('pointermove', this._measure);\n\n if (this.config.eventSource) {\n this.config.eventSource.removeEventListener('pointermove', this._measure);\n }\n\n if (this.config.allowActiveEvent) {\n element.removeEventListener('pointerleave', this._pointerLeave);\n element.removeEventListener('pointerenter', this._pointerEnter);\n\n if (this.config.eventSource) {\n this.config.eventSource.removeEventListener('pointerleave', this._pointerLeave);\n this.config.eventSource.removeEventListener('pointerenter', this._pointerEnter);\n }\n }\n }\n\n /**\n * Reset registered effect.\n */\n setupEffect () {\n this.removeEffect();\n this.effect = getController(this.config);\n }\n\n /**\n * Remove registered effect.\n */\n removeEffect () {\n this.effect && this.effect.destroy();\n this.effect = null;\n }\n}\n\n/**\n * @typedef {object} PointerConfig\n * @property {PointerScene[]} scenes list of effect scenes to perform during pointermove.\n * @property {HTMLElement} [root] element to use as hit area for pointermove events. Defaults to entire viewport.\n * @property {{width: number, height: number}} [rect] created automatically on Pointer construction.\n * @property {boolean} [noThrottle] whether to disable throttling the effect by framerate.\n * @property {number} [transitionDuration] duration of transition effect in milliseconds.\n * @property {function} [transitionEasing] easing function for transition effect.\n * @property {boolean} [allowActiveEvent] whether to track timeline activation events.\n * @property {HTMLElement} [eventSource] an alternative source element to attach event handlers and retarget to root.\n */\n\n/**\n * @typedef {Object} PointerScene\n * @desc A configuration object for a scene. Must be provided an effect function.\n * @example { effects: (scene, p) => { animation.currentTime = p.x; } }\n * @property {PointerEffectCallback} effect the effect to perform.\n * @property {boolean} [centeredToTarget] whether this scene's progress is centered on the target's center.\n * @property {HTMLElement} [target] target element for the effect.\n * @property {boolean} [disabled] whether this scene is disabled.\n * @property {function} [destroy] a function clean up the scene when it's controller is destroyed.\n */\n\n/**\n * @typedef {function(scene: PointerScene, progress: {x: number, y: number}, velocity: {x: number, y: number}): void} PointerEffectCallback\n * @param {PointerScene} scene\n * @param {{x: number, y: number}} progress\n * @param {{x: number, y: number}} velocity\n */\n","import { getScrubScene } from '@wix/motion';\nimport { Pointer } from 'kuliso';\nimport type {\n PointerMoveParams,\n ScrubEffect,\n HandlerObjectMap,\n InteractOptions,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst pointerManagerMap = new WeakMap() as HandlerObjectMap;\nlet pointerOptionsGetter: () => Partial<PointerConfig> = () => ({});\n\nfunction registerOptionsGetter(getter: () => Partial<PointerConfig>) {\n pointerOptionsGetter = getter;\n}\n\nfunction addPointerMoveHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: ScrubEffect,\n options: PointerMoveParams = {},\n { reducedMotion }: InteractOptions,\n) {\n if (reducedMotion) {\n return;\n }\n\n const triggerParams = {\n trigger: 'pointer-move' as const,\n element: source,\n };\n\n const scene = getScrubScene(\n target,\n effectToAnimationOptions(effect),\n triggerParams,\n );\n\n if (scene) {\n const pointer = new Pointer({\n root: options.hitArea === 'self' ? source : undefined,\n scenes: Array.isArray(scene) ? scene : [scene],\n ...pointerOptionsGetter(),\n });\n const cleanup = () => {\n pointer.destroy();\n };\n\n const handlerObj = { source, target, cleanup };\n\n addHandlerToMap(pointerManagerMap, source, handlerObj);\n addHandlerToMap(pointerManagerMap, target, handlerObj);\n\n pointer.start();\n }\n}\n\nfunction removePointerMoveHandler(element: HTMLElement) {\n removeElementFromHandlerMap(pointerManagerMap, element);\n}\n\nexport default {\n add: addPointerMoveHandler,\n remove: removePointerMoveHandler,\n registerOptionsGetter,\n};\n","import type { AnimationGroup } from '@wix/motion';\nimport { getAnimation } from '@wix/motion';\nimport type {\n AnimationEndParams,\n TimeEffect,\n HandlerObjectMap,\n InteractOptions,\n} from '../types';\nimport {\n effectToAnimationOptions,\n addHandlerToMap,\n removeElementFromHandlerMap,\n} from './utilities';\n\nconst handlerMap = new WeakMap() as HandlerObjectMap;\n\nfunction addAnimationEndHandler(\n source: HTMLElement,\n target: HTMLElement,\n effect: TimeEffect,\n __: AnimationEndParams,\n { reducedMotion, selectorCondition }: InteractOptions,\n): void {\n const animation = getAnimation(\n target,\n effectToAnimationOptions(effect),\n undefined,\n reducedMotion,\n ) as AnimationGroup;\n\n const handler = () => {\n if (selectorCondition && !target.matches(selectorCondition)) return;\n animation.play();\n };\n const cleanup = () => {\n animation.cancel();\n source.removeEventListener('animationend', handler);\n };\n\n const handlerObj = { source, target, cleanup };\n addHandlerToMap(handlerMap, source, handlerObj);\n addHandlerToMap(handlerMap, target, handlerObj);\n\n source.addEventListener('animationend', handler);\n}\n\nfunction removeAnimationEndHandler(element: HTMLElement): void {\n removeElementFromHandlerMap(handlerMap, element);\n}\n\nexport default {\n add: addAnimationEndHandler,\n remove: removeAnimationEndHandler,\n};\n","import type { Effect, InteractOptions, PointerTriggerParams, StateParams, TriggerHandlerMap, TriggerType } from '../types';\nimport viewEnterHandler from './viewEnter';\nimport viewProgressHandler from './viewProgress';\nimport hoverHandler from './hover';\nimport clickHandler from './click';\nimport pointerMoveHandler from './pointerMove';\nimport animationEndHandler from './animationEnd';\n\nfunction withA11y<T extends typeof clickHandler | typeof hoverHandler>(\n handler: T,\n): T {\n return {\n add: (\n source: HTMLElement,\n target: HTMLElement,\n effect: Effect,\n options: StateParams | PointerTriggerParams,\n interactOptions?: InteractOptions,\n ) =>\n handler.add(source, target, effect, options, {\n ...interactOptions,\n allowA11yTriggers: true,\n }),\n remove: handler.remove,\n } as T;\n}\n\nexport default {\n viewEnter: viewEnterHandler,\n hover: hoverHandler,\n click: clickHandler,\n pageVisible: viewEnterHandler,\n animationEnd: animationEndHandler,\n viewProgress: viewProgressHandler,\n pointerMove: pointerMoveHandler,\n activate: withA11y(clickHandler),\n interest: withA11y(hoverHandler),\n} as TriggerHandlerMap<TriggerType>;\n","import {\n InteractCache,\n InteractConfig,\n EffectRef,\n Effect,\n Interaction,\n ViewEnterParams,\n ViewEnterHandlerModule,\n IInteractionController,\n IInteractElement,\n} from '../types';\nimport { getInterpolatedKey } from './utilities';\nimport { generateId } from '../utils';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\n\nfunction _convertToKeyTemplate(key: string) {\n return key.replace(/\\[([-\\w]+)]/g, '[]');\n}\n\nexport class Interact {\n static defineInteractElement?: () => boolean;\n dataCache: InteractCache;\n addedInteractions: { [interactionId: string]: boolean };\n mediaQueryListeners: Map<\n string,\n {\n mql: MediaQueryList;\n handler: (e: MediaQueryListEvent | MediaQueryList) => void;\n key: string;\n }\n >;\n listInteractionsCache: {\n [listContainer: string]: { [interactionId: string]: boolean };\n };\n controllers: Set<IInteractionController>;\n static forceReducedMotion: boolean = false;\n static allowA11yTriggers: boolean = true;\n static instances: Interact[] = [];\n static controllerCache = new Map<string, IInteractionController>();\n\n constructor() {\n this.dataCache = { effects: {}, conditions: {}, interactions: {} };\n this.addedInteractions = {};\n this.mediaQueryListeners = new Map();\n this.listInteractionsCache = {};\n this.controllers = new Set();\n }\n\n init(config: InteractConfig): void {\n if (typeof window === 'undefined' || !window.customElements) {\n return;\n }\n\n this.dataCache = parseConfig(config);\n\n const defined = Interact.defineInteractElement?.();\n\n if (defined === false) {\n // mostly to recover from React's <StrictMode>, blah...\n document.querySelectorAll('interact-element').forEach((element) => {\n (element as IInteractElement).connect();\n });\n } else {\n // Always try to reconnect elements from cache.\n // This handles cases where elements were added to DOM before the instance was created\n // (e.g., in React where useEffect runs after render), or when an instance is recreated\n // (e.g., in React StrictMode where effects run twice).\n // The connect() method has a guard to skip if already connected.\n Interact.controllerCache.forEach((controller: IInteractionController, key) => controller.connect(key));\n }\n }\n\n destroy(): void {\n for (const controller of this.controllers) {\n controller.disconnect();\n }\n\n // Properly remove all media query listeners before clearing the Map\n // This is critical for React StrictMode where instances are destroyed and recreated,\n // to prevent duplicate listeners from firing with stale instance references\n for (const [, listener] of this.mediaQueryListeners.entries()) {\n listener.mql.removeEventListener('change', listener.handler);\n }\n this.mediaQueryListeners.clear();\n this.addedInteractions = {};\n this.listInteractionsCache = {};\n this.controllers.clear();\n this.dataCache = { effects: {}, conditions: {}, interactions: {} };\n Interact.instances.splice(Interact.instances.indexOf(this), 1);\n }\n\n setController(key: string, controller: IInteractionController) {\n this.controllers.add(controller);\n\n Interact.setController(key, controller);\n }\n\n deleteController(key: string) {\n const controller = Interact.controllerCache.get(key);\n\n this.clearInteractionStateForKey(key);\n this.clearMediaQueryListenersForKey(key);\n\n if (controller) {\n this.controllers.delete(controller);\n Interact.deleteController(key);\n }\n }\n\n has(key: string): boolean {\n return !!this.get(key);\n }\n\n get(key: string): InteractCache['interactions'][string] | undefined {\n const processedKey = _convertToKeyTemplate(key);\n return this.dataCache.interactions[processedKey];\n }\n\n clearMediaQueryListenersForKey(key: string): void {\n for (const [id, listener] of this.mediaQueryListeners.entries()) {\n if (listener.key === key) {\n listener.mql.removeEventListener('change', listener.handler);\n this.mediaQueryListeners.delete(id);\n }\n }\n }\n\n clearInteractionStateForKey(key: string): void {\n const interactionIds = this.get(key)?.interactionIds || [];\n\n interactionIds.forEach((interactionId_) => {\n const interactionId = getInterpolatedKey(interactionId_, key);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.addedInteractions[interactionId];\n });\n }\n\n setupMediaQueryListener(id: string, mql: MediaQueryList, key: string, handler: () => void) {\n if (this.mediaQueryListeners.has(id)) {\n return;\n }\n\n mql.addEventListener('change', handler);\n\n this.mediaQueryListeners.set(id, {\n mql,\n handler,\n key,\n });\n }\n\n static create(config: InteractConfig): Interact {\n const instance = new Interact();\n Interact.instances.push(instance);\n\n instance.init(config);\n\n return instance;\n }\n\n static destroy(): void {\n Interact.controllerCache.forEach((controller: IInteractionController) => {\n controller.disconnect();\n });\n Interact.instances.length = 0;\n Interact.controllerCache.clear();\n }\n\n static setup(options: {\n scrollOptionsGetter?: () => Partial<scrollConfig>;\n pointerOptionsGetter?: () => Partial<PointerConfig>;\n viewEnter?: Partial<ViewEnterParams>;\n allowA11yTriggers?: boolean;\n }): void {\n if (options.scrollOptionsGetter) {\n TRIGGER_TO_HANDLER_MODULE_MAP.viewProgress.registerOptionsGetter?.(\n options.scrollOptionsGetter,\n );\n }\n\n if (options.pointerOptionsGetter) {\n TRIGGER_TO_HANDLER_MODULE_MAP.pointerMove.registerOptionsGetter?.(\n options.pointerOptionsGetter,\n );\n }\n\n if(options.viewEnter) {\n (TRIGGER_TO_HANDLER_MODULE_MAP.viewEnter as ViewEnterHandlerModule).setOptions(options.viewEnter);\n }\n\n if(options.allowA11yTriggers !== undefined) {\n Interact.allowA11yTriggers = options.allowA11yTriggers;\n }\n }\n\n static getInstance(key: string): Interact | undefined {\n return Interact.instances.find((instance) => instance.has(key));\n }\n\n static getController(key: string | undefined): IInteractionController | undefined {\n return key ? Interact.controllerCache.get(key) : undefined;\n }\n\n static setController(key: string, controller: IInteractionController): void {\n Interact.controllerCache.set(key, controller);\n }\n\n static deleteController(key: string): void {\n Interact.controllerCache.delete(key);\n }\n}\n\nlet interactionIdCounter = 0;\n\nexport function getSelector(\n d: Interaction | Effect,\n {\n asCombinator = false,\n addItemFilter = false,\n }: { asCombinator?: boolean; addItemFilter?: boolean } = {},\n): string {\n if (d.listContainer) {\n const itemFilter = `${addItemFilter && d.listItemSelector ? ` > ${d.listItemSelector}` : ''}`;\n\n if (d.selector) {\n return `${d.listContainer}${itemFilter} ${d.selector}`;\n }\n\n return `${d.listContainer}${itemFilter || ' > *'}`;\n } else if (d.selector) {\n return d.selector;\n }\n\n // TODO: consider moving :scope to be configurable since it may lead to unexpected results in some cases\n return asCombinator ? '> :first-child' : ':scope > :first-child';\n}\n\n/**\n * Parses the config object and caches interactions, effects, and conditions\n */\nfunction parseConfig(config: InteractConfig): InteractCache {\n const conditions = config.conditions || {};\n const interactions: InteractCache['interactions'] = {};\n\n config.interactions?.forEach((interaction_) => {\n const source = interaction_.key;\n const interactionIdx = ++interactionIdCounter;\n const { effects: effects_, ...rest } = interaction_;\n\n if (!source) {\n console.error(`Interaction ${interactionIdx} is missing a key for source element.`);\n return;\n }\n\n if (!interactions[source]) {\n interactions[source] = {\n triggers: [],\n effects: {},\n interactionIds: new Set(),\n selectors: new Set(),\n };\n }\n\n /*\n * Cache interaction trigger by source element\n */\n const effects = Array.from(effects_);\n effects.reverse(); // reverse to ensure the first effect is the one that will be applied first\n const interaction = { ...rest, effects };\n\n interactions[source].triggers.push(interaction);\n interactions[source].selectors.add(getSelector(interaction));\n\n const listContainer = interaction.listContainer;\n\n effects.forEach((effect) => {\n /*\n * Target cascade order is the first of:\n * -> Config.interactions.effects.effect.key\n * -> Config.effects.effect.key\n * -> Config.interactions.interaction.key\n */\n let target = effect.key;\n\n if (!target && (effect as EffectRef).effectId) {\n const referencedEffect = config.effects[(effect as EffectRef).effectId];\n\n if (referencedEffect) {\n target = referencedEffect.key;\n }\n }\n\n if (!(effect as EffectRef).effectId) {\n (effect as EffectRef).effectId = generateId();\n }\n\n // if no target is specified, use the source element as the target\n target = target || source;\n effect.key = target;\n const effectId = (effect as EffectRef).effectId;\n\n if (listContainer && effect.listContainer) {\n // we do not support having 2 separate lists for same interaction\n if (target !== source || effect.listContainer !== listContainer) {\n return;\n }\n }\n\n const interactionId = `${target}::${effectId}::${interactionIdx}`;\n effect.interactionId = interactionId;\n interactions[source].interactionIds.add(interactionId);\n\n if (target === source) {\n // if target is the source element, no need to add an interaction to `effects`\n return;\n }\n\n /*\n * Cache interaction effect by target element\n */\n if (!interactions[target]) {\n interactions[target] = {\n triggers: [],\n effects: {\n [interactionId]: [],\n },\n interactionIds: new Set(),\n selectors: new Set(),\n };\n } else if (!interactions[target].effects[interactionId]) {\n interactions[target].effects[interactionId] = [];\n interactions[target].interactionIds.add(interactionId);\n }\n\n interactions[target].effects[interactionId].push({ ...rest, effect });\n interactions[target].selectors.add(getSelector(effect));\n });\n });\n\n return {\n effects: config.effects || {},\n conditions,\n interactions,\n };\n}\n","import type {\n Effect,\n TriggerType,\n EffectRef,\n InteractionParamsTypes,\n TransitionEffect,\n Interaction,\n InteractionTrigger,\n CreateTransitionCSSParams,\n IInteractionController,\n} from '../types';\nimport { createTransitionCSS, getMediaQuery, getSelectorCondition } from '../utils';\nimport { getInterpolatedKey } from './utilities';\nimport { Interact, getSelector } from './Interact';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\n\ntype InteractionsToApply = Array<[\n string,\n InteractionTrigger,\n Effect,\n HTMLElement | HTMLElement[],\n HTMLElement | HTMLElement[],\n string | undefined\n]>;\n\nfunction _getElementsFromData(\n data: Interaction | Effect,\n root: HTMLElement,\n): HTMLElement | HTMLElement[] | null {\n if (data.listContainer) {\n const container = root.querySelector(data.listContainer);\n\n if (!container) {\n console.warn(`Interact: No container found for list container \"${data.listContainer}\"`);\n\n return [];\n }\n\n if (data.selector) {\n return Array.from(container.querySelectorAll(data.selector)) as HTMLElement[];\n }\n\n return Array.from(container.children) as HTMLElement[];\n }\n\n if (data.selector) {\n const element = root.querySelector(data.selector);\n\n if (element) {\n return element as HTMLElement;\n } else {\n console.warn(`Interact: No element found for selector \"${data.selector}\"`);\n }\n }\n\n return root.firstElementChild as HTMLElement | null;\n}\n\nfunction _queryItemElement(data: Interaction | Effect, elements: HTMLElement[]): HTMLElement[] {\n return elements\n .map((element) => {\n return data.selector ? element.querySelector(data.selector) : element;\n })\n .filter(Boolean) as HTMLElement[];\n}\n\nfunction _getInteractionElements(\n interaction: InteractionTrigger,\n effect: Effect,\n source: HTMLElement,\n target: HTMLElement,\n sourceElements?: HTMLElement[],\n targetElements?: HTMLElement[],\n): [HTMLElement | HTMLElement[] | null, HTMLElement | HTMLElement[] | null] {\n return [\n sourceElements\n ? _queryItemElement(interaction, sourceElements)\n : _getElementsFromData(interaction, source),\n targetElements\n ? _queryItemElement(effect, targetElements)\n : _getElementsFromData(effect, target),\n ];\n}\n\nfunction _applyInteraction(\n targetKey: string,\n interaction: InteractionTrigger,\n effect: Effect,\n sourceElements: HTMLElement | HTMLElement[],\n targetElements: HTMLElement | HTMLElement[],\n selectorCondition?: string,\n) {\n const isSourceArray = Array.isArray(sourceElements);\n const isTargetArray = Array.isArray(targetElements);\n\n if (isSourceArray) {\n sourceElements.forEach((sourceEl, index) => {\n const targetEl = isTargetArray ? targetElements[index] : targetElements;\n \n if (targetEl) {\n addInteraction(\n targetKey,\n sourceEl,\n interaction.trigger,\n targetEl,\n effect as Effect,\n interaction.params!,\n selectorCondition,\n );\n }\n });\n } else {\n const targets = isTargetArray ? targetElements : [targetElements];\n targets.forEach((targetEl) => {\n addInteraction(\n targetKey,\n sourceElements,\n interaction.trigger,\n targetEl,\n effect as Effect,\n interaction.params!,\n selectorCondition,\n );\n });\n }\n}\n\nfunction _addInteraction(\n sourceKey: string,\n sourceController: IInteractionController,\n instance: Interact,\n interaction: Interaction,\n elements?: HTMLElement[],\n) {\n const interactionVariations: Record<string, boolean> = {};\n\n const interactionsToApply: InteractionsToApply = [];\n \n interaction.effects.forEach((effect) => {\n const effectId = (effect as EffectRef).effectId;\n\n const effectOptions = {\n ...(instance.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n const targetKey_ = effectOptions.key;\n\n const interactionId = getInterpolatedKey(effect.interactionId!, sourceKey);\n\n if (interactionVariations[interactionId!]) {\n // Skip this effect if it has already been added\n return;\n }\n\n if (instance.addedInteractions[interactionId!] && !elements) {\n // Skip this interaction if it has already been added\n return;\n }\n\n const mql = getMediaQuery(effectOptions.conditions || [], instance.dataCache.conditions);\n\n if (mql) {\n instance.setupMediaQueryListener(interactionId, mql, sourceKey, () => {\n sourceController.update();\n });\n }\n\n if (!mql || mql.matches) {\n interactionVariations[interactionId!] = true;\n\n const target = targetKey_ && getInterpolatedKey(targetKey_, sourceKey);\n\n let targetController;\n if (target) {\n targetController = Interact.getController(target);\n\n if (!targetController) {\n // Bail out :: no target element in cache\n return;\n }\n\n if (effectOptions.listContainer) {\n targetController.watchChildList(effectOptions.listContainer);\n }\n } else {\n // target is not specified - fallback to same as source\n targetController = sourceController;\n }\n\n const [sourceElements, targetElements] = _getInteractionElements(\n interaction,\n effectOptions,\n sourceController.element,\n targetController.element,\n elements,\n );\n\n if (!sourceElements || !targetElements) {\n return;\n }\n\n instance.addedInteractions[interactionId!] = true;\n\n const key = target || interaction.key;\n const selectorCondition = getSelectorCondition(\n effectOptions.conditions || [],\n instance.dataCache.conditions,\n );\n\n interactionsToApply.push([\n key,\n interaction,\n effectOptions,\n sourceElements,\n targetElements,\n selectorCondition,\n ]);\n }\n });\n\n // apply the effects in reverse to return to the order specified by the user to ensure order of composition is as defined\n interactionsToApply.reverse().forEach((interaction) => {\n _applyInteraction(...interaction);\n });\n}\n\nfunction addEffectsForTarget(\n targetKey: string,\n targetController: IInteractionController,\n instance: Interact,\n listContainer?: string,\n elements?: HTMLElement[],\n) {\n const effects = instance.get(targetKey)?.effects || {};\n const interactionIds = Object.keys(effects);\n const interactionsToApply: InteractionsToApply = [];\n\n interactionIds.forEach((interactionId_) => {\n const interactionId = getInterpolatedKey(interactionId_, targetKey);\n\n if (instance.addedInteractions[interactionId] && !elements) {\n // Skip this interaction if it has already been added\n return;\n }\n\n const effectVariations = effects[interactionId_];\n\n // use `some` to short-circuit after the first effect that matches the conditions\n effectVariations.some(({ effect, ...interaction }) => {\n const effectId = (effect as EffectRef).effectId;\n\n const effectOptions = {\n ...(instance!.dataCache.effects[effectId] || {}),\n ...effect,\n effectId,\n };\n\n if (listContainer && effectOptions.listContainer !== listContainer) {\n // skip this effect if a listContainer was provided and it's not matching this effect.listContainer\n return false;\n }\n\n const mql = getMediaQuery(effectOptions.conditions || [], instance!.dataCache.conditions);\n\n if (mql) {\n instance.setupMediaQueryListener(interactionId, mql, targetKey, () => {\n // For effects on target, we reconcile the target element\n targetController.update();\n });\n }\n\n if (!mql || mql.matches) {\n const sourceKey = interaction.key && getInterpolatedKey(interaction.key, targetKey);\n const sourceController = Interact.getController(sourceKey);\n\n if (!sourceController) {\n // Bail out :: no source or target elements in cache\n return true;\n }\n\n if (effectOptions.listContainer) {\n targetController.watchChildList(effectOptions.listContainer);\n }\n\n const [sourceElements, targetElements] = _getInteractionElements(\n interaction,\n effectOptions,\n sourceController.element,\n targetController.element,\n undefined,\n elements,\n );\n\n if (!sourceElements || !targetElements) {\n // Bail out :: no source or target elements found in DOM\n return true;\n }\n\n instance!.addedInteractions[interactionId] = true;\n\n const selectorCondition = getSelectorCondition(\n effectOptions.conditions || [],\n instance!.dataCache.conditions,\n );\n\n interactionsToApply.push([\n targetKey,\n interaction,\n effectOptions as Effect,\n sourceElements,\n targetElements,\n selectorCondition,\n ]);\n\n // short-circuit the loop since we have a match\n return true;\n }\n\n return false;\n });\n });\n\n // apply the effects in reverse to return to the order specified by the user to ensure order of composition is as defined\n interactionsToApply.reverse().forEach((interaction) => {\n _applyInteraction(...interaction);\n });\n\n return interactionIds.length > 0;\n}\n\n/**\n * Registers a handler to an event on a given element.\n */\nfunction addInteraction<T extends TriggerType>(\n targetKey: string,\n source: HTMLElement,\n trigger: T,\n target: HTMLElement,\n effect: Effect,\n options: InteractionParamsTypes[T],\n selectorCondition?: string,\n): void {\n let targetController;\n\n if (\n (effect as TransitionEffect).transition ||\n (effect as TransitionEffect).transitionProperties\n ) {\n const args: CreateTransitionCSSParams = {\n key: targetKey,\n effectId: (effect as Effect).effectId!,\n transition: (effect as TransitionEffect).transition,\n properties: (effect as TransitionEffect).transitionProperties,\n childSelector: getSelector(effect, {\n asCombinator: true,\n addItemFilter: true,\n }),\n selectorCondition,\n };\n\n targetController = Interact.getController(targetKey);\n if (!targetController) {\n return;\n }\n\n targetController.renderStyle(createTransitionCSS(args));\n }\n\n TRIGGER_TO_HANDLER_MODULE_MAP[trigger]?.add(source, target, effect, options, {\n reducedMotion: Interact.forceReducedMotion,\n targetController,\n selectorCondition,\n allowA11yTriggers: Interact.allowA11yTriggers,\n });\n}\n\n/**\n * Adds all events and effects to an element based on config\n */\nexport function add(controller: IInteractionController): boolean {\n const key = controller.key as string;\n const instance = Interact.getInstance(key);\n\n if (!instance) {\n console.warn(`No instance found for key: ${key}`);\n\n // even if we don't find a matching instance, we still want to cache the element\n Interact.setController(key, controller);\n return false;\n }\n\n const { triggers = [] } = instance?.get(key) || {};\n const hasTriggers = triggers.length > 0;\n\n instance.setController(key, controller);\n\n triggers.forEach((interaction, index) => {\n const mql = getMediaQuery(interaction.conditions, instance!.dataCache.conditions);\n\n if (mql) {\n const interactionId = `${key}::trigger::${index}`;\n instance.setupMediaQueryListener(interactionId, mql, key, () => {\n controller.update();\n });\n }\n\n if (!mql || mql.matches) {\n if (interaction.listContainer) {\n controller.watchChildList(interaction.listContainer);\n }\n\n _addInteraction(key, controller, instance!, interaction);\n }\n });\n\n let hasEffects = false;\n if (instance) {\n hasEffects = addEffectsForTarget(key, controller, instance);\n }\n\n return hasTriggers || hasEffects;\n}\n\nexport function addListItems(\n controller: IInteractionController,\n listContainer: string,\n elements: HTMLElement[],\n) {\n const key = controller.key as string;\n const instance = Interact.getInstance(key);\n\n if (instance) {\n const { triggers = [] } = instance?.get(key) || {};\n\n triggers.forEach((interaction, index) => {\n if (interaction.listContainer !== listContainer) {\n return;\n }\n\n const mql = getMediaQuery(interaction.conditions, instance!.dataCache.conditions);\n\n if (mql) {\n const interactionId = `${key}::listTrigger::${listContainer}::${index}`;\n instance.setupMediaQueryListener(interactionId, mql, key, () => {\n // For list items, reconciling the root might be expensive but safe\n controller.update();\n });\n }\n\n if (!mql || mql.matches) {\n _addInteraction(key, controller, instance!, interaction, elements);\n }\n });\n\n addEffectsForTarget(key, controller, instance, listContainer, elements);\n }\n}\n","import { Interact } from './Interact';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\nimport type { IInteractionController } from '../types';\n\n/**\n * Removes all events and effects from an element based on config\n */\nexport function remove(controller: IInteractionController): void {\n const key = controller.key as string;\n const instance = Interact.getInstance(key);\n\n if (!instance) {\n return;\n }\n\n const selectors = [...(instance.get(key)?.selectors.values() || [])].join(',');\n const elements = controller.element.querySelectorAll(selectors);\n\n removeListItems(Array.from(elements) as HTMLElement[]);\n\n instance.deleteController(key);\n}\n\nexport function removeListItems(elements: HTMLElement[]) {\n const modules = Object.values(TRIGGER_TO_HANDLER_MODULE_MAP);\n\n for (const element of elements) {\n for (const module of modules) {\n module.remove(element);\n }\n }\n}\n","import type { IInteractElement, StateParams } from '../types';\nimport { add, addListItems } from './add';\nimport { remove, removeListItems } from './remove';\n\nexport const INTERACT_EFFECT_DATA_ATTR = 'interactEffect';\n\nexport class InteractionController {\n element: HTMLElement;\n key: string | undefined;\n connected: boolean;\n sheet: CSSStyleSheet | null;\n _observers: WeakMap<HTMLElement, MutationObserver>;\n\n constructor(element: HTMLElement, key?: string) {\n this.element = element;\n this.key = key;\n this.connected = false;\n this.sheet = null;\n this._observers = new WeakMap();\n }\n\n connect(key?: string) {\n if (this.connected) {\n return;\n }\n\n key = key || this.key || this.element.dataset.interactKey;\n\n if (!key) {\n console.warn('Interact: No key provided');\n return;\n }\n\n this.key = key;\n\n this.connected = add(this);\n }\n\n disconnect() {\n const key = this.key || this.element.dataset.interactKey;\n\n if (key) {\n remove(this);\n }\n\n if (this.sheet) {\n const index = document.adoptedStyleSheets.indexOf(this.sheet);\n document.adoptedStyleSheets.splice(index, 1);\n }\n\n this._observers = new WeakMap();\n this.sheet = null;\n this.connected = false;\n }\n\n update() {\n this.disconnect();\n this.connect();\n }\n\n renderStyle(cssRules: string[]) {\n if (!this.sheet) {\n this.sheet = new CSSStyleSheet();\n void this.sheet.replaceSync(cssRules.join('\\n'));\n\n document.adoptedStyleSheets.push(this.sheet);\n } else {\n let position = this.sheet.cssRules.length;\n\n for (const cssRule of cssRules) {\n try {\n this.sheet.insertRule(cssRule, position);\n position++;\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n\n toggleEffect(effectId: string, method: StateParams['method'], item?: HTMLElement | null, isLegacy?: boolean) {\n if (item === null) {\n return;\n }\n\n if (!isLegacy && (this.element as IInteractElement).toggleEffect) {\n (this.element as IInteractElement).toggleEffect(effectId, method, item);\n return;\n }\n\n const currentEffects = new Set(this.element.dataset[INTERACT_EFFECT_DATA_ATTR]?.split(' ') || []);\n\n if (method === 'toggle') {\n currentEffects.has(effectId)\n ? currentEffects.delete(effectId)\n : currentEffects.add(effectId);\n } else if (method === 'add') {\n currentEffects.add(effectId);\n } else if (method === 'remove') {\n currentEffects.delete(effectId);\n } else if (method === 'clear') {\n currentEffects.clear();\n }\n\n (item || this.element).dataset[INTERACT_EFFECT_DATA_ATTR] = Array.from(currentEffects).join(' ');\n }\n\n getActiveEffects(): string[] {\n const raw = this.element.dataset[INTERACT_EFFECT_DATA_ATTR] || '';\n const trimmed = raw.trim();\n return trimmed ? trimmed.split(/\\s+/) : [];\n }\n\n watchChildList(listContainer: string): void {\n const list = this.element.querySelector(listContainer);\n\n if (list) {\n // TODO: we can probably improve this and use less observers, this impl. uses one per container element\n let observer = this._observers.get(list as HTMLElement);\n\n if (!observer) {\n observer = new MutationObserver(this._childListChangeHandler.bind(this, listContainer));\n\n this._observers.set(list as HTMLElement, observer);\n\n observer.observe(list as HTMLElement, { childList: true });\n }\n }\n }\n\n _childListChangeHandler(listContainer: string, entries: MutationRecord[]) {\n const key = this.key || this.element.dataset.interactKey;\n const removedElements: HTMLElement[] = [];\n const addedElements: HTMLElement[] = [];\n\n entries.forEach((entry) => {\n entry.removedNodes.forEach((el) => {\n if (el instanceof HTMLElement) {\n removedElements.push(el);\n }\n });\n\n entry.addedNodes.forEach((el) => {\n if (el instanceof HTMLElement) {\n addedElements.push(el);\n }\n });\n });\n\n removeListItems(removedElements);\n key && addListItems(this, listContainer, addedElements);\n }\n}\n","import { Interact } from '../core/Interact';\nimport { InteractionController } from '../core/InteractionController';\n\nexport function add(element: HTMLElement, key?: string): void {\n const controller = new InteractionController(element, key);\n\n controller.connect();\n}\n\nexport function remove(key: string): void {\n const controller = Interact.getController(key);\n if (!controller) {\n return;\n }\n\n controller.disconnect();\n}\n","import { InteractConfig } from '../types';\n\nexport function generate(_config: InteractConfig): string {\n const css: string[] = [\n `@media (prefers-reduced-motion: no-preference) {\n [data-interact-initial=\"true\"] > :first-child:not([data-motion-enter=\"done\"]) {\n visibility: hidden;\n transform: none;\n translate: none;\n scale: none;\n rotate: none;\n }\n}`\n ];\n\n return css.join('\\n');\n}\n"],"names":["_processKeysForInterpolation","key","_","_instanceKey","getInterpolatedKey","template","keys","index","_typeof","o","toPrimitive","r","e","i","toPropertyKey","_defineProperty","t","AnimationGroup","animations","options","_this$animations$","callback","animation","p","activeDuration","delay","rate","a","_a$effect","target","endEvent","_error","_this$animations$2","linear","sineIn","sineOut","sineInOut","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","quartIn","quartOut","quartInOut","quintIn","quintOut","quintInOut","expoIn","expoOut","expoInOut","circIn","circOut","circInOut","backIn","backOut","backInOut","k","jsEasings","cssEasings","mapRange","sourceMin","sourceMax","targetMin","targetMax","num","distance2d","_ref","_ref2","x1","y1","x2","y2","getAngleInDeg","p1","p2","offset","angle","INITIAL_FRAME_OFFSET","CLIP_POLYGON_TEMPLATES","_ref3","top","bottom","left","right","_ref4","minimum","_ref5","_ref6","centerX","centerY","_ref7","_ref8","_ref9","_ref10","getClipPolygonParams","_ref11","direction","scaleX","scaleY","getAdjustedDirection","availableDirections","angleInDeg","length","shiftBy","newIndex","transformPolarToXY","distance","radians","x","y","getCssUnits","type","getEasing","easing","getJsEasing","getEasingFamily","ease","MOUSE_TRANSITION_EASING_MAP","getMouseTransitionEasing","value","getOutOfScreenDistance","angleInRad","angleCos","angleSin","xDirection","yDirection","xDistance","yDistance","hypotenuse","hypotX","hypotY","getElementOffset","element","parent","offsetParent","generateShuttersClipPath","shutterCount","staggered","isTopOrLeft","iterStart","iterEnd","inc","isVerticalPath","clipPathStart","clipPathEnd","shutterEndPosInPercentage","clipStart","clipEnd","staggerFactor","getShuttersClipPaths","reverse","start","end","roundNumber","precision","toKeyframeValue","custom","useValue","fallback","getTimingFactor","duration","asString","duration_","timingFactor","CustomAnimation","customEffect","effectOptions","timingOptions","effect","timeline","progress","_target","_this$effect","_this$customEffect","error","time","speed","uid","tl","cb","playbackRate","listener","event","ROTATE_DIRECTION_MAP","ROTATION","RANGES_MAP","create","range","fill","rotateAxis","fromValue","toValue","BLUR_POWER_MAP","blur","power","blurFactor","opacity","isOut","ROTATE_POWER_MAP","rotate","rotationAxis","flipValue","MAX_Y_TRAVEL","POWER_MAP","directionMap","scaleFrom","_scaleTo","travelY","_scaleFrom","scaleTo","getScrubOffsets","scale","fromValues","toValues","trnsX","trnsY","travelX","travel","isTravelingDownwards","units","startOffsetAdd","endOffsetAdd","config","unit","DIRECTIONS","OFFSCREEN_POSITIONS","dom","startFromOffScreen","startX","endX","DEFAULT_SPEED","getOffsetAdd","factor","OPPOSITE_DIRECTION_MAP","initialClip","getClipFrom","getClipTo","clipFrom","clipTo","rotation","adjDirection","keyframes","SHAPES","RESPONSIVE_SHAPES_MAP","clipFactor","clip","clipNeg","KEYFRAMES_RANGE_MAP","shape","intensity","shutters","directionOpp","oppClipStart","oppClipEnd","DIRECTION_MAP","skewX","_endX","POSITIONS","skew","DIRECTION_TRANSLATION_MAP","translate","oppositeDirection","initialParams","spins","spinDirection","rotationZ","scaleFactor","isIn","easings","opacityKeyframesMap","stretch","ROTATION_X","ROTATION_Y","ROTATION_Z","UP","DOWN","ORIGINAL_LAYOUT","TRANSLATE_Y_POWER_MAP","DIRECTIONS_MAP","getYTravel","from","to","dir","rotateZFrom","rotateZTo","travelYFrom","travelYTo","rotationXFrom","rotationYFrom","rotationXTo","rotationYTo","ELEMENT_ROTATION","TRANSLATE_X_MAP","spin","transX","rotateZ","scaleFactors","scrollAnimations","ArcScroll","BlurScroll","FadeScroll","FlipScroll","GrowScroll","MoveScroll","PanScroll","ParallaxScroll","RevealScroll","ShapeScroll","ShuttersScroll","ShrinkScroll","SkewPanScroll","SlideScroll","Spin3dScroll","SpinScroll","StretchScroll","TiltScroll","TurnScroll","ROTATION_ANGLE","EASING_MAP","web","prepare","style","getNames","asWeb","fadeIn","arcIn","sign","z","width","height","rect","blurIn","shuttersIn","easeIn","easeOut","BOUNCE_KEYFRAMES","TRANSLATE_DIRECTION_MAP","bounceIn","distanceFactor","perspective","easeIn_","easeOut_","distanceFactor_","perspective_","directionX","directionY","directionZ","PARAMS_MAP","curveIn","rotationX","rotationY","circleXIn","circleYIn","customX","customY","initialScale","dropIn","SCALE_MAP","TRANSFORM_ORIGIN_MAP","expandIn","scale_","transY","POWER_TO_ROTATE_MAP","getRotateFrom","ROTATE_MAP","initialRotate","flipIn","adjustedDirection","floatIn","fromParams","translateX","translateY","PARAM_MAP","foldIn","origin","newRotate","glideIn","targetLeft","targetTop","getFixedDirection","duplicate","glideInWeb","glideInStyle","growIn","TRANSLATION_FACTORS_MAP","getMidPoint","punchIn","translationFactors","sourcePoint","_in","_out","shapes","shapeIn","getClipStart","clipDirection","revealIn","target_","INITIAL_TRANSLATE_MAP","initialTranslate","slideIn","spinIn","transformRotate","ROTATION_MAP","tiltInRotate","tiltInClip","translateZ","clipCustom","DIRECTION_TO_TRANSFORM_MAP","turnIn","invertedOrigin","winkInClip","winkInRotate","rotatedClip","rotatedDirection","entranceAnimations","ArcIn","BlurIn","ShuttersIn","BounceIn","CurveIn","CircleIn","DropIn","ExpandIn","FadeIn","FlipIn","FloatIn","FoldIn","GlideIn","GlitchIn","GrowIn","PunchIn","ShapeIn","RevealIn","SlideIn","SpinIn","TiltIn","TurnIn","WinkIn","POWER_TO_BOUNCE_FACTOR_MAP","TRANSLATE_Y_KEYFRAMES","_dom","name","bounceFactor","keyframe","FACTORS_SEQUENCE","totalDurationWithDelay","breatheX","breatheY","breatheZ","breathePerspective","breatheDistance","currentOffset","translateFactor","timeFactor","keyframeOffset","distancePart","FOUR_DIRECTIONS_TRANSLATIONS","RIGHT","LEFT","TOP","BOTTOM","FOUR_CORNERS_TRANSLATIONS","TRANSLATE_BY_DIRECTION_MAP","GET_OFFSET_BY_DIRECTION_MAP","parentWidth","parentHeight","leftDistance","topDistance","rightDistance","bottomDistance","generateTranslate","_from","_to","fromYFactor","toYFactor","fromXFactor","toXFactor","targetWidth","targetHeight","parentRect","toDurationOffset","cornerFromTo","_asWeb","POWER_EASING_MAP","rotationAxes","rotateStart","rotateEnd","POWER_TO_ROTATION_FACTOR_MAP","MIN_ROTATE_ANGLE","KEYFRAME_FACTORS","isResponsive","rotateTransform","transformLeft","transformRight","getTransform","fold","frameFactor","transform_0","POWER_TO_JELLO_FACTOR_MAP","SKEW_Y_KEYFRAMES","responsiveJelloFactor","skewY","TRANSLATE_KEYFRAMES","POWER_TO_POKE_FACTOR_MAP","responsivePokeFactor","pokeFactor","translateValue","POWER_TO_RUBBER_OFFSET_MAP","SCALE_KEYFRAMES","responsiveRubberOffset","rubberOffset","isLastKeyframe","isEvenKeyframe","adjustedScaleX","adjustedScaleY","scaleXKey","scaleYKey","POWER_TO_PULSE_OFFSET_MAP","responsivePulseOffset","POWER_TO_SWING_FACTOR_MAP","TRANSLATE_DISTANCE","swing","swingDeg","totalDuration","translateBefore","translateAfter","POWER_TO_WIGGLE_FACTOR_MAP","TRANSFORM_KEYFRAMES","responsiveWiggleFactor","wiggleFactor","currentRotation","accRotate","rotateValue","translateYValue","rotateKey","translateYKey","ongoingAnimations","Bounce","Breathe","Cross","Flash","Flip","Fold","Jello","Poke","Rubber","Pulse","Spin","Swing","Wiggle","CustomMouse","v","active","paramsMap","AiryMouseAnimation","progressX","progressY","invert","axis","transitionDuration","transitionEasing","inverted","animationOptions","BlobMouseAnimation","BlurMouseAnimation","maxScale","rotateX","rotateY","transform","progressDistance","filter","easingMap","TrackMouseAnimation","createTrack","ScaleMouseAnimation","scaleBoth","scaleDirection","SkewMouseAnimation","SpinMouseAnimation","transformOrigins","SwivelMouseAnimation","invertVertical","pivotAxis","Tilt3DMouseAnimation","Track3DMouseAnimation","mouseAnimations","AiryMouse","BlobMouse","BlurMouse","BounceMouse","CreateCustomMouse","ScaleMouse","SkewMouse","SpinMouse","SwivelMouse","Tilt3DMouse","Track3DMouse","TrackMouse","measureCompHeight","measures","assignToCss","getMasterPage","getWixAdsHeight","wixAds","getSiteHeight","masterPage","measureSiteHeight","getScaleFromPerspectiveAndZ","EASE_IN","EASE_OUT","PERSPECTIVE","zoom","offsetPercentage","_options","DEFAULT_ZOOM","ZOOM_OUT_FACTOR","DIRECTION_TO_PARAMS","fromY","fromZ","toZ","toScale","toY","isPage","backgroundScrollAnimations","BgCloseUp","BgFade","BgFadeBack","BgFake3D","BgPan","BgParallax","BgPullBack","BgReveal","BgRotate","BgSkew","BgZoom","ImageParallax","win","debug","raf","FastDom","self","tasks","task","fn","ctx","scheduleFlush","remove","props","child","mixin","fastdom","flush","writes","reads","array","item","source","exports","module","this","getElement","id","ownerDocument","getElementMotionPart","part","getDirection","alternate","getLength","getRange","add","isEnd","getRanges","measure","mutate","getNamedEffect","animation_","effectId","getEffectsData","trigger","isNotAScrubTrigger","getWebAnimationEffect","preset","domApi","getWebAnimation","mouseAnimationPreset","namedEffect","animationsData","data","isViewProgress","effectTarget","keyframeEffect","startOffset","endOffset","_offset","_offset2","startOffsetToWrite","endOffsetToWrite","resolve","prepareAnimation","getElementCSSAnimation","getElementAnimation","effectNames","animationNames","anim","filteredAnimations","getScrubScene","sceneOptions","disabled","allowActiveEvent","rest","typeSpecificOptions","viewSource","ready","partialAnimation","__","centeredToTarget","getAnimation","reducedMotion","applySelectorCondition","baseSelector","predicate","generateId","c","createTransitionCSS","transition","properties","childSelector","selectorCondition","transitions","styleProperty","property","styleProperties","escapedKey","stateSelector","dataAttrSelector","finalStateSelector","finalDataAttrSelector","result","transitionSelector","finalTransitionSelector","getMediaQuery","conditionNames","conditions","conditionContent","conditionName","condition","getSelectorCondition","effectToAnimationOptions","rangeStart","rangeEnd","addHandlerToMap","handlersMap","handlerObj","handlers","removeElementFromHandlerMap","handlerMap","cleanup","otherKey","SAFE_OBSERVER_CONFIG","observers","elementFirstRun","elementObserverMap","viewEnterOptions","setOptions","getObserver","isSafeMode","observer","entries","entry","sourceHeight","rootHeight","threshold","safeObserver","handler","addViewEnterHandler","removeViewEnterHandler","viewEnterHandler","defaultTo","obj","defaults","lerp","b","res","deltaFromStart","deltaFromEnd","frameThrottle","throttled","debounce","interval","debounced","parseOffsetCalc","offsetString","absoluteOffsetContext","match","transformAbsoluteOffsetToNumber","transformRangeToPosition","viewportSize","percentage","startPosition","computeStickinessIntoFullRange","offsetTree","absoluteStartOffset","absoluteEndOffset","isHorizontal","accumulatedOffset","newAbsoluteRange","node","sticky","offsetFromViewEnd","stuckStart","isBeforeStart","isInsideDuration","extraOffset","parentSize","elementOffset","elementSize","transformSceneRangesToOffsets","scene","startRange","endRange","overrideDuration","startAdd","endAdd","getIsSticky","getIsFixed","root","getStickyStartOffset","getStickyEndOffset","getRectStart","isSticky","getStickyData","stickyStart","stickyEnd","hasStickyStart","hasStickyEnd","getTransformedSceneGroup","scenes","size","elementLayoutStart","nodeStyle","VIEWPORT_RESIZE_INTERVAL","DEFAULTS","calcProgress","getViewportSize","getAbsoluteOffsetContext","getController","_config","horizontal","scenesByElement","lastP","viewportObserver","rangesResizeObserver","viewportResizeHandler","scrollportResizeObserver","rangesToObserve","acc","sceneGroup","targetToSceneGroup","transformedSceneGroup","localIndex","newRanges","newSceneGroup","intersections","intersection","scenesArray","tick","vp","velocity","destroy","Scroll","isDocumentRoot","scrollPosition","clearLerpFrame","hasLerp","dp","factorP","scrollManagerMap","scrollOptionsGetter","registerOptionsGetter","getter","addViewProgressHandler","triggerParams","animationGroup","scroll","s","removeViewProgressHandler","viewProgressHandler","createTimeEffectHandler","initialPlay","createTransitionHandler","targetController","listContainer","listItemSelector","method","isToggle","shouldSetStateOnElement","method_","addHoverHandler","allowA11yTriggers","isStateTrigger","once","removeHoverHandler","hoverHandler","addClickHandler","removeClickHandler","clickHandler","clamp","min","max","getRect","el","testPointerOffsetDprBug","DPR","fixRequired","testPointerOffsetScrollBug","startY","currentY","sampleOffsetY","scrollHandler","testScrollOffsetsForWebKitPointerBug","scrollOffsets","listeners","pointers","initScrollendPolyfill","touchStartHandler","touch","touchEndHandler","addScrollendListener","timeout","removeScrollendPolyfill","scrollListener","evt","centerToTargetFactory","layerCenterX","isXStartFarthest","xDuration","x0","layerCenterY","isYStartFarthest","yDuration","y0","scrollendCallback","lastProgress","windowResize","observeRootResize","hasCenteredToTarget","resizeObserver","windowResizeHandler","scrollendHandler","removeScrollendListener","normalizedX","normalizedY","MOVEMENT_RESET_DELAY","shouldFixSynthPointer","Pointer","_measure","newX","newY","now","resetMovement","pointerManagerMap","pointerOptionsGetter","addPointerMoveHandler","pointer","removePointerMoveHandler","pointerMoveHandler","addAnimationEndHandler","removeAnimationEndHandler","animationEndHandler","withA11y","interactOptions","TRIGGER_TO_HANDLER_MODULE_MAP","_convertToKeyTemplate","Interact","parseConfig","controller","processedKey","interactionId_","interactionId","mql","instance","interactionIdCounter","getSelector","d","asCombinator","addItemFilter","itemFilter","interactions","interaction_","interactionIdx","effects_","effects","interaction","referencedEffect","_getElementsFromData","container","_queryItemElement","elements","_getInteractionElements","sourceElements","targetElements","_applyInteraction","targetKey","isSourceArray","isTargetArray","sourceEl","targetEl","addInteraction","_addInteraction","sourceKey","sourceController","interactionVariations","interactionsToApply","targetKey_","addEffectsForTarget","interactionIds","args","triggers","hasTriggers","hasEffects","addListItems","selectors","removeListItems","modules","INTERACT_EFFECT_DATA_ATTR","InteractionController","cssRules","position","cssRule","isLegacy","currentEffects","trimmed","list","removedElements","addedElements","generate"],"mappings":"AAAO,SAASA,GAA6BC,GAAa;AACxD,SAAO,CAAC,GAAGA,EAAI,SAAS,cAAc,CAAC,EAAE;AAAA,IACvC,CAAC,CAACC,GAAGC,CAAY,MAAMA;AAAA,EAAA;AAE3B;AAGO,SAASC,GAAmBC,GAAkBJ,GAAa;AAChE,QAAMK,IAAON,GAA6BC,CAAG;AAC7C,MAAIM,IAAQ;AACZ,SAAOD,EAAK,SACRD,EAAS,QAAQ,QAAQ,MAAM,IAAIC,EAAKC,GAAO,CAAC,OAAO,IAAI,IAC3DF;AACN;ACbA,SAASG,GAAQC,GAAG;AAClB;AAEA,SAAOD,KAAwB,OAAO,UAArB,cAA2C,OAAO,OAAO,YAA1B,WAAqC,SAAUC,GAAG;AAChG,WAAO,OAAOA;AAAA,EAChB,IAAI,SAAUA,GAAG;AACf,WAAOA,KAAmB,OAAO,UAArB,cAA+BA,EAAE,gBAAgB,UAAUA,MAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,EACpH,GAAGD,GAAQC,CAAC;AACd;ACPA,SAASC,GAAY,GAAGC,GAAG;AACzB,MAAgBH,GAAQ,CAAC,KAArB,YAA0B,CAAC,EAAG,QAAO;AACzC,MAAII,IAAI,EAAE,OAAO,WAAW;AAC5B,MAAeA,MAAX,QAAc;AAChB,QAAIC,IAAID,EAAE,KAAK,GAAGD,CAAc;AAChC,QAAgBH,GAAQK,CAAC,KAArB,SAAwB,QAAOA;AACnC,UAAM,IAAI,UAAU,8CAA8C;AAAA,EACpE;AACA,UAAqBF,MAAb,WAAiB,SAAS,QAAQ,CAAC;AAC7C;ACRA,SAASG,GAAc,GAAG;AACxB,MAAID,IAAIH,GAAY,GAAG,QAAQ;AAC/B,SAAmBF,GAAQK,CAAC,KAArB,WAAyBA,IAAIA,IAAI;AAC1C;ACJA,SAASE,EAAgBH,GAAGD,GAAGK,GAAG;AAChC,UAAQL,IAAIG,GAAcH,CAAC,MAAMC,IAAI,OAAO,eAAeA,GAAGD,GAAG;AAAA,IAC/D,OAAOK;AAAA,IACP,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,UAAU;AAAA,EACd,CAAG,IAAIJ,EAAED,CAAC,IAAIK,GAAGJ;AACjB;ACDO,MAAMK,GAAe;AAAA,EAC1B,YAAYC,GAAYC,GAAS;AAC/B,IAAAJ,EAAgB,MAAM,cAAc,MAAM,GAC1CA,EAAgB,MAAM,WAAW,MAAM,GACvCA,EAAgB,MAAM,SAAS,MAAM,GACrCA,EAAgB,MAAM,SAAS,MAAM,GACrC,KAAK,aAAaG,GAClB,KAAK,UAAUC,GACf,KAAK,QAAoCA,GAAQ,YAAa,QAAQ,QAAO,GAC7E,KAAK,QAAQD,EAAW,CAAC,aAAa;AAAA,EACxC;AAAA,EACA,cAAc;AACZ,QAAIE;AACJ,aAASA,IAAoB,KAAK,WAAW,CAAC,MAAM,SAASA,IAAoBA,EAAkB,WAAW,OAAO,SAASA,EAAkB,kBAAiB,EAAG,aAAa;AAAA,EACnL;AAAA,EACA,MAAM,KAAKC,GAAU;AACnB,UAAM,KAAK;AACX,eAAWC,KAAa,KAAK;AAC3B,MAAAA,EAAU,KAAI;AAKhB,UAAM,QAAQ,IAAI,KAAK,WAAW,IAAI,CAAAA,MAAaA,EAAU,KAAK,CAAC,GAC/DD,KACFA,EAAQ;AAAA,EAEZ;AAAA,EACA,QAAQ;AACN,eAAWC,KAAa,KAAK;AAC3B,MAAAA,EAAU,MAAK;AAAA,EAEnB;AAAA,EACA,MAAM,QAAQD,GAAU;AACtB,UAAM,KAAK;AACX,eAAWC,KAAa,KAAK;AAC3B,MAAAA,EAAU,QAAO;AAKnB,UAAM,QAAQ,IAAI,KAAK,WAAW,IAAI,CAAAA,MAAaA,EAAU,KAAK,CAAC,GAC/DD,KACFA,EAAQ;AAAA,EAEZ;AAAA,EACA,SAASE,GAAG;AACV,eAAWD,KAAa,KAAK,YAAY;AACvC,YAAM;AAAA,QACJ,gBAAAE;AAAA,MACR,IAAUF,EAAU,OAAO,kBAAiB,GAChC;AAAA,QACJ,OAAAG;AAAA,MACR,IAAUH,EAAU,OAAO,UAAS;AAC9B,MAAAA,EAAU,gBAAgBG,KAAS,MAAMD,KAAkB,MAAMD;AAAA,IACnE;AAAA,EACF;AAAA,EACA,SAAS;AACP,eAAWD,KAAa,KAAK;AAC3B,MAAAA,EAAU,OAAM;AAAA,EAEpB;AAAA,EACA,gBAAgBI,GAAM;AACpB,eAAWJ,KAAa,KAAK;AAC3B,MAAAA,EAAU,eAAeI;AAAA,EAE7B;AAAA,EACA,MAAM,SAASL,GAAU;AACvB,QAAI;AACF,YAAM,QAAQ,IAAI,KAAK,WAAW,IAAI,CAAAC,MAAaA,EAAU,QAAQ,CAAC;AACtE,YAAMK,IAAI,KAAK,WAAW,CAAC;AAC3B,UAAIA,KAAK,CAAC,KAAK,OAAO;AACpB,YAAIC;AACJ,cAAMC,KAAUD,IAAYD,EAAE,WAAW,OAAO,SAASC,EAAU;AACnE,YAAIC,GAAQ;AACV,gBAAMC,IAAW,IAAI,MAAM,cAAc;AACzC,UAAAD,EAAO,cAAcC,CAAQ;AAAA,QAC/B;AAAA,MACF;AACA,MAAAT,EAAQ;AAAA,IACV,SAASU,GAAQ;AACf,cAAQ,KAAK,6DAA6DA,CAAM;AAAA,IAClF;AAAA,EACF;AAAA,EACA,IAAI,WAAW;AACb,WAAO,QAAQ,IAAI,KAAK,WAAW,IAAI,CAAAT,MAAaA,EAAU,QAAQ,CAAC;AAAA,EACzE;AAAA,EACA,IAAI,YAAY;AACd,QAAIU;AACJ,YAAQA,IAAqB,KAAK,WAAW,CAAC,MAAM,OAAO,SAASA,EAAmB;AAAA,EACzF;AACF;ACxFO,MAAMC,KAAS,OAAK,GAOdC,KAAS,OAAK,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,GAO1CC,KAAU,OAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,GAOvCC,KAAY,OAAK,EAAE,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,GAOhDC,KAAS,OAAK,KAAK,GAOnBC,KAAU,OAAK,KAAK,IAAI,MAAM,GAO9BC,KAAY,OAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,GAOhEC,KAAU,OAAK,KAAK,GAOpBC,KAAW,OAAK,KAAK,IAAI,MAAM,GAO/BC,KAAa,OAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,GAOjEC,KAAU,OAAK,KAAK,GAOpBC,KAAW,OAAK,KAAK,IAAI,MAAM,GAO/BC,KAAa,OAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,GAOjEC,KAAU,OAAK,KAAK,GAOpBC,KAAW,OAAK,KAAK,IAAI,MAAM,GAO/BC,KAAa,OAAK,IAAI,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,GAOlEC,KAAS,OAAK,MAAM,IAAI,IAAI,MAAM,KAAK,IAAI,KAO3CC,KAAU,OAAK,MAAM,IAAI,IAAI,IAAI,MAAM,MAAM,IAO7CC,KAAY,OAAK,MAAM,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,MAAM,MAAM,IAAI,OAAO,GAO5GC,KAAS,OAAK,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,GAOtCC,KAAU,OAAK,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,GAOzCC,KAAY,OAAK,IAAI,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,IAAI,KAAK,GAO/GC,KAAS,OAAK,UAAU,KAAK,IAAI,UAAU,KAAK,GAOhDC,KAAU,OAAK,IAAI,WAAW,IAAI,MAAM,IAAI,WAAW,IAAI,MAAM,GAQjEC,KAAY,SAAU,GAAGC,GAAG;AACvC,SAAIA,MAAM,WACRA,IAAI,UAAU,QAET,IAAI,OAAO,IAAI,MAAM,MAAMA,IAAI,KAAK,IAAI,IAAIA,KAAK,MAAM,IAAI,IAAI,MAAM,MAAMA,IAAI,MAAM,IAAI,IAAI,KAAKA,KAAK,KAAK;AACrH,GACaC,KAAY;AAAA,EACvB,QAAA1B;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AACF,GAKaG,IAAa;AAAA,EACxB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AACb;AC3OO,SAASC,EAASC,GAAWC,GAAWC,GAAWC,GAAWC,GAAK;AACxE,UAAQA,IAAMJ,MAAcG,IAAYD,MAAcD,IAAYD,KAAaE;AACjF;AASO,SAASG,GAAWC,GAAMC,GAAO;AACtC,MAAI,CAACC,GAAIC,CAAE,IAAIH,GACX,CAACI,GAAIC,CAAE,IAAIJ;AACf,SAAO,KAAK,MAAMG,IAAKF,MAAO,KAAKG,IAAKF,MAAO,CAAC;AAClD;AAYO,SAASG,GAAcC,GAAIC,GAAIC,GAAQ;AAC5C,EAAIF,MAAO,WACTA,IAAK,CAAC,GAAG,CAAC,IAERC,MAAO,WACTA,IAAK,CAAC,GAAG,CAAC;AAKZ,QAAME,IAAQ,KAAK,MAAMF,EAAG,CAAC,IAAID,EAAG,CAAC,GAAGC,EAAG,CAAC,IAAID,EAAG,CAAC,CAAC,IAAI,MAAM,KAAK;AACpE,UAAQ,MAAME,IAASC,KAAS;AAClC;AACO,MAAMC,IAAuB,MAC9BC,KAAyB;AAAA,EAC7B,SAAS,CAAAC,MAAS;AAChB,QAAI;AAAA,MACF,KAAAC;AAAA,MACA,QAAAC;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC;AAAA,IACN,IAAQJ;AACJ,WAAO,GAAGG,CAAI,KAAKF,CAAG,MAAMG,CAAK,KAAKH,CAAG,MAAMG,CAAK,KAAKF,CAAM,MAAMC,CAAI,KAAKD,CAAM;AAAA,EACtF;AAAA,EACA,KAAK,CAAAG,MAAS;AACZ,QAAI;AAAA,MACF,KAAAJ;AAAA,MACA,MAAAE;AAAA,MACA,OAAAC;AAAA,MACA,SAAAE;AAAA,IACN,IAAQD;AACJ,WAAO,GAAGF,CAAI,KAAKF,CAAG,MAAMG,CAAK,KAAKH,CAAG,MAAMG,CAAK,KAAKH,IAAMK,CAAO,MAAMH,CAAI,KAAKF,IAAMK,CAAO;AAAA,EACpG;AAAA,EACA,OAAO,CAAAC,MAAS;AACd,QAAI;AAAA,MACF,KAAAN;AAAA,MACA,QAAAC;AAAA,MACA,OAAAE;AAAA,MACA,SAAAE;AAAA,IACN,IAAQC;AACJ,WAAO,GAAGH,IAAQE,CAAO,KAAKL,CAAG,MAAMG,CAAK,KAAKH,CAAG,MAAMG,CAAK,KAAKF,CAAM,MAAME,IAAQE,CAAO,KAAKJ,CAAM;AAAA,EAC5G;AAAA,EACA,QAAQ,CAAAM,MAAS;AACf,QAAI;AAAA,MACF,SAAAC;AAAA,MACA,SAAAC;AAAA,MACA,SAAAJ;AAAA,IACN,IAAQE;AACJ,WAAO,GAAGC,IAAUH,IAAU,CAAC,KAAKI,IAAUJ,IAAU,CAAC,MAAMG,IAAUH,IAAU,CAAC,KAAKI,IAAUJ,IAAU,CAAC,MAAMG,IAAUH,IAAU,CAAC,KAAKI,IAAUJ,IAAU,CAAC,MAAMG,IAAUH,IAAU,CAAC,KAAKI,IAAUJ,IAAU,CAAC;AAAA,EAC1N;AAAA,EACA,QAAQ,CAAAK,MAAS;AACf,QAAI;AAAA,MACF,QAAAT;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC;AAAA,MACA,SAAAE;AAAA,IACN,IAAQK;AACJ,WAAO,GAAGR,CAAI,KAAKD,IAASI,CAAO,MAAMF,CAAK,KAAKF,IAASI,CAAO,MAAMF,CAAK,KAAKF,CAAM,MAAMC,CAAI,KAAKD,CAAM;AAAA,EAChH;AAAA,EACA,MAAM,CAAAU,MAAS;AACb,QAAI;AAAA,MACF,KAAAX;AAAA,MACA,QAAAC;AAAA,MACA,MAAAC;AAAA,MACA,SAAAG;AAAA,IACN,IAAQM;AACJ,WAAO,GAAGT,CAAI,KAAKF,CAAG,MAAME,IAAOG,CAAO,KAAKL,CAAG,MAAME,IAAOG,CAAO,KAAKJ,CAAM,MAAMC,CAAI,KAAKD,CAAM;AAAA,EACxG;AAAA,EACA,UAAU,CAAAW,MAAS;AACjB,QAAI;AAAA,MACF,KAAAZ;AAAA,MACA,QAAAC;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC;AAAA,MACA,SAAAE;AAAA,IACN,IAAQO;AACJ,WAAO,GAAGV,CAAI,KAAKF,IAAMK,IAAU,CAAC,MAAMF,CAAK,KAAKH,IAAMK,IAAU,CAAC,MAAMF,CAAK,KAAKF,IAASI,IAAU,CAAC,MAAMH,CAAI,KAAKD,IAASI,IAAU,CAAC;AAAA,EAC9I;AAAA,EACA,YAAY,CAAAQ,MAAU;AACpB,QAAI;AAAA,MACF,KAAAb;AAAA,MACA,QAAAC;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC;AAAA,MACA,SAAAE;AAAA,IACN,IAAQQ;AACJ,WAAO,GAAGX,IAAOG,IAAU,CAAC,KAAKL,CAAG,MAAMG,IAAQE,IAAU,CAAC,KAAKL,CAAG,MAAMG,IAAQE,IAAU,CAAC,KAAKJ,CAAM,MAAMC,IAAOG,IAAU,CAAC,KAAKJ,CAAM;AAAA,EAC9I;AACF;AACO,SAASa,EAAqBC,GAAQ;AAC3C,MAAI;AAAA,IACF,WAAAC;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,QAAAC,IAAS;AAAA,IACT,SAAAb,IAAU;AAAA,EACd,IAAMU;AACJ,QAAMf,KAAO,IAAIkB,KAAU,IAAI,KACzBhB,KAAQ,IAAIe,KAAU,IAAI,KAC1Bd,IAAQ,MAAMD,KAAQ,IAAIe,KAAU,KACpChB,IAAS,MAAMD,KAAO,IAAIkB,KAAU,KACpCV,KAAWL,IAAQD,KAAQ,GAC3BO,KAAWR,IAASD,KAAO;AACjC,SAAO,WAAWF,GAAuBkB,CAAS,EAAE;AAAA,IAClD,KAAAhB;AAAA,IACA,QAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,SAAAK;AAAA,IACA,SAAAC;AAAA,IACA,SAAAJ;AAAA,EACJ,CAAG,CAAC;AACJ;AAKO,SAASc,EAAqBC,GAAqBJ,GAAWK,GAAY;AAC/E,QAAMhG,IAAQ+F,EAAoB,QAAQJ,CAAS,GAC7CM,IAASF,EAAoB,QAC7BG,IAAU,KAAK,OAAOF,KAAc,KAAK,MAAMC,CAAM,GACrDE,KAAYnG,KAASiG,IAAS,KAAKC,KAAWD;AACpD,SAAOF,EAAoBI,CAAQ;AACrC;AACO,SAASC,GAAmB7B,GAAO8B,GAAU;AAClD,QAAMC,IAAU/B,IAAQ,KAAK,KAAK,KAC5BgC,IAAI,KAAK,IAAID,CAAO,IAAID,GACxBG,IAAI,KAAK,IAAIF,CAAO,IAAID;AAC9B,SAAO,CAACE,GAAGC,CAAC;AACd;AACO,SAASC,EAAYC,GAAM;AAChC,SAAOA,MAAS,eAAe,MAAMA,KAAQ;AAC/C;AACO,SAASC,EAAUC,GAAQ;AAChC,SAAOA,IAASvD,EAAWuD,CAAM,KAAKA,IAASvD,EAAW;AAC5D;AACO,SAASwD,GAAYD,GAAQ;AAClC,SAAOA,IAASxD,GAAUwD,CAAM,IAAI;AACtC;AACO,SAASE,GAAgBF,GAAQ;AACtC,MAAI,CAACvD,EAAWuD,CAAM;AACpB,WAAO;AAAA,MACL,IAAIA;AAAA,MACJ,OAAOA;AAAA,MACP,KAAKA;AAAA,IACX;AAEE,QAAMG,IAAOH,EAAO,QAAQ,WAAW,EAAE;AACzC,SAAIG,MAAS,WACJ;AAAA,IACL,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,KAAK;AAAA,EACX,IAES;AAAA,IACL,IAAI,GAAGA,CAAI;AAAA,IACX,OAAO,GAAGA,CAAI;AAAA,IACd,KAAK,GAAGA,CAAI;AAAA,EAChB;AACA;AACA,MAAMC,KAA8B;AAAA,EAClC,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,aAAa;AAAA,EACb,SAAS;AAAA,EACT,QAAQ;AACV;AACO,SAASC,EAAyBC,GAAO;AAC9C,SAAOA,KAASF,GAA4BE,CAAK,KAAK;AACxD;AACO,SAASC,GAAuB5C,GAAO;AAC5C,QAAM6C,IAAa7C,IAAQ,KAAK,KAAK,KAC/B8C,IAAW,KAAK,MAAM,KAAK,IAAID,CAAU,IAAI,EAAE,IAAI,IACnDE,IAAW,KAAK,MAAM,KAAK,IAAIF,CAAU,IAAI,EAAE,IAAI,IAGnDG,IAAa,KAAK,KAAKF,CAAQ,GAC/BG,IAAa,KAAK,KAAKF,CAAQ,GAC/BzC,IAAO,2BACPF,IAAM,0BAGN8C,IAAYF,IAAaA,MAAe,KAAK,SAAS1C,CAAI,aAAa,YAAYA,CAAI,MAAM,GAC7F6C,IAAYF,IAAaA,MAAe,KAAK,SAAS7C,CAAG,aAAa,YAAYA,CAAG,MAAM;AAGjG,MAAIgD;AACJ,QAAMC,IAAS,QAAQH,CAAS,MAAMJ,CAAQ,KACxCQ,IAAS,QAAQH,CAAS,MAAMJ,CAAQ;AAC9C,SAAKD,IAEOC,IAGVK,IAAa,OAAOE,CAAM,KAAKD,CAAM,MAFrCD,IAAaC,IAFbD,IAAaE,GAMR;AAAA;AAAA,IAEL,GAAG,QAAQF,CAAU,MAAMN,CAAQ;AAAA,IACnC,GAAG,QAAQM,CAAU,MAAML,CAAQ;AAAA,EACvC;AACA;AACO,SAASQ,GAAiBC,GAASC,GAAQ;AAChD,MAAInD,IAAOkD,EAAQ,YACfpD,IAAMoD,EAAQ,WACdE,IAAeF,EAAQ;AAC3B,SAAOE,KACD,EAAAD,KAAUC,MAAiBD;AAG/B,IAAAnD,KAAQoD,EAAa,YACrBtD,KAAOsD,EAAa,WACpBA,IAAeA,EAAa;AAE9B,SAAO;AAAA,IACL,MAAApD;AAAA,IACA,KAAAF;AAAA,EACJ;AACA;AACA,MAAMuD,KAA2B,CAACvC,GAAWwC,GAAcC,MAAc;AACvE,QAAMC,IAAc1C,MAAc,SAASA,MAAc,QACnD2C,IAAYD,IAAcF,IAAe,GACzCI,IAAUF,IAAc,IAAIF,GAC5BK,IAAMH,IAAc,KAAK,GACzBI,IAAiB9C,MAAc,SAASA,MAAc,UACtD+C,IAAgB,CAAA,GAChBC,IAAc,CAAA;AACpB,WAASrI,IAAIgI,GAAWhI,MAAMiI,GAASjI,KAAKkI,GAAK;AAC/C,UAAMI,IAA4B,QAAQtI,IAAIkI,KAAOL,IAC/CU,IAAY,OAAOvI,IAAI6H,KAAgB;AAC7C,QAAIW;AACJ,QAAIV,GAAW;AACb,YAAMW,IAAgBV,IAAc,KAAKF,IAAe7H,KAAK6H,IAAe,IAAI7H,IAAI6H;AAKpF,MAAAW,IAAUT,IAAc,OAAO,MAAMO,KAA6BG,IAAgBH,IAA4BG;AAAA,IAChH;AACE,MAAAD,IAAUF;AAEZ,IAAAE,KAAW,GACPL,KACFC,EAAc,KAAK,MAAMG,CAAS,WAAWA,CAAS,WAAWA,CAAS,SAASA,CAAS,GAAG,GAC/FF,EAAY,KAAK,MAAME,CAAS,WAAWA,CAAS,WAAWC,CAAO,SAASA,CAAO,GAAG,MAEzFJ,EAAc,KAAK,GAAGG,CAAS,SAASA,CAAS,WAAWA,CAAS,WAAWA,CAAS,MAAM,GAC/FF,EAAY,KAAK,GAAGE,CAAS,SAASA,CAAS,WAAWC,CAAO,WAAWA,CAAO,MAAM;AAAA,EAE7F;AACA,SAAO;AAAA,IACL,OAAOJ;AAAA,IACP,KAAKC;AAAA,EACT;AACA;AACO,SAASK,GAAqBrD,GAAWwC,GAAcC,GAAWa,GAAS;AAChF,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,KAAAC;AAAA,EACJ,IAAMjB,GAAyBvC,GAAWwC,GAAcC,CAAS;AAC/D,SAAIa,MACFC,EAAM,QAAO,GACbC,EAAI,QAAO,IAEN;AAAA,IACL,WAAW,WAAWD,EAAM,KAAK,IAAI,CAAC;AAAA,IACtC,SAAS,WAAWC,EAAI,KAAK,IAAI,CAAC;AAAA,EACtC;AACA;AACO,SAASC,EAAYzF,GAAK0F,GAAW;AAC1C,SAAIA,MAAc,WAChBA,IAAY,IAEP,WAAW1F,EAAI,QAAQ0F,CAAS,CAAC;AAC1C;AACO,SAASC,EAAgBC,GAAQ7J,GAAK8J,GAAUC,GAAU;AAC/D,SAAID,MAAa,WACfA,IAAW,KAETC,MAAa,WACfA,IAAW,KAEND,IAAWD,EAAO7J,CAAG,IAAI,OAAOA,CAAG,GAAG+J,IAAW,IAAIA,CAAQ,KAAK,EAAE;AAC7E;AACO,SAASC,EAAgBC,GAAUzI,GAAO0I,GAAU;AACzD,EAAIA,MAAa,WACfA,IAAW;AAEb,QAAMC,IAAYF,KAAY,GAExBG,IAAeV,EAAYS,KAAaA,KAD/B3I,KAAS,GACyC;AACjE,SAAO0I,IAAWE,EAAa,SAAQ,EAAG,QAAQ,OAAO,EAAE,IAAIA;AACjE;ACnUO,MAAMC,GAAgB;AAAA,EAC3B,YAAYC,GAAc1I,GAAQ2I,GAAeC,GAAe;AAC9D,IAAA1J,EAAgB,MAAM,cAAc,MAAM,GAC1CA,EAAgB,MAAM,gBAAgB,MAAM,GAC5CA,EAAgB,MAAM,YAAY,MAAM,GACxCA,EAAgB,MAAM,aAAa,MAAM,GACzCA,EAAgB,MAAM,kBAAkB,MAAM;AAE9C,UAAM2J,IAAS,IAAI,eAAe7I,GAAQ,CAAA,GAAI;AAAA,MAC5C,GAAG2I;AAAA,MACH,WAAW;AAAA,IACjB,CAAK,GACK;AAAA,MACJ,UAAAG;AAAA,IACN,IAAQF;AACJ,SAAK,aAAa,IAAI,UAAUC,GAAQC,CAAQ,GAChD,KAAK,YAAY,MACjB,KAAK,WAAW,MAChB,KAAK,eAAe,CAAAC,MAAYL,EAAaG,EAAO,QAAQE,CAAQ,GAGpE,KAAK,iBAAiB,CAAA1K,MAAK;AACzB,UAAI2K;AACJ,OAAOA,IAAU,KAAK,OAAO,WAAW,QAAQA,EAAQ,cAAa,EAAG,KAAK,CAAAlJ,MAAKA,MAAM,KAAK,UAAU,KACrG,KAAK,OAAM;AAAA,IAEf,GACA,KAAK,iBAAiB,UAAU,KAAK,cAAc,GACnD,KAAK,iBAAiB,UAAU,KAAK,cAAc;AAAA,EACrD;AAAA;AAAA,EAGA,QAAQ;AACN,QAAI;AACF,UAAImJ;AACJ,YAAMF,MAAaE,IAAe,KAAK,WAAW,OAAO,SAASA,EAAa,kBAAiB,EAAG,aAAa;AAChH,UAAIF,MAAa,KAAK,UAAU;AAC9B,YAAIG;AACJ,SAACA,IAAqB,KAAK,iBAAiB,QAAQA,EAAmB,KAAK,MAAMH,CAAQ,GAC1F,KAAK,WAAWA;AAAA,MAClB;AACA,WAAK,YAAY,sBAAsB,MAAM;AAC3C,aAAK,MAAK;AAAA,MACZ,CAAC;AAAA,IACH,SAASI,GAAO;AACd,WAAK,YAAY,MACjB,QAAQ,MAAM,yCAAyC,KAAK,EAAE,YAAYA,aAAiB,QAAQA,EAAM,UAAUA,CAAK,EAAE;AAAA,IAC5H;AAAA,EACF;AAAA;AAAA,EAGA,IAAI,cAAc;AAChB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,YAAYC,GAAM;AACpB,SAAK,WAAW,cAAcA;AAAA,EAChC;AAAA,EACA,IAAI,YAAY;AACd,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,UAAUA,GAAM;AAClB,SAAK,WAAW,YAAYA;AAAA,EAC9B;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,aAAaC,GAAO;AACtB,SAAK,WAAW,eAAeA;AAAA,EACjC;AAAA;AAAA,EAGA,IAAI,KAAK;AACP,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,GAAGC,GAAK;AACV,SAAK,WAAW,KAAKA;AAAA,EACvB;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,OAAO,GAAG;AACZ,SAAK,WAAW,SAAS;AAAA,EAC3B;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,SAASC,GAAI;AACf,SAAK,WAAW,WAAWA;AAAA,EAC7B;AAAA;AAAA,EAGA,IAAI,WAAW;AACb,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,UAAU;AACZ,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,YAAY;AACd,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA;AAAA,EAGA,IAAI,WAAW;AACb,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,SAASC,GAAI;AACf,SAAK,WAAW,WAAWA;AAAA,EAC7B;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,SAASA,GAAI;AACf,SAAK,WAAW,WAAWA;AAAA,EAC7B;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,SAASA,GAAI;AACf,SAAK,WAAW,WAAWA;AAAA,EAC7B;AAAA;AAAA,EAGA,OAAO;AACL,SAAK,WAAW,KAAI,GACpB,qBAAqB,KAAK,SAAS,GACnC,KAAK,YAAY,sBAAsB,MAAM,KAAK,MAAK,CAAE;AAAA,EAC3D;AAAA,EACA,QAAQ;AACN,SAAK,WAAW,MAAK,GACrB,qBAAqB,KAAK,SAAS,GACnC,KAAK,YAAY;AAAA,EACnB;AAAA,EACA,SAAS;AACP,SAAK,oBAAoB,UAAU,KAAK,cAAc,GACtD,KAAK,oBAAoB,UAAU,KAAK,cAAc,GACtD,KAAK,WAAW,OAAM,GAEtB,KAAK,aAAa,IAAI,GACtB,qBAAqB,KAAK,SAAS,GACnC,KAAK,YAAY;AAAA,EACnB;AAAA,EACA,eAAe;AACb,YAAQ,KAAK,4FAA4F;AAAA,EAC3G;AAAA;AAAA,EAGA,SAAS;AACP,SAAK,WAAW,OAAM;AAAA,EACxB;AAAA,EACA,UAAU;AACR,SAAK,WAAW,QAAO;AAAA,EACzB;AAAA,EACA,UAAU;AACR,SAAK,WAAW,QAAO;AAAA,EACzB;AAAA,EACA,mBAAmBC,GAAc;AAC/B,SAAK,WAAW,mBAAmBA,CAAY;AAAA,EACjD;AAAA;AAAA,EAGA,iBAAiBrE,GAAMsE,GAAUpK,GAAS;AACxC,SAAK,WAAW,iBAAiB8F,GAAMsE,GAAUpK,CAAO;AAAA,EAC1D;AAAA,EACA,oBAAoB8F,GAAMsE,GAAUpK,GAAS;AAC3C,SAAK,WAAW,oBAAoB8F,GAAMsE,GAAUpK,CAAO;AAAA,EAC7D;AAAA,EACA,cAAcqK,GAAO;AACnB,WAAO,KAAK,WAAW,cAAcA,CAAK;AAAA,EAC5C;AACF;ACtLA,MAAMC,KAAuB;AAAA,EAC3B,UAAU;AAAA,EACV,YAAY;AACd,GACMC,KAAW,IACXC,KAAa;AAAA,EACjB,IAAI;AAAA,IACF,WAAW,CAACD;AAAAA,IACZ,SAAS;AAAA,EACb;AAAA,EACE,KAAK;AAAA,IACH,WAAW;AAAA,IACX,SAASA;AAAAA,EACb;AAAA,EACE,YAAY;AAAA,IACV,WAAW,CAACA;AAAAA,IACZ,SAASA;AAAAA,EACb;AACA;AACe,SAASE,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,WAAA+E,IAAY;AAAA,IACZ,OAAA2F,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACN2K,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7E4K,IAAaN,GAAqBvF,CAAS,GAC3C;AAAA,IACJ,WAAA8F;AAAA,IACA,SAAAC;AAAA,EACJ,IAAMN,GAAWE,CAAK;AAEpB,SAAO,CAAC;AAAA,IACN,GAAG1K;AAAA,IACH,MAAA2K;AAAA,IACA,QAJa;AAAA,IAKb,WAAW,CAAC;AAAA,MACV,WAAW,0CAA0CC,CAAU,IAAIC,CAAS;AAAA,IAClF,GAAO;AAAA,MACD,WAAW,yCAAyCD,CAAU,IAAIE,CAAO;AAAA,IAC/E,CAAK;AAAA,EACL,CAAG;AAYH;ACpDA,MAAMC,KAAiB;AAAA,EACrB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR;AACe,SAASN,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,MAAAgL,IAAO;AAAA,IACP,OAAAC;AAAA,IACA,OAAAP,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNkL,IAAaD,KAASF,GAAeE,CAAK,IAAIF,GAAeE,CAAK,IAAID,GACtEH,IAAYH,MAAU,QAAQ,IAAIQ,GAClCJ,IAAUJ,MAAU,QAAQQ,IAAa,GACzClF,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ;AACnF,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAW;AAAA,IACX,WAAW,CAAC;AAAA,MACV,QAAQ,QAAQ6E,CAAS;AAAA,IAC/B,GAAO;AAAA,MACD,QAAQ,QAAQC,CAAO;AAAA,IAC7B,CAAK;AAAA,EACL,CAAG;AAWH;ACrCe,SAASL,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,SAAAmL,IAAU;AAAA,IACV,OAAAT,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNoL,IAAQV,MAAU,OAClBG,IAAYO,IAAQ,2BAA2BD,GAC/CL,IAAUM,IAAQD,IAAU,0BAC5BnF,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ;AACnF,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAW,CAAC;AAAA,MACV,SAAS6E;AAAA,IACf,GAAO;AAAA,MACD,SAASC;AAAA,IACf,CAAK;AAAA,EACL,CAAG;AAWH;AC9BA,MAAMO,KAAmB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMf,KAAuB;AAAA,EAC3B,UAAU;AAAA,EACV,YAAY;AACd;AACe,SAASG,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,QAAAsL,IAAS;AAAA,IACT,WAAAvG,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,OAAAP,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNuL,IAAejB,GAAqBvF,CAAS,GAC7CyG,IAAYP,KAASI,GAAiBJ,CAAK,IAAII,GAAiBJ,CAAK,IAAIK,GAGzET,IAAYH,MAAU,QAAQ,IAAI,CAACc,GACnCV,IAAUJ,MAAU,OAAO,IAAIc,GAC/BxF,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ;AACnF,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,sBAAsBuF,CAAY,IAAIV,CAAS;AAAA,IAChE,GAAO;AAAA,MACD,WAAW,sBAAsBU,CAAY,IAAIT,CAAO;AAAA,IAC9D,CAAK;AAAA,EACL,CAAG;AAWH;AC5CA,MAAMW,KAAe,IACfC,IAAY;AAAA,EAChB,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACb;AAAA,EACE,QAAQ;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACb;AAAA,EACE,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACb;AACA,GACMC,KAAe;AAAA,EACnB,KAAK,CAAC,GAAG,GAAG;AAAA,EACZ,aAAa,CAAC,IAAI,GAAG;AAAA,EACrB,OAAO,CAAC,IAAI,CAAC;AAAA,EACb,gBAAgB,CAAC,IAAI,EAAE;AAAA,EACvB,QAAQ,CAAC,GAAG,EAAE;AAAA,EACd,eAAe,CAAC,KAAK,EAAE;AAAA,EACvB,MAAM,CAAC,KAAK,CAAC;AAAA,EACb,YAAY,CAAC,KAAK,GAAG;AAAA,EACrB,QAAQ,CAAC,GAAG,CAAC;AACf,GACMnB,KAAa;AAAA,EACjB,IAAI,CAACoB,GAAWC,GAAUC,OAAa;AAAA,IACrC,YAAY;AAAA,MACV,OAAOF;AAAA,MACP,QAAQE;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,EACA;AAAA,EACE,KAAK,CAACC,GAAYC,GAASF,OAAa;AAAA,IACtC,YAAY;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,OAAOE;AAAA,MACP,QAAQ,CAACF;AAAA,IACf;AAAA,EACA;AAAA,EACE,YAAY,CAACF,GAAWI,GAASF,OAAa;AAAA,IAC5C,YAAY;AAAA,MACV,OAAOF;AAAA,MACP,QAAQE;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,OAAOE;AAAA,MACP,QAAQ,CAACF;AAAA,IACf;AAAA,EACA;AACA;AACA,SAASG,GAAgBhJ,GAAM;AAC7B,MAAI;AAAA,IACF,OAAAgI;AAAA,IACA,OAAAP,IAAQ;AAAA,IACR,OAAAX,IAAQ;AAAA,EACZ,IAAM9G;AACJ,QAAMS,IAASuH,KAASS,EAAUT,CAAK,IAAIS,EAAUT,CAAK,EAAE,UAAU,KAAK,IAAIlB,CAAK,IAAI0B;AACxF,SAAO;AAAA,IACL,OAAOf,MAAU,QAAQ,QAAQ,GAAG,CAAChH,CAAM;AAAA,IAC3C,KAAKgH,MAAU,OAAO,QAAQ,GAAGhH,CAAM;AAAA,EAC3C;AACA;AACe,SAAS+G,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,OAAAiL;AAAA,IACA,OAAAP,IAAQ;AAAA,IACR,OAAAwB,IAAQxB,MAAU,OAAOgB,EAAU,KAAK,YAAYA,EAAU,KAAK;AAAA,IACnE,WAAA3G,IAAY;AAAA,IACZ,OAAAgF,IAAQ;AAAA,EACZ,IAAM/J,EAAQ,aACNgG,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7E;AAAA,IACJ,WAAA4L;AAAA,IACA,SAAAI;AAAA,IACA,SAAAF;AAAA,EACJ,IAAMb,KAASS,EAAUT,CAAK,IAAIS,EAAUT,CAAK,IAAI;AAAA,IACjD,WAAWiB;AAAA,IACX,SAASA;AAAA,IACT,SAASnC;AAAA,EACb,GACQ;AAAA,IACJ,YAAAoC;AAAA,IACA,UAAAC;AAAA,EACJ,IAAM5B,GAAWE,CAAK,EAAEkB,GAAWI,GAASF,IAAU,CAACL,EAAY,GAC3D;AAAA,IACJ,OAAAnD;AAAA,IACA,KAAAC;AAAA,EACJ,IAAM0D,GAAgBjM,EAAQ,WAAW,GACjC,CAACqM,GAAOC,CAAK,IAAIX,GAAa5G,CAAS;AAC7C,SAAO,CAAC;AAAA,IACN,GAAG/E;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,gBAAgBsC;AAAA,IAChB,cAAcC;AAAA,IACd,WAAW,CAAC;AAAA,MACV,WAAW,cAAc4D,EAAW,MAAM,iBAAiBE,CAAK,MAAMC,CAAK,YAAYH,EAAW,KAAK,eAAe,CAACE,CAAK,MAAM,CAACC,CAAK;AAAA,IAC9I,GAAO;AAAA,MACD,WAAW,cAAcF,EAAS,MAAM,iBAAiBC,CAAK,MAAMC,CAAK,YAAYF,EAAS,KAAK,eAAe,CAACC,CAAK,MAAM,CAACC,CAAK;AAAA,IAC1I,CAAK;AAAA,EACL,CAAG;AA2CH;AC1JA,MAAMZ,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,GACMlB,KAAa;AAAA,EACjB,IAAI,CAAC+B,GAAST,OAAa;AAAA,IACzB,WAAW;AAAA,MACT,GAAGS;AAAA,MACH,GAAGT;AAAA,IACT;AAAA,IACI,SAAS;AAAA,MACP,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACA;AAAA,EACE,KAAK,CAACS,GAAST,OAAa;AAAA,IAC1B,WAAW;AAAA,MACT,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,IACI,SAAS;AAAA,MACP,GAAGS;AAAA,MACH,GAAGT;AAAA,IACT;AAAA,EACA;AAAA,EACE,YAAY,CAACS,GAAST,OAAa;AAAA,IACjC,WAAW;AAAA,MACT,GAAGS;AAAA,MACH,GAAGT;AAAA,IACT;AAAA,IACI,SAAS;AAAA,MACP,GAAG,CAACS;AAAA,MACJ,GAAG,CAACT;AAAA,IACV;AAAA,EACA;AACA;AACA,SAASG,GAAgBhJ,GAAM;AAC7B,MAAI;AAAA,IACF,OAAAU,IAAQ;AAAA,IACR,UAAA8B,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,OAAAwF;AAAA,IACA,OAAAP,IAAQ;AAAA,EACZ,IAAMzH;AACJ,QAAMuJ,IAASvB,IAAQS,GAAUT,CAAK,IAAIxF,GACpC,CAAA,EAAGqG,CAAO,IAAItG,GAAmB7B,IAAQ,IAAI6I,EAAO,KAAK,GACzDC,IAAuBX,IAAU,KAAKpB,MAAU,SAASoB,IAAU,KAAKpB,MAAU,OAClFgC,IAAQ7G,EAAY2G,EAAO,IAAI,GAC/BG,IAAiBF,IAAuB,GAAGX,CAAO,GAAGY,CAAK,KAAK,OAC/DE,IAAeH,IAAuB,GAAG,KAAK,IAAIX,CAAO,CAAC,GAAGY,CAAK,KAAK;AAC7E,SAAO;AAAA,IACL,OAAOhC,MAAU,QAAQ,QAAQiC;AAAA,IACjC,KAAKjC,MAAU,OAAO,QAAQkC;AAAA,EAClC;AACA;AACe,SAASnC,GAAOzK,GAASjB,GAAG8N,GAAQ;AACjD,QAAM;AAAA,IACJ,OAAA5B;AAAA,IACA,UAAAxF,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,OAAA9B,IAAQ;AAAA,IACR,OAAA+G,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNwM,IAASvB,IAAQS,GAAUT,CAAK,IAAIxF,GACpC,CAAC8G,GAAST,CAAO,IAAItG,GAAmB7B,IAAQ,IAAI6I,EAAO,KAAK,GAChE;AAAA,IACJ,WAAA3B;AAAA,IACA,SAAAC;AAAA,EACJ,IAAMN,GAAWE,CAAK,EAAE,KAAK,MAAM6B,CAAO,GAAG,KAAK,MAAMT,CAAO,CAAC,GACxDgB,IAAOjH,EAAY2G,EAAO,IAAI,GAC9BxG,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7E;AAAA,IACJ,OAAAsI;AAAA,IACA,KAAAC;AAAA,EACJ,IAAMsE,KAAU,QAAQA,EAAO,0BAA0B;AAAA,IACrD,OAAO;AAAA,IACP,KAAK;AAAA,EACT,IAAMZ,GAAgBjM,EAAQ,WAAW;AAGvC,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,gBAAgBsC;AAAA,IAChB,cAAcC;AAAA,IACd,WAAW,CAAC;AAAA,MACV,WAAW,aAAasC,EAAU,CAAC,GAAGiC,CAAI,KAAKjC,EAAU,CAAC,GAAGiC,CAAI;AAAA,IACvE,GAAO;AAAA,MACD,WAAW,aAAahC,EAAQ,CAAC,GAAGgC,CAAI,KAAKhC,EAAQ,CAAC,GAAGgC,CAAI;AAAA,IACnE,CAAK;AAAA,EACL,CAAG;AAWH;ACrHA,MAAMC,KAAa;AAAA,EACjB,MAAM;AAAA,EACN,OAAO;AACT,GACMC,KAAsB;AAAA,EAC1B,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AAAA,EACE,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AACA;AACe,SAASvC,GAAOzK,GAASiN,GAAK;AAC3C,QAAM;AAAA,IACJ,UAAAxH,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,WAAAV,IAAY;AAAA,IACZ,oBAAAmI,IAAqB;AAAA,IACrB,OAAAxC,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNwM,IAAS/G,EAAS,QAAQsH,GAAWhI,CAAS,GAC9C;AAAA,IACJ,QAAAoI;AAAA,IACA,MAAAC;AAAA,EACJ,IAAMF,IAAqBF,GAAoBjI,CAAS,IAAI;AAAA,IACxD,QAAQ,GAAG,CAACyH,CAAM,GAAG3G,EAAYJ,EAAS,IAAI,CAAC;AAAA,IAC/C,MAAM,GAAG+G,CAAM,GAAG3G,EAAYJ,EAAS,IAAI,CAAC;AAAA,EAChD,GACQoF,IAAYH,MAAU,QAAQ,IAAIyC,GAClCrC,IAAUJ,MAAU,OAAO,IAAIA,MAAU,QAAQyC,IAASC,GAC1DpH,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ;AACnF,MAAIkN,KAAsBD,GAAK;AAC7B,QAAIhJ,IAAO;AACX,IAAAgJ,EAAI,QAAQ,CAAAvM,MAAU;AACpB,MAAKA,MAGLuD,IAAOvD,EAAO,sBAAqB,EAAG;AAAA,IACxC,CAAC,GACDuM,EAAI,OAAO,CAAAvM,MAAU;AACnB,MAAkBA,GAAO,MAAM,YAAY,iBAAiB,GAAGuD,CAAI,IAAI;AAAA,IACzE,CAAC;AAAA,EACH;AAGA,SAAO,CAAC;AAAA,IACN,GAAGjE;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,cAAc6E,CAAS;AAAA,IACxC,GAAO;AAAA,MACD,WAAW,cAAcC,CAAO;AAAA,IACtC,CAAK;AAAA,EACL,CAAG;AAWH;ACvEA,MAAMuC,KAAgB;AACtB,SAASC,GAAaC,GAAQxD,GAAO;AACnC,SAAO,GAAG,MAAMwD,IAASxD,CAAK;AAChC;AACA,SAASkC,GAAgBhJ,GAAM;AAC7B,MAAI;AAAA,IACF,OAAA8G,IAAQsD;AAAA,EACZ,IAAMpK;AACJ,QAAMqF,IAAQgF,GAAa,MAAMvD,CAAK,GAChCxB,IAAM+E,GAAa,KAAKvD,CAAK;AACnC,SAAO;AAAA,IACL,OAAAzB;AAAA,IACA,KAAAC;AAAA,EACJ;AACA;AACe,SAASkC,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,OAAA+J,IAAQsD;AAAA,EACZ,IAAMrN,EAAQ,aACN6K,IAAY,SAASd,CAAK,MAC1Be,IAAU,GAAG,KAAKf,CAAK,MACvB/D,IAAS,UACT;AAAA,IACJ,OAAAsC;AAAA,IACA,KAAAC;AAAA,EACJ,IAAM0D,GAAgBjM,EAAQ,WAAW;AAGvC,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,MAAM;AAAA,IACN,QAAAgG;AAAA,IACA,gBAAgBsC;AAAA,IAChB,cAAcC;AAAA,IACd,WAAW,CAAC;AAAA,MACV,WAAW,cAAcsC,CAAS;AAAA,IACxC,GAAO;AAAA,MACD,WAAW,cAAcC,CAAO;AAAA,IACtC,CAAK;AAAA,EACL,CAAG;AAYH;AClDA,MAAMiC,KAAa,CAAC,UAAU,QAAQ,OAAO,OAAO,GAC9CS,KAAyB;AAAA,EAC7B,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACT,GACMC,KAAc5I,EAAqB;AAAA,EACvC,WAAW;AACb,CAAC;AACD,SAAS6I,GAAY3I,GAAW2F,GAAO;AACrC,SAAOA,MAAU,QAAQ+C,KAAc5I,EAAqB;AAAA,IAC1D,WAAW2I,GAAuBzI,CAAS;AAAA,EAC/C,CAAG;AACH;AACA,SAAS4I,GAAU5I,GAAW2F,GAAO;AACnC,SAAOA,MAAU,OAAO+C,KAAc5I,EAAqB;AAAA,IACzD,WAAW6F,MAAU,QAAQ8C,GAAuBzI,CAAS,IAAIA;AAAA,EACrE,CAAG;AACH;AACe,SAAS0F,GAAOzK,GAASiN,GAAK;AAC3C,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,IACZ,OAAA2F,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNgG,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ;AACnF,MAAI4N,IAAWF,GAAY3I,GAAW2F,CAAK,GACvCmD,IAASF,GAAU5I,GAAW2F,CAAK;AACvC,EAAIuC,KACFA,EAAI,QAAQ,CAAAvM,MAAU;AACpB,QAAI,CAACA;AACH;AAEF,UAAMoN,IAAW,iBAAiBpN,CAAM,EAAE,iBAAiB,iBAAiB,KAAK;AACjF,IAAAuM,EAAI,OAAO,MAAM;AACf,YAAMc,IAAe7I,EAAqB6H,IAAYhI,GAAW,SAAS+I,GAAU,EAAE,CAAC;AACvF,MAAAF,IAAWF,GAAYK,GAAcrD,CAAK,GAC1CmD,IAASF,GAAUI,GAAcrD,CAAK,GACtChK,EAAO,MAAM,YAAY,sBAAsBkN,CAAQ,GACvDlN,EAAO,MAAM,YAAY,oBAAoBmN,CAAM;AAAA,IACrD,CAAC;AAAA,EACH,CAAC;AAEH,QAAMG,IAAYtD,MAAU,eAAe,CAAC;AAAA,IAC1C,UAAU,2BAA2BkD,CAAQ;AAAA,EACjD,GAAK;AAAA,IACD,UAAUH;AAAAA,EACd,GAAK;AAAA,IACD,UAAU,yBAAyBI,CAAM;AAAA,EAC7C,CAAG,IAAI,CAAC;AAAA,IACJ,UAAU,2BAA2BD,CAAQ;AAAA,EACjD,GAAK;AAAA,IACD,UAAU,yBAAyBC,CAAM;AAAA,EAC7C,CAAG;AACD,SAAO,CAAC;AAAA,IACN,GAAG7N;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAAgI;AAAA,EACJ,CAAG;AAyBH;ACrFA,MAAMC,KAAS;AAAA,EACb,SAAS;AAAA,IACP,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,IACZ;AAAA,IACI,KAAK;AAAA,EACT;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,IACZ;AAAA,IACI,KAAK;AAAA,EACT;AAAA,EACE,WAAW;AAAA,IACT,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,IACZ;AAAA,IACI,KAAK;AAAA,EACT;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,IACZ;AAAA,IACI,KAAK;AAAA,EACT;AAAA,EACE,SAAS;AAAA,IACP,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,IACZ;AAAA,IACI,KAAK;AAAA,EACT;AACA,GACMC,KAAwB;AAAA,EAC5B,SAAS,CAAAC,MAAc;AACrB,UAAMC,IAAOD,IAAa,GACpBE,IAAU,MAAMD;AACtB,WAAO,CAAC,eAAeA,CAAI,MAAMC,CAAO,cAAcA,CAAO,MAAMD,CAAI,UAAU,iDAAiD;AAAA,EACpI;AAAA,EACA,QAAQ,CAAAD,MAAc,CAAC,SAASA,IAAa,CAAC,0BAA0B,iCAAiC;AAAA,EACzG,WAAW,CAAAA,MAAc,CAAC,SAASA,CAAU,MAAM,WAAW;AAAA,EAC9D,QAAQ,CAAAA,MAAc,CAAC,UAAU,MAAMA,CAAU,MAAM,aAAa;AAAA,EACpE,SAAS,CAAAA,MAAc;AACrB,UAAMC,IAAO,KAAKD,IAAa;AAC/B,WAAO,CAAC,WAAWC,CAAI,KAAKA,CAAI,MAAM,kBAAkB;AAAA,EAC1D;AACF,GACMpI,KAASD,EAAU,WAAW,GAC9BuI,KAAsB;AAAA,EAC1B,IAAI,CAAChG,GAAOC,MAAQ,CAAC;AAAA,IACnB,UAAUD;AAAA,IACV,QAAAtC;AAAA,EACJ,GAAK;AAAA,IACD,UAAUuC;AAAA,EACd,CAAG;AAAA,EACD,KAAK,CAACD,GAAOC,MAAQ,CAAC;AAAA,IACpB,UAAUA;AAAA,IACV,QAAAvC;AAAA,EACJ,GAAK;AAAA,IACD,UAAUsC;AAAA,EACd,CAAG;AAAA,EACD,YAAY,CAACA,GAAOC,MAAQ,CAAC;AAAA,IAC3B,UAAUD;AAAA,IACV,QAAAtC;AAAA,EACJ,GAAK;AAAA,IACD,UAAUuC;AAAA,IACV,QAAAvC;AAAA,EACJ,GAAK;AAAA,IACD,UAAUsC;AAAA,EACd,CAAG;AACH;AACe,SAASmC,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,OAAAuO,IAAQ;AAAA,IACR,OAAAtD;AAAA,IACA,WAAAuD,IAAY;AAAA,IACZ,OAAA9D,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACN2K,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7E,CAACsI,GAAOC,CAAG,IAAI0C,KAASgD,GAAOM,CAAK,EAAE,MAAMtD,CAAK,IAAI,CAACgD,GAAOM,CAAK,EAAE,MAAMtD,CAAK,GAAGgD,GAAOM,CAAK,EAAE,GAAG,IAAIL,GAAsBK,CAAK,EAAEC,IAAY,GAAG,GACnJR,IAAYM,GAAoB5D,CAAK,EAAEpC,GAAOC,CAAG;AACvD,SAAO,CAAC;AAAA,IACN,GAAGvI;AAAA,IACH,MAAA2K;AAAA,IACA,QAAQ;AAAA,IACR,WAAAqD;AAAA,EACJ,CAAG;AAYH;AC3GA,MAAMR,KAAyB;AAAA,EAC7B,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR;AACe,SAAS/C,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,WAAA+E,IAAY;AAAA,IACZ,UAAA0J,IAAW;AAAA,IACX,WAAAjH,IAAY;AAAA,IACZ,OAAAkD,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACN2K,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7EgG,IAA0BD,EAAjB2E,MAAU,OAAiB,WAAsB,SAAd,GAC5CgE,IAAelB,GAAuBzI,CAAS,GAC/C;AAAA,IACJ,WAAAkD;AAAA,IACA,SAAAC;AAAA,EACJ,IAAME,GAAqBsC,MAAU,QAAQgE,IAAe3J,GAAW0J,GAAUjH,CAAS,GAClFc,IAAQoC,MAAU,QAAQzC,IAAYC,GACtCK,IAAMmC,MAAU,QAAQxC,IAAUD;AACxC,MAAI+F;AACJ,MAAItD,MAAU,cAAc;AAC1B,UAAM;AAAA,MACJ,WAAWiE;AAAA,MACX,SAASC;AAAA,IACf,IAAQxG,GAAqBsG,GAAcD,GAAUjH,GAAW,EAAI;AAChE,IAAAwG,IAAY,CAAC;AAAA,MACX,UAAU1F;AAAA,MACV,QAAAtC;AAAA,IACN,GAAO;AAAA,MACD,UAAUuC;AAAA,MACV,QAAQf,IAAY,OAAO;AAAA,MAC3B,QAAAxB;AAAA,IACN,GAAO;AAAA,MACD,UAAUuC;AAAA,MACV,QAAQf,IAAY,OAAO;AAAA,MAC3B,QAAAxB;AAAA,IACN,GAAO;AAAA,MACD,UAAU4I;AAAA,MACV,QAAQpH,IAAY,OAAO;AAAA,MAC3B,QAAAxB;AAAA,IACN,GAAO;AAAA,MACD,UAAU2I;AAAA,IAChB,CAAK;AAAA,EACH;AACE,IAAAX,IAAY,CAAC;AAAA,MACX,UAAU1F;AAAA,MACV,QAAAtC;AAAA,IACN,GAAO;AAAA,MACD,UAAUuC;AAAA,IAChB,CAAK;AAEH,SAAO,CAAC;AAAA,IACN,GAAGvI;AAAA,IACH,MAAA2K;AAAA,IACA,QAAQ;AAAA,IACR,WAAAqD;AAAA,EACJ,CAAG;AACH;AC7DA,MAAMvC,KAAe,IACfC,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACb;AAAA,EACE,QAAQ;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACb;AAAA,EACE,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACb;AACA,GACMC,KAAe;AAAA,EACnB,KAAK,CAAC,GAAG,GAAG;AAAA,EACZ,aAAa,CAAC,IAAI,GAAG;AAAA,EACrB,OAAO,CAAC,IAAI,CAAC;AAAA,EACb,gBAAgB,CAAC,IAAI,EAAE;AAAA,EACvB,QAAQ,CAAC,GAAG,EAAE;AAAA,EACd,eAAe,CAAC,KAAK,EAAE;AAAA,EACvB,MAAM,CAAC,KAAK,CAAC;AAAA,EACb,YAAY,CAAC,KAAK,GAAG;AAAA,EACrB,QAAQ,CAAC,GAAG,CAAC;AACf,GACMnB,KAAa;AAAA,EACjB,IAAI,CAACoB,GAAWC,GAAUC,OAAa;AAAA,IACrC,YAAY;AAAA,MACV,OAAOF;AAAA,MACP,QAAQE;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,EACA;AAAA,EACE,KAAK,CAACC,GAAYC,GAASF,OAAa;AAAA,IACtC,YAAY;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,OAAOE;AAAA,MACP,QAAQ,CAACF;AAAA,IACf;AAAA,EACA;AAAA,EACE,YAAY,CAACF,GAAWI,GAASF,OAAa;AAAA,IAC5C,YAAY;AAAA,MACV,OAAOF;AAAA,MACP,QAAQE;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,OAAOE;AAAA,MACP,QAAQ,CAACF;AAAA,IACf;AAAA,EACA;AACA;AACA,SAASG,GAAgBhJ,GAAM;AAC7B,MAAI;AAAA,IACF,OAAAgI;AAAA,IACA,OAAAP,IAAQ;AAAA,IACR,OAAAX,IAAQ;AAAA,EACZ,IAAM9G;AACJ,QAAMS,IAASuH,KAASS,GAAUT,CAAK,IAAIS,GAAUT,CAAK,EAAE,UAAU,KAAK,IAAIlB,CAAK,IAAI0B;AACxF,SAAO;AAAA,IACL,OAAOf,MAAU,QAAQ,QAAQ,GAAG,CAAChH,CAAM;AAAA,IAC3C,KAAKgH,MAAU,OAAO,QAAQ,GAAGhH,CAAM;AAAA,EAC3C;AACA;AACe,SAAS+G,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,OAAAiL;AAAA,IACA,OAAAP,IAAQ;AAAA,IACR,OAAAwB,IAAQxB,MAAU,OAAO,MAAM;AAAA,IAC/B,WAAA3F,IAAY;AAAA,IACZ,OAAAgF,IAAQ;AAAA,EACZ,IAAM/J,EAAQ,aACN2K,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7E;AAAA,IACJ,WAAA4L;AAAA,IACA,SAAAI;AAAA,IACA,SAAAF;AAAA,EACJ,IAAMb,KAASS,GAAUT,CAAK,IAAIS,GAAUT,CAAK,IAAI;AAAA,IACjD,WAAWiB;AAAA,IACX,SAASA;AAAA,IACT,SAASnC;AAAA,EACb,GACQ;AAAA,IACJ,YAAAoC;AAAA,IACA,UAAAC;AAAA,EACJ,IAAM5B,GAAWE,CAAK,EAAEkB,GAAWI,GAASF,IAAU,CAACL,EAAY,GAC3DzF,IAAS,UACT;AAAA,IACJ,OAAO2G;AAAA,IACP,KAAKC;AAAA,EACT,IAAMX,GAAgBjM,EAAQ,WAAW,GACjC,CAACqM,GAAOC,CAAK,IAAIX,GAAa5G,CAAS;AAC7C,SAAO,CAAC;AAAA,IACN,GAAG/E;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,gBAAA2G;AAAA,IACA,cAAAC;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,cAAcT,EAAW,MAAM,iBAAiBE,CAAK,MAAMC,CAAK,YAAYH,EAAW,KAAK,eAAe,CAACE,CAAK,MAAM,CAACC,CAAK;AAAA,IAC9I,GAAO;AAAA,MACD,WAAW,cAAcF,EAAS,MAAM,iBAAiBC,CAAK,MAAMC,CAAK,YAAYF,EAAS,KAAK,eAAe,CAACC,CAAK,MAAM,CAACC,CAAK;AAAA,IAC1I,CAAK;AAAA,EACL,CAAG;AAwCH;ACxJA,MAAMZ,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,EACX;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,EACX;AACA,GACMmD,KAAgB;AAAA,EACpB,OAAO;AAAA,EACP,MAAM;AACR,GACMrE,KAAa;AAAA,EACjB,IAAI,CAACsE,GAAO3B,GAAQ4B,OAAW;AAAA,IAC7B,YAAY;AAAA,MACV,OAAAD;AAAA,MACA,QAAA3B;AAAA,IACN;AAAA,IACI,UAAU;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,EACA;AAAA,EACE,KAAK,CAAC2B,GAAO3B,GAAQ4B,OAAW;AAAA,IAC9B,YAAY;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,OAAO,CAACD;AAAA,MACR,MAAM3B;AAAA,IACZ;AAAA,EACA;AAAA,EACE,YAAY,CAAC2B,GAAO3B,GAAQC,OAAU;AAAA,IACpC,YAAY;AAAA,MACV,OAAA0B;AAAA,MACA,QAAA3B;AAAA,IACN;AAAA,IACI,UAAU;AAAA,MACR,OAAO,CAAC2B;AAAA,MACR,MAAA1B;AAAA,IACN;AAAA,EACA;AACA,GACM4B,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AAAA,EACE,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AACA;AACe,SAASvE,GAAOzK,GAASiN,GAAK;AAC3C,QAAM;AAAA,IACJ,MAAAgC,IAAO;AAAA,IACP,WAAAlK,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,OAAAP,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNgG,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7E8O,KAAS7D,KAASS,GAAUT,CAAK,IAAIS,GAAUT,CAAK,EAAE,QAAQgE,KAAQJ,GAAc9J,CAAS,GAC7F;AAAA,IACJ,QAAAoI;AAAA,IACA,MAAAC;AAAA,EACJ,IAAM4B,GAAUjK,CAAS,GACjB;AAAA,IACJ,YAAAoH;AAAA,IACA,UAAAC;AAAA,EACJ,IAAM5B,GAAWE,CAAK,EAAEoE,GAAO3B,GAAQC,CAAI;AACzC,MAAInJ,IAAO;AACX,SAAIgJ,MACFA,EAAI,QAAQ,CAAAvM,MAAU;AACpB,IAAKA,MAGLuD,IAAOvD,EAAO,sBAAqB,EAAG;AAAA,EACxC,CAAC,GACDuM,EAAI,OAAO,CAAAvM,MAAU;AACnB,IAAkBA,GAAO,MAAM,YAAY,iBAAiB,GAAGuD,CAAI,IAAI;AAAA,EACzE,CAAC,IAEI,CAAC;AAAA,IACN,GAAGjE;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,cAAcmG,EAAW,MAAM,WAAWA,EAAW,KAAK;AAAA,IAC3E,GAAO;AAAA,MACD,WAAW,cAAcC,EAAS,IAAI,WAAWA,EAAS,KAAK;AAAA,IACrE,CAAK;AAAA,EACL,CAAG;AAWH;AC1GA,MAAMW,KAAa,CAAC,UAAU,QAAQ,OAAO,OAAO,GAC9CS,KAAyB;AAAA,EAC7B,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACT,GACM0B,KAA4B;AAAA,EAChC,KAAK;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA,GACMzB,KAAc5I,EAAqB;AAAA,EACvC,WAAW;AACb,CAAC,GACKyJ,KAAsB;AAAA,EAC1B,IAAI,CAACF,GAAMe,MAAc,CAAC;AAAA,IACxB,UAAU,2BAA2Bf,EAAK,IAAI;AAAA,IAC9C,WAAW,6CAA6Ce,EAAU,KAAK,CAAC,KAAKA,EAAU,KAAK,CAAC;AAAA,EACjG,GAAK;AAAA,IACD,UAAU1B;AAAA,IACV,WAAW;AAAA,EACf,CAAG;AAAA,EACD,KAAK,CAACW,GAAMe,MAAc,CAAC;AAAA,IACzB,UAAU1B;AAAA,IACV,WAAW;AAAA,EACf,GAAK;AAAA,IACD,UAAU,2BAA2BW,EAAK,IAAI;AAAA,IAC9C,WAAW,6CAA6Ce,EAAU,KAAK,CAAC,KAAKA,EAAU,KAAK,CAAC;AAAA,EACjG,CAAG;AAAA,EACD,YAAY,CAACf,GAAMe,MAAc,CAAC;AAAA,IAChC,UAAU,2BAA2Bf,EAAK,IAAI;AAAA,IAC9C,WAAW,6CAA6Ce,EAAU,KAAK,CAAC,KAAKA,EAAU,KAAK,CAAC;AAAA,EACjG,GAAK;AAAA,IACD,UAAU1B;AAAA,IACV,WAAW;AAAA,EACf,GAAK;AAAA,IACD,UAAU,yBAAyBW,EAAK,EAAE;AAAA,IAC1C,WAAW,6CAA6Ce,EAAU,GAAG,CAAC,KAAKA,EAAU,GAAG,CAAC;AAAA,EAC7F,CAAG;AACH;AACe,SAAS1E,GAAOzK,GAASiN,GAAK;AAC3C,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,IACZ,OAAA2F,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNgG,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7EoP,IAAoB5B,GAAuBzI,CAAS,GACpDiJ,IAAYM,GAAoB5D,CAAK,EAAE;AAAA,IAC3C,MAAM7F,EAAqB;AAAA,MACzB,WAAWuK;AAAA,IACjB,CAAK;AAAA,IACD,IAAIvK,EAAqB;AAAA,MACvB,WAAAE;AAAA,IACN,CAAK;AAAA,EACL,GAAK;AAAA,IACD,MAAMmK,GAA0BnK,CAAS;AAAA,IACzC,IAAImK,GAA0BE,CAAiB;AAAA,EACnD,CAAG;AACD,SAAInC,KACFA,EAAI,QAAQ,CAAAvM,MAAU;AACpB,QAAI,CAACA;AACH;AAEF,UAAMoN,IAAW,SAAS,iBAAiBpN,CAAM,EAAE,iBAAiB,iBAAiB,KAAK,KAAK,EAAE;AACjG,IAAAuM,EAAI,OAAO,MAAM;AACf,YAAMc,IAAe7I,EAAqB6H,IAAYhI,GAAW+I,CAAQ;AACzE,MAAApN,EAAO,MAAM,YAAY,sBAAsBmE,EAAqB;AAAA,QAClE,WAAW2I,GAAuBO,CAAY;AAAA,MACxD,CAAS,CAAC,GACFrN,EAAO,MAAM,YAAY,oBAAoBmE,EAAqB;AAAA,QAChE,WAAWkJ;AAAA,MACrB,CAAS,CAAC;AAAA,IACJ,CAAC;AAAA,EACH,CAAC,GAEI,CAAC;AAAA,IACN,GAAG/N;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAAgI;AAAA,EACJ,CAAG;AAaH;AC7GA,MAAMvC,KAAe,IACfC,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,SAAS;AAAA,EACb;AAAA,EACE,QAAQ;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,EACb;AAAA,EACE,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,SAAS;AAAA,EACb;AACA,GACMlB,KAAa;AAAA,EACjB,IAAI,CAACsD,GAAUhC,OAAa;AAAA,IAC1B,YAAY;AAAA,MACV,WAAW,KAAKgC;AAAA,MAChB,WAAW,CAACA;AAAA,MACZ,WAAW,CAACA;AAAA,MACZ,QAAQhC;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,QAAQ;AAAA,IACd;AAAA,EACA;AAAA,EACE,KAAK,CAACgC,GAAUhC,OAAa;AAAA,IAC3B,YAAY;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,QAAQ;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,WAAWgC,IAAW;AAAA,MACtB,WAAWA,IAAW;AAAA,MACtB,WAAWA;AAAA,MACX,QAAQ,CAAChC;AAAA,IACf;AAAA,EACA;AAAA,EACE,YAAY,CAACgC,GAAUhC,OAAa;AAAA,IAClC,YAAY;AAAA,MACV,WAAW,KAAKgC;AAAA,MAChB,WAAW,CAACA;AAAA,MACZ,WAAW,CAACA;AAAA,MACZ,QAAQhC;AAAA,IACd;AAAA,IACI,UAAU;AAAA,MACR,WAAWgC,IAAW;AAAA,MACtB,WAAWA;AAAA,MACX,WAAW,IAAIA;AAAA,MACf,QAAQ,CAAChC;AAAA,IACf;AAAA,EACA;AACA;AACA,SAASG,GAAgBhJ,GAAM;AAC7B,MAAI;AAAA,IACF,OAAAgI;AAAA,IACA,OAAAP,IAAQ;AAAA,IACR,OAAAX,IAAQ;AAAA,EACZ,IAAM9G;AACJ,QAAMS,KAAUuH,KAASS,GAAUT,CAAK,IAAIS,GAAUT,CAAK,EAAE,UAAU,KAAK,IAAIlB,CAAK,KAAK0B;AAC1F,SAAO;AAAA,IACL,OAAOf,MAAU,QAAQ,QAAQ,GAAG,CAAChH,CAAM;AAAA,IAC3C,KAAKgH,MAAU,OAAO,QAAQ,GAAGhH,CAAM;AAAA,EAC3C;AACA;AACe,SAAS+G,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,QAAAsL,IAAS;AAAA,IACT,OAAAL;AAAA,IACA,OAAAP,IAAQ;AAAA,IACR,OAAAX,IAAQ;AAAA,EACZ,IAAM/J,EAAQ,aACNgG,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7EqP,IAAgBpE,KAASS,GAAUT,CAAK,IAAIS,GAAUT,CAAK,IAAI;AAAA,IACnE,WAAWK;AAAA,IACX,SAASvB;AAAA,EACb,GACQ;AAAA,IACJ,YAAAoC;AAAA,IACA,UAAAC;AAAA,EACJ,IAAM5B,GAAWE,CAAK,EAAE2E,EAAc,WAAWA,EAAc,UAAU,CAAC5D,EAAY,GAC9E;AAAA,IACJ,OAAOkB;AAAA,IACP,KAAKC;AAAA,EACT,IAAMX,GAAgBjM,EAAQ,WAAW;AACvC,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,gBAAA2G;AAAA,IACA,cAAAC;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,kCAAkCT,EAAW,MAAM,iDAAiDA,EAAW,SAAS,iBAAiBA,EAAW,SAAS,gBAAgBA,EAAW,SAAS;AAAA,IAClN,GAAO;AAAA,MACD,WAAW,kCAAkCC,EAAS,MAAM,iDAAiDA,EAAS,SAAS,iBAAiBA,EAAS,SAAS,gBAAgBA,EAAS,SAAS;AAAA,IAC1M,CAAK;AAAA,EACL,CAAG;AAWH;AClHA,MAAMV,KAAY;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMmD,KAAgB;AAAA,EACpB,WAAW;AAAA,EACX,qBAAqB;AACvB;AACe,SAASpE,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,OAAAsP,IAAQ;AAAA,IACR,OAAApD,IAAQ;AAAA,IACR,WAAAnH,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,OAAAP,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNgG,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7EuP,IAAgBV,GAAc9J,CAAS,GACvCyK,IAAYF,IAAQ,KACpBG,IAAcxE,KAASS,GAAUT,CAAK,IAAIS,GAAUT,CAAK,IAAIiB,GAC7DwD,IAAOhF,MAAU,MACjBG,IAAY6E,IAAO,CAACF,IAAY9E,MAAU,QAAQ,IAAI,CAAC8E,IAAY,GACnE1E,IAAU4E,IAAO,IAAIhF,MAAU,QAAQ8E,IAAYA,IAAY;AACrE,SAAO,CAAC;AAAA,IACN,GAAGxP;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,SAAS0J,IAAOD,IAAc,CAAC,8CAA8C5E,IAAY0E,CAAa;AAAA,IACvH,GAAO;AAAA,MACD,WAAW,SAASG,IAAO,IAAID,CAAW,8CAA8C3E,IAAUyE,CAAa;AAAA,IACrH,CAAK;AAAA,EACL,CAAG;AAWH;AC5CA,MAAM7D,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACE,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACE,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AACA,GACM4C,KAAsB;AAAA,EAC1B,IAAI,CAACtJ,GAAQC,MAAW,CAAC;AAAA,IACvB,OAAO,GAAGD,CAAM,IAAIC,CAAM;AAAA,IAC1B,WAAW,KAAK,OAAOA,IAAS,EAAE;AAAA,EACtC,GAAK;AAAA,IACD,OAAO;AAAA,IACP,WAAW;AAAA,EACf,CAAG;AAAA,EACD,KAAK,CAACD,GAAQC,MAAW,CAAC;AAAA,IACxB,OAAO;AAAA,IACP,WAAW;AAAA,EACf,GAAK;AAAA,IACD,OAAO,GAAGD,CAAM,IAAIC,CAAM;AAAA,IAC1B,WAAW,KAAK,OAAO,IAAIA,EAAO;AAAA,EACtC,CAAG;AAAA,EACD,YAAY,CAACD,GAAQC,MAAW,CAAC;AAAA,IAC/B,OAAO,GAAGD,CAAM,IAAIC,CAAM;AAAA,IAC1B,WAAW,KAAK,OAAOA,IAAS,EAAE;AAAA,IAClC,QAAQ0K,EAAQ;AAAA,EACpB,GAAK;AAAA,IACD,OAAO;AAAA,IACP,WAAW;AAAA,IACX,QAAQA,EAAQ;AAAA,EACpB,GAAK;AAAA,IACD,OAAO,GAAG3K,CAAM,IAAIC,CAAM;AAAA,IAC1B,WAAW,KAAK,OAAO,IAAIA,EAAO;AAAA,EACtC,CAAG;AACH,GACM2K,KAAsB;AAAA,EAC1B,IAAI,CAAC;AAAA,IACH,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ,GAAK;AAAA,IACD,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ,CAAG;AAAA,EACD,KAAK,CAAC;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ,GAAK;AAAA,IACD,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ,CAAG;AAAA,EACD,YAAY,CAAC;AAAA,IACX,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ,GAAK;AAAA,IACD,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ,GAAK;AAAA,IACD,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ,GAAK;AAAA,IACD,SAAS;AAAA,IACT,QAAQ;AAAA,EACZ,CAAG;AACH;AACe,SAASnF,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,OAAAiL;AAAA,IACA,SAAA4E,IAAU;AAAA,IACV,OAAAnF,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNgG,IAAS0E,MAAU,eAAe,WAAW,aAC7CC,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7E;AAAA,IACJ,QAAAgF;AAAA,IACA,QAAAC;AAAA,EACJ,IAAMgG,KAASS,GAAUT,CAAK,IAAIS,GAAUT,CAAK,IAAI;AAAA,IACjD,QAAQ,IAAI4E;AAAA,IACZ,QAAQ,IAAIA;AAAA,EAChB,GACQ9P,IAAauO,GAAoB5D,CAAK,EAAE1F,GAAQC,CAAM;AAC5D,SAAO,CAAC;AAAA,IACN,GAAGjF;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAWjG;AAAA,EACf,GAAK;AAAA,IACD,GAAGC;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAW4J,GAAoBlF,CAAK;AAAA,EACxC,CAAG;AACH;AClGA,MAAMe,KAAe,IACf,CAACqE,IAAYC,IAAYC,EAAU,IAAI,CAAC,IAAI,IAAI,EAAE,GAClD,CAACC,IAAIC,IAAMC,EAAe,IAAI,CAAC,IAAI,GAAG,CAAC,GACvCC,KAAwB;AAAA,EAC5B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMC,KAAiB;AAAA,EACrB,OAAO;AAAA,EACP,MAAM;AACR,GACM7F,KAAa;AAAA,EACjB,IAAI;AAAA,IACF,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,QAAQ0F;AAAA,IACd;AAAA,IACI,IAAI;AAAA,MACF,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,QAAQC;AAAA,IACd;AAAA,EACA;AAAA,EACE,KAAK;AAAA,IACH,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,QAAQA;AAAA,IACd;AAAA,IACI,IAAI;AAAA,MACF,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,QAAQF;AAAA,IACd;AAAA,EACA;AAAA,EACE,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,QAAQC;AAAA,IACd;AAAA,IACI,IAAI;AAAA,MACF,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,QAAQD;AAAA,IACd;AAAA,EACA;AACA;AACA,SAASK,GAAW7K,GAAUwF,GAAO;AACnC,UAAQA,KAASA,KAASmF,KAAwBA,GAAsBnF,CAAK,IAAIxF,KAAYgG;AAC/F;AACA,SAASQ,GAAgBhJ,GAAM;AAC7B,MAAI;AAAA,IACF,OAAAgI;AAAA,IACA,OAAAP,IAAQ;AAAA,IACR,UAAAjF,IAAW;AAAA,EACf,IAAMxC;AACJ,QAAMS,IAAS,KAAK,IAAI4M,GAAW7K,GAAUwF,CAAK,CAAC;AACnD,SAAO;AAAA,IACL,OAAOP,MAAU,QAAQ,QAAQ,GAAG,CAAChH,CAAM;AAAA,IAC3C,KAAKgH,MAAU,OAAO,QAAQ,GAAGhH,CAAM;AAAA,EAC3C;AACA;AACe,SAAS+G,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,OAAAiL;AAAA,IACA,UAAAxF,IAAW;AAAA,IACX,OAAAiF,IAAQ;AAAA,IACR,WAAA3F,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACNgG,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7E;AAAA,IACJ,MAAAuQ;AAAA,IACA,IAAAC;AAAA,EACJ,IAAMhG,GAAWE,CAAK,GACd+F,IAAMJ,GAAetL,CAAS,GAC9B2L,IAAc,KAAK,IAAIH,EAAK,CAAC,IAAIP,KAAaS,KAAOF,EAAK,IAAI,IAAI,KAAK,IACvEI,IAAY,KAAK,IAAIH,EAAG,CAAC,IAAIR,KAAaS,KAAOD,EAAG,IAAI,IAAI,KAAK,IACjE1E,IAAUwE,GAAW7K,GAAUwF,CAAK,GACpC2F,IAAc9E,IAAUyE,EAAK,QAC7BM,IAAY/E,IAAU0E,EAAG,QACzBM,IAAgBP,EAAK,IAAIT,IACzBiB,IAAgBR,EAAK,IAAIR,IACzBiB,IAAcR,EAAG,IAAIV,IACrBmB,IAAcT,EAAG,IAAIT,IACrB;AAAA,IACJ,OAAOpD;AAAA,IACP,KAAKC;AAAA,EACT,IAAMX,GAAgBjM,EAAQ,WAAW;AACvC,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,gBAAA2G;AAAA,IACA,cAAAC;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,iCAAiCgE,CAAW,eAAeE,CAAa,gBAAgBC,CAAa;AAAA,IACtH,GAAO;AAAA,MACD,WAAW,iCAAiCF,CAAS,eAAeG,CAAW,gBAAgBC,CAAW;AAAA,IAChH,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGjR;AAAA,IACH,MAAA2K;AAAA,IACA,QAAQgF,EAAQ;AAAA,IAChB,gBAAAhD;AAAA,IACA,cAAAC;AAAA,IACA,WAAW;AAAA;AAAA,IAEX,WAAW,CAAC;AAAA,MACV,WAAW,4CAA4C8D,CAAW;AAAA,IACxE,GAAO;AAAA,MACD,WAAW,4CAA4CC,CAAS;AAAA,IACtE,CAAK;AAAA,EACL,CAAG;AACH;AC5HA,MAAMO,KAAmB,IACnBxF,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,SAAS;AAAA,EACb;AAAA,EACE,QAAQ;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,EACb;AAAA,EACE,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,SAAS;AAAA,EACb;AACA,GACMpB,KAAuB;AAAA,EAC3B,WAAW;AAAA,EACX,qBAAqB;AACvB,GACM6G,KAAkB;AAAA,EACtB,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AAAA,EACE,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AACA,GACM3G,KAAa;AAAA,EACjB,IAAI,CAACc,GAAQY,GAAOM,OAAY;AAAA,IAC9B,YAAY;AAAA,MACV,UAAU,CAAClB;AAAA,MACX,OAAOY,EAAM;AAAA,MACb,WAAWM,EAAO;AAAA,IACxB;AAAA,IACI,UAAU;AAAA,MACR,UAAU;AAAA,MACV,OAAO;AAAA,MACP,WAAW;AAAA,IACjB;AAAA,EACA;AAAA,EACE,KAAK,CAAClB,GAAQY,GAAOM,OAAY;AAAA,IAC/B,YAAY;AAAA,MACV,UAAU;AAAA,MACV,OAAO;AAAA,MACP,WAAW;AAAA,IACjB;AAAA,IACI,UAAU;AAAA,MACR,UAAUlB;AAAA,MACV,OAAOY,EAAM;AAAA,MACb,WAAWM,EAAO;AAAA,IACxB;AAAA,EACA;AAAA,EACE,YAAY,CAAClB,GAAQY,GAAOM,OAAY;AAAA,IACtC,YAAY;AAAA,MACV,UAAU,CAAClB;AAAA,MACX,OAAOY,EAAM;AAAA,MACb,WAAWM,EAAO;AAAA,IACxB;AAAA,IACI,UAAU;AAAA,MACR,UAAUlB;AAAA,MACV,OAAOY,EAAM;AAAA,MACb,WAAWM,EAAO;AAAA,IACxB;AAAA,EACA;AACA;AACe,SAAS/B,GAAOzK,GAASiN,GAAK;AAC3C,QAAM;AAAA,IACJ,OAAAhC;AAAA,IACA,MAAAmG,IAAO;AAAA,IACP,WAAArM,IAAY;AAAA,IACZ,OAAAmH,IAAQ;AAAA,IACR,OAAAxB,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNgG,IAAS,UACT2E,IAAOD,MAAU,QAAQ,aAAaA,MAAU,OAAO,cAAc1K,EAAQ,MAC7EqR,IAASF,GAAgBpM,CAAS,GAClCuM,IAAUJ,KAAmB5G,GAAqB8G,CAAI,GACtDG,IAAetG,KAASS,GAAUT,CAAK,IAAIS,GAAUT,CAAK,IAAI;AAAA,IAClE,WAAWiB;AAAA,IACX,SAASA;AAAA,EACb,GACQ;AAAA,IACJ,YAAAC;AAAA,IACA,UAAAC;AAAA,EACJ,IAAM5B,GAAWE,CAAK,EAAE4G,GAASC,GAAcF,CAAM;AACnD,MAAIpN,IAAO;AACX,SAAIgJ,MACFA,EAAI,QAAQ,CAAAvM,MAAU;AACpB,IAAKA,MAGLuD,IAAOvD,EAAO,sBAAqB,EAAG;AAAA,EACxC,CAAC,GACDuM,EAAI,OAAO,CAAAvM,MAAU;AACnB,IAAkBA,GAAO,MAAM,YAAY,iBAAiB,GAAGuD,CAAI,IAAI;AAAA,EACzE,CAAC,IAEI,CAAC;AAAA,IACN,GAAGjE;AAAA,IACH,MAAA2K;AAAA,IACA,QAAA3E;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,cAAcmG,EAAW,SAAS,WAAWA,EAAW,KAAK,8CAA8CA,EAAW,QAAQ;AAAA,IAC/I,GAAO;AAAA,MACD,WAAW,cAAcC,EAAS,SAAS,WAAWA,EAAS,KAAK,8CAA8CA,EAAS,QAAQ;AAAA,IACzI,CAAK;AAAA,EACL,CAAG;AAWH;ACpGO,MAAMoF,KAAmB;AAAA,EAChC,WAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,WAAEC;AAAAA,EACF,gBAAEC;AAAAA,EACF,cAAEC;AAAAA,EACF,aAAEC;AAAAA,EACF,gBAAEC;AAAAA,EACF,cAAEC;AAAAA,EACF,eAAEC;AAAAA,EACF,aAAEC;AAAAA,EACF,cAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,eAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,YAAEC;AACF,GCtCMC,KAAiB,IACjB/D,KAAgB;AAAA,EACpB,KAAK;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AAAA,EACE,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AAAA,EACE,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AACA,GACMgE,KAAa;AAAA,EACjB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR;AACO,SAASC,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASiT,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,cAAc;AACzC;AACO,SAASiU,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,WAAAlG,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAACmT,GAAQC,CAAK,IAAIH,GAAgB,GAClCjN,IAASiF,KAAS4H,GAAW5H,CAAK,KAAKjL,EAAQ,UAAU,cAMzD;AAAA,IACJ,GAAA2F;AAAA,IACA,GAAAC;AAAA,IACA,MAAAyN;AAAA,EACJ,IAAMxE,GAAc9J,CAAS,GAErBuO,IAAI,2HACJ3K,IAAS;AAAA,IACb,kBAAkB,GAAGhD,CAAC;AAAA,IACtB,kBAAkB,GAAGC,CAAC;AAAA,IACtB,qBAAqB,GAAGyN,CAAI;AAAA,EAChC;AACE,SAAO,CAAC;AAAA,IACN,GAAGrT;AAAA,IACH,MAAMmT;AAAA,IACN,UAAUnT,EAAQ,WAAW;AAAA,IAC7B,QAAQ;AAAA,IACR,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGA;AAAA,IACH,MAAMoT;AAAA,IACN,QAAApN;AAAA,IACA,QAAA2C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,WAAW,sCAAsC0P,CAAC,mBAAmB5K,EAAgBC,GAAQ,kBAAkBuK,CAAK,CAAC,MAAMxK,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,MAAMN,EAAc,sBAAsBlK,EAAgBC,GAAQ,kBAAkBuK,CAAK,CAAC,MAAMxK,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,MAAMN,EAAc,8BAA8BU,CAAC;AAAA,IAC1X,GAAO;AAAA,MACD,WAAW,sCAAsCA,CAAC,uDAAuDA,CAAC;AAAA,IAChH,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASP,GAAQhU,GAAGkO,GAAK;AAC9B,MAAIA,GAAK;AACP,QAAIsG,GAAOC;AACX,IAAAvG,EAAI,QAAQ,CAAAvM,MAAU;AACpB,UAAI,CAACA;AACH;AAEF,YAAM+S,IAAO/S,EAAO,sBAAqB;AACzC,MAAA6S,IAAQE,EAAK,OACbD,IAASC,EAAK;AAAA,IAChB,CAAC,GACDxG,EAAI,OAAO,CAAAvM,MAAU;AACnB,MAAkBA,GAAO,MAAM,YAAY,mBAAmB,GAAG8S,CAAM,IAAI,GACzD9S,GAAO,MAAM,YAAY,kBAAkB,GAAG6S,CAAK,IAAI;AAAA,IAC3E,CAAC;AAAA,EACH;AACF;;;;;;;8CCvGMxI,KAAiB;AAAA,EACrB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR;AACO,SAASkI,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,eAAe;AAC1C;AACO,SAAS+T,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,MAAAlI,IAAO;AAAA,IACP,OAAAC;AAAA,EACJ,IAAMjL,EAAQ,aACN,CAACmT,GAAQO,CAAM,IAAIT,GAAgB,GACnCjN,IAAShG,EAAQ,UAAU,UAE3B2I,IAAS;AAAA,IACb,iBAAiB,GAFAsC,KAASF,GAAeE,CAAK,IAAIF,GAAeE,CAAK,IAAID,CAE5C;AAAA,EAClC;AACE,SAAO,CAAC;AAAA,IACN,GAAGhL;AAAA,IACH,MAAMmT;AAAA,IACN,UAAUnT,EAAQ,WAAW;AAAA,IAC7B,QAAQ;AAAA,IACR,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGA;AAAA,IACH,MAAM0T;AAAA,IACN,QAAA1N;AAAA,IACA,WAAW;AAAA;AAAA,IAEX,QAAA2C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ,QAAQD,EAAgBC,GAAQ,iBAAiBuK,CAAK,CAAC;AAAA,IACrE,GAAO;AAAA,MACD,QAAQ;AAAA,IACd,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;AClDO,SAASD,GAASlU,GAAG;AAC1B,SAAO,CAAC,mBAAmB;AAC7B;AACO,SAAS+T,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,IACZ,UAAA0J,IAAW;AAAA,IACX,WAAAjH,IAAY;AAAA,EAChB,IAAMxH,EAAQ,aACN,CAAC2T,CAAU,IAAIV,GAAgB,GAC/B;AAAA,IACJ,WAAAhL;AAAA,IACA,SAAAC;AAAA,EACJ,IAAME,GAAqBrD,GAAW0J,GAAUjH,CAAS,GACjDmB,IAAS;AAAA,IACb,2BAA2BV;AAAA,IAC3B,yBAAyBC;AAAA,EAC7B,GACQlC,IAASD,EAAU/F,EAAQ,UAAU,QAAQ;AACnD,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM2N;AAAA,IACN,QAAAhL;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,IACd,GAAO;AAAA,MACD,QAAQ/E;AAAA,MACR,SAAS;AAAA,MACT,UAAU8E,EAAgBC,GAAQ,2BAA2BuK,CAAK;AAAA,IACxE,GAAO;AAAA,MACD,UAAUxK,EAAgBC,GAAQ,yBAAyBuK,CAAK;AAAA,IACtE,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;AC1CO,SAASD,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,iBAAiB;AAC5C;AACA,MAAM;AAAA,EACJ,IAAI6U;AAAA,EACJ,KAAKC;AACP,IAAI3N,GAAgB,QAAQ,GACtB4N,KAAmB,CAAC;AAAA,EACxB,QAAQlQ,IAAuB;AAAA,EAC/B,WAAW;AACb,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,MAAM;AACR,CAAC,GACK8H,KAAY;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMqI,KAA0B;AAAA,EAC9B,KAAK;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA;AACO,SAASjB,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,gBAAgBxF,IAAW;AAAA,IAC3B,WAAAV,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAACmT,GAAQa,CAAQ,IAAIf,GAAgB,GACrCgB,IAAiBhJ,KAASS,GAAUT,CAAK,KAAKxF,GAC9CyO,IAAcnP,MAAc,WAAW,uBAAuB,KAC9D;AAAA,IACJ,GAAAY;AAAA,IACA,GAAAC;AAAA,IACA,GAAA0N;AAAA,EACJ,IAAMS,GAAwBhP,CAAS,GAC/B4D,IAAS;AAAA,IACb,wBAAwBhD;AAAA,IACxB,wBAAwBC;AAAA,IACxB,wBAAwB0N;AAAA,IACxB,4BAA4BW;AAAA,IAC5B,wBAAwBC;AAAA,IACxB,oBAAoBnO,EAAU8N,EAAO;AAAA,IACrC,qBAAqB9N,EAAU6N,EAAM;AAAA,EACzC,GACQO,IAAUzL,EAAgBC,GAAQ,oBAAoBuK,CAAK,GAC3DkB,IAAW1L,EAAgBC,GAAQ,qBAAqBuK,CAAK,GAC7DmB,IAAkB3L,EAAgBC,GAAQ,4BAA4BuK,CAAK,GAC3EoB,IAAe5L,EAAgBC,GAAQ,wBAAwBuK,GAAO,GAAG,GACzEqB,IAAa7L,EAAgBC,GAAQ,wBAAwBuK,CAAK,GAClEsB,IAAa9L,EAAgBC,GAAQ,wBAAwBuK,CAAK,GAClEuB,IAAa/L,EAAgBC,GAAQ,wBAAwBuK,CAAK,GAClElF,IAAY8F,GAAiB,IAAI,CAAC7Q,GAAM7D,MAAU;AACtD,QAAI;AAAA,MACF,QAAAsE;AAAA,MACA,WAAAyL;AAAA,IACN,IAAQlM;AACJ,WAAO;AAAA,MACL,QAAQS,IAAS;AAAA,MACjB,yBAAyBtE,IAAQ,IAAI+U,IAAUC;AAAA,MAC/C,WAAW,GAAGE,EAAa,KAAI,CAAE,qBAAqBC,CAAU,MAAMF,CAAe,MAAMlF,IAAY,CAAC,aAAaqF,CAAU,MAAMH,CAAe,MAAMlF,IAAY,CAAC,aAAasF,CAAU,MAAMJ,CAAe,MAAMlF,IAAY,CAAC;AAAA,IAC5O;AAAA,EACE,CAAC;AACD,SAAO,CAAC;AAAA,IACN,GAAGnP;AAAA,IACH,MAAMmT;AAAA,IACN,QAAQ;AAAA,IACR,UAAUnT,EAAQ,WAAW8T,GAAiB,CAAC,EAAE,SAAS;AAAA,IAC1D,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAG9T;AAAA,IACH,MAAMgU;AAAA,IACN,QAAQ;AAAA,IACR,QAAArL;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,WAAW;AAAA,IACjB,GAAO,GAAGqF,CAAS;AAAA,EACnB,CAAG;AACH;;;;;;;AC5IO,SAASiF,GAASlU,GAAG;AAC1B,SAAO,CAAC,gBAAgB;AAC1B;AACA,MAAM2V,KAAa;AAAA,EACjB,aAAa;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,EACf;AAAA,EACE,OAAO;AAAA,IACL,WAAW;AAAA,IACX,WAAW;AAAA,EACf;AAAA,EACE,YAAY;AAAA,IACV,WAAW;AAAA,IACX,WAAW;AAAA,EACf;AAAA,EACE,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,WAAW;AAAA,EACf;AACA;AACO,SAAS5B,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAAC2U,CAAO,IAAI1B,GAAgB,GAC5B;AAAA,IACJ,WAAA2B;AAAA,IACA,WAAAC;AAAA,EACJ,IAAMH,GAAW3P,CAAS,GAClB4D,IAAS;AAAA,IACb,qBAAqB,GAAGiM,CAAS;AAAA,IACjC,qBAAqB,GAAGC,CAAS;AAAA,EACrC;AACE,SAAO,CAAC;AAAA,IACN,GAAG7U;AAAA,IACH,MAAM2U;AAAA,IACN,QAAQ;AAAA,IACR,QAAAhM;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,IACd,GAAO;AAAA,MACD,QAAQ/E;AAAA,MACR,SAAS;AAAA,MACT,WAAW,gFAAgF8E,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,aAAaxK,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC;AAAA,IACpN,GAAO;AAAA,MACD,SAAS;AAAA,MACT,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASH,GAAQhU,GAAGkO,GAAK;AAC9B,MAAIA,GAAK;AACP,QAAIsG;AACJ,IAAAtG,EAAI,QAAQ,CAAAvM,MAAU;AACpB,MAAKA,MAGL6S,IAAQ7S,EAAO,sBAAqB,EAAG;AAAA,IACzC,CAAC,GACDuM,EAAI,OAAO,CAAAvM,MAAU;AACnB,MAAkBA,GAAO,MAAM,YAAY,kBAAkB,GAAG6S,CAAK,IAAI;AAAA,IAC3E,CAAC;AAAA,EACH;AACF;;;;;;;;ACzEO,SAASN,GAASlU,GAAG;AAC1B,SAAO,CAAC,oBAAoB,kBAAkB;AAChD;AACA,MAAMwL,KAAW;AACV,SAASuI,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAAC8U,GAAWC,CAAS,IAAI9B,GAAgB,GACzCtN,IAAIZ,MAAc,UAAU,0CAA0C,6CACtEa,IAAI,0DACJoP,IAAU;AAAA,IACd,wBAAwBrP;AAAA,EAC5B,GACQsP,IAAU;AAAA,IACd,wBAAwBrP;AAAA,IACxB,qBAAqB,IAAIb,MAAc,UAAU,IAAI,MAAMwF,EAAQ;AAAA,EACvE;AACE,SAAO,CAAC;AAAA,IACN,GAAGvK;AAAA,IACH,MAAM8U;AAAA,IACN,QAAQ;AAAA,IACR,QAAQE;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQpR;AAAA,MACR,WAAW8E,EAAgBsM,GAAS,wBAAwB9B,CAAK;AAAA,IACvE,GAAO;AAAA,MACD,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGlT;AAAA,IACH,MAAM+U;AAAA,IACN,QAAQ;AAAA,IACR,QAAQE;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,IACd,GAAO;AAAA,MACD,QAAQrR;AAAA,MACR,SAAS;AAAA,MACT,WAAW,cAAc8E,EAAgBuM,GAAS,wBAAwB/B,CAAK,CAAC,8CAA8CxK,EAAgBuM,GAAS,qBAAqB/B,CAAK,CAAC;AAAA,IACxL,GAAO;AAAA,MACD,SAAS;AAAA,MACT,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASH,GAAQhU,GAAGkO,GAAK;AAC9B,MAAIA,GAAK;AACP,QAAIhJ,IAAO;AACX,IAAAgJ,EAAI,QAAQ,CAAAvM,MAAU;AACpB,MAAKA,MAGLuD,IAAOvD,EAAO,sBAAqB,EAAG;AAAA,IACxC,CAAC,GACDuM,EAAI,OAAO,CAAAvM,MAAU;AACnB,MAAkBA,GAAO,MAAM,YAAY,iBAAiB,GAAGuD,CAAI,IAAI;AAAA,IACzE,CAAC;AAAA,EACH;AACF;;;;;;;;ACpEO,SAASgP,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,eAAe;AAC1C;AACA,MAAM2V,KAAa;AAAA,EACjB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA;AACO,SAAS5B,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,cAAAiK,IAAeR,GAAW,OAAO;AAAA,EACrC,IAAM1U,EAAQ,aACN,CAACmT,GAAQgC,CAAM,IAAIlC,GAAgB,GACnC/G,IAAQjB,KAASyJ,GAAWzJ,CAAK,EAAE,SAASiK,GAC5ClP,IAASiF,KAASyJ,GAAWzJ,CAAK,EAAE,QAAQjL,EAAQ,UAAU,cAC9D2I,IAAS;AAAA,IACb,kBAAkB,GAAGuD,CAAK;AAAA,EAC9B;AACE,SAAO,CAAC;AAAA,IACN,GAAGlM;AAAA,IACH,MAAMmT;AAAA,IACN,QAAQ;AAAA,IACR,UAAUnT,EAAQ,WAAW;AAAA,IAC7B,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGA;AAAA,IACH,MAAMmV;AAAA,IACN,QAAAnP;AAAA,IACA,QAAA2C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,OAAO8E,EAAgBC,GAAQ,kBAAkBuK,CAAK;AAAA,IAC5D,GAAO;AAAA,MACD,OAAO;AAAA,IACb,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;AC1DO,SAASD,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,iBAAiB;AAC5C;AACA,MAAMqW,KAAY;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMC,KAAuB;AAAA,EAC3B,KAAK;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,aAAa;AAAA,IACX,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,gBAAgB;AAAA,IACd,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,eAAe;AAAA,IACb,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,YAAY;AAAA,IACV,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA;AACO,SAASvC,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,cAAAiK,IAAe;AAAA,IACf,WAAAnQ,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAACmT,GAAQmC,CAAQ,IAAIrC,GAAgB,GACrCjN,IAAShG,EAAQ,UAAU,cAC3BuV,IAAStK,KAASA,KAASmK,KAAYA,GAAUnK,CAAK,IAAIiK,GAC1D;AAAA,IACJ,GAAAvP;AAAA,IACA,GAAAC;AAAA,EACJ,IAAMyP,GAAqBtQ,CAAS,GAC5B4D,IAAS;AAAA,IACb,wBAAwBhD;AAAA,IACxB,wBAAwBC;AAAA,IACxB,kBAAkB2P;AAAA,EACtB,GACQlE,IAAS3I,EAAgBC,GAAQ,wBAAwBuK,CAAK,GAC9DsC,IAAS9M,EAAgBC,GAAQ,wBAAwBuK,CAAK,GAC9DhH,IAAQxD,EAAgBC,GAAQ,kBAAkBuK,CAAK;AAC7D,SAAO,CAAC;AAAA,IACN,GAAGlT;AAAA,IACH,MAAMmT;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGnT;AAAA,IACH,MAAMsV;AAAA,IACN,QAAAtP;AAAA,IACA,QAAA2C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,WAAW,+CAA+CyN,CAAM,mDAAmDmE,CAAM,YAAYtJ,CAAK,sDAAsDmF,CAAM,wDAAwDmE,CAAM;AAAA,IAC1Q,GAAO;AAAA,MACD,WAAW,+CAA+CnE,CAAM,mDAAmDmE,CAAM,gEAAgEnE,CAAM,wDAAwDmE,CAAM;AAAA,IACnQ,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASzC,GAAQhU,GAAGkO,GAAK;AAC9B,MAAIA,GAAK;AACP,QAAIsG,GAAOC;AACX,IAAAvG,EAAI,QAAQ,CAAAvM,MAAU;AACpB,UAAI,CAACA;AACH;AAEF,YAAM+S,IAAO/S,EAAO,sBAAqB;AACzC,MAAA6S,IAAQE,EAAK,OACbD,IAASC,EAAK;AAAA,IAChB,CAAC,GACDxG,EAAI,OAAO,CAAAvM,MAAU;AACnB,MAAkBA,GAAO,MAAM,YAAY,kBAAkB,GAAG6S,CAAK,IAAI,GACvD7S,GAAO,MAAM,YAAY,mBAAmB,GAAG8S,CAAM,IAAI;AAAA,IAC7E,CAAC;AAAA,EACH;AACF;;;;;;;;ACnHO,SAASP,GAASlU,GAAG;AAC1B,SAAO,CAAC,eAAe;AACzB;AACO,SAAS+T,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,CAAO;AACtB;AACO,SAASgT,GAAMhT,GAAS;AAC7B,QAAM,CAACmT,CAAM,IAAIF,GAAgB;AACjC,SAAO,CAAC;AAAA,IACN,GAAGjT;AAAA,IACH,MAAMmT;AAAA,IACN,QAAQ;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;AClBO,SAASF,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,eAAe;AAC1C;AACA,MAAMgO,KAAa,CAAC,OAAO,SAAS,UAAU,MAAM,GAC9C0I,KAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR;AACA,SAASC,GAAc3Q,GAAWuG,GAAQ;AACxC,SAAO;AAAA,IACL,GAAGqK,GAAW5Q,CAAS,EAAE,IAAIuG;AAAA,IAC7B,GAAGqK,GAAW5Q,CAAS,EAAE,IAAIuG;AAAA,EACjC;AACA;AACA,MAAMqK,KAAa;AAAA,EACjB,KAAK;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA;AACO,SAAS7C,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,CAAO;AACtB;AACO,SAASgT,GAAMhT,GAAS;AAC7B,QAAM;AAAA,IACJ,WAAA+E,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,eAAA2K,IAAgB;AAAA,EACpB,IAAM5V,EAAQ,aACN,CAACmT,GAAQ0C,CAAM,IAAI5C,GAAgB,GACnC3H,IAASL,KAASwK,GAAoBxK,CAAK,KAAK2K,GAChD5P,IAAShG,EAAQ,UAAU,WAC3BuQ,IAAOmF,GAAc3Q,GAAWuG,CAAM,GACtC3C,IAAS;AAAA,IACb,qBAAqB,GAAG4H,EAAK,CAAC;AAAA,IAC9B,qBAAqB,GAAGA,EAAK,CAAC;AAAA,EAClC;AACE,SAAO,CAAC;AAAA,IACN,GAAGvQ;AAAA,IACH,QAAQ;AAAA,IACR,MAAMmT;AAAA,IACN,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGnT;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM6P;AAAA,IACN,QAAAlN;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,WAAW,yFAAyF+E,EAAO,mBAAmB,CAAC,sCAAsCA,EAAO,mBAAmB,CAAC;AAAA,IACtM,GAAO;AAAA,MACD,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASoK,GAAQ/S,GAASiN,GAAK;AACpC,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,eAAA2K,IAAgB;AAAA,EACpB,IAAM5V,EAAQ,aACNsL,IAASL,KAASwK,GAAoBxK,CAAK,KAAK2K;AACtD,MAAI3I,GAAK;AACP,QAAI6I,IAAoB/Q;AACxB,IAAAkI,EAAI,QAAQ,CAAAvM,MAAU;AACpB,UAAI,CAACA;AACH;AAEF,YAAMoN,IAAW,iBAAiBpN,CAAM,EAAE,iBAAiB,iBAAiB,KAAK;AACjF,MAAAoV,IAAoB5Q,EAAqB6H,IAAYhI,GAAW,SAAS+I,GAAU,EAAE,CAAC;AAAA,IACxF,CAAC,GACDb,EAAI,OAAO,CAAAvM,MAAU;AACnB,YAAM6P,IAAOmF,GAAcI,GAAmBxK,CAAM;AACpD,MAAkB5K,GAAO,MAAM,YAAY,qBAAqB,GAAG6P,EAAK,CAAC,KAAK,GAC5D7P,GAAO,MAAM,YAAY,qBAAqB,GAAG6P,EAAK,CAAC,KAAK;AAAA,IAChF,CAAC;AAAA,EACH;AACF;;;;;;;;ACjGO,SAAS0C,GAASlU,GAAG;AAC1B,SAAO,CAAC,gBAAgB;AAC1B;AACA,MAAM2V,KAAa;AAAA,EACjB,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,EACd;AAAA,EACE,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,EACd;AAAA,EACE,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,EACd;AAAA,EACE,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,EACd;AACA;AACO,SAAS5B,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAAC+V,CAAO,IAAI9C,GAAgB,GAC5B+C,IAAatB,GAAW3P,CAAS,GACjCkR,IAAaD,EAAW,KAAKA,EAAW,UACxCE,IAAaF,EAAW,KAAKA,EAAW,UACxCrN,IAAS;AAAA,IACb,wBAAwB,GAAGsN,CAAU;AAAA,IACrC,wBAAwB,GAAGC,CAAU;AAAA,EACzC;AACE,SAAO,CAAC;AAAA,IACN,GAAGlW;AAAA,IACH,MAAM+V;AAAA,IACN,QAAQ;AAAA,IACR,QAAApN;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,IACd,GAAO;AAAA,MACD,QAAQ/E;AAAA,MACR,SAAS;AAAA,MACT,WAAW,aAAa8E,EAAgBC,GAAQ,wBAAwBuK,CAAK,CAAC,KAAKxK,EAAgBC,GAAQ,wBAAwBuK,CAAK,CAAC;AAAA,IAC/I,GAAO;AAAA,MACD,SAAS;AAAA,MACT,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;AC7DO,SAASD,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,eAAe;AAC1C;AACA,MAAM0W,KAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACM1I,KAAa,CAAC,OAAO,SAAS,UAAU,MAAM,GAC9CoJ,KAAY;AAAA,EAChB,KAAK;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACA;AAAA,EACE,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACA;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACA;AAAA,EACE,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACA;AACA;AACA,SAAST,GAAc3Q,GAAWuG,GAAQ;AACxC,SAAO;AAAA,IACL,GAAG6K,GAAUpR,CAAS,EAAE,IAAIuG;AAAA,IAC5B,GAAG6K,GAAUpR,CAAS,EAAE,IAAIuG;AAAA,EAChC;AACA;AACO,SAASwH,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,CAAO;AACtB;AACO,SAASgT,GAAMhT,GAAS;AAC7B,QAAM;AAAA,IACJ,WAAA+E,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,eAAA2K,IAAgB;AAAA,EACpB,IAAM5V,EAAQ,aACN,CAACmT,GAAQiD,CAAM,IAAInD,GAAgB,GACnCjN,IAAShG,EAAQ,UAAU,WAC3BsL,IAASL,KAASwK,GAAoBxK,CAAK,KAAK2K,GAChD;AAAA,IACJ,GAAAjQ;AAAA,IACA,GAAAC;AAAA,EACJ,IAAMuQ,GAAUpR,CAAS,EAAE,QACnBwL,IAAOmF,GAAc3Q,GAAWuG,CAAM,GACtC3C,IAAS;AAAA,IACb,qBAAqB,GAAGhD,CAAC;AAAA,IACzB,qBAAqB,GAAGC,CAAC;AAAA,IACzB,qBAAqB,GAAG2K,EAAK,CAAC;AAAA,IAC9B,qBAAqB,GAAGA,EAAK,CAAC;AAAA,EAClC;AACE,SAAO,CAAC;AAAA,IACN,GAAGvQ;AAAA,IACH,QAAQ;AAAA,IACR,MAAMmT;AAAA,IACN,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGnT;AAAA,IACH,QAAAgG;AAAA,IACA,MAAMoQ;AAAA,IACN,QAAAzN;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,WAAW,uEAAuE+E,EAAO,mBAAmB,CAAC,6BAA6BA,EAAO,mBAAmB,CAAC,wDAAwDA,EAAO,mBAAmB,CAAC,qCAAqCA,EAAO,mBAAmB,CAAC,iDAAiDA,EAAO,mBAAmB,CAAC,wCAAwCA,EAAO,mBAAmB,CAAC;AAAA,IAC7c,GAAO;AAAA,MACD,WAAW,uEAAuEA,EAAO,mBAAmB,CAAC,6BAA6BA,EAAO,mBAAmB,CAAC,gGAAgGA,EAAO,mBAAmB,CAAC,wCAAwCA,EAAO,mBAAmB,CAAC;AAAA,IACzW,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASoK,GAAQ/S,GAASiN,GAAK;AACpC,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,eAAA2K,IAAgB;AAAA,EACpB,IAAM5V,EAAQ,aACNsL,IAASL,KAASwK,GAAoBxK,CAAK,KAAK2K;AACtD,MAAI3I,GAAK;AACP,QAAI6I,IAAoB/Q;AACxB,IAAAkI,EAAI,QAAQ,CAAAvM,MAAU;AACpB,UAAI,CAACA;AACH;AAEF,YAAMoN,IAAW,iBAAiBpN,CAAM,EAAE,iBAAiB,iBAAiB,KAAK;AACjF,MAAAoV,IAAoB5Q,EAAqB6H,IAAYhI,GAAW,SAAS+I,GAAU,EAAE,CAAC;AAAA,IACxF,CAAC,GACDb,EAAI,OAAO,CAAAvM,MAAU;AACnB,YAAM;AAAA,QACJ,QAAA2V;AAAA,MACR,IAAUF,GAAUL,CAAiB,GACzBQ,IAAYZ,GAAcI,GAAmBxK,CAAM;AACzD,MAAkB5K,GAAO,MAAM,YAAY,qBAAqB,GAAG2V,EAAO,CAAC,GAAG,GAC5D3V,GAAO,MAAM,YAAY,qBAAqB,GAAG2V,EAAO,CAAC,GAAG,GAC5D3V,GAAO,MAAM,YAAY,qBAAqB,GAAG4V,EAAU,CAAC,KAAK,GACjE5V,GAAO,MAAM,YAAY,qBAAqB,GAAG4V,EAAU,CAAC,KAAK;AAAA,IACrF,CAAC;AAAA,EACH;AACF;;;;;;;;AC5HO,SAASrD,GAASlU,GAAG;AAC1B,SAAO,CAAC,gBAAgB;AAC1B;AACA,MAAM8T,KAAa;AAAA,EACjB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR;AACO,SAASC,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,IACZ,UAAAU,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,OAAAwF;AAAA,IACA,oBAAAiC,IAAqB;AAAA,EACzB,IAAMlN,EAAQ,aACN,CAACuW,CAAO,IAAItD,GAAgB,GAC5BzM,IAAazB,IAAY,KAAK,KAAK,KACnC+H,IAAOjH,EAAYJ,EAAS,IAAI,GAChCO,IAASiF,KAAS4H,GAAW5H,CAAK,KAAKjL,EAAQ,UAAU,cACzD;AAAA,IACJ,GAAA2F;AAAA,IACA,GAAAC;AAAA,EACJ,IAAMW,GAAuBxB,CAAS,GAC9BkR,IAAa/I,IAAqBvH,IAAI,GAAG,KAAK,IAAIa,CAAU,IAAIf,EAAS,QAAQ,CAAC,GAAGqH,CAAI,IACzFoJ,IAAahJ,IAAqBtH,IAAI,GAAG,KAAK,IAAIY,CAAU,IAAIf,EAAS,QAAQ,KAAK,CAAC,GAAGqH,CAAI,IAC9FnE,IAAS;AAAA,IACb,wBAAwB,GAAGsN,CAAU;AAAA,IACrC,wBAAwB,GAAGC,CAAU;AAAA,EACzC;AACE,SAAO,CAAC;AAAA,IACN,GAAGlW;AAAA,IACH,MAAMuW;AAAA,IACN,QAAAvQ;AAAA,IACA,QAAA2C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,IACd,GAAO;AAAA,MACD,QAAQ/E;AAAA;AAAA,MAER,SAAS;AAAA,MACT,WAAW,aAAa8E,EAAgBC,GAAQ,wBAAwBuK,CAAK,CAAC,KAAKxK,EAAgBC,GAAQ,wBAAwBuK,CAAK,CAAC;AAAA,IAC/I,GAAO;AAAA,MACD,SAAS;AAAA,MACT,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASH,GAAQ/S,GAASiN,GAAK;AACpC,QAAM;AAAA,IACJ,oBAAAC,IAAqB;AAAA,EACzB,IAAMlN,EAAQ;AACZ,MAAIiN,KAAOC,GAAoB;AAC7B,QAAIjJ,IAAO,GACPF,IAAM;AACV,IAAAkJ,EAAI,QAAQ,CAAAvM,MAAU;AACpB,UAAI,CAACA;AACH;AAEF,YAAM;AAAA,QACJ,MAAM8V;AAAA,QACN,KAAKC;AAAA,MACb,IAAU/V,EAAO,sBAAqB;AAChC,MAAAuD,IAAOuS,GACPzS,IAAM0S;AAAA,IACR,CAAC,GACDxJ,EAAI,OAAO,CAAAvM,MAAU;AACnB,MAAkBA,GAAO,MAAM,YAAY,iBAAiB,GAAGuD,CAAI,IAAI,GACrDvD,GAAO,MAAM,YAAY,gBAAgB,GAAGqD,CAAG,IAAI;AAAA,IACvE,CAAC;AAAA,EACH;AACF;;;;;;;;ACjFA,SAAS2S,GAAkB1W,GAAS;AAElC,QAAM2W,IAAY,KAAK,MAAM,KAAK,UAAU3W,CAAO,CAAC,GAC9C;AAAA,IACJ,WAAA+E;AAAA,EACJ,IAAM4R,EAAU;AACd,SAAIA,EAAU,YAAY,qBACxBA,EAAU,YAAY,aAAa5R,KAAa,OAAO,KAC9C,OAAOA,IAAc,QAC9B4R,EAAU,YAAY,YAAY,MAE7BA;AACT;AACO,SAAS7D,GAAI9S,GAASiN,GAAK;AAChC,SAAO2J,GAAWF,GAAkB1W,CAAO,GAAGiN,CAAG;AACnD;AACO,SAAS+F,GAAMhT,GAAS;AAC7B,SAAO6W,GAAaH,GAAkB1W,CAAO,CAAC;AAChD;;;;;;;;ACnBO,SAASiT,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,eAAe;AAC1C;AACA,MAAMqW,KAAY;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR;AACO,SAAStC,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,cAAAiK,IAAe;AAAA,IACf,UAAAzP,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,WAAAV,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAACmT,GAAQ2D,CAAM,IAAI7D,GAAgB,GACnCjN,IAAShG,EAAQ,UAAU,cAC3BkM,IAAQ,OAAOjB,IAAU,MAAcmK,GAAUnK,CAAK,IAAIiK,GAC1D1O,IAAazB,IAAY,KAAK,KAAK,KACnC+H,IAAOjH,EAAYJ,EAAS,IAAI,GAChCE,IAAI,GAAG,KAAK,IAAIa,CAAU,IAAIf,EAAS,QAAQ,CAAC,GAAGqH,CAAI,IACvDlH,IAAI,GAAG,KAAK,IAAIY,CAAU,IAAIf,EAAS,QAAQ,KAAK,CAAC,GAAGqH,CAAI,IAC5DnE,IAAS;AAAA,IACb,wBAAwB,GAAGhD,CAAC;AAAA,IAC5B,wBAAwB,GAAGC,CAAC;AAAA,IAC5B,kBAAkB,GAAGsG,CAAK;AAAA,EAC9B;AACE,SAAO,CAAC;AAAA,IACN,GAAGlM;AAAA,IACH,QAAAgG;AAAA,IACA,UAAUhG,EAAQ,WAAWkM;AAAA,IAC7B,MAAMiH;AAAA,IACN,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGnT;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM8Q;AAAA,IACN,QAAAnO;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,WAAW,aAAa8E,EAAgBC,GAAQ,wBAAwBuK,CAAK,CAAC,KAAKxK,EAAgBC,GAAQ,wBAAwBuK,CAAK,CAAC,8CAA8CxK,EAAgBC,GAAQ,kBAAkBuK,CAAK,CAAC;AAAA,IAC7O,GAAO;AAAA,MACD,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;AC3DO,SAASD,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,gBAAgB;AAC3C;AACA,MAAMgY,KAA0B;AAAA,EAC9B,YAAY;AAAA,IACV,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,aAAa;AAAA,IACX,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,gBAAgB;AAAA,IACd,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,eAAe;AAAA,IACb,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA,GACMrL,KAAY;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR;AACA,SAASsL,GAAYrR,GAAGC,GAAG2H,GAAQ;AACjC,SAAO;AAAA,IACL,GAAG,8CAA8C5H,CAAC,MAAM4H,CAAM;AAAA,IAC9D,GAAG,+CAA+C3H,CAAC,MAAM2H,CAAM;AAAA,EACnE;AACA;AACO,SAASuF,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,IACZ,OAAAkG,IAAQ;AAAA,EACZ,IAAMjL,EAAQ,aACN,CAACmT,GAAQ8D,CAAO,IAAIhE,GAAgB,GACpCiE,IAAqBH,GAAwBhS,CAAS,GACtDoS,IAAc;AAAA,IAClB,GAAG,8CAA8CD,EAAmB,CAAC;AAAA,IACrE,GAAG,+CAA+CA,EAAmB,CAAC;AAAA,EAC1E,GACQ;AAAA,IACJ,IAAIE;AAAA,IACJ,KAAKC;AAAA,EACT,IAAMnR,GAAgBwF,GAAUT,CAAK,CAAC,GAoD9B+C,IAnDY,CAAC;AAAA,IACjB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,EACV,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAMqJ;AAAA,EACV,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAMD;AAAA,EACV,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAMC;AAAA,EACV,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAMD;AAAA,EACV,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAMC;AAAA,EACV,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAMD;AAAA,EACV,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAMC;AAAA,EACV,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAMD;AAAA,EACV,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAMC;AAAA,EACV,CAAG,EAC2B,IAAI,CAAApU,MAAQ;AACtC,QAAI;AAAA,MACF,QAAAS;AAAA,MACA,OAAAwI;AAAA,MACA,MAAA/F;AAAA,MACA,QAAAoH;AAAA,IACN,IAAQtK;AACJ,UAAM;AAAA,MACJ,GAAA0C;AAAA,MACA,GAAAC;AAAA,IACN,IAAQoR,GAAYE,EAAmB,GAAGA,EAAmB,GAAG3J,CAAM;AAClE,WAAO;AAAA,MACL,QAAQ7J,IAAS;AAAA,MACjB,QAAQqC,EAAUI,CAAI;AAAA,MACtB,OAAO,GAAG+F,CAAK;AAAA,MACf,WAAW,GAAGvG,CAAC,IAAIC,CAAC;AAAA,IAC1B;AAAA,EACE,CAAC,GACK+C,IAAS;AAAA,IACb,sBAAsB,GAAGwO,EAAY,CAAC,IAAIA,EAAY,CAAC;AAAA,EAC3D;AACE,SAAO,CAAC;AAAA,IACN,GAAGnX;AAAA,IACH,QAAQ;AAAA,IACR,UAAUA,EAAQ,WAAW;AAAA,IAC7B,MAAMmT;AAAA,IACN,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGnT;AAAA,IACH,QAAQ;AAAA,IACR,MAAMiX;AAAA,IACN,QAAAtO;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,WAAW8E,EAAgBC,GAAQ,sBAAsBuK,CAAK;AAAA,MAC9D,OAAO;AAAA,MACP,QAAQvD,EAAQ;AAAA,IACtB,GAAO,GAAG3B,CAAS;AAAA,EACnB,CAAG;AACH;AACO,SAAS+E,GAAQhU,GAAGkO,GAAK;AAC9B,MAAIA,GAAK;AACP,QAAIsG,GAAOC;AACX,IAAAvG,EAAI,QAAQ,CAAAvM,MAAU;AACpB,UAAI,CAACA;AACH;AAEF,YAAM+S,IAAO/S,EAAO,sBAAqB;AACzC,MAAA6S,IAAQE,EAAK,OACbD,IAASC,EAAK;AAAA,IAChB,CAAC,GACDxG,EAAI,OAAO,CAAAvM,MAAU;AACnB,MAAkBA,GAAO,MAAM,YAAY,kBAAkB,GAAG6S,CAAK,IAAI,GACvD7S,GAAO,MAAM,YAAY,mBAAmB,GAAG8S,CAAM,IAAI;AAAA,IAC7E,CAAC;AAAA,EACH;AACF;;;;;;;;AC5KO,SAASP,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,gBAAgB;AAC3C;AACA,MAAMuY,KAAS;AAAA,EACb,SAAS;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,EACT;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACT;AAAA,EACE,WAAW;AAAA,IACT,OAAO;AAAA,IACP,KAAK;AAAA,EACT;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACT;AAAA,EACE,SAAS;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,EACT;AACA;AACO,SAASxE,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAA3E,IAAQ;AAAA,EACZ,IAAMvO,EAAQ,aACN,CAACmT,GAAQoE,CAAO,IAAItE,GAAgB,GACpCjN,IAAShG,EAAQ,UAAU,cAC3B;AAAA,IACJ,OAAAsI;AAAA,IACA,KAAAC;AAAA,EACJ,IAAM+O,GAAO/I,CAAK,GACV5F,IAAS;AAAA,IACb,wBAAwBL;AAAA,IACxB,sBAAsBC;AAAA,EAC1B;AACE,SAAO,CAAC;AAAA,IACN,GAAGvI;AAAA,IACH,MAAMmT;AAAA,IACN,QAAQ;AAAA,IACR,UAAUnT,EAAQ,WAAW;AAAA,IAC7B,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGA;AAAA,IACH,MAAMuX;AAAA,IACN,QAAAvR;AAAA,IACA,QAAA2C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,UAAU8E,EAAgBC,GAAQ,wBAAwBuK,CAAK;AAAA,IACrE,GAAO;AAAA,MACD,UAAUxK,EAAgBC,GAAQ,sBAAsBuK,CAAK;AAAA,IACnE,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;ACrEO,SAASD,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB;AAC3B;AACA,MAAMgO,KAAa,CAAC,OAAO,SAAS,UAAU,MAAM;AACpD,SAASyK,GAAalG,GAASvM,GAAW;AACxC,QAAM0S,IAAgBvS,EAAqB6H,IAAYhI,GAAWuM,CAAO;AACzE,SAAOzM,EAAqB;AAAA,IAC1B,WAAW4S;AAAA,IACX,SAAS;AAAA,EACb,CAAG;AACH;AACO,SAAS3E,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,CAAO;AACtB;AACO,SAASgT,GAAMhT,GAAS;AAC7B,QAAM;AAAA,IACJ,WAAA+E,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAAC0X,CAAQ,IAAIzE,GAAgB,GAC7BjN,IAAShG,EAAQ,UAAU,cAC3BsI,IAAQkP,GAAa,GAAGzS,CAAS,GACjCwD,IAAM1D,EAAqB;AAAA,IAC/B,WAAW;AAAA,EACf,CAAG;AAID,SAAO,CAAC;AAAA,IACN,GAAG7E;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM0R;AAAA,IACN,QAPa;AAAA,MACb,uBAAuBpP;AAAA,IAC3B;AAAA,IAMI,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,IACd,GAAO;AAAA,MACD,QAAQ1E;AAAA,MACR,SAAS;AAAA,MACT,UAAU,4BAA4B0E,CAAK;AAAA,IACjD,GAAO;AAAA,MACD,UAAUC;AAAA,IAChB,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASwK,GAAQ/S,GAASiN,GAAK;AACpC,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,EAChB,IAAM/E,EAAQ;AACZ,MAAIiN,GAAK;AACP,QAAIa,IAAW;AACf,IAAAb,EAAI,QAAQ,CAAAvM,MAAU;AACpB,MAAKA,MAGLoN,IAAW,iBAAiBpN,CAAM,EAAE,iBAAiB,iBAAiB,KAAK;AAAA,IAC7E,CAAC,GACDuM,EAAI,OAAO,CAAA0K,MAAW;AACpB,MAAmBA,GAAQ,MAAM,YAAY,uBAAuBH,GAAa,SAAS1J,GAAU,EAAE,GAAG/I,CAAS,CAAC;AAAA,IACrH,CAAC;AAAA,EACH;AACF;;;;;;;;AC9DO,SAASkO,GAASjT,GAAS;AAChC,QAAM;AAAA,IACJ,OAAAiL;AAAA,EACJ,IAAMjL,EAAQ;AACZ,SAAOiL,MAAU,SAAS,CAAC,kBAAkB,eAAe,IAAI,CAAC,gBAAgB;AACnF;AACA,MAAMkL,KAAY;AAAA,EAChB,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACV;AAAA,EACE,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACV;AAAA,EACE,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACV;AAAA,EACE,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACV;AACA,GACMpJ,KAAa,CAAC,OAAO,SAAS,UAAU,MAAM,GAC9C6K,KAAwB;AAAA,EAC5B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR;AACO,SAAS9E,GAAI9S,GAASiN,GAAK;AAChC,QAAMlN,IAAaiT,GAAMhT,CAAO;AAChC+S,SAAAA,GAAQ/S,GAASiN,CAAG,GACblN;AACT;AACO,SAASiT,GAAMhT,GAAS;AAC7B,QAAM;AAAA,IACJ,WAAA+E,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,kBAAA4M,IAAmB;AAAA,EACvB,IAAM7X,EAAQ,aACN,CAAC8X,GAAS3E,CAAM,IAAIF,GAASjT,CAAO,GACpCgG,IAAShG,EAAQ,UAAU,cAE3BoE,IAAU,OADF6G,KAAS2M,GAAsB3M,CAAK,KAAK4M,KACzB,KACxBvP,IAAQzD,EAAqB;AAAA,IACjC,WAAAE;AAAA,IACA,SAAAX;AAAA,EACJ,CAAG,GACK8D,IAAUrD,EAAqB;AAAA,IACnC,WAAW;AAAA,EACf,CAAG,GACK8D,IAAS;AAAA,IACb,uBAAuBL;AAAA,IACvB,wBAAwB,GAAG6N,GAAUpR,CAAS,EAAE,KAAK,GAAG;AAAA,IACxD,wBAAwB,GAAGoR,GAAUpR,CAAS,EAAE,KAAK,GAAG;AAAA,EAC5D,GACQhF,IAAa,CAAC;AAAA,IAClB,GAAGC;AAAA,IACH,MAAM8X;AAAA,IACN,QAAA9R;AAAA,IACA,QAAA2C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU,4BAA4B+E,EAAO,qBAAqB,CAAC;AAAA,IACzE,GAAO;AAAA,MACD,WAAW;AAAA,MACX,UAAUT;AAAA,IAChB,CAAK;AAAA,EACL,CAAG;AACD,SAAI+C,MAAU,SACZlL,EAAW,KAAK;AAAA,IACd,GAAGC;AAAA,IACH,QAAQ;AAAA,IACR,MAAMmT;AAAA;AAAA,IAEN,QAAQ,CAAA;AAAA,IACR,WAAW;AAAA;AAAA,MAEX;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,MACjB;AAAA;AAAA,MAEM;AAAA,QACE,SAAS;AAAA,MACjB;AAAA,IAAO;AAAA,EACP,CAAK,IAEDpT,EAAW,CAAC,EAAE,UAAU,QAAQ;AAAA,IAC9B,QAAQ;AAAA;AAAA,IAER,SAAS;AAAA,IACT,QAAQ;AAAA,EACd,CAAK,GAEIA;AACT;AACO,SAASgT,GAAQ/S,GAASiN,GAAK;AACpC,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,kBAAA4M,IAAmB;AAAA,EACvB,IAAM7X,EAAQ,aAENoE,IAAU,OADF6G,KAAS2M,GAAsB3M,CAAK,KAAK4M,KACzB;AAC9B,MAAI5K,GAAK;AACP,QAAIa,IAAW;AACf,IAAAb,EAAI,QAAQ,CAAAvM,MAAU;AACpB,MAAKA,MAGLoN,IAAW,SAAS,iBAAiBpN,CAAM,EAAE,iBAAiB,iBAAiB,KAAK,QAAQ,EAAE;AAAA,IAChG,CAAC,GACDuM,EAAI,OAAO,CAAAvM,MAAU;AACnB,YAAMoV,IAAoB5Q,EAAqB6H,IAAYhI,GAAW+I,CAAQ;AAC9E,MAAkBpN,GAAO,MAAM,YAAY,uBAAuBmE,EAAqB;AAAA,QACrF,WAAWsR,GAAUL,CAAiB,EAAE;AAAA,QACxC,SAAA1R;AAAA,MACR,CAAO,CAAC,GACgB1D,GAAO,MAAM,YAAY,wBAAwB,GAAGyV,GAAUL,CAAiB,EAAE,KAAK,GAAG,GAAG,GAC5FpV,GAAO,MAAM,YAAY,wBAAwB,GAAGyV,GAAUL,CAAiB,EAAE,KAAK,GAAG,GAAG;AAAA,IAChH,CAAC;AAAA,EACH;AACF;;;;;;;;AClIO,SAAS7C,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,eAAe;AAC1C;AACA,MAAMqW,KAAY;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMvG,KAAgB;AAAA,EACpB,WAAW;AAAA,EACX,qBAAqB;AACvB;AACO,SAASiE,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,IACZ,OAAAuK,IAAQ;AAAA,IACR,cAAA4F,IAAe;AAAA,IACf,OAAAjK;AAAA,EACJ,IAAMjL,EAAQ,aACN,CAACmT,GAAQ4E,CAAM,IAAI9E,GAAgB,GACnCjN,IAAShG,EAAQ,UAAU,cAC3BkM,IAAQ,OAAOjB,IAAU,MAAcmK,GAAUnK,CAAK,IAAIiK,GAC1D8C,KAAmBnJ,GAAc9J,CAAS,IAAI,IAAI,IAAI,MAAM,MAAMuK,GAClE3G,IAAS;AAAA,IACb,kBAAkB,GAAGuD,CAAK;AAAA,IAC1B,mBAAmB,GAAG8L,CAAe;AAAA,EACzC;AACE,SAAO,CAAC;AAAA,IACN,GAAGhY;AAAA,IACH,MAAMmT;AAAA,IACN,QAAQ;AAAA,IACR,UAAUnT,EAAQ,WAAWkM;AAAA,IAC7B,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGlM;AAAA,IACH,MAAM+X;AAAA,IACN,QAAA/R;AAAA,IACA,QAAA2C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,OAAO8E,EAAgBC,GAAQ,kBAAkBuK,CAAK;AAAA,MACtD,QAAQxK,EAAgBC,GAAQ,mBAAmBuK,CAAK;AAAA,IAC9D,GAAO;AAAA,MACD,OAAO;AAAA,MACP,QAAQ;AAAA,IACd,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;AC3DO,SAASD,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,uBAAuB,mBAAmB;AACrE;AACA,MAAMkZ,KAAe;AAAA,EACnB,MAAM;AAAA,EACN,OAAO;AACT,GACMlL,KAAa,CAAC,OAAO,SAAS,UAAU,MAAM;AACpD,SAASyK,GAAalG,GAAS;AAC7B,QAAMmG,IAAgBvS,EAAqB6H,IAAY,OAAOuE,CAAO;AACrE,SAAOzM,EAAqB;AAAA,IAC1B,WAAW4S;AAAA,IACX,SAAS;AAAA,EACb,CAAG;AACH;AACO,SAAS3E,GAAI9S,GAASiN,GAAK;AAChC8F,SAAAA,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAACmT,GAAQ+E,GAAcC,CAAU,IAAIlF,GAAgB,GACrDjN,IAAShG,EAAQ,UAAU,YAC3BiI,IAAYuP,GAAa,CAAC,GAC1BhI,IAAYyI,GAAalT,CAAS,GAClCmD,IAAUrD,EAAqB;AAAA,IACnC,WAAW;AAAA,EACf,CAAG,GACKuT,IAAa,qCACbC,IAAa;AAAA,IACjB,qBAAqB,GAAG7I,CAAS;AAAA,IACjC,uBAAuBvH;AAAA,EAC3B;AACE,SAAO,CAAC;AAAA,IACN,GAAGjI;AAAA,IACH,MAAMmT;AAAA,IACN,UAAUnT,EAAQ,WAAW;AAAA,IAC7B,QAAQ;AAAA,IACR,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGA;AAAA,IACH,MAAMkY;AAAA,IACN,QAAAlS;AAAA,IACA,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,WAAW;AAAA,IACjB,GAAO;AAAA,MACD,QAAQpC;AAAA,MACR,WAAW,sCAAsCwU,CAAU,0CAA0CA,CAAU;AAAA,IACrH,GAAO;AAAA,MACD,WAAW,sCAAsCA,CAAU,wCAAwCA,CAAU;AAAA,IACnH,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGpY;AAAA,IACH,MAAMmY;AAAA,IACN,QAAAnS;AAAA,IACA,WAAW;AAAA,IACX,UAAUhG,EAAQ,WAAW;AAAA,IAC7B,QAAQqY;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQzU;AAAA,MACR,UAAU,4BAA4ByU,EAAW,qBAAqB,CAAC;AAAA,MACvE,WAAW,WAAW3P,EAAgB2P,GAAY,qBAAqBnF,CAAK,CAAC;AAAA,IACnF,GAAO;AAAA,MACD,UAAUhL;AAAA,MACV,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAAS6K,GAAQhU,GAAGkO,GAAK;AAC9B,MAAIA,GAAK;AACP,QAAIa,IAAW;AACf,IAAAb,EAAI,QAAQ,CAAAvM,MAAU;AACpB,MAAKA,MAGLoN,IAAW,iBAAiBpN,CAAM,EAAE,iBAAiB,iBAAiB,KAAK;AAAA,IAC7E,CAAC,GACDuM,EAAI,OAAO,CAAA0K,MAAW;AACpB,MAAmBA,GAAQ,MAAM,YAAY,uBAAuBH,GAAa,SAAS1J,GAAU,EAAE,CAAC,CAAC;AAAA,IAC1G,CAAC;AAAA,EACH;AACF;;;;;;;;AC/FO,SAASmF,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,eAAe;AAC1C;AACA,MAAM8T,KAAa;AAAA,EACjB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMyF,KAA6B;AAAA,EACjC,YAAY;AAAA,IACV,OAAO;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,aAAa;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,gBAAgB;AAAA,IACd,OAAO;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,eAAe;AAAA,IACb,OAAO;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA;AACO,SAASxF,GAAI9S,GAAS;AAC3B,SAAOgT,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,IACZ,OAAAkG;AAAA,EACJ,IAAMjL,EAAQ,aACN,CAACmT,GAAQoF,CAAM,IAAItF,GAAgB,GACnCjN,IAASiF,KAAS4H,GAAW5H,CAAK,IAAI4H,GAAW5H,CAAK,IAAIjL,EAAQ,UAAU,WAC5E;AAAA,IACJ,GAAA2F;AAAA,IACA,GAAAC;AAAA,EACJ,IAAM0S,GAA2BvT,CAAS,GAClCiT,IAAkBM,GAA2BvT,CAAS,EAAE,OACxD4D,IAAS;AAAA,IACb,mBAAmB,GAAGhD,CAAC,MAAMC,CAAC;AAAA,IAC9B,0BAA0B,GAAG,CAACD,CAAC,MAAM,CAACC,CAAC;AAAA,IACvC,qBAAqB,GAAGoS,CAAe;AAAA,EAC3C,GACQ3B,IAAS3N,EAAgBC,GAAQ,mBAAmBuK,CAAK,GACzDsF,IAAiB9P,EAAgBC,GAAQ,0BAA0BuK,CAAK;AAC9E,SAAO,CAAC;AAAA,IACN,GAAGlT;AAAA,IACH,MAAMmT;AAAA,IACN,UAAUnT,EAAQ,WAAW;AAAA,IAC7B,QAAQ;AAAA,IACR,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGA;AAAA,IACH,MAAMuY;AAAA,IACN,QAAAvS;AAAA,IACA,QAAA2C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,WAAW,aAAayS,CAAM,YAAY3N,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,eAAesF,CAAc;AAAA,IAChI,GAAO;AAAA,MACD,WAAW,aAAanC,CAAM,4BAA4BmC,CAAc;AAAA,IAC9E,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;AC/EO,SAASvF,GAASlU,GAAG;AAC1B,SAAO,CAAC,iBAAiB,qBAAqB,qBAAqB;AACrE;AACA,MAAMoX,KAAY;AAAA,EAChB,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACE,YAAY;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AACA,GACMpJ,KAAa,CAAC,YAAY,YAAY;AACrC,SAAS+F,GAAI9S,GAASiN,GAAK;AAChC,SAAA8F,GAAQ/S,GAASiN,CAAG,GACb+F,GAAMhT,CAAO;AACtB;AACO,SAASgT,GAAMhT,GAAS;AAC7B,QAAM;AAAA,IACJ,WAAA+E,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN,CAACmT,GAAQsF,GAAYC,CAAY,IAAIzF,GAAgB,GACrD6C,IAAoB5Q,EAAqB6H,IAAYhI,GAAW,CAAC,GACjE;AAAA,IACJ,QAAAC;AAAA,IACA,QAAAC;AAAA,EACJ,IAAMkR,GAAUL,CAAiB,GACzB9P,IAAShG,EAAQ,UAAU,cAC3BsI,IAAQzD,EAAqB;AAAA,IACjC,WAAAE;AAAA,IACA,SAAS;AAAA,EACb,CAAG,GACKwD,IAAM1D,EAAqB;AAAA,IAC/B,WAAW;AAAA,EACf,CAAG,GACK8D,IAAS;AAAA,IACb,oBAAoB3D;AAAA,IACpB,oBAAoBC;AAAA,IACpB,uBAAuBqD;AAAA,EAC3B;AACE,SAAO,CAAC;AAAA,IACN,GAAGtI;AAAA,IACH,QAAQ;AAAA,IACR,MAAMmT;AAAA,IACN,QAAQ,CAAA;AAAA,IACR,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGnT;AAAA,IACH,QAAAgG;AAAA,IACA,MAAMyS;AAAA,IACN,QAAA9P;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,UAAU,4BAA4B+E,EAAO,qBAAqB,CAAC;AAAA,IACzE,GAAO;AAAA,MACD,UAAUJ;AAAA,IAChB,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGvI;AAAA,IACH,UAAUA,EAAQ,WAAW;AAAA,IAC7B,QAAAgG;AAAA,IACA,MAAM0S;AAAA,IACN,QAAA/P;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ/E;AAAA,MACR,WAAW,kEAAkE+E,EAAO,kBAAkB,CAAC,4BAA4BA,EAAO,kBAAkB,CAAC;AAAA,IACnK,GAAO;AAAA,MACD,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASoK,GAAQ/S,GAASiN,GAAK;AACpC,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,EAChB,IAAM/E,EAAQ;AACZ,MAAIiN,GAAK;AACP,QAAIf,IAAQiK,GAAU,YAClBwC,IAAc9T,EAAqB;AAAA,MACrC,WAAW;AAAA,MACX,SAAS;AAAA,IACf,CAAK;AACD,IAAAoI,EAAI,QAAQ,CAAAvM,MAAU;AACpB,UAAI,CAACA;AACH;AAEF,YAAMoN,IAAW,iBAAiBpN,CAAM,EAAE,iBAAiB,iBAAiB,KAAK,KAC3EkY,IAAmB1T,EAAqB6H,IAAYhI,GAAW,SAAS+I,GAAU,EAAE,CAAC;AAC3F,MAAA5B,IAAQiK,GAAUyC,CAAgB,GAClCD,IAAc9T,EAAqB;AAAA,QACjC,WAAW+T;AAAA,QACX,SAAS;AAAA,MACjB,CAAO;AAAA,IACH,CAAC,GACD3L,EAAI,OAAO,CAAAvM,MAAU;AACnB,MAAkBA,GAAO,MAAM,YAAY,uBAAuBiY,CAAW,GAC3DjY,GAAO,MAAM,YAAY,oBAAoB,GAAGwL,EAAM,MAAM,EAAE,GAC9DxL,GAAO,MAAM,YAAY,oBAAoB,GAAGwL,EAAM,MAAM,EAAE;AAAA,IAClF,CAAC;AAAA,EACH;AACF;;;;;;;8CCnFa2M,KAAqB;AAAA,EAChC,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AACF,GC9CMC,KAA6B;AAAA,EACjC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMC,KAAwB,CAAC;AAAA,EAC7B,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,GAAG;AAAA,EACD,UAAU;AAAA,EACV,YAAY;AACd,CAAC;AACM,SAASxH,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI,IAAQ;AAAA,IACR,WAAAuD;AAAA,EACJ,IAAMxO,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzBkJ,IAAeJ,EAAgBC,GAAUzI,CAAK,GAC9C,CAACka,CAAI,IAAIvH,GAASjT,CAAO,GACzBya,IAAejM,IAAY9L,EAAS,GAAG,GAAG2X,GAA2B,MAAMA,GAA2B,MAAM7L,CAAS,IAAI6L,GAA2BpP,CAAK,GACzJjF,IAASD,EAAU,SAAS,GAC5B4C,IAAS;AAAA,IACb,0BAA0B8R;AAAA,EAC9B,GACQzM,IAAYsM,GAAsB,IAAI,CAAArX,MAAQ;AAClD,QAAI;AAAA,MACF,UAAAyX;AAAA,MACA,YAAAxE;AAAA,IACN,IAAQjT;AACJ,WAAO;AAAA,MACL,QAAQyX,IAAW,MAAMxR;AAAA,MACzB,WAAW,YAAYgN,IAAa,CAAC,QAAQxN,EAAgBC,GAAQ,0BAA0BuK,CAAK,CAAC;AAAA,MACrG,QAAAlN;AAAA,IACN;AAAA,EACE,CAAC;AACD,SAAO,CAAC;AAAA,IACN,GAAGhG;AAAA,IACH,MAAAwa;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAUzR,IAAWzI;AAAA,IACrB,QAAAqI;AAAA,IACA,WAAAqF;AAAA,EACJ,CAAG;AACH;AACO,SAASiF,GAASjT,GAAS;AAEhC,SAAO,CAAC,iBADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACrC,EAAE;AACzC;;;;;;8CCzFM6O,KAAgB;AAAA,EACpB,UAAU;AAAA,IACR,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,YAAY;AAAA,IACV,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA,GACM8L,KAAmB,CAAC;AAAA,EACxB,iBAAiB;AAAA,EACjB,YAAY;AACd,GAAG;AAAA,EACD,iBAAiB;AAAA,EACjB,YAAY;AACd,GAAG;AAAA,EACD,iBAAiB;AAAA,EACjB,YAAY;AACd,GAAG;AAAA,EACD,iBAAiB;AAAA,EACjB,YAAY;AACd,GAAG;AAAA,EACD,iBAAiB;AAAA,EACjB,YAAY;AACd,CAAC;AACM,SAAS7H,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,IACZ,UAAAU,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,EACA,IAAMzF,EAAQ,aACNgG,IAAShG,EAAQ,UAAU,aAC3B+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzB4a,IAAyB,MAAM7R,IAAWzI,GAC1C4I,IAAeJ,EAAgBC,GAAU6R,IAAyB7R,CAAQ,GAC1E,CAACyR,CAAI,IAAIvH,GAASjT,CAAO,GACzB;AAAA,IACJ,GAAA2F;AAAA,IACA,GAAAC;AAAA,IACA,GAAA0N;AAAA,EACJ,IAAMzE,GAAc9J,CAAS,GACrBoB,IAAOD,GAAgBF,CAAM,GAI7B2C,IAAS;AAAA,IACb,gCAJ2B5D,MAAc,WAAW,uBAAuB;AAAA,IAK3E,6BAA6B,GAAGU,EAAS,KAAK,GAAGI,EAAYJ,EAAS,QAAQ,IAAI,CAAC;AAAA,IACnF,sBAAsBE;AAAA,IACtB,sBAAsBC;AAAA,IACtB,sBAAsB0N;AAAA,EAC1B,GACQuH,IAAW,GAAGnS,EAAgBC,GAAQ,sBAAsBuK,CAAK,CAAC,IAClE4H,IAAW,GAAGpS,EAAgBC,GAAQ,sBAAsBuK,CAAK,CAAC,IAClE6H,IAAW,GAAGrS,EAAgBC,GAAQ,sBAAsBuK,CAAK,CAAC,IAClE8H,IAAqB,GAAGtS,EAAgBC,GAAQ,gCAAgCuK,GAAO,GAAG,CAAC,IAC3F+H,IAAkB,GAAGvS,EAAgBC,GAAQ,6BAA6BuK,CAAK,CAAC;AACtF,MAAIgI,IAAgB;AAGpB,QAAMlN,IAAY1N,IAAQqa,GAAiB,IAAI,CAAA1X,MAAQ;AACrD,QAAI;AAAA,MACF,iBAAAkY;AAAA,MACA,YAAAC;AAAA,IACN,IAAQnY;AACJ,UAAMoY,IAAiBH,IAAgBE,IAAalS;AACpD,IAAAgS,IAAgBG;AAChB,UAAMC,KAAe,GAAGL,CAAe,MAAME,CAAe;AAC5D,WAAO;AAAA,MACL,QAAQE;AAAA,MACR,QAAQtV,EAAUI,EAAK,KAAK;AAAA,MAC5B,WAAW,GAAG6U,CAAkB,qBAAqBH,CAAQ,MAAMS,EAAY,WAAWR,CAAQ,MAAMQ,EAAY,WAAWP,CAAQ,MAAMO,EAAY;AAAA,IAC/J;AAAA,EACE,CAAC,IAAI,CAAC;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQvV,EAAUI,EAAK,KAAK;AAAA,IAC5B,WAAW,GAAG6U,CAAkB,qBAAqBH,CAAQ,MAAMI,CAAe,WAAWH,CAAQ,MAAMG,CAAe,WAAWF,CAAQ,MAAME,CAAe;AAAA,EACtK,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,QAAQlV,EAAUI,EAAK,EAAE;AAAA,IACzB,WAAW,GAAG6U,CAAkB,qBAAqBH,CAAQ,WAAWI,CAAe,WAAWH,CAAQ,WAAWG,CAAe,WAAWF,CAAQ,WAAWE,CAAe;AAAA,EACrL,CAAG;AACD,SAAO,CAAC;AAAA,IACN,GAAGjb;AAAA,IACH,MAAAwa;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAUla,IAAQsa,IAAyB7R;AAAA,IAC3C,QAAAJ;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ5C,EAAUI,EAAK,GAAG;AAAA,MAC1B,WAAW,GAAG6U,CAAkB;AAAA,IACtC,GAAO,GAAGhN,GAAW;AAAA,MACf,QAAQ;AAAA,MACR,WAAW,GAAGgN,CAAkB;AAAA,IACtC,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAAS/H,GAASjT,GAAS;AAEhC,SAAO,CAAC,kBADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACpC,EAAE;AAC1C;;;;;;8CCvHMub,KAA+B;AAAA;AAAA,EAEnC,OAAO;AAAA;AAAA,EAEP,MAAM;AAAA;AAAA,EAEN,KAAK;AAAA;AAAA,EAEL,QAAQ;AACV,GACM;AAAA,EACJ,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,QAAAC;AACF,IAAIJ,IACEK,KAA4B;AAAA,EAChC,YAAY;AAAA;AAAA,IAEV,MAAM,OAAOJ,CAAK,KAAKG,CAAM;AAAA;AAAA,IAE7B,IAAI,YAAYF,CAAI,gBAAgBC,CAAG;AAAA,EAC3C;AAAA,EACE,aAAa;AAAA;AAAA,IAEX,MAAM,YAAYD,CAAI,WAAWE,CAAM;AAAA;AAAA,IAEvC,IAAI,OAAOH,CAAK,UAAUE,CAAG;AAAA,EACjC;AAAA,EACE,eAAe;AAAA;AAAA,IAEb,MAAM,OAAOF,CAAK,UAAUE,CAAG;AAAA;AAAA,IAE/B,IAAI,YAAYD,CAAI,WAAWE,CAAM;AAAA,EACzC;AAAA,EACE,gBAAgB;AAAA;AAAA,IAEd,MAAM,YAAYF,CAAI,gBAAgBC,CAAG;AAAA;AAAA,IAEzC,IAAI,OAAOF,CAAK,KAAKG,CAAM;AAAA,EAC/B;AACA,GACME,KAA6B;AAAA,EACjC,MAAM;AAAA,IACJ,MAAM,GAAGL,CAAK;AAAA,IACd,IAAI,GAAGC,CAAI;AAAA,EACf;AAAA,EACE,OAAO;AAAA,IACL,MAAM,GAAGA,CAAI;AAAA,IACb,IAAI,GAAGD,CAAK;AAAA,EAChB;AAAA,EACE,KAAK;AAAA,IACH,MAAM,KAAKG,CAAM;AAAA,IACjB,IAAI,KAAKD,CAAG;AAAA,EAChB;AAAA,EACE,QAAQ;AAAA,IACN,MAAM,KAAKA,CAAG;AAAA,IACd,IAAI,KAAKC,CAAM;AAAA,EACnB;AACA,GACMG,KAA8B;AAAA;AAAA,EAElC,MAAM,CAAA7Y,MAAQ;AACZ,QAAI;AAAA,MACF,MAAAgB;AAAA,MACA,OAAAsP;AAAA,MACA,aAAAwI;AAAA,IACN,IAAQ9Y;AACJ,YAAQsQ,IAAQtP,MAAS8X,IAAcxI,KAAS;AAAA,EAClD;AAAA;AAAA,EAEA,OAAO,CAAArQ,MAAS;AACd,QAAI;AAAA,MACF,MAAAe;AAAA,MACA,OAAAsP;AAAA,MACA,aAAAwI;AAAA,IACN,IAAQ7Y;AACJ,YAAQ6Y,IAAc9X,MAAS8X,IAAcxI,KAAS;AAAA,EACxD;AAAA;AAAA,EAEA,QAAQ,CAAAzP,MAAS;AACf,QAAI;AAAA,MACF,KAAAC;AAAA,MACA,QAAAyP;AAAA,MACA,cAAAwI;AAAA,IACN,IAAQlY;AACJ,YAAQkY,IAAejY,MAAQiY,IAAexI,KAAU;AAAA,EAC1D;AAAA;AAAA,EAEA,KAAK,CAAArP,MAAS;AACZ,QAAI;AAAA,MACF,KAAAJ;AAAA,MACA,QAAAyP;AAAA,MACA,cAAAwI;AAAA,IACN,IAAQ7X;AACJ,YAAQqP,IAASzP,MAAQiY,IAAexI,KAAU;AAAA,EACpD;AAAA;AAAA,EAEA,gBAAgB,CAAAnP,MAAS;AACvB,QAAI;AAAA,MACF,MAAAJ;AAAA,MACA,KAAAF;AAAA,MACA,OAAAwP;AAAA,MACA,QAAAC;AAAA,MACA,aAAAuI;AAAA,MACA,cAAAC;AAAA,IACN,IAAQ3X;AACJ,UAAM4X,IAAe1I,IAAQtP,GACvBiY,IAAcF,IAAejY;AACnC,WAAOkY,IAAeC,IAAcD,KAAgBF,IAAcxI,KAAS,KAAK2I,KAAeF,IAAexI,KAAU;AAAA,EAC1H;AAAA;AAAA,EAEA,eAAe,CAAAlP,MAAS;AACtB,QAAI;AAAA,MACF,MAAAL;AAAA,MACA,KAAAF;AAAA,MACA,OAAAwP;AAAA,MACA,QAAAC;AAAA,MACA,aAAAuI;AAAA,MACA,cAAAC;AAAA,IACN,IAAQ1X;AACJ,UAAM6X,IAAgBJ,IAAc9X,GAC9BiY,IAAcF,IAAejY;AACnC,WAAOoY,IAAgBD,IAAcC,KAAiBJ,IAAcxI,KAAS,KAAK2I,KAAeF,IAAexI,KAAU;AAAA,EAC5H;AAAA;AAAA,EAEA,aAAa,CAAA/O,MAAS;AACpB,QAAI;AAAA,MACF,MAAAR;AAAA,MACA,KAAAF;AAAA,MACA,OAAAwP;AAAA,MACA,QAAAC;AAAA,MACA,aAAAuI;AAAA,MACA,cAAAC;AAAA,IACN,IAAQvX;AACJ,UAAMwX,IAAeF,IAAc9X,GAC7BmY,IAAiB5I,IAASzP;AAChC,WAAOkY,IAAeG,IAAiBH,KAAgBF,IAAcxI,KAAS,KAAK6I,KAAkBJ,IAAexI,KAAU;AAAA,EAChI;AAAA;AAAA,EAEA,YAAY,CAAA9O,MAAS;AACnB,QAAI;AAAA,MACF,MAAAT;AAAA,MACA,KAAAF;AAAA,MACA,OAAAwP;AAAA,MACA,QAAAC;AAAA,MACA,aAAAuI;AAAA,MACA,cAAAC;AAAA,IACN,IAAQtX;AACJ,UAAMyX,IAAgBJ,IAAc9X,GAC9BmY,IAAiB5I,IAASzP;AAChC,WAAOoY,IAAgBC,IAAiBD,KAAiBJ,IAAcxI,KAAS,KAAK6I,KAAkBJ,IAAexI,KAAU;AAAA,EAClI;AACF;AACA,SAAS6I,GAAkBtX,GAAW;AACpC,QAAMuX,IAAQV,GAA0B7W,CAAS,EAAE,MAC7CwX,IAAMX,GAA0B7W,CAAS,EAAE,IAC3CyX,IAAczX,EAAU,WAAW,KAAK,IAAI,IAAI,IAChD0X,IAAY,CAACD,GACbE,IAAc3X,EAAU,SAAS,MAAM,IAAI,IAAI,IAC/C4X,IAAY,CAACD;AACnB,SAAO;AAAA,IACL,MAAM,QAAQJ,CAAK,MAAMI,CAAW,UAAUJ,CAAK,MAAME,CAAW;AAAA,IACpE,IAAI,QAAQD,CAAG,MAAMI,CAAS,UAAUJ,CAAG,MAAME,CAAS;AAAA,EAC9D;AACA;AACO,SAAS3J,GAAI9S,GAASiN,GAAK;AAChC,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzBkJ,IAAeJ,EAAgBC,GAAUzI,CAAK,GAC9C,CAACka,CAAI,IAAIvH,GAAgB,GAGzBtK,IAAS;AAAA,IACb,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,yBAAyB;AAAA,IACzB,0BAA0B;AAAA,EAC9B;AAKE,MAAI1E,IAAO,GACPF,IAAM,GACNwP,IAAQ,GACRC,IAAS,GACTuI,IAAc,GACdC,IAAe;AACnB,SAAI/O,MACFA,EAAI,QAAQ,CAAAvM,MAAU;AACpB,QAAI,CAACA;AACH;AAEF,UAAM;AAAA,MACJ,OAAOkc;AAAA,MACP,QAAQC;AAAA,IAChB,IAAUnc,EAAO,sBAAqB,GAC1B0G,IAAS1G,EAAO,cAChBoc,IAAwC1V,GAAO,sBAAqB,KAAO,CAAA,GAC3E1D,IAASwD,GAAiBxG,GAAQ0G,CAAM;AAC9C,IAAAnD,IAAOP,EAAO,MACdK,IAAML,EAAO,KACb6P,IAAQqJ,GACRpJ,IAASqJ,GACTd,IAAce,EAAW,OACzBd,IAAec,EAAW;AAAA,EAC5B,CAAC,GACD7P,EAAI,OAAO,CAAAvM,MAAU;AACnB,IAAkBA,GAAO,MAAM,YAAY,iBAAiB,GAAGuD,CAAI,IAAI,GACrDvD,GAAO,MAAM,YAAY,gBAAgB,GAAGqD,CAAG,IAAI,GACnDrD,GAAO,MAAM,YAAY,kBAAkB,GAAG6S,CAAK,IAAI,GACvD7S,GAAO,MAAM,YAAY,mBAAmB,GAAG8S,CAAM,IAAI,GACzD9S,GAAO,MAAM,YAAY,yBAAyB,GAAGqb,CAAW,IAAI,GACpErb,GAAO,MAAM,YAAY,0BAA0B,GAAGsb,CAAY,IAAI;AAAA,EAC1F,CAAC,IAEI,CAAC;AAAA,IACN,GAAGhc;AAAA,IACH,MAAAwa;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAUzR,IAAWzI;AAAA,IACrB,QAAAqI;AAAA,IACA,IAAI,YAAY;AAEd,YAAMoU,IAAmBjB,GAA4B/W,CAAS,EAAE;AAAA,QAC9D,MAAAd;AAAA,QACA,KAAAF;AAAA,QACA,OAAAwP;AAAA,QACA,QAAAC;AAAA,QACA,aAAAuI;AAAA,QACA,cAAAC;AAAA,MACR,CAAO,IAAI9S;AACL,UAAIqH,GAAMC;AACV,UAAIzL,KAAa8W;AACf,QAAAtL,IAAOsL,GAA2B9W,CAAS,EAAE,MAC7CyL,IAAKqL,GAA2B9W,CAAS,EAAE;AAAA,WACtC;AACL,cAAMiY,IAAeX,GAAkBtX,CAAS;AAChD,QAAAwL,IAAOyM,EAAa,MACpBxM,IAAKwM,EAAa;AAAA,MACpB;AACA,aAAO,CAAC;AAAA,QACN,QAAQ;AAAA,QACR,WAAW;AAAA,MACnB,GAAS;AAAA,QACD,QAAQD;AAAA,QACR,WAAWvM;AAAA,QACX,QAAQ;AAAA,MAChB,GAAS;AAAA,QACD,QAAQuM;AAAA,QACR,WAAWxM;AAAA,MACnB,GAAS;AAAA,QACD,QAAQrH;AAAA,QACR,WAAW;AAAA,MACnB,GAAS;AAAA,QACD,QAAQ;AAAA,QACR,WAAW;AAAA,MACnB,CAAO;AAAA,IACH;AAAA,EACJ,CAAG;AACH;AACO,SAAS+J,GAASlU,GAAG;AAC1B,SAAO,CAAC,cAAc;AACxB;;;;;;AC9QO,SAAS+T,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,CAAa;AAC5B;AACO,SAASgT,GAAMhT,GAASid,GAAQ;AAIrC,QAAMlU,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzBgG,IAASD,EAAU/F,EAAQ,UAAU,YAAY,GACjDkJ,IAAeJ,EAAgBC,GAAUzI,CAAK,GAC9C,CAACka,CAAI,IAAIvH,GAASjT,CAAO,GACzBgO,IAAY,CAAC;AAAA,IACjB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAAhI;AAAA,EACJ,GAAK;AAAA,IACD,QAAQ,MAAMkD;AAAA,IACd,SAAS;AAAA,IACT,QAAAlD;AAAA,EACJ,GAAK;AAAA,IACD,QAAQkD;AAAA,IACR,SAAS;AAAA,EACb,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,SAAS;AAAA,EACb,CAAG;AACD,SAAO,CAAC;AAAA,IACN,GAAGlJ;AAAA,IACH,MAAAwa;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAUzR,IAAWzI;AAAA,IACrB,WAAA0N;AAAA,EACJ,CAAG;AACH;AACO,SAASiF,GAASjT,GAAS;AAEhC,SAAO,CAAC,gBADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACtC,EAAE;AACxC;;;;;;8CCvCMkd,KAAmB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMrO,KAAgB;AAAA,EACpB,UAAU;AAAA,IACR,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,YAAY;AAAA,IACV,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA;AACO,SAASiE,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,IACZ,OAAAkG;AAAA,EACJ,IAAMjL,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzB0D,IAASoF,EAAgBC,GAAUzI,CAAK,GACxC,CAACka,CAAI,IAAIvH,GAASjT,CAAO,GACzBmd,IAAetO,GAAc9J,CAAS,GACtCiB,IAASiF,KAASiS,GAAiBjS,CAAK,KAAKjL,EAAQ,UAAU,UAC/D2I,IAAS;AAAA,IACb,qBAAqBwU,EAAa;AAAA,IAClC,qBAAqBA,EAAa;AAAA,EACtC,GACQC,IAAc,YAAY1U,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,KAAKxK,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,cACrImK,IAAY,YAAY3U,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,KAAKxK,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC;AACzI,SAAO,CAAC;AAAA,IACN,GAAGlT;AAAA,IACH,MAAAwa;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAUzR,IAAWzI;AAAA,IACrB,QAAAqI;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,WAAW,0DAA0DyU,CAAW;AAAA,MAChF,QAAQrX,EAAUC,CAAM;AAAA,IAC9B,GAAO;AAAA,MACD,QAAAtC;AAAA,MACA,WAAW,0DAA0D2Z,CAAS;AAAA,IACpF,GAAO;AAAA,MACD,QAAQ;AAAA,MACR,WAAW,0DAA0DA,CAAS;AAAA,IACpF,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAASpK,GAASjT,GAAS;AAEhC,SAAO,CAAC,eADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACvC,EAAE;AACvC;;;;;;8CC7DMsd,KAA+B;AAAA,EACnC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMzO,KAAgB;AAAA,EACpB,KAAK;AAAA,IACH,UAAU;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,IACI,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACA;AAAA,EACE,OAAO;AAAA,IACL,UAAU;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,IACI,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACA;AAAA,EACE,QAAQ;AAAA,IACN,UAAU;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,IACI,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACA;AAAA,EACE,MAAM;AAAA,IACJ,UAAU;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,IACI,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACA;AACA,GACM0O,KAAmB,IACnBC,KAAmB,CAAC;AAAA,EACxB,MAAM;AAAA,EACN,aAAa;AACf,GAAG;AAAA,EACD,MAAM;AAAA,EACN,aAAa;AACf,GAAG;AAAA,EACD,MAAM;AAAA,EACN,aAAa;AACf,GAAG;AAAA,EACD,MAAM;AAAA,EACN,aAAa;AACf,GAAG;AAAA,EACD,MAAM;AAAA,EACN,aAAa;AACf,GAAG;AAAA,EACD,MAAM;AAAA,EACN,aAAa;AACf,GAAG;AAAA,EACD,MAAM;AAAA,EACN,aAAa;AACf,CAAC;AACM,SAAS1K,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,WAAAnO,IAAY;AAAA,IACZ,OAAAkG;AAAA,IACA,OAAAtH,IAAQ4Z;AAAA,EACZ,IAAMvd,EAAQ,aACNgG,IAAShG,EAAQ,UAAU,cAC3B+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQ,EAAEN,EAAQ,SAAS,IAC3B,CAACwa,CAAI,IAAIvH,GAASjT,CAAO,GACzByd,IAAe,OAAOxS,IAAU,KAChC;AAAA,IACJ,UAAA6C;AAAA,IACA,QAAAuI;AAAA,EACJ,IAAMxH,GAAc9J,CAAS,GACrB;AAAA,IACJ,GAAAY;AAAA,IACA,GAAAC;AAAA,EACJ,IAAMyQ,GACElQ,IAAOD,GAAgBuX,IAAezX,IAAS,YAAY,GAC3D0X,IAAkBD,IAAe9Z,IAAQ4Z,KAAmBD,GAA6BrS,CAAK,GAC9F2P,IAAyB,MAAM7R,IAAWzI,GAC1C4I,IAAeJ,EAAgBC,GAAU6R,IAAyB7R,CAAQ;AAChF,MAAImS,IAAgB;AAGpB,QAAMvS,IAAS;AAAA,IACb,qBAAqB,GAAGhD,CAAC;AAAA,IACzB,qBAAqB,GAAGC,CAAC;AAAA,IACzB,yBAAyB,GAAG8X,CAAe;AAAA,IAC3C,qBAAqB,GAAG5P,EAAS,CAAC;AAAA,IAClC,qBAAqB,GAAGA,EAAS,CAAC;AAAA,EACtC,GACQ6P,IAAgB,kDAAkDjV,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,gBAAgBxK,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,wBACxL0K,IAAiB,wBAAwBlV,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,2BAA2BxK,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,MAC1K2K,IAAe,CAAAvX,MAAS,GAAGqX,CAAa,iBAAiBjV,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,MAAM5M,CAAK,MAAMoX,CAAe,sBAAsBhV,EAAgBC,GAAQ,qBAAqBuK,CAAK,CAAC,MAAM5M,CAAK,MAAMoX,CAAe,SAASE,CAAc,IAG5Q5P,IAAY1N,IAAQkd,GAAiB,IAAI,CAAAva,MAAQ;AACrD,QAAI;AAAA,MACF,MAAA6a;AAAA,MACA,aAAAC;AAAA,IACN,IAAQ9a;AACJ,UAAMoY,KAAiBH,IAAgB6C,KAAc7U;AACrD,WAAAgS,IAAgBG,IACT;AAAA,MACL,QAAQA;AAAA,MACR,QAAQtV,EAAU,WAAW;AAAA,MAC7B,WAAW8X,EAAaC,CAAI;AAAA,IAClC;AAAA,EACE,CAAC,IAAI,CAAC;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQ/X,EAAUI,EAAK,KAAK;AAAA,IAC5B,WAAW0X,EAAa,CAAC;AAAA,EAC7B,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,QAAQ9X,EAAUI,EAAK,EAAE;AAAA,IACzB,WAAW0X,EAAa,EAAE;AAAA,EAC9B,CAAG,GACKG,IAAcH,EAAa,CAAC;AAClC,SAAO,CAAC;AAAA,IACN,GAAG7d;AAAA,IACH,MAAAwa;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAUla,IAAQsa,IAAyB7R;AAAA,IAC3C,QAAAJ;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ5C,EAAUI,EAAK,GAAG;AAAA,MAC1B,WAAW6X;AAAA,IACjB,GAAO,GAAGhQ,GAAW;AAAA,MACf,QAAQ;AAAA,MACR,WAAWgQ;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAAS/K,GAASjT,GAAS;AAChC,QAAM+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQ,EAAEN,EAAQ,SAAS;AACjC,MAAI,CAACM;AACH,WAAO,CAAC,aAAa;AAEvB,QAAMsa,IAAyB,MAAM7R,IAAWzI;AAEhD,SAAO,CAAC,eADawI,EAAgBC,GAAU6R,IAAyB7R,GAAU,EAAI,CACnD,EAAE;AACvC;;;;;;8CClKMkV,KAA4B;AAAA,EAChC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMC,KAAmB,CAAC;AAAA,EACxB,UAAU;AAAA,EACV,OAAO;AACT,GAAG;AAAA,EACD,UAAU;AAAA,EACV,OAAO;AACT,GAAG;AAAA,EACD,UAAU;AAAA,EACV,OAAO;AACT,GAAG;AAAA,EACD,UAAU;AAAA,EACV,OAAO;AACT,GAAG;AAAA,EACD,UAAU;AAAA,EACV,OAAO;AACT,CAAC;AACM,SAASpL,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,WAAAuD,IAAY;AAAA,EAChB,IAAMxO,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzB,CAACwa,CAAI,IAAIvH,GAASjT,CAAO,GACzBkJ,IAAeJ,EAAgBC,GAAUzI,CAAK,GAC9C6d,IAAwBzb,EAAS,GAAG,GAAGub,GAA0B,MAAMA,GAA0B,MAAMzP,CAAS,GAIhH7F,IAAS;AAAA,IACb,mBAJkBsC,KAASgT,GAA0BhT,CAAK,KAAKkT;AAAA,EAKnE,GACQnQ,IAAYkQ,GAAiB,IAAI,CAAAjb,MAAQ;AAC7C,QAAI;AAAA,MACF,UAAAyX;AAAA,MACA,OAAA0D;AAAA,IACN,IAAQnb;AAEJ,WAAO;AAAA,MACL,QAFayX,IAAW,MAAMxR;AAAA,MAG9B,WAAW,kDAAkDR,EAAgBC,GAAQ,mBAAmBuK,CAAK,CAAC,MAAMkL,CAAK;AAAA,IAC/H;AAAA,EACE,CAAC;AACD,SAAO,CAAC;AAAA,IACN,GAAGpe;AAAA,IACH,MAAAwa;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAUzR,IAAWzI;AAAA,IACrB,QAAAqI;AAAA,IACA,WAAAqF;AAAA,EACJ,CAAG;AACH;AACO,SAASiF,GAASjT,GAAS;AAEhC,SAAO,CAAC,gBADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACtC,EAAE;AACxC;;;;;;8CCnEMqe,KAAsB,CAAC;AAAA,EAC3B,UAAU;AAAA,EACV,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,WAAW;AACb,CAAC,GACKC,KAA2B;AAAA,EAC/B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMzP,KAAgB;AAAA,EACpB,KAAK;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA;AACO,SAASiE,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,WAAAuD,IAAY;AAAA,IACZ,WAAAzJ,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQ,EAAEN,EAAQ,SAAS,IAC3B;AAAA,IACJ,GAAA2F;AAAA,IACA,GAAAC;AAAA,EACJ,IAAMiJ,GAAc9J,CAAS,GACrBmE,IAAeJ,EAAgBC,GAAUzI,CAAK,GAC9C,CAACka,CAAI,IAAIvH,GAASjT,CAAO,GACzBue,IAAuB7b,EAAS,GAAG,GAAG4b,GAAyB,MAAMA,GAAyB,MAAM9P,CAAS,GAC7GgQ,IAAavT,IAAQqT,GAAyBrT,CAAK,IAAIsT,GAGvD5V,IAAS;AAAA,IACb,wBAAwBhD,IAAI6Y;AAAA,IAC5B,wBAAwB5Y,IAAI4Y;AAAA,EAChC,GACQxQ,IAAYqQ,GAAoB,IAAI,CAAApb,MAAQ;AAChD,QAAI;AAAA,MACF,UAAAyX;AAAA,MACA,WAAAvL;AAAA,IACN,IAAQlM;AACJ,UAAMwb,IAAiB,QAAQ/V,EAAgBC,GAAQ,wBAAwBuK,CAAK,CAAC,MAAM/D,CAAS,YAAYzG,EAAgBC,GAAQ,wBAAwBuK,CAAK,CAAC,MAAM/D,CAAS;AACrL,WAAO;AAAA,MACL,QAAQuL,IAAW,MAAMxR;AAAA,MACzB,WAAWuV;AAAA,IACjB;AAAA,EACE,CAAC;AACD,SAAO,CAAC;AAAA,IACN,GAAGze;AAAA,IACH,MAAAwa;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAUzR,IAAWzI;AAAA,IACrB,QAAAqI;AAAA,IACA,WAAAqF;AAAA,EACJ,CAAG;AACH;AACO,SAASiF,GAASjT,GAAS;AAEhC,SAAO,CAAC,eADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACvC,EAAE;AACvC;;;;;;8CCjGM0e,KAA6B;AAAA,EACjC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMC,KAAkB,CAAC;AAAA,EACvB,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AACV,GAAG;AAAA,EACD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AACV,GAAG;AAAA,EACD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AACV,GAAG;AAAA,EACD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AACV,GAAG;AAAA,EACD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AACV,GAAG;AAAA,EACD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AACV,CAAC;AACM,SAAS7L,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,WAAAuD,IAAY;AAAA,EAChB,IAAMxO,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzBkJ,IAAeJ,EAAgBC,GAAUzI,CAAK,GAC9C,CAACka,CAAI,IAAIvH,GAASjT,CAAO,GACzB4e,IAAyBlc,EAAS,GAAG,GAAGgc,GAA2B,MAAMA,GAA2B,MAAMlQ,CAAS,GACnHqQ,IAAe,OAAO5T,IAAU,MAAcyT,GAA2BzT,CAAK,IAAI2T,GAGlFjW,IAAS,CAAA,GACTqF,IAAY2Q,GAAgB,IAAI,CAAC1b,GAAM7D,MAAU;AACrD,QAAI;AAAA,MACF,UAAAsb;AAAA,MACA,QAAA1V;AAAA,MACA,QAAAC;AAAA,IACN,IAAQhC;AACJ,UAAM6b,IAAiB1f,MAAUuf,GAAgB,SAAS,GACpDI,IAAiB3f,IAAQ,MAAM,GAC/BsE,IAASmb,KAAgBC,IAAiB,IAAIC,IAAiB,IAAI,OACnEC,IAAiBxW,EAAYxD,IAAStB,GAAQ,CAAC,GAC/Cub,IAAiBzW,EAAYvD,IAASvB,GAAQ,CAAC,GAG/Cwb,IAAY,oBAAoBxE,CAAQ,IACxCyE,IAAY,oBAAoBzE,CAAQ;AAG9C,WAAA/R,EAAOuW,CAAS,IAAIF,GACpBrW,EAAOwW,CAAS,IAAIF,GACb;AAAA,MACL,QAAQvE,IAAW,MAAMxR;AAAA,MACzB,WAAW,6CAA6CR,EAAgBC,GAAQuW,GAAWhM,CAAK,CAAC,KAAKxK,EAAgBC,GAAQwW,GAAWjM,CAAK,CAAC;AAAA,IACrJ;AAAA,EACE,CAAC;AACD,SAAO,CAAC;AAAA,IACN,GAAGlT;AAAA,IACH,MAAAwa;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAUzR,IAAWzI;AAAA,IACrB,QAAAqI;AAAA,IACA,WAAAqF;AAAA,EACJ,CAAG;AACH;AACO,SAASiF,GAASjT,GAAS;AAEhC,SAAO,CAAC,iBADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACrC,EAAE;AACzC;;;;;;8CCvFMof,KAA4B;AAAA,EAChC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMT,KAAkB,CAAC;AAAA,EACvB,UAAU;AAAA,EACV,OAAO;AACT,GAAG;AAAA,EACD,UAAU;AAAA,EACV,OAAO;AACT,GAAG;AAAA,EACD,UAAU;AAAA,EACV,OAAO;AACT,GAAG;AAAA,EACD,UAAU;AAAA,EACV,OAAO;AACT,CAAC;AACM,SAAS7L,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,WAAAuD,IAAY;AAAA,EAChB,IAAMxO,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzBkJ,IAAeJ,EAAgBC,GAAUzI,CAAK,GAC9C,CAACka,CAAI,IAAIvH,GAASjT,CAAO,GACzBqf,IAAwB3c,EAAS,GAAG,GAAG0c,GAA0B,MAAMA,GAA0B,MAAM5Q,CAAS,GAIhH7F,IAAS;AAAA,IACb,yBAJkB,OAAOsC,IAAU,MAAcmU,GAA0BnU,CAAK,IAAIoU;AAAA,EAKxF,GACQrR,IAAY2Q,GAAgB,IAAI,CAAA1b,MAAQ;AAC5C,QAAI;AAAA,MACF,UAAAyX;AAAA,MACA,OAAAxO;AAAA,IACN,IAAQjJ;AAEJ,WAAO;AAAA,MACL,QAFayX,IAAW,MAAMxR;AAAA,MAG9B,WAAW,SAASgD,IAAQ,IAAI,QAAQA,CAAK,MAAMxD,EAAgBC,GAAQ,yBAAyBuK,CAAK,CAAC,MAAM,GAAG;AAAA,IACzH;AAAA,EACE,CAAC;AACD,SAAIhK,IAAe,KACjB8E,EAAU,KAAK;AAAA,IACb,QAAQ;AAAA,IACR,WAAW;AAAA,EACjB,CAAK,GAEI,CAAC;AAAA,IACN,GAAGhO;AAAA,IACH,MAAAwa;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAUzR,IAAWzI;AAAA,IACrB,QAAAqI;AAAA,IACA,WAAAqF;AAAA,EACJ,CAAG;AACH;AACO,SAASiF,GAASjT,GAAS;AAEhC,SAAO,CAAC,gBADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACtC,EAAE;AACxC;;;;;;8CCtEMkd,KAAmB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMrO,KAAgB;AAAA,EACpB,WAAW;AAAA,EACX,qBAAqB;AACvB;AACO,SAASiE,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,WAAAlG,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzBkJ,IAAeJ,EAAgBC,GAAUzI,CAAK,GAC9C,CAACka,CAAI,IAAIvH,GAASjT,CAAO,GACzBgG,IAASiF,KAASiS,GAAiBjS,CAAK,KAAKjL,EAAQ,UAAU,UAE/D2I,IAAS;AAAA,IACb,yBAAyB,sCAFFkG,GAAc9J,CAAS,IAAI,IAAI,IAAI,MAAM,GAEa;AAAA,EACjF;AACE,SAAO,CAAC;AAAA,IACN,GAAG/E;AAAA,IACH,MAAAwa;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAUzR,IAAWzI;AAAA,IACrB,QAAAqI;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ5C,EAAUC,CAAM;AAAA,MACxB,QAAQ0C,EAAgBC,GAAQ,yBAAyBuK,CAAK;AAAA,IACpE,GAAO;AAAA,MACD,QAAQhK;AAAA,MACR,QAAQ;AAAA,IACd,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAAS+J,GAASjT,GAAS;AAEhC,SAAO,CAAC,eADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACvC,EAAE;AACvC;;;;;;8CCjDMsf,KAA4B;AAAA,EAChC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMzQ,KAAgB;AAAA,EACpB,KAAK;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,OAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACE,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA,GACM0Q,KAAqB,IACrB5E,KAAmB,CAAC;AAAA,EACxB,QAAQ;AAAA,EACR,YAAY;AACd,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,YAAY;AACd,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,YAAY;AACd,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,YAAY;AACd,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,YAAY;AACd,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,YAAY;AACd,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,YAAY;AACd,CAAC;AACM,SAAS7H,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,OAAAuU,IAAQ;AAAA,IACR,WAAAza,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzBgG,IAAShG,EAAQ,UAAU,aAC3BmG,IAAOD,GAAgBF,CAAM,GAC7B,CAACwU,CAAI,IAAIvH,GAASjT,CAAO,GACzByf,IAAW,OAAOxU,IAAU,MAAc,KAAKqU,GAA0BrU,CAAK,IAAIuU,GAClF;AAAA,IACJ,GAAA7Z;AAAA,IACA,GAAAC;AAAA,EACJ,IAAMiJ,GAAc9J,CAAS,GACrB2a,IAAgB,OAAO3W,IAAWzI,GAClC4I,IAAeJ,EAAgBC,GAAU2W,IAAgB3W,CAAQ,GAGjEJ,IAAS;AAAA,IACb,sBAAsB,GAAG8W,CAAQ;AAAA,IACjC,oBAAoB,GAAG9Z,IAAI4Z,EAAkB;AAAA,IAC7C,oBAAoB,GAAG3Z,IAAI2Z,EAAkB;AAAA,IAC7C,oBAAoBxZ,EAAUI,EAAK,EAAE;AAAA,IACrC,uBAAuBJ,EAAUI,EAAK,KAAK;AAAA,IAC3C,qBAAqBJ,EAAUI,EAAK,GAAG;AAAA,EAC3C,GACQwZ,IAAkB,aAAajX,EAAgBC,GAAQ,oBAAoBuK,CAAK,CAAC,KAAKxK,EAAgBC,GAAQ,oBAAoBuK,CAAK,CAAC,KACxI0M,IAAiB,kBAAkBlX,EAAgBC,GAAQ,oBAAoBuK,CAAK,CAAC,gBAAgBxK,EAAgBC,GAAQ,oBAAoBuK,CAAK,CAAC;AAC7J,MAAIgI,IAAgB;AAEpB,QAAMlN,IAAY1N,IAAQqa,GAAiB,IAAI,CAAA1X,MAAQ;AACrD,QAAI;AAAA,MACF,QAAAsK;AAAA,MACA,YAAA6N;AAAA,IACN,IAAQnY;AACJ,UAAMoY,IAAiBH,IAAgBE,IAAalS;AACpD,WAAAgS,IAAgBG,GACT;AAAA,MACL,QAAQA;AAAA,MACR,QAAQ3S,EAAgBC,GAAQ,uBAAuBuK,CAAK;AAAA,MAC5D,WAAW,sCAAsCyM,CAAe,gBAAgBjX,EAAgBC,GAAQ,sBAAsBuK,CAAK,CAAC,MAAM3F,CAAM,MAAMqS,CAAc;AAAA,IAC1K;AAAA,EACE,CAAC,IAAI,CAAC;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQlX,EAAgBC,GAAQ,uBAAuBuK,CAAK;AAAA,IAC5D,WAAW,sCAAsCyM,CAAe,WAAWjX,EAAgBC,GAAQ,sBAAsBuK,CAAK,CAAC,KAAK0M,CAAc;AAAA,EACtJ,GAAK;AAAA,IACD,QAAQ;AAAA,IACR,QAAQlX,EAAgBC,GAAQ,oBAAoBuK,CAAK;AAAA,IACzD,WAAW,sCAAsCyM,CAAe,gBAAgBjX,EAAgBC,GAAQ,sBAAsBuK,CAAK,CAAC,WAAW0M,CAAc;AAAA,EACjK,CAAG;AACD,SAAO,CAAC;AAAA,IACN,GAAG5f;AAAA,IACH,MAAAwa;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAUla,IAAQof,IAAgB3W;AAAA,IAClC,QAAAJ;AAAA,IACA,WAAW,CAAC;AAAA,MACV,QAAQ;AAAA,MACR,QAAQD,EAAgBC,GAAQ,qBAAqBuK,CAAK;AAAA,MAC1D,WAAW,uCAAuCyM,CAAe,iBAAiBC,CAAc;AAAA,IACtG,GAAO,GAAG5R,GAAW;AAAA,MACf,QAAQ;AAAA,MACR,WAAW,uCAAuC2R,CAAe,iBAAiBC,CAAc;AAAA,IACtG,CAAK;AAAA,EACL,CAAG;AACH;AACO,SAAS3M,GAASjT,GAAS;AAEhC,SAAO,CAAC,gBADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACtC,EAAE;AACxC;;;;;;8CC7HM6f,KAA6B;AAAA,EACjC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,GACMC,KAAsB,CAAC;AAAA,EAC3B,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb,GAAG;AAAA,EACD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb,CAAC;AACM,SAAShN,GAAI9S,GAASua,GAAM;AACjC,SAAOvH,GAAMhT,GAAS,EAAI;AAC5B;AACO,SAASgT,GAAMhT,GAASkT,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ;AAEV,QAAM;AAAA,IACJ,OAAAjI;AAAA,IACA,WAAAuD,IAAY;AAAA,EAChB,IAAMxO,EAAQ,aACN+I,IAAW/I,EAAQ,YAAY,GAC/BM,IAAQN,EAAQ,SAAS,GACzBkJ,IAAeJ,EAAgBC,GAAUzI,CAAK,GAC9C,CAACka,CAAI,IAAIvH,GAASjT,CAAO,GACzB+f,IAAyBrd,EAAS,GAAG,GAAGmd,GAA2B,MAAMA,GAA2B,MAAMrR,CAAS,GACnHwR,IAAe/U,KAAS4U,GAA2B5U,CAAK,KAAK8U;AACnE,MAAIE,IAAkB;AAGtB,QAAMtX,IAAS;AAAA,IACb,0BAA0BqX;AAAA,EAC9B,GACQhS,IAAY8R,GAAoB,IAAI,CAAA7c,MAAQ;AAChD,QAAI;AAAA,MACF,UAAAyX;AAAA,MACA,QAAAlF;AAAA,MACA,WAAA0K;AAAA,IACN,IAAQjd;AACJ,UAAMS,IAASgX,IAAW,MAAMxR,GAC1BiX,IAAc,qCAAqC3X,EAAYyX,IAAkBC,IAAYF,CAAY,CAAC,QAC1GI,IAAkB,GAAG5K,IAASwK,CAAY,MAC1CK,IAAY,mBAAmB3F,CAAQ,IACvC4F,IAAgB,wBAAwB5F,CAAQ;AAGtD,WAAA/R,EAAO0X,CAAS,IAAIF,GACpBxX,EAAO2X,CAAa,IAAIF,GACxBH,KAAmBC,IAAYF,GACxB;AAAA,MACL,QAAAtc;AAAA,MACA,WAAW,UAAUgF,EAAgBC,GAAQ0X,GAAWnN,CAAK,CAAC,gBAAgBxK,EAAgBC,GAAQ2X,GAAepN,CAAK,CAAC;AAAA,IACjI;AAAA,EACE,CAAC;AACD,SAAO,CAAC;AAAA,IACN,GAAGlT;AAAA,IACH,MAAAwa;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAUzR,IAAWzI;AAAA,IACrB,QAAAqI;AAAA,IACA,WAAAqF;AAAA,EACJ,CAAG;AACH;AACO,SAASiF,GAASjT,GAAS;AAEhC,SAAO,CAAC,iBADa8I,EAAgB9I,EAAQ,UAAUA,EAAQ,OAAO,EAAI,CACrC,EAAE;AACzC;;;;;;8CCrEaugB,KAAoB;AAAA,EAC/B,QAAAC;AAAA,EACA,SAAAC;AAAA;AAAA,EAEA,OAAAC;AAAA;AAAA,EAEA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AACF;AC9BO,MAAMC,EAAY;AAAA,EACvB,YAAY3gB,GAAQV,GAAS;AAC3B,IAAAJ,EAAgB,MAAM,UAAU,MAAM,GACtCA,EAAgB,MAAM,WAAW,MAAM,GACvCA,EAAgB,MAAM,mBAAmB,MAAM,GAC/C,KAAK,SAASc,GACd,KAAK,UAAUV,KAAW,CAAA,GAC1B,KAAK,kBAAkB;AAAA,MACrB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,QACD,GAAG;AAAA,QACH,GAAG;AAAA,MACX;AAAA,MACM,QAAQ;AAAA,IACd,GACI,KAAK,KAAI;AAAA,EACX;AAAA,EACA,SAASiD,GAAM;AACb,QAAI;AAAA,MACF,GAAA0C;AAAA,MACA,GAAAC;AAAA,MACA,GAAA0b;AAAA,MACA,QAAAC;AAAA,IACN,IAAQte;AACJ,SAAK,kBAAkB;AAAA,MACrB,GAAA0C;AAAA,MACA,GAAAC;AAAA,MACA,GAAA0b;AAAA,MACA,QAAAC;AAAA,IACN,GACQ,OAAO,KAAK,QAAQ,gBAAiB,cACvC,KAAK,QAAQ,aAAa,KAAK,QAAQ,KAAK,eAAe;AAAA,EAE/D;AAAA,EACA,SAAS;AACP,SAAK,kBAAkB;AAAA,MACrB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,QACD,GAAG;AAAA,QACH,GAAG;AAAA,MACX;AAAA,IACA;AAAA,EACE;AAAA,EACA,cAAc;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EACA,OAAO;AACL,IAAI,KAAK,QAAQ,cAAc,KAAK,WAClC,KAAK,OAAO,MAAM,aAAa,KAAK,QAAQ;AAAA,EAEhD;AACF;AACO,SAAS9W,GAAOzK,GAAS;AAC9B,SAAO,CAAAU,MAAU,IAAI2gB,EAAY3gB,GAAQV,CAAO;AAClD;ACvDA,MAAMwhB,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AACA;AACA,MAAMC,WAA2BJ,EAAY;AAAA,EAC3C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e,GACAgT,IAAa,GACbC,IAAa;AACjB,UAAM;AAAA,MACJ,UAAAzQ;AAAA,MACA,QAAAmc;AAAA,MACA,OAAAje;AAAA,MACA,MAAAke;AAAA,IACN,IAAQ,KAAK;AACT,IAAIA,MAAS,eACX5L,IAAavT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOic,CAAS,IAAIE,IAExEC,MAAS,iBACX3L,IAAaxT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOkc,CAAS,IAAIC;AAI5E,UAAMtW,IAAS5I,EAAS,GAAG,GAAG,CAACiB,GAAOA,GAAO+d,CAAS,IAAIE,GACpDlV,IAAQ7G,EAAYJ,EAAS,IAAI;AACvC,SAAK,OAAO,MAAM,YAAY,cAAcwQ,CAAU,GAAGvJ,CAAK,gBAAgBwJ,CAAU,GAAGxJ,CAAK,iBAAiBpB,CAAM;AAAA,EACzH;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAASb,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC;AAAA,EACJ,IAAM/hB,GACE;AAAA,IACJ,OAAAiL;AAAA,IACA,UAAA+W,IAAW;AAAA,IACX,UAAAvc,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,OAAA9B,IAAQ;AAAA,IACR,MAAAke,IAAO;AAAA,EACX,IAAM7hB,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB4E,IAAQuW,GAAUvW,CAAK,EAAE,SAAS8W,CAAgB,CAAC,KAAK;AAAA,IACvJ,QAAAH;AAAA,IACA,UAAAnc;AAAA,IACA,OAAOwF,IAAQuW,GAAUvW,CAAK,EAAE,QAAQtH;AAAA,IACxC,MAAAke;AAAA,EACJ;AACE,SAAO,CAAAnhB,MAAU,IAAI+gB,GAAmB/gB,GAAQuhB,CAAgB;AAClE;ACrEA,MAAMT,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AACA;AACA,MAAMU,WAA2Bb,EAAY;AAAA,EAC3C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e;AACJ,UAAM;AAAA,MACJ,UAAAwC;AAAA,MACA,OAAAyG;AAAA,MACA,QAAA0V;AAAA,IACN,IAAQ,KAAK,SACH3L,IAAavT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOic,CAAS,IAAIE,GAC1E1L,IAAaxT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOkc,CAAS,IAAIC,GAG1E5c,IAAS0c,IAAY,MAAMhf,EAAS,GAAG,KAAKwJ,GAAO,GAAGwV,CAAS,IAAIhf,EAAS,KAAK,GAAG,GAAGwJ,GAAOwV,CAAS,GAGvGzc,IAAS0c,IAAY,MAAMjf,EAAS,GAAG,KAAKwJ,GAAO,GAAGyV,CAAS,IAAIjf,EAAS,KAAK,GAAG,GAAGwJ,GAAOyV,CAAS,GACvGjV,IAAQ7G,EAAYJ,EAAS,IAAI;AACvC,SAAK,OAAO,MAAM,YAAY,cAAcwQ,CAAU,GAAGvJ,CAAK,gBAAgBwJ,CAAU,GAAGxJ,CAAK,WAAW1H,CAAM,KAAKC,CAAM;AAAA,EAC9H;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAASwF,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC;AAAA,EACJ,IAAM/hB,GACE;AAAA,IACJ,OAAAiL;AAAA,IACA,UAAA+W,IAAW;AAAA,IACX,UAAAvc,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,OAAAyG,IAAQ;AAAA,EACZ,IAAMlM,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB4E,IAAQuW,GAAUvW,CAAK,EAAE,SAAS8W,CAAgB,CAAC,KAAK;AAAA,IACvJ,QAAAH;AAAA,IACA,UAAAnc;AAAA,IACA,OAAOwF,IAAQuW,GAAUvW,CAAK,EAAE,QAAQiB;AAAA,EAC5C;AACE,SAAO,CAAAxL,MAAU,IAAIwhB,GAAmBxhB,GAAQuhB,CAAgB;AAClE;AC9DA,MAAMT,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AACA;AACA,MAAMW,WAA2Bd,EAAY;AAAA,EAC3C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e;AACJ,UAAM;AAAA,MACJ,UAAAwC;AAAA,MACA,OAAA9B;AAAA,MACA,OAAAuI;AAAA,MACA,QAAA0V;AAAA,MACA,MAAA5W;AAAA,MACA,aAAAkJ;AAAA,IACN,IAAQ,KAAK,SACH+B,IAAavT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOic,CAAS,IAAIE,GAC1E1L,IAAaxT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOkc,CAAS,IAAIC,GAG1E5c,IAAS0c,IAAY,MAAMhf,EAAS,GAAG,KAAKwJ,GAAO,GAAGwV,CAAS,IAAIhf,EAAS,KAAK,GAAG,GAAGwJ,GAAOwV,CAAS,GAGvGzc,IAAS0c,IAAY,MAAMjf,EAAS,GAAG,KAAKwJ,GAAO,GAAGyV,CAAS,IAAIjf,EAAS,KAAK,GAAG,GAAGwJ,GAAOyV,CAAS,GACvGS,IAAW,KAAK,IAAIpd,GAAQC,CAAM,GAGlCod,IAAU3f,EAAS,GAAG,GAAG,CAACiB,GAAOA,GAAOge,CAAS,IAAIC,GACrDU,IAAU5f,EAAS,GAAG,GAAGiB,GAAO,CAACA,GAAO+d,CAAS,IAAIE,GACrDlV,IAAQ7G,EAAYJ,EAAS,IAAI,GACjC8c,IAAY,eAAerO,CAAW,kBAAkB+B,CAAU,GAAGvJ,CAAK,gBAAgBwJ,CAAU,GAAGxJ,CAAK,WAAW0V,CAAQ,KAAKA,CAAQ,aAAaC,CAAO,gBAAgBC,CAAO,2CACvLE,IAAmBxf,GAAW,CAAC,KAAK,GAAG,GAAG,CAAC0e,GAAWC,CAAS,CAAC,GAEhEc,IAAS,QADI,KAAK,MAAM/f,EAAS,GAAG,GAAG,GAAGsI,GAAM5J,GAAUohB,CAAgB,CAAC,CAAC,CACjD;AACjC,SAAK,OAAO,MAAM,YAAYD,GAC9B,KAAK,OAAO,MAAM,SAASE;AAAA,EAC7B;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,SAAS,IAC3B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAAShY,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC;AAAA,EACJ,IAAM/hB,GACE;AAAA,IACJ,OAAAiL;AAAA,IACA,UAAA+W,IAAW;AAAA,IACX,UAAAvc,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,OAAA9B,IAAQ;AAAA,IACR,OAAAuI,IAAQ;AAAA,IACR,MAAAlB,IAAO;AAAA,IACP,aAAAkJ,IAAc;AAAA,EAClB,IAAMlU,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB4E,IAAQuW,GAAUvW,CAAK,EAAE,SAAS8W,CAAgB,CAAC,YAAYD,CAAkB,MAAMzb,EAAyB4E,IAAQuW,GAAUvW,CAAK,EAAE,SAAS8W,CAAgB,CAAC,KAAK;AAAA,IACvQ,UAAAtc;AAAA,IACA,OAAOwF,IAAQuW,GAAUvW,CAAK,EAAE,QAAQtH;AAAA,IACxC,OAAOsH,IAAQuW,GAAUvW,CAAK,EAAE,QAAQiB;AAAA,IACxC,MAAAlB;AAAA,IACA,aAAAkJ;AAAA,IACA,QAAA0N;AAAA,EACJ;AACE,SAAO,CAAAlhB,MAAU,IAAIyhB,GAAmBzhB,GAAQuhB,CAAgB;AAClE;ACvFA,MAAMS,KAAY;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR;AACA,MAAMC,WAA4BtB,EAAY;AAAA,EAC5C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e;AACJ,UAAM;AAAA,MACJ,QAAA2e;AAAA,MACA,UAAAnc;AAAA,MACA,MAAAoc;AAAA,IACN,IAAQ,KAAK;AACT,QAAI5L,IAAa,GACbC,IAAa;AAKjB,KAAI2L,MAAS,UAAUA,MAAS,kBAC9B5L,IAAavT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOic,CAAS,IAAIE,KAExEC,MAAS,UAAUA,MAAS,gBAC9B3L,IAAaxT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOkc,CAAS,IAAIC;AAE5E,UAAMlV,IAAQ7G,EAAYJ,EAAS,IAAI;AACvC,SAAK,OAAO,MAAM,YAAY,cAAcwQ,CAAU,GAAGvJ,CAAK,gBAAgBwJ,CAAU,GAAGxJ,CAAK;AAAA,EAClG;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAASjC,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC;AAAA,EACJ,IAAM/hB,GACE;AAAA,IACJ,OAAAiL;AAAA,IACA,UAAA+W,IAAW;AAAA,IACX,UAAAvc,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,MAAAoc,IAAO;AAAA,EACX,IAAM7hB,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB4E,IAAQyX,GAAUzX,CAAK,IAAI8W,CAAgB,CAAC,KAAK;AAAA,IAChJ,QAAAH;AAAA,IACA,UAAAnc;AAAA,IACA,MAAAoc;AAAA,EACJ;AACE,SAAO,CAAAnhB,MAAU,IAAIiiB,GAAoBjiB,GAAQuhB,CAAgB;AACnE;AC3De,SAASxX,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,UAAAyF,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,EACA,IAAMzF,EAAQ,aACN;AAAA,IACJ,kBAAA+hB,IAAmB;AAAA,EACvB,IAAM/hB;AACJ,SAAO4iB,GAAY;AAAA,IACjB,GAAG5iB;AAAA,IACH,kBAAA+hB;AAAA,IACA,aAAa;AAAA,MACX,GAAG/hB,EAAQ;AAAA,MACX,UAAAyF;AAAA,IACN;AAAA,EACA,CAAG;AACH;ACjBA,MAAM+b,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,IACI,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,EACA;AAAA,EACE,IAAI;AAAA,IACF,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,IACI,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,IACI,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,EACA;AACA;AACA,MAAMqB,WAA4BxB,EAAY;AAAA,EAC5C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e;AACJ,UAAM;AAAA,MACJ,UAAAwC;AAAA,MACA,OAAAyG;AAAA,MACA,QAAA0V;AAAA,MACA,MAAAC;AAAA,IACN,IAAQ,KAAK;AACT,QAAI5L,IAAa,GACbC,IAAa,GACblR,IAAS,GACTC,IAAS;AACb,KAAI4c,MAAS,UAAUA,MAAS,kBAC9B5L,IAAavT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOic,CAAS,IAAIE,GAC1E5c,IAAS0c,IAAY,MAAMhf,EAAS,GAAG,KAAKwJ,GAAO,GAAGwV,CAAS,IAAIhf,EAAS,KAAK,GAAG,GAAGwJ,GAAOwV,CAAS,KAErGG,MAAS,UAAUA,MAAS,gBAC9B3L,IAAaxT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOkc,CAAS,IAAIC,GAC1E3c,IAAS0c,IAAY,MAAMjf,EAAS,GAAG,KAAKwJ,GAAO,GAAGyV,CAAS,IAAIjf,EAAS,KAAK,GAAG,GAAGwJ,GAAOyV,CAAS;AAKzG,UAAMmB,IAAY5W,IAAQ,IAAI,KAAK,IAAIlH,GAAQC,CAAM,IAAI,KAAK,IAAID,GAAQC,CAAM,GAC1EyH,IAAQ7G,EAAYJ,EAAS,IAAI;AACvC,SAAK,OAAO,MAAM,YAAY,cAAcwQ,CAAU,GAAGvJ,CAAK,gBAAgBwJ,CAAU,GAAGxJ,CAAK,WAAWoW,CAAS;AAAA,EACtH;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAASrY,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC;AAAA,EACJ,IAAM/hB,GACE;AAAA,IACJ,OAAAiL;AAAA,IACA,gBAAA8X,IAAiB;AAAA,IACjB,UAAAf,IAAW;AAAA,IACX,UAAAvc,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,MAAAoc,IAAO;AAAA,IACP,OAAA3V,IAAQ;AAAA,EACZ,IAAMlM,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB4E,IAAQuW,GAAUuB,CAAc,EAAE9X,CAAK,EAAE,SAAS8W,CAAgB,CAAC,KAAK;AAAA,IACvK,QAAAH;AAAA,IACA,UAAAnc;AAAA,IACA,MAAAoc;AAAA,IACA,OAAO5W,IAAQuW,GAAUuB,CAAc,EAAE9X,CAAK,EAAE,QAAQiB;AAAA,EAC5D;AACE,SAAO,CAAAxL,MAAU,IAAImiB,GAAoBniB,GAAQuhB,CAAgB;AACnE;AC1FA,MAAMT,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AACA;AACA,MAAMwB,WAA2B3B,EAAY;AAAA,EAC3C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e,GACAgT,IAAa,GACbC,IAAa,GACbpH,IAAQ,GACRsP,IAAQ;AACZ,UAAM;AAAA,MACJ,UAAA3Y;AAAA,MACA,OAAA9B;AAAA,MACA,MAAAke;AAAA,MACA,QAAAD;AAAA,IACN,IAAQ,KAAK;AAGT,IAAIC,MAAS,eACX5L,IAAavT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOic,CAAS,IAAIE,GAC1E9S,IAAQpM,EAAS,GAAG,GAAGiB,GAAO,CAACA,GAAO+d,CAAS,IAAIE,IAEjDC,MAAS,iBACX3L,IAAaxT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOkc,CAAS,IAAIC,GAC1ExD,IAAQ1b,EAAS,GAAG,GAAGiB,GAAO,CAACA,GAAOge,CAAS,IAAIC,IAEjDC,MAAS,WAIX/S,KAASpM,EAAS,GAAG,GAAG,GAAG,IAAIP,GAAUwf,CAAS,CAAC,GAKnDvD,KAAS1b,EAAS,GAAG,GAAG,GAAG,IAAIP,GAAUuf,CAAS,CAAC;AAErD,UAAMhV,IAAQ7G,EAAYJ,EAAS,IAAI,GACjC8c,IAAY,cAActM,CAAU,GAAGvJ,CAAK,gBAAgBwJ,CAAU,GAAGxJ,CAAK,UAAUoC,CAAK,QAAQsP,CAAK;AAChH,SAAK,OAAO,MAAM,YAAYmE;AAAA,EAChC;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAAS9X,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC;AAAA,EACJ,IAAM/hB,GACE;AAAA,IACJ,OAAAiL;AAAA,IACA,UAAA+W,IAAW;AAAA,IACX,UAAAvc,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,OAAA9B,IAAQ;AAAA,IACR,MAAAke,IAAO;AAAA,EACX,IAAM7hB,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB4E,IAAQuW,GAAUvW,CAAK,EAAE,SAAS8W,CAAgB,CAAC,KAAK;AAAA,IACvJ,QAAAH;AAAA,IACA,UAAAnc;AAAA,IACA,OAAOwF,IAAQuW,GAAUvW,CAAK,EAAE,QAAQtH;AAAA,IACxC,MAAAke;AAAA,EACJ;AACE,SAAO,CAAAnhB,MAAU,IAAIsiB,GAAmBtiB,GAAQuhB,CAAgB;AAClE;ACrFA,MAAMgB,WAA2B5B,EAAY;AAAA,EAC3C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e;AACJ,UAAM;AAAA,MACJ,QAAA2e;AAAA,MACA,MAAAC;AAAA,IACN,IAAQ,KAAK,SACH/T,IAAWvK,GAAc,CAAC,KAAK,GAAG,GAAG,CAACse,MAAS,aAAa,IAAIH,GAAWG,MAAS,eAAe,IAAIF,CAAS,GAAG,EAAE,IAAIC;AAC/H,SAAK,OAAO,MAAM,YAAY,eAAe9T,CAAQ;AAAA,EACvD;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAASrD,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC,IAAmB;AAAA,EACvB,IAAM/hB,GACE;AAAA,IACJ,UAAAgiB,IAAW;AAAA,IACX,MAAAH,IAAO;AAAA,EACX,IAAM7hB,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB0b,CAAgB,CAAC,KAAK;AAAA,IACrH,QAAAH;AAAA,IACA,MAAAC;AAAA,EACJ;AACE,SAAO,CAAAnhB,MAAU,IAAIuiB,GAAmBviB,GAAQuhB,CAAgB;AAClE;AClCA,MAAMT,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AACA,GACM0B,KAAmB;AAAA,EACvB,KAAK,CAAC,GAAG,GAAG;AAAA,EACZ,QAAQ,CAAC,GAAG,EAAE;AAAA,EACd,OAAO,CAAC,IAAI,CAAC;AAAA,EACb,MAAM,CAAC,KAAK,CAAC;AAAA,EACb,qBAAqB,CAAC,GAAG,CAAC;AAAA,EAC1B,mBAAmB,CAAC,GAAG,CAAC;AAC1B;AACA,MAAMC,WAA6B9B,EAAY;AAAA,EAC7C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e,GACA2H,IAAa,WACbnB,IAAWkY,GACXyB,IAAiB;AACrB,UAAM;AAAA,MACJ,WAAAC;AAAA,MACA,OAAA1f;AAAA,MACA,QAAAie;AAAA,MACA,aAAA1N;AAAA,IACN,IAAQ,KAAK;AACT,KAAImP,MAAc,uBAAuBA,MAAc,WAAWA,MAAc,YAC9EzY,IAAa,WACbnB,IAAWiY,GACX0B,IAAiB;AAInB,UAAM9X,IAAS5I,EAAS,GAAG,GAAG,CAACiB,GAAOA,GAAO8F,CAAQ,IAAI2Z,IAAiBxB,GACpE,CAAC3L,GAAYC,CAAU,IAAIgN,GAAiBG,CAAS,GACrDd,IAAY,eAAerO,CAAW,kBAAkB+B,CAAU,iBAAiBC,CAAU,MAAMtL,CAAU,IAAIU,CAAM,mBAAmB,CAAC2K,CAAU,iBAAiB,CAACC,CAAU;AACvL,SAAK,OAAO,MAAM,YAAYqM;AAAA,EAChC;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAAS9X,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC;AAAA,EACJ,IAAM/hB,GACE;AAAA,IACJ,OAAAiL;AAAA,IACA,UAAA+W,IAAW;AAAA,IACX,OAAAre,IAAQ;AAAA,IACR,aAAAuQ,IAAc;AAAA,IACd,WAAAmP,IAAY;AAAA,EAChB,IAAMrjB,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB4E,IAAQuW,GAAUvW,CAAK,EAAE,SAAS8W,CAAgB,CAAC,KAAK;AAAA,IACvJ,QAAAH;AAAA,IACA,OAAO3W,IAAQuW,GAAUvW,CAAK,EAAE,QAAQtH;AAAA,IACxC,aAAasH,IAAQuW,GAAUvW,CAAK,EAAE,cAAciJ;AAAA,IACpD,WAAAmP;AAAA,EACJ;AACE,SAAO,CAAA3iB,MAAU,IAAIyiB,GAAqBziB,GAAQuhB,CAAgB;AACpE;AC9EA,MAAMT,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AACA;AACA,MAAM8B,WAA6BjC,EAAY;AAAA,EAC7C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e;AACJ,UAAM;AAAA,MACJ,QAAA2e;AAAA,MACA,OAAAje;AAAA,MACA,aAAAuQ;AAAA,IACN,IAAQ,KAAK,SAGHmO,IAAU3f,EAAS,GAAG,GAAGiB,GAAO,CAACA,GAAOge,CAAS,IAAIC,GACrDU,IAAU5f,EAAS,GAAG,GAAG,CAACiB,GAAOA,GAAO+d,CAAS,IAAIE;AAC3D,SAAK,OAAO,MAAM,YAAY,eAAe1N,CAAW,eAAemO,CAAO,gBAAgBC,CAAO;AAAA,EACvG;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAAS7X,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC;AAAA,EACJ,IAAM/hB,GACE;AAAA,IACJ,OAAAiL;AAAA,IACA,UAAA+W,IAAW;AAAA,IACX,OAAAre,IAAQ;AAAA,IACR,aAAAuQ,IAAc;AAAA,EAClB,IAAMlU,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB4E,IAAQuW,GAAUvW,CAAK,EAAE,SAAS8W,CAAgB,CAAC,KAAK;AAAA,IACvJ,QAAAH;AAAA,IACA,OAAO3W,IAAQuW,GAAUvW,CAAK,EAAE,QAAQtH;AAAA,IACxC,aAAasH,IAAQuW,GAAUvW,CAAK,EAAE,cAAciJ;AAAA,EACxD;AACE,SAAO,CAAAxT,MAAU,IAAI4iB,GAAqB5iB,GAAQuhB,CAAgB;AACpE;AC1DA,MAAMT,KAAY;AAAA,EAChB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EACE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EACE,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AACA;AACA,MAAM+B,WAA8BlC,EAAY;AAAA,EAC9C,SAASpe,GAAM;AACb,QAAI;AAAA,MACF,GAAGye;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ1e;AACJ,UAAM;AAAA,MACJ,QAAA2e;AAAA,MACA,UAAAnc;AAAA,MACA,OAAA9B;AAAA,MACA,MAAAke;AAAA,MACA,aAAA3N;AAAA,IACN,IAAQ,KAAK;AACT,QAAI+B,IAAa,GACbC,IAAa,GACbmM,IAAU,GACVC,IAAU;AAKd,KAAIT,MAAS,UAAUA,MAAS,kBAC9B5L,IAAavT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOic,CAAS,GACtEY,IAAU5f,EAAS,GAAG,GAAG,CAACiB,GAAOA,GAAO+d,CAAS,IAAIE,KAEnDC,MAAS,UAAUA,MAAS,gBAC9B3L,IAAaxT,EAAS,GAAG,GAAG,CAAC+C,EAAS,OAAOA,EAAS,OAAOkc,CAAS,GACtEU,IAAU3f,EAAS,GAAG,GAAGiB,GAAO,CAACA,GAAOge,CAAS,IAAIC;AAEvD,UAAMlV,IAAQ7G,EAAYJ,EAAS,IAAI;AACvC,SAAK,OAAO,MAAM,YAAY,eAAeyO,CAAW,kBAAkB+B,CAAU,GAAGvJ,CAAK,gBAAgBwJ,CAAU,GAAGxJ,CAAK,aAAa2V,CAAO,gBAAgBC,CAAO;AAAA,EAC3K;AAAA,EACA,SAAS;AACP,SAAK,OAAO,MAAM,YAAY,IAC9B,KAAK,OAAO,MAAM,aAAa;AAAA,EACjC;AACF;AACe,SAAS7X,GAAOzK,GAAS;AACtC,QAAM;AAAA,IACJ,oBAAA8hB;AAAA,IACA,kBAAAC;AAAA,EACJ,IAAM/hB,GACE;AAAA,IACJ,OAAAiL;AAAA,IACA,UAAA+W,IAAW;AAAA,IACX,UAAAvc,IAAW;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACZ;AAAA,IACI,OAAA9B,IAAQ;AAAA,IACR,MAAAke,IAAO;AAAA,IACP,aAAA3N,IAAc;AAAA,EAClB,IAAMlU,EAAQ,aACN4hB,IAASI,IAAW,KAAK,GACzBC,IAAmB;AAAA,IACvB,YAAYH,IAAqB,aAAaA,CAAkB,MAAMzb,EAAyB4E,IAAQuW,GAAUvW,CAAK,EAAE,SAAS8W,CAAgB,CAAC,KAAK;AAAA,IACvJ,QAAAH;AAAA,IACA,UAAAnc;AAAA,IACA,MAAAoc;AAAA,IACA,OAAO5W,IAAQuW,GAAUvW,CAAK,EAAE,QAAQtH;AAAA,IACxC,aAAasH,IAAQuW,GAAUvW,CAAK,EAAE,cAAciJ;AAAA,EACxD;AACE,SAAO,CAAAxT,MAAU,IAAI6iB,GAAsB7iB,GAAQuhB,CAAgB;AACrE;ACtEO,MAAMuB,KAAkB;AAAA,EAC/B,WAAEC;AAAAA,EACF,WAAEC;AAAAA,EACF,WAAEC;AAAAA,EACF,aAAEC;AAAAA,EACA,aAAaC;AAAAA,EACf,YAAEC;AAAAA,EACF,WAAEC;AAAAA,EACF,WAAEC;AAAAA,EACF,aAAEC;AAAAA,EACF,aAAEC;AAAAA,EACF,cAAEC;AAAAA,EACF,YAAEC;AACF;ACzBO,SAASC,EAAkBC,GAAUrX,GAAKsX,GAAa;AAC5D,EAAAtX,EAAI,QAAQ,CAAAvM,MAAU;AACpB,IAAKA,MAGL4jB,EAAS,aAAa5jB,EAAO;AAAA,EAC/B,CAAC,GACG6jB,KACFtX,EAAI,OAAO,CAAAvM,MAAU;AACnB,IAAkBA,GAAO,MAAM,YAAY,wBAAwB,GAAG4jB,EAAS,UAAU,IAAI;AAAA,EAC/F,CAAC;AAEL;AACA,MAAME,KAAgB,MAAM,OAAO,SAAS,eAAe,YAAY,GACjEC,KAAkB,MAAM;AAC5B,QAAMC,IAAS,OAAO,SAAS,eAAe,SAAS;AACvD,SAAOA,IAASA,EAAO,eAAe;AACxC,GACMC,KAAgB,MAAM;AAC1B,QAAMC,IAAaJ,GAAa;AAChC,SAAOI,IAAaA,EAAW,eAAeH,GAAe,IAAK;AACpE;AACO,SAASI,GAAkBP,GAAUrX,GAAK;AAC/C,EAAAA,EAAI,QAAQ,MAAM;AAChB,IAAAqX,EAAS,aAAaK,GAAa;AAAA,EACrC,CAAC;AACH;AACO,SAASG,GAA4BxR,GAAGY,GAAa;AAC1D,SAAOZ,IAAIY,IAAc,IAAI,KAAO,IAAIZ,IAAIY;AAC9C;AC5Be,SAASzJ,GAAOzK,GAASiN,GAAK;AAC3C,QAAMqX,IAAW;AAAA,IACf,YAAY;AAAA,EAChB;AACE,EAAIrX,KACFoX,EAAkBC,GAAUrX,CAAG;AAEjC,QAAMjH,IAAS,UACT;AAAA,IACJ,OAAAkG,IAAQ;AAAA,EACZ,IAAMlM,EAAQ;AACZ,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,iBAAiB;AACnB,aAAO,eAAe,KAAK,MAAM,MAAMse,EAAS,UAAU,CAAC;AAAA,IAC7D;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,gBAAgBA,EAAS,UAAU;AAAA,IAC5C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGtkB;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,gBAAgBse,EAAS,UAAU;AAAA,IAC5C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW;AAAA,IACjB,GAAO;AAAA,MACD,WAAW,iCAAiCpY,CAAK;AAAA,IACvD,CAAK;AAAA,EACL,CAAG;AACH;ACnEA,MAAM6Y,KAAU,UACVC,KAAW;AACF,SAASva,GAAOzK,GAASiN,GAAK;AAC3C,QAAMqX,IAAW;AAAA,IACf,YAAY;AAAA,EAChB;AACE,EAAIrX,KACFoX,EAAkBC,GAAUrX,CAAG;AAEjC,QAAM;AAAA,IACJ,OAAAvC,IAAQ;AAAA,EACZ,IAAM1K,EAAQ,aACNoL,IAAQV,MAAU;AAIxB,SAAO,CAAC;AAAA,IACN,GAAG1K;AAAA,IACH,MAAM;AAAA,IACN,QAJaoL,IAAQ4Z,KAAWD;AAAA,IAKhC,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,gBAAgB3Z,IAAQ,UAAU;AAAA,IAClC,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAOA,IAAQ,gBAAgBkZ,EAAS,UAAU,QAAQ,eAAe,KAAK,MAAM,MAAMA,EAAS,UAAU,CAAC;AAAA,IAChH;AAAA,IACA,WAAW,CAAC;AAAA,MACV,SA1BclZ,IAAQ,IAAI;AAAA,IA2BhC,GAAO;AAAA,MACD,SA3BYA,IAAQ,IAAI;AAAA,IA4B9B,CAAK;AAAA,EACL,CAAG;AACH;AC5Ce,SAASX,GAAOzK,GAASiN,GAAK;AAC3C,QAAMqX,IAAW;AAAA,IACf,YAAY;AAAA,EAChB;AACE,EAAIrX,KACFoX,EAAkBC,GAAUrX,CAAG;AAEjC,QAAMjH,IAAS,WACT;AAAA,IACJ,OAAAkG,IAAQ;AAAA,EACZ,IAAMlM,EAAQ;AACZ,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,gBAAgB;AAAA,IAChB,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,gBAAgBskB,EAAS,UAAU;AAAA,IAC5C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,SAAS;AAAA,IACf,GAAO;AAAA,MACD,SAAS;AAAA,IACf,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGtkB;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,gBAAgB;AAAA,IAChB,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,gBAAgB,KAAK,MAAM,MAAMse,EAAS,UAAU,CAAC;AAAA,IAC9D;AAAA,IACA,WAAW,CAAC;AAAA,MACV,OAAO;AAAA,IACb,GAAO;AAAA,MACD,OAAApY;AAAA,IACN,CAAK;AAAA,EACL,CAAG;AACH;AClEA,MAAM+Y,KAAc;AACL,SAASxa,GAAOzK,GAASiN,GAAK;AAC3C,QAAMqX,IAAW;AAAA,IACf,YAAY;AAAA,EAChB;AACE,EAAIrX,KACFoX,EAAkBC,GAAUrX,GAAK,EAAI;AAEvC,QAAM;AAAA,IACJ,SAAA4C,IAAU;AAAA,IACV,MAAAqV,IAAO,MAAM;AAAA,EACjB,IAAMllB,EAAQ,aACNkM,IAAQ4Y,GAA4BI,GAAMD,EAAW;AAC3D,SAAO,CAAC;AAAA,IACN,GAAGjlB;AAAA,IACH,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,iBAAiBskB,EAAS,UAAU;AAAA,IAC7C;AAAA,IACA,IAAI,YAAY;AACd,aAAO,CAAC;AAAA,QACN,WAAW;AAAA,MACnB,GAAS;AAAA,QACD,WAAW,mBAAmB,YAAY,QAAQ,IAAIpY,IAAQ,QAAQ,CAAC,CAAC,CAAC,gCAAgCoY,EAAS,UAAU;AAAA,MACpI,CAAO;AAAA,IACH;AAAA,EACJ,GAAK;AAAA,IACD,GAAGtkB;AAAA,IACH,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,iBAAiBskB,EAAS,UAAU;AAAA,IAC7C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,UAAUzU,CAAO;AAAA,IAClC,GAAO;AAAA,MACD,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAG7P;AAAA,IACH,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,iBAAiBskB,EAAS,UAAU;AAAA,IAC7C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,eAAeW,EAAW;AAAA,IAC3C,GAAO;AAAA,MACD,WAAW,eAAeA,EAAW,kBAAkB,WAAWC,EAAK,QAAQ,CAAC,CAAC,CAAC;AAAA,IACxF,CAAK;AAAA,EACL,CAAG;AACH;AChGe,SAASza,GAAOzK,GAASiN,GAAK;AAC3C,QAAMqX,IAAW;AAAA,IACf,YAAY;AAAA,EAChB;AACE,EAAIrX,KACFoX,EAAkBC,GAAUrX,CAAG;AAEjC,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,IACZ,OAAAgF,IAAQ;AAAA,EACZ,IAAM/J,EAAQ,aACNmlB,IAAmB,KAAKpb,KAAS,IAAIA,KAAS;AACpD,MAAIc,IAAY,GAAGsa,CAAgB,KAC/Bra,IAAU,IAAIqa,CAAgB;AAClC,SAAIpgB,MAAc,YAChB,CAAC8F,GAAWC,CAAO,IAAI,CAACA,GAASD,CAAS,IAErC,CAAC;AAAA,IACN,GAAG7K;AAAA,IACH,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,gBAAgBskB,EAAS,UAAU;AAAA,IAC5C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,cAAczZ,CAAS;AAAA,IACxC,GAAO;AAAA,MACD,WAAW,cAAcC,CAAO;AAAA,IACtC,CAAK;AAAA,EACL,CAAG;AACH;AC3Ce,SAASL,GAAOzK,GAASiN,GAAK;AAC3C,QAAMqX,IAAW;AAAA,IACf,YAAY;AAAA,EAChB;AACE,EAAIrX,KACFoX,EAAkBC,GAAUrX,GAAK,EAAI;AAEvC,QAAM;AAAA,IACJ,OAAAlD,IAAQ;AAAA,EACZ,IAAM/J,EAAQ;AACZ,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,iBAAiBskB,EAAS,UAAU;AAAA,IAC7C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,cAAc,MAAMva,CAAK;AAAA,IAC1C,GAAO;AAAA,MACD,WAAW,qCAAqC,CAACA,CAAK;AAAA,IAC5D,CAAK;AAAA,EACL,CAAG;AACH;ACpCe,SAASU,GAAOzK,GAASiN,GAAK;AAC3C,QAAMqX,IAAW;AAAA,IACf,YAAY;AAAA,EAChB;AACE,EAAIrX,KACFoX,EAAkBC,GAAUrX,CAAG;AAEjC,QAAMjH,IAAS,UACT;AAAA,IACJ,OAAAkG,IAAQ;AAAA,EACZ,IAAMlM,EAAQ;AACZ,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,GAAGse,EAAS,UAAU;AAAA,IAC/B;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,wCAAwCpY,IAAQ,IAAI,CAAC,MAAMA,CAAK;AAAA,IACjF,GAAO;AAAA,MACD,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;ACtCe,SAASzB,GAAO2a,GAAUnY,GAAK;AAC5C,SAAIA,KACFoX,EAAkB;AAAA,IAChB,YAAY;AAAA,EAClB,GAAOpX,GAAK,EAAI,GAEP,CAAA;AACT;ACRe,SAASxC,GAAOzK,GAAS;AACtC,QAAMgG,IAAS,WACT;AAAA,IACJ,OAAArC,IAAQ;AAAA,IACR,WAAAoB,IAAY;AAAA,EAChB,IAAM/E,EAAQ;AACZ,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,cAAc;AAAA,IACd,WAAW,CAAC;AAAA,MACV,WAAW,UAAUjB,MAAc,sBAAsBpB,IAAQ,CAACA,CAAK;AAAA,IAC7E,GAAO;AAAA,MACD,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,CAAG;AACH;AC9Be,SAAS8G,GAAOzK,GAASiN,GAAK;AAC3C,QAAMqX,IAAW;AAAA,IACf,YAAY;AAAA,EAChB;AACE,EAAIrX,KACFoX,EAAkBC,GAAUrX,CAAG;AAEjC,QAAM;AAAA,IACJ,OAAAtJ,IAAQ;AAAA,IACR,WAAAoB,IAAY;AAAA,EAChB,IAAM/E,EAAQ;AACZ,SAAO,CAAC;AAAA,IACN,GAAGA;AAAA,IACH,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,gBAAgBskB,EAAS,UAAU;AAAA,IAC5C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,SAASvf,MAAc,sBAAsBpB,IAAQ,CAACA,CAAK;AAAA,IAC5E,GAAO;AAAA,MACD,WAAW,SAASoB,MAAc,sBAAsB,CAACpB,IAAQA,CAAK;AAAA,IAC5E,CAAK;AAAA,EACL,CAAG;AACH;ACpCA,MAAMshB,KAAc,KACdI,KAAe,IACfC,KAAkB,OAClBC,KAAsB;AAAA,EAC1B,IAAI;AAAA,IACF,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACE,KAAK;AAAA,IACH,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA;AACe,SAAS9a,GAAOzK,GAASiN,GAAK;AAC3C,QAAM;AAAA,IACJ,WAAAlI,IAAY;AAAA,EAChB,IAAM/E,EAAQ,aACN0P,IAAO3K,MAAc,MACrBuf,IAAW;AAAA,IACf,YAAY;AAAA,EAChB;AACE,EAAIrX,KACFoX,EAAkBC,GAAUrX,GAAKyC,CAAI;AAEvC,QAAM;AAAA,IACJ,QAAA1J;AAAA,IACA,OAAAwf;AAAA,EACJ,IAAMD,GAAoBxgB,CAAS;AACjC,MAAI;AAAA,IACF,MAAAmgB,IAAOG;AAAA,EACX,IAAMrlB,EAAQ;AACZ,EAAK0P,MACHwV,KAAQI;AAEV,QAAMG,IAAQjd,EAAYkH,IAAO,IAAIwV,IAAO,GAAG,GACzCQ,IAAMld,EAAYkH,IAAOwV,IAAO,CAACA,CAAI,GACrCS,IAAUnd,EAAYsc,GAA4BY,GAAKT,EAAW,CAAC;AACzE,SAAO,CAAC;AAAA,IACN,GAAGjlB;AAAA,IACH,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW,CAAC;AAAA,MACV,WAAW;AAAA,IACjB,GAAO;AAAA,MACD,WAAW;AAAA,IACjB,CAAK;AAAA,EACL,GAAK;AAAA,IACD,GAAGA;AAAA,IACH,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,iBAAiBskB,EAAS,UAAU;AAAA,IAC7C;AAAA,IACA,IAAI,YAAY;AACd,YAAMsB,IAAMlW,IAAO,yCAAyC4U,EAAS,UAAU,eAAeY,IAAOD,EAAW,kDAAkDX,EAAS,UAAU,UAAU;AAC/L,aAAO,CAAC;AAAA,QACN,WAAW,cAAckB,CAAK;AAAA,MACtC,GAAS;AAAA,QACD,WAAW,mBAAmBI,CAAG,MAAMD,CAAO;AAAA,MACtD,CAAO;AAAA,IACH;AAAA,EACJ,GAAK;AAAA,IACD,GAAG3lB;AAAA,IACH,QAAAgG;AAAA,IACA,MAAM;AAAA,IACN,WAAW0J,IAAO,QAAQ;AAAA,IAC1B,aAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAO,iBAAiB4U,EAAS,UAAU;AAAA,IAC7C;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,eAAeW,EAAW,kBAAkBQ,CAAK;AAAA,IAClE,GAAO;AAAA,MACD,WAAW,eAAeR,EAAW,kBAAkBS,CAAG;AAAA,IAChE,CAAK;AAAA,EACL,CAAG;AACH;ACtHe,SAASjb,GAAOzK,GAASiN,GAAK;AAC3C,QAAM;AAAA,IACJ,OAAAlD,IAAQ;AAAA,IACR,SAAA1B,IAAU;AAAA,IACV,QAAAwd,IAAS;AAAA,EACb,IAAM7lB,EAAQ,aACNskB,IAAW;AAAA,IACf,YAAY;AAAA,IACZ,YAAY;AAAA,EAChB;AACE,EAAIrX,MACE4Y,IACFhB,GAAkBP,GAAUrX,CAAG,IAE/BoX,EAAkBC,GAAUrX,CAAG;AAGnC,MAAI3E,IAAQ,QAAQyB,IAAQ;AAC5B,EAAK8b,MACHvd,IAAQA,IAAQyB;AAElB,MAAIxB,IAAM;AACV,SAAIF,MACF,CAACC,GAAOC,CAAG,IAAI,CAACA,GAAKD,CAAK,IAErB,CAAC;AAAA,IACN,GAAGtI;AAAA,IACH,MAAM;AAAA,IACN,aAAa;AAAA,MACX,MAAM6lB,IAAS,YAAY;AAAA,MAC3B,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MACf;AAAA,IACA;AAAA,IACI,IAAI,eAAe;AACjB,aAAOA,IAAS,GAAGvB,EAAS,UAAU,OAAO,gBAAgBA,EAAS,UAAU;AAAA,IAClF;AAAA,IACA,WAAW,CAAC;AAAA,MACV,WAAW,cAAchc,IAAQ,CAAC;AAAA,IACxC,GAAO;AAAA,MACD,WAAW,cAAcC,IAAM,CAAC;AAAA,IACtC,CAAK;AAAA,EACL,CAAG;AACH;ACxCO,MAAMud,KAA6B;AAAA,EAC1C,WAAEC;AAAAA,EACF,QAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,UAAEC;AAAAA,EACF,OAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,YAAEC;AAAAA,EACF,UAAEC;AAAAA,EACF,UAAEC;AAAAA,EACF,QAAEC;AAAAA,EACF,QAAEC;AAAAA,EACF,eAAEC;AACF;;;;;;;ACzBA,KAAE,SAASC,GAAK;AAoBhB,UAAIC,IAAqD,WAAW;AAAA,MAAA,GAOhEC,IAAMF,EAAI,yBACTA,EAAI,+BACJA,EAAI,4BACJA,EAAI,2BACJ,SAASzc,GAAI;AAAE,eAAO,WAAWA,GAAI,EAAE;AAAA,MAAE;AAO9C,eAAS4c,IAAU;AACjB,YAAIC,IAAO;AACX,QAAAA,EAAK,QAAQ,CAAA,GACbA,EAAK,SAAS,CAAA,GACdA,EAAK,MAAMF,EAAI,KAAKF,CAAG;AAAA,MAEzB;AAEA,MAAAG,EAAQ,YAAY;AAAA,QAClB,aAAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAUb,UAAU,SAASE,GAAO;AAEd,mBAANC,GAAaA,IAAOD,EAAM,MAAK,IAAI,CAAAC,EAAI;AAAA,QAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAUE,SAAS,SAASC,GAAIC,GAAK;AAEzB,cAAIF,IAAQE,IAAWD,EAAG,KAAKC,CAAG,IAAhBD;AAClB,sBAAK,MAAM,KAAKD,CAAI,GACpBG,EAAc,IAAI,GACXH;AAAA,QACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAWE,QAAQ,SAASC,GAAIC,GAAK;AAExB,cAAIF,IAAQE,IAAWD,EAAG,KAAKC,CAAG,IAAhBD;AAClB,sBAAK,OAAO,KAAKD,CAAI,GACrBG,EAAc,IAAI,GACXH;AAAA,QACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASE,OAAO,SAASA,GAAM;AAEpB,iBAAOI,EAAO,KAAK,OAAOJ,CAAI,KAAKI,EAAO,KAAK,QAAQJ,CAAI;AAAA,QAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAoCE,QAAQ,SAASK,GAAO;AAEtB,cAAI,OAAOA,KAAS,SAAU,OAAM,IAAI,MAAM,iBAAiB;AAE/D,cAAIC,IAAQ,OAAO,OAAO,IAAI;AAC9B,iBAAAC,EAAMD,GAAOD,CAAK,GAClBC,EAAM,UAAU,MAGZA,EAAM,cAAYA,EAAM,WAAU,GAE/BA;AAAA,QACX;AAAA;AAAA;AAAA;AAAA,QAKE,OAAO;AAAA;AAST,eAASH,EAAcK,GAAS;AAC9B,QAAKA,EAAQ,cACXA,EAAQ,YAAY,IACpBA,EAAQ,IAAIC,EAAM,KAAK,MAAMD,CAAO,CAAC;AAAA,MAGzC;AAWA,eAASC,EAAMD,GAAS;AAGtB,YAAIE,IAASF,EAAQ,QACjBG,IAAQH,EAAQ,OAChB5d;AAEJ,YAAI;AACF,UAAA+c,EAAM,kBAAkBgB,EAAM,MAAM,GACpCH,EAAQ,SAASG,CAAK,GACtBhB,EAAM,mBAAmBe,EAAO,MAAM,GACtCF,EAAQ,SAASE,CAAM;AAAA,QAC3B,SAAWloB,GAAG;AAAE,UAAAoK,IAAQpK;AAAA,QAAE;AAOxB,YALAgoB,EAAQ,YAAY,KAGhBG,EAAM,UAAUD,EAAO,WAAQP,EAAcK,CAAO,GAEpD5d;AAEF,cADA+c,EAAM,gBAAgB/c,EAAM,OAAO,GAC/B4d,EAAQ,MAAO,CAAAA,EAAQ,MAAM5d,CAAK;AAAA,cACjC,OAAMA;AAAA,MAEf;AASA,eAASwd,EAAOQ,GAAOC,GAAM;AAC3B,YAAI1oB,IAAQyoB,EAAM,QAAQC,CAAI;AAC9B,eAAO,CAAC,CAAC,CAAC1oB,KAAS,CAAC,CAACyoB,EAAM,OAAOzoB,GAAO,CAAC;AAAA,MAC5C;AASA,eAASooB,EAAM9mB,GAAQqnB,GAAQ;AAC7B,iBAASjpB,KAAOipB;AACd,UAAIA,EAAO,eAAejpB,CAAG,MAAG4B,EAAO5B,CAAG,IAAIipB,EAAOjpB,CAAG;AAAA,MAE5D;AAIA,UAAIkpB,IAAUrB,EAAI,UAAWA,EAAI,WAAW,IAAIG,EAAO;AAIjB,MAAAmB,YAAiBD;AAAAA,IAEvD,GAAI,OAAO,SAAW,MAAc,SAAS,OAAOE,KAAQ,MAAcA,KAAO,UAAU;AAAA;;;;AC5O3F,SAASC,EAAWC,GAAIC,GAAe;AACrC,SAAOD,IAAuB,SAAU,eAAeA,CAAE,IAAI;AAC/D;AACA,SAASE,GAAqBnhB,GAASohB,GAAM;AAC3C,SAAIphB,KAAW,QAAQA,EAAQ,QAAQ,uBAAuBohB,CAAI,IAAI,IAC7DphB,IAEyBA,GAAQ,cAAc,uBAAuBohB,CAAI,IAAI;AACzF;AACA,SAASC,GAAajf,GAAQ;AAC5B,QAAMkf,IAAYlf,EAAO,YAAY,cAAc;AACnD,SAAOA,EAAO,WAAW,GAAGkf,IAAY,GAAGA,CAAS,MAAM,EAAE,YAAYA,KAAa;AACvF;AACA,SAASC,GAAUrjB,GAAQ;AACzB,SAAO,GAAGA,EAAO,KAAK,GAAGQ,EAAYR,EAAO,IAAI,CAAC;AACnD;AACA,SAASsjB,GAASje,GAAOke,GAAKC,GAAO;AAGnC,SAAO,GAAGne,EAAM,QAAQ,OAAO,IAAIme,KAASne,EAAM,OAAO,SAAS,eAAe,eAAege,GAAUhe,EAAM,MAAM,CAAC,GAAGke,IAAM,MAAMA,CAAG,KAAK,EAAE,MAAMA,IAAM,QAAQF,GAAUhe,EAAM,MAAM,CAAC,MAAMke,CAAG,MAAMF,GAAUhe,EAAM,MAAM,CAAC;AACnO;AACA,SAASoe,GAAUvf,GAAQ;AACzB,SAAO;AAAA,IACL,OAAOof,GAASpf,EAAO,aAAaA,EAAO,cAAc;AAAA,IACzD,KAAKof,GAASpf,EAAO,WAAWA,EAAO,cAAc,EAAI;AAAA,EAC7D;AACA;AACA,SAASwf,GAAQroB,GAAQ;AACvB,SAAO,CAAAwmB,MAAMO,EAAQ,QAAQ,MAAMP,EAAGxmB,CAAM,CAAC;AAC/C;AACA,SAASsoB,GAAOtoB,GAAQ;AACtB,SAAO,CAAAwmB,MAAMO,EAAQ,OAAO,MAAMP,EAAGxmB,CAAM,CAAC;AAC9C;AACA,SAASuoB,GAAe9oB,GAAW;AACjC,MAAIA,EAAU,aAAa;AACzB,UAAMqa,IAAOra,EAAU,YAAY;AAGnC,QAAIqa,KAAQhJ;AACV,aAAOA,GAAiBgJ,CAAI;AACvB,QAAIA,KAAQ3B;AACjB,aAAOA,GAAmB2B,CAAI;AACzB,QAAIA,KAAQ+F;AACjB,aAAOA,GAAkB/F,CAAI;AACxB,QAAIA,KAAQgJ;AACjB,aAAOA,GAAgBhJ,CAAI;AACtB,QAAIA,KAAQsL;AACjB,aAAOA,GAA2BtL,CAAI;AAAA,EAE1C,WAAWra,EAAU,gBAAgB;AACnC,UAAMoJ,IAAS,CAAA2f,MAAc;AAC3B,YAAM;AAAA,QACJ,MAAA1O;AAAA,QACA,WAAAxM;AAAA,MACR,IAAUkb,EAAW;AACf,aAAO,CAAC;AAAA,QACN,GAAGA;AAAA,QACH,MAAA1O;AAAA,QACA,WAAAxM;AAAA,MACR,CAAO;AAAA,IACH;AAWA,WAAO;AAAA,MACL,KAAKzE;AAAA,MACL,OAAOA;AAAA,MACP,UAbe,CAAA2f,MAAc;AAC7B,cAAM;AAAA,UACJ,UAAAC;AAAA,QACR,IAAUD,GACE;AAAA,UACJ,MAAA1O;AAAA,QACR,IAAU0O,EAAW,gBACTlf,IAAMwQ,KAAQ2O;AACpB,eAAOnf,IAAM,CAACA,CAAG,IAAI,CAAA;AAAA,MACvB;AAAA,IAKJ;AAAA,EACE,WAAW7J,EAAU;AACnB,WAAO,CAAA+oB,MAAc,CAAC;AAAA,MACpB,GAAGA;AAAA,MACH,WAAW,CAAA;AAAA,IACjB,CAAK;AAEH,SAAO;AACT;AACA,SAASE,GAAerpB,GAAYspB,GAASF,GAAU;AAErD,SAAOppB,EAAW,IAAI,CAACwJ,GAAQnK,MAAU;AAEvC,UAAMiK,IAAgB;AAAA,MACpB,MAAME,EAAO;AAAA,MACb,QAAQxD,EAAUwD,EAAO,MAAM;AAAA,MAC/B,YAAYA,EAAO,eAAe,IAAI,QAAWA,EAAO,cAAc;AAAA,MACtE,WAAWA,EAAO;AAAA,MAClB,WAAWif,GAAajf,CAAM;AAAA,IACpC;AAGI,WAAI+f,GAAmBD,CAAO,KAC5BhgB,EAAc,WAAWE,EAAO,UAChCF,EAAc,QAAQE,EAAO,SAAS,KAGlC,OAAO,eAETF,EAAc,WAAW,UAIzBA,EAAc,WAAW,OACzBA,EAAc,QAAQ,OAGnB;AAAA,MACL,QAAAE;AAAA,MACA,SAASF;AAAA,MACT,IAAI8f,KAAY,GAAGA,CAAQ,IAAI/pB,IAAQ,CAAC;AAAA,MACxC,MAAMmK,EAAO;AAAA,IACnB;AAAA,EACE,CAAC;AACH;AACA,SAAS+f,GAAmBD,GAAS;AACnC,SAAO,CAACA,KAAWA,EAAQ,YAAY,kBAAkBA,EAAQ,YAAY;AAC/E;AC7HA,SAASE,GAAsBC,GAAQrpB,GAAWO,GAAQ2oB,GAASrpB,GAAS;AAC1E,MAAIwpB,GAAQ;AAEV,QAAIF,GAAmBD,CAAO,MAC5BlpB,EAAU,WAAWA,EAAU,YAAY,GACvCH,KAAW,QAAQA,EAAQ;AAC7B,UAAIG,EAAU,eAAe,KAAKA,EAAU,cAAc;AACxD,QAAAA,IAAY;AAAA,UACV,GAAGA;AAAA,UACH,UAAU;AAAA,QACtB;AAAA;AAEU,eAAO,CAAA;AAIb,QAAIspB;AACJ,WAAI/oB,aAAkB,gBACpB+oB,IAAS;AAAA,MACP,SAASV,GAAQroB,CAAM;AAAA,MACvB,QAAQsoB,GAAOtoB,CAAM;AAAA,IAC7B,IAEW8oB,EAAO,MAAMA,EAAO,IAAIrpB,GAAWspB,GAAQzpB,CAAO,IAAIwpB,EAAOrpB,GAAWspB,GAAQzpB,CAAO;AAAA,EAChG;AACA,SAAO,CAAA;AACT;AACA,SAAS0pB,GAAgBhpB,GAAQuhB,GAAkBoH,GAASrpB,GAASqoB,GAAe;AAClF,QAAMlhB,IAAUzG,aAAkB,cAAcA,IAASynB,EAAWznB,CAAqB;AACzF,MAAgC2oB,GAAQ,YAAa,gBAAgB;AACnE,QAAIhgB,IAAgB4Y;AACpB,IAAIA,EAAiB,iBACnB5Y,IAAgB;AAAA,MACd,GAAG4Y;AAAA,MACH,aAAa;AAAA,QACX,IAAI;AAAA,QACJ,MAAM;AAAA,MAChB;AAAA,IACA;AAII,UAAM0H,IAAuBV,GAAe5f,CAAa;AAEzD,WAD8BkgB,GAAsBI,GAAsB1H,GAAkB9a,GAASkiB,GAASrpB,CAAO,EACxFmH,CAAO;AAAA,EACtC;AAGA,QAAMyiB,IAAcX,GAAehH,CAAgB,GAC7C4H,IAAiBN,GAAsBK,GAAa3H,GAAkB9a,GAASkiB,GAASrpB,CAAO,GAC/F8pB,IAAOV,GAAeS,GAAgBR,GAASpH,EAAiB,QAAQ;AAC9E,MAAIzY;AACJ,QAAMugB,IAA6CV,GAAQ,YAAa;AAGxE,EAAIU,KAAkB,OAAO,iBAG3BvgB,IAAW,IAAI,aAAa;AAAA,IAC1B,SAAS6f,EAAQ,WAAWlB,EAAWkB,EAAQ,WAAW;AAAA,EAChE,CAAK;AAIH,QAAMtpB,IAAa+pB,EAAK,IAAI,CAAA7mB,MAAQ;AAClC,QAAI;AAAA,MACF,QAAAsG;AAAA,MACA,SAASF;AAAA,MACT,IAAA+e;AAAA,MACA,MAAAG;AAAA,IACN,IAAQtlB;AACJ,UAAM+mB,IAAezB,IAAOD,GAAqBnhB,GAASohB,CAAI,IAAIphB,GAC5D8iB,IAAiB,IAAI,eAAeD,KAAgB,MAAM,CAAA,GAAI3gB,CAAa;AAGjF,IAAAoe,EAAQ,OAAO,MAAM;AACnB,MAAI,YAAYle,KACd0gB,EAAe,aAAa1gB,EAAO,MAAM,GAE3C0gB,EAAe,aAAa1gB,EAAO,SAAS;AAAA,IAC9C,CAAC;AACD,UAAMD,IAAgBygB,KAAkBvgB,IAAW;AAAA,MACjD,UAAUA;AAAA,IAChB,IAAQ,CAAA,GACErJ,IAAY,OAAOoJ,EAAO,gBAAiB,aAAa,IAAIJ,GAAgBI,EAAO,cAAcygB,KAAgB,MAAM3gB,GAAeC,CAAa,IAAI,IAAI,UAAU2gB,GAAgB3gB,EAAc,QAAQ;AAGjN,QAAIygB;AACF,UAAIvgB;AAEF,QAAAie,EAAQ,OAAO,MAAM;AACnB,gBAAM;AAAA,YACJ,OAAAnf;AAAA,YACA,KAAAC;AAAA,UACZ,IAAcugB,GAAUvf,CAAM;AAEpB,UAAApJ,EAAU,aAAamI,GAEvBnI,EAAU,WAAWoI,GACrBpI,EAAU,KAAI;AAAA,QAChB,CAAC;AAAA,WACI;AACL,cAAM;AAAA,UACJ,aAAA+pB;AAAA,UACA,WAAAC;AAAA,QACV,IAAYlI;AAGJ,QAAAwF,EAAQ,OAAO,MAAM;AACnB,cAAI2C,GAASC;AACb,gBAAMC,IAAqB/gB,EAAO,eAAe2gB,GAC3CK,IAAmBhhB,EAAO,aAAa4gB;AAC7C,iBAAO,OAAOhqB,GAAW;AAAA,YACvB,OAAO;AAAA,cACL,MAAMmqB,EAAmB;AAAA,cACzB,SAASF,IAAUE,EAAmB,WAAW,OAAO,SAASF,EAAQ;AAAA,cACzE,KAAK7gB,EAAO;AAAA,YAC1B;AAAA,YACY,KAAK;AAAA,cACH,MAAMghB,EAAiB;AAAA,cACvB,SAASF,IAAWE,EAAiB,WAAW,OAAO,SAASF,EAAS;AAAA,cACzE,KAAK9gB,EAAO;AAAA,YAC1B;AAAA,UACA,CAAW;AAAA,QACH,CAAC;AAAA,MACH;AAEF,WAAI6e,MACFjoB,EAAU,KAAKioB,IAEVjoB;AAAA,EACT,CAAC;AAGD,SAAO,IAAIL,GAAeC,GAAY;AAAA,IACpC,GAAGkiB;AAAA,IACH,SAAS;AAAA,MACP,GAAIoH,KAAW,CAAA;AAAA,IACrB;AAAA;AAAA,IAEI,UAAU,IAAI,QAAQ,CAAAmB,MAAW/C,EAAQ,OAAO+C,CAAO,CAAC;AAAA,EAC5D,CAAG;AACH;AChJA,SAASC,GAAiB/pB,GAAQP,GAAWD,GAAU;AACrD,QAAMspB,IAASP,GAAe9oB,CAAS,GACjCgH,IAAUzG,aAAkB,cAAcA,IAASynB,EAAWznB,CAAM;AAC1E,MAAI8oB,KAAUA,EAAO,WAAWriB,GAAS;AACvC,UAAMsiB,IAAS;AAAA,MACb,SAASV,GAAQ5hB,CAAO;AAAA,MACxB,QAAQ6hB,GAAO7hB,CAAO;AAAA,IAC5B;AACI,IAAAqiB,EAAO,QAAQrpB,GAAWspB,CAAM;AAAA,EAClC;AACA,EAAAvpB,KAAYunB,EAAQ,OAAOvnB,CAAQ;AACrC;ACPA,SAASwqB,GAAuBhqB,GAAQuhB,GAAkB;AACxD,QAAM2H,IAAcX,GAAehH,CAAgB;AACnD,MAAI,CAAC2H;AACH,WAAO;AAET,MAAI,CAACA,EAAY;AAEf,WAAI3H,EAAiB,YAAYvhB,IACxBiqB,GAAoBjqB,GAAQuhB,EAAiB,QAAQ,IAEvD;AAET,QAAM2I,IAAchB,EAAY,SAAS3H,CAAgB,GACnD9a,IAAU,OAAOzG,KAAW,WAAWynB,EAAWznB,CAAM,IAAIA,GAC5DX,IAAwCoH,GAAQ,cAAa,GAC7D0jB,IAAgD9qB,GAAW,IAAI,CAAA+qB,MAAQA,EAAK,aAAa,KAAM,CAAA,GAC/FC,IAAqB,CAAA;AAC3B,SAAAH,EAAY,QAAQ,CAAApQ,MAAQ;AAC1B,IAAIqQ,EAAe,SAASrQ,CAAI,KAC9BuQ,EAAmB,KAAmChrB,GAAW,KAAK,CAAA+qB,MAAQA,EAAK,kBAAkBtQ,CAAI,CAAC;AAAA,EAE9G,CAAC,GACMuQ,KAAsB,QAAQA,EAAmB,SAAS,IAAIjrB,GAAeirB,CAAkB,IAAI;AAC5G;AACA,SAASJ,GAAoBjqB,GAAQyoB,GAAU;AAC7C,QAAMhiB,IAAU,OAAOzG,KAAW,WAAWynB,EAAWznB,CAAM,IAAIA,GAE5DX,IAAwCoH,GAAQ,cAAa,EAAG,OAAO,CAAA2jB,MAAQ;AACnF,UAAM1C,IAAK0C,EAAK,MAAMA,EAAK;AAE3B,WAAO1C,IAAKA,EAAG,WAAWe,CAAQ,IAAI;AAAA,EACxC,CAAC;AACD,SAAOppB,KAAc,QAAQA,EAAW,SAAS,IAAID,GAAeC,CAAU,IAAI;AACpF;AACA,SAASirB,GAActqB,GAAQuhB,GAAkBoH,GAAS4B,GAAc;AACtE,EAAIA,MAAiB,WACnBA,IAAe,CAAA;AAEjB,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,GAAGC;AAAA,EACP,IAAMH,GACE9qB,IAAYupB,GAAgBhpB,GAAQuhB,GAAkBoH,GAAS+B,CAAI;AACzE,MAAIC,IAAsB,CAAA;AAC1B,MAAIhC,EAAQ,YAAY,mBAAmB,CAAC,OAAO,cAAc;AAE/D,UAAMiC,IAAajC,EAAQ,WAAWlB,EAAWkB,EAAQ,WAAW,GAC9D;AAAA,MACJ,OAAAkC;AAAA,IACN,IAAQprB;AACJ,WAAOA,EAAU,WAAW,IAAI,CAAAqrB,OACvB;AAAA;AAAA;AAAA,MAGL,IAAI,QAAQ;AACV,eAAOA,EAAiB;AAAA,MAC1B;AAAA,MACA,IAAI,MAAM;AACR,eAAOA,EAAiB;AAAA,MAC1B;AAAA,MACA,YAAAF;AAAA,MACA,OAAAC;AAAA,MACA,cAAc;AACZ,eAAOprB,EAAU,YAAW;AAAA,MAC9B;AAAA,MACA,OAAOsrB,GAAI,GAAG;AACZ,cAAM;AAAA,UACJ,gBAAAprB;AAAA,QACZ,IAAcmrB,EAAiB,OAAO,kBAAiB,GACvC;AAAA,UACJ,OAAAlrB;AAAA,QACZ,IAAckrB,EAAiB,OAAO,UAAS;AACrC,QAAAA,EAAiB,gBAAgBlrB,KAAS,MAAMD,KAAkB,MAAM;AAAA,MAC1E;AAAA,MACA,UAAA6qB;AAAA,MACA,UAAU;AACR,QAAAM,EAAiB,OAAM;AAAA,MACzB;AAAA,IACR,EACK;AAAA,EACH,WAAWnC,EAAQ,YAAY,gBAAgB;AAC7C,UAAM;AAAA,MACJ,kBAAAqC;AAAA,MACA,oBAAA5J;AAAA,MACA,kBAAAC;AAAA,IACN,IAAQE;AACJ,IAAAoJ,IAAsB;AAAA,MACpB,QAAQlrB,EAAU;AAAA,MAClB,kBAAAurB;AAAA,MACA,kBAAAP;AAAA,IACN,GACQlJ,EAAiB,gBAAgBH,MACnCuJ,EAAoB,qBAAqBvJ,GACzCuJ,EAAoB,mBAAmBplB,GAAY8b,CAAgB;AAAA,EAEvE;AACA,SAAO;AAAA,IACL,GAAGsJ;AAAA,IACH,cAAc;AACZ,aAAOlrB,EAAU,YAAW;AAAA,IAC9B;AAAA,IACA,OAAOsrB,GAAIrrB,GAAGkhB,GAAGC,GAAQ;AACvB,MAAAphB,EAAU,SAASmhB,IAAI;AAAA;AAAA,QAErB,GAAGlhB;AAAA,QACH,GAAAkhB;AAAA,QACA,QAAAC;AAAA,MACR,IAAUnhB,CAAC;AAAA,IACP;AAAA,IACA,UAAA8qB;AAAA,IACA,UAAU;AACR,MAAA/qB,EAAU,OAAM;AAAA,IAClB;AAAA,EACJ;AACA;AACA,SAASwrB,GAAajrB,GAAQuhB,GAAkBoH,GAASuC,GAAe;AACtE,EAAIA,MAAkB,WACpBA,IAAgB;AAElB,QAAMzrB,IAAYuqB,GAAuBhqB,GAAQuhB,CAAgB;AACjE,SAAI9hB,KACFA,EAAU,QAAQ,IAAI,QAAQ,CAAAqqB,MAAW;AACvC,IAAAC,GAAiB/pB,GAAQuhB,GAAkBuI,CAAO;AAAA,EACpD,CAAC,GACMrqB,KAEFupB,GAAgBhpB,GAAQuhB,GAAkBoH,GAAS;AAAA,IACxD,eAAAuC;AAAA,EACJ,CAAG;AACH;AChIA,SAASC,GAAuBC,GAAsBC,GAA2B;AAC/E,SAAIA,EAAU,SAAS,GAAG,IACjBA,EAAU,QAAQ,MAAMD,CAAY,IAEtC,GAAGA,CAAY,GAAGC,CAAS;AACpC;AAEO,SAASC,KAAa;AAC3B,SAAO,cAAc;AAAA,IACnB;AAAA,IACA,CAACC,MACC,OAAO;AAAA,OACJ,CAACA,IAAK,OAAO,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,IAAK,MAAO,CAACA,IAAI,KAAQ;AAAA,IAAA;AAAA;AAAA,EAC7E;AAEN;AAEO,SAASC,GAAoB;AAAA,EAClC,KAAAptB;AAAA,EACA,UAAAqqB;AAAA,EACA,YAAAgD;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,mBAAAC;AACF,GAAwC;AACtC,MAAIC,IAAwB,CAAA;AAE5B,MAAIJ,GAAY,iBAAiB;AAC/B,UAAM,EAAE,UAAApjB,GAAU,QAAA/C,GAAQ,OAAA1F,EAAA,IAAU6rB;AAEpC,IAAIpjB,MACoCojB,EAAW,gBAAgB;AAAA,MAAK,CAACK,MACrEA,EAAc,KAAK,WAAW,IAAI;AAAA,IAAA,IAKlCD,IAAc;AAAA,MACZ,OAAOxjB,CAAQ,MAAMhD,EAAUC,KAAU,MAAM,CAAC,GAAG1F,IAAQ,IAAIA,CAAK,OAAO,EAAE;AAAA,MAC7E;AAAA,IAAA,IAGFisB,IAAcJ,EAAW,gBAAgB;AAAA,MACvC,CAACK,MACC,GAAGA,EAAc,IAAI,IAAIzjB,CAAQ,MAAMhD;AAAA,QACrCC,KAAU;AAAA,MAAA,CACX,GAAG1F,IAAQ,IAAIA,CAAK,OAAO,EAAE;AAAA,IAAA,IAKtC8rB,IAAaD,EAAW;AAAA,EAC1B;AACE,IAAAI,IACEH,GACI,OAAO,CAACK,MAAaA,EAAS,QAAQ,EACvC;AAAA,MACC,CAACA,MACC,GAAGA,EAAS,IAAI,IAAIA,EAAS,QAAQ,MACnC1mB,EAAU0mB,EAAS,MAAM,KAAK,MAChC,GAAGA,EAAS,QAAQ,IAAIA,EAAS,KAAK,OAAO,EAAE;AAAA,IAAA,KAC9C,CAAA;AAGX,QAAMC,IACJN,GAAY,IAAI,CAACK,MAAa,GAAGA,EAAS,IAAI,KAAKA,EAAS,KAAK,GAAG,KAAK,CAAA,GACrEE,IAAa7tB,EAAI,QAAQ,MAAM,GAAG,GAGlC8tB,IAAgB,cAAczD,CAAQ,SAASA,CAAQ,KAAKkD,CAAa,IACzEQ,IAAmB,2BAA2B1D,CAAQ,MAAMkD,CAAa,IAEzES,IAAqBR,IACvBT,GAAuBe,GAAeN,CAAiB,IACvDM,GACEG,IAAwBT,IAC1BT,GAAuBgB,GAAkBP,CAAiB,IAC1DO,GAEEG,IAAS;AAAA,IACb,GAAGF,CAAkB;AAAA,MACnBC,CAAqB;AAAA,QACnBL,EAAgB,KAAK;AAAA,OACtB,CAAC;AAAA;AAAA,EAAA;AAIN,MAAIH,EAAY,QAAQ;AACtB,UAAMU,IAAqB,uBAAuBN,CAAU,MAAMN,CAAa,IACzEa,IAA0BZ,IAC5BT,GAAuBoB,GAAoBX,CAAiB,IAC5DW;AAEJ,IAAAD,EAAO,KAAK,oDAAoDE,CAAuB;AAAA,oBACvEX,EAAY,KAAK,IAAI,CAAC;AAAA,QAClC;AAAA,EACN;AACA,SAAOS;AACT;AAEO,SAASG,GACdC,GACAC,GACA;AACA,QAAMC,KAAoBF,KAAkB,CAAA,GACzC,OAAO,CAACG,MACAF,EAAWE,CAAa,GAAG,SAAS,WAAWF,EAAWE,CAAa,EAAE,SACjF,EACA,IAAI,CAACA,MACGF,EAAWE,CAAa,EAAE,SAClC,EACA,KAAK,SAAS,GAEXC,IAAYF,KAAoB,IAAIA,CAAgB;AAG1D,SAFYE,KAAa,OAAO,WAAWA,CAAS;AAGtD;AAEO,SAASC,GACdL,GACAC,GACoB;AACpB,aAAW7S,KAAQ4S,KAAkB,IAAI;AACvC,UAAMI,IAAYH,EAAW7S,CAAI;AACjC,QAAIgT,GAAW,SAAS,cAAcA,EAAU;AAC9C,aAAOA,EAAU;AAAA,EAErB;AAEF;AClIO,SAASE,EAAyBnkB,GAAkC;AACzE,MAAKA,EAAsB;AACzB,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,GAAGA;AAAA,IAAA;AAIP,QAAM,EAAE,YAAAokB,GAAY,UAAAC,GAAU,GAAGxC,MAAS7hB;AAC1C,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,aAAaokB;AAAA,IACb,WAAWC;AAAA,IACX,GAAGxC;AAAA,EAAA;AAEP;AAEO,SAASyC,EACdC,GACA3mB,GACA4mB,GACA;AACA,MAAIC,IAAWF,EAAY,IAAI3mB,CAAO;AAEtC,EAAK6mB,MACHA,wBAAe,IAAA,GACfF,EAAY,IAAI3mB,GAAS6mB,CAAQ,IAGnCA,EAAS,IAAID,CAAU;AACzB;AAEO,SAASE,EACdC,GACA/mB,GACA;AAGA,EAFiB+mB,EAAW,IAAI/mB,CAAO,GAE7B,QAAQ,CAAC4mB,MAAe;AAChC,UAAM,EAAE,QAAAhG,GAAQ,QAAArnB,GAAQ,SAAAytB,EAAA,IAAYJ;AACpC,IAAAI,EAAA;AAEA,UAAMC,IAAWrG,MAAW5gB,IAAUzG,IAASqnB;AAE/C,IADsBmG,EAAW,IAAIE,CAAQ,GAC9B,OAAOL,CAAU;AAAA,EAClC,CAAC,GAEDG,EAAW,OAAO/mB,CAAO;AAC3B;AC9CA,MAAMknB,KAAiD;AAAA,EACrD,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,WAAW,CAAC,CAAC;AACf,GAEMC,KAAkD,CAAA,GAClDJ,yBAAiB,QAAA,GACjBK,yBAAsB,QAAA,GACtBC,yBAAyB,QAAA;AAC/B,IAAIC,KAA6C,CAAA;AAEjD,SAASC,GAAW1uB,GAAmC;AACrD,EAAAyuB,KAAmBzuB;AACrB;AAEA,SAAS2uB,GAAY3uB,GAA0B4uB,IAAsB,IAAO;AAC1E,QAAM9vB,IAAM,KAAK,UAAU,EAAE,GAAGkB,GAAS,YAAA4uB,GAAY;AAErD,MAAIN,GAAUxvB,CAAG;AACf,WAAOwvB,GAAUxvB,CAAG;AAGtB,QAAM+N,IAAmC+hB,IACvCP,KACA;AAAA,IACE,MAAM;AAAA,IACN,YAAYruB,EAAQ,QAChB,GAAGA,EAAQ,KAAK,QAAQA,EAAQ,KAAK,KACrC;AAAA,IACJ,WAAWA,EAAQ;AAAA,EAAA,GAGnB6uB,IAAW,IAAI,qBAAqB,CAACC,MAAY;AACrD,IAAAA,EAAQ,QAAQ,CAACC,MAAU;AACzB,YAAMruB,IAASquB,EAAM;AAGrB,UAFmB,CAACR,GAAgB,IAAI7tB,CAAM,MAG5C6tB,GAAgB,IAAI7tB,CAAM,GAEtBV,EAAQ,oBAAoB,CAAC+uB,EAAM,iBAAgB;AACrD,QAAAtH,EAAQ,QAAQ,MAAM;AACpB,gBAAMuH,IAAeD,EAAM,mBAAmB,QACxCE,IAAaF,EAAM,YAAY;AAErC,cAAI,CAACE;AACH;AAGF,gBAAMC,IAAY,MAAM,QAAQlvB,EAAQ,SAAS,IAC7C,KAAK,IAAI,GAAGA,EAAQ,SAAS,IAC7BA,EAAQ;AAKZ,UAFEkvB,KAAaF,IAAeE,IAAYD,KAGxCxH,EAAQ,OAAO,MAAM;AACnB,YAAAoH,EAAS,UAAUnuB,CAAM;AACzB,kBAAMyuB,IAAeR,GAAY3uB,GAAS,EAAI;AAC9C,YAAAwuB,GAAmB,IAAI9tB,GAAQyuB,CAAY,GAC3CA,EAAa,QAAQzuB,CAAM;AAAA,UAC7B,CAAC;AAAA,QAEL,CAAC;AACD;AAAA,MACF;AAGF,MAAIquB,EAAM,mBACSb,GAAW,IAAIxtB,CAAM,GAE5B,QAAQ,CAAC,EAAE,QAAAqnB,GAAQ,SAAAqH,QAAc;AACzC,QAAIrH,MAAWgH,EAAM,UACnBK,EAAA;AAAA,MAEJ,CAAC,GAEGpvB,EAAQ,SAAS,WACnB6uB,EAAS,UAAUE,EAAM,MAAM,GAC/BR,GAAgB,OAAO7tB,CAAM;AAAA,IAGnC,CAAC;AAAA,EACH,GAAGmM,CAAM;AAEP,SAAAyhB,GAAUxvB,CAAG,IAAI+vB,GAEVA;AACT;AAEA,SAASQ,GACPtH,GACArnB,GACA6I,GACAvJ,IAA2B,CAAA,GAC3B,EAAE,eAAA4rB,GAAe,mBAAAU,EAAA,IAAuC,IACxD;AACA,QAAMuC,IAAWF,GAAY,EAAE,GAAGF,IAAkB,GAAGzuB,GAAS,GAC1DG,IAAYwrB;AAAA,IAChBjrB;AAAA,IACAgtB,EAAyBnkB,CAAM;AAAA,IAC/B;AAAA,IACAqiB;AAAA,EAAA;AAGF,EAAIzrB,GAAW,SAASH,EAAQ,SAAS,UACvCG,EAAU,SAAS,MAAM;AACvB,IAAAO,EAAO,QAAQ,cAAc;AAAA,EAC/B,CAAC;AAkBH,QAAMqtB,IAAa,EAAE,QAAAhG,GAAQ,QAAArnB,GAAQ,SAfrB,MAAM;AACpB,IAAI4rB,KAAqB,CAAC5rB,EAAO,QAAQ4rB,CAAiB,KAC1DnsB,EAAU,KAAK,MAAM;AACnB,MAAKA,EAAU,UACbO,EAAO,QAAQ,cAAc;AAAA,IAEjC,CAAC;AAAA,EACH,GAQ8C,SAP9B,MAAM;AAEpB,KADwB8tB,GAAmB,IAAIzG,CAAM,KAAK8G,GAC1C,UAAU9G,CAAM,GAChC5nB,EAAU,OAAA,GACVouB,GAAgB,OAAOxG,CAAM,GAC7ByG,GAAmB,OAAOzG,CAAM;AAAA,EAClC,EAC8C;AAE9C,EAAA8F,EAAgBK,IAAYnG,GAAQgG,CAAU,GAC9CF,EAAgBK,IAAYxtB,GAAQqtB,CAAU,GAE9CS,GAAmB,IAAIzG,GAAQ8G,CAAQ,GACvCA,EAAS,QAAQ9G,CAAM;AACzB;AAEA,SAASuH,GAAuBnoB,GAAsB;AACpD,EAAA8mB,EAA4BC,IAAY/mB,CAAO;AACjD;AAEA,MAAAooB,KAAe;AAAA,EACb,KAAKF;AAAA,EACL,QAAQC;AAAA,EACR,YAAAZ;AACF;AClJA,SAASc,GAAWC,GAAKC,GAAU;AACjC,SAAO,OAAO,OAAO,OAAO,OAAOA,CAAQ,GAAGD,CAAG;AACnD;AAWA,SAASE,GAAMnvB,GAAGovB,GAAG/vB,GAAGJ,GAAG;AACzB,MAAIowB,IAAMrvB,KAAK,IAAIX,KAAK+vB,IAAI/vB;AAE5B,MAAIJ,GAAG;AACL,UAAMqwB,IAAiBD,IAAMrvB;AAC7B,IAAI,KAAK,IAAIsvB,CAAc,IAAIrwB,MAC7BowB,IAAMrvB,IAAIf,IAAI,KAAK,KAAKqwB,CAAc;AAGxC,UAAMC,IAAeH,IAAIC;AAEzB,QAAI,KAAK,IAAIE,CAAY,IAAItwB;AAC3B,aAAOmwB;AAAA,EAEX;AAEA,SAAOC;AACT;AASA,SAASG,GAAe9I,GAAI;AAC1B,MAAI+I,IAAY;AAEhB,SAAO,WAAY;AACjB,IAAKA,MACHA,IAAY,IAEZ,OAAO,sBAAsB,MAAM;AACjC,MAAAA,IAAY,IACZ/I,EAAE;AAAA,IACJ,CAAC;AAAA,EAEL;AACF;AASA,SAASgJ,GAAUhJ,GAAIiJ,GAAU;AAC/B,MAAIC,IAAY;AAEhB,SAAO,WAAmB;AACxB,IAAIA,KACF,OAAO,aAAaA,CAAS,GAG/BA,IAAY,OAAO,WAAW,MAAM;AAClC,MAAAA,IAAY,GACZlJ,EAAE;AAAA,IACJ,GAAGiJ,CAAQ;AAAA,EACb;AACF;AC9EA,SAASE,GAAgBC,GAAcC,GAAuB;AAC5D,QAAMC,IAAQF,EAAa,MAAM,sGAAsG;AACvI,SAAOG,GAAgCD,EAAM,CAAC,GAAGD,CAAqB,IAAIE,GAAgCD,EAAM,CAAC,GAAGD,CAAqB;AAC3I;AASA,SAASE,GAAiCH,GAAcC,GAAuB;AAC7E,SAAOD,IACH,YAAY,KAAKA,CAAY,IAC3B,SAASA,CAAY,IACrB,kBAAkB,KAAKA,CAAY,IACjC,SAASA,CAAY,IAAIC,EAAsB,iBAAiB,MAChE,kBAAkB,KAAKD,CAAY,IACjC,SAASA,CAAY,IAAIC,EAAsB,gBAAgB,MAC/D,mGAAmG,KAAKD,CAAY,IAClHD,GAAgBC,GAAcC,CAAqB,IACnD,SAASD,CAAY,KAAK,IAClC;AACN;AAUA,SAASI,EAA0BhmB,GAAOimB,GAAcld,GAAM;AAC5D,QAAM,EAAE,MAAA+G,GAAM,QAAA9W,IAAS,EAAC,IAAKgH,GACvB,EAAE,OAAApC,GAAO,KAAAC,EAAG,IAAKkL,GACjBD,IAASjL,IAAMD,GACfsoB,IAAaltB,IAAS;AAE5B,MAAImtB,GAAe9nB;AAEnB,SAAIyR,MAAS,WACXqW,IAAgBvoB,IAAQqoB,GACxB5nB,IAAW,KAAK,IAAI4nB,GAAcnd,CAAM,KAEjCgH,MAAS,oBAChBqW,IAAgBvoB,IAAQqoB,GACxB5nB,IAAWyK,KAEJgH,MAAS,aAChBqW,IAAgB,KAAK,IAAItoB,IAAMooB,GAAcroB,CAAK,GAElDS,IAAW,KAAK,IAAI4nB,IAAend,CAAM,KAElCgH,MAAS,UAChBqW,IAAgB,KAAK,IAAIvoB,GAAOC,IAAMooB,CAAY,GAClD5nB,IAAW,KAAK,IAAI4nB,GAAcnd,CAAM,KAEjCgH,MAAS,mBAChBqW,IAAgBvoB,GAChBS,IAAWyK,KAEJgH,MAAS,YAChBqW,IAAgBvoB,IAAQqoB,GACxB5nB,IAAWyK,IAASmd,IAGdE,IAAgBD,IAAa7nB,IAAY;AACnD;AAEA,SAAS+nB,GAA+BC,GAAYC,GAAqBC,GAAmBN,GAAcO,GAAc;AACtH,MAAIC,IAAoB;AACxB,QAAMC,IAAmB,EAAC,OAAOJ,GAAqB,KAAKC,EAAiB;AAM5E,SAAAF,EAAW,QAAQ,CAACM,GAAMjyB,MAAU;AAClC,IAAA+xB,KAAqBE,EAAK;AAC1B,UAAMC,IAASD,EAAK;AAEpB,QAAIC,GAAQ;AACV,UAAI,SAASA,KACIP,EAAW3xB,IAAQ,CAAC,GAAG,SAE1B;AAEV,cAAMmyB,MADeL,IAAeG,EAAK,QAAQ,cAAcA,EAAK,QAAQ,iBAAiB,KACrDC,EAAO,MAAMX,GAO/Ca,IAAaL,IAAoBI,IAAoBF,EAAK,QAE1DI,IAAgBD,IAAaJ,EAAiB,OAE9CM,IAAmB,CAACD,KAAiBD,KAAcP;AAEzD,YAAIU,IAAc;AAClB,SAAIF,KAAiBC,OACnBC,IAAcN,EAAK,QACnBD,EAAiB,OAAOO,IAGtBF,MACFL,EAAiB,SAASO;AAAA,MAE9B;AAGF,UAAI,WAAWL,GAAQ;AAErB,cAAME,IAAaL,IAAoBG,EAAO,OAGxCG,IAAgBD,IAAaJ,EAAiB,OAE9CM,IAAmB,CAACD,KAAiBD,KAAcJ,EAAiB;AAE1E,YAAIO,IAAc;AAClB,cAAMvqB,IAAS2pB,EAAW3xB,IAAQ,CAAC,GAAG;AAEtC,YAAIgI,GAAQ;AACV,cAAIqqB,KAAiBC,GAAkB;AACrC,kBAAME,KAAcV,IAAe9pB,EAAO,cAAcA,EAAO,iBAAiB,GAC1EyqB,IAAgBR,EAAK,QACrBS,KAAeZ,IAAeG,EAAK,QAAQ,cAAcA,EAAK,QAAQ,iBAAiB;AAE7F,YAAAM,IAAcC,KAAcC,IAAgBC,IAC5CX,KAAqBQ,GACrBP,EAAiB,OAAOO;AAAA,UAC1B;AAEA,UAAIF,MACFL,EAAiB,SAASO;AAAA,QAE9B;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC,GAEMP;AACT;AAaA,SAASW,GAA+BC,GAAOve,GAAMkd,GAAcO,GAAcX,GAAuBQ,GAAY;AAClH,QAAM,EAAE,OAAAzoB,GAAO,KAAAC,GAAK,UAAAQ,EAAQ,IAAKipB;AAEjC,MAAI9H,IAAc5hB,GACd6hB,IAAY5hB,GACZ0pB,IAAaD,EAAM,YACnBE,IAAWF,EAAM,UACjBG;AAEJ,MAAI,OAAOppB,KAAa,UAAU;AAChC,IAAAkpB,IAAa,EAAE,MAAMlpB,GAAU,QAAQ,EAAC,GACxCmpB,IAAW,EAAE,MAAMnpB,GAAU,QAAQ,IAAG,GAExCmhB,IAAcwG,EAAyBuB,GAAYtB,GAAcld,CAAI,GACrE0W,IAAYuG,EAAyBwB,GAAUvB,GAAcld,CAAI,GACjE0e,IAAmBhI,IAAYD;AAE/B,UAAMkH,IAAmBN,GAA+BC,GAAY7G,GAAaC,GAAWwG,GAAcO,CAAY;AAEtH,IAAAhH,IAAckH,EAAiB,OAC/BjH,IAAYiH,EAAiB;AAAA,EAC/B,OACK;AACH,QAAIa,KAAc3pB,GAAO,MAAM;AAC7B,MAAA2pB,IAAaA,KAAc3pB;AAE3B,YAAM8pB,IAAW3B,GAAgCwB,EAAW,KAAK1B,CAAqB,GAChFS,IAAsBN,EAAyB,EAAC,GAAGuB,GAAY,QAAQ,EAAC,GAAGtB,GAAcld,CAAI,GAC7Fwd,IAAoBP,EAAyB,EAAC,GAAGuB,GAAY,QAAQ,IAAG,GAAGtB,GAAcld,CAAI,GAE7F2d,IAAmBN,GAA+BC,GAAYC,GAAqBC,GAAmBN,GAAcO,CAAY;AAEtI,MAAAhH,IAAckH,EAAiB,QAASa,EAAW,SAAS,OAAQb,EAAiB,MAAMA,EAAiB,SAASgB;AAAA,IACvH;AAEA,QAAIF,KAAY3pB,GAAK,MAAM;AACzB,MAAA2pB,IAAWA,KAAY3pB;AAEvB,YAAM8pB,IAAS5B,GAAgCyB,EAAS,KAAK3B,CAAqB,GAC5ES,IAAsBN,EAAyB,EAAC,GAAGwB,GAAU,QAAQ,EAAC,GAAGvB,GAAcld,CAAI,GAC3Fwd,IAAoBP,EAAyB,EAAC,GAAGwB,GAAU,QAAQ,IAAG,GAAGvB,GAAcld,CAAI,GAE3F2d,IAAmBN,GAA+BC,GAAYC,GAAqBC,GAAmBN,GAAcO,CAAY;AAEtI,MAAA/G,IAAYiH,EAAiB,QAASc,EAAS,SAAS,OAAQd,EAAiB,MAAMA,EAAiB,SAASiB;AAAA,IACnH,MACK,CAAI,OAAOtpB,KAAa,aAC3BohB,IAAYD,IAAcnhB;AAAA,EAE9B;AAEA,SAAI,CAACopB,KAAoB,CAACppB,MACxBopB,IAAmBhI,IAAYD,IAG1B,EAAC,GAAG8H,GAAO,OAAO9H,GAAa,KAAKC,GAAW,YAAA8H,GAAY,UAAAC,GAAU,UAAUC,KAAoBppB,EAAQ;AACpH;AAQA,SAASupB,GAAatf,GAAO;AAC3B,SAAOA,EAAM,aAAa;AAC5B;AAUA,SAASuf,GAAYvf,GAAO3L,GAAcmrB,GAAM;AAC9C,SAAOxf,EAAM,aAAa,YAAY,CAAC3L,KAAgBA,MAAiB,OAAO,SAAS,QAAQA,MAAiBmrB;AACnH;AASA,SAASC,GAAsBzf,GAAOke,GAAc;AAClD,SAAO,SAASA,IAAele,EAAM,OAAOA,EAAM,GAAG;AACvD;AASA,SAAS0f,GAAoB1f,GAAOke,GAAc;AAChD,SAAO,SAASA,IAAele,EAAM,QAAQA,EAAM,MAAM;AAC3D;AASA,SAAS2f,GAAcxrB,GAAS+pB,GAAc0B,GAAU;AAEtD,EAAIA,MACFzrB,EAAQ,MAAM,WAAW;AAG3B,QAAM6lB,KAAUkE,IAAe/pB,EAAQ,aAAaA,EAAQ,cAAc;AAE1E,SAAIyrB,MAEFzrB,EAAQ,MAAM,WAAW,OAGpB6lB;AACT;AAEA,SAAS6F,GAAe7f,GAAOke,GAAc;AAC3C,MAAII;AACJ,QAAMwB,IAAcL,GAAqBzf,GAAOke,CAAY,GACtD6B,IAAYL,GAAmB1f,GAAOke,CAAY,GAClD8B,IAAiB,CAAC,MAAMF,CAAW,GACnCG,IAAe,CAAC,MAAMF,CAAS;AAErC,UAAIC,KAAkBC,OACpB3B,IAAS,CAAA,GAEL0B,MACF1B,EAAO,QAAQwB,IAEbG,MACF3B,EAAO,MAAMyB,KAIVzB;AACT;AAYO,SAAS4B,GAA0BC,GAAQX,GAAM7B,GAAcO,GAAcX,GAAuB;AACzG,QAAMppB,IAAUgsB,EAAO,CAAC,EAAE,YACpBpC,IAAa,CAAA;AACnB,MAAIqC,KAAQlC,IAAe/pB,EAAQ,cAAcA,EAAQ,iBAAiB,GACtEksB,IAAqB,GACrBjsB,IAASD;AAEb,SAAOC,KAAQ;AACb,UAAMksB,IAAY,OAAO,iBAAiBlsB,CAAM,GAC1CwrB,IAAWN,GAAYgB,CAAS,GAChChC,IAASsB,IAAWC,GAAcS,GAAWpC,CAAY,IAAI,QAG7DxtB,IAASivB,GAAavrB,GAAQ8pB,GAAc0B,CAAQ;AAW1D,SARI,CAACtB,KAAU,EAAE,SAASA,QACxB+B,KAAsB3vB,IAGxBqtB,EAAW,KAAK,EAAC,SAAS3pB,GAAQ,QAAA1D,GAAQ,QAAA4tB,EAAM,CAAC,GAEjDlqB,IAASA,EAAO,cACAmrB,GAAWe,GAAWlsB,GAAQorB,CAAI;AAEhD;AACK,QAAIprB,MAAWorB,GAAM;AAC1B,MAAAzB,EAAW,KAAK,EAAC,SAAS3pB,GAAQ,QAAQ,EAAC,CAAC;AAC5C;AAAA,IACF;AAAA,EACF;AAEA,SAAA2pB,EAAW,QAAO,GAEQoC,EAAO,IAAI,CAAAnB,OAAU;AAAA,IAC7C,GAAGD;AAAA,MACDC;AAAA,MACA,EAAC,OAAOqB,GAAoB,KAAKA,IAAqBD,EAAI;AAAA,MAC1DzC;AAAA,MACAO;AAAA,MACAX;AAAA,MACAQ;AAAA,IACN;AAAA,EACA,EAAI;AAGJ;AC3WA,MAAMwC,KAA2B,KAM3BC,KAAW;AAAA,EACf,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,sBAAsB;AACxB;AAiBA,SAASC,GAAcrzB,GAAGkI,GAAOC,GAAKQ,GAAU;AAC9C,MAAIU,IAAW;AAEf,SAAIrJ,KAAKkI,KAASlI,KAAKmI,IACrBkB,IAAWV,KAAY3I,IAAIkI,KAASS,IAAW,IAExC3I,IAAImI,MACXkB,IAAW,IAGNA;AACT;AAQA,SAASiqB,GAAiBlB,GAAMtB,GAAc;AAC5C,SAAIsB,MAAS,SACJtB,IACD,OAAO,SAAS,gBAAgB,cAChC,OAAO,SAAS,gBAAgB,eAGjCA,IAAesB,EAAK,cAAcA,EAAK;AAChD;AAEA,SAASmB,KAA4B;AAEnC,SAAO;AAAA,IACL,eAAe,OAAO,SAAS,gBAAgB;AAAA,IAC/C,gBAAgB,OAAO,SAAS,gBAAgB;AAAA,EACpD;AACA;AAaO,SAASC,GAAe/mB,GAAQ;AACrC,QAAMgnB,IAAUrE,GAAU3iB,GAAQ2mB,EAAQ,GACpChB,IAAOqB,EAAQ,MACfC,IAAaD,EAAQ,YACrBE,IAAkB,oBAAI,QAAO;AACnC,MAAIpD,IAAe+C,GAAgBlB,GAAMsB,CAAU,GAE/CE,GACAC,GAAkBC,GAAsBC,GAAuBC;AACnE,QAAMC,IAAkB,CAAA,GAClB9D,IAAwBoD,GAAwB;AAsCtD,MAjCAE,EAAQ,SAAS,OAAO;AAAA;AAAA,IAEtBhnB,EAAO,OAAO;AAAA,MAAO,CAACynB,GAAKtC,GAAO5yB,MAAU;AAC1C,cAAMN,IAAMkzB,EAAM,UAAU,SAASA,EAAM,OAAO,KAAK,OAAO5yB,CAAK;AACnE,eAAIk1B,EAAIx1B,CAAG,IACTw1B,EAAIx1B,CAAG,EAAE,KAAKkzB,CAAK,IAEnBsC,EAAIx1B,CAAG,IAAI,CAACkzB,CAAK,GAEZsC;AAAA,MACT;AAAA,MACA,CAAA;AAAA,IAAE;AAAA,EACN,EAAI,QAAQ,CAAAC,OACJA,EAAW,MAAM,CAAAvC,MAAUA,EAAM,eAAe,OAAOA,EAAM,YAAa,YAAYA,EAAM,OAAO,KAAM,KAC3GuC,IAAarB,GAAyBqB,GAAY/B,GAAM7B,GAAcmD,GAAYvD,CAAqB,IACnGsD,EAAQ,wBAAwBA,EAAQ,yBAC1CQ,EAAgB,KAAKE,CAAU,KAGjCA,EAAW,QAAQ,CAAAvC,MAAS;AAC1B,IAAIA,EAAM,OAAO,SACfA,EAAM,MAAMA,EAAM,QAAQA,EAAM,WAE9BA,EAAM,YAAY,SACpBA,EAAM,WAAWA,EAAM,MAAMA,EAAM;AAAA,EAEvC,CAAC,GAGIuC,EACR,GACDV,EAAQ,OAAO,QAAQ,CAAC7B,GAAO5yB,MAAU;AAAC,IAAA4yB,EAAM,QAAQ5yB;AAAA,EAAM,CAAC,GAE3Di1B,EAAgB,QAAQ;AAC1B,UAAMG,IAAqB,oBAAI,IAAG;AAElC,IAAI,OAAO,mBAITN,IAAuB,IAAI,OAAO,eAAe,SAAUpF,GAAS;AAClE,MAAAA,EAAQ,QAAQ,CAAAC,MAAS;AACvB,cAAMwF,IAAaC,EAAmB,IAAIzF,EAAM,MAAM,GAEhD0F,IAAwBvB,GAAyBqB,GAAY/B,GAAM7B,GAAcmD,GAAYvD,CAAqB;AACxH,QAAAkE,EAAsB,QAAQ,CAACzC,GAAO0C,MAAe;AAAC,UAAAb,EAAQ,OAAO7B,EAAM,KAAK,IAAIyC,EAAsBC,CAAU;AAAA,QAAE,CAAC,GAEvHL,EAAgB,OAAOA,EAAgB,QAAQE,CAAU,GAAG,GAAGE,CAAqB;AAAA,MACtF,CAAC;AAAA,IACH,CAAC,GAEDJ,EAAgB,QAAQ,CAAAE,MAAc;AACpC,MAAAL,EAAqB,QAAQK,EAAW,CAAC,EAAE,YAAY,EAAC,KAAK,aAAY,CAAC,GAC1EC,EAAmB,IAAID,EAAW,CAAC,EAAE,YAAYA,CAAU;AAAA,IAC7D,CAAC,GAKGV,EAAQ,wBAAwBA,EAAQ,eACZ,IAAI,OAAO,eAAe3D,GAAS,MAAM;AACrE,YAAMyE,IAAYN,EAAgB,IAAI,CAAAE,MAAc;AAClD,cAAMK,IAAgB1B,GAAyBqB,GAAY/B,GAAM7B,GAAcmD,GAAYvD,CAAqB;AAChH,eAAAqE,EAAc,QAAQ,CAAC5C,GAAO0C,MAAe;AAAC,UAAAb,EAAQ,OAAO7B,EAAM,KAAK,IAAI4C,EAAcF,CAAU;AAAA,QAAE,CAAC,GAEhGE;AAAA,MACT,CAAC;AAGD,MAAAP,EAAgB,SAAS,GACzBA,EAAgB,KAAK,GAAGM,CAAS,GACjCN,EAAgB,QAAQ,CAAAE,MAAc;AACpC,QAAAC,EAAmB,IAAID,EAAW,CAAC,EAAE,YAAYA,CAAU;AAAA,MAC7D,CAAC;AAAA,IACH,GAAGhB,EAAwB,CAAC,EAEN,QAAQM,EAAQ,aAAa,EAAC,KAAK,aAAY,CAAC,IAItEA,EAAQ,0BACVM,IAAwBjE,GAAS,WAAY;AAC3C,MAAAS,IAAe+C,GAAgBlB,GAAMsB,CAAU;AAE/C,YAAMa,IAAYN,EAAgB,IAAI,CAAAE,MAAc;AAClD,cAAMK,IAAgB1B,GAAyBqB,GAAY/B,GAAM7B,GAAcmD,GAAYvD,CAAqB;AAChH,eAAAqE,EAAc,QAAQ,CAAC5C,GAAO0C,MAAe;AAAC,UAAAb,EAAQ,OAAO7B,EAAM,KAAK,IAAI4C,EAAcF,CAAU;AAAA,QAAE,CAAC,GAEhGE;AAAA,MACT,CAAC;AAGD,MAAAP,EAAgB,SAAS,GACzBA,EAAgB,KAAK,GAAGM,CAAS,GACjCN,EAAgB,QAAQ,CAAAE,MAAc;AACpC,QAAAC,EAAmB,IAAID,EAAW,CAAC,EAAE,YAAYA,CAAU;AAAA,MAC7D,CAAC;AAAA,IACH,GAAGhB,EAAwB,GAEvBf,MAAS,SACX,OAAO,iBAAiB,UAAU2B,CAAqB,IAEhD,OAAO,mBACdC,IAA2B,IAAI,OAAO,eAAeD,CAAqB,GAC1EC,EAAyB,QAAQ5B,GAAM,EAAC,KAAK,aAAY,CAAC;AAAA,EAGhE;AAKA,EAAIqB,EAAQ,wBAAwB,OAAO,yBACzCI,IAAmB,IAAI,OAAO,qBAAqB,SAAUY,GAAe;AAC1E,IAAAA,EAAc,QAAQ,CAAAC,MAAgB;AACpC,OAACf,EAAgB,IAAIe,EAAa,MAAM,KAAK,CAAA,GAAI,QAAQ,CAAA9C,MAAS;AAChE,QAAAA,EAAM,WAAW,CAAC8C,EAAa;AAAA,MACjC,CAAC;AAAA,IACH,CAAC;AAAA,EACH,GAAG;AAAA,IACD,MAAMtC,MAAS,SAAS,OAAO,WAAWA;AAAA,IAC1C,YAAYqB,EAAQ;AAAA,IACpB,WAAW;AAAA,EACjB,CAAK,GAEDA,EAAQ,OAAO,QAAQ,CAAA7B,MAAS;AAC9B,QAAIA,EAAM,YAAY;AACpB,UAAI+C,IAAchB,EAAgB,IAAI/B,EAAM,UAAU;AAEtD,MAAK+C,MACHA,IAAc,CAAA,GACdhB,EAAgB,IAAI/B,EAAM,YAAY+C,CAAW,GAEjDd,EAAiB,QAAQjC,EAAM,UAAU,IAG3C+C,EAAY,KAAK/C,CAAK;AAAA,IACxB;AAAA,EACF,CAAC;AAWH,WAASgD,EAAM,EAAC,GAAA50B,GAAG,IAAA60B,EAAE,GAAG;AACtB,IAAA70B,IAAI,CAACA,EAAE,QAAQ,CAAC;AAEhB,UAAM80B,IAAW,CAACD,EAAG,QAAQ,CAAC;AAG9B,QAAI70B,MAAM4zB,GAKV;AAAA,eAAShC,KAAS6B,EAAQ;AAExB,YAAI,CAAC7B,EAAM,UAAU;AACnB,gBAAM,EAAC,OAAA1pB,GAAO,KAAAC,GAAK,UAAAQ,EAAQ,IAAIipB,GAEzBvoB,IAAWgqB,GAAarzB,GAAGkI,GAAOC,GAAKQ,CAAQ;AAGrD,UAAAipB,EAAM,OAAOA,GAAOvoB,GAAUyrB,CAAQ;AAAA,QACxC;AAIF,MAAAlB,IAAQ5zB;AAAA;AAAA,EACV;AAKA,WAAS+0B,IAAW;AAClB,IAAAtB,EAAQ,OAAO,QAAQ,CAAA7B,MAASA,EAAM,UAAO,CAAI,GAE7CiC,MACFA,EAAiB,WAAU,GAC3BA,IAAmB,OAGjBC,MACFA,EAAqB,WAAU,GAC/BA,IAAuB,OAGrBC,MACEC,KACFA,EAAyB,WAAU,GACnCA,IAA2B,QAG3B,OAAO,oBAAoB,UAAUD,CAAqB;AAAA,EAGhE;AAKA,SAAO;AAAA,IACL,MAAAa;AAAA,IACA,SAAAG;AAAA,EACJ;AACA;AC5SA,MAAM3B,KAAW;AAAA,EACf,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,aAAa;AACf;AAcO,MAAM4B,GAAO;AAAA,EAClB,YAAavoB,IAAS,IAAI;AACxB,SAAK,SAAS2iB,GAAU3iB,GAAQ2mB,EAAQ,GAExC,KAAK,WAAW;AAAA,MACd,GAAG;AAAA,MACH,OAAO;AAAA,MACP,IAAI;AAAA,IACV,GACI,KAAK,kBAAkB;AAAA,MACrB,GAAG;AAAA,MACH,OAAO;AAAA,MACP,IAAI;AAAA,IACV,GAEI,KAAK,eAAe,GACpB,KAAK,SAAS;AACd,UAAM6B,IAAkB,CAAC,KAAK,OAAO,QAAQ,KAAK,OAAO,SAAS,OAAO,SAAS;AAElF,SAAK,OAAO,OAAOA,IAAiB,SAAS,KAAK,OAAO,MACzD,KAAK,OAAO,cAAc,KAAK,OAAO,gBAAgBA,IAAiB,OAAO,SAAS,OAAO,KAAK,OAAO,KAAK,oBAC/G,KAAK,OAAO,gBAAgB,KAAK,OAAO,iBAAiB,KAAK,cAAc,KAAK,IAAI,GAErF,KAAK,WAAW,KAAK,OAAO,YAAY,MAAM;AAC5C,YAAM7C,IAAO,KAAK,OAAO;AAEzB,WAAK,SAAS,IAAI,KAAK,OAAO,aAC1BA,EAAK,WAAWA,EAAK,cAAc,IACnCA,EAAK,WAAWA,EAAK,aAAa;AAAA,IACxC,IAEA,KAAK,WAAWxC,GAAc,MAAM;AAClC,WAAK,WAAQ,GACb,KAAK,KAAK,EAAI;AAAA,IAChB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,QAAS;AACP,SAAK,YAAW,GAChB,KAAK,WAAU,GACf,KAAK,cAAa,GAClB,KAAK,KAAI;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,QAAS;AACP,SAAK,YAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAesF,IAAiB,IAAI;AAElC,UAAM9C,IAAO,KAAK,OAAO,MACnB7sB,IAAI2vB,EAAe,KAAKA,EAAe,MAAM,IAAIA,EAAe,IAAI9C,EAAK,WAAWA,EAAK,cAAc,GACvG5sB,IAAI0vB,EAAe,KAAKA,EAAe,MAAM,IAAIA,EAAe,IAAI9C,EAAK,WAAWA,EAAK,aAAa,GACtGpyB,IAAI,KAAK,OAAO,aAAauF,IAAIC;AACvC,SAAK,SAAS,IAAIxF,GAClB,KAAK,SAAS,QAAQA,GACtB,KAAK,SAAS,KAAK,GAEd,KAAK,OAAO,qBACf,KAAK,gBAAgB,IAAIA,GACzB,KAAK,gBAAgB,QAAQA,GAC7B,KAAK,gBAAgB,KAAK,IAGxBk1B,KACF,KAAK,OAAO,KAAK,SAAS3vB,GAAGC,CAAC;AAAA,EAElC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAM2vB,GAAgB;AACpB,UAAMC,IAAU,KAAK,OAAO;AAG5B,IAAIA,KACF,KAAK,KAAI;AAIX,UAAM/rB,IAAW+rB,IAAU,KAAK,kBAAkB,KAAK;AAEvD,QAAI,KAAK,OAAO,gBAAgB;AAC9B,YAAMC,IAAKhsB,EAAS,IAAIA,EAAS,OAC3BisB,IAAUD,IAAK,IAAI,KAAK;AAC9B,MAAAhsB,EAAS,KAAK,KAAK,IAAI,KAAK,OAAO,aAAa,KAAK,IAAIgsB,CAAE,CAAC,IAAI,KAAK,OAAO,cAAcC;AAAA,IAC5F;AAGA,SAAK,OAAO,KAAKjsB,CAAQ,GAErB+rB,KAAY/rB,EAAS,MAAM,KAAK,SAAS,MACvC8rB,KAAkB,KAAK,gBACzB,OAAO,qBAAqB,KAAK,YAAY,GAG/C,KAAK,eAAe,OAAO,sBAAsB,MAAM,KAAK,MAAM,IAGpE9rB,EAAS,QAAQA,EAAS;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAQ;AACN,SAAK,gBAAgB,IAAIkmB,GAAK,KAAK,gBAAgB,GAAG,KAAK,SAAS,GAAG,EAAE,IAAI,KAAK,OAAO,oBAAoB,QAAQ,CAAC,GAAG,KAAK,OAAO,iBAAiB;AAAA,EACxJ;AAAA;AAAA;AAAA;AAAA,EAKA,UAAW;AACT,SAAK,MAAK,GACV,KAAK,aAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAc;AACZ,SAAK,YAAW,GAChB,KAAK,OAAO,KAAK,iBAAiB,UAAU,KAAK,QAAQ;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA,EAKA,cAAe;AACb,SAAK,OAAO,KAAK,oBAAoB,UAAU,KAAK,QAAQ;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA,EAKA,cAAe;AACb,SAAK,aAAY,GACjB,KAAK,SAASiE,GAAc,KAAK,MAAM;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAKA,eAAgB;AACd,SAAK,UAAU,KAAK,OAAO,QAAO,GAClC,KAAK,SAAS;AAAA,EAChB;AACF;ACnLA,MAAM+B,yBAAuB,QAAA;AAC7B,IAAIC,KAAmD,OAAO,CAAA;AAE9D,SAASC,GAAsBC,GAAqC;AAClE,EAAAF,KAAsBE;AACxB;AAEA,SAASC,GACPhO,GACArnB,GACA6I,GACAkiB,GACA,EAAE,eAAAG,KACI;AACN,MAAIA;AACF;AAGF,QAAMoK,IAAgB;AAAA,IACpB,SAAS;AAAA,IACT,SAASjO;AAAA,EAAA,GAGL1e,IAAgBqkB,EAAyBnkB,CAAM;AACrD,MAAI4kB;AACJ,MAAI,kBAAkB,QAAQ;AAE5B,UAAM8H,IAAiBvM;AAAA,MACrBhpB;AAAA,MACA2I;AAAA,MACA2sB;AAAA,IAAA;AAGF,IAAIC,MACFA,EAAe,KAAA,GAEf9H,IAAU,MAAM;AACb,MAAA8H,EAAkC,MAAM,KAAK,MAAM;AAClD,QAAAA,EAAe,OAAA;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,EAEJ,OAAO;AACL,UAAMjE,IAAQhH,GAActqB,GAAQ2I,GAAe2sB,CAAa;AAEhE,QAAIhE,GAAO;AACT,YAAMmB,IAAS,MAAM,QAAQnB,CAAK,IAAIA,IAAQ,CAACA,CAAK,GAC9CkE,IAAS,IAAId,GAAO;AAAA,QACxB,YAAYrN;AAAA,QACZ,QAAAoL;AAAA,QACA,sBAAsB;AAAA,QACtB,uBAAuB;AAAA,QACvB,sBAAsB;AAAA,QACtB,MAAM,SAAS;AAAA,QACf,GAAGyC,GAAA;AAAA,MAAoB,CACxB;AAED,MAAAzH,IAAU,MAAM;AACd,QAAA+H,EAAO,QAAA;AAAA,MACT,GAEA,QAAQ;AAAA,QACL/C,EAA8B,IAAI,CAACgD,MAAMA,EAAE,SAAS,QAAQ,SAAS;AAAA,MAAA,EACtE,KAAK,MAAM;AACX,QAAAD,EAAO,MAAA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAG,CAAC/H,EAAS;AAEb,QAAMJ,IAAa,EAAE,QAAAhG,GAAQ,QAAArnB,GAAQ,SAAAytB,EAAA;AAErC,EAAAN,EAAgB8H,IAAkB5N,GAAQgG,CAAU,GACpDF,EAAgB8H,IAAkBj1B,GAAQqtB,CAAU;AACtD;AAEA,SAASqI,GAA0BjvB,GAA4B;AAC7D,EAAA8mB,EAA4B0H,IAAkBxuB,CAAO;AACvD;AAEA,MAAAkvB,KAAe;AAAA,EACb,KAAKN;AAAA,EACL,QAAQK;AAAA,EAAA,uBACRP;AACF,GC7EM3H,yBAAiB,QAAA;AAEvB,SAASoI,GACPnvB,GACAoC,GACAvJ,GACA4rB,IAAyB,IACzBU,GACA;AACA,QAAMnsB,IAAYwrB;AAAA,IAChBxkB;AAAA,IACAumB,EAAyBnkB,CAAM;AAAA,IAC/B;AAAA,IACAqiB;AAAA,EAAA,GAEI9lB,IAAO9F,EAAQ,QAAQ;AAC7B,MAAIu2B,IAAc;AAElB,SAAO,CAAClsB,MAAmC;AACzC,IAAIiiB,KAAqB,CAACnlB,EAAQ,QAAQmlB,CAAiB,MACvDjiB,EAAM,SAAS,gBAAgBA,EAAM,SAAS,YAC5CvE,MAAS,cACPywB,KACFA,IAAc,IACdp2B,EAAU,KAAA,KAEVA,EAAU,QAAA,IAEH2F,MAAS,UACd3F,EAAU,cAAc,cAE1BA,EAAU,KAAA,KAKZA,EAAU,SAAS,CAAC,GAEhBA,EAAU,SACZA,EAAU,SAAS,MAAM;AACvB,MAAAgH,EAAQ,QAAQ,cAAc;AAAA,IAChC,CAAC,GAGHhH,EAAU,KAAA,MAEHkK,EAAM,SAAS,gBAAgBA,EAAM,SAAS,gBACnDvE,MAAS,cACX3F,EAAU,QAAA,IACD2F,MAAS,YAClB3F,EAAU,OAAA,GACV,OAAOgH,EAAQ,QAAQ,eACdrB,MAAS,WACd3F,EAAU,cAAc,aAC1BA,EAAU,MAAA;AAAA,EAIlB;AACF;AAEA,SAASq2B,GACPrvB,GACAsvB,GACA;AAAA,EACE,UAAAtN;AAAA,EACA,eAAAuN;AAAA,EACA,kBAAAC;AACF,GACA32B,GACAssB,GACA;AACA,QAAMsK,IAAS52B,EAAQ,UAAU,UAC3B62B,IAAWD,MAAW,UACtBE,IAA0B,CAAC,CAACJ;AAElC,SAAO,CAACrsB,MAAmC;AACzC,QAAIiiB,KAAqB,CAACnlB,EAAQ,QAAQmlB,CAAiB,EAAG;AAC9D,QAAIxE;AAOJ,QANIgP,MACFhP,IAAO3gB,EAAQ;AAAA,MACb,GAAGuvB,CAAa,MAAMC,KAAoB,EAAE;AAAA,IAAA,IAI5CtsB,EAAM,SAAS,gBAAgBA,EAAM,SAAS,WAAW;AAC3D,YAAM0sB,IAAUF,IAAW,QAAQD;AACnC,MAAAH,EAAiB,aAAatN,GAAU4N,GAASjP,CAAI;AAAA,IACvD,QAAYzd,EAAM,SAAS,gBAAgBA,EAAM,SAAS,eAAewsB,KACvEJ,EAAiB,aAAatN,GAAU,UAAUrB,CAAI;AAAA,EAE1D;AACF;AAEA,SAASkP,GACPjP,GACArnB,GACA6I,GACAvJ,IAA8C,IAC9C,EAAE,eAAA4rB,GAAe,kBAAA6K,GAAkB,mBAAAnK,GAAmB,mBAAA2K,EAAA,GACtD;AACA,MAAI7H,GACA8H,IAAiB,IACjBC,IAAO;AAEX,EACG5tB,EAA4B,cAC5BA,EAA4B,wBAE7B6lB,IAAUoH;AAAAA,IACR91B;AAAA,IACA+1B;AAAA,IACAltB;AAAA,IACAvJ;AAAA,IACAssB;AAAA,EAAA,GAEF4K,IAAiB,OAEjB9H,IAAUkH;AAAAA,IACR51B;AAAA,IACA6I;AAAA,IACAvJ;AAAA,IACA4rB;AAAA,IACAU;AAAA,EAAA,GAEF6K,IAAQn3B,EAAiC,SAAS;AAYpD,QAAM+tB,IAAa,EAAE,QAAAhG,GAAQ,QAAArnB,GAAQ,SATrB,MAAM;AACpB,IAAAqnB,EAAO,oBAAoB,cAAcqH,CAAO,GAChDrH,EAAO,oBAAoB,cAAcqH,CAAO,GAC5C6H,MACFlP,EAAO,oBAAoB,WAAWqH,CAAO,GAC7CrH,EAAO,oBAAoB,YAAYqH,CAAO;AAAA,EAElD,EAEqC;AAErC,EAAAvB,EAAgBK,IAAYnG,GAAQgG,CAAU,GAC9CF,EAAgBK,IAAYxtB,GAAQqtB,CAAU,GAE1CkJ,MACFlP,EAAO,WAAW,GAClBA,EAAO;AAAA,IACL;AAAA,IACA,CAAC1d,MAAU;AACT,MAAK0d,EAAO,SAAS1d,EAAM,aAA4B,KACrD+kB,EAAQ/kB,CAAK;AAAA,IAEjB;AAAA,IACA,EAAE,MAAA8sB,EAAA;AAAA,EAAK,IAIXpP,EAAO,iBAAiB,cAAcqH,GAAS,EAAE,SAAS,IAAM,MAAA+H,GAAM,IAErDD,KACXl3B,EAAwB,UAAU,cAAc,WACjDA,EAAiC,SAAS,YAE7C+nB,EAAO,iBAAiB,cAAcqH,GAAS,EAAE,SAAS,IAAM,GAE5D6H,KACFlP,EAAO;AAAA,IACL;AAAA,IACA,CAAC1d,MAAU;AACT,MAAK0d,EAAO,SAAS1d,EAAM,aAA4B,KACrD+kB,EAAQ/kB,CAAK;AAAA,IAEjB;AAAA,IACA,EAAE,MAAA8sB,EAAA;AAAA,EAAK;AAIf;AAEA,SAASC,GAAmBjwB,GAAsB;AAChD,EAAA8mB,EAA4BC,IAAY/mB,CAAO;AACjD;AAEA,MAAAkwB,KAAe;AAAA,EACb,KAAKL;AAAA,EACL,QAAQI;AACV,GCxLMlJ,yBAAiB,QAAA;AAEvB,SAASoI,GACPnvB,GACAoC,GACAvJ,GACA4rB,IAAyB,IACzBU,GACA;AACA,QAAMnsB,IAAYwrB;AAAA,IAChBxkB;AAAA,IACAumB,EAAyBnkB,CAAM;AAAA,IAC/B;AAAA,IACAqiB;AAAA,EAAA;AAEF,MAAI2K,IAAc;AAClB,QAAMzwB,IAAO9F,EAAQ,QAAQ;AAE7B,SAAO,CAACyrB,MAAmC;AACzC,IAAIa,KAAqB,CAACnlB,EAAQ,QAAQmlB,CAAiB,MACvDxmB,MAAS,cACPywB,KACFA,IAAc,IACdp2B,EAAU,KAAA,KAEVA,EAAU,QAAA,IAEH2F,MAAS,UACdywB,KACFA,IAAc,IACdp2B,EAAU,KAAA,KAENA,EAAU,cAAc,YAC1BA,EAAU,MAAA,IACDA,EAAU,cAAc,cAEjCA,EAAU,KAAA,KAMdA,EAAU,SAAS,CAAC,GAEhBA,EAAU,SACZA,EAAU,SAAS,MAAM;AACvB,MAAAgH,EAAQ,QAAQ,cAAc;AAAA,IAChC,CAAC,GAGHhH,EAAU,KAAA;AAAA,EAEd;AACF;AAEA,SAASq2B,GACPrvB,GACAsvB,GACA;AAAA,EACE,UAAAtN;AAAA,EACA,eAAAuN;AAAA,EACA,kBAAAC;AACF,GACA32B,GACAssB,GACA;AACA,QAAMwK,IAA0B,CAAC,CAACJ;AAElC,SAAO,CAACjL,MAAmC;AACzC,QAAIa,KAAqB,CAACnlB,EAAQ,QAAQmlB,CAAiB,EAAG;AAC9D,QAAIxE;AACJ,IAAIgP,MACFhP,IAAO3gB,EAAQ;AAAA,MACb,GAAGuvB,CAAa,MAAMC,KAAoB,EAAE;AAAA,IAAA,IAIhDF,EAAiB,aAAatN,GAAUnpB,EAAQ,UAAU,UAAU8nB,CAAI;AAAA,EAC1E;AACF;AAEA,SAASwP,GACPvP,GACArnB,GACA6I,GACAvJ,IAA8C,IAC9C,EAAE,eAAA4rB,GAAe,kBAAA6K,GAAkB,mBAAAnK,GAAmB,mBAAA2K,EAAA,GACtD;AACA,MAAI7H,GACA+H,IAAO;AAEX,EACG5tB,EAA4B,cAC5BA,EAA4B,uBAE7B6lB,IAAUoH;AAAA,IACR91B;AAAA,IACA+1B;AAAA,IACAltB;AAAA,IACAvJ;AAAA,IACAssB;AAAA,EAAA,KAGF8C,IAAUkH;AAAA,IACR51B;AAAA,IACA6I;AAAA,IACAvJ;AAAA,IACA4rB;AAAA,IACAU;AAAA,EAAA,GAEF6K,IAAQn3B,EAAiC,SAAS;AAUpD,QAAM+tB,IAAa,EAAE,QAAAhG,GAAQ,QAAArnB,GAAQ,SAPrB,MAAM;AACpB,IAAAqnB,EAAO,oBAAoB,SAASqH,CAAO,GACvC6H,KACFlP,EAAO,oBAAoB,WAAWqH,CAAO;AAAA,EAEjD,EAEqC;AAErC,EAAAvB,EAAgBK,IAAYnG,GAAQgG,CAAU,GAC9CF,EAAgBK,IAAYxtB,GAAQqtB,CAAU,GAE9ChG,EAAO;AAAA,IACL;AAAA,IACA,CAACtoB,MAAM;AACL,MAAKA,EAAmB,eACtB2vB,EAAQ3vB,CAAC;AAAA,IAEb;AAAA,IACA,EAAE,SAAS,IAAM,MAAA03B,EAAA;AAAA,EAAK,GAGpBF,MACFlP,EAAO,WAAW,GAElBA,EAAO;AAAA,IACL;AAAA,IACA,CAAC1d,MAAyB;AACxB,MAAIA,EAAM,SAAS,WACjBA,EAAM,eAAA,GACN+kB,EAAQ/kB,CAAK,KACJA,EAAM,SAAS,WACxB+kB,EAAQ/kB,CAAK;AAAA,IAEjB;AAAA,IACA,EAAE,MAAA8sB,EAAA;AAAA,EAAK;AAGb;AAEA,SAASI,GAAmBpwB,GAAsB;AAChD,EAAA8mB,EAA4BC,IAAY/mB,CAAO;AACjD;AAEA,MAAAqwB,KAAe;AAAA,EACb,KAAKF;AAAA,EACL,QAAQC;AACV;ACtKA,SAASE,GAAOC,GAAKC,GAAKrxB,GAAO;AAC/B,SAAO,KAAK,IAAI,KAAK,IAAIoxB,GAAKpxB,CAAK,GAAGqxB,CAAG;AAC3C;AAWA,SAAS3H,GAAe9I,GAAI;AAC1B,MAAI+I,IAAY;AAEhB,SAAO,WAAY;AACjB,QAAI,CAACA;AACH,aAAAA,IAAY,IAEL,OAAO,sBAAsB,MAAM;AACxC,QAAAA,IAAY,IACZ/I,EAAE;AAAA,MACJ,CAAC;AAAA,EAEL;AACF;AASA,SAAS0Q,GAASzwB,GAAS;AACzB,MAAI0wB,IAAK1wB,GACLlD,IAAO,GACPF,IAAM;AAEV,MAAI8zB,EAAG;AACL;AACE,MAAA5zB,KAAQ4zB,EAAG,YACX9zB,KAAO8zB,EAAG,WACVA,IAAKA,EAAG;AAAA,WACDA;AAGX,SAAO;AAAA,IACL,MAAA5zB;AAAA,IACA,KAAAF;AAAA,IACA,OAAOoD,EAAQ;AAAA,IACf,QAAQA,EAAQ;AAAA,EACpB;AACA;AAKA,SAAS2wB,KAA2B;AAClC,QAAMC,IAAM,OAAO;AACnB,MAAIC,IAAc;AAElB,MAAID,MAAQ;AAEV,WAAO;AAGT,WAAS,KAAK,iBAAiB,eAAe,CAACt4B,MAAM;AACnD,IAAAu4B,IAAcv4B,EAAE,YAAY;AAAA,EAC9B,GAAG,EAAE,MAAM,IAAM;AAEjB,QAAM4K,IAAQ,IAAI,aAAa,eAAe;AAAA,IAC5C,SAAS;AAAA,EACb,CAAG;AAED,kBAAS,KAAK,cAAcA,CAAK,GAE1B2tB;AACT;AAEA,SAASC,KAA8B;AACrC,SAAO,IAAI,QAAQ,CAACzN,MAAY;AAC9B,UAAM0N,IAAS,OAAO;AACtB,QAAIF,IAAc,IACdG;AAEJ,aAASC,IAAiB;AACxB,eAAS,KAAK,iBAAiB,eAAe,CAAC34B,MAAM;AACnD,QAAI04B,MAAa,SACfA,IAAW14B,EAAE,UAGbu4B,IAAcv4B,EAAE,YAAY04B;AAAA,MAEhC,GAAG,EAAE,MAAM,IAAM;AAEjB,YAAM9tB,IAAQ,IAAI,aAAa,eAAe;AAAA,QAC5C,SAAS;AAAA,MACjB,CAAO;AAED,eAAS,KAAK,cAAcA,CAAK;AAAA,IACnC;AAEA,aAASguB,IAAiB;AACxB,MAAI,OAAO,YAAYH,MACrB,OAAO,oBAAoB,UAAUG,CAAa,GAClDD,EAAa,GACb5N,EAAQwN,CAAW;AAAA,IAEvB;AAEA,IAAAI,EAAa,GAEb,OAAO,iBAAiB,UAAUC,CAAa,GAE3C,OAAO,UAAU,KACnB,OAAO,SAAS,GAAG,EAAE;AAAA,EAEzB,CAAC;AACH;AAKA,SAASC,GAAsCC,GAAe;AAC5D,EAAAN,GAA0B,EAAG,KAAK,CAACD,MAAgB;AACjD,IAAAO,EAAc,cAAcP,GAExBA,MACF,OAAO,iBAAiB,UAAUO,EAAc,aAAa,GAC7DA,EAAc,cAAa;AAAA,EAE/B,CAAC;AACH;AClJA,IAAIC,KAAY;AAChB,MAAMC,KAAW,oBAAI,IAAG;AAExB,SAASC,KAAyB;AAChC,QAAMC,IAAoB,CAAAl5B,MAAK;AAC7B,aAASm5B,KAASn5B,EAAE;AAClB,MAAAg5B,GAAS,IAAIG,EAAM,UAAU;AAAA,EAEjC,GACMC,IAAkB,CAAAp5B,MAAK;AAC3B,aAASm5B,KAASn5B,EAAE;AAClB,MAAAg5B,GAAS,OAAOG,EAAM,UAAU;AAAA,EAEpC;AAEA,kBAAS,iBAAiB,cAAcD,GAAmB,EAAC,SAAS,GAAI,CAAC,GAC1E,SAAS,iBAAiB,YAAYE,GAAiB,EAAC,SAAS,GAAI,CAAC,GAE/D,WAAY;AACjB,IAAAJ,GAAS,MAAK,GACd,SAAS,oBAAoB,cAAcE,CAAiB,GAC5D,SAAS,oBAAoB,YAAYE,CAAe;AAAA,EAC1D;AACF;AAEO,SAASC,GAAsBp4B,GAAQ0J,GAAU;AACtD,MAAI,iBAAiB;AACnB,WAAA1J,EAAO,iBAAiB,aAAa0J,CAAQ,GAEtC,WAAY;AACjB,MAAA1J,EAAO,oBAAoB,aAAa0J,CAAQ;AAAA,IAClD;AAGF,MAAI2uB,IAAU,GACVC;AAEJ,EAAKR,OACHQ,IAA0BN,GAAqB,IAGjDF,MAAa;AAEb,WAASS,EAAgBC,GAAK;AAC5B,iBAAaH,CAAO,GACpBA,IAAU,WAAW,MAAM;AACzB,MAAIN,GAAS,OAEX,WAAWQ,GAAgB,GAAG,KAI9B7uB,EAAS8uB,CAAG,GACZH,IAAU;AAAA,IAEd,GAAG,GAAG;AAAA,EACR;AAEA,SAAAr4B,EAAO,iBAAiB,UAAUu4B,CAAc,GAEzC,WAAY;AACjB,IAAAv4B,EAAO,oBAAoB,UAAUu4B,CAAc,GACnDT,MAAa,GAERA,MACHQ,EAAuB;AAAA,EAE3B;AACF;ACnDA,SAASG,GAAuBz4B,GAAQ8xB,GAAM8C,GAAgB;AAG5D,SAAO;AAAA,IACL,EAAGnyB,GAAI;AACL,YAAMi2B,IAAe14B,EAAO,OAAO40B,EAAe,IAAI50B,EAAO,QAAQ,GAC/D24B,IAAmBD,KAAgB5G,EAAK,QAAQ,GAEhD8G,KAAaD,IAAmBD,IAAe5G,EAAK,QAAQ4G,KAAgB,GAC5EG,IAAKF,IAAmB,IAAID,IAAeE,IAAY;AAE7D,cAAQn2B,IAAKo2B,KAAMD;AAAA,IACrB;AAAA,IACA,EAAGl2B,GAAI;AACL,YAAMo2B,IAAe94B,EAAO,MAAM40B,EAAe,IAAI50B,EAAO,SAAS,GAC/D+4B,IAAmBD,KAAgBhH,EAAK,SAAS,GAEjDkH,KAAaD,IAAmBD,IAAehH,EAAK,SAASgH,KAAgB,GAC7EG,IAAKF,IAAmB,IAAID,IAAeE,IAAY;AAE7D,cAAQt2B,IAAKu2B,KAAMD;AAAA,IACrB;AAAA,EACJ;AACA;AAMA,SAASE,GAAmB5E,GAAM6E,GAAc;AAC9C,OAAK,IAAI,OAAO,SAChB,KAAK,IAAI,OAAO,SAEhB,sBAAsB,MAAM7E,KAAQA,EAAK6E,CAAY,CAAC;AACxD;AAOA,SAASC,GAAcjtB,GAAQ;AAC7B,EAAAA,EAAO,KAAK,QAAQ,OAAO,SAAS,gBAAgB,aACpDA,EAAO,KAAK,SAAS,OAAO,SAAS,gBAAgB;AACvD;AAQA,SAASktB,GAAmBltB,GAAQ;AAClC,QAAMgiB,IAAW,IAAI,eAAe,CAACC,MAAY;AAC/C,IAAAA,EAAQ,QAAQ,CAACC,MAAU;AACzB,MAAAliB,EAAO,KAAK,QAAQkiB,EAAM,cAAc,CAAC,EAAE,YAC3CliB,EAAO,KAAK,SAASkiB,EAAM,cAAc,CAAC,EAAE;AAAA,IAC9C,CAAC;AAAA,EACH,CAAC;AAED,SAAAF,EAAS,QAAQhiB,EAAO,MAAM,EAAE,KAAK,cAAc,GAE5CgiB;AACT;AASO,SAAS+E,GAAe/mB,GAAQ;AACrC,MAAImtB,IAAsB,IACtBH,IAAe,EAAC,GAAGhtB,EAAO,KAAK,QAAQ,GAAG,GAAGA,EAAO,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,EAAC,GACjFmoB,GAAMiF,GAAgBC,GAAqBC,GAAkBC;AAEjE,QAAM9E,IAAiB,EAAC,GAAG,GAAG,GAAG,EAAC;AAKlC,EAAAzoB,EAAO,OAAO,QAAQ,CAACmlB,MAAU;AAC/B,IAAIA,EAAM,UAAUA,EAAM,qBACxBA,EAAM,YAAYmH,GAAsBvB,GAAQ5F,EAAM,MAAM,GAAGnlB,EAAO,MAAMyoB,CAAc,GAE1F0E,IAAsB,KAGpBntB,EAAO,OACTotB,IAAiBF,GAAkBltB,CAAM,KAGzCqtB,IAAsBJ,GAAa,KAAK,MAAMjtB,CAAM,GACpD,OAAO,iBAAiB,UAAUqtB,CAAmB;AAAA,EAEzD,CAAC,GAYDlF,IAAO,SAAUvrB,GAAU;AACzB,aAASuoB,KAASnlB,EAAO;AACvB,UAAI,CAACmlB,EAAM,UAAU;AAEnB,cAAMqI,IAAcrI,EAAM,WAAW,EAAEvoB,EAAS,CAAC,KAAKA,EAAS,IAAIoD,EAAO,KAAK,OACzEytB,IAActI,EAAM,WAAW,EAAEvoB,EAAS,CAAC,KAAKA,EAAS,IAAIoD,EAAO,KAAK,QAEzElH,IAAI,CAAC8xB,GAAM,GAAG,GAAG4C,CAAW,EAAE,YAAY,CAAC,GAC3Cz0B,IAAI,CAAC6xB,GAAM,GAAG,GAAG6C,CAAW,EAAE,YAAY,CAAC,GAE3CpF,IAAW,EAAC,GAAGzrB,EAAS,IAAI,GAAGA,EAAS,GAAE;AAEhD,QAAIoD,EAAO,qBACTpD,EAAS,SAAU4wB,KAAe,KAAKC,KAAe,KAAKD,KAAe,KAAKC,KAAe,IAIhGtI,EAAM,OAAOA,GAAO,EAAC,GAAArsB,GAAG,GAAAC,EAAC,GAAGsvB,GAAUzrB,EAAS,MAAM;AAAA,MACvD;AAGF,WAAO,OAAOowB,GAAcpwB,CAAQ;AAAA,EACtC,GAEIuwB,MACFG,IAAmBP,GAAkB,KAAKtE,GAAgBN,GAAM6E,CAAY,GAC5EO,IAA0BtB,GAAqB,UAAUqB,CAAgB;AAM3E,WAAShF,IAAW;AAClB,IAAAtoB,EAAO,OAAO,QAAQ,CAAAmlB,MAASA,EAAM,UAAO,CAAI,GAEhDoI,IAAuB,GAEnBH,KACFA,EAAe,WAAU,GACzBA,IAAiB,SAGjB,OAAO,oBAAoB,UAAUC,CAAmB,GACxDA,IAAsB,OAGxBlF,IAAO,MACP6E,IAAe;AAAA,EACjB;AAKA,SAAO;AAAA,IACL,MAAA7E;AAAA,IACA,SAAAG;AAAA,EACJ;AACA;ACnLA,MAAMoF,KAAuB,MAAM,KAAK;AACxC,IAAIC;AAEJ,SAASnC,KAAiB;AACxB,EAAAE,EAAc,IAAI,OAAO,SACzBA,EAAc,IAAI,OAAO;AAC3B;AACA,MAAMA,IAAgB,EAAE,GAAG,GAAG,GAAG,GAAG,eAAAF,IAAe,aAAa,OAAS;AAelE,MAAMoC,GAAQ;AAAA,EACnB,YAAa5tB,IAAS,IAAI;AACxB,SAAK,SAAS,EAAE,GAAGA,EAAM,GAEzB,KAAK,SAAS,MACd,KAAK,YAAY,MACjB,KAAK,sBAAsB,MAC3B,KAAK,aAAa;AAElB,QAAIwc;AAEJ,IAAI,KAAK,OAAO,qBACdA,IAAU,KAAK,OAAO,aAClB,MAAM,KAAK,WAAU,IACrB2G,GAAc,MAAM,KAAK,YAAY,IAGzC3G,IAAU,KAAK,OAAO,aAClB,OACA,KAAK,KAAI,GACF,QAEP2G,GAAc,MAAM;AACpB,WAAK,KAAI;AAAA,IACX,CAAC,GAIL,KAAK,OAAO,OAAO,KAAK,OAAO,OAC3B;AAAA,MACA,OAAO,KAAK,OAAO,KAAK;AAAA,MACxB,QAAQ,KAAK,OAAO,KAAK;AAAA,IACjC,IACQ;AAAA,MACA,OAAO,OAAO,SAAS,gBAAgB;AAAA,MACvC,QAAQ,OAAO,SAAS,gBAAgB;AAAA,IAChD,GAGI,KAAK,WAAW;AAAA,MACd,GAAG,KAAK,OAAO,KAAK,QAAQ;AAAA,MAC5B,GAAG,KAAK,OAAO,KAAK,SAAS;AAAA,MAC7B,IAAI;AAAA,MACJ,IAAI;AAAA,IACV,GACI,KAAK,mBAAmB,EAAE,GAAG,KAAK,SAAQ,GAC1C,KAAK,kBAAkB;AAEvB,UAAM0K,IAAW,CAACrwB,MAAU;AAC1B,YAAMswB,IAAO,KAAK,OAAO,OAAOtwB,EAAM,UAAUA,EAAM,GAChDuwB,IAAO,KAAK,OAAO,OAAOvwB,EAAM,UAAUA,EAAM;AACtD,WAAK,SAAS,KAAKswB,IAAO,KAAK,SAAS,GACxC,KAAK,SAAS,KAAKC,IAAO,KAAK,SAAS,GACxC,KAAK,SAAS,IAAID,GAClB,KAAK,SAAS,IAAIC,GAClB,KAAK,YAAYvR,EAAO;AAAA,IAC1B;AAcA,QAZA,KAAK,gBAAgB,MAAM;AACvB,WAAK,SAAS,SAAS,IACvB,KAAK,SAAS,KAAK,GACnB,KAAK,SAAS,KAAK,GACnB,KAAK,YAAYA,EAAO;AAAA,IAC5B,GAEA,KAAK,gBAAgB,MAAM;AACzB,WAAK,SAAS,SAAS,IACvB,KAAK,YAAYA,EAAO;AAAA,IAC1B,GAEI,KAAK,OAAO,MAAM;AACpB,MAAAmR,KAAwB,OAAOA,MAA0B,YAAYA,KAAwB1C,GAAuB;AACpH,YAAMC,IAAMyC,KAAwB,OAAO,mBAAmB;AAE9D,MAAI,OAAOjC,EAAc,cAAgB,OACvCD,GAAqCC,CAAa,GAGpD,KAAK,WAAW,CAAC94B,MAAM;AACrB,YAAIA,EAAE,WAAW,KAAK,OAAO,MAAM;AACjC,gBAAM4K,IAAQ,IAAI,aAAa,eAAe;AAAA,YAC5C,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,SAAS5K,EAAE,IAAIs4B,IAAMQ,EAAc;AAAA,YACnC,SAAS94B,EAAE,IAAIs4B,IAAMQ,EAAc;AAAA,UAC/C,CAAW;AAED,UAAA94B,EAAE,gBAAe,GAEjB,KAAK,OAAO,KAAK,cAAc4K,CAAK;AAAA,QACtC;AACE,UAAAqwB,EAASj7B,CAAC;AAAA,MAEd;AAAA,IACF;AACE,WAAK,WAAWi7B;AAAA,EAEpB;AAAA;AAAA;AAAA;AAAA,EAKA,QAAS;AACP,SAAK,YAAW,GAChB,KAAK,WAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,QAAS;AACP,SAAK,YAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAQ;AACN,SAAK,OAAO,KAAK,KAAK,QAAQ;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAc;AACZ,UAAM3xB,IAAW,KAAK,OAAO,oBACvB/C,IAAS,KAAK,OAAO,qBAAqB,CAAC5F,MAAMA,IACjDy6B,IAAM,YAAY,IAAG;AAC3B,QAAIC,IAAgB;AAEpB,UAAM9F,IAAO,CAAClrB,MAAS;AACrB,YAAM1J,KAAK0J,IAAO,KAAK,cAAcf,GAC/BlJ,IAAImG,EAAO,KAAK,IAAI,GAAG5F,CAAC,CAAC;AAE/B,MAAI06B,MACF,KAAK,SAAS,KAAK,GACnB,KAAK,SAAS,KAAK,GACnBA,IAAgB,KAGlB,KAAK,kBAAkB,OAAO,QAAQ,KAAK,QAAQ,EAAE,OAAO,CAACxG,GAAK,CAACx1B,GAAKwH,CAAK,OACvExH,MAAQ,WACVw1B,EAAIx1B,CAAG,IAAIwH,IAEXguB,EAAIx1B,CAAG,IAAI,KAAK,iBAAiBA,CAAG,KAAKwH,IAAQ,KAAK,iBAAiBxH,CAAG,KAAKe,GAE1Ey0B,IACN,KAAK,mBAAmB,EAAE,GAEzBl0B,IAAI,MACN,KAAK,sBAAsB,sBAAsB40B,CAAI,GAGrD8F,IAAgBhxB,IAAO,KAAK,aAAaywB,KAG3C,KAAK,OAAO,KAAK,KAAK,eAAe;AAAA,IACvC;AAEA,WAAI,KAAK,cACP,KAAK,uBAAuB,qBAAqB,KAAK,mBAAmB,GAEzE,OAAO,OAAO,KAAK,kBAAkB,KAAK,eAAe,GAEzD,KAAK,aAAaM,GAElB7F,EAAK6F,CAAG,KAER,KAAK,aAAaA,GAGb,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,UAAW;AACT,SAAK,MAAK,GACV,KAAK,aAAY,GACjB,KAAK,aAAa,qBAAqB,KAAK,SAAS,GACrD,KAAK,uBAAuB,qBAAqB,KAAK,mBAAmB;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA,EAKA,aAAc;AACZ,SAAK,YAAW;AAChB,UAAM1zB,IAAU,KAAK,OAAO,QAAQ;AACpC,IAAAA,EAAQ,iBAAiB,eAAe,KAAK,UAAU,EAAC,SAAS,GAAI,CAAC,GAElE,KAAK,OAAO,eACd,KAAK,OAAO,YAAY,iBAAiB,eAAe,KAAK,UAAU,EAAC,SAAS,GAAI,CAAC,GAGpF,KAAK,OAAO,qBACdA,EAAQ,iBAAiB,gBAAgB,KAAK,eAAe,EAAC,SAAS,GAAI,CAAC,GAC5EA,EAAQ,iBAAiB,gBAAgB,KAAK,eAAe,EAAC,SAAS,GAAI,CAAC,GAExE,KAAK,OAAO,gBACd,KAAK,OAAO,YAAY,iBAAiB,gBAAgB,KAAK,eAAe,EAAC,SAAS,GAAI,CAAC,GAC5F,KAAK,OAAO,YAAY,iBAAiB,gBAAgB,KAAK,eAAe,EAAC,SAAS,GAAI,CAAC;AAAA,EAGlG;AAAA;AAAA;AAAA;AAAA,EAKA,cAAe;AACb,UAAMA,IAAU,KAAK,OAAO,QAAQ;AACpC,IAAAA,EAAQ,oBAAoB,eAAe,KAAK,QAAQ,GAEpD,KAAK,OAAO,eACd,KAAK,OAAO,YAAY,oBAAoB,eAAe,KAAK,QAAQ,GAGtE,KAAK,OAAO,qBACdA,EAAQ,oBAAoB,gBAAgB,KAAK,aAAa,GAC9DA,EAAQ,oBAAoB,gBAAgB,KAAK,aAAa,GAE1D,KAAK,OAAO,gBACd,KAAK,OAAO,YAAY,oBAAoB,gBAAgB,KAAK,aAAa,GAC9E,KAAK,OAAO,YAAY,oBAAoB,gBAAgB,KAAK,aAAa;AAAA,EAGpF;AAAA;AAAA;AAAA;AAAA,EAKA,cAAe;AACb,SAAK,aAAY,GACjB,KAAK,SAASysB,GAAc,KAAK,MAAM;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAKA,eAAgB;AACd,SAAK,UAAU,KAAK,OAAO,QAAO,GAClC,KAAK,SAAS;AAAA,EAChB;AACF;ACjQA,MAAMmH,yBAAwB,QAAA;AAC9B,IAAIC,KAAqD,OAAO,CAAA;AAEhE,SAASnF,GAAsBC,GAAsC;AACnE,EAAAkF,KAAuBlF;AACzB;AAEA,SAASmF,GACPlT,GACArnB,GACA6I,GACAvJ,IAA6B,CAAA,GAC7B,EAAE,eAAA4rB,KACF;AACA,MAAIA;AACF;AAGF,QAAMoK,IAAgB;AAAA,IACpB,SAAS;AAAA,IACT,SAASjO;AAAA,EAAA,GAGLiK,IAAQhH;AAAA,IACZtqB;AAAA,IACAgtB,EAAyBnkB,CAAM;AAAA,IAC/BysB;AAAA,EAAA;AAGF,MAAIhE,GAAO;AACT,UAAMkJ,IAAU,IAAIT,GAAQ;AAAA,MAC1B,MAAMz6B,EAAQ,YAAY,SAAS+nB,IAAS;AAAA,MAC5C,QAAQ,MAAM,QAAQiK,CAAK,IAAIA,IAAQ,CAACA,CAAK;AAAA,MAC7C,GAAGgJ,GAAA;AAAA,IAAqB,CACzB,GAKKjN,IAAa,EAAE,QAAAhG,GAAQ,QAAArnB,GAAQ,SAJrB,MAAM;AACpB,MAAAw6B,EAAQ,QAAA;AAAA,IACV,EAEqC;AAErC,IAAArN,EAAgBkN,IAAmBhT,GAAQgG,CAAU,GACrDF,EAAgBkN,IAAmBr6B,GAAQqtB,CAAU,GAErDmN,EAAQ,MAAA;AAAA,EACV;AACF;AAEA,SAASC,GAAyBh0B,GAAsB;AACtD,EAAA8mB,EAA4B8M,IAAmB5zB,CAAO;AACxD;AAEA,MAAAi0B,KAAe;AAAA,EACb,KAAKH;AAAA,EACL,QAAQE;AAAA,EACR,uBAAAtF;AACF,GCxDM3H,yBAAiB,QAAA;AAEvB,SAASmN,GACPtT,GACArnB,GACA6I,GACAkiB,GACA,EAAE,eAAAG,GAAe,mBAAAU,KACX;AACN,QAAMnsB,IAAYwrB;AAAA,IAChBjrB;AAAA,IACAgtB,EAAyBnkB,CAAM;AAAA,IAC/B;AAAA,IACAqiB;AAAA,EAAA,GAGIwD,IAAU,MAAM;AACpB,IAAI9C,KAAqB,CAAC5rB,EAAO,QAAQ4rB,CAAiB,KAC1DnsB,EAAU,KAAA;AAAA,EACZ,GAMM4tB,IAAa,EAAE,QAAAhG,GAAQ,QAAArnB,GAAQ,SALrB,MAAM;AACpB,IAAAP,EAAU,OAAA,GACV4nB,EAAO,oBAAoB,gBAAgBqH,CAAO;AAAA,EACpD,EAEqC;AACrC,EAAAvB,EAAgBK,IAAYnG,GAAQgG,CAAU,GAC9CF,EAAgBK,IAAYxtB,GAAQqtB,CAAU,GAE9ChG,EAAO,iBAAiB,gBAAgBqH,CAAO;AACjD;AAEA,SAASkM,GAA0Bn0B,GAA4B;AAC7D,EAAA8mB,EAA4BC,IAAY/mB,CAAO;AACjD;AAEA,MAAAo0B,KAAe;AAAA,EACb,KAAKF;AAAA,EACL,QAAQC;AACV;AC7CA,SAASE,GACPpM,GACG;AACH,SAAO;AAAA,IACL,KAAK,CACHrH,GACArnB,GACA6I,GACAvJ,GACAy7B,MAEArM,EAAQ,IAAIrH,GAAQrnB,GAAQ6I,GAAQvJ,GAAS;AAAA,MAC3C,GAAGy7B;AAAA,MACH,mBAAmB;AAAA,IAAA,CACpB;AAAA,IACH,QAAQrM,EAAQ;AAAA,EAAA;AAEpB;AAEA,MAAAsM,KAAe;AAAA,EACb,WAAWnM;AAAA,EACX,OAAO8H;AAAA,EACP,OAAOG;AAAA,EACP,aAAajI;AAAA,EACb,cAAcgM;AAAA,EACd,cAAclF;AAAA,EACd,aAAa+E;AAAA,EACb,UAAUI,GAAShE,EAAY;AAAA,EAC/B,UAAUgE,GAASnE,EAAY;AACjC;ACtBA,SAASsE,GAAsB78B,GAAa;AAC1C,SAAOA,EAAI,QAAQ,gBAAgB,IAAI;AACzC;AAEO,MAAM88B,EAAS;AAAA,EACpB,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EAQA;AAAA,EAGA;AAAA,EACA,OAAO,qBAA8B;AAAA,EACrC,OAAO,oBAA6B;AAAA,EACpC,OAAO,YAAwB,CAAA;AAAA,EAC/B,OAAO,kBAAkB,oBAAI,IAAA;AAAA,EAE7B,cAAc;AACZ,SAAK,YAAY,EAAE,SAAS,CAAA,GAAI,YAAY,CAAA,GAAI,cAAc,GAAC,GAC/D,KAAK,oBAAoB,CAAA,GACzB,KAAK,0CAA0B,IAAA,GAC/B,KAAK,wBAAwB,CAAA,GAC7B,KAAK,kCAAkB,IAAA;AAAA,EACzB;AAAA,EAEA,KAAK/uB,GAA8B;AACjC,QAAI,OAAO,SAAW,OAAe,CAAC,OAAO;AAC3C;AAGF,SAAK,YAAYgvB,GAAYhvB,CAAM,GAEnB+uB,EAAS,wBAAA,MAET,KAEd,SAAS,iBAAiB,kBAAkB,EAAE,QAAQ,CAACz0B,MAAY;AAChE,MAAAA,EAA6B,QAAA;AAAA,IAChC,CAAC,IAODy0B,EAAS,gBAAgB,QAAQ,CAACE,GAAoCh9B,MAAQg9B,EAAW,QAAQh9B,CAAG,CAAC;AAAA,EAEzG;AAAA,EAEA,UAAgB;AACd,eAAWg9B,KAAc,KAAK;AAC5B,MAAAA,EAAW,WAAA;AAMb,eAAW,CAAA,EAAG1xB,CAAQ,KAAK,KAAK,oBAAoB;AAClD,MAAAA,EAAS,IAAI,oBAAoB,UAAUA,EAAS,OAAO;AAE7D,SAAK,oBAAoB,MAAA,GACzB,KAAK,oBAAoB,CAAA,GACzB,KAAK,wBAAwB,CAAA,GAC7B,KAAK,YAAY,MAAA,GACjB,KAAK,YAAY,EAAE,SAAS,CAAA,GAAI,YAAY,CAAA,GAAI,cAAc,GAAC,GAC/DwxB,EAAS,UAAU,OAAOA,EAAS,UAAU,QAAQ,IAAI,GAAG,CAAC;AAAA,EAC/D;AAAA,EAEA,cAAc98B,GAAag9B,GAAoC;AAC7D,SAAK,YAAY,IAAIA,CAAU,GAE/BF,EAAS,cAAc98B,GAAKg9B,CAAU;AAAA,EACxC;AAAA,EAEA,iBAAiBh9B,GAAa;AAC5B,UAAMg9B,IAAaF,EAAS,gBAAgB,IAAI98B,CAAG;AAEnD,SAAK,4BAA4BA,CAAG,GACpC,KAAK,+BAA+BA,CAAG,GAEnCg9B,MACF,KAAK,YAAY,OAAOA,CAAU,GAClCF,EAAS,iBAAiB98B,CAAG;AAAA,EAEjC;AAAA,EAEA,IAAIA,GAAsB;AACxB,WAAO,CAAC,CAAC,KAAK,IAAIA,CAAG;AAAA,EACvB;AAAA,EAEA,IAAIA,GAAgE;AAClE,UAAMi9B,IAAeJ,GAAsB78B,CAAG;AAC9C,WAAO,KAAK,UAAU,aAAai9B,CAAY;AAAA,EACjD;AAAA,EAEA,+BAA+Bj9B,GAAmB;AAChD,eAAW,CAACspB,GAAIhe,CAAQ,KAAK,KAAK,oBAAoB;AACpD,MAAIA,EAAS,QAAQtL,MACnBsL,EAAS,IAAI,oBAAoB,UAAUA,EAAS,OAAO,GAC3D,KAAK,oBAAoB,OAAOge,CAAE;AAAA,EAGxC;AAAA,EAEA,4BAA4BtpB,GAAmB;AAG7C,KAFuB,KAAK,IAAIA,CAAG,GAAG,kBAAkB,CAAA,GAEzC,QAAQ,CAACk9B,MAAmB;AACzC,YAAMC,IAAgBh9B,GAAmB+8B,GAAgBl9B,CAAG;AAE5D,aAAO,KAAK,kBAAkBm9B,CAAa;AAAA,IAC7C,CAAC;AAAA,EACH;AAAA,EAEA,wBAAwB7T,GAAY8T,GAAqBp9B,GAAaswB,GAAqB;AACzF,IAAI,KAAK,oBAAoB,IAAIhH,CAAE,MAInC8T,EAAI,iBAAiB,UAAU9M,CAAO,GAEtC,KAAK,oBAAoB,IAAIhH,GAAI;AAAA,MAC/B,KAAA8T;AAAA,MACA,SAAA9M;AAAA,MACA,KAAAtwB;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAEA,OAAO,OAAO+N,GAAkC;AAC9C,UAAMsvB,IAAW,IAAIP,EAAA;AACrB,WAAAA,EAAS,UAAU,KAAKO,CAAQ,GAEhCA,EAAS,KAAKtvB,CAAM,GAEbsvB;AAAA,EACT;AAAA,EAEA,OAAO,UAAgB;AACrB,IAAAP,EAAS,gBAAgB,QAAQ,CAACE,MAAuC;AACvE,MAAAA,EAAW,WAAA;AAAA,IACb,CAAC,GACDF,EAAS,UAAU,SAAS,GAC5BA,EAAS,gBAAgB,MAAA;AAAA,EAC3B;AAAA,EAEA,OAAO,MAAM57B,GAKJ;AACP,IAAIA,EAAQ,uBACV07B,GAA8B,aAAa;AAAA,MACzC17B,EAAQ;AAAA,IAAA,GAIRA,EAAQ,wBACV07B,GAA8B,YAAY;AAAA,MACxC17B,EAAQ;AAAA,IAAA,GAITA,EAAQ,aACR07B,GAA8B,UAAqC,WAAW17B,EAAQ,SAAS,GAG/FA,EAAQ,sBAAsB,WAC/B47B,EAAS,oBAAoB57B,EAAQ;AAAA,EAEzC;AAAA,EAEA,OAAO,YAAYlB,GAAmC;AACpD,WAAO88B,EAAS,UAAU,KAAK,CAACO,MAAaA,EAAS,IAAIr9B,CAAG,CAAC;AAAA,EAChE;AAAA,EAEA,OAAO,cAAcA,GAA6D;AAChF,WAAOA,IAAM88B,EAAS,gBAAgB,IAAI98B,CAAG,IAAI;AAAA,EACnD;AAAA,EAEA,OAAO,cAAcA,GAAag9B,GAA0C;AAC1E,IAAAF,EAAS,gBAAgB,IAAI98B,GAAKg9B,CAAU;AAAA,EAC9C;AAAA,EAEA,OAAO,iBAAiBh9B,GAAmB;AACzC,IAAA88B,EAAS,gBAAgB,OAAO98B,CAAG;AAAA,EACrC;AACF;AAEA,IAAIs9B,KAAuB;AAEpB,SAASC,GACdC,GACA;AAAA,EACE,cAAAC,IAAe;AAAA,EACf,eAAAC,IAAgB;AAClB,IAAyD,IACjD;AACR,MAAIF,EAAE,eAAe;AACnB,UAAMG,IAAa,GAAGD,KAAiBF,EAAE,mBAAmB,MAAMA,EAAE,gBAAgB,KAAK,EAAE;AAE3F,WAAIA,EAAE,WACG,GAAGA,EAAE,aAAa,GAAGG,CAAU,IAAIH,EAAE,QAAQ,KAG/C,GAAGA,EAAE,aAAa,GAAGG,KAAc,MAAM;AAAA,EAClD,WAAWH,EAAE;AACX,WAAOA,EAAE;AAIX,SAAOC,IAAe,mBAAmB;AAC3C;AAKA,SAASV,GAAYhvB,GAAuC;AAC1D,QAAMwgB,IAAaxgB,EAAO,cAAc,CAAA,GAClC6vB,IAA8C,CAAA;AAEpD,SAAA7vB,EAAO,cAAc,QAAQ,CAAC8vB,MAAiB;AAC7C,UAAM5U,IAAS4U,EAAa,KACtBC,IAAiB,EAAER,IACnB,EAAE,SAASS,GAAU,GAAGzR,MAASuR;AAEvC,QAAI,CAAC5U,GAAQ;AACX,cAAQ,MAAM,eAAe6U,CAAc,uCAAuC;AAClF;AAAA,IACF;AAEA,IAAKF,EAAa3U,CAAM,MACtB2U,EAAa3U,CAAM,IAAI;AAAA,MACrB,UAAU,CAAA;AAAA,MACV,SAAS,CAAA;AAAA,MACT,oCAAoB,IAAA;AAAA,MACpB,+BAAe,IAAA;AAAA,IAAI;AAOvB,UAAM+U,IAAU,MAAM,KAAKD,CAAQ;AACnC,IAAAC,EAAQ,QAAA;AACR,UAAMC,IAAc,EAAE,GAAG3R,GAAM,SAAA0R,EAAA;AAE/B,IAAAJ,EAAa3U,CAAM,EAAE,SAAS,KAAKgV,CAAW,GAC9CL,EAAa3U,CAAM,EAAE,UAAU,IAAIsU,GAAYU,CAAW,CAAC;AAE3D,UAAMrG,IAAgBqG,EAAY;AAElC,IAAAD,EAAQ,QAAQ,CAACvzB,MAAW;AAO1B,UAAI7I,IAAS6I,EAAO;AAEpB,UAAI,CAAC7I,KAAW6I,EAAqB,UAAU;AAC7C,cAAMyzB,IAAmBnwB,EAAO,QAAStD,EAAqB,QAAQ;AAEtE,QAAIyzB,MACFt8B,IAASs8B,EAAiB;AAAA,MAE9B;AAEA,MAAMzzB,EAAqB,aACxBA,EAAqB,WAAWyiB,GAAA,IAInCtrB,IAASA,KAAUqnB,GACnBxe,EAAO,MAAM7I;AACb,YAAMyoB,IAAY5f,EAAqB;AAEvC,UAAImtB,KAAiBntB,EAAO,kBAEtB7I,MAAWqnB,KAAUxe,EAAO,kBAAkBmtB;AAChD;AAIJ,YAAMuF,IAAgB,GAAGv7B,CAAM,KAAKyoB,CAAQ,KAAKyT,CAAc;AAI/D,MAHArzB,EAAO,gBAAgB0yB,GACvBS,EAAa3U,CAAM,EAAE,eAAe,IAAIkU,CAAa,GAEjDv7B,MAAWqnB,MAQV2U,EAAah8B,CAAM,IASZg8B,EAAah8B,CAAM,EAAE,QAAQu7B,CAAa,MACpDS,EAAah8B,CAAM,EAAE,QAAQu7B,CAAa,IAAI,CAAA,GAC9CS,EAAah8B,CAAM,EAAE,eAAe,IAAIu7B,CAAa,KAVrDS,EAAah8B,CAAM,IAAI;AAAA,QACrB,UAAU,CAAA;AAAA,QACV,SAAS;AAAA,UACP,CAACu7B,CAAa,GAAG,CAAA;AAAA,QAAC;AAAA,QAEpB,oCAAoB,IAAA;AAAA,QACpB,+BAAe,IAAA;AAAA,MAAI,GAOvBS,EAAah8B,CAAM,EAAE,QAAQu7B,CAAa,EAAE,KAAK,EAAE,GAAG7Q,GAAM,QAAA7hB,GAAQ,GACpEmzB,EAAah8B,CAAM,EAAE,UAAU,IAAI27B,GAAY9yB,CAAM,CAAC;AAAA,IACxD,CAAC;AAAA,EACH,CAAC,GAEM;AAAA,IACL,SAASsD,EAAO,WAAW,CAAA;AAAA,IAC3B,YAAAwgB;AAAA,IACA,cAAAqP;AAAA,EAAA;AAEJ;AC/TA,SAASO,GACPnT,GACA0I,GACoC;AACpC,MAAI1I,EAAK,eAAe;AACtB,UAAMoT,IAAY1K,EAAK,cAAc1I,EAAK,aAAa;AAEvD,WAAKoT,IAMDpT,EAAK,WACA,MAAM,KAAKoT,EAAU,iBAAiBpT,EAAK,QAAQ,CAAC,IAGtD,MAAM,KAAKoT,EAAU,QAAQ,KATlC,QAAQ,KAAK,oDAAoDpT,EAAK,aAAa,GAAG,GAE/E,CAAA;AAAA,EAQX;AAEA,MAAIA,EAAK,UAAU;AACjB,UAAM3iB,IAAUqrB,EAAK,cAAc1I,EAAK,QAAQ;AAEhD,QAAI3iB;AACF,aAAOA;AAEP,YAAQ,KAAK,4CAA4C2iB,EAAK,QAAQ,GAAG;AAAA,EAE7E;AAEA,SAAO0I,EAAK;AACd;AAEA,SAAS2K,GAAkBrT,GAA4BsT,GAAwC;AAC7F,SAAOA,EACJ,IAAI,CAACj2B,MACG2iB,EAAK,WAAW3iB,EAAQ,cAAc2iB,EAAK,QAAQ,IAAI3iB,CAC/D,EACA,OAAO,OAAO;AACnB;AAEA,SAASk2B,GACPN,GACAxzB,GACAwe,GACArnB,GACA48B,GACAC,GAC0E;AAC1E,SAAO;AAAA,IACLD,IACIH,GAAkBJ,GAAaO,CAAc,IAC7CL,GAAqBF,GAAahV,CAAM;AAAA,IAC5CwV,IACIJ,GAAkB5zB,GAAQg0B,CAAc,IACxCN,GAAqB1zB,GAAQ7I,CAAM;AAAA,EAAA;AAE3C;AAEA,SAAS88B,GACPC,GACAV,GACAxzB,GACA+zB,GACAC,GACAjR,GACA;AACA,QAAMoR,IAAgB,MAAM,QAAQJ,CAAc,GAC5CK,IAAgB,MAAM,QAAQJ,CAAc;AAElD,EAAIG,IACFJ,EAAe,QAAQ,CAACM,GAAUx+B,MAAU;AAC1C,UAAMy+B,IAAWF,IAAgBJ,EAAen+B,CAAK,IAAIm+B;AAEzD,IAAIM,KACFC;AAAA,MACEL;AAAA,MACAG;AAAA,MACAb,EAAY;AAAA,MACZc;AAAA,MACAt0B;AAAA,MACAwzB,EAAY;AAAA,MACZzQ;AAAA,IAAA;AAAA,EAGN,CAAC,KAEeqR,IAAgBJ,IAAiB,CAACA,CAAc,GACxD,QAAQ,CAACM,MAAa;AAC5B,IAAAC;AAAA,MACEL;AAAA,MACAH;AAAA,MACAP,EAAY;AAAA,MACZc;AAAA,MACAt0B;AAAA,MACAwzB,EAAY;AAAA,MACZzQ;AAAA,IAAA;AAAA,EAEJ,CAAC;AAEL;AAEA,SAASyR,GACPC,GACAC,GACA9B,GACAY,GACAK,GACA;AACA,QAAMc,IAAiD,CAAA,GAEjDC,IAA2C,CAAA;AAEjD,EAAApB,EAAY,QAAQ,QAAQ,CAACxzB,MAAW;AACtC,UAAM4f,IAAY5f,EAAqB,UAEjCF,IAAgB;AAAA,MACpB,GAAI8yB,EAAS,UAAU,QAAQhT,CAAQ,KAAK,CAAA;AAAA,MAC5C,GAAG5f;AAAA,MACH,UAAA4f;AAAA,IAAA,GAEIiV,IAAa/0B,EAAc,KAE3B4yB,IAAgBh9B,GAAmBsK,EAAO,eAAgBy0B,CAAS;AAOzE,QALIE,EAAsBjC,CAAc,KAKpCE,EAAS,kBAAkBF,CAAc,KAAK,CAACmB;AAEjD;AAGF,UAAMlB,IAAM/O,GAAc9jB,EAAc,cAAc,CAAA,GAAI8yB,EAAS,UAAU,UAAU;AAQvF,QANID,KACFC,EAAS,wBAAwBF,GAAeC,GAAK8B,GAAW,MAAM;AACpE,MAAAC,EAAiB,OAAA;AAAA,IACnB,CAAC,GAGC,CAAC/B,KAAOA,EAAI,SAAS;AACvB,MAAAgC,EAAsBjC,CAAc,IAAI;AAExC,YAAMv7B,IAAS09B,KAAcn/B,GAAmBm/B,GAAYJ,CAAS;AAErE,UAAIvH;AACJ,UAAI/1B,GAAQ;AAGV,YAFA+1B,IAAmBmF,EAAS,cAAcl7B,CAAM,GAE5C,CAAC+1B;AAEH;AAGF,QAAIptB,EAAc,iBAChBotB,EAAiB,eAAeptB,EAAc,aAAa;AAAA,MAE/D;AAEE,QAAAotB,IAAmBwH;AAGrB,YAAM,CAACX,GAAgBC,CAAc,IAAIF;AAAA,QACvCN;AAAA,QACA1zB;AAAA,QACA40B,EAAiB;AAAA,QACjBxH,EAAiB;AAAA,QACjB2G;AAAA,MAAA;AAGF,UAAI,CAACE,KAAkB,CAACC;AACtB;AAGF,MAAApB,EAAS,kBAAkBF,CAAc,IAAI;AAE7C,YAAMn9B,IAAM4B,KAAUq8B,EAAY,KAC5BzQ,IAAoBmB;AAAA,QACxBpkB,EAAc,cAAc,CAAA;AAAA,QAC5B8yB,EAAS,UAAU;AAAA,MAAA;AAGrB,MAAAgC,EAAoB,KAAK;AAAA,QACvBr/B;AAAA,QACAi+B;AAAA,QACA1zB;AAAA,QACAi0B;AAAA,QACAC;AAAA,QACAjR;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EACF,CAAC,GAGD6R,EAAoB,QAAA,EAAU,QAAQ,CAACpB,MAAgB;AACrD,IAAAS,GAAkB,GAAGT,CAAW;AAAA,EAClC,CAAC;AACH;AAEA,SAASsB,GACPZ,GACAhH,GACA0F,GACAzF,GACA0G,GACA;AACA,QAAMN,IAAUX,EAAS,IAAIsB,CAAS,GAAG,WAAW,CAAA,GAC9Ca,IAAiB,OAAO,KAAKxB,CAAO,GACpCqB,IAA2C,CAAA;AAEjD,SAAAG,EAAe,QAAQ,CAACtC,MAAmB;AACzC,UAAMC,IAAgBh9B,GAAmB+8B,GAAgByB,CAAS;AAElE,QAAItB,EAAS,kBAAkBF,CAAa,KAAK,CAACmB;AAEhD;AAMF,IAHyBN,EAAQd,CAAc,EAG9B,KAAK,CAAC,EAAE,QAAAzyB,GAAQ,GAAGwzB,QAAkB;AACpD,YAAM5T,IAAY5f,EAAqB,UAEjCF,IAAgB;AAAA,QACpB,GAAI8yB,EAAU,UAAU,QAAQhT,CAAQ,KAAK,CAAA;AAAA,QAC7C,GAAG5f;AAAA,QACH,UAAA4f;AAAA,MAAA;AAGF,UAAIuN,KAAiBrtB,EAAc,kBAAkBqtB;AAEnD,eAAO;AAGT,YAAMwF,IAAM/O,GAAc9jB,EAAc,cAAc,CAAA,GAAI8yB,EAAU,UAAU,UAAU;AASxF,UAPID,KACFC,EAAS,wBAAwBF,GAAeC,GAAKuB,GAAW,MAAM;AAEpE,QAAAhH,EAAiB,OAAA;AAAA,MACnB,CAAC,GAGC,CAACyF,KAAOA,EAAI,SAAS;AACvB,cAAM8B,IAAYjB,EAAY,OAAO99B,GAAmB89B,EAAY,KAAKU,CAAS,GAC5EQ,IAAmBrC,EAAS,cAAcoC,CAAS;AAEzD,YAAI,CAACC;AAEH,iBAAO;AAGT,QAAI50B,EAAc,iBAChBotB,EAAiB,eAAeptB,EAAc,aAAa;AAG7D,cAAM,CAACi0B,GAAgBC,CAAc,IAAIF;AAAA,UACvCN;AAAA,UACA1zB;AAAA,UACA40B,EAAiB;AAAA,UACjBxH,EAAiB;AAAA,UACjB;AAAA,UACA2G;AAAA,QAAA;AAGF,YAAI,CAACE,KAAkB,CAACC;AAEtB,iBAAO;AAGT,QAAApB,EAAU,kBAAkBF,CAAa,IAAI;AAE7C,cAAM3P,IAAoBmB;AAAA,UACxBpkB,EAAc,cAAc,CAAA;AAAA,UAC5B8yB,EAAU,UAAU;AAAA,QAAA;AAGtB,eAAAgC,EAAoB,KAAK;AAAA,UACvBV;AAAA,UACAV;AAAA,UACA1zB;AAAA,UACAi0B;AAAA,UACAC;AAAA,UACAjR;AAAA,QAAA,CACD,GAGM;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,CAAC,GAGD6R,EAAoB,QAAA,EAAU,QAAQ,CAACpB,MAAgB;AACrD,IAAAS,GAAkB,GAAGT,CAAW;AAAA,EAClC,CAAC,GAEMuB,EAAe,SAAS;AACjC;AAKA,SAASR,GACPL,GACA1V,GACAsB,GACA3oB,GACA6I,GACAvJ,GACAssB,GACM;AACN,MAAImK;AAEJ,MACGltB,EAA4B,cAC5BA,EAA4B,sBAC7B;AACA,UAAMg1B,IAAkC;AAAA,MACtC,KAAKd;AAAA,MACL,UAAWl0B,EAAkB;AAAA,MAC7B,YAAaA,EAA4B;AAAA,MACzC,YAAaA,EAA4B;AAAA,MACzC,eAAe8yB,GAAY9yB,GAAQ;AAAA,QACjC,cAAc;AAAA,QACd,eAAe;AAAA,MAAA,CAChB;AAAA,MACD,mBAAA+iB;AAAA,IAAA;AAIF,QADAmK,IAAmBmF,EAAS,cAAc6B,CAAS,GAC/C,CAAChH;AACH;AAGF,IAAAA,EAAiB,YAAYvK,GAAoBqS,CAAI,CAAC;AAAA,EACxD;AAEA,EAAA7C,GAA8BrS,CAAO,GAAG,IAAItB,GAAQrnB,GAAQ6I,GAAQvJ,GAAS;AAAA,IAC3E,eAAe47B,EAAS;AAAA,IACxB,kBAAAnF;AAAA,IACA,mBAAAnK;AAAA,IACA,mBAAmBsP,EAAS;AAAA,EAAA,CAC7B;AACH;AAKO,SAAShT,GAAIkT,GAA6C;AAC/D,QAAMh9B,IAAMg9B,EAAW,KACjBK,IAAWP,EAAS,YAAY98B,CAAG;AAEzC,MAAI,CAACq9B;AACH,mBAAQ,KAAK,8BAA8Br9B,CAAG,EAAE,GAGhD88B,EAAS,cAAc98B,GAAKg9B,CAAU,GAC/B;AAGT,QAAM,EAAE,UAAA0C,IAAW,GAAC,IAAMrC,GAAU,IAAIr9B,CAAG,KAAK,CAAA,GAC1C2/B,IAAcD,EAAS,SAAS;AAEtC,EAAArC,EAAS,cAAcr9B,GAAKg9B,CAAU,GAEtC0C,EAAS,QAAQ,CAACzB,GAAa39B,MAAU;AACvC,UAAM88B,IAAM/O,GAAc4P,EAAY,YAAYZ,EAAU,UAAU,UAAU;AAEhF,QAAID,GAAK;AACP,YAAMD,IAAgB,GAAGn9B,CAAG,cAAcM,CAAK;AAC/C,MAAA+8B,EAAS,wBAAwBF,GAAeC,GAAKp9B,GAAK,MAAM;AAC9D,QAAAg9B,EAAW,OAAA;AAAA,MACb,CAAC;AAAA,IACH;AAEA,KAAI,CAACI,KAAOA,EAAI,aACVa,EAAY,iBACdjB,EAAW,eAAeiB,EAAY,aAAa,GAGrDgB,GAAgBj/B,GAAKg9B,GAAYK,GAAWY,CAAW;AAAA,EAE3D,CAAC;AAED,MAAI2B,IAAa;AACjB,SAAIvC,MACFuC,IAAaL,GAAoBv/B,GAAKg9B,GAAYK,CAAQ,IAGrDsC,KAAeC;AACxB;AAEO,SAASC,GACd7C,GACApF,GACA0G,GACA;AACA,QAAMt+B,IAAMg9B,EAAW,KACjBK,IAAWP,EAAS,YAAY98B,CAAG;AAEzC,MAAIq9B,GAAU;AACZ,UAAM,EAAE,UAAAqC,IAAW,GAAC,IAAMrC,GAAU,IAAIr9B,CAAG,KAAK,CAAA;AAEhD,IAAA0/B,EAAS,QAAQ,CAACzB,GAAa39B,MAAU;AACvC,UAAI29B,EAAY,kBAAkBrG;AAChC;AAGF,YAAMwF,IAAM/O,GAAc4P,EAAY,YAAYZ,EAAU,UAAU,UAAU;AAEhF,UAAID,GAAK;AACP,cAAMD,IAAgB,GAAGn9B,CAAG,kBAAkB43B,CAAa,KAAKt3B,CAAK;AACrE,QAAA+8B,EAAS,wBAAwBF,GAAeC,GAAKp9B,GAAK,MAAM;AAE9D,UAAAg9B,EAAW,OAAA;AAAA,QACb,CAAC;AAAA,MACH;AAEA,OAAI,CAACI,KAAOA,EAAI,YACd6B,GAAgBj/B,GAAKg9B,GAAYK,GAAWY,GAAaK,CAAQ;AAAA,IAErE,CAAC,GAEDiB,GAAoBv/B,GAAKg9B,GAAYK,GAAUzF,GAAe0G,CAAQ;AAAA,EACxE;AACF;AClcO,SAAS/V,GAAOyU,GAA0C;AAC/D,QAAMh9B,IAAMg9B,EAAW,KACjBK,IAAWP,EAAS,YAAY98B,CAAG;AAEzC,MAAI,CAACq9B;AACH;AAGF,QAAMyC,IAAY,CAAC,GAAIzC,EAAS,IAAIr9B,CAAG,GAAG,UAAU,OAAA,KAAY,CAAA,CAAG,EAAE,KAAK,GAAG,GACvEs+B,IAAWtB,EAAW,QAAQ,iBAAiB8C,CAAS;AAE9D,EAAAC,GAAgB,MAAM,KAAKzB,CAAQ,CAAkB,GAErDjB,EAAS,iBAAiBr9B,CAAG;AAC/B;AAEO,SAAS+/B,GAAgBzB,GAAyB;AACvD,QAAM0B,IAAU,OAAO,OAAOpD,EAA6B;AAE3D,aAAWv0B,KAAWi2B;AACpB,eAAWnV,KAAU6W;AACnB,MAAA7W,EAAO,OAAO9gB,CAAO;AAG3B;AC3BO,MAAM43B,KAA4B;AAElC,MAAMC,GAAsB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY73B,GAAsBrI,GAAc;AAC9C,SAAK,UAAUqI,GACf,KAAK,MAAMrI,GACX,KAAK,YAAY,IACjB,KAAK,QAAQ,MACb,KAAK,iCAAiB,QAAA;AAAA,EACxB;AAAA,EAEA,QAAQA,GAAc;AACpB,QAAI,MAAK,WAMT;AAAA,UAFAA,IAAMA,KAAO,KAAK,OAAO,KAAK,QAAQ,QAAQ,aAE1C,CAACA,GAAK;AACR,gBAAQ,KAAK,2BAA2B;AACxC;AAAA,MACF;AAEA,WAAK,MAAMA,GAEX,KAAK,YAAY8pB,GAAI,IAAI;AAAA;AAAA,EAC3B;AAAA,EAEA,aAAa;AAOX,SANY,KAAK,OAAO,KAAK,QAAQ,QAAQ,gBAG3CvB,GAAO,IAAI,GAGT,KAAK,OAAO;AACd,YAAMjoB,IAAQ,SAAS,mBAAmB,QAAQ,KAAK,KAAK;AAC5D,eAAS,mBAAmB,OAAOA,GAAO,CAAC;AAAA,IAC7C;AAEA,SAAK,iCAAiB,QAAA,GACtB,KAAK,QAAQ,MACb,KAAK,YAAY;AAAA,EACnB;AAAA,EAEA,SAAS;AACP,SAAK,WAAA,GACL,KAAK,QAAA;AAAA,EACP;AAAA,EAEA,YAAY6/B,GAAoB;AAC9B,QAAI,CAAC,KAAK;AACR,WAAK,QAAQ,IAAI,cAAA,GACZ,KAAK,MAAM,YAAYA,EAAS,KAAK;AAAA,CAAI,CAAC,GAE/C,SAAS,mBAAmB,KAAK,KAAK,KAAK;AAAA,SACtC;AACL,UAAIC,IAAW,KAAK,MAAM,SAAS;AAEnC,iBAAWC,KAAWF;AACpB,YAAI;AACF,eAAK,MAAM,WAAWE,GAASD,CAAQ,GACvCA;AAAA,QACF,SAASz/B,GAAG;AACV,kBAAQ,MAAMA,CAAC;AAAA,QACjB;AAAA,IAEJ;AAAA,EACF;AAAA,EAEA,aAAa0pB,GAAkByN,GAA+B9O,GAA2BsX,GAAoB;AAC3G,QAAItX,MAAS;AACX;AAGF,QAAI,CAACsX,KAAa,KAAK,QAA6B,cAAc;AAC/D,WAAK,QAA6B,aAAajW,GAAUyN,GAAQ9O,CAAI;AACtE;AAAA,IACF;AAEA,UAAMuX,IAAiB,IAAI,IAAI,KAAK,QAAQ,QAAQN,EAAyB,GAAG,MAAM,GAAG,KAAK,CAAA,CAAE;AAEhG,IAAInI,MAAW,WACXyI,EAAe,IAAIlW,CAAQ,IACzBkW,EAAe,OAAOlW,CAAQ,IAC9BkW,EAAe,IAAIlW,CAAQ,IACtByN,MAAW,QAClByI,EAAe,IAAIlW,CAAQ,IACpByN,MAAW,WAClByI,EAAe,OAAOlW,CAAQ,IACvByN,MAAW,WAClByI,EAAe,MAAA,IAGlBvX,KAAQ,KAAK,SAAS,QAAQiX,EAAyB,IAAI,MAAM,KAAKM,CAAc,EAAE,KAAK,GAAG;AAAA,EACjG;AAAA,EAEA,mBAA6B;AAE3B,UAAMC,KADM,KAAK,QAAQ,QAAQP,EAAyB,KAAK,IAC3C,KAAA;AACpB,WAAOO,IAAUA,EAAQ,MAAM,KAAK,IAAI,CAAA;AAAA,EAC1C;AAAA,EAEA,eAAe5I,GAA6B;AAC1C,UAAM6I,IAAO,KAAK,QAAQ,cAAc7I,CAAa;AAErD,QAAI6I,GAAM;AAER,UAAI1Q,IAAW,KAAK,WAAW,IAAI0Q,CAAmB;AAEtD,MAAK1Q,MACHA,IAAW,IAAI,iBAAiB,KAAK,wBAAwB,KAAK,MAAM6H,CAAa,CAAC,GAEtF,KAAK,WAAW,IAAI6I,GAAqB1Q,CAAQ,GAEjDA,EAAS,QAAQ0Q,GAAqB,EAAE,WAAW,IAAM;AAAA,IAE7D;AAAA,EACF;AAAA,EAEA,wBAAwB7I,GAAuB5H,GAA2B;AACxE,UAAMhwB,IAAM,KAAK,OAAO,KAAK,QAAQ,QAAQ,aACvC0gC,IAAiC,CAAA,GACjCC,IAA+B,CAAA;AAErC,IAAA3Q,EAAQ,QAAQ,CAACC,MAAU;AACzB,MAAAA,EAAM,aAAa,QAAQ,CAAC8I,MAAO;AACjC,QAAIA,aAAc,eAChB2H,EAAgB,KAAK3H,CAAE;AAAA,MAE3B,CAAC,GAED9I,EAAM,WAAW,QAAQ,CAAC8I,MAAO;AAC/B,QAAIA,aAAc,eAChB4H,EAAc,KAAK5H,CAAE;AAAA,MAEzB,CAAC;AAAA,IACH,CAAC,GAEDgH,GAAgBW,CAAe,GAC/B1gC,KAAO6/B,GAAa,MAAMjI,GAAe+I,CAAa;AAAA,EACxD;AACF;ACrJO,SAAS7W,GAAIzhB,GAAsBrI,GAAoB;AAG5D,EAFmB,IAAIkgC,GAAsB73B,GAASrI,CAAG,EAE9C,QAAA;AACb;AAEO,SAASuoB,GAAOvoB,GAAmB;AACxC,QAAMg9B,IAAaF,EAAS,cAAc98B,CAAG;AAC7C,EAAKg9B,KAILA,EAAW,WAAA;AACb;ACdO,SAAS4D,GAAS7L,GAAiC;AAaxD,SAZsB;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,EAWS,KAAK;AAAA,CAAI;AACtB;","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,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,94,95,96,97,98,102,103,104,105,109,110,111,112]}
|