@inappstory/slide-api 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -94
- package/dist/index.d.ts +3 -94
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/composition/core.ts","../../../src/widgets/base/widgets_service/widgets_service.ts","../../../src/widgets/base/widgets_service/composition.ts","../../../src/composition/index.ts","../../../src/utils.ts","../../../src/animation/animation.ts","../../../src/sdk_api/adapters/es_module_sdk_api.ts","../../../src/widgets/base/base.ts","../../../src/widgets/copy/copy.ts","../../../src/widgets/data_input/data_input.ts","../../../src/widgets/date_countdown/date_countdown.ts","../../../src/widgets/multi_slide/multi_slide.ts","../../../src/widgets/poll/poll.ts","../../../src/widgets/poll_layers/poll_layers.ts","../../../src/widgets/quest/quest.ts","../../../src/widgets/quiz/quiz.ts","../../../src/widgets/quiz_grouped/quiz_grouped.ts","../../../src/widgets/range_slider/range_slider.ts","../../../src/widgets/rate/rate.ts","../../../src/widgets/share/share.ts","../../../src/widgets/test/test.ts","../../../src/widgets/vote/vote.ts","../../../src/entry_points/es_module/es_module.ts","../../../src/sdk_api/composition/es_module_sdk_api.ts"],"sourcesContent":["import { DIContainer } from \"@wessberg/di\";\n\nexport const container = new DIContainer();\n","import { SDKApi } from \"@skd_api\";\n\nexport class WidgetsService {\n constructor(\n private _env: Window,\n private _sdkApi: SDKApi\n ) {}\n\n get env(): Window {\n return this._env;\n }\n get sdkApi(): SDKApi {\n return this._sdkApi;\n }\n}\n","import { container } from \"@composition/core\";\nimport { WidgetsService } from \"./widgets_service\";\n\ncontainer.registerSingleton<WidgetsService>();\n","import { container } from \"./core\";\n\n// import '../core/composition';\nimport \"../widgets/base/widgets_service/composition\";\n\n// import '../adapters/dateTimeSource/composition';\n// import '../adapters/uuidGenerator/composition';\n// import '../effects/eventHandler/composition';\n// import '../effects/logger/composition';\n// import '../effects/timer/composition';\n\ncontainer.registerSingleton<Window>(() => window);\nexport { container };\n","import { SDKApi } from \"@skd_api\";\n\nexport const array_string = \"[object Array]\";\nexport const ops = Object.prototype.toString;\nexport const fnPrototype = Function.prototype;\nexport const bind = fnPrototype.bind;\nexport const arPrototype = Array.prototype;\nexport const obPrototype = Object.prototype;\nexport const push = arPrototype.push;\nexport const slice = arPrototype.slice;\nexport const concat = arPrototype.concat;\nexport const obKeys = Object.keys;\nexport const obHasOwnProp = obPrototype.hasOwnProperty;\nexport const toString = obPrototype.toString;\nexport const isArray =\n Array.isArray ||\n function (e) {\n return toString.call(e) === \"[object Array]\";\n };\n// Matches dashed string for camelizing\nexport const rmsPrefix = /^-ms-/;\nexport const rdashAlpha = /-([\\da-z])/gi;\nexport const fcamelCase = function (letter: string) {\n return letter.toUpperCase();\n};\n\n// private methods\nexport const isObject = function (e: any) {\n var t = typeof e;\n return t === \"function\" || (t === \"object\" && !!e);\n};\nexport const isNumber = function (t: any) {\n return toString.call(t) === \"[object Number]\";\n};\n\nexport const isNumeric = function (n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\n// isEmpty = function(e) {\n// if (e == null)\n// return !0;\n// if (isArray(e) || isString(e) || isArguments(e))\n// return e.length === 0;\n// for (var t in e)\n// if (p.has(e, t))\n// return !1;\n// return !0\n// },\nexport const has = function (e: Object, t: string) {\n return e != null && obHasOwnProp.call(e, t);\n};\nexport const keys = function (e: Object) {\n if (!isObject(e)) return [];\n if (obKeys) return obKeys(e);\n var t = [];\n for (var n in e) has(e, n) && t.push(n);\n return t;\n};\nconst d = function (e: Function, t?: Object, n?: number) {\n if (t === void 0) return e;\n switch (n == null ? 3 : n) {\n case 1:\n return function (n: any) {\n return e.call(t, n);\n };\n case 2:\n return function (n: any, r: any) {\n return e.call(t, n, r);\n };\n case 3:\n return function (n: any, r: any, i: any) {\n return e.call(t, n, r, i);\n };\n case 4:\n return function (n: any, r: any, i: any, s: any) {\n return e.call(t, n, r, i, s);\n };\n }\n return function () {\n return e.apply(t, arguments);\n };\n};\nexport const each = function <T>(e: Array<T>, t: (value: T, index: string | number, arr: Array<T>) => void, n?: Object) {\n if (e == null) return e;\n t = d(t, n) as (value: T, index: string | number, arr: Array<T>) => void;\n var r: number,\n i: number = e.length;\n if (i === +i) for (r = 0; r < i; ++r) t(e[r], r, e);\n else {\n var s: Array<string> = keys(e);\n for (r = 0, i = s.length; r < i; ++r) t((e as { [key in string]: any })[s[r]], s[r], e);\n }\n return e;\n};\nexport const forEach = each;\nexport const extend = function <T extends Record<string, any>, R extends Array<Partial<T>> = Array<Partial<T>>>(e: Partial<T>, ...args: R): T {\n var t, n;\n for (var r = 1, i = arguments.length; r < i; r++) {\n t = arguments[r];\n for (n in t) obHasOwnProp.call(t, n) && ((e as Record<string, any>)[n] = t[n]);\n }\n return e as T;\n};\nexport const isEmptyObject = function (obj: Object): boolean {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n};\n\nexport const expando = function (): string {\n return \"app\" + (\"\" + Math.random()).replace(/\\D/g, \"\");\n};\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE9-11+\n// Microsoft forgot to hump their vendor prefix (#9572)\nexport const camelCase = function (string: string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n};\n\nexport const proxy = function <T extends (...args: any[]) => any>(func: T, obj?: Object): () => ReturnType<T> {\n if (typeof func != \"function\") {\n return func;\n }\n\n // If obj is empty or another set another object\n if (!obj) {\n // @ts-ignore\n obj = this;\n }\n\n return function () {\n return func.apply(obj, arguments as unknown as any[]);\n };\n};\n\n/*\n hasData: function( elem ) {\n return data_user.hasData( elem ) || data_priv.hasData( elem );\n},\n\ndata: function( elem, name, data ) {\n return data_user.access( elem, name, data );\n},\n\nremoveData: function( elem, name ) {\n data_user.remove( elem, name );\n},\n */\n\nexport const data = function <T>(elem: HTMLElement, name: string, data?: T): T | undefined {\n return data_user.access(elem, name, data);\n};\n\nexport const getTagData = function (element: HTMLElement, key: string) {\n return element.dataset[key];\n};\n\nexport const getTagDataAsNumber = function (element: HTMLElement, key: string): number | undefined {\n const data = element.dataset[key];\n if (data == null) {\n return undefined;\n }\n return parseInt(data);\n};\n\nexport const setTagData = function (element: HTMLElement, key: string, value: string): void {\n element.dataset[key] = value;\n};\nvar rnotwhite = /\\S+/g;\nclass Data {\n static uid: number = 1;\n static accepts(owner: HTMLElement): boolean {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n /* jshint -W018 */\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n }\n\n private expando: string;\n private cache: Record<string, any>;\n constructor() {\n // Support: Android<4,\n // Old WebKit does not have Object.preventExtensions/freeze method,\n // return new empty object instead with no [[set]] accessor\n Object.defineProperty((this.cache = {}), 0, {\n get: function () {\n return {};\n },\n });\n\n this.expando = expando() + String(Data.uid++);\n }\n\n public key(owner: HTMLElement) {\n const _owner = owner as HTMLElement & { [key in string]: any };\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return the key for a frozen object.\n if (!Data.accepts(_owner)) {\n return 0;\n }\n\n var descriptor: Record<string, any> = {},\n // Check if the owner object already has a cache key\n unlock = _owner[this.expando];\n\n // If not, create one\n if (!unlock) {\n unlock = Data.uid++;\n\n // Secure it in a non-enumerable, non-writable property\n try {\n descriptor[this.expando] = { value: unlock };\n Object.defineProperties(_owner, descriptor);\n\n // Support: Android<4\n // Fallback to a less secure definition\n } catch (e) {\n descriptor[this.expando] = unlock;\n extend(_owner, descriptor);\n }\n }\n\n // Ensure the cache object\n if (!this.cache[unlock]) {\n this.cache[unlock] = {};\n }\n\n return unlock;\n }\n public set(owner: HTMLElement, data: string | Object, value: Object) {\n var prop,\n // There may be an unlock assigned to this node,\n // if there is no entry for this \"owner\", create one inline\n // and set the unlock as though an owner entry had always existed\n unlock = this.key(owner),\n cache = this.cache[unlock];\n\n // Handle: [ owner, key, value ] args\n if (typeof data === \"string\") {\n cache[data] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Fresh assignments by object are shallow copied\n if (isEmptyObject(cache)) {\n extend(this.cache[unlock], data);\n // Otherwise, copy the properties one-by-one to the cache object\n } else {\n for (prop in data) {\n //@ts-ignore\n cache[prop] = data[prop];\n }\n }\n }\n return cache;\n }\n public get(owner: HTMLElement, key: string) {\n // Either a valid cache is found, or will be created.\n // New caches will be created and the unlock returned,\n // allowing direct access to the newly created\n // empty data object. A valid owner object must be provided.\n var cache = this.cache[this.key(owner)];\n\n return key === undefined ? cache : cache[key];\n }\n public access(owner: HTMLElement, key: string, value: any) {\n var stored;\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || (key && typeof key === \"string\" && value === undefined)) {\n stored = this.get(owner, key);\n\n return stored !== undefined ? stored : this.get(owner, camelCase(key));\n }\n\n // [*]When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n }\n public remove(owner: HTMLElement, key: string): void {\n var i,\n name,\n camel,\n unlock = this.key(owner),\n cache = this.cache[unlock];\n\n if (key === undefined) {\n this.cache[unlock] = {};\n } else {\n // Support array or space separated string of keys\n if (isArray(key)) {\n // If \"name\" is an array of keys...\n // When data is initially created, via (\"key\", \"val\") signature,\n // keys will be converted to camelCase.\n // Since there is no way to tell _how_ a key was added, remove\n // both plain key and camelCase key. #12786\n // This will only penalize the array argument path.\n name = key.concat(key.map(camelCase));\n } else {\n camel = camelCase(key);\n // Try the string as a key before any manipulation\n if (key in cache) {\n name = [key, camel];\n } else {\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n name = camel;\n name = name in cache ? [name] : name.match(rnotwhite) || [];\n }\n }\n\n i = name.length;\n while (i--) {\n delete cache[name[i]];\n }\n }\n }\n public hasData(owner: HTMLElement): boolean {\n const _owner = owner as HTMLElement & { [key: string]: any };\n return !isEmptyObject(this.cache[_owner[this.expando]] || {});\n }\n public discard(owner: HTMLElement): void {\n const _owner = owner as HTMLElement & { [key: string]: any };\n if (_owner[this.expando]) {\n delete this.cache[_owner[this.expando]];\n }\n }\n}\n\n// var data_priv = new Data();\nconst data_user = new Data();\n\nexport const getSlideDuration = function (sdkApi: SDKApi, storyId: number, slideIndex: number) {\n return sdkApi.getSlideDuration(storyId, slideIndex) ?? 10000;\n};\n\nexport const getWinWidth = function (env: Window) {\n return env.innerWidth || env.document.documentElement.clientWidth || env.document.body.clientWidth;\n};\n\nexport const getWinHeight = function (env: Window) {\n return env.innerHeight || env.document.documentElement.clientHeight || env.document.body.clientHeight;\n};\n\nexport const sendStatisticEventToApp = function (\n sdkApi: SDKApi,\n name: string,\n data: Record<string, string | number>,\n devPayload?: Record<string, string | number>\n) {\n sdkApi.sendStatisticEvent(name, data, devPayload);\n};\n\nexport const getValueOrException = function <T>(value: T | undefined | null, message: string): T {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n};\n\nexport const getValueOrDefault = function <T>(value: T | undefined | null, defaultValue: T): T {\n if (value == null) {\n return defaultValue;\n }\n return value;\n};\n\nexport const getElementBounding = (env: Window, rect: DOMRect) => {\n var wWidth = getWinWidth(env);\n var wHeight = getWinHeight(env);\n\n var bounding = {\n absolute: {\n width: rect.width,\n height: rect.height,\n left: rect.left,\n right: 0,\n center: {\n x: rect.x + rect.width / 2,\n y: rect.y + rect.height / 2,\n },\n },\n width: (rect.width / wWidth) * 100,\n height: (rect.height / wHeight) * 100,\n left: (rect.left / wWidth) * 100,\n right: 0,\n center: {\n x: ((rect.x + rect.width / 2) / wWidth) * 100,\n y: ((rect.y + rect.height / 2) / wHeight) * 100,\n },\n };\n bounding.right = bounding.left + bounding.width;\n bounding.absolute.right = rect.left + rect.width;\n\n return bounding;\n};\n\nexport const toArray = <T = any>(value: any): Array<T> => Array.prototype.slice.call(value) as Array<T>;\n\nexport const addClass = (target: HTMLElement, className: string): void => {\n var arr = target.className.split(\" \");\n if (arr.indexOf(className) === -1) {\n target.className += \" \" + className;\n }\n};\nexport const removeClass = (target: HTMLElement, className: string): void => {\n target.className = target.className.replace(new RegExp(\"(?:^|\\\\s)\" + className + \"(?:\\\\s|$)\"), \" \").trim();\n};\nexport const classList = (target: HTMLElement): Array<string> => {\n if (target.classList !== undefined) {\n return toArray(target.classList);\n }\n return target.className.split(\" \");\n};\nexport const hasClass = (target: HTMLElement, className: string): boolean => classList(target).indexOf(className) !== -1;\n\nexport const Clipboard = (function (window: Window, document: Document, navigator: Navigator) {\n let textArea: HTMLTextAreaElement;\n function isOS() {\n return navigator.userAgent.match(/ipad|iphone/i);\n }\n\n function createTextArea(text: string): void {\n textArea = document.createElement(\"textArea\") as HTMLTextAreaElement;\n textArea.value = text;\n document.body.appendChild(textArea);\n }\n\n function selectText() {\n if (isOS()) {\n const range = document.createRange();\n range.selectNodeContents(textArea);\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n textArea.setSelectionRange(0, 999999);\n } else {\n textArea.select();\n }\n }\n\n function copyToClipboard() {\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n const copy = function (text: string): void {\n createTextArea(text);\n selectText();\n copyToClipboard();\n };\n\n return {\n copy,\n };\n})(window, document, navigator);\n","import { addClass, classList, hasClass, removeClass, toArray } from \"@utils\";\nimport { IAnimation } from \"./animation.h\";\n\nvar supportAnimate = document.documentElement.animate !== undefined;\nsupportAnimate = false; // tmp off\n\nvar _intervals: Array<number> = [];\n\nvar _startShakeAnimation = function (element: HTMLElement) {\n var step = 0;\n return window.setInterval(function () {\n if (element) {\n switch (step) {\n case 0:\n element.style.setProperty(\"transform\", \"translate(1px, 1px) rotate(0deg)\");\n break;\n case 10:\n element.style.setProperty(\"transform\", \"translate(-1px, -2px) rotate(-1deg)\");\n break;\n case 20:\n element.style.setProperty(\"transform\", \"translate(-3px, 0px) rotate(1deg)\");\n break;\n case 30:\n element.style.setProperty(\"transform\", \"translate(3px, 2px) rotate(0deg)\");\n break;\n case 40:\n element.style.setProperty(\"transform\", \"translate(1px, -1px) rotate(1deg)\");\n break;\n case 50:\n element.style.setProperty(\"transform\", \"translate(-1px, 2px) rotate(-1deg)\");\n break;\n case 60:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg)\");\n break;\n case 70:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg)\");\n break;\n case 80:\n element.style.setProperty(\"transform\", \"translate(-1px, -1px) rotate(1deg)\");\n break;\n case 90:\n element.style.setProperty(\"transform\", \"translate(1px, 2px) rotate(0deg)\");\n break;\n case 100:\n element.style.setProperty(\"transform\", \"translate(1px, -2px) rotate(-1deg)\");\n break;\n }\n step += 10;\n if (step > 100) {\n step = 0;\n }\n }\n }, 100);\n};\n\nvar _startExpandShakeAnimation = function (element: HTMLElement) {\n var step = 0;\n return window.setInterval(function () {\n if (element) {\n switch (step) {\n case 0:\n element.style.setProperty(\"transform\", \"translate(1px, 1px) rotate(0deg) scale(1.1)\");\n break;\n case 10:\n element.style.setProperty(\"transform\", \"translate(-1px, -2px) rotate(-1deg) scale(1.1)\");\n break;\n case 20:\n element.style.setProperty(\"transform\", \"translate(-3px, 0px) rotate(1deg) scale(1.1)\");\n break;\n case 30:\n element.style.setProperty(\"transform\", \"translate(3px, 2px) rotate(0deg) scale(1.1)\");\n break;\n case 40:\n element.style.setProperty(\"transform\", \"translate(1px, -1px) rotate(1deg) scale(1.1)\");\n break;\n case 50:\n element.style.setProperty(\"transform\", \"translate(-1px, 2px) rotate(-1deg) scale(1.1)\");\n break;\n case 60:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg) scale(1.1)\");\n break;\n case 70:\n element.style.setProperty(\"transform\", \"translate(3px, 1px) rotate(-1deg) scale(1.1)\");\n break;\n case 80:\n element.style.setProperty(\"transform\", \"translate(-1px, -1px) rotate(1deg) scale(1.1)\");\n break;\n case 90:\n element.style.setProperty(\"transform\", \"translate(1px, 2px) rotate(0deg) scale(1.1)\");\n break;\n case 100:\n element.style.setProperty(\"transform\", \"translate(1px, -2px) rotate(-1deg) scale(1.1)\");\n break;\n }\n step += 10;\n if (step > 100) {\n step = 0;\n }\n }\n }, 100);\n};\n\nvar _startBlurAnimation = function (element: HTMLElement) {\n const listener = (e: TransitionEvent) => {\n if (e.propertyName === \"filter\" && e.target != null) {\n const target = e.target as HTMLElement;\n if (hasClass(target, \"animated\")) {\n if (target.style.filter === \"blur(0px)\" || target.style.filter === \"\") {\n setTimeout(function () {\n target.style.filter = \"blur(5px)\";\n }, 10);\n } else if (target.style.filter === \"blur(5px)\") {\n setTimeout(function () {\n target.style.filter = \"blur(0px)\";\n }, 10);\n }\n } else {\n target.style.filter = \"\";\n target.removeEventListener(\"transitionend\", listener);\n }\n }\n };\n element.addEventListener(\"transitionend\", listener);\n};\n\nvar shortDuration = {\n duration: 1000,\n iterations: 1,\n};\nvar longDuration = {\n duration: 10000,\n iterations: 1,\n};\nvar extraLongDuration = {\n duration: 20000,\n iterations: 1,\n};\nvar longInfinityDuration = {\n duration: 10000,\n iterations: Infinity,\n};\n\nvar getAnimationFunction = function (element: HTMLElement): () => void {\n if (!hasClass(element, \"animated\")) {\n if (hasClass(element, \"narrative-element-animation-shake\")) {\n if (element.parentElement && hasClass(element.parentElement, \"narrative-element-expand\")) {\n return function () {\n _intervals.push(_startExpandShakeAnimation(element));\n addClass(element, \"animated\");\n };\n } else {\n return function () {\n _intervals.push(_startShakeAnimation(element));\n addClass(element, \"animated\");\n };\n }\n } else if (hasClass(element, \"narrative-element-animation-blur\")) {\n return function () {\n _startBlurAnimation(element);\n addClass(element, \"animated\");\n };\n } else {\n return function () {\n addClass(element, \"active\");\n addClass(element, \"animated\");\n };\n }\n }\n return function () {};\n};\n\nexport const animationApi: IAnimation = {\n start: function (slide: HTMLElement, animate: boolean = false) {\n if (supportAnimate && animate) {\n // for editor, todo add .reset-animation to narrative-editor-slide && clear that\n if (!hasClass(slide, \"narrative-slide\")) {\n addClass(slide, \"reset-animation\");\n }\n\n const elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n\n elements.forEach(element => {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n var _classList = classList(element);\n\n if (_classList.indexOf(\"narrative-element-animation-fade-in-up\") !== -1) {\n element.animate(\n {\n transform: [\"translateY(\" + height + \"px)\", \"translateY(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-down\") !== -1) {\n element.animate(\n {\n transform: [\"translateY(\" + -1 * height + \"px)\", \"translateY(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-left\") !== -1) {\n element.animate(\n {\n transform: [\"translateX(\" + -1 * width + \"px)\", \"translateX(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-right\") !== -1) {\n element.animate(\n {\n transform: [\"translateX(\" + width + \"px)\", \"translateX(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-blur\") !== -1) {\n element.animate(\n [\n { filter: \"blur(5px)\", offset: 0 },\n { filter: \"blur(0px)\", offset: 0.5 },\n { filter: \"blur(5px)\", offset: 1 },\n ],\n longInfinityDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-focus-in\") !== -1) {\n element.animate({ filter: [\"blur(12px)\", \"blur(0px)\"], opacity: [0, 1] }, shortDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-left\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateX(\" + 0.08 * width + \"px)\", \"scale(1.2) translateX(\" + -0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-right\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateX(\" + -0.08 * width + \"px)\", \"scale(1.2) translateX(\" + 0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-up\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateY(\" + 0.08 * width + \"px)\", \"scale(1.2) translateY(\" + -0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-down\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateY(\" + -0.08 * width + \"px)\", \"scale(1.2) translateY(\" + 0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-zoom\") !== -1) {\n element.animate({ transform: [\"scale(1)\", \"scale(1.2)\"] }, longDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-zoom-out\") !== -1) {\n element.animate({ transform: [\"scale(1.2)\", \"scale(1)\"] }, longDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-shake\") !== -1) {\n element.animate(\n [\n { transform: \"translate(1px, 1px) rotate(0deg)\", offset: 0 },\n { transform: \"translate(-1px, -2px) rotate(-1deg)\", offset: 0.1 },\n { transform: \"translate(-3px, 0px) rotate(1deg)\", offset: 0.2 },\n { transform: \"translate(3px, 2px) rotate(0deg)\", offset: 0.3 },\n { transform: \"translate(1px, -1px) rotate(1deg)\", offset: 0.4 },\n { transform: \"translate(-1px, 2px) rotate(-1deg)\", offset: 0.5 },\n { transform: \"translate(-3px, 1px) rotate(0deg)\", offset: 0.6 },\n { transform: \"translate(3px, 1px) rotate(-1deg)\", offset: 0.7 },\n { transform: \"translate(-1px, -1px) rotate(1deg)\", offset: 0.8 },\n { transform: \"translate(1px, 2px) rotate(0deg)\", offset: 0.9 },\n { transform: \"translate(1px, -2px) rotate(-1deg)\", offset: 1 },\n ],\n { duration: 1000, iterations: Infinity, composite: \"add\" }\n );\n }\n });\n\n if (elements.length > 0) {\n requestAnimationFrame(() => removeClass(slide, \"reset-animation\"));\n }\n } else {\n addClass(slide, \"animation-fallback\");\n\n type SavedAnimation = { cb: () => void; timerId?: number; timeout: number; needResume?: boolean };\n const animations: Array<SavedAnimation> = [];\n\n // просто Array\n\n var elements = slide.querySelectorAll<HTMLElement>(\".narrative-element-animation\");\n var isEditorSlide = hasClass(slide, \"narrative-editor-slide\");\n for (var i = 0; i < elements.length; i++) {\n if (!isEditorSlide && !elements[i].style.getPropertyValue(\"--width\")) {\n var rects = elements[i].getBoundingClientRect();\n var width = rects.width;\n var height = rects.height;\n if (width && height) {\n elements[i].style.setProperty(\"--width\", width + \"px\");\n elements[i].style.setProperty(\"--height\", height + \"px\");\n }\n }\n (function (element) {\n var timeout = 50;\n\n if (element.getAttribute(\"data-animation-timeout\") && parseFloat(element.getAttribute(\"data-animation-timeout\") ?? \"0\")) {\n timeout = parseFloat(element.getAttribute(\"data-animation-timeout\") ?? \"0\") * 1000;\n }\n\n const cb = () => {\n getAnimationFunction(element)();\n if (animation) {\n animation.timerId = undefined;\n }\n };\n const animation: SavedAnimation = {\n cb,\n timeout,\n timerId: window.setTimeout(cb, timeout),\n };\n animations.push(animation);\n })(elements[i]);\n }\n\n var startAt = new Date().getTime();\n // onstop && onpause\n return function (isStop: boolean) {\n for (var animation of animations) {\n if (animation[\"timerId\"] !== undefined) {\n clearTimeout(animation[\"timerId\"]);\n animation[\"timerId\"] = undefined;\n animation[\"timeout\"] -= new Date().getTime() - startAt;\n animation[\"needResume\"] = !isStop;\n }\n }\n\n // resume\n return function () {\n startAt = new Date().getTime();\n for (const animation of animations) {\n if (animation[\"timerId\"] === undefined && animation[\"needResume\"] === true) {\n animation[\"timerId\"] = window.setTimeout(animation[\"cb\"], animation[\"timeout\"]);\n }\n }\n };\n };\n }\n },\n\n stop: function (slide: HTMLElement, animate: boolean) {\n if (supportAnimate && animate) {\n /** @type {HTMLElement[]} */\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n animation.cancel();\n });\n });\n } else {\n for (var i = 0; i < _intervals.length; i++) {\n clearInterval(_intervals[i]);\n }\n\n if (slide) {\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n for (var i = 0; i < elements.length; i++) {\n removeClass(elements[i], \"active\");\n removeClass(elements[i], \"animated\");\n elements[i].style.setProperty(\"transform\", \"\");\n elements[i].style.setProperty(\"filter\", \"\");\n }\n }\n }\n },\n\n pause: function (slide: HTMLElement): void {\n if (supportAnimate) {\n /* var elements = document.querySelectorAll('.narrative-element-animation');\n elements = _toArray(elements);\n\n elements.forEach(function(el) {\n el.playState = \"paused\";\n // el.currentTime = 0;\n });*/\n\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n if (animation.playState !== \"finished\" && animation.playState === \"running\") {\n animation.pause();\n }\n });\n });\n\n // slide.getAnimations().forEach(function (animation) {\n // if (animation.playState !== 'finished' && animation.playState === 'running') {\n // animation.pause();\n // }\n // });\n }\n },\n resume: function (slide: HTMLElement): void {\n if (supportAnimate) {\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n if (animation.playState === \"paused\") {\n animation.play();\n }\n });\n });\n }\n },\n reset: function (slide: HTMLElement): void {\n // _addClass(slide, 'reset-animation');\n },\n};\n","import { APIResponse, SDKApi } from \"@skd_api\";\nimport { isArray, isNumber, isObject } from \"@utils\";\nimport { Widgets, WidgetsSharedDataMap } from \"../../widgets/base\";\nimport { animationApi, IAnimation } from \"@animation\";\nimport { SDKInterface } from \"../es_module_sdk_api.h\";\n\ndeclare class Toast {\n constructor(options: { content: string });\n}\n\nexport class EsModuleSdkApi implements SDKApi {\n constructor(private readonly sdkBinding: () => SDKInterface) {}\n\n getStoryServerData(storyId: number): Record<string, any> | null {\n return this.sdkBinding().getStoryServerData(storyId);\n }\n\n getSlideDuration(storyId: number, slideIndex: number): number | null {\n return this.sdkBinding().getSlideDuration(storyId, slideIndex);\n }\n\n showNextSlide(duration: number): void {\n this.sdkBinding().showNextSlide(duration);\n }\n\n sendStatisticEvent(name: string, data: Record<string, string | number>, devPayload?: Record<string, string | number>): void {\n this.sdkBinding().sendStatisticEvent(name, data, devPayload);\n }\n\n getStoryLocalData(): Promise<Record<string, any>> {\n return this.sdkBinding().getStoryLocalData();\n }\n\n isExistsShowLayer(): boolean {\n return true;\n }\n\n showLayer(index: number) {\n this.sdkBinding().showLayer(index);\n }\n\n get storyAnimation() {\n return animationApi;\n }\n\n get isAndroid(): boolean {\n return false;\n }\n get isIOS(): boolean {\n return false;\n }\n\n get isWeb(): boolean {\n return true;\n }\n\n pauseUI() {\n this.sdkBinding().pauseUI();\n }\n resumeUI() {\n this.sdkBinding().resumeUI();\n }\n\n get isExistsShowStoryTextInput(): boolean {\n return true;\n }\n\n showStoryTextInput(id: string, data: Record<string, any>): void {\n this.sdkBinding().showStoryTextInput(id, data);\n }\n\n setStoryLocalData(keyValue: Record<string, any>, sendToServer: boolean) {\n this.sdkBinding().setStoryLocalData(keyValue, sendToServer);\n }\n\n getWidgetsSharedData<WidgetType extends keyof WidgetsSharedDataMap>(storyId: number, widget: Widgets): WidgetsSharedDataMap[WidgetType] | null {\n return this.sdkBinding().getWidgetsSharedData<WidgetType>(storyId, widget);\n }\n\n vibrate(pattern: number): void {\n navigator.vibrate(pattern);\n }\n\n openUrl(target: string): void {\n this.sdkBinding().openUrl(target);\n }\n\n sendApiRequest<ResponseDTO>(\n url: string,\n method: string,\n params: Record<string, any> | null,\n headers: Record<string, any> | null,\n data: Record<string, any> | null,\n profilingKey: string\n ): Promise<APIResponse<ResponseDTO>> {\n return this.sdkBinding().sendApiRequest(url, method, params, headers, data, profilingKey);\n }\n\n sendApiRequestSupported(): boolean {\n return true;\n }\n showToast(text: string): void {}\n\n get sdkCanSendShareComplete(): boolean {\n return true;\n }\n\n get isExistsShare(): boolean {\n return true;\n }\n\n share(\n id: string,\n config: {\n url?: string | null;\n text?: string | null;\n title?: string | null;\n files?: Array<{\n file: File;\n name: string;\n type: string;\n }> | null;\n }\n ) {\n this.sdkBinding().share(id, config);\n }\n\n shareSlideScreenshot(shareId: string, hideElementsSelector?: string): void {\n this.sdkBinding().shareSlideScreenshot(shareId, hideElementsSelector);\n }\n\n get isExistsShowStorySlide(): boolean {\n return true;\n }\n\n showStorySlide(index: number): void {\n this.sdkBinding().showStorySlide(index);\n }\n\n get isExistsShowNextStory(): boolean {\n return true;\n }\n storyShowNext(): void {\n this.sdkBinding().storyShowNext();\n }\n}\n","import {\n data,\n extend,\n forEach,\n getSlideDuration,\n getTagData,\n getTagDataAsNumber,\n getValueOrDefault,\n getValueOrException,\n sendStatisticEventToApp,\n slice,\n} from \"@utils\";\nimport { container } from \"@composition\";\nimport { WidgetOptionsBase } from \"./base.h\";\nimport { WidgetsService } from \"./widgets_service/widgets_service\";\n\nexport class WidgetBase<WidgetOptions extends WidgetOptionsBase> {\n /**\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-1488919713\n */\n declare [\"constructor\"]: typeof WidgetBase;\n\n static DEFAULTS: WidgetOptionsBase = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n static widgetIndex = 0;\n\n protected env = WidgetBase.widgetsService.env;\n protected sdkApi = WidgetBase.widgetsService.sdkApi;\n protected options: WidgetOptions = null!;\n protected element: HTMLElement = null!;\n protected elementId: string = null!;\n protected slide: HTMLElement = null!;\n protected slideIndex: number = null!;\n protected disableTimer: boolean = null!;\n protected layoutDirection: \"ltr\" | \"rtl\" = \"ltr\";\n protected storyId: number = null!;\n protected widgetDone: Element | null = null;\n protected showWidgetCompleteToast: boolean = null!;\n protected submitButtonAnimatedView: HTMLElement | null = null;\n protected submitButtonView: HTMLElement | null = null;\n protected submitButtonViewHeight: number = 0;\n protected savedData: Record<string, any> | null = null;\n protected localData: Record<string, any> = null!;\n protected firstOpenTime: number = 0;\n protected id: string;\n\n constructor(\n element: HTMLElement,\n options: Partial<WidgetOptions>,\n elementIdGetter?: (element: HTMLElement) => string,\n slideGetter?: (element: HTMLElement) => HTMLElement\n ) {\n this.options = extend<WidgetOptions>({}, this.constructor.DEFAULTS as WidgetOptions, options);\n this.element = element;\n if (elementIdGetter) {\n this.elementId = elementIdGetter(this.element);\n } else {\n this.elementId = getValueOrException(getTagData(this.element, \"elementId\"), \"Empty elementId\");\n }\n\n if (slideGetter) {\n this.slide = slideGetter(this.element);\n } else {\n this.slide = getValueOrException(this.element.closest<HTMLElement>(\".narrative-slide\"), \"Empty slide\");\n }\n\n this.slideIndex = getValueOrException(getTagDataAsNumber(this.slide, \"index\"), \"Empty slideIndex\");\n this.disableTimer = getTagData(this.slide, \"disableTimer\") === \"1\";\n\n this.storyId = getValueOrException(getTagDataAsNumber(this.slide, \"id\"), \"Empty storyId\");\n\n if (this.env.getComputedStyle(this.element).direction === \"rtl\") {\n this.layoutDirection = \"rtl\";\n } else {\n this.layoutDirection = \"ltr\";\n }\n this.element.dir = this.layoutDirection;\n\n if (this.element.parentElement != null) {\n this.widgetDone = this.element.parentElement?.nextElementSibling; // geometry + .widget-sent-toast\n if (this.widgetDone) {\n if (!this.widgetDone.classList.contains(\"widget-sent-toast\")) {\n this.widgetDone = null;\n }\n }\n }\n this.showWidgetCompleteToast = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"showWidgetCompleteToast\"), 0));\n if (!this.showWidgetCompleteToast) {\n this.widgetDone = null;\n }\n\n if (this.element != null) {\n this.submitButtonAnimatedView = this.element.querySelector(\".submit-button-animated-view\");\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonView = this.submitButtonAnimatedView.querySelector(\".submit-button-view\");\n if (this.submitButtonView != null) {\n this.submitButtonViewHeight = this.submitButtonView.clientHeight;\n }\n }\n }\n\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, this.options.localData ?? {});\n\n this.id = `w_${this.elementId}_${WidgetBase.widgetIndex}`;\n ++WidgetBase.widgetIndex;\n }\n\n public refreshUserData(localData: Record<string, any>): void {}\n\n public static widgetCacheKey = \"ias.story-element\";\n public static widgetClassName = \"\";\n\n public static getInstance<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(element: HTMLElement): Widget | undefined {\n return data<Widget>(element, this.widgetCacheKey);\n }\n\n public static getInstanceById<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(id: string): Widget | undefined {\n const widgetsElements = slice.call(this.widgetsService.env.document.querySelectorAll(`.${this.widgetClassName}`));\n let widget: Widget | undefined;\n forEach(widgetsElements, (element, index) => {\n const localWidget = data<Widget>(element, this.widgetCacheKey);\n if (localWidget && localWidget.id === id) {\n widget = localWidget;\n }\n });\n\n return widget;\n }\n\n public static createInstance<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n instantiate: (element: HTMLElement, options: Partial<WidgetOptions>) => Widget,\n element: HTMLElement,\n options: Partial<WidgetOptions>\n ): Widget {\n // get from objects cache (just Map<key, data> where key assigned to HTMLElement)\n let instance = WidgetBase.getInstance<Widget, WidgetOptions>(element);\n if (instance == null) {\n // can throw Error\n instance = instantiate(element, options);\n // save object in cache by key associated with HTMLElement\n data(element, WidgetBase.widgetCacheKey, instance);\n }\n\n return instance;\n }\n\n public static initWidgets<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n instantiate: (element: HTMLElement, options: Partial<WidgetOptions>) => Widget,\n elements: Array<HTMLElement>,\n localData?: Record<string, any>\n ): Promise<Record<string, any>> {\n if (localData != null) {\n forEach(elements, element => {\n this.createInstance<Widget, WidgetOptions>(instantiate, element, {\n slide: null,\n localData,\n } as WidgetOptions);\n });\n return Promise.resolve(localData);\n } else {\n return new Promise<Record<string, any>>(resolve => {\n this.getLocalData().then(localData => {\n forEach(elements, element => {\n this.createInstance<Widget, WidgetOptions>(instantiate, element, {\n slide: null,\n localData,\n } as WidgetOptions);\n });\n resolve(localData);\n });\n });\n }\n }\n\n public static get widgetsService(): WidgetsService {\n return container.get<WidgetsService>();\n }\n\n public static getLocalData(): Promise<Record<string, any>> {\n return this.widgetsService.sdkApi.getStoryLocalData();\n }\n\n public getLocalData(): Promise<Record<string, any>> {\n return this.constructor.getLocalData();\n }\n\n public static setLocalData(keyValue: Record<string, any>, sendToServer?: boolean, syncWithRuntimeLocalData?: boolean) {\n // push json object as string\n if (sendToServer === undefined) {\n sendToServer = true;\n } else {\n sendToServer = Boolean(sendToServer);\n }\n if (syncWithRuntimeLocalData === undefined) {\n syncWithRuntimeLocalData = true;\n } else {\n syncWithRuntimeLocalData = Boolean(syncWithRuntimeLocalData);\n }\n\n if (syncWithRuntimeLocalData) {\n this.getLocalData().then(localData => {\n // 1 - old values, 2 - new values\n keyValue = extend({}, localData, keyValue);\n\n // todo make async via promise or async\n this.widgetsService.sdkApi.setStoryLocalData(keyValue, sendToServer);\n });\n } else {\n // todo make async via promise or async\n this.widgetsService.sdkApi.setStoryLocalData(keyValue, sendToServer);\n }\n }\n\n public setLocalData(keyValue: Record<string, any>, sendToServer?: boolean, syncWithRuntimeLocalData?: boolean) {\n return this.constructor.setLocalData(keyValue, sendToServer, syncWithRuntimeLocalData);\n }\n\n public static sendStatisticEventToApp(name: string, data: Record<string, string | number>, devPayload?: Record<string, string | number>) {\n sendStatisticEventToApp(this.widgetsService.sdkApi, name, data, devPayload);\n }\n\n public sendStatisticEventToApp(name: string, data: Record<string, string | number>, devPayload?: Record<string, string | number>) {\n this.constructor.sendStatisticEventToApp(name, data, devPayload);\n }\n\n public showNextSlide() {\n this.sdkApi.showNextSlide(getSlideDuration(this.sdkApi, this.storyId, this.slideIndex));\n }\n\n protected _showLayout(layers: Array<HTMLElement>, selectIndex: number, withStatEvent: boolean = false): void {\n if (this.sdkApi.isExistsShowLayer()) {\n this.sdkApi.showLayer(selectIndex);\n } else {\n forEach(layers, (layer, index) => {\n if (index === selectIndex) {\n layer.classList.remove(\"hidden\");\n this.sdkApi.storyAnimation?.start(layer);\n } else {\n layer.classList.add(\"hidden\");\n }\n });\n }\n if (withStatEvent) {\n this._statEventLayoutShow(selectIndex);\n }\n }\n\n protected _statEventLayoutShow(layoutIndex: number): void {\n try {\n this.sendStatisticEventToApp(\n \"layout-show\",\n {\n i: this.storyId,\n si: this.slideIndex,\n li: layoutIndex,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n layout_index: layoutIndex,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n public static refreshUserData<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n nodes: NodeListOf<HTMLElement>,\n localData?: Record<string, any>\n ): void {\n const cb = (el: HTMLElement, localData: Record<string, any>) => {\n const widgetElement = el.closest<HTMLElement>(`.${this.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetBase.getInstance<Widget, WidgetOptions>(widgetElement);\n if (widget) {\n widget.refreshUserData(localData);\n }\n }\n };\n\n if (localData != null) {\n const elements: Array<HTMLElement> = slice.call(nodes);\n forEach(elements, el => cb(el, localData));\n } else {\n WidgetBase.getLocalData().then(localData => {\n const elements: Array<HTMLElement> = slice.call(nodes);\n forEach(elements, el => cb(el, localData));\n });\n }\n }\n}\n","import { addClass, Clipboard, getTagData, removeClass, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetCopyOptions } from \"./copy.h\";\n\nexport class WidgetCopy extends WidgetBase<WidgetCopyOptions> {\n static DEFAULTS: WidgetCopyOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-copy\";\n\n private button: HTMLElement | null;\n private clipboardTarget: string | undefined;\n private isPromotionalCode: boolean;\n private state: number | null;\n private msgNetworkError: string | undefined;\n private msgServiceError: string | undefined;\n private msgNoMoreCodes: string | undefined;\n private msgTryAgain: string | undefined;\n private geometry: HTMLElement | null;\n private resultLayer: HTMLElement | null;\n private resultLayerGeometry: HTMLElement | null;\n constructor(element: HTMLElement, options: Partial<WidgetCopyOptions>) {\n super(element, options);\n\n this.button = this.element.querySelector(\".narrative-element-text-lines\");\n\n this.clipboardTarget = getTagData(element, \"clipboardTarget\");\n this.isPromotionalCode = getTagData(element, \"clipboardType\") === \"promocode\";\n\n this.state = null;\n\n this.msgNetworkError = getTagData(this.element, \"msgNetworkError\");\n this.msgServiceError = getTagData(this.element, \"msgServiceError\");\n this.msgNoMoreCodes = getTagData(this.element, \"msgNoMoreCodes\");\n this.msgTryAgain = getTagData(this.element, \"msgTryAgain\");\n\n this.geometry = this.element.closest(\".narrative-element-geometry\");\n\n this.resultLayer = this.slide.querySelector(\".narrative-element-copy-result-variant\");\n if (this.resultLayer && this.geometry) {\n this.resultLayerGeometry = this.resultLayer.closest(\".narrative-element-geometry\");\n\n // create align center\n if (this.resultLayerGeometry) {\n var baseComputedGeometry = window.getComputedStyle(this.geometry);\n var resultComputedGeometry = window.getComputedStyle(this.resultLayerGeometry);\n\n if (parseFloat(resultComputedGeometry.width) < parseFloat(baseComputedGeometry.width)) {\n // prevent resultLayer shrinking\n this.resultLayerGeometry.style.setProperty(\"width\", parseFloat(baseComputedGeometry.width) + \"px\");\n resultComputedGeometry = window.getComputedStyle(this.resultLayerGeometry);\n }\n\n var geometryCenter = parseFloat(baseComputedGeometry.left) + parseFloat(baseComputedGeometry.width) / 2;\n var resultLayerGeometryWidth = parseFloat(resultComputedGeometry.width);\n var newResultLayerGeometryLeft = geometryCenter - resultLayerGeometryWidth / 2;\n\n this.resultLayerGeometry.style.setProperty(\"left\", newResultLayerGeometryLeft + \"px\");\n }\n }\n\n if (this.isPromotionalCode) {\n this.fetchPromoCode();\n }\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {}\n\n private isTransparentElement(): boolean {\n if (this.element) {\n try {\n var color = window.getComputedStyle(this.element).color;\n if (color === \"transparent\" || color === \"rgba(0, 0, 0, 0)\" || color === \"rgba(0,0,0,0)\") {\n return true;\n }\n } catch (err) {\n console.error(err);\n }\n }\n return false;\n }\n\n private changeText(newText: string): void {\n if (this.button) {\n this.button.textContent = newText;\n }\n }\n\n private fetchPromoCode(): void {\n this.state = 0;\n\n if (this.localData[\"_cp_g_\" + this.elementId + \"_pc\"] !== undefined) {\n this.state = 1;\n this.clipboardTarget = this.localData[\"_cp_g_\" + this.elementId + \"_pc\"];\n if (this.clipboardTarget != null) {\n this.changeText(this.clipboardTarget);\n }\n removeClass(this.element, \"loader\");\n }\n\n if (this.state === 0) {\n if (!this.isTransparentElement()) {\n // for transparent element\n addClass(this.element, \"loader\");\n }\n\n // fetch promo code\n var path = \"story/\" + this.storyId + \"/widget/\" + this.elementId + \"/promo-code/\" + this.clipboardTarget;\n var headers = {\n accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n };\n var profileKey = \"fetch-promo-code\";\n\n Promise.all([\n this.sdkApi.sendApiRequest<{ code: string }>(path, \"POST\", null, headers, null, profileKey),\n new Promise<void>(function (t, e) {\n return setTimeout(t, 300);\n }),\n ]).then(values => {\n var r = values[0];\n\n var status = r.status;\n var code = null;\n var success = false;\n if (status === 200 || status === 201) {\n if (r.data) code = r.data.code;\n if (code) {\n // success case\n this.clipboardTarget = code;\n this.changeText(this.clipboardTarget);\n success = true;\n this.state = 1;\n removeClass(this.element, \"loader\");\n\n if (status === 201) {\n this.localData[\"_cp_g_\" + this.elementId + \"_pc_fetched_at\"] = Math.round(new Date().getTime() / 1000);\n this.localData[\"_&ts_cp_g_\" + this.elementId + \"_pc_fetched_at\"] = Math.round(new Date().getTime() / 1000);\n }\n this.localData[\"_cp_g_\" + this.elementId + \"_pc\"] = code;\n\n this.setLocalData(this.localData, true);\n } else {\n this.msgNoMoreCodes && this.sdkApi.showToast(this.msgNoMoreCodes);\n }\n } else if (status === 12163 || status === 12002) {\n this.msgNetworkError && this.sdkApi.showToast(this.msgNetworkError);\n } else {\n this.msgServiceError && this.sdkApi.showToast(this.msgServiceError);\n }\n\n if (!success) {\n this.state = 3;\n this.changeText(this.msgTryAgain ?? \"\");\n removeClass(this.element, \"loader\");\n }\n });\n }\n }\n\n public getStateValue(): number | null {\n return this.state;\n }\n\n public getIsPromotionalCode(): boolean {\n return this.isPromotionalCode;\n }\n\n private _statEventCopyClick(clipboardTarget: string): void {\n try {\n var buttonText = this.button?.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-copy\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: buttonText,\n wt: clipboardTarget,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: buttonText,\n widget_value: clipboardTarget,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private _select(): void {\n this.element.classList.add(\"done\");\n if (this.resultLayer) {\n this.resultLayer.classList.add(\"done\");\n }\n\n if (this.disableTimer) {\n // флаг - что таймер уже стартанул (в layout или добавить объект sharedMemory)\n // смотрим что прозрачный текст - тогда и лоадер прозрачный\n // _log(\"_showNarrativeNextSlide: \" + getSlideDuration(this.narrativeId, this.slideIndex), true);\n this.showNextSlide();\n }\n }\n\n public copyToClipboard(element: HTMLElement): void {\n this._select();\n\n var text = this.clipboardTarget ?? \"\";\n\n Clipboard.copy(text);\n\n this.completeWidget();\n\n this._statEventCopyClick(text);\n }\n\n private completeWidget(): void {\n this.localData[\"_cp_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n\n // ответ на вопрос\n this.localData[\"_&ts_cp_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_cp_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetCopy.refreshUserData,\n initWidget: function (nodeList: NodeListOf<HTMLElement>, localData?: Record<string, any>) {\n // prevent initWidget for result layer\n const elements = slice.call(nodeList).filter(element => !element.classList.contains(\"narrative-element-copy-result-variant\"));\n WidgetCopy.initWidgets<WidgetCopy, WidgetCopyOptions>((element, options) => new WidgetCopy(element, options), elements, localData);\n },\n\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetCopy.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetCopy.getInstance<WidgetCopy, WidgetCopyOptions>(widgetElement);\n if (widget) {\n if (!widget.getIsPromotionalCode()) {\n widget.copyToClipboard(element);\n } else if (widget.getStateValue() === 1) {\n widget.copyToClipboard(element);\n } else if (widget.getStateValue() === 3) {\n widget.fetchPromoCode();\n }\n }\n }\n return false;\n },\n };\n}\n","/** QUIZ */\nimport { extend, getElementBounding, getValueOrException, slice } from \"@utils\";\nimport { WidgetDataInputOptions } from \"./data_input.h\";\nimport { WidgetBase } from \"../base\";\n\nexport class WidgetDataInput extends WidgetBase<WidgetDataInputOptions> {\n static DEFAULTS = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-data-input\";\n\n private label: HTMLElement | null;\n private elementRect: DOMRect;\n private inputElement: HTMLElement;\n private textElement: HTMLElement;\n private inputPlaceholderValue: string;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetDataInputOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.elementRect = this.element.getBoundingClientRect();\n\n this.inputElement = getValueOrException(this.element.querySelector<HTMLElement>(\".input-view .input\"), \"Empty .input-view .input\");\n this.textElement = getValueOrException(\n this.inputElement.querySelector<HTMLElement>(\".narrative-element-text-lines\"),\n \"Empty .narrative-element-text-lines\"\n );\n this.inputPlaceholderValue = this.textElement.innerHTML;\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n var text = this.localData[\"_di_g_\" + this.elementId + \"_t\"];\n this._fillUserText(text);\n if (text) {\n this.element.classList.add(\"done\");\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n }\n\n private _statEventFocusIn() {\n try {\n var labelText = this.label ? this.label.textContent ?? \"\" : \"\";\n\n WidgetBase.sendStatisticEventToApp(\n \"w-data-input-focus\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private _statEventInputSave(answerText: string) {\n try {\n const labelText = this.label ? this.label.textContent ?? \"\" : \"\";\n\n WidgetBase.sendStatisticEventToApp(\n \"w-data-input-save\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wv: answerText,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_value: answerText,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n public isDone() {\n return Boolean(this.localData[\"_di_g_\" + this.elementId + \"_t\"]);\n }\n\n public click(element: HTMLElement) {\n if (this.isDone()) {\n return true;\n }\n\n this.elementRect = this.element.getBoundingClientRect();\n\n if (this.sdkApi.isAndroid || this.sdkApi.isWeb) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n if (this.sdkApi.isExistsShowStoryTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showStoryTextInput(this.id, data);\n\n this._statEventFocusIn();\n }\n\n return false;\n }\n\n private _fillUserText(text: string) {\n if (this.inputElement && this.textElement) {\n if (text) {\n this.inputElement.classList.remove(\"_is-placeholder\");\n text = text.replace(new RegExp(\"\\r?\\n\", \"g\"), \"<br />\");\n this.textElement.innerHTML = text;\n } else {\n this.inputElement.classList.add(\"_is-placeholder\");\n this.textElement.innerHTML = this.inputPlaceholderValue;\n }\n }\n }\n\n public setUserText(text: string) {\n this.slide.classList.remove(\"data-input-editing\");\n this.slide.classList.remove(\"blured\");\n\n var needResumeUITimer = true;\n\n if (text) {\n this._fillUserText(text);\n\n this.localData[\"_di_g_\" + this.elementId + \"_t\"] = text;\n // answer to question\n this.localData[\"_&ts_di_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n this.setLocalData(this.localData, true);\n\n this._statEventInputSave(text);\n\n if (this.disableTimer) {\n if (\"_showNarrativeNextSlide\" in window) {\n this.showNextSlide();\n needResumeUITimer = false;\n }\n }\n }\n if (needResumeUITimer && !this.disableTimer) {\n this.sdkApi.resumeUI();\n }\n }\n\n public static api = {\n refreshUserData: WidgetDataInput.refreshUserData,\n initWidget: function (nodeList: NodeListOf<HTMLElement>, localData?: Record<string, any>) {\n WidgetDataInput.initWidgets<WidgetDataInput, WidgetDataInputOptions>(\n (element, options) => new WidgetDataInput(element, options),\n slice.call(nodeList),\n localData\n );\n },\n\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetDataInput.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetDataInput.getInstance<WidgetDataInput, WidgetDataInputOptions>(widgetElement);\n if (widget) {\n return widget.click(element);\n }\n }\n return true;\n },\n\n setUserData: function (id: string, text: string) {\n WidgetDataInput.getInstanceById<WidgetDataInput, WidgetDataInputOptions>(id)?.setUserText(text);\n },\n };\n}\n","import { forEach, getTagData, getTagDataAsNumber, getValueOrException, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetDateCountdownOptions } from \"./date_countdown.h\";\n\nexport class WidgetDateCountdown extends WidgetBase<WidgetDateCountdownOptions> {\n static DEFAULTS: WidgetDateCountdownOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n layers: [],\n };\n\n public static widgetClassName = \"narrative-element-date-countdown\";\n\n private label: HTMLElement | null;\n private layers: Array<HTMLElement>;\n private messages: {\n days: string;\n hours: string;\n minutes: string;\n seconds: string;\n };\n private timestampSeconds: number;\n private diff: number;\n private timerInited: boolean;\n private pendingUpdate: boolean;\n\n private firstGroup1: HTMLElement;\n private firstGroup2: HTMLElement;\n private firstGroupCaption: HTMLElement;\n\n private secondGroup1: HTMLElement;\n private secondGroup2: HTMLElement;\n private secondGroupCaption: HTMLElement;\n\n private thirdGroup1: HTMLElement;\n private thirdGroup2: HTMLElement;\n private thirdGroupCaption: HTMLElement;\n\n constructor(element: HTMLElement, options: Partial<WidgetDateCountdownOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.messages = {\n days: getTagData(this.element, \"tDays\") ?? \"\",\n hours: getTagData(this.element, \"tHours\") ?? \"\",\n minutes: getTagData(this.element, \"tMinutes\") ?? \"\",\n seconds: getTagData(this.element, \"tSeconds\") ?? \"\",\n };\n\n this.timestampSeconds = getValueOrException(getTagDataAsNumber(this.element, \"timestampSeconds\"), \"Empty timestampSeconds\");\n this.diff = 0;\n\n this.timerInited = false;\n this.pendingUpdate = true;\n\n this.layers = this.options.layers;\n\n // if (false) {\n // // if (sendApiRequestSupported()) {\n // // fetch project time\n // var path = \"story/\" + this.storyId + \"/widget/\" + this.elementId + \"/timestamp\";\n // var profileKey = \"fetch-story-timestamp\";\n // this.sdkApi\n // .sendApiRequest<{ timestamp: number }>(path, \"GET\", null, null, null, profileKey)\n // .then(response => {\n // var status = response.status;\n // var timestamp = null;\n // if (status === 200) {\n // if (response.data) timestamp = response.data.timestamp;\n // if (timestamp) {\n // this.diff = new Date().getTime() - timestamp * 1000;\n // }\n // }\n //\n // this.initTimer();\n // })\n // .catch( (reason)=> {\n // console.error(reason);\n // this.initTimer();\n // });\n // } else {\n this.initTimer();\n // }\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {}\n\n private pause(): void {\n if (this.timerInited) {\n this.pendingUpdate = false;\n }\n }\n private resume(): void {\n if (this.timerInited) {\n this.pendingUpdate = true;\n this.updateTimer();\n }\n }\n\n private initTimer(): void {\n // find groups\n this.firstGroup1 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-1 .date-output-label-1\"), \"Empty firstGroup1\");\n this.firstGroup2 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-1 .date-output-label-2\"), \"Empty firstGroup2\");\n this.firstGroupCaption = getValueOrException(\n this.element.querySelector<HTMLElement>(\".date-item-view-group-1 .date-item-caption\"),\n \"Empty firstGroupCaption\"\n );\n\n this.secondGroup1 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-2 .date-output-label-1\"), \"Empty secondGroup1\");\n this.secondGroup2 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-2 .date-output-label-2\"), \"Empty secondGroup2\");\n this.secondGroupCaption = getValueOrException(\n this.element.querySelector<HTMLElement>(\".date-item-view-group-2 .date-item-caption\"),\n \"Empty secondGroupCaption\"\n );\n\n this.thirdGroup1 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-3 .date-output-label-1\"), \"Empty thirdGroup1\");\n this.thirdGroup2 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-3 .date-output-label-2\"), \"Empty thirdGroup2\");\n this.thirdGroupCaption = getValueOrException(\n this.element.querySelector<HTMLElement>(\".date-item-view-group-3 .date-item-caption\"),\n \"Empty thirdGroupCaption\"\n );\n\n this.timestampSeconds *= 1000;\n\n this.timerInited = true;\n\n var value = this.timestampSeconds - (new Date().getTime() - this.diff);\n if (value > 0) {\n this._showLayout(this.layers, 0);\n }\n\n this.updateTimer();\n }\n\n private updateTimer(): void {\n var value = this.timestampSeconds - (new Date().getTime() - this.diff);\n if (value > 0) {\n var result = this._asDuration(Math.round(value / 1000));\n\n if (result.days) {\n this.firstGroupCaption.textContent = this.messages.days;\n this.firstGroup1.textContent = result.day1;\n this.firstGroup2.textContent = result.day2;\n\n this.secondGroupCaption.textContent = this.messages.hours;\n this.secondGroup1.textContent = result.hour1;\n this.secondGroup2.textContent = result.hour2;\n\n this.thirdGroupCaption.textContent = this.messages.minutes;\n this.thirdGroup1.textContent = result.minute1;\n this.thirdGroup2.textContent = result.minute2;\n } else {\n this.firstGroupCaption.textContent = this.messages.hours;\n this.firstGroup1.textContent = result.hour1;\n this.firstGroup2.textContent = result.hour2;\n\n this.secondGroupCaption.textContent = this.messages.minutes;\n this.secondGroup1.textContent = result.minute1;\n this.secondGroup2.textContent = result.minute2;\n\n this.thirdGroupCaption.textContent = this.messages.seconds;\n this.thirdGroup1.textContent = result.second1;\n this.thirdGroup2.textContent = result.second2;\n }\n\n // this.pendingUpdate = true;\n } else {\n this.pendingUpdate = false;\n this._showLayout(this.layers, 1);\n }\n\n if (this.pendingUpdate) {\n this.env.requestAnimationFrame(() => this.updateTimer());\n }\n }\n\n private _asDuration(value: number | undefined | null) {\n var result = {\n days: false,\n day1: \"0\",\n day2: \"0\",\n hour1: \"0\",\n hour2: \"0\",\n minute1: \"0\",\n minute2: \"0\",\n second1: \"0\",\n second2: \"0\",\n };\n\n if (value === undefined || value === null) {\n return result;\n }\n if (value < 0) {\n return result;\n }\n value = Math.floor(value);\n var days = Math.floor((value / 86400) % 365);\n var hours = Math.floor((value / 3600) % 24);\n var minutes = Math.floor((value / 60) % 60);\n var seconds = value % 60;\n\n var pair;\n if (days > 0) {\n result.days = true;\n if (days < 10) result.day2 = String(days);\n else {\n pair = String(days).split(\"\");\n result.day1 = pair[0];\n result.day2 = pair[1];\n }\n }\n\n if (hours < 10) result.hour2 = String(hours);\n else {\n pair = String(hours).split(\"\");\n result.hour1 = pair[0];\n result.hour2 = pair[1];\n }\n\n if (minutes < 10) result.minute2 = String(minutes);\n else {\n pair = String(minutes).split(\"\");\n result.minute1 = pair[0];\n result.minute2 = pair[1];\n }\n\n if (seconds < 10) result.second2 = String(seconds);\n else {\n pair = String(seconds).split(\"\");\n result.second1 = pair[0];\n result.second2 = pair[1];\n }\n return result;\n }\n\n public static api = {\n refreshUserData: WidgetDateCountdown.refreshUserData,\n initWidget: function (nodeList: NodeListOf<HTMLElement>, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n WidgetDateCountdown.initWidgets<WidgetDateCountdown, WidgetDateCountdownOptions>(\n (element, options) => new WidgetDateCountdown(element, { ...options, layers }),\n slice.call(nodeList),\n localData\n );\n },\n\n pause: function (nodeList: NodeListOf<HTMLElement>): void {\n forEach(slice.call(nodeList), function (el, index) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(el)?.pause();\n });\n },\n resume: function (nodeList: NodeListOf<HTMLElement>): void {\n forEach(slice.call(nodeList), function (el, index) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(el)?.resume();\n });\n },\n };\n}\n","import { WidgetBase } from \"../base\";\nimport { forEach, getTagData, getTagDataAsNumber, isNumeric, isObject } from \"@utils\";\n\nconst displaySlide = function (slides: Array<HTMLElement>, localData: Record<string, any>) {\n const multiSlideItem = slides[0];\n\n let storyId: number | undefined = undefined;\n let slideIndex: number | undefined = undefined;\n\n if (multiSlideItem != null) {\n storyId = getTagDataAsNumber(multiSlideItem, \"id\");\n slideIndex = getTagDataAsNumber(multiSlideItem, \"index\");\n\n if (\n multiSlideItem.querySelectorAll(\n \".narrative-element-share[data-with-layer='1'], .narrative-element-poll-layers, .narrative-element-date-countdown, .narrative-element-game\"\n ).length > 0\n ) {\n // skip if exists share/poll_layers\n return;\n }\n }\n\n // score\n var score = null;\n var selectedIndex: number | undefined = undefined;\n if (localData[\"q_score\"] !== undefined) {\n score = parseInt(localData[\"q_score\"]);\n } else if (localData[\"t_score\"] !== undefined) {\n score = parseInt(localData[\"t_score\"]);\n } else if (localData[\"qg_score\"] !== undefined) {\n score = localData[\"qg_score\"]; // array\n\n var tmpScore = score;\n if (isObject(score)) {\n tmpScore = Object.values(score);\n }\n tmpScore.sort();\n tmpScore.reverse();\n\n if (tmpScore[0] === tmpScore[1]) {\n forEach(slides, function (slide, index) {\n var minScore = getTagData(slide, \"layerMinScore\");\n if (minScore !== undefined) {\n if (minScore === \"uncertain\") {\n selectedIndex = index as number;\n }\n }\n });\n } else {\n var maxCategoryCnt = 0;\n // find quiz category (selectedCategoryIndex) - chosen most often\n var selectedCategoryIndex: number | undefined = undefined;\n forEach(score, function (value, i) {\n var item = parseInt(value as unknown as string);\n if (item > maxCategoryCnt) {\n maxCategoryCnt = item;\n selectedCategoryIndex = parseInt(i as string);\n }\n });\n\n // chose slide with correct result\n forEach(slides, function (slide, index) {\n var minScore = getTagData(slide, \"layerMinScore\");\n if (minScore !== undefined && isNumeric(minScore) && parseInt(minScore) === selectedCategoryIndex) {\n selectedIndex = index as number;\n }\n });\n }\n }\n\n if (score === null) {\n if (slides.length > 0) {\n var slide = slides[0];\n slide.classList.remove(\"hidden\");\n\n WidgetBase.widgetsService.sdkApi.storyAnimation?.start(slide);\n return;\n }\n score = 0;\n }\n\n if (selectedIndex === undefined) {\n var map: Array<[number, number]> = [];\n forEach(slides, function (slide, index) {\n var minScore = getTagData(slide, \"layerMinScore\");\n if (minScore !== undefined) {\n map.push([index as number, parseInt(minScore)]);\n }\n });\n\n map.sort(function (a, b) {\n return a[1] - b[1];\n });\n\n for (var i = map.length - 1; i >= 0; i--) {\n if (score >= map[i][1]) {\n selectedIndex = map[i][0];\n break;\n }\n }\n }\n\n var undefinedResult = true;\n if (selectedIndex !== undefined) {\n forEach(slides, function (slide, index) {\n if (index === selectedIndex) {\n slide.classList.remove(\"hidden\");\n undefinedResult = false;\n WidgetBase.widgetsService.sdkApi.storyAnimation?.start(slide);\n _sendStatEvent(storyId as number, slideIndex as number, selectedIndex);\n }\n });\n }\n\n if (undefinedResult) {\n console.warn(\"undefinedResult layer index\");\n WidgetBase.widgetsService.sdkApi.showLayer(0);\n }\n};\n\nconst _sendStatEvent = function (storyId: number, slideIndex: number, layerIndex: number) {\n try {\n WidgetBase.sendStatisticEventToApp(\"layout-show\", {\n i: storyId,\n si: slideIndex,\n li: layerIndex,\n });\n } catch (error) {\n console.error(error);\n }\n};\n\nexport class WidgetMultiSlide {\n public static api = {\n init: function (slides: Array<HTMLElement>, localData?: Record<string, any>) {\n if (localData != null) {\n displaySlide(slides, localData);\n } else {\n WidgetBase.getLocalData().then(function (localData) {\n displaySlide(slides, localData);\n });\n }\n },\n };\n}\n","import { extend, forEach, getElementBounding, getTagDataAsNumber, getValueOrException, isArray, isNumber, isObject, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetPollOptions, WidgetPollSharedData } from \"./poll.h\";\nimport { Widgets } from \"../base\";\n\nexport class WidgetPoll extends WidgetBase<WidgetPollOptions> {\n static DEFAULTS = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-poll\";\n\n private elementRect: DOMRect;\n private label: HTMLElement | null;\n private percentFillMask: HTMLElement | null;\n private maskedVariants: Array<HTMLElement>;\n private variantsViewGroup: HTMLElement;\n private variants: Array<HTMLElement>;\n private variantsTexts: Array<string>;\n private isInvertedPercentFilledMaskDirection: boolean;\n private getUseResponseOnFirstButton: boolean;\n private getUseResponseOnSecondButton: boolean;\n private showClientTotalResult: boolean;\n private selectedVariant: number | undefined;\n private nativeDialogueWasOpened: boolean = false;\n private answerDuration: number = 0;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetPollOptions>) {\n super(element, options);\n this.elementRect = this.element.getBoundingClientRect();\n\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.percentFillMask = this.element.querySelector<HTMLElement>(\".percent-filled-variants-view-group-mask\");\n this.maskedVariants = slice.call(this.element.querySelectorAll(\".variants-box .variants-view-group.percent-filled-variants-view-group .variant-view\"));\n\n this.variantsViewGroup = getValueOrException(\n this.element.querySelector<HTMLElement>(\".variants-box .variants-view-group:not(.percent-filled-variants-view-group)\"),\n \"Empty variantsViewGroup\"\n );\n this.variants = slice.call(this.variantsViewGroup.querySelectorAll(\".variant-view\"));\n\n this.variantsTexts = [];\n forEach(this.variants, (element, index) => {\n const label = element.querySelector(\".label\");\n if (label) {\n this.variantsTexts.push(label.textContent ?? \"\");\n }\n });\n\n this.isInvertedPercentFilledMaskDirection =\n this.element.classList.contains(\"theme-translucent\") || this.element.classList.contains(\"base-theme-translucent\");\n\n this.getUseResponseOnFirstButton = Boolean(getTagDataAsNumber(this.element, \"getUserResponseOnFirstButton\"));\n this.getUseResponseOnSecondButton = Boolean(getTagDataAsNumber(this.element, \"getUserResponseOnSecondButton\"));\n this.showClientTotalResult = Boolean(getTagDataAsNumber(this.element, \"showClientTotalResult\"));\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n this.selectedVariant = undefined;\n\n if (this.localData) {\n if (this.localData[\"_p_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectVariant(this.localData[\"_p_g_\" + this.elementId + \"_sa\"], true);\n } else {\n this._clearVariantSelection();\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n\n this.nativeDialogueWasOpened = false;\n }\n\n private _statEventPollAnswer(): void {\n this.answerDuration = new Date().getTime() - this.firstOpenTime;\n try {\n if (this.selectedVariant !== undefined) {\n var labelText = this.label?.textContent ?? \"\";\n var variantText = this.variantsTexts[this.selectedVariant] ? this.variantsTexts[this.selectedVariant] : \"\";\n\n this.sendStatisticEventToApp(\n \"w-poll-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wal: variantText,\n d: this.answerDuration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedVariant,\n widget_answer_label: variantText,\n duration_ms: this.answerDuration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _statEventInputSave(responseText: string): void {\n try {\n if (this.selectedVariant !== undefined) {\n var labelText = this.label?.textContent ?? \"\";\n var variantText = this.variantsTexts[this.selectedVariant] ? this.variantsTexts[this.selectedVariant] : \"\";\n\n this.sendStatisticEventToApp(\n \"w-poll-clarification\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wal: variantText,\n wv: responseText,\n d: this.answerDuration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedVariant,\n widget_answer_label: variantText,\n widget_value: responseText,\n duration_ms: this.answerDuration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n _selectVariant(index: number, filled: boolean = false): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedVariant = index;\n\n this.localData[\"_p_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n this.element.classList.add(\"selected-\" + this.selectedVariant);\n if (filled) {\n this.element.classList.add(\"filled\");\n }\n\n if (this.showClientTotalResult) {\n this.element.classList.add(\"with-total-result\");\n this.displayPercents(index, filled);\n }\n\n if (this.disableTimer) {\n this.env.setTimeout(() => {\n // todo poll - если виджет на первом слайде то при повторном заходе автоматически не стартует таймлайн слайда\n // только в web sdk такое\n // если поставить через setTimeout то все ок\n this.showNextSlide();\n });\n }\n }\n\n private _clearVariantSelection(): void {\n forEach(this.variants, function (variant) {\n variant.classList.remove(\"selected\");\n });\n\n this.element.classList.remove(\"done\");\n this.element.classList.remove(\"selected-\" + this.selectedVariant);\n this.element.classList.remove(\"filled\");\n\n this.selectedVariant = undefined;\n\n this.element.classList.remove(\"with-total-result\");\n // this.displayPercents(index, filled);\n }\n\n private selectVariant(variantView: HTMLElement): boolean {\n this.nativeDialogueWasOpened = false;\n\n if (this.selectedVariant !== undefined) {\n return true;\n }\n\n var index = this.variants.indexOf(variantView);\n if (index !== -1) {\n if (this.getUseResponseOnFirstButton && index === 0) {\n if (this.sdkApi.isAndroid) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n this.selectedVariant = index;\n\n if (this.sdkApi.isExistsShowStoryTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n this.nativeDialogueWasOpened = false;\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showStoryTextInput(`${this.id}_first`, data);\n }\n\n this._statEventPollAnswer();\n\n return false;\n } else if (this.getUseResponseOnSecondButton && index === 1) {\n if (this.sdkApi.isAndroid) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n this.selectedVariant = index;\n\n if (this.sdkApi.isExistsShowStoryTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showStoryTextInput(`${this.id}_second`, data);\n }\n\n this._statEventPollAnswer();\n\n return false;\n } else {\n this._selectVariant(index);\n\n this._statEventPollAnswer();\n }\n\n this.completeWidget();\n }\n\n return false;\n }\n\n private _getVariantBoxInPercent(variantIndex: number) {\n var box = {\n sideOffset: 0,\n width: 0,\n };\n\n if (this.variantsViewGroup != null && variantIndex != null && this.variants[0] != null && this.variants[1] != null) {\n var viewGroupWidth = this.variantsViewGroup.clientWidth;\n if (viewGroupWidth > 0) {\n var offset = 0;\n var variantViewMinWidth = 0;\n\n // get min offset for variantView from variants-view-group\n var variantView = this.variants[variantIndex];\n var label = variantView.querySelector(\".label\");\n var percentLabel = variantView.querySelector(\".percent-label\");\n\n if (label != null && percentLabel != null) {\n var variantViewWidth = variantView.clientWidth;\n var labelOffset = (variantViewWidth - label.clientWidth) / 2;\n var percentLabelOffset = (variantViewWidth - percentLabel.clientWidth) / 2;\n offset = Math.min(labelOffset, percentLabelOffset);\n variantViewMinWidth = Math.max(label.clientWidth, percentLabel.clientWidth);\n }\n\n box.sideOffset = (offset / viewGroupWidth) * 100;\n box.width = (variantViewMinWidth / viewGroupWidth) * 100;\n }\n }\n\n return box;\n }\n\n displayPercents(selectedVariantIndex: number, filled: boolean = false): void {\n let pollAllocation: WidgetPollSharedData[string] = [0, 0];\n let pollAllocationTs: number | undefined = undefined;\n const sharedData = this.sdkApi.getWidgetsSharedData<Widgets.Poll>(this.storyId, Widgets.Poll);\n if (sharedData && sharedData[this.elementId] != null && (isObject(sharedData[this.elementId]) || isArray(sharedData[this.elementId]))) {\n pollAllocation = sharedData[this.elementId];\n if (isObject(sharedData[this.elementId])) {\n pollAllocation = slice.call(Object.values(sharedData[this.elementId])) as unknown as WidgetPollSharedData[string];\n }\n pollAllocationTs = sharedData.ts;\n }\n\n // todo debug\n // pollAllocation[0] = 10;\n // pollAllocation[1] = 20;\n\n var pollDoneAt = this.localData[\"_p_g_\" + this.elementId + \"_done_at\"];\n\n if (pollAllocationTs === undefined || pollDoneAt === undefined || pollDoneAt > pollAllocationTs) {\n forEach(this.variants, (element, index) => {\n const key = index as 0 | 1;\n if (pollAllocation[key] === undefined || !isNumber(pollAllocation[key])) {\n pollAllocation[key] = 0;\n }\n if (selectedVariantIndex === key) {\n ++pollAllocation[key];\n }\n });\n }\n\n // calc percents\n var percents: Array<number> = [],\n total = 0;\n forEach(this.variants, (element, index) => {\n const key = index as 0 | 1;\n if (pollAllocation[key] !== undefined) {\n if (!isNumber(pollAllocation[key])) {\n percents[key] = parseInt(String(pollAllocation[key]));\n } else {\n percents[key] = pollAllocation[key];\n }\n\n if (!isNumber(percents[key]) || isNaN(percents[key])) {\n percents[key] = 0;\n }\n } else {\n percents[key] = 0;\n }\n total += percents[key];\n });\n for (var i = 0; i < percents.length; i++) {\n if (total !== 0) {\n percents[i] = Math.round((percents[i] / total) * 100);\n if (percents[i] > 100) {\n percents[i] = 100;\n }\n } else {\n percents[i] = 0;\n }\n }\n\n var percentsTotal = function () {\n var acc = 0;\n for (var i = 0; i < percents.length; i++) {\n acc += percents[i];\n }\n return acc;\n };\n\n var start = new Date().getTime();\n while (percentsTotal() > 100) {\n percents[percents.length - 1]--;\n if (new Date().getTime() - start >= 1000) {\n break;\n }\n }\n\n var variantWithMinPercentsRelativeWidth = 0;\n var variantWithMinPercentsIndex = null;\n forEach(this.variants, (element, index) => {\n const key = index as 0 | 1;\n var percent = percents[key];\n\n var variant = element;\n var maskedVariant = this.maskedVariants[key];\n\n if (this.selectedVariant === key) {\n variant.classList.add(\"selected\");\n if (maskedVariant != null) {\n maskedVariant.classList.add(\"selected\");\n }\n }\n\n var percentLabel = variant.querySelector(\".percent-label\");\n if (percentLabel != null) {\n percentLabel.innerHTML = percent + \"%\";\n }\n var maskedPercentLabel = maskedVariant?.querySelector(\".percent-label\");\n if (maskedPercentLabel != null) {\n maskedPercentLabel.innerHTML = percent + \"%\";\n }\n });\n\n const cb = () => {\n if (\n this.percentFillMask != null &&\n this.variants[0] != null &&\n this.variants[1] != null &&\n this.selectedVariant != null &&\n percents[this.selectedVariant] != null\n ) {\n var selectedVariantPercent = percents[this.selectedVariant];\n var limit = 0;\n var percent = 0;\n\n variantWithMinPercentsIndex = 0;\n if (percents[1] < percents[0]) {\n variantWithMinPercentsIndex = 1;\n }\n\n var boxPercents = this._getVariantBoxInPercent(variantWithMinPercentsIndex);\n variantWithMinPercentsRelativeWidth = boxPercents.width;\n\n var offset = 0;\n if (this.selectedVariant === 0) {\n if (this.isInvertedPercentFilledMaskDirection) {\n if (variantWithMinPercentsIndex === 1) {\n percent = Math.max(variantWithMinPercentsRelativeWidth, 100 - selectedVariantPercent);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, 100 - selectedVariantPercent);\n }\n offset = (50 - percent) / 2;\n\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(0));\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(percent));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n } else {\n if (variantWithMinPercentsIndex === 0) {\n // real variant percent or variantView min width\n percent = Math.max(selectedVariantPercent, variantWithMinPercentsRelativeWidth);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, selectedVariantPercent);\n }\n offset = (50 - percent) / -2;\n\n // decrease alt color from start to firstVariant percents\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(percent));\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(0));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n }\n } else if (this.selectedVariant === 1) {\n if (this.isInvertedPercentFilledMaskDirection) {\n if (variantWithMinPercentsIndex === 0) {\n percent = Math.max(variantWithMinPercentsRelativeWidth, 100 - selectedVariantPercent);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, 100 - selectedVariantPercent);\n }\n offset = (50 - percent) / -2;\n\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(percent));\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(0));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n } else {\n // decrease alt color from end to secondVariant percents\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(0));\n if (variantWithMinPercentsIndex === 1) {\n // real variant percent or variantView min width\n percent = Math.max(selectedVariantPercent, variantWithMinPercentsRelativeWidth);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, selectedVariantPercent);\n }\n offset = (50 - percent) / 2;\n\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(percent));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n }\n }\n }\n };\n\n // if (filled) {\n // cb();\n // } else {\n // wait for percent render done (for calc correct variantView width)\n this.env.requestAnimationFrame(cb);\n // }\n }\n\n public setUserText(text: string, buttonPosition: \"first_button\" | \"second_button\"): void {\n this.slide.classList.remove(\"data-input-editing\");\n this.slide.classList.remove(\"blured\");\n\n if (this.selectedVariant != null) {\n this._selectVariant(this.selectedVariant);\n }\n\n if (!this.disableTimer && this.nativeDialogueWasOpened) {\n this.sdkApi.resumeUI();\n this.nativeDialogueWasOpened = false;\n }\n\n this.localData[\"_p_g_\" + this.elementId + \"_user_response_on_\" + buttonPosition] = text;\n this.completeWidget();\n\n this._statEventInputSave(text);\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_p_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // ответ на вопрос\n this.localData[\"_&ts_p_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_p_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slidePollIsDone(): boolean {\n return this.localData[\"_p_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetPoll.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetPoll.initWidgets<WidgetPoll, WidgetPollOptions>((element, options) => new WidgetPoll(element, options), [element], localData);\n },\n\n /**\n * click\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetPoll.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetPoll.getInstance<WidgetPoll, WidgetPollOptions>(widgetElement);\n if (widget) {\n return widget.selectVariant(element);\n }\n }\n return false;\n },\n\n slidePollIsDone: function (element: HTMLElement) {\n const widget = WidgetPoll.getInstance<WidgetPoll, WidgetPollOptions>(element);\n if (widget) {\n return widget.slidePollIsDone();\n }\n return true;\n },\n setUserData: function (id: string, text: string) {\n // id = widgetId_first || widgetId_second\n let correctWidgetId = id;\n let buttonPosition: \"first_button\" | \"second_button\" | undefined;\n if (id.endsWith(\"_first\")) {\n buttonPosition = \"first_button\";\n correctWidgetId = id.replace(/_first$/, \"\");\n } else if (id.endsWith(\"_second\")) {\n buttonPosition = \"second_button\";\n correctWidgetId = id.replace(/_second$/, \"\");\n }\n\n const widget = WidgetPoll.getInstanceById<WidgetPoll, WidgetPollOptions>(correctWidgetId);\n if (widget && buttonPosition) {\n widget.setUserText(text, buttonPosition);\n }\n },\n };\n}\n","import { forEach, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetPollLayersOptions } from \"./poll_layers.h\";\n\nexport class WidgetPollLayers extends WidgetBase<WidgetPollLayersOptions> {\n static DEFAULTS: WidgetPollLayersOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n layers: [],\n };\n\n public static widgetClassName = \"narrative-element-poll-layers\";\n\n private label: HTMLElement | null;\n private variants: Array<HTMLElement>;\n private variantsTexts: Array<string>;\n private selectedVariant: number | undefined;\n private layers: Array<HTMLElement>;\n\n constructor(element: HTMLElement, options: Partial<WidgetPollLayersOptions>) {\n super(element, options);\n this.layers = this.options.layers;\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view\"));\n\n this.variantsTexts = [];\n forEach(this.variants, (element, index) => {\n const label = element.querySelector(\".label\");\n if (label) {\n this.variantsTexts.push(label.textContent ?? \"\");\n }\n });\n\n this.selectedVariant = undefined;\n\n if (this.slidePollIsDone()) {\n this._selectVariant(this.localData[\"_pl_g_\" + this.elementId + \"_sa\"]);\n } else {\n this._showLayout(this.layers, 0);\n }\n\n this.firstOpenTime = new Date().getTime();\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {}\n\n private _statEventPollVariant(): void {\n try {\n if (this.selectedVariant != null) {\n var labelText = this.label?.textContent ?? \"\";\n var variantText = this.variants[this.selectedVariant]?.textContent ?? \"\";\n var duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-poll-layers-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wal: variantText,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_variant: this.selectedVariant,\n widget_answer_label: variantText,\n duration_ms: duration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectVariant(index: number, userAction: boolean = false): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedVariant = index;\n\n this.localData[\"_pl_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n // main\n var layerIndex = 0;\n if (index === 0) {\n layerIndex = 1;\n } else if (index === 1) {\n layerIndex = 2;\n }\n\n this._showLayout(this.layers, layerIndex, userAction);\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n public selectVariant(variant: HTMLElement): boolean {\n if (this.selectedVariant !== undefined) {\n return true;\n }\n\n var index = this.variants.indexOf(variant);\n if (index !== -1) {\n this._selectVariant(index, true);\n this.completeWidget();\n this._statEventPollVariant();\n }\n return false;\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_pl_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // ответ на вопрос\n this.localData[\"_&ts_pl_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData != null && this.localData[\"_pl_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slidePollIsDone(): boolean {\n return this.localData != null && this.localData[\"_pl_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetPollLayers.refreshUserData,\n // signature variants\n // (widget, layers, undefined) - modern web sdk\n // (widget, undefined, layers) - old web sdk and rn\n // (widget, layers, localData) - native sdk\n initWidget: function (element: HTMLElement, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n if (layers === undefined && localData !== undefined) {\n // @ts-ignore\n layers = localData;\n localData = undefined;\n }\n WidgetPollLayers.initWidgets<WidgetPollLayers, WidgetPollLayersOptions>(\n (element, options) => new WidgetPollLayers(element, { ...options, layers }),\n [element],\n localData\n );\n },\n\n /**\n * click on poll variant\n * @param element\n * @returns {boolean}\n */\n select: function (element: HTMLElement) {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetPollLayers.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetPollLayers.getInstance<WidgetPollLayers, WidgetPollLayersOptions>(widgetElement);\n if (widget) {\n return widget.selectVariant(element);\n }\n }\n return false;\n },\n };\n}\n","import { getTagData, getTagDataAsNumber, getValueOrDefault, getValueOrException, hasClass, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetQuestOptions } from \"./quest.h\";\n\nexport class WidgetQuest extends WidgetBase<WidgetQuestOptions> {\n static DEFAULTS: WidgetQuestOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-quest\";\n\n private selectedAnswer: number | undefined;\n protected label: HTMLElement | null;\n protected variants: Array<HTMLElement>;\n private isWidget: boolean;\n private slideCount: number;\n private nonFinalSlide: boolean;\n private finalSlide: boolean;\n\n constructor(element: HTMLElement, options: Partial<WidgetQuestOptions>) {\n const isWidget = !hasClass(element, \"narrative-slide\");\n const elementIdGetter = (element: HTMLElement) => getValueOrDefault(getTagData(element, \"elementId\"), \"\");\n const slideGetter = (element: HTMLElement) =>\n isWidget ? getValueOrException(element.closest<HTMLElement>(\".narrative-slide\"), \"Empty slide\") : element;\n\n super(element, options, elementIdGetter, slideGetter);\n\n this.isWidget = isWidget;\n this.slideCount = getTagDataAsNumber(this.slide, \"slideCount\") ?? 0;\n this.nonFinalSlide = Boolean(getTagDataAsNumber(this.slide, \"nonFinalSlide\") ?? 0);\n this.finalSlide = !this.isWidget && !this.nonFinalSlide;\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view\"));\n\n this.selectedAnswer = undefined;\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {}\n\n private setStorySessionValue(name: string, value: string): void {\n try {\n var parent = this.element.closest<HTMLElement>(\".stories-item\");\n if (parent) {\n parent.dataset[name] = value;\n } else {\n //@ts-ignore\n this.env[name] = value;\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n private getStorySessionValue(name: string): string | undefined {\n try {\n var parent = this.element.closest<HTMLElement>(\".stories-item\");\n if (parent) {\n return parent.dataset[name];\n } else {\n // @ts-ignore\n return this.env[name];\n }\n } catch (e) {\n console.error(e);\n return undefined;\n }\n }\n\n private init(): boolean {\n if (this.localData) {\n if (this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] !== undefined) {\n // this._selectAnswer(this.localData['_t_g_' + this.elementId + '_sa']);\n // setLocalData(this.localData, false);\n }\n\n if (this.localData[\"_qt_fo_at\"] === undefined) {\n this.localData[\"_qt_fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n\n var lastSlideIdx = this.localData[\"_qt_last_slide_idx\"];\n if (lastSlideIdx !== undefined) {\n lastSlideIdx = parseInt(lastSlideIdx);\n if (\n lastSlideIdx >= 0 &&\n lastSlideIdx < this.slideCount &&\n lastSlideIdx !== this.slideIndex /*&& this.slideIndex === this.firstSlideWithQuestIndex()*/\n ) {\n if (this.getStorySessionValue(\"__storyQuestSlideChanged\") === undefined) {\n // global flag - был сделан переход на нужный слайд, больше не нужно повторять за эту сессию\n this.setStorySessionValue(\"__storyQuestSlideChanged\", \"1\");\n\n if (this.sdkApi.isExistsShowStorySlide) {\n this.sdkApi.showStorySlide(lastSlideIdx);\n return false;\n }\n }\n }\n }\n\n // если этого слайда нет в роутинге (сработал переход по таймеру в app)\n var routes = this._getRoutes();\n if (routes[0].indexOf(this.slideIndex) === -1 && this.finalSlide) {\n if (this.sdkApi.isExistsShowNextStory) {\n this.sdkApi.storyShowNext();\n return false;\n }\n }\n\n // сбор роутинга - все же в selectAnswer\n // + pointer - set in select answer and in simple history back naviation\n\n // Общее поле в сторис - latest slide with viewed quest item\n // только если находимся в диапазоне квеста\n this.localData[\"_qt_last_slide_idx\"] = this.slideIndex;\n // global flag - был сделан переход на нужный слайд, больше не нужно повторять за эту сессию\n this.setStorySessionValue(\"__storyQuestSlideChanged\", \"1\");\n\n // если перешли на слайд (через кнопку - на слайд например) то не будет истории в роутере\n // добавляем сами\n if (this.getLastSlideIndexFromRouteHistory() !== this.slideIndex) {\n this._addNewRouteHistory(this.slideIndex);\n }\n\n this.setLocalData(this.localData, true);\n }\n\n this.firstOpenTime = new Date().getTime();\n\n return true;\n }\n\n private _selectAnswer(index: number, slideIndex: number): void {\n // if (this.answers[index]) {\n // this.answers[index].classList.add('selected');\n // }\n\n this.selectedAnswer = index;\n\n if (this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] === undefined || !Array.isArray(this.localData[\"_qt_g_\" + this.elementId + \"_sa\"])) {\n this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] = [];\n }\n this.localData[\"_qt_g_\" + this.elementId + \"_sa\"].push([index, slideIndex, Math.round(new Date().getTime() / 1000)]);\n // ответ на вопрос\n this.localData[\"_&ts_qt_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.element.classList.add(\"done\");\n\n this._addNewRouteHistory(slideIndex);\n }\n\n public selectAnswer(answer: HTMLElement): boolean {\n // if (this.selectedAnswer !== undefined) {\n // return true;\n // }\n\n var index = this.variants.indexOf(answer);\n if (index !== -1) {\n var slideIndex = getValueOrDefault(getTagDataAsNumber(this.variants[index], \"score\"), 0) - 1;\n\n this._selectAnswer(index, slideIndex);\n this.setLocalData(this.localData, true);\n\n this.env.setTimeout(() => {\n if (slideIndex >= 0 && slideIndex < this.slideCount && this.sdkApi.isExistsShowStorySlide) {\n // global flag - был сделан переход на нужный слайд, больше не нужно повторять за эту сессию\n this.setStorySessionValue(\"__storyQuestSlideChanged\", \"1\");\n this.sdkApi.showStorySlide(slideIndex);\n }\n }, 100);\n }\n\n return true;\n }\n\n public isDone(): boolean {\n return this.localData[\"_qt_done_at\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n public slideQuestIsDone(): boolean {\n return this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n private firstSlideWithQuestIndex(): number {\n return getTagDataAsNumber(this.slide, \"firstSlideWithQuest\") ?? 0;\n }\n\n private lastSlideWithQuestIndex(): number {\n return getTagDataAsNumber(this.slide, \"lastSlideWithQuest\") ?? 0;\n }\n\n private _getRoutes() {\n var routes = this.localData[\"_qt_routes\"];\n if (!Array.isArray(routes)) {\n routes = [[0], 0];\n }\n return routes;\n }\n\n private _addNewRouteHistory(route: number): void {\n var routes = this._getRoutes();\n var _routes = routes[0].slice(0, routes[1] + 1);\n routes[0] = _routes.concat([route]);\n routes[1] = routes[0].length - 1;\n this.localData[\"_qt_routes\"] = routes;\n }\n\n private _routeMvPtrBack() {\n var routes = this._getRoutes();\n var newPtr = routes[1] - 1;\n if (newPtr >= 0 && routes[0][newPtr] !== undefined) {\n routes[1] = newPtr;\n this.localData[\"_qt_routes\"] = routes;\n this.setLocalData(this.localData, true);\n return routes[0][newPtr];\n }\n return false;\n }\n\n private getLastSlideIndexFromRouteHistory() {\n var routes = this._getRoutes();\n return routes[0][routes[1]];\n }\n\n private handleRouteClick(event: { direction: \"backward\" | \"forward\"; slideIndex: number; slideCount: number; click: () => void }): void {\n // event: direction ('backward', 'forward') slideIndex, slideCount\n var directionForward = event.direction === \"forward\";\n var directionBackward = event.direction === \"backward\";\n\n if (this.isWidget) {\n if (directionForward) {\n return;\n } else {\n if (event.slideIndex === 0) {\n // can click back\n event.click();\n } else {\n // by routing - move back\n var moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowStorySlide) {\n this.sdkApi.showStorySlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowStorySlide) {\n // allow move to start - for broken route history\n this.sdkApi.showStorySlide(0);\n }\n }\n return;\n }\n } else {\n // slides without quest form\n // simple slide case\n if (this.nonFinalSlide || event.slideIndex < this.firstSlideWithQuestIndex()) {\n if (directionForward) {\n var nextSlideIndex = event.slideIndex + 1;\n if (nextSlideIndex < this.slideCount) {\n this._addNewRouteHistory(nextSlideIndex);\n this.setLocalData(this.localData, true);\n this.sdkApi.showStorySlide(nextSlideIndex);\n } else {\n if (this.sdkApi.isExistsShowNextStory) {\n this.sdkApi.storyShowNext();\n }\n }\n } else {\n if (event.slideIndex === 0) {\n // move to prev slide\n event.click();\n } else {\n // by routing - move back\n var moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowStorySlide) {\n this.sdkApi.showStorySlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowStorySlide) {\n // allow move to start - for broken route history\n this.sdkApi.showStorySlide(0);\n }\n }\n }\n } else {\n // quest final slide\n if (directionForward) {\n // если клик вперед по финальному слайду из любой ветки - то выходим из сторис\n // var nextSlideIndex = this.lastSlideWithQuestIndex() + 1;\n // if (nextSlideIndex < this.slideCount) {\n // this._addNewRouteHistory(nextSlideIndex);\n // setLocalData(this.localData, true);\n // window._showNarrativeSlide(nextSlideIndex);\n // } else {\n\n if (this.sdkApi.isExistsShowNextStory) {\n this.sdkApi.storyShowNext();\n }\n // }\n } else {\n // by routing - move back\n var moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowStorySlide) {\n this.sdkApi.showStorySlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowStorySlide) {\n // allow move to start - for broken route history\n this.sdkApi.showStorySlide(0);\n }\n }\n }\n }\n }\n\n public static api = {\n refreshUserData: WidgetQuest.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>): Promise<boolean> {\n return new Promise(function (resolve, reject) {\n WidgetQuest.initWidgets<WidgetQuest, WidgetQuestOptions>((element, options) => new WidgetQuest(element, options), [element], localData).then(\n localData => {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n resolve(widget.init());\n } else {\n resolve(true);\n }\n }\n );\n });\n },\n\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetQuest.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n return false;\n },\n\n slideTestIsDone: function (element: HTMLElement): boolean {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n return widget.slideQuestIsDone();\n }\n return true;\n },\n\n handleRouteClick: function (\n element: HTMLElement,\n event: { direction: \"backward\" | \"forward\"; slideIndex: number; slideCount: number; click: () => void }\n ): void {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n widget.handleRouteClick(event);\n }\n },\n };\n}\n","import { extend, forEach, getTagDataAsNumber, getValueOrException, slice } from \"@utils\";\nimport { WidgetQuizOptions } from \"./quiz.h\";\nimport { WidgetBase } from \"../base\";\n\nexport class WidgetQuiz extends WidgetBase<WidgetQuizOptions> {\n static DEFAULTS: WidgetQuizOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-quiz\";\n\n private question: HTMLElement | null;\n private answers: Array<HTMLElement>;\n private questionCount: number;\n private selectedAnswer: number | undefined;\n\n constructor(element: HTMLElement, options: Partial<WidgetQuizOptions>) {\n super(element, options);\n\n this.question = this.element.querySelector<HTMLElement>(\".label-view .label\");\n this.answers = slice.call(this.element.querySelectorAll(\".variants-box .variant-view-group\"));\n this.questionCount = getValueOrException(getTagDataAsNumber(this.slide, \"quizCount\"), \"Empty quizCount\");\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n this.selectedAnswer = undefined;\n\n if (this.localData) {\n if (this.localData[\"_q_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectAnswer(this.localData[\"_q_g_\" + this.elementId + \"_sa\"]);\n this.setLocalData(this.localData, false);\n } else {\n this._clearAnswerSelection();\n }\n\n if (this.localData[\"_q_fo_at\"] === undefined) {\n this.localData[\"_q_fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n }\n\n private _selectAnswer(index: number): void {\n // var hintContainer = null;\n // var hintContainerHeight = null;\n if (this.answers[index]) {\n this.answers[index].classList.add(\"selected\");\n\n // hintContainer = this.answers[index].nextSibling;\n // if (hintContainer && hintContainer.classList.contains('narrative-element-quiz-answer-hint-container')) {\n // hintContainerHeight = hintContainer.getBoundingClientRect().height;\n // hintContainer.style.height = 0;\n // }\n }\n\n this.selectedAnswer = index;\n\n this.localData[\"_q_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = `${this.submitButtonViewHeight}px`;\n }\n });\n\n // if (hintContainer && hintContainerHeight && window.requestAnimationFrame) {\n // requestAnimationFrame(function() {\n // requestAnimationFrame(function() {\n // hintContainer.style.height = hintContainerHeight + 'px';\n // })\n // })\n // }\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n private _clearAnswerSelection(): void {\n forEach(this.answers, function (answer) {\n answer.classList.remove(\"selected\");\n });\n\n this.selectedAnswer = undefined;\n\n this.element.classList.remove(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n }\n });\n }\n\n public selectAnswer(answer: HTMLElement): boolean {\n if (this.selectedAnswer !== undefined) {\n return true;\n }\n\n const selectedAnswerIndex = this.answers.indexOf(answer);\n if (selectedAnswerIndex !== -1) {\n this._selectAnswer(selectedAnswerIndex);\n\n var isCorrect = this.answers[selectedAnswerIndex].classList.contains(\"check\");\n\n this.localData[\"q_score\"] = (this.localData[\"q_score\"] === undefined ? 0 : this.localData[\"q_score\"]) + (isCorrect ? 1 : 0);\n\n var answeredQuestion = 0;\n for (var key in this.localData) {\n if (this.localData.hasOwnProperty(key)) {\n if (/^_q_g_[A-z0-9-_]+_sa$/.test(key)) {\n answeredQuestion++;\n }\n }\n }\n if (this.localData[\"_q_fa_at\"] === undefined) {\n this.localData[\"_q_fa_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n if (answeredQuestion === this.questionCount) {\n this.localData[\"_q_done_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n // ответ на вопрос\n this.localData[\"_&ts_q_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n const self = this;\n setTimeout(function () {\n self.widgetDone?.classList.remove(\"active\");\n setTimeout(function () {\n self.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n try {\n var questionText = this.question ? this.question.textContent ?? \"\" : \"\";\n let answerText = \"\";\n if (this.answers[selectedAnswerIndex]) {\n const answerLabel = this.answers[selectedAnswerIndex].querySelector(\".variant-view .label\");\n if (answerLabel != null && answerLabel.textContent != null) {\n answerText = answerLabel.textContent;\n }\n }\n\n var duration = new Date().getTime() - this.firstOpenTime;\n\n WidgetBase.sendStatisticEventToApp(\n \"w-quiz-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: questionText,\n wa: selectedAnswerIndex,\n wal: answerText,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: questionText,\n widget_answer: selectedAnswerIndex,\n widget_answer_label: answerText,\n duration_ms: duration,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n return false;\n }\n\n public isDone(): boolean {\n return this.localData[\"_q_done_at\"] !== undefined;\n }\n\n public slideQuizIsDone(): boolean {\n return this.localData[\"_q_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetQuiz.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetQuiz.initWidgets<WidgetQuiz, WidgetQuizOptions>((element, options) => new WidgetQuiz(element, options), [element], localData);\n },\n\n /**\n * click on quiz answer\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetQuiz.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetQuiz.getInstance<WidgetQuiz, WidgetQuizOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n return false;\n },\n\n slideQuizIsDone: function (element: HTMLElement) {\n const widget = WidgetQuiz.getInstance<WidgetQuiz, WidgetQuizOptions>(element);\n if (widget) {\n return widget.slideQuizIsDone();\n }\n return true;\n },\n };\n}\n","import { extend, forEach, getTagDataAsNumber, getValueOrDefault, getValueOrException, slice } from \"@utils\";\nimport { WidgetQuizGroupedOptions } from \"./quiz_grouped.h\";\nimport { WidgetBase } from \"../base\";\n\nexport class WidgetQuizGrouped extends WidgetBase<WidgetQuizGroupedOptions> {\n static DEFAULTS = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-quiz-grouped\";\n\n private question: HTMLElement | null;\n private answers: Array<HTMLElement>;\n private questionCount: number;\n private selectedAnswer: number | undefined;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetQuizGroupedOptions>) {\n super(element, options);\n\n this.question = this.element.querySelector<HTMLElement>(\".label-view .label\");\n this.answers = slice.call(this.element.querySelectorAll(\".variants-box .variant-view-group\"));\n this.questionCount = getValueOrException(getTagDataAsNumber(this.slide, \"quizCount\"), \"Empty quizCount\");\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n this.selectedAnswer = undefined;\n\n if (this.localData) {\n if (this.localData[\"_q_gg_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectAnswer(this.localData[\"_q_gg_\" + this.elementId + \"_sa\"]);\n // this._updateScore(this.localData['_q_gg_' + this.elementId + '_sa']);\n this.setLocalData(this.localData, false);\n } else {\n this._clearAnswerSelection();\n }\n\n if (this.localData[\"_qg_fo_at\"] === undefined) {\n this.localData[\"_qg_fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n }\n\n private _selectAnswer(index: number): void {\n if (this.answers[index]) {\n this.answers[index].classList.add(\"selected\");\n }\n\n this.selectedAnswer = index;\n\n this.localData[\"_q_gg_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = this.submitButtonViewHeight + \"px\";\n }\n });\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n private _clearAnswerSelection() {\n forEach(this.answers, function (answer) {\n answer.classList.remove(\"selected\");\n });\n\n this.selectedAnswer = undefined;\n\n this.element.classList.remove(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n }\n });\n }\n\n private _updateScore(index: number) {\n const answerValue = getValueOrDefault(getTagDataAsNumber(this.answers[index], \"value\"), index);\n\n if (this.localData[\"qg_score\"] == null) {\n this.localData[\"qg_score\"] = {};\n }\n\n var sum = 0;\n for (var i = 0; i < this.answers.length; i++) {\n if (this.localData[\"qg_score\"][i] == null) {\n this.localData[\"qg_score\"][i] = 0;\n }\n sum += this.localData[\"qg_score\"][i];\n }\n\n // если еще не ответили на все\n if (sum < this.questionCount) {\n this.localData[\"qg_score\"][answerValue] += 1;\n\n var answeredQuestion = 0;\n for (var key in this.localData) {\n if (this.localData.hasOwnProperty(key)) {\n if (/^_q_gg_[A-z0-9-_]+_sa$/.test(key)) {\n answeredQuestion++;\n }\n }\n }\n if (this.localData[\"_qg_fa_at\"] === undefined) {\n this.localData[\"_qg_fa_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n if (this.localData[\"_qg_done_at\"] === undefined) {\n if (answeredQuestion === this.questionCount) {\n this.localData[\"_qg_done_at\"] = Math.round(new Date().getTime() / 1000);\n }\n }\n\n // ответ на вопрос\n this.localData[\"_&ts_qg_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n }\n }\n\n private selectAnswer(answer: HTMLElement): boolean {\n if (this.selectedAnswer != null) {\n return true;\n }\n\n const selectedAnswerIndex = this.answers.indexOf(answer);\n if (selectedAnswerIndex !== -1) {\n this._selectAnswer(selectedAnswerIndex);\n this._updateScore(selectedAnswerIndex);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n try {\n var questionText = this.question ? this.question.textContent ?? \"\" : \"\";\n var answerText = \"\";\n if (this.answers[selectedAnswerIndex]) {\n var answerLabel = this.answers[selectedAnswerIndex].querySelector(\".variant-view .label\");\n if (answerLabel != null) {\n answerText = answerLabel.textContent ?? \"\";\n }\n }\n var duration = new Date().getTime() - this.firstOpenTime;\n\n WidgetBase.sendStatisticEventToApp(\n \"w-quiz-grouped-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: questionText,\n wa: selectedAnswerIndex,\n wal: answerText,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: questionText,\n widget_answer: selectedAnswerIndex,\n widget_answer_label: answerText,\n duration_ms: duration,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n return false;\n }\n\n public isDone(): boolean {\n return this.localData[\"_qg_done_at\"] !== undefined;\n }\n\n public slideQuizIsDone(): boolean {\n return this.localData[\"_q_gg_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetQuizGrouped.refreshUserData,\n\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetQuizGrouped.initWidgets<WidgetQuizGrouped, WidgetQuizGroupedOptions>(\n (element, options) => new WidgetQuizGrouped(element, options),\n [element],\n localData\n );\n },\n /**\n * click on quiz answer\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetQuizGrouped.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetQuizGrouped.getInstance<WidgetQuizGrouped, WidgetQuizGroupedOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n\n return false;\n },\n\n slideQuizIsDone: function (element: HTMLElement) {\n const widget = WidgetQuizGrouped.getInstance<WidgetQuizGrouped, WidgetQuizGroupedOptions>(element);\n if (widget) {\n return widget.slideQuizIsDone();\n }\n return true;\n },\n };\n}\n","import { extend, getTagData, getValueOrException, isArray, isNumber, isObject, proxy } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetRangeSliderOptions, WidgetRangeSliderSharedData } from \"./range_slider.h\";\nimport { Widgets } from \"../base/base.h\";\n\n// Polyfill Number.isNaN(value)\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN\nNumber.isNaN =\n Number.isNaN ||\n function (value) {\n return typeof value === \"number\" && value !== value;\n };\n\n/**\n * Range feature detection\n * @return {Boolean}\n */\nfunction supportsRange(env: Window) {\n var input = env.document.createElement(\"input\");\n input.setAttribute(\"type\", \"range\");\n return input.type !== \"text\";\n}\n\nconst constants = {\n orientation: {\n horizontal: {\n dimension: \"width\",\n direction: \"left\",\n directionStyle: {\n ltr: \"left\",\n rtl: \"right\",\n },\n coordinate: \"x\",\n },\n vertical: {\n dimension: \"height\",\n direction: \"top\",\n directionStyle: {\n ltr: \"bottom\",\n rtl: \"bottom\",\n },\n coordinate: \"y\",\n },\n },\n} as const;\n\n/**\n * Delays a function for the given number of milliseconds, and then calls\n * it with the arguments supplied.\n */\nfunction delay(env: Window, fn: Function, wait: number): number {\n var args = Array.prototype.slice.call(arguments, 2);\n return env.setTimeout(function () {\n return fn.apply(null, args);\n }, wait);\n}\n\n/**\n * Returns a debounced function that will make sure the given\n * function is not triggered too much.\n *\n * @param {Window} env\n * @param {Function} fn Function to debounce.\n * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the function. (defaults to 100ms)\n * @return {Function}\n */\nfunction debounce(\n env: Window,\n fn: Function & {\n debouncing?: boolean;\n lastReturnVal?: any;\n debounceTimeout?: number;\n },\n debounceDuration: number\n) {\n debounceDuration = debounceDuration || 100;\n return function () {\n if (!fn.debouncing) {\n var args = Array.prototype.slice.apply(arguments);\n fn.lastReturnVal = fn.apply(env, args);\n fn.debouncing = true;\n }\n env.clearTimeout(fn.debounceTimeout);\n fn.debounceTimeout = env.setTimeout(function () {\n fn.debouncing = false;\n }, debounceDuration);\n return fn.lastReturnVal;\n };\n}\n\n/**\n * Check if a `element` is visible in the DOM\n *\n * @param {Element} element\n * @return {Boolean}\n */\nfunction isHidden(element: (HTMLElement & { open?: boolean }) | null) {\n return Boolean(\n element &&\n (element.offsetWidth === 0 ||\n element.offsetHeight === 0 ||\n // Also Consider native `<details>` elements.\n element.open === false)\n );\n}\n\n/**\n * Get hidden parentNodes of an `element`\n *\n * @param {Element} element\n * @return {[type]}\n */\nfunction getHiddenParentNodes(element: HTMLElement) {\n var parents = [],\n node = element.parentNode as HTMLElement;\n\n while (isHidden(node)) {\n parents.push(node);\n node = node.parentNode as HTMLElement;\n }\n return parents;\n}\n\n/**\n * Returns dimensions for an element even if it is not visible in the DOM.\n *\n * @param {Element} element\n * @param {String} key (e.g. offsetWidth …)\n * @return {Number}\n */\nfunction getDimension(element: HTMLElement, key: \"offsetWidth\" | \"offsetHeight\"): number {\n var hiddenParentNodes = getHiddenParentNodes(element),\n hiddenParentNodesLength = hiddenParentNodes.length,\n inlineStyle = [];\n\n // Used for native `<details>` elements\n function toggleOpenProperty(element: HTMLElement & { open?: boolean }) {\n if (typeof element.open !== \"undefined\") {\n element.open = !Boolean(element.open);\n }\n }\n\n // if (hiddenParentNodesLength) {\n // for (var i = 0; i < hiddenParentNodesLength; i++) {\n //\n // // Cache style attribute to restore it later.\n // inlineStyle[i] = hiddenParentNodes[i].style.cssText;\n //\n // // visually hide\n // if (hiddenParentNodes[i].style.setProperty) {\n // hiddenParentNodes[i].style.setProperty('display', 'block', 'important');\n // } else {\n // hiddenParentNodes[i].style.cssText += ';display: block !important';\n // }\n // hiddenParentNodes[i].style.height = '0';\n // hiddenParentNodes[i].style.overflow = 'hidden';\n // hiddenParentNodes[i].style.visibility = 'hidden';\n // toggleOpenProperty(hiddenParentNodes[i]);\n // }\n //\n // // Update dimension\n // dimension = element[key];\n //\n // for (var j = 0; j < hiddenParentNodesLength; j++) {\n //\n // // Restore the style attribute\n // hiddenParentNodes[j].style.cssText = inlineStyle[j];\n // toggleOpenProperty(hiddenParentNodes[j]);\n // }\n // }\n return element[key];\n}\n\n/**\n * Returns the parsed float or the default if it failed.\n *\n * @param {String} str\n * @param {Number} defaultValue\n * @return {Number}\n */\nfunction tryParseFloat(str: string | undefined | null, defaultValue: number): number {\n if (str == null) {\n return defaultValue;\n }\n var value = parseFloat(str);\n return Number.isNaN(value) ? defaultValue : value;\n}\n\n/**\n * Capitalize the first letter of string\n *\n * @param {String} str\n * @return {String}\n */\nfunction ucfirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.substr(1);\n}\n\nfunction insertAfter(elem: HTMLElement, refElem: HTMLElement): HTMLElement | undefined {\n return refElem.parentNode?.insertBefore(elem, refElem.nextSibling);\n}\n\nexport class WidgetRangeSlider extends WidgetBase<WidgetRangeSliderOptions> {\n static DEFAULTS: WidgetRangeSliderOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n\n rangeClass: \"slider-view\",\n activeClass: \"rangeslider--active\",\n horizontalClass: \"rangeslider--horizontal\",\n verticalClass: \"rangeslider--vertical\",\n fillClass: \"slider-fill-view\",\n handleClass: \"slider-handle-view\",\n };\n\n public static widgetClassName = \"narrative-element-range-slider\";\n\n private label: HTMLElement | null;\n private topScale: HTMLElement | null;\n\n private startValue: number;\n private snapPosition: boolean;\n private hasSubmitButton: boolean;\n private elementSlider: HTMLInputElement;\n private elementAverageResult: HTMLElement | null;\n private elementAverageResultTooltip: HTMLElement | null;\n private elementAverageResultTooltipLabelView: HTMLElement | null;\n private orientation: \"horizontal\" | \"vertical\";\n private min: number;\n private max: number;\n private value: number;\n private step: number;\n private toFixed: number;\n private fill: HTMLElement;\n private handle: HTMLElement;\n private range: HTMLElement;\n private DIMENSION: \"width\" | \"height\";\n private DIRECTION: \"left\" | \"top\";\n private DIRECTION_STYLE: \"left\" | \"right\";\n private COORDINATE: \"x\" | \"y\";\n private isClickCapturedBySlider: boolean = false;\n private handleDimension: number;\n private rangeDimension: number;\n private maxHandlePos: number;\n private grabPos: number;\n private position: number;\n private prevSnapValue: number;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetRangeSliderOptions>) {\n super(element, options);\n\n this.hasSubmitButton = Boolean(this.element.querySelector(\".submit-button-view\"));\n this.topScale = this.element.querySelector(\".top-scale-bar-view-group\");\n this.snapPosition = false;\n try {\n this.snapPosition = this.topScale != null && this.topScale.getBoundingClientRect().height > 0;\n } catch (e) {\n console.error(e);\n }\n this.startValue = tryParseFloat(getTagData(this.element, \"startValue\"), 0);\n this.label = this.element.querySelector(\".label-view .label\");\n this.elementSlider = getValueOrException(this.element.querySelector<HTMLInputElement>('input[type=\"range\"]'), \"Empty elementSlider\");\n\n this.elementAverageResult = this.element.querySelector(\".slider-average-result-view\");\n if (this.elementAverageResult != null) {\n this.elementAverageResultTooltip = this.elementAverageResult.querySelector(\".tooltip-view\");\n if (this.elementAverageResultTooltip != null) {\n this.elementAverageResultTooltipLabelView = this.elementAverageResult.querySelector(\".average-result-label-view\");\n }\n }\n\n this.toFixed = (this.step + \"\").replace(\".\", \"\").length - 1;\n this.fill = getValueOrException(this.element.querySelector<HTMLElement>(`.${this.options.fillClass}`), `Empty .${this.options.fillClass}`);\n this.handle = getValueOrException(this.element.querySelector<HTMLElement>(`.${this.options.handleClass}`), `Empty .${this.options.handleClass}`);\n this.range = getValueOrException(this.element.querySelector<HTMLElement>(`.${this.options.rangeClass}`), `Empty .${this.options.rangeClass}`);\n this.range.id = this.id;\n\n // if (this.range.classList.contains(this.options['horizontalClass'])) {\n this.orientation = \"horizontal\";\n // } else if (this.range.classList.contains(this.options['verticalClass'])) {\n // this.orientation = 'vertical';\n // }\n\n this.DIMENSION = constants.orientation[this.orientation].dimension;\n this.DIRECTION = constants.orientation[this.orientation].direction;\n this.DIRECTION_STYLE = constants.orientation[this.orientation].directionStyle[this.layoutDirection];\n this.COORDINATE = constants.orientation[this.orientation].coordinate;\n\n // Store context\n this.handleDown = proxy(this.handleDown, this);\n this.handleMove = proxy(this.handleMove, this);\n this.handleEnd = proxy(this.handleEnd, this);\n\n this.refreshUserData(this.options.localData);\n\n // Attach Events\n // window.addEventListener('resize.' + this.identifier, debounce(function() {\n // // Simulate resizeEnd event.\n // delay(function() {\n // _this.update(false, false);\n // }, 300);\n // }, 20));\n\n this.env.document.addEventListener(\"touchstart\", this.handleDown);\n this.env.document.addEventListener(\"mousedown\", this.handleDown);\n }\n\n public refreshUserData(localData: Record<string, any>) {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n if (this.localData[\"_rs_g_\" + this.elementId + \"_v\"] !== undefined) {\n this.elementSlider.value = String(tryParseFloat(this.localData[\"_rs_g_\" + this.elementId + \"_v\"], 0));\n this.element.classList.add(\"done\");\n this.displayAverageAnswer();\n if (this.disableTimer) {\n this.showNextSlide();\n }\n } else {\n this.elementSlider.value = String(this.startValue);\n this.element.classList.remove(\"done\");\n this.element.classList.remove(\"input-done\");\n }\n\n this.init();\n }\n\n private _statEventInputSave(val: number) {\n try {\n const labelText = this.label?.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-range-slider-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: val,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: val,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n public click(): boolean {\n if (this.isDone()) {\n return true;\n }\n this.completeWidget();\n return false;\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_rs_g_\" + this.elementId + \"_v\"] = tryParseFloat(this.elementSlider.value, 0);\n this.localData[\"_rs_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // answer for question\n this.localData[\"_&ts_rs_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n // hide submit button\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n\n setTimeout(() => {\n // important, displayAverageAnswer need .done at element\n this.element.classList.add(\"done\");\n this.displayAverageAnswer(true);\n }, 200);\n } else {\n // important, displayAverageAnswer need .done at element\n this.element.classList.add(\"done\");\n this.displayAverageAnswer(true);\n }\n });\n\n // if (this.disableTimer) {\n this.showNextSlide();\n // }\n\n this.setLocalData(this.localData, true);\n this._statEventInputSave(this.localData[\"_rs_g_\" + this.elementId + \"_v\"]);\n }\n\n public isDone(): boolean {\n return this.localData[\"_rs_g_\" + this.elementId + \"_v\"] != null;\n }\n\n public getIsClickCapturedBySlider(): boolean {\n return this.isClickCapturedBySlider;\n }\n\n private displayAverageAnswer(withTooltip: boolean = false): void {\n let answerAllocation: WidgetRangeSliderSharedData[string] = {\n total_value: 0,\n total_user: 0,\n };\n let answerAllocationTs: number | undefined = undefined;\n const sharedData = this.sdkApi.getWidgetsSharedData<Widgets.RangeSlider>(this.storyId, Widgets.RangeSlider);\n if (sharedData && sharedData[this.elementId] != null && (isObject(sharedData[this.elementId]) || isArray(sharedData[this.elementId]))) {\n answerAllocation = sharedData[this.elementId];\n answerAllocationTs = sharedData.ts;\n }\n\n const rangeSliderDoneAt = this.localData[\"_rs_g_\" + this.elementId + \"_done_at\"];\n\n if (answerAllocationTs === undefined || rangeSliderDoneAt === undefined || rangeSliderDoneAt > answerAllocationTs) {\n answerAllocation[\"total_value\"] += this.localData[\"_rs_g_\" + this.elementId + \"_v\"];\n ++answerAllocation[\"total_user\"];\n }\n\n let averageValue: number | null = null;\n if (\n answerAllocation[\"total_user\"] !== undefined &&\n isNumber(answerAllocation[\"total_user\"]) &&\n answerAllocation[\"total_value\"] !== undefined &&\n isNumber(answerAllocation[\"total_value\"])\n ) {\n averageValue = Math.round((answerAllocation[\"total_value\"] / answerAllocation[\"total_user\"]) * 10) / 10;\n }\n\n if (this.elementAverageResult != null && averageValue !== null) {\n this.update(true, false);\n\n const positionDimension = this.env.document.documentElement.dir === \"rtl\" ? (\"right\" as const) : (\"left\" as const);\n\n const position = this.getPositionFromValue(averageValue) + this.handleDimension / 2;\n\n this.elementAverageResult.style[positionDimension] = position + \"px\";\n // this.elementAverageResult.style.display = 'block';\n if (withTooltip && this.elementAverageResultTooltipLabelView != null && this.element != null) {\n if (!this.elementAverageResultTooltip?.classList.contains(\"visible\")) {\n this.elementAverageResultTooltip?.classList.add(\"visible\");\n setTimeout(() => {\n if (this.elementAverageResultTooltip && this.elementAverageResultTooltip.classList) {\n this.elementAverageResultTooltip.classList.remove(\"visible\");\n }\n }, 3000);\n }\n\n this.env.requestAnimationFrame(() => {\n var elementBox = this.element.getBoundingClientRect();\n var labelViewBox = this.elementAverageResultTooltipLabelView?.getBoundingClientRect();\n var offset = 0;\n\n // console.log({labelViewBox, elementBox})\n\n if (labelViewBox && labelViewBox.width !== 0) {\n if (labelViewBox.right > elementBox.right) {\n // get -x for translateX with offset to left\n offset = elementBox.right - labelViewBox.right;\n } else if (labelViewBox.left < elementBox.left) {\n // get +x for translateX with offset to right\n offset = elementBox.left - labelViewBox.left;\n }\n }\n\n if (offset !== 0) {\n this.elementAverageResultTooltipLabelView?.style.setProperty(\"transform\", \"translateX(\" + offset + \"px)\");\n }\n });\n }\n }\n }\n\n private init(): void {\n if (!this.maxHandlePos) {\n this.env.setTimeout(() => {\n this.update(true, false);\n }, 10);\n } else {\n this.update(true, false);\n }\n }\n\n private update(updateAttributes: boolean, triggerSlide: boolean) {\n updateAttributes = updateAttributes || false;\n\n if (updateAttributes) {\n this.min = tryParseFloat(this.elementSlider.getAttribute(\"min\"), 0);\n this.max = tryParseFloat(this.elementSlider.getAttribute(\"max\"), 100);\n this.value = tryParseFloat(this.elementSlider.value, Math.round(this.min + (this.max - this.min) / 2));\n this.step = tryParseFloat(this.elementSlider.getAttribute(\"step\"), 1);\n }\n\n this.handleDimension = getDimension(this.handle, (\"offset\" + ucfirst(this.DIMENSION)) as \"offsetWidth\" | \"offsetHeight\");\n this.rangeDimension = getDimension(this.range, (\"offset\" + ucfirst(this.DIMENSION)) as \"offsetWidth\" | \"offsetHeight\");\n this.maxHandlePos = this.rangeDimension - this.handleDimension;\n this.grabPos = this.handleDimension / 2;\n this.position = this.getPositionFromValue(this.value);\n\n if (updateAttributes) {\n // Snapping steps\n this.prevSnapValue = this.getValueFromPosition(this.cap(this.position, 0, this.maxHandlePos));\n }\n\n this.setPosition(this.position, triggerSlide);\n }\n\n private handleDown(e: MouseEvent | TouchEvent) {\n if (this.isDone()) {\n return;\n }\n\n let rangeslider: HTMLElement | null = e.target as HTMLElement;\n if (!rangeslider.classList.contains(\"slider-view\")) {\n rangeslider = rangeslider.closest<HTMLElement>(\".slider-view\");\n }\n\n if (!rangeslider) {\n return;\n }\n if (rangeslider.id !== this.id) {\n return;\n }\n e.preventDefault();\n\n this.isClickCapturedBySlider = true;\n\n if (!this.maxHandlePos) {\n this.update(true, false);\n }\n\n document.addEventListener(\"touchmove\", this.handleMove);\n document.addEventListener(\"touchend\", this.handleEnd);\n\n document.addEventListener(\"mousemove\", this.handleMove);\n document.addEventListener(\"mouseup\", this.handleEnd);\n\n // add active class because Firefox is ignoring\n // the handle:active pseudo selector because of `e.preventDefault();`\n this.range.classList.add(this.options.activeClass);\n\n // If we click on the handle don't set the new position\n if ((\" \" + (e.target as HTMLElement).className + \" \").replace(/[\\n\\t]/g, \" \").indexOf(this.options.handleClass) > -1) {\n return;\n }\n\n var pos = this.getRelativePosition(e),\n rangePos = this.range.getBoundingClientRect()[this.DIRECTION],\n handlePos = this.getPositionFromNode(this.handle) - rangePos,\n setPos = this.orientation === \"vertical\" ? this.maxHandlePos - (pos - this.grabPos) : pos - this.grabPos;\n\n this.setPosition(setPos);\n\n if (pos >= handlePos && pos < handlePos + this.handleDimension) {\n this.grabPos = pos - handlePos;\n }\n }\n\n private handleMove(e: MouseEvent | TouchEvent) {\n e.preventDefault();\n var pos = this.getRelativePosition(e);\n var setPos = this.orientation === \"vertical\" ? this.maxHandlePos - (pos - this.grabPos) : pos - this.grabPos;\n\n this.setPosition(setPos);\n }\n\n private handleEnd(e: MouseEvent | TouchEvent): void {\n this.env.requestAnimationFrame(() => {\n this.isClickCapturedBySlider = false;\n });\n\n // e.preventDefault();\n document.removeEventListener(\"touchmove\", this.handleMove);\n document.removeEventListener(\"touchend\", this.handleEnd);\n\n document.removeEventListener(\"mousemove\", this.handleMove);\n document.removeEventListener(\"mouseup\", this.handleEnd);\n\n this.range.classList.remove(this.options.activeClass);\n\n this.element.classList.add(\"input-done\");\n\n if (!this.hasSubmitButton) {\n this.completeWidget();\n } else {\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = this.submitButtonViewHeight + \"px\";\n }\n });\n }\n\n // Ok we're done fire the change event\n // this.$element.trigger('change', {origin: this.identifier});\n }\n\n private cap = function (pos: number, min: number, max: number) {\n if (pos < min) {\n return min;\n }\n if (pos > max) {\n return max;\n }\n return pos;\n };\n\n private setPosition(pos: number, triggerSlide?: boolean) {\n var value, newPos;\n\n if (triggerSlide === undefined) {\n triggerSlide = true;\n }\n\n // Snapping steps\n value = this.getValueFromPosition(this.cap(pos, 0, this.maxHandlePos));\n newPos = this.getPositionFromValue(value);\n\n // Update ui\n var uiPos = newPos;\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n uiPos = this.maxHandlePos - uiPos;\n }\n\n // this.rangeDimension - slider width\n this.fill.style.transform = \"translateX(\" + (uiPos + this.grabPos - this.rangeDimension) + \"px)\";\n // this.fill.style[this.DIMENSION] = (uiPos + this.grabPos) + 'px';\n var percentage = this.getPercentageFromValue(value);\n\n // 1 + (scale - 1) * percentage\n this.handle.style.transform = \"translateY(-50%) translateX(\" + uiPos + \"px) scale(calc(1 + (var(--scale-factor, 1) - 1) * \" + percentage + \"))\";\n // this.handle.style[this.DIRECTION_STYLE] = uiPos + 'px';\n\n this.setValue(value);\n\n // Update globals\n this.position = newPos;\n this.value = value;\n\n if (this.snapPosition) {\n const stepItem = String(Math.round(this.value / this.step));\n this.fill.setAttribute(\"data-step-item\", stepItem);\n\n if (this.value !== this.prevSnapValue) {\n this.prevSnapValue = this.value;\n\n try {\n this.sdkApi.vibrate(20);\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n\n // Returns element position relative to the parent\n private getPositionFromNode(node: HTMLElement | null) {\n var i = 0;\n while (node !== null) {\n i += node.offsetLeft;\n node = node.offsetParent as HTMLElement;\n }\n return i;\n }\n\n private getRelativePosition(e: MouseEvent | TouchEvent): number {\n // Get the offset DIRECTION relative to the viewport\n const ucCoordinate = ucfirst(this.COORDINATE) as \"X\" | \"Y\";\n const ucCoordinateClient = `client${ucCoordinate}` as \"clientX\" | \"clientY\";\n const rangePos = this.range.getBoundingClientRect()[this.DIRECTION];\n let pageCoordinate = 0;\n\n if (typeof (e as MouseEvent)[ucCoordinateClient] !== \"undefined\") {\n pageCoordinate = (e as MouseEvent)[ucCoordinateClient];\n } else if ((e as TouchEvent).touches && (e as TouchEvent).touches[0] && typeof (e as TouchEvent).touches[0][ucCoordinateClient] !== \"undefined\") {\n pageCoordinate = (e as TouchEvent).touches[0][ucCoordinateClient];\n // @ts-ignore\n } else if (e.currentPoint && typeof e.currentPoint[this.COORDINATE] !== \"undefined\") {\n // @ts-ignore\n pageCoordinate = e.currentPoint[this.COORDINATE];\n }\n\n return pageCoordinate - rangePos;\n }\n\n private getPercentageFromValue(value: number): number {\n var percentage;\n percentage = (value - this.min) / (this.max - this.min);\n\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n percentage = 1 - percentage;\n }\n\n return percentage;\n }\n\n private getPositionFromValue(value: number): number {\n var percentage, pos;\n percentage = (value - this.min) / (this.max - this.min);\n\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n percentage = 1 - percentage;\n }\n\n pos = !Number.isNaN(percentage) ? percentage * this.maxHandlePos : 0;\n return pos;\n }\n\n private getValueFromPosition(pos: number): number {\n var percentage, value;\n percentage = pos / (this.maxHandlePos || 1);\n\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n percentage = 1 - percentage;\n }\n\n value = this.step * Math.round((percentage * (this.max - this.min)) / this.step) + this.min;\n return Number(value.toFixed(this.toFixed));\n }\n\n private setValue(value: number): void {\n if (value === this.value && this.elementSlider.value !== \"\") {\n return;\n }\n\n // Set the new value and fire the `input` event\n this.elementSlider.value = String(value);\n // .val(value)\n // .trigger('input', {origin: this.identifier});\n }\n\n private destroy(): void {\n this.env.document.removeEventListener(\"touchstart\", this.handleDown);\n this.env.document.removeEventListener(\"mousedown\", this.handleDown);\n\n // off resize event\n // this.$window.off('.' + this.identifier);\n\n // this.$element\n // .off('.' + this.identifier)\n // .removeAttr('style')\n // .removeData('plugin_' + pluginName);\n }\n\n public static api = {\n refreshUserData: WidgetRangeSlider.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetRangeSlider.initWidgets<WidgetRangeSlider, WidgetRangeSliderOptions>(\n (element, options) => new WidgetRangeSlider(element, options),\n [element],\n localData\n );\n },\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetRangeSlider.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetRangeSlider.getInstance<WidgetRangeSlider, WidgetRangeSliderOptions>(widgetElement);\n if (widget) {\n return widget.click();\n }\n }\n return true;\n },\n isClickCapturedBySlider: function (element: HTMLElement) {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetRangeSlider.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetRangeSlider.getInstance<WidgetRangeSlider, WidgetRangeSliderOptions>(widgetElement);\n if (widget) {\n return widget.getIsClickCapturedBySlider();\n }\n }\n return false;\n },\n };\n}\n","import { extend, forEach, getElementBounding, getTagData, getTagDataAsNumber, getValueOrDefault, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetRateOptions } from \"./rate.h\";\n\nexport class WidgetRate extends WidgetBase<WidgetRateOptions> {\n static DEFAULTS: WidgetRateOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-rate\";\n\n private elementRect: DOMRect;\n private label: HTMLElement | null;\n private nativeDialogueWasOpened: boolean = false;\n private stars: Array<HTMLElement>;\n private submitToStores: boolean;\n private submitToStoresMin: number;\n private submitToStoresMax: number;\n private showDialogOnLowRate: boolean;\n private showDialogueMin: number;\n private showDialogueMax: number;\n private selectedStar: number | undefined;\n private answerSelectDuration: number;\n\n constructor(element: HTMLElement, options: Partial<WidgetRateOptions>) {\n super(element, options);\n\n this.elementRect = this.element.getBoundingClientRect();\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.stars = slice.call(this.element.querySelectorAll<HTMLElement>(\".input-view\"));\n\n this.submitToStores = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"submitToStores\"), 0));\n this.submitToStoresMin = getValueOrDefault(getTagDataAsNumber(this.element, \"submitToStoresMin\"), 4);\n this.submitToStoresMax = getValueOrDefault(getTagDataAsNumber(this.element, \"submitToStoresMax\"), 5);\n this.showDialogOnLowRate = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"showDialogOnLowRate\"), 0));\n this.showDialogueMin = getValueOrDefault(getTagDataAsNumber(this.element, \"showDialogueMin\"), 1);\n this.showDialogueMax = getValueOrDefault(getTagDataAsNumber(this.element, \"showDialogueMax\"), 3);\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n this.selectedStar = undefined;\n\n if (this.localData) {\n if (this.localData[\"_r_g_\" + this.elementId + \"_ss\"] !== undefined) {\n this._selectStar(this.localData[\"_r_g_\" + this.elementId + \"_ss\"], true);\n } else {\n this._clearSelectedStar();\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n this.answerSelectDuration = 0;\n\n this.nativeDialogueWasOpened = false;\n }\n\n private _statEventRateUsAnswer(answerText: string): void {\n try {\n var labelText = this.label?.textContent ?? \"\";\n\n if (this.selectedStar != null) {\n var selectedAnswer = this.selectedStar + 1;\n\n this.sendStatisticEventToApp(\n \"w-rate-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: selectedAnswer,\n wv: answerText,\n d: this.answerSelectDuration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: selectedAnswer,\n widget_value: answerText,\n duration_ms: this.answerSelectDuration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectStar(value: number, runTimer: boolean): void {\n var list = [];\n var i;\n for (i = 0; i < this.stars.length; i++) {\n list[i] = this.stars[i];\n }\n\n forEach(list, (element, idx) => {\n const key = idx as number;\n if (key <= value) {\n element.classList.add(\"fill\");\n }\n });\n\n if (list[value]) {\n list[value].classList.add(\"selected\");\n }\n\n this.selectedStar = value;\n\n this.localData[\"_r_g_\" + this.elementId + \"_ss\"] = value;\n\n this.element.classList.add(\"done\");\n\n if (this.disableTimer && runTimer) {\n this.showNextSlide();\n }\n }\n\n private _clearSelectedStar(): void {\n forEach(this.stars, function (element) {\n element.classList.remove(\"fill\");\n element.classList.remove(\"selected\");\n });\n this.element.classList.remove(\"done\");\n }\n\n private selectStar(starElement: HTMLElement): boolean {\n if (this.selectedStar !== undefined) {\n return true;\n }\n\n var index = this.stars.indexOf(starElement);\n var length = this.stars.length;\n var value = index;\n // if (this.layoutDirection === 'rtl') {\n // value = length - index + 1;\n // }\n\n this.nativeDialogueWasOpened = false;\n\n if (value !== -1) {\n this.answerSelectDuration = new Date().getTime() - this.firstOpenTime;\n\n // 1-3 stars (default)\n if (value + 1 >= this.showDialogueMin && value + 1 <= this.showDialogueMax) {\n this.selectedStar = value;\n this._selectStar(this.selectedStar, false);\n\n if (this.showDialogOnLowRate) {\n if (this.sdkApi.isAndroid) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n if (this.sdkApi.isExistsShowStoryTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n this.nativeDialogueWasOpened = true;\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showStoryTextInput(this.id, data);\n }\n } else {\n this.completeWidget();\n this._statEventRateUsAnswer(\"\");\n }\n\n return false;\n } else if (value + 1 >= this.submitToStoresMin && value + 1 <= this.submitToStoresMax) {\n var target = null;\n\n if (this.sdkApi.isAndroid) {\n target = getTagData(this.element, \"androidLink\");\n } else if (this.sdkApi.isIOS) {\n target = getTagData(this.element, \"appleLink\");\n }\n\n this._selectStar(value, false);\n this.completeWidget();\n this._statEventRateUsAnswer(\"\");\n\n if (this.submitToStores && target) {\n this.sdkApi.openUrl(target);\n }\n } else {\n this._selectStar(value, false);\n this.completeWidget();\n this._statEventRateUsAnswer(\"\");\n }\n }\n return false;\n }\n\n public setUserText(text: string): void {\n this.slide.classList.remove(\"data-input-editing\");\n this.slide.classList.remove(\"blured\");\n\n if (this.selectedStar != null) {\n this._selectStar(this.selectedStar, true);\n }\n\n if (!this.disableTimer && this.nativeDialogueWasOpened) {\n this.sdkApi.resumeUI();\n this.nativeDialogueWasOpened = false;\n }\n\n this.localData[\"_r_g_\" + this.elementId + \"_user_response\"] = text;\n this.completeWidget();\n this._statEventRateUsAnswer(text);\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_r_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // ответ на вопрос\n this.localData[\"_&ts_r_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_r_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slideRateIsDone(): boolean {\n return this.localData[\"_r_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetRate.refreshUserData,\n initWidget: function (nodeList: NodeListOf<HTMLElement>, localData?: Record<string, any>) {\n WidgetRate.initWidgets<WidgetRate, WidgetRateOptions>((element, options) => new WidgetRate(element, options), slice.call(nodeList), localData);\n },\n\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetRate.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetRate.getInstance<WidgetRate, WidgetRateOptions>(widgetElement);\n if (widget) {\n return widget.selectStar(element);\n }\n }\n return false;\n },\n\n slidePollIsDone: function (element: HTMLElement) {\n const widget = WidgetRate.getInstance<WidgetRate, WidgetRateOptions>(element);\n if (widget) {\n return widget.slideRateIsDone();\n }\n return true;\n },\n\n setUserData: function (id: string, text: string): void {\n WidgetRate.getInstanceById<WidgetRate, WidgetRateOptions>(id)?.setUserText(text);\n },\n };\n}\n","import { getTagData, getTagDataAsNumber, getValueOrDefault, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetShareOptions } from \"./share.h\";\n\nexport class WidgetShare extends WidgetBase<WidgetShareOptions> {\n static DEFAULTS: WidgetShareOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n layers: [],\n };\n\n public static widgetClassName = \"narrative-element-share\";\n\n private layers: Array<HTMLElement>;\n private shareType: string | undefined;\n private shareTarget: string | undefined;\n private withLayer: boolean;\n private btnDisabled: boolean;\n\n constructor(element: HTMLElement, options: Partial<WidgetShareOptions>) {\n super(element, options);\n this.shareType = getTagData(this.element, \"shareType\");\n this.shareTarget = getTagData(this.element, \"shareTarget\");\n this.layers = this.options.layers;\n this.withLayer = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"withLayer\"), 0));\n\n if (this.withLayer) {\n if (this.isDone()) {\n this._showLayout(this.layers, 1);\n } else {\n this._showLayout(this.layers, 0);\n }\n }\n\n this.btnDisabled = false;\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {}\n\n private _statEventShare(result: boolean, via: string | null): void {\n try {\n var buttonText = this.element.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-share\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: buttonText,\n wt: this.shareTarget ?? \"\",\n wa: result ? 1 : 0,\n wal: via ?? \"\",\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: buttonText,\n widget_value: this.shareTarget ?? \"\",\n widget_answer: result ? 1 : 0,\n widget_answer_label: via ?? \"\",\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private share(): void {\n if (!this.btnDisabled) {\n if (this.sdkApi.isExistsShare) {\n if (this.sdkApi.sdkCanSendShareComplete) {\n this.btnDisabled = true;\n }\n if (this.shareType === \"url\" || this.shareType === \"story\") {\n this.sdkApi.share(this.id, {\n url: this.shareTarget, // sdk old versions\n text: this.shareTarget,\n title: null,\n files: null,\n });\n } else if (this.shareType === \"slide\") {\n this.sdkApi.shareSlideScreenshot(this.id, \"[data-element-id='\" + this.elementId + \"']\");\n }\n }\n }\n }\n\n public _complete(isSuccess: boolean): void {\n if (!this.localData[\"_s_\" + this.elementId + \"_ts\"] && isSuccess) {\n this.localData[\"_s_\" + this.elementId + \"_ts\"] = Math.round(new Date().getTime() / 1000);\n // `answer_at` time\n this.localData[\"_&ts_s_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n this._statEventShare(isSuccess, null);\n\n if (isSuccess && this.withLayer) {\n this._showLayout(this.layers, 1, true);\n }\n\n this.btnDisabled = false;\n }\n\n public isDone(): boolean {\n return Boolean(this.localData[\"_s_\" + this.elementId + \"_ts\"]);\n }\n\n public static api = {\n refreshUserData: WidgetShare.refreshUserData,\n // signature variants\n // (widget, layers, undefined) - modern web sdk\n // (widget, undefined, layers) - old web sdk and rn\n // (widget, layers, localData) - native sdk\n initWidget: function (nodeList: NodeListOf<HTMLElement>, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n if (layers === undefined && localData !== undefined) {\n // @ts-ignore\n layers = localData;\n localData = undefined;\n }\n WidgetShare.initWidgets<WidgetShare, WidgetShareOptions>(\n (element, options) => new WidgetShare(element, { ...options, layers }),\n slice.call(nodeList),\n localData\n );\n },\n\n click: function (element: HTMLElement): void {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetShare.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetShare.getInstance<WidgetShare, WidgetShareOptions>(widgetElement);\n if (widget) {\n widget.share();\n }\n }\n },\n complete: function (id: string, isSuccess: boolean): void {\n WidgetShare.getInstanceById<WidgetShare, WidgetShareOptions>(id)?._complete(isSuccess);\n },\n };\n}\n","import { extend, forEach, getTagDataAsNumber, getValueOrDefault, getValueOrException, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetTestOptions } from \"./test.h\";\n\nexport class WidgetTest extends WidgetBase<WidgetTestOptions> {\n static DEFAULTS: WidgetTestOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-test\";\n\n private label: HTMLElement | null;\n private variants: Array<HTMLElement>;\n private testCount: number;\n private selectedAnswer: number | undefined;\n private withTimeToAnswer: boolean;\n private answerTimeout: number;\n private tick: () => void;\n private cancelTick: () => void;\n private animationFrameId: number | null;\n private startTimerAt: number;\n private timeLeft: number;\n private timeLeftDefault: number;\n private timeline: HTMLElement | null;\n\n constructor(element: HTMLElement, options: Partial<WidgetTestOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view\"));\n this.testCount = getValueOrException(getTagDataAsNumber(this.slide, \"testCount\"), \"Empty testCount\");\n\n this.withTimeToAnswer = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"withTimeToAnswer\"), 0));\n this.answerTimeout = getValueOrDefault(getTagDataAsNumber(this.element, \"answerTimeout\"), 0);\n\n this.selectedAnswer = undefined;\n\n if (this.localData) {\n if (this.localData[\"_t_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectAnswer(this.localData[\"_t_g_\" + this.elementId + \"_sa\"]);\n this.setLocalData(this.localData, false);\n }\n\n if (this.localData[\"_t_fo_at\"] === undefined) {\n this.localData[\"_t_fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n\n this.tick = () => {\n this.animationFrameId = this.env.requestAnimationFrame(() => {\n this.tick();\n });\n\n // update timer\n // update timeline position\n if (this.startTimerAt) {\n // if (this.state.timeLeft - this.timeLeft >= 950) {\n // this.setState({timeLeft: this.timeLeft});\n // }\n\n var timeNow = new Date().getTime();\n this.timeLeft -= timeNow - this.startTimerAt;\n this.startTimerAt = timeNow;\n\n if (this.timeLeft <= 0) {\n this.timeLeft = 0;\n this.cancelTick();\n\n this.doneWithoutAnswer();\n }\n\n if (this.timeline) {\n this.timeline.style.transform = \"translateX(\" + String((1 - this.timeLeft / this.timeLeftDefault) * 100) + \"%)\";\n }\n }\n };\n\n this.cancelTick = () => {\n if (this.animationFrameId != null) {\n this.env.cancelAnimationFrame(this.animationFrameId);\n }\n };\n\n if (this.slideTestWithTimer()) {\n this.timeline = this.element.querySelector(\".timeline\");\n if (this.selectedAnswer === undefined) {\n // find timer element\n // start raf\n // pause raf on pauseUI (actually don`t need)\n\n this.timeLeftDefault = (this.answerTimeout ? this.answerTimeout : 0) * 1000;\n this.timeLeft = this.timeLeftDefault;\n\n this.animationFrameId = null;\n this.startTimerAt = new Date().getTime();\n this.tick();\n\n // set answer - unanswered (for close and run again)\n this.localData[\"_t_g_\" + this.elementId + \"_sa\"] = -1;\n this.setLocalData(this.localData, true);\n } else {\n // animate 100%\n if (this.selectedAnswer === -1) {\n if (this.timeline) {\n this.timeline.style.transform = \"translateX(100%)\";\n }\n }\n }\n }\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {}\n\n private _statEventVoteAnswer(answerScore: number): void {\n try {\n if (this.selectedAnswer != null) {\n const labelText = this.label?.textContent ?? \"\";\n var answerText = \"\";\n if (this.variants[this.selectedAnswer]) {\n var answerLabel = this.variants[this.selectedAnswer].querySelector(\".label\");\n if (answerLabel != null) {\n answerText = answerLabel.textContent ?? \"\";\n }\n }\n var duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-test-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedAnswer,\n wal: answerText,\n was: answerScore,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedAnswer,\n widget_answer_label: answerText,\n widget_answer_score: answerScore,\n duration_ms: duration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectAnswer(index: number): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedAnswer = index;\n\n this.localData[\"_t_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = this.submitButtonViewHeight + \"px\";\n }\n });\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n public selectAnswer(answer: HTMLElement): boolean {\n if (this.selectedAnswer !== undefined) {\n return true;\n }\n\n var index = this.variants.indexOf(answer);\n if (index !== -1) {\n var answerScore = getValueOrDefault(getTagDataAsNumber(this.variants[index], \"score\"), 0);\n this._completeWidget(index, answerScore);\n }\n\n if (Boolean(this.withTimeToAnswer && this.answerTimeout)) {\n this.cancelTick();\n }\n\n return false;\n }\n\n private doneWithoutAnswer(): void {\n if (this.selectedAnswer !== undefined) {\n return;\n }\n var index = -1,\n answerScore = 0;\n this._completeWidget(index, answerScore);\n }\n\n // complete answer select and save local data + stat event\n private _completeWidget(index: number, answerScore: number): void {\n this._selectAnswer(index);\n\n this.localData[\"t_score\"] = (this.localData[\"t_score\"] === undefined ? 0 : this.localData[\"t_score\"]) + answerScore;\n\n var answeredQuestion = 0;\n for (var key in this.localData) {\n if (this.localData.hasOwnProperty(key)) {\n if (/^_t_g_[A-z0-9-_]+_sa$/.test(key)) {\n answeredQuestion++;\n }\n }\n }\n if (this.localData[\"_t_fa_at\"] === undefined) {\n this.localData[\"_t_fa_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n if (answeredQuestion === this.testCount) {\n this.localData[\"_t_done_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n // answer on question\n this.localData[\"_&ts_t_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.setLocalData(this.localData, true);\n\n this._statEventVoteAnswer(answerScore);\n }\n\n public isDone(): boolean {\n return this.localData[\"_t_done_at\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n public slideTestIsDone(): boolean {\n return this.localData[\"_t_g_\" + this.elementId + \"_sa\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n public slideTestWithTimer(): boolean {\n return Boolean(this.withTimeToAnswer && this.answerTimeout);\n }\n\n public static api = {\n refreshUserData: WidgetTest.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetTest.initWidgets<WidgetTest, WidgetTestOptions>((element, options) => new WidgetTest(element, options), [element], localData);\n },\n\n /**\n * click on quiz answer\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetTest.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n return false;\n },\n\n slideTestIsDone: function (element: HTMLElement) {\n const widget = WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(element);\n if (widget) {\n return widget.slideTestIsDone();\n }\n return true;\n },\n\n slideTestWithTimer: function (element: HTMLElement) {\n const widget = WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(element);\n if (widget) {\n return widget.slideTestWithTimer();\n }\n return true;\n },\n };\n}\n","import { WidgetVoteOptions, WidgetVoteSharedData } from \"./vote.h\";\nimport { forEach, getTagData, getTagDataAsNumber, getValueOrDefault, isArray, isNumber, isObject, slice } from \"@utils\";\nimport { WidgetBase, Widgets } from \"../base\";\n\nexport class WidgetVote extends WidgetBase<WidgetVoteOptions> {\n static DEFAULTS: WidgetVoteOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-vote\";\n\n private question: HTMLElement = null!;\n private answers: Array<HTMLElement> = null!;\n private questionCount: number = null!;\n private selectedAnswer: number | undefined = undefined;\n\n private label: HTMLElement | null;\n private variants: Array<HTMLElement>;\n private variantsTexts: Array<string>;\n private selectedVariant: number | undefined;\n private voteAllocation: any;\n private hideClientTotalResult: boolean;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetVoteOptions>) {\n super(element, options);\n\n this.voteAllocation = getTagData(this.slide, \"voteAllocation\");\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view-group\"));\n this.variantsTexts = [];\n forEach(this.variants, (element, index) => {\n const variantView = element.querySelector(\".variant-view .label\");\n if (variantView) {\n this.variantsTexts.push(variantView.textContent ?? \"\");\n }\n });\n\n this.hideClientTotalResult = getValueOrDefault(Boolean(getTagDataAsNumber(this.element, \"hideClientTotalResult\")), false);\n\n this.selectedVariant = undefined;\n\n if (this.localData) {\n if (this.localData[\"_v_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectVariant(this.localData[\"_v_g_\" + this.elementId + \"_sa\"], true);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {}\n\n private _statEventVoteVariant(): void {\n try {\n if (this.selectedVariant != null) {\n var labelText = this.label?.textContent ?? \"\";\n var variantText = this.variantsTexts[this.selectedVariant] ? this.variantsTexts[this.selectedVariant] : \"\";\n var duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-vote-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wv: variantText,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedVariant,\n widget_value: variantText,\n duration_ms: duration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectVariant(index: number, filled: boolean = false): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedVariant = index;\n\n this.localData[\"_v_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n if (filled) {\n this.element.classList.add(\"filled\");\n }\n\n if (this.hideClientTotalResult) {\n const cb = () => {\n if (this.variants[index]) {\n this.variants[index].style.setProperty(\"--selected-variant-view-clip-area\", String(0));\n }\n };\n if (filled) {\n cb();\n } else {\n this.env.requestAnimationFrame(cb);\n }\n } else {\n this.displayPercents(index, filled);\n }\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = this.submitButtonViewHeight + \"px\";\n }\n });\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n public selectVariant(variant: HTMLElement): boolean {\n if (this.selectedVariant !== undefined) {\n return true;\n }\n\n var selectedVariantIndex = this.variants.indexOf(variant);\n\n if (selectedVariantIndex !== -1) {\n this._selectVariant(selectedVariantIndex);\n\n this.localData[\"_v_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n\n // ответ на вопрос\n this.localData[\"_&ts_v_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.setLocalData(this.localData, true);\n\n this._statEventVoteVariant();\n }\n\n return false;\n }\n\n private displayPercents(selectedVariantIndex: number, filled: boolean = false): void {\n // voteAllocation[0] - variant total count allocation\n // voteAllocation[1]\n // ...\n // voteAllocation[7]\n let voteAllocation: WidgetVoteSharedData[string] = [];\n let voteAllocationTs: number | undefined = undefined;\n const sharedData = this.sdkApi.getWidgetsSharedData<Widgets.Vote>(this.storyId, Widgets.Vote);\n if (sharedData && sharedData[this.elementId] != null && (isObject(sharedData[this.elementId]) || isArray(sharedData[this.elementId]))) {\n voteAllocation = sharedData[this.elementId];\n if (isObject(sharedData[this.elementId])) {\n voteAllocation = slice.call(Object.values(sharedData[this.elementId])) as unknown as WidgetVoteSharedData[string];\n }\n voteAllocationTs = sharedData.ts;\n }\n\n var voteDoneAt = this.localData[\"_v_g_\" + this.elementId + \"_done_at\"];\n\n if (voteAllocationTs === undefined || voteDoneAt === undefined || voteDoneAt > voteAllocationTs) {\n forEach(this.variants, function (element, index) {\n const key = index as number;\n if (voteAllocation[key] === undefined || !isNumber(voteAllocation[key])) {\n voteAllocation[key] = 0;\n }\n if (selectedVariantIndex === key) {\n ++voteAllocation[key];\n }\n });\n }\n\n // calc percents\n var percents: Array<number> = [],\n total = 0;\n forEach(this.variants, (element, index) => {\n const key = index as number;\n if (voteAllocation[key] !== undefined) {\n percents[key] = isNumber(voteAllocation[key]) ? voteAllocation[key] : parseInt(String(voteAllocation[key]));\n if (!isNumber(percents[key]) || isNaN(percents[key])) {\n percents[key] = 0;\n }\n } else {\n percents[key] = 0;\n }\n total += percents[key];\n });\n for (let i = 0; i < percents.length; ++i) {\n if (total !== 0) {\n percents[i] = Math.round((percents[i] / total) * 100 * 10) / 10;\n if (percents[i] > 100) {\n percents[i] = 100;\n }\n // percents[i] += '%';\n } else {\n // percents[i] = '0%';\n }\n }\n\n var self = this;\n forEach(this.variants, (element, index) => {\n const key = index as number;\n var percentLabels = slice.call(element.querySelectorAll(\".percent-label\"));\n\n forEach(percentLabels, label => {\n if (percents[key] != null) {\n label.textContent = percents[key] + \"%\";\n }\n });\n element.classList.add(\"selected\");\n });\n\n var cb = function () {\n forEach(self.variants, function (element, index) {\n const key = index as number;\n if (percents[key] != null) {\n element.style.setProperty(\"--selected-variant-view-clip-area\", String(100 - percents[key]));\n }\n });\n };\n\n if (filled) {\n cb();\n } else {\n this.env.requestAnimationFrame(cb);\n }\n }\n\n public isDone(): boolean {\n return this.localData[\"_v_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slideVoteIsDone(): boolean {\n return this.localData[\"_v_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetVote.refreshUserData,\n // fix for WidgetVote on every layer of multilayers story\n fallbackInitOnMultiSlide: function (element: HTMLElement, localData?: Record<string, any>) {\n if (element.dataset.fallbackInitOnMultiSlide) {\n return;\n }\n var multiSlide = element.closest(\".narrative-multi-slide\");\n if (multiSlide != null) {\n var container = multiSlide.parentElement;\n var widgetElements = container?.querySelectorAll<HTMLElement>(`.${WidgetVote.widgetClassName}`);\n if (widgetElements != null) {\n for (var i = 0; i < widgetElements.length; ++i) {\n var widgetElement = widgetElements[i];\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(widgetElement);\n if (!widget) {\n WidgetVote.initWidgets<WidgetVote, WidgetVoteOptions>(\n (element, options) => new WidgetVote(element, options),\n [widgetElement],\n localData\n );\n }\n }\n }\n }\n\n element.dataset.fallbackInitOnMultiSlide = \"1\";\n },\n\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetVote.initWidgets<WidgetVote, WidgetVoteOptions>((element, options) => new WidgetVote(element, options), [element], localData).then(\n localData => {\n WidgetVote.api.fallbackInitOnMultiSlide(element, localData);\n }\n );\n },\n\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetVote.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(widgetElement);\n if (widget) {\n return widget.selectVariant(element);\n }\n }\n return false;\n },\n\n slideVoteIsDone: function (element: HTMLElement): boolean {\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(element);\n if (widget) {\n return widget.slideVoteIsDone();\n }\n return true;\n },\n };\n}\n","import { SDKInterface } from \"../../sdk_api/es_module_sdk_api.h\";\nimport { animationApi, IAnimation } from \"@animation\";\nimport { WidgetCopy } from \"../../widgets/copy\";\nimport { WidgetDataInput } from \"../../widgets/data_input\";\nimport { WidgetDateCountdown } from \"../../widgets/date_countdown\";\nimport { WidgetMultiSlide } from \"../../widgets/multi_slide\";\nimport { WidgetPoll } from \"../../widgets/poll\";\nimport { WidgetPollLayers } from \"../../widgets/poll_layers\";\nimport { WidgetQuest } from \"../../widgets/quest\";\nimport { WidgetQuiz } from \"../../widgets/quiz\";\nimport { WidgetQuizGrouped } from \"../../widgets/quiz_grouped\";\nimport { WidgetRangeSlider } from \"../../widgets/range_slider\";\nimport { WidgetRate } from \"../../widgets/rate\";\nimport { WidgetShare } from \"../../widgets/share\";\nimport { WidgetTest } from \"../../widgets/test\";\nimport { WidgetVote } from \"../../widgets/vote\";\n\nexport let sdkInterface: SDKInterface;\n\nexport type WidgetCopyApi = typeof WidgetCopy.api;\nexport type WidgetDataInputApi = typeof WidgetDataInput.api;\nexport type WidgetDateCountdownApi = typeof WidgetDateCountdown.api;\nexport type WidgetMultiSlideApi = typeof WidgetMultiSlide.api;\nexport type WidgetPollApi = typeof WidgetPoll.api;\nexport type WidgetPollLayersApi = typeof WidgetPollLayers.api;\nexport type WidgetQuestApi = typeof WidgetQuest.api;\nexport type WidgetQuizApi = typeof WidgetQuiz.api;\nexport type WidgetQuizGroupedApi = typeof WidgetQuizGrouped.api;\nexport type WidgetRangeSliderApi = typeof WidgetRangeSlider.api;\nexport type WidgetRateApi = typeof WidgetRate.api;\nexport type WidgetShareApi = typeof WidgetShare.api;\nexport type WidgetTestApi = typeof WidgetTest.api;\nexport type WidgetVoteApi = typeof WidgetVote.api;\n\nexport type SlideApi = {\n Animation: IAnimation;\n WidgetCopy: WidgetCopyApi;\n WidgetDataInput: WidgetDataInputApi;\n WidgetDateCountdown: WidgetDateCountdownApi;\n WidgetMultiSlide: WidgetMultiSlideApi;\n WidgetPoll: WidgetPollApi;\n WidgetPollLayers: WidgetPollLayersApi;\n WidgetQuest: WidgetQuestApi;\n WidgetQuiz: WidgetQuizApi;\n WidgetQuizGrouped: WidgetQuizGroupedApi;\n WidgetRangeSlider: WidgetRangeSliderApi;\n WidgetRate: WidgetRateApi;\n WidgetShare: WidgetShareApi;\n WidgetTest: WidgetTestApi;\n WidgetVote: WidgetVoteApi;\n};\n\nexport const getSlideApi = (_sdkInterface: SDKInterface) => {\n sdkInterface = _sdkInterface;\n\n return {\n Animation: animationApi,\n WidgetCopy: WidgetCopy.api,\n WidgetDataInput: WidgetDataInput.api,\n WidgetDateCountdown: WidgetDateCountdown.api,\n WidgetMultiSlide: WidgetMultiSlide.api,\n WidgetPoll: WidgetPoll.api,\n WidgetPollLayers: WidgetPollLayers.api,\n WidgetQuest: WidgetQuest.api,\n WidgetQuiz: WidgetQuiz.api,\n WidgetQuizGrouped: WidgetQuizGrouped.api,\n WidgetRangeSlider: WidgetRangeSlider.api,\n WidgetRate: WidgetRate.api,\n WidgetShare: WidgetShare.api,\n WidgetTest: WidgetTest.api,\n WidgetVote: WidgetVote.api,\n };\n};\n","import { container } from \"@composition\";\nimport { SDKApi } from \"@skd_api\";\nimport { EsModuleSdkApi } from \"../adapters/es_module_sdk_api\";\nimport { sdkInterface } from \"../../entry_points/es_module/es_module\";\n\ncontainer.registerSingleton<SDKApi>(() => new EsModuleSdkApi(() => sdkInterface));\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE;;MCA7B,cAAc,CAAA;AAEX,IAAA,IAAA,CAAA;AACA,IAAA,OAAA,CAAA;IAFZ,WACY,CAAA,IAAY,EACZ,OAAe,EAAA;QADf,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;KACvB;AAEJ,IAAA,IAAI,GAAG,GAAA;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AACD,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;;AACJ;;ACXD,SAAS,CAAC,iBAAiB,CAAA,SAAA,EAAA,EAAA,UAAA,EAAA,CAAA,cAAA,CAAA,EAAA,cAAA,EAAA,cAAA,EAAA,CAAkB;;ACE7C;AACA;AACA;AACA;AACA;AAEA,SAAS,CAAC,iBAAiB,CAAS,MAAM,MAAM,2BAAC;;ACL1C,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;AACpC,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AAErC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;AAEhC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B,MAAM,YAAY,GAAG,WAAW,CAAC,cAAc,CAAC;AAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;AACtC,MAAM,OAAO,GAChB,KAAK,CAAC,OAAO;AACb,IAAA,UAAU,CAAC,EAAA;QACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;AACjD,KAAC,CAAC;AACN;AACO,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,UAAU,GAAG,cAAc,CAAC;AAClC,MAAM,UAAU,GAAG,UAAU,MAAc,EAAA;AAC9C,IAAA,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF;AACO,MAAM,QAAQ,GAAG,UAAU,CAAM,EAAA;AACpC,IAAA,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;AACjB,IAAA,OAAO,CAAC,KAAK,UAAU,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AACK,MAAM,QAAQ,GAAG,UAAU,CAAM,EAAA;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC;AAClD,CAAC,CAAC;AAEK,MAAM,SAAS,GAAG,UAAU,CAAM,EAAA;AACrC,IAAA,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,GAAG,GAAG,UAAU,CAAS,EAAE,CAAS,EAAA;AAC7C,IAAA,OAAO,CAAC,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AACK,MAAM,IAAI,GAAG,UAAU,CAAS,EAAA;AACnC,IAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,EAAE,CAAC;AAC5B,IAAA,IAAI,MAAM;AAAE,QAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,IAAI,CAAC,IAAI,CAAC;AAAE,QAAA,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,IAAA,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AACF,MAAM,CAAC,GAAG,UAAU,CAAW,EAAE,CAAU,EAAE,CAAU,EAAA;IACnD,IAAI,CAAC,KAAK,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC;AAC3B,IAAA,QAAoB,CAAC,CAAI;AACrB,QAAA,KAAK,CAAC;AACF,YAAA,OAAO,UAAU,CAAM,EAAA;gBACnB,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,aAAC,CAAC;AACN,QAAA,KAAK,CAAC;YACF,OAAO,UAAU,CAAM,EAAE,CAAM,EAAA;gBAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,aAAC,CAAC;AACN,QAAA,KAAK,CAAC;AACF,YAAA,OAAO,UAAU,CAAM,EAAE,CAAM,EAAE,CAAM,EAAA;AACnC,gBAAA,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC;AACN,QAAA,KAAK,CAAC;AACF,YAAA,OAAO,UAAU,CAAM,EAAE,CAAM,EAAE,CAAM,EAAE,CAAM,EAAA;AAC3C,gBAAA,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,aAAC,CAAC;KACT;IACD,OAAO,YAAA;QACH,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACjC,KAAC,CAAC;AACN,CAAC,CAAC;AACK,MAAM,IAAI,GAAG,UAAa,CAAW,EAAE,CAA4D,EAAE,CAAU,EAAA;IAClH,IAAI,CAAC,IAAI,IAAI;AAAE,QAAA,OAAO,CAAC,CAAC;AACxB,IAAA,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAA8D,CAAC;AACzE,IAAA,IAAI,CAAS,EACT,CAAC,GAAW,CAAC,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/C;AACD,QAAA,IAAI,CAAC,GAAkB,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAAE,YAAA,CAAC,CAAE,CAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3F;AACD,IAAA,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AACK,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,MAAM,GAAG,UAA0F,CAAa,EAAE,GAAG,IAAO,EAAA;IACrI,IAAI,CAAC,EAAE,CAAC,CAAC;AACT,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAA,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAM,CAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAClF;AACD,IAAA,OAAO,CAAM,CAAC;AAClB,CAAC,CAAC;AACK,MAAM,aAAa,GAAG,UAAU,GAAW,EAAA;AAC9C,IAAA,IAAI,IAAI,CAAC;AACT,IAAA,KAAK,IAAI,IAAI,GAAG,EAAE;AACd,QAAA,OAAO,KAAK,CAAC;KAChB;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEK,MAAM,OAAO,GAAG,YAAA;AACnB,IAAA,OAAO,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF;AACA;AACA;AACO,MAAM,SAAS,GAAG,UAAU,MAAc,EAAA;AAC7C,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEK,MAAM,KAAK,GAAG,UAA6C,IAAO,EAAE,GAAY,EAAA;AACnF,IAAA,IAAI,OAAO,IAAI,IAAI,UAAU,EAAE;AAC3B,QAAA,OAAO,IAAI,CAAC;KACf;;IAGD,IAAI,CAAC,GAAG,EAAE;;QAEN,GAAG,GAAG,IAAI,CAAC;KACd;IAED,OAAO,YAAA;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAA6B,CAAC,CAAC;AAC1D,KAAC,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;;;;;AAYG;AAEI,MAAM,IAAI,GAAG,UAAa,IAAiB,EAAE,IAAY,EAAE,IAAQ,EAAA;IACtE,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,UAAU,OAAoB,EAAE,GAAW,EAAA;AACjE,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,UAAU,OAAoB,EAAE,GAAW,EAAA;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClC,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AACd,QAAA,OAAO,SAAS,CAAC;KACpB;AACD,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAKF,IAAI,SAAS,GAAG,MAAM,CAAC;AACvB,MAAM,IAAI,CAAA;AACN,IAAA,OAAO,GAAG,GAAW,CAAC,CAAC;IACvB,OAAO,OAAO,CAAC,KAAkB,EAAA;;;;;;;;AAQ7B,QAAA,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC3E;AAEO,IAAA,OAAO,CAAS;AAChB,IAAA,KAAK,CAAsB;AACnC,IAAA,WAAA,GAAA;;;;AAII,QAAA,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE;AACxC,YAAA,GAAG,EAAE,YAAA;AACD,gBAAA,OAAO,EAAE,CAAC;aACb;AACJ,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;KACjD;AAEM,IAAA,GAAG,CAAC,KAAkB,EAAA;QACzB,MAAM,MAAM,GAAG,KAA+C,CAAC;;;;QAK/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACvB,YAAA,OAAO,CAAC,CAAC;SACZ;QAED,IAAI,UAAU,GAAwB,EAAE;;AAEpC,QAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;QAGlC,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;;AAGpB,YAAA,IAAI;gBACA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC7C,gBAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;;;aAI/C;YAAC,OAAO,CAAC,EAAE;AACR,gBAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;AAClC,gBAAA,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;aAC9B;SACJ;;QAGD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;SAC3B;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AACM,IAAA,GAAG,CAAC,KAAkB,EAAE,IAAqB,EAAE,KAAa,EAAA;AAC/D,QAAA,IAAI,IAAI;;;;AAIJ,QAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EACxB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;AAG/B,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;;SAGvB;aAAM;;AAEH,YAAA,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;;aAEpC;iBAAM;AACH,gBAAA,KAAK,IAAI,IAAI,IAAI,EAAE;;oBAEf,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC5B;aACJ;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;IACM,GAAG,CAAC,KAAkB,EAAE,GAAW,EAAA;;;;;AAKtC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAExC,QAAA,OAAO,GAAG,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;KACjD;AACM,IAAA,MAAM,CAAC,KAAkB,EAAE,GAAW,EAAE,KAAU,EAAA;AACrD,QAAA,IAAI,MAAM,CAAC;;;;;;;;;;;;AAYX,QAAA,IAAI,GAAG,KAAK,SAAS,KAAK,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC,EAAE;YAC9E,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAE9B,OAAO,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1E;;;;;;;QAQD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;;;QAI5B,OAAO,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,GAAG,CAAC;KAC5C;IACM,MAAM,CAAC,KAAkB,EAAE,GAAW,EAAA;QACzC,IAAI,CAAC,EACD,IAAI,EACJ,KAAK,EACL,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EACxB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAE/B,QAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;SAC3B;aAAM;;AAEH,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;;;;;;;AAOd,gBAAA,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;aACzC;iBAAM;AACH,gBAAA,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;;AAEvB,gBAAA,IAAI,GAAG,IAAI,KAAK,EAAE;AACd,oBAAA,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBACvB;qBAAM;;;oBAGH,IAAI,GAAG,KAAK,CAAC;oBACb,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;iBAC/D;aACJ;AAED,YAAA,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAChB,OAAO,CAAC,EAAE,EAAE;AACR,gBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACzB;SACJ;KACJ;AACM,IAAA,OAAO,CAAC,KAAkB,EAAA;QAC7B,MAAM,MAAM,GAAG,KAA6C,CAAC;AAC7D,QAAA,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;KACjE;AACM,IAAA,OAAO,CAAC,KAAkB,EAAA;QAC7B,MAAM,MAAM,GAAG,KAA6C,CAAC;AAC7D,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SAC3C;KACJ;;;AAGL;AACA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;AAEtB,MAAM,gBAAgB,GAAG,UAAU,MAAc,EAAE,OAAe,EAAE,UAAkB,EAAA;IACzF,OAAO,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC;AACjE,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,UAAU,GAAW,EAAA;AAC5C,IAAA,OAAO,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AACvG,CAAC,CAAC;AAEK,MAAM,YAAY,GAAG,UAAU,GAAW,EAAA;AAC7C,IAAA,OAAO,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1G,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,UACnC,MAAc,EACd,IAAY,EACZ,IAAqC,EACrC,UAA4C,EAAA;IAE5C,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC,CAAC;AAEK,MAAM,mBAAmB,GAAG,UAAa,KAA2B,EAAE,OAAe,EAAA;AACxF,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,QAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;KAC5B;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,iBAAiB,GAAG,UAAa,KAA2B,EAAE,YAAe,EAAA;AACtF,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,YAAY,CAAC;KACvB;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,IAAa,KAAI;AAC7D,IAAA,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAA,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAEhC,IAAA,IAAI,QAAQ,GAAG;AACX,QAAA,QAAQ,EAAE;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE;gBACJ,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;gBAC1B,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AAC9B,aAAA;AACJ,SAAA;QACD,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,GAAG;QAClC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,IAAI,GAAG;QACrC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,GAAG;AAChC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE;AACJ,YAAA,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG;AAC7C,YAAA,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,GAAG;AAClD,SAAA;KACJ,CAAC;IACF,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;AAChD,IAAA,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAEjD,IAAA,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAEK,MAAM,OAAO,GAAG,CAAU,KAAU,KAAe,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAa,CAAC;AAEjG,MAAM,QAAQ,GAAG,CAAC,MAAmB,EAAE,SAAiB,KAAU;IACrE,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/B,QAAA,MAAM,CAAC,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;KACvC;AACL,CAAC,CAAC;AACK,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAE,SAAiB,KAAU;IACxE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/G,CAAC,CAAC;AACK,MAAM,SAAS,GAAG,CAAC,MAAmB,KAAmB;AAC5D,IAAA,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;AAChC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KACpC;IACD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC;AACK,MAAM,QAAQ,GAAG,CAAC,MAAmB,EAAE,SAAiB,KAAc,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAElH,MAAM,SAAS,GAAG,CAAC,UAAU,MAAc,EAAE,QAAkB,EAAE,SAAoB,EAAA;AACxF,IAAA,IAAI,QAA6B,CAAC;AAClC,IAAA,SAAS,IAAI,GAAA;QACT,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;KACpD;IAED,SAAS,cAAc,CAAC,IAAY,EAAA;AAChC,QAAA,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAwB,CAAC;AACrE,QAAA,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KACvC;AAED,IAAA,SAAS,UAAU,GAAA;QACf,IAAI,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACrC,YAAA,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACnC,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YACxC,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,eAAe,EAAE,CAAC;AAC5B,gBAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC7B;AACD,YAAA,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;SACzC;aAAM;YACH,QAAQ,CAAC,MAAM,EAAE,CAAC;SACrB;KACJ;AAED,IAAA,SAAS,eAAe,GAAA;AACpB,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KACvC;IAED,MAAM,IAAI,GAAG,UAAU,IAAY,EAAA;QAC/B,cAAc,CAAC,IAAI,CAAC,CAAC;AACrB,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,eAAe,EAAE,CAAC;AACtB,KAAC,CAAC;IAEF,OAAO;QACH,IAAI;KACP,CAAC;AACN,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;;ACje/B,IAAI,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,KAAK,SAAS,CAAC;AACpE,cAAc,GAAG,KAAK,CAAC;AAEvB,IAAI,UAAU,GAAkB,EAAE,CAAC;AAEnC,IAAI,oBAAoB,GAAG,UAAU,OAAoB,EAAA;IACrD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,MAAM,CAAC,WAAW,CAAC,YAAA;QACtB,IAAI,OAAO,EAAE;YACT,QAAQ,IAAI;AACR,gBAAA,KAAK,CAAC;oBACF,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,kCAAkC,CAAC,CAAC;oBAC3E,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,qCAAqC,CAAC,CAAC;oBAC9E,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;oBAC5E,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,kCAAkC,CAAC,CAAC;oBAC3E,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;oBAC5E,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC;oBAC7E,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;oBAC5E,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;oBAC5E,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC;oBAC7E,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,kCAAkC,CAAC,CAAC;oBAC3E,MAAM;AACV,gBAAA,KAAK,GAAG;oBACJ,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC;oBAC7E,MAAM;aACb;YACD,IAAI,IAAI,EAAE,CAAC;AACX,YAAA,IAAI,IAAI,GAAG,GAAG,EAAE;gBACZ,IAAI,GAAG,CAAC,CAAC;aACZ;SACJ;KACJ,EAAE,GAAG,CAAC,CAAC;AACZ,CAAC,CAAC;AAEF,IAAI,0BAA0B,GAAG,UAAU,OAAoB,EAAA;IAC3D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,MAAM,CAAC,WAAW,CAAC,YAAA;QACtB,IAAI,OAAO,EAAE;YACT,QAAQ,IAAI;AACR,gBAAA,KAAK,CAAC;oBACF,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,6CAA6C,CAAC,CAAC;oBACtF,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,gDAAgD,CAAC,CAAC;oBACzF,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAC;oBACvF,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,6CAA6C,CAAC,CAAC;oBACtF,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAC;oBACvF,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,+CAA+C,CAAC,CAAC;oBACxF,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAC;oBACvF,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAC;oBACvF,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,+CAA+C,CAAC,CAAC;oBACxF,MAAM;AACV,gBAAA,KAAK,EAAE;oBACH,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,6CAA6C,CAAC,CAAC;oBACtF,MAAM;AACV,gBAAA,KAAK,GAAG;oBACJ,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,+CAA+C,CAAC,CAAC;oBACxF,MAAM;aACb;YACD,IAAI,IAAI,EAAE,CAAC;AACX,YAAA,IAAI,IAAI,GAAG,GAAG,EAAE;gBACZ,IAAI,GAAG,CAAC,CAAC;aACZ;SACJ;KACJ,EAAE,GAAG,CAAC,CAAC;AACZ,CAAC,CAAC;AAEF,IAAI,mBAAmB,GAAG,UAAU,OAAoB,EAAA;AACpD,IAAA,MAAM,QAAQ,GAAG,CAAC,CAAkB,KAAI;AACpC,QAAA,IAAI,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE;AACjD,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB,CAAC;AACvC,YAAA,IAAI,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;AAC9B,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACnE,oBAAA,UAAU,CAAC,YAAA;AACP,wBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;qBACrC,EAAE,EAAE,CAAC,CAAC;iBACV;qBAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE;AAC5C,oBAAA,UAAU,CAAC,YAAA;AACP,wBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;qBACrC,EAAE,EAAE,CAAC,CAAC;iBACV;aACJ;iBAAM;AACH,gBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACzB,gBAAA,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;aACzD;SACJ;AACL,KAAC,CAAC;AACF,IAAA,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,IAAI,aAAa,GAAG;AAChB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,UAAU,EAAE,CAAC;CAChB,CAAC;AACF,IAAI,YAAY,GAAG;AACf,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,UAAU,EAAE,CAAC;CAChB,CAAC;AACF,IAAI,iBAAiB,GAAG;AACpB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,UAAU,EAAE,CAAC;CAChB,CAAC;AACF,IAAI,oBAAoB,GAAG;AACvB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,UAAU,EAAE,QAAQ;CACvB,CAAC;AAEF,IAAI,oBAAoB,GAAG,UAAU,OAAoB,EAAA;IACrD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;AAChC,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE,mCAAmC,CAAC,EAAE;AACxD,YAAA,IAAI,OAAO,CAAC,aAAa,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,0BAA0B,CAAC,EAAE;gBACtF,OAAO,YAAA;oBACH,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,oBAAA,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClC,iBAAC,CAAC;aACL;iBAAM;gBACH,OAAO,YAAA;oBACH,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,oBAAA,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClC,iBAAC,CAAC;aACL;SACJ;AAAM,aAAA,IAAI,QAAQ,CAAC,OAAO,EAAE,kCAAkC,CAAC,EAAE;YAC9D,OAAO,YAAA;gBACH,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,gBAAA,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClC,aAAC,CAAC;SACL;aAAM;YACH,OAAO,YAAA;AACH,gBAAA,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC5B,gBAAA,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClC,aAAC,CAAC;SACL;KACJ;IACD,OAAO,YAAA,GAAc,CAAC;AAC1B,CAAC,CAAC;AAEK,MAAM,YAAY,GAAe;AACpC,IAAA,KAAK,EAAE,UAAU,KAAkB,EAAE,UAAmB,KAAK,EAAA;AACzD,QAAA,IAAI,cAAc,IAAI,OAAO,EAAE;;YAE3B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE;AACrC,gBAAA,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;aACtC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAc,KAAK,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAE9F,YAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;AACvB,gBAAA,IAAI,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;AAChC,gBAAA,IAAI,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;AAClC,gBAAA,IAAI,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;gBAEpC,IAAI,UAAU,CAAC,OAAO,CAAC,wCAAwC,CAAC,KAAK,CAAC,CAAC,EAAE;oBACrE,OAAO,CAAC,OAAO,CACX;wBACI,SAAS,EAAE,CAAC,aAAa,GAAG,MAAM,GAAG,KAAK,EAAE,eAAe,CAAC;AAC5D,wBAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;qBAClB,EACD,aAAa,CAChB,CAAC;iBACL;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC9E,OAAO,CAAC,OAAO,CACX;AACI,wBAAA,SAAS,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,eAAe,CAAC;AACjE,wBAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;qBAClB,EACD,aAAa,CAChB,CAAC;iBACL;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC9E,OAAO,CAAC,OAAO,CACX;AACI,wBAAA,SAAS,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,eAAe,CAAC;AAChE,wBAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;qBAClB,EACD,aAAa,CAChB,CAAC;iBACL;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,2CAA2C,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC/E,OAAO,CAAC,OAAO,CACX;wBACI,SAAS,EAAE,CAAC,aAAa,GAAG,KAAK,GAAG,KAAK,EAAE,eAAe,CAAC;AAC3D,wBAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;qBAClB,EACD,aAAa,CAChB,CAAC;iBACL;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC,EAAE;oBACtE,OAAO,CAAC,OAAO,CACX;AACI,wBAAA,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE;AAClC,wBAAA,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE;AACpC,wBAAA,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE;qBACrC,EACD,oBAAoB,CACvB,CAAC;iBACL;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC1E,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;iBAC5F;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,yCAAyC,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC7E,OAAO,CAAC,OAAO,CACX;AACI,wBAAA,SAAS,EAAE,CAAC,wBAAwB,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE,wBAAwB,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;qBACjH,EACD,iBAAiB,CACpB,CAAC;iBACL;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC9E,OAAO,CAAC,OAAO,CACX;AACI,wBAAA,SAAS,EAAE,CAAC,wBAAwB,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE,wBAAwB,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;qBACjH,EACD,iBAAiB,CACpB,CAAC;iBACL;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,uCAAuC,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC3E,OAAO,CAAC,OAAO,CACX;AACI,wBAAA,SAAS,EAAE,CAAC,wBAAwB,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE,wBAAwB,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;qBACjH,EACD,iBAAiB,CACpB,CAAC;iBACL;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,yCAAyC,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC7E,OAAO,CAAC,OAAO,CACX;AACI,wBAAA,SAAS,EAAE,CAAC,wBAAwB,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE,wBAAwB,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;qBACjH,EACD,iBAAiB,CACpB,CAAC;iBACL;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC,EAAE;AACtE,oBAAA,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;iBAC5E;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1E,oBAAA,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;iBAC5E;qBAAM,IAAI,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC,EAAE;oBACvE,OAAO,CAAC,OAAO,CACX;AACI,wBAAA,EAAE,SAAS,EAAE,kCAAkC,EAAE,MAAM,EAAE,CAAC,EAAE;AAC5D,wBAAA,EAAE,SAAS,EAAE,qCAAqC,EAAE,MAAM,EAAE,GAAG,EAAE;AACjE,wBAAA,EAAE,SAAS,EAAE,mCAAmC,EAAE,MAAM,EAAE,GAAG,EAAE;AAC/D,wBAAA,EAAE,SAAS,EAAE,kCAAkC,EAAE,MAAM,EAAE,GAAG,EAAE;AAC9D,wBAAA,EAAE,SAAS,EAAE,mCAAmC,EAAE,MAAM,EAAE,GAAG,EAAE;AAC/D,wBAAA,EAAE,SAAS,EAAE,oCAAoC,EAAE,MAAM,EAAE,GAAG,EAAE;AAChE,wBAAA,EAAE,SAAS,EAAE,mCAAmC,EAAE,MAAM,EAAE,GAAG,EAAE;AAC/D,wBAAA,EAAE,SAAS,EAAE,mCAAmC,EAAE,MAAM,EAAE,GAAG,EAAE;AAC/D,wBAAA,EAAE,SAAS,EAAE,oCAAoC,EAAE,MAAM,EAAE,GAAG,EAAE;AAChE,wBAAA,EAAE,SAAS,EAAE,kCAAkC,EAAE,MAAM,EAAE,GAAG,EAAE;AAC9D,wBAAA,EAAE,SAAS,EAAE,oCAAoC,EAAE,MAAM,EAAE,CAAC,EAAE;AACjE,qBAAA,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAC7D,CAAC;iBACL;AACL,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,qBAAqB,CAAC,MAAM,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;aACtE;SACJ;aAAM;AACH,YAAA,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;YAGtC,MAAM,UAAU,GAA0B,EAAE,CAAC;;YAI7C,IAAI,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAc,8BAA8B,CAAC,CAAC;YACnF,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;AAC9D,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,gBAAA,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;oBAClE,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;AAChD,oBAAA,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACxB,oBAAA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1B,oBAAA,IAAI,KAAK,IAAI,MAAM,EAAE;AACjB,wBAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AACvD,wBAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;qBAC5D;iBACJ;AACD,gBAAA,CAAC,UAAU,OAAO,EAAA;oBACd,IAAI,OAAO,GAAG,EAAE,CAAC;AAEjB,oBAAA,IAAI,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,GAAG,CAAC,EAAE;AACrH,wBAAA,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;qBACtF;oBAED,MAAM,EAAE,GAAG,MAAK;AACZ,wBAAA,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;wBAChC,IAAI,SAAS,EAAE;AACX,4BAAA,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;yBACjC;AACL,qBAAC,CAAC;AACF,oBAAA,MAAM,SAAS,GAAmB;wBAC9B,EAAE;wBACF,OAAO;wBACP,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC;qBAC1C,CAAC;AACF,oBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,iBAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aACnB;YAED,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;;AAEnC,YAAA,OAAO,UAAU,MAAe,EAAA;AAC5B,gBAAA,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;AAC9B,oBAAA,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;AACpC,wBAAA,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACnC,wBAAA,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACjC,wBAAA,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC;AACvD,wBAAA,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;qBACrC;iBACJ;;gBAGD,OAAO,YAAA;AACH,oBAAA,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC/B,oBAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAChC,wBAAA,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;AACxE,4BAAA,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;yBACnF;qBACJ;AACL,iBAAC,CAAC;AACN,aAAC,CAAC;SACL;KACJ;AAED,IAAA,IAAI,EAAE,UAAU,KAAkB,EAAE,OAAgB,EAAA;AAChD,QAAA,IAAI,cAAc,IAAI,OAAO,EAAE;;YAE3B,IAAI,QAAQ,GAAG,OAAO,CAAc,KAAK,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAC5F,YAAA,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAA;AACzB,gBAAA,EAAE,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,UAAU,SAAS,EAAA;oBAC1C,SAAS,CAAC,MAAM,EAAE,CAAC;AACvB,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;SACN;aAAM;AACH,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aAChC;YAED,IAAI,KAAK,EAAE;gBACP,IAAI,QAAQ,GAAG,OAAO,CAAc,KAAK,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAC5F,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACnC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACrC,oBAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC/C,oBAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;iBAC/C;aACJ;SACJ;KACJ;IAED,KAAK,EAAE,UAAU,KAAkB,EAAA;QAC/B,IAAI,cAAc,EAAE;AAChB;;;;;;AAM2B;YAE3B,IAAI,QAAQ,GAAG,OAAO,CAAc,KAAK,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAC5F,YAAA,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAA;AACzB,gBAAA,EAAE,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,UAAU,SAAS,EAAA;AAC1C,oBAAA,IAAI,SAAS,CAAC,SAAS,KAAK,UAAU,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;wBACzE,SAAS,CAAC,KAAK,EAAE,CAAC;qBACrB;AACL,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;;;;;;SAON;KACJ;IACD,MAAM,EAAE,UAAU,KAAkB,EAAA;QAChC,IAAI,cAAc,EAAE;YAChB,IAAI,QAAQ,GAAG,OAAO,CAAc,KAAK,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAC5F,YAAA,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAA;AACzB,gBAAA,EAAE,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,UAAU,SAAS,EAAA;AAC1C,oBAAA,IAAI,SAAS,CAAC,SAAS,KAAK,QAAQ,EAAE;wBAClC,SAAS,CAAC,IAAI,EAAE,CAAC;qBACpB;AACL,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;SACN;KACJ;IACD,KAAK,EAAE,UAAU,KAAkB,EAAA;;KAElC;CACJ;;MCxZY,cAAc,CAAA;AACM,IAAA,UAAA,CAAA;AAA7B,IAAA,WAAA,CAA6B,UAA8B,EAAA;QAA9B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAoB;KAAI;AAE/D,IAAA,kBAAkB,CAAC,OAAe,EAAA;QAC9B,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;KACxD;IAED,gBAAgB,CAAC,OAAe,EAAE,UAAkB,EAAA;QAChD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;KAClE;AAED,IAAA,aAAa,CAAC,QAAgB,EAAA;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC7C;AAED,IAAA,kBAAkB,CAAC,IAAY,EAAE,IAAqC,EAAE,UAA4C,EAAA;AAChH,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;KAChE;IAED,iBAAiB,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,iBAAiB,EAAE,CAAC;KAChD;IAED,iBAAiB,GAAA;AACb,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,SAAS,CAAC,KAAa,EAAA;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACtC;AAED,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,YAAY,CAAC;KACvB;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,KAAK,CAAC;KAChB;AACD,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC;KACf;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC;KAC/B;IACD,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;KAChC;AAED,IAAA,IAAI,0BAA0B,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;IAED,kBAAkB,CAAC,EAAU,EAAE,IAAyB,EAAA;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KAClD;IAED,iBAAiB,CAAC,QAA6B,EAAE,YAAqB,EAAA;QAClE,IAAI,CAAC,UAAU,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KAC/D;IAED,oBAAoB,CAAgD,OAAe,EAAE,MAAe,EAAA;QAChG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,oBAAoB,CAAa,OAAO,EAAE,MAAM,CAAC,CAAC;KAC9E;AAED,IAAA,OAAO,CAAC,OAAe,EAAA;AACnB,QAAA,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAC9B;AAED,IAAA,OAAO,CAAC,MAAc,EAAA;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACrC;IAED,cAAc,CACV,GAAW,EACX,MAAc,EACd,MAAkC,EAClC,OAAmC,EACnC,IAAgC,EAChC,YAAoB,EAAA;AAEpB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KAC7F;IAED,uBAAuB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC;KACf;IACD,SAAS,CAAC,IAAY,EAAA,GAAU;AAEhC,IAAA,IAAI,uBAAuB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC;KACf;IAED,KAAK,CACD,EAAU,EACV,MASC,EAAA;QAED,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;KACvC;IAED,oBAAoB,CAAC,OAAe,EAAE,oBAA6B,EAAA;QAC/D,IAAI,CAAC,UAAU,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;KACzE;AAED,IAAA,IAAI,sBAAsB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,cAAc,CAAC,KAAa,EAAA;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,IAAI,qBAAqB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC;KACf;IACD,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;KACrC;;AACJ;;MCjIY,UAAU,CAAA;IAMnB,OAAO,QAAQ,GAAsB;AACjC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEF,IAAA,OAAO,WAAW,GAAG,CAAC,CAAC;AAEb,IAAA,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC;AACpC,IAAA,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC;IAC1C,OAAO,GAAkB,IAAK,CAAC;IAC/B,OAAO,GAAgB,IAAK,CAAC;IAC7B,SAAS,GAAW,IAAK,CAAC;IAC1B,KAAK,GAAgB,IAAK,CAAC;IAC3B,UAAU,GAAW,IAAK,CAAC;IAC3B,YAAY,GAAY,IAAK,CAAC;IAC9B,eAAe,GAAkB,KAAK,CAAC;IACvC,OAAO,GAAW,IAAK,CAAC;IACxB,UAAU,GAAmB,IAAI,CAAC;IAClC,uBAAuB,GAAY,IAAK,CAAC;IACzC,wBAAwB,GAAuB,IAAI,CAAC;IACpD,gBAAgB,GAAuB,IAAI,CAAC;IAC5C,sBAAsB,GAAW,CAAC,CAAC;IACnC,SAAS,GAA+B,IAAI,CAAC;IAC7C,SAAS,GAAwB,IAAK,CAAC;IACvC,aAAa,GAAW,CAAC,CAAC;AAC1B,IAAA,EAAE,CAAS;AAErB,IAAA,WAAA,CACI,OAAoB,EACpB,OAA+B,EAC/B,eAAkD,EAClD,WAAmD,EAAA;AAEnD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAgB,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,QAAyB,EAAE,OAAO,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,eAAe,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAClD;aAAM;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAC;SAClG;QAED,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1C;aAAM;AACH,YAAA,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAc,kBAAkB,CAAC,EAAE,aAAa,CAAC,CAAC;SAC1G;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACnG,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,GAAG,CAAC;AAEnE,QAAA,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;AAE1F,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,KAAK,EAAE;AAC7D,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAChC;aAAM;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAChC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;QAExC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC;AACjE,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AAC1D,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;iBAC1B;aACJ;SACJ;AACD,QAAA,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1H,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;AAC3F,YAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,EAAE;gBACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAC3F,gBAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;oBAC/B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;iBACpE;aACJ;SACJ;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AAEhF,QAAA,IAAI,CAAC,EAAE,GAAG,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAA,CAAA,EAAI,UAAU,CAAC,WAAW,CAAA,CAAE,CAAC;QAC1D,EAAE,UAAU,CAAC,WAAW,CAAC;KAC5B;IAEM,eAAe,CAAC,SAA8B,EAAA,GAAU;AAExD,IAAA,OAAO,cAAc,GAAG,mBAAmB,CAAC;AAC5C,IAAA,OAAO,eAAe,GAAG,EAAE,CAAC;IAE5B,OAAO,WAAW,CAAoF,OAAoB,EAAA;QAC7H,OAAO,IAAI,CAAS,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACrD;IAEM,OAAO,eAAe,CAAoF,EAAU,EAAA;QACvH,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,eAAe,CAAA,CAAE,CAAC,CAAC,CAAC;AAClH,QAAA,IAAI,MAA0B,CAAC;QAC/B,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YACxC,MAAM,WAAW,GAAG,IAAI,CAAS,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/D,IAAI,WAAW,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;gBACtC,MAAM,GAAG,WAAW,CAAC;aACxB;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,OAAO,cAAc,CACxB,WAA8E,EAC9E,OAAoB,EACpB,OAA+B,EAAA;;QAG/B,IAAI,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAwB,OAAO,CAAC,CAAC;AACtE,QAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;;AAElB,YAAA,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;YAEzC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;SACtD;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;AAEM,IAAA,OAAO,WAAW,CACrB,WAA8E,EAC9E,QAA4B,EAC5B,SAA+B,EAAA;AAE/B,QAAA,IAAI,SAAS,IAAI,IAAI,EAAE;AACnB,YAAA,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAG;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAwB,WAAW,EAAE,OAAO,EAAE;AAC7D,oBAAA,KAAK,EAAE,IAAI;oBACX,SAAS;AACK,iBAAA,CAAC,CAAC;AACxB,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACrC;aAAM;AACH,YAAA,OAAO,IAAI,OAAO,CAAsB,OAAO,IAAG;gBAC9C,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,IAAG;AACjC,oBAAA,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAG;AACxB,wBAAA,IAAI,CAAC,cAAc,CAAwB,WAAW,EAAE,OAAO,EAAE;AAC7D,4BAAA,KAAK,EAAE,IAAI;4BACX,SAAS;AACK,yBAAA,CAAC,CAAC;AACxB,qBAAC,CAAC,CAAC;oBACH,OAAO,CAAC,SAAS,CAAC,CAAC;AACvB,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;SACN;KACJ;AAEM,IAAA,WAAW,cAAc,GAAA;AAC5B,QAAA,OAAO,SAAS,CAAC,GAAG,CAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,CAAkB,CAAC;KAC1C;AAEM,IAAA,OAAO,YAAY,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;KACzD;IAEM,YAAY,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KAC1C;AAEM,IAAA,OAAO,YAAY,CAAC,QAA6B,EAAE,YAAsB,EAAE,wBAAkC,EAAA;;AAEhH,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;YAC5B,YAAY,GAAG,IAAI,CAAC;SACvB;aAAM;AACH,YAAA,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;SACxC;AACD,QAAA,IAAI,wBAAwB,KAAK,SAAS,EAAE;YACxC,wBAAwB,GAAG,IAAI,CAAC;SACnC;aAAM;AACH,YAAA,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;SAChE;QAED,IAAI,wBAAwB,EAAE;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,IAAG;;gBAEjC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;;gBAG3C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;SACN;aAAM;;YAEH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;SACxE;KACJ;AAEM,IAAA,YAAY,CAAC,QAA6B,EAAE,YAAsB,EAAE,wBAAkC,EAAA;AACzG,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;KAC1F;AAEM,IAAA,OAAO,uBAAuB,CAAC,IAAY,EAAE,IAAqC,EAAE,UAA4C,EAAA;AACnI,QAAA,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;KAC/E;AAEM,IAAA,uBAAuB,CAAC,IAAY,EAAE,IAAqC,EAAE,UAA4C,EAAA;QAC5H,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;KACpE;IAEM,aAAa,GAAA;QAChB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KAC3F;AAES,IAAA,WAAW,CAAC,MAA0B,EAAE,WAAmB,EAAE,gBAAyB,KAAK,EAAA;AACjG,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SACtC;aAAM;YACH,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAI;AAC7B,gBAAA,IAAI,KAAK,KAAK,WAAW,EAAE;AACvB,oBAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC5C;qBAAM;AACH,oBAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACjC;AACL,aAAC,CAAC,CAAC;SACN;QACD,IAAI,aAAa,EAAE;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;SAC1C;KACJ;AAES,IAAA,oBAAoB,CAAC,WAAmB,EAAA;AAC9C,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,uBAAuB,CACxB,aAAa,EACb;gBACI,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,EAAE,EAAE,IAAI,CAAC,UAAU;AACnB,gBAAA,EAAE,EAAE,WAAW;aAClB,EACD;gBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;AAC5B,gBAAA,YAAY,EAAE,WAAW;AAC5B,aAAA,CACJ,CAAC;SACL;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;AAEM,IAAA,OAAO,eAAe,CACzB,KAA8B,EAC9B,SAA+B,EAAA;AAE/B,QAAA,MAAM,EAAE,GAAG,CAAC,EAAe,EAAE,SAA8B,KAAI;AAC3D,YAAA,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,IAAI,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YAC1E,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAwB,aAAa,CAAC,CAAC;gBAC5E,IAAI,MAAM,EAAE;AACR,oBAAA,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;iBACrC;aACJ;AACL,SAAC,CAAC;AAEF,QAAA,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,MAAM,QAAQ,GAAuB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,YAAA,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;SAC9C;aAAM;YACH,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,IAAG;gBACvC,MAAM,QAAQ,GAAuB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,gBAAA,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/C,aAAC,CAAC,CAAC;SACN;KACJ;;;;ACpSC,MAAO,UAAW,SAAQ,UAA6B,CAAA;IACzD,OAAO,QAAQ,GAAsB;AACjC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,wBAAwB,CAAC;AAEjD,IAAA,MAAM,CAAqB;AAC3B,IAAA,eAAe,CAAqB;AACpC,IAAA,iBAAiB,CAAU;AAC3B,IAAA,KAAK,CAAgB;AACrB,IAAA,eAAe,CAAqB;AACpC,IAAA,eAAe,CAAqB;AACpC,IAAA,cAAc,CAAqB;AACnC,IAAA,WAAW,CAAqB;AAChC,IAAA,QAAQ,CAAqB;AAC7B,IAAA,WAAW,CAAqB;AAChC,IAAA,mBAAmB,CAAqB;IAChD,WAAY,CAAA,OAAoB,EAAE,OAAmC,EAAA;AACjE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAC;QAE1E,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC9D,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,WAAW,CAAC;AAE9E,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACnE,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE3D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAEpE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,wCAAwC,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;;AAGnF,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,oBAAoB,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClE,IAAI,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAE/E,gBAAA,IAAI,UAAU,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;;AAEnF,oBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;oBACnG,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;iBAC9E;AAED,gBAAA,IAAI,cAAc,GAAG,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxG,IAAI,wBAAwB,GAAG,UAAU,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACxE,gBAAA,IAAI,0BAA0B,GAAG,cAAc,GAAG,wBAAwB,GAAG,CAAC,CAAC;AAE/E,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,0BAA0B,GAAG,IAAI,CAAC,CAAC;aACzF;SACJ;AAED,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;;KAGJ;IAEM,eAAe,CAAC,SAA8B,EAAA,GAAI;IAEjD,oBAAoB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI;AACA,gBAAA,IAAI,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;AACxD,gBAAA,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,eAAe,EAAE;AACtF,oBAAA,OAAO,IAAI,CAAC;iBACf;aACJ;YAAC,OAAO,GAAG,EAAE;AACV,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACtB;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,UAAU,CAAC,OAAe,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;SACrC;KACJ;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAEf,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,EAAE;AACjE,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;AACzE,YAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;AAC9B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACzC;AACD,YAAA,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SACvC;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;;AAE9B,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACpC;;AAGD,YAAA,IAAI,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;AACzG,YAAA,IAAI,OAAO,GAAG;AACV,gBAAA,MAAM,EAAE,kBAAkB;AAC1B,gBAAA,cAAc,EAAE,kBAAkB;aACrC,CAAC;YACF,IAAI,UAAU,GAAG,kBAAkB,CAAC;YAEpC,OAAO,CAAC,GAAG,CAAC;AACR,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAmB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC;AAC3F,gBAAA,IAAI,OAAO,CAAO,UAAU,CAAC,EAAE,CAAC,EAAA;AAC5B,oBAAA,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9B,iBAAC,CAAC;AACL,aAAA,CAAC,CAAC,IAAI,CAAC,MAAM,IAAG;AACb,gBAAA,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAElB,gBAAA,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;gBACtB,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE;oBAClC,IAAI,CAAC,CAAC,IAAI;AAAE,wBAAA,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,IAAI,IAAI,EAAE;;AAEN,wBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBACtC,OAAO,GAAG,IAAI,CAAC;AACf,wBAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,wBAAA,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAEpC,wBAAA,IAAI,MAAM,KAAK,GAAG,EAAE;4BAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;4BACvG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;yBAC9G;AACD,wBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;wBAEzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;qBAC3C;yBAAM;AACH,wBAAA,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;qBACrE;iBACJ;qBAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,EAAE;AAC7C,oBAAA,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBACvE;qBAAM;AACH,oBAAA,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBACvE;gBAED,IAAI,CAAC,OAAO,EAAE;AACV,oBAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;AACxC,oBAAA,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;iBACvC;AACL,aAAC,CAAC,CAAC;SACN;KACJ;IAEM,aAAa,GAAA;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAEM,oBAAoB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAEO,IAAA,mBAAmB,CAAC,eAAuB,EAAA;AAC/C,QAAA,IAAI;YACA,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC;AAEhD,YAAA,IAAI,CAAC,uBAAuB,CACxB,QAAQ,EACR;gBACI,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,EAAE,EAAE,IAAI,CAAC,UAAU;gBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,gBAAA,EAAE,EAAE,UAAU;AACd,gBAAA,EAAE,EAAE,eAAe;aACtB,EACD;gBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,YAAY,EAAE,UAAU;AACxB,gBAAA,YAAY,EAAE,eAAe;AAChC,aAAA,CACJ,CAAC;SACL;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;IAEO,OAAO,GAAA;QACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAC1C;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;;;;YAInB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;AAEM,IAAA,eAAe,CAAC,OAAoB,EAAA;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;AAEf,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;AAEtC,QAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;KAClC;IAEO,cAAc,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;;QAGjG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAClG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;KAC3C;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,SAAS,CAAC;KAC/E;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,UAAU,CAAC,eAAe;AAC3C,QAAA,UAAU,EAAE,UAAU,QAAiC,EAAE,SAA+B,EAAA;;YAEpF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAC9H,UAAU,CAAC,WAAW,CAAgC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;SACtI;QAED,KAAK,EAAE,UAAU,OAAoB,EAAA;AACjC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,UAAU,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YACrF,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,aAAa,CAAC,CAAC;gBACpF,IAAI,MAAM,EAAE;AACR,oBAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE;AAChC,wBAAA,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;qBACnC;AAAM,yBAAA,IAAI,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AACrC,wBAAA,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;qBACnC;AAAM,yBAAA,IAAI,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;wBACrC,MAAM,CAAC,cAAc,EAAE,CAAC;qBAC3B;iBACJ;aACJ;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;KACJ,CAAC;;;;ACtQN;AAKM,MAAO,eAAgB,SAAQ,UAAkC,CAAA;IACnE,OAAO,QAAQ,GAAG;AACd,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,8BAA8B,CAAC;AAEvD,IAAA,KAAK,CAAqB;AAC1B,IAAA,WAAW,CAAU;AACrB,IAAA,YAAY,CAAc;AAC1B,IAAA,WAAW,CAAc;AACzB,IAAA,qBAAqB,CAAS;AAEtC;;;;AAIG;IACH,WAAY,CAAA,OAAoB,EAAE,OAAwC,EAAA;AACtE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAE9D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAExD,QAAA,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,oBAAoB,CAAC,EAAE,0BAA0B,CAAC,CAAC;AACnI,QAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAClC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAc,+BAA+B,CAAC,EAC7E,qCAAqC,CACxC,CAAC;QACF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAExD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAChD;AAEM,IAAA,eAAe,CAAC,SAA8B,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAE7D,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEnC,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;SACJ;KACJ;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAI;AACA,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,GAAG,EAAE,CAAC;AAE/D,YAAA,UAAU,CAAC,uBAAuB,CAC9B,oBAAoB,EACpB;gBACI,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,EAAE,EAAE,IAAI,CAAC,UAAU;gBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,gBAAA,EAAE,EAAE,SAAS;aAChB,EACD;gBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,YAAY,EAAE,SAAS;AAC1B,aAAA,CACJ,CAAC;SACL;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;AAEO,IAAA,mBAAmB,CAAC,UAAkB,EAAA;AAC1C,QAAA,IAAI;AACA,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,GAAG,EAAE,CAAC;AAEjE,YAAA,UAAU,CAAC,uBAAuB,CAC9B,mBAAmB,EACnB;gBACI,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,EAAE,EAAE,IAAI,CAAC,UAAU;gBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,UAAU;aACjB,EACD;gBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,YAAY,EAAE,UAAU;AAC3B,aAAA,CACJ,CAAC;SACL;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;KACpE;AAEM,IAAA,KAAK,CAAC,OAAoB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACf,YAAA,OAAO,IAAI,CAAC;SACf;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAExD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,MAAM,CAAC,0BAA0B,IAAI,UAAU,EAAE;YACtD,MAAM,IAAI,GAAqB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAE3D,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aACzB;AAED,YAAA,IAAI;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1G,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAClI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;AAC1E,qBAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,qBAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,qBAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW;AAChF,qBAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,qBAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,qBAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAChC;YAAC,OAAO,CAAC,EAAE;AACR,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACpB;YAED,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,aAAa,CAAC,IAAY,EAAA;QAC9B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;YACvC,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACtD,gBAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;aACrC;iBAAM;gBACH,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACnD,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC;aAC3D;SACJ;KACJ;AAEM,IAAA,WAAW,CAAC,IAAY,EAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,iBAAiB,GAAG,IAAI,CAAC;QAE7B,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAEzB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;;YAExD,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAElG,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC1D,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC5C,UAAU,CAAC,MAAK;wBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;qBACvD,EAAE,GAAG,CAAC,CAAC;iBACX,EAAE,IAAI,CAAC,CAAC;aACZ;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAExC,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAE/B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,yBAAyB,IAAI,MAAM,EAAE;oBACrC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,iBAAiB,GAAG,KAAK,CAAC;iBAC7B;aACJ;SACJ;AACD,QAAA,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACzC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;SAC1B;KACJ;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,eAAe,CAAC,eAAe;AAChD,QAAA,UAAU,EAAE,UAAU,QAAiC,EAAE,SAA+B,EAAA;YACpF,eAAe,CAAC,WAAW,CACvB,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,EAC3D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpB,SAAS,CACZ,CAAC;SACL;QAED,KAAK,EAAE,UAAU,OAAoB,EAAA;AACjC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,eAAe,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YAC1F,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAA0C,aAAa,CAAC,CAAC;gBACnG,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAChC;aACJ;AACD,YAAA,OAAO,IAAI,CAAC;SACf;AAED,QAAA,WAAW,EAAE,UAAU,EAAU,EAAE,IAAY,EAAA;YAC3C,eAAe,CAAC,eAAe,CAA0C,EAAE,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;SACnG;KACJ,CAAC;;;;ACpOA,MAAO,mBAAoB,SAAQ,UAAsC,CAAA;IAC3E,OAAO,QAAQ,GAA+B;AAC1C,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,MAAM,EAAE,EAAE;KACb,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,kCAAkC,CAAC;AAE3D,IAAA,KAAK,CAAqB;AAC1B,IAAA,MAAM,CAAqB;AAC3B,IAAA,QAAQ,CAKd;AACM,IAAA,gBAAgB,CAAS;AACzB,IAAA,IAAI,CAAS;AACb,IAAA,WAAW,CAAU;AACrB,IAAA,aAAa,CAAU;AAEvB,IAAA,WAAW,CAAc;AACzB,IAAA,WAAW,CAAc;AACzB,IAAA,iBAAiB,CAAc;AAE/B,IAAA,YAAY,CAAc;AAC1B,IAAA,YAAY,CAAc;AAC1B,IAAA,kBAAkB,CAAc;AAEhC,IAAA,WAAW,CAAc;AACzB,IAAA,WAAW,CAAc;AACzB,IAAA,iBAAiB,CAAc;IAEvC,WAAY,CAAA,OAAoB,EAAE,OAA4C,EAAA;AAC1E,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAE9D,IAAI,CAAC,QAAQ,GAAG;YACZ,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;YAC7C,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE;YAC/C,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;YACnD,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;SACtD,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,wBAAwB,CAAC,CAAC;AAC5H,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAEd,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;QA0BlC,IAAI,CAAC,SAAS,EAAE,CAAC;;;KAIpB;IAEM,eAAe,CAAC,SAA8B,EAAA,GAAU;IAEvD,KAAK,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;KACJ;IACO,MAAM,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAEO,SAAS,GAAA;;AAEb,QAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,8CAA8C,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACrJ,QAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,8CAA8C,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACrJ,QAAA,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CACxC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,4CAA4C,CAAC,EACrF,yBAAyB,CAC5B,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,8CAA8C,CAAC,EAAE,oBAAoB,CAAC,CAAC;AACvJ,QAAA,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,8CAA8C,CAAC,EAAE,oBAAoB,CAAC,CAAC;AACvJ,QAAA,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CACzC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,4CAA4C,CAAC,EACrF,0BAA0B,CAC7B,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,8CAA8C,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACrJ,QAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,8CAA8C,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACrJ,QAAA,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CACxC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,4CAA4C,CAAC,EACrF,yBAAyB,CAC5B,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;AAE9B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACpC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEO,WAAW,GAAA;AACf,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AAExD,YAAA,IAAI,MAAM,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACxD,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;gBAE3C,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC1D,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC7C,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE7C,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC3D,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;aACjD;iBAAM;gBACH,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACzD,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE5C,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC5D,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC/C,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;gBAE/C,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC3D,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;aACjD;;SAGJ;aAAM;AACH,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACpC;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SAC5D;KACJ;AAEO,IAAA,WAAW,CAAC,KAAgC,EAAA;AAChD,QAAA,IAAI,MAAM,GAAG;AACT,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,OAAO,EAAE,GAAG;SACf,CAAC;QAEF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,MAAM,CAAC;SACjB;AACD,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,YAAA,OAAO,MAAM,CAAC;SACjB;AACD,QAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAC7C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;AAC5C,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5C,QAAA,IAAI,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC;AACT,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACV,YAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,IAAI,IAAI,GAAG,EAAE;AAAE,gBAAA,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;iBACrC;gBACD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aACzB;SACJ;QAED,IAAI,KAAK,GAAG,EAAE;AAAE,YAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;aACxC;YACD,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/B,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SAC1B;QAED,IAAI,OAAO,GAAG,EAAE;AAAE,YAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aAC9C;YACD,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjC,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SAC5B;QAED,IAAI,OAAO,GAAG,EAAE;AAAE,YAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aAC9C;YACD,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjC,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SAC5B;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,mBAAmB,CAAC,eAAe;AACpD,QAAA,UAAU,EAAE,UAAU,QAAiC,EAAE,MAA0B,EAAE,SAA+B,EAAA;AAChH,YAAA,mBAAmB,CAAC,WAAW,CAC3B,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,mBAAmB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,EAC9E,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpB,SAAS,CACZ,CAAC;SACL;QAED,KAAK,EAAE,UAAU,QAAiC,EAAA;YAC9C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,KAAK,EAAA;gBAC7C,mBAAmB,CAAC,WAAW,CAAkD,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAClG,aAAC,CAAC,CAAC;SACN;QACD,MAAM,EAAE,UAAU,QAAiC,EAAA;YAC/C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,KAAK,EAAA;gBAC7C,mBAAmB,CAAC,WAAW,CAAkD,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACnG,aAAC,CAAC,CAAC;SACN;KACJ,CAAC;;;;ACjQN,MAAM,YAAY,GAAG,UAAU,MAA0B,EAAE,SAA8B,EAAA;AACrF,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjC,IAAI,OAAO,GAAuB,SAAS,CAAC;IAC5C,IAAI,UAAU,GAAuB,SAAS,CAAC;AAE/C,IAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AACxB,QAAA,OAAO,GAAG,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACnD,QAAA,UAAU,GAAG,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEzD,IACI,cAAc,CAAC,gBAAgB,CAC3B,2IAA2I,CAC9I,CAAC,MAAM,GAAG,CAAC,EACd;;YAEE,OAAO;SACV;KACJ;;IAGD,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,aAAa,GAAuB,SAAS,CAAC;AAClD,IAAA,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;QACpC,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;KAC1C;AAAM,SAAA,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;QAC3C,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;KAC1C;AAAM,SAAA,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AAC5C,QAAA,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QAE9B,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjB,YAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACnC;QACD,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChB,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEnB,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B,YAAA,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE,KAAK,EAAA;gBAClC,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AAClD,gBAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AACxB,oBAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;wBAC1B,aAAa,GAAG,KAAe,CAAC;qBACnC;iBACJ;AACL,aAAC,CAAC,CAAC;SACN;aAAM;YACH,IAAI,cAAc,GAAG,CAAC,CAAC;;YAEvB,IAAI,qBAAqB,GAAuB,SAAS,CAAC;AAC1D,YAAA,OAAO,CAAC,KAAK,EAAE,UAAU,KAAK,EAAE,CAAC,EAAA;AAC7B,gBAAA,IAAI,IAAI,GAAG,QAAQ,CAAC,KAA0B,CAAC,CAAC;AAChD,gBAAA,IAAI,IAAI,GAAG,cAAc,EAAE;oBACvB,cAAc,GAAG,IAAI,CAAC;AACtB,oBAAA,qBAAqB,GAAG,QAAQ,CAAC,CAAW,CAAC,CAAC;iBACjD;AACL,aAAC,CAAC,CAAC;;AAGH,YAAA,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE,KAAK,EAAA;gBAClC,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AAClD,gBAAA,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,qBAAqB,EAAE;oBAC/F,aAAa,GAAG,KAAe,CAAC;iBACnC;AACL,aAAC,CAAC,CAAC;SACN;KACJ;AAED,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,YAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEjC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO;SACV;QACD,KAAK,GAAG,CAAC,CAAC;KACb;AAED,IAAA,IAAI,aAAa,KAAK,SAAS,EAAE;QAC7B,IAAI,GAAG,GAA4B,EAAE,CAAC;AACtC,QAAA,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE,KAAK,EAAA;YAClC,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AAClD,YAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AACxB,gBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,KAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACnD;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;YACnB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;AAEH,QAAA,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpB,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM;aACT;SACJ;KACJ;IAED,IAAI,eAAe,GAAG,IAAI,CAAC;AAC3B,IAAA,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,QAAA,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE,KAAK,EAAA;AAClC,YAAA,IAAI,KAAK,KAAK,aAAa,EAAE;AACzB,gBAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACjC,eAAe,GAAG,KAAK,CAAC;gBACxB,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9D,gBAAA,cAAc,CAAC,OAAiB,EAAE,UAAoB,EAAE,aAAa,CAAC,CAAC;aAC1E;AACL,SAAC,CAAC,CAAC;KACN;IAED,IAAI,eAAe,EAAE;AACjB,QAAA,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5C,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACjD;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,UAAU,OAAe,EAAE,UAAkB,EAAE,UAAkB,EAAA;AACpF,IAAA,IAAI;AACA,QAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,EAAE;AAC9C,YAAA,CAAC,EAAE,OAAO;AACV,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACjB,SAAA,CAAC,CAAC;KACN;IAAC,OAAO,KAAK,EAAE;AACZ,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACxB;AACL,CAAC,CAAC;MAEW,gBAAgB,CAAA;IAClB,OAAO,GAAG,GAAG;AAChB,QAAA,IAAI,EAAE,UAAU,MAA0B,EAAE,SAA+B,EAAA;AACvE,YAAA,IAAI,SAAS,IAAI,IAAI,EAAE;AACnB,gBAAA,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;aACnC;iBAAM;AACH,gBAAA,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,UAAU,SAAS,EAAA;AAC9C,oBAAA,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACpC,iBAAC,CAAC,CAAC;aACN;SACJ;KACJ,CAAC;;;AC3IA,MAAO,UAAW,SAAQ,UAA6B,CAAA;IACzD,OAAO,QAAQ,GAAG;AACd,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,wBAAwB,CAAC;AAEjD,IAAA,WAAW,CAAU;AACrB,IAAA,KAAK,CAAqB;AAC1B,IAAA,eAAe,CAAqB;AACpC,IAAA,cAAc,CAAqB;AACnC,IAAA,iBAAiB,CAAc;AAC/B,IAAA,QAAQ,CAAqB;AAC7B,IAAA,aAAa,CAAgB;AAC7B,IAAA,oCAAoC,CAAU;AAC9C,IAAA,2BAA2B,CAAU;AACrC,IAAA,4BAA4B,CAAU;AACtC,IAAA,qBAAqB,CAAU;AAC/B,IAAA,eAAe,CAAqB;IACpC,uBAAuB,GAAY,KAAK,CAAC;IACzC,cAAc,GAAW,CAAC,CAAC;AAEnC;;;;AAIG;IACH,WAAY,CAAA,OAAoB,EAAE,OAAmC,EAAA;AACjE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAExD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAE9D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,0CAA0C,CAAC,CAAC;AAC3G,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,qFAAqF,CAAC,CAAC,CAAC;AAEvJ,QAAA,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CACxC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,6EAA6E,CAAC,EACtH,yBAAyB,CAC5B,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;AAErF,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;aACpD;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,oCAAoC;YACrC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAEtH,QAAA,IAAI,CAAC,2BAA2B,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC,CAAC;AAC7G,QAAA,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC,CAAC;AAC/G,QAAA,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC;QAEhG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAChD;AAEM,IAAA,eAAe,CAAC,SAA8B,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAE7D,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAEjC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,EAAE;AAChE,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;aAC/E;iBAAM;gBACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;aACjC;SACJ;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAE1C,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KACxC;IAEO,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AAChE,QAAA,IAAI;AACA,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;gBACpC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;gBAC9C,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;AAE3G,gBAAA,IAAI,CAAC,uBAAuB,CACxB,eAAe,EACf;oBACI,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,EAAE,EAAE,IAAI,CAAC,UAAU;oBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,oBAAA,EAAE,EAAE,SAAS;oBACb,EAAE,EAAE,IAAI,CAAC,eAAe;AACxB,oBAAA,GAAG,EAAE,WAAW;oBAChB,CAAC,EAAE,IAAI,CAAC,cAAc;iBACzB,EACD;oBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,YAAY,EAAE,SAAS;oBACvB,aAAa,EAAE,IAAI,CAAC,eAAe;AACnC,oBAAA,mBAAmB,EAAE,WAAW;oBAChC,WAAW,EAAE,IAAI,CAAC,cAAc;AACnC,iBAAA,CACJ,CAAC;aACL;SACJ;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;AAEO,IAAA,mBAAmB,CAAC,YAAoB,EAAA;AAC5C,QAAA,IAAI;AACA,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;gBACpC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;gBAC9C,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;AAE3G,gBAAA,IAAI,CAAC,uBAAuB,CACxB,sBAAsB,EACtB;oBACI,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,EAAE,EAAE,IAAI,CAAC,UAAU;oBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,oBAAA,EAAE,EAAE,SAAS;oBACb,EAAE,EAAE,IAAI,CAAC,eAAe;AACxB,oBAAA,GAAG,EAAE,WAAW;AAChB,oBAAA,EAAE,EAAE,YAAY;oBAChB,CAAC,EAAE,IAAI,CAAC,cAAc;iBACzB,EACD;oBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,YAAY,EAAE,SAAS;oBACvB,aAAa,EAAE,IAAI,CAAC,eAAe;AACnC,oBAAA,mBAAmB,EAAE,WAAW;AAChC,oBAAA,YAAY,EAAE,YAAY;oBAC1B,WAAW,EAAE,IAAI,CAAC,cAAc;AACnC,iBAAA,CACJ,CAAC;aACL;SACJ;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;AAED,IAAA,cAAc,CAAC,KAAa,EAAE,MAAA,GAAkB,KAAK,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAClD;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAE7B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAEzD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/D,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACxC;AAED,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACvC;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAK;;;;gBAIrB,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,aAAC,CAAC,CAAC;SACN;KACJ;IAEO,sBAAsB,GAAA;AAC1B,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,OAAO,EAAA;AACpC,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;;KAEtD;AAEO,IAAA,aAAa,CAAC,WAAwB,EAAA;AAC1C,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AAErC,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC;SACf;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,IAAI,CAAC,2BAA2B,IAAI,KAAK,KAAK,CAAC,EAAE;AACjD,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;oBACvB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAE/C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAEpE,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAE7B,IAAI,IAAI,CAAC,MAAM,CAAC,0BAA0B,IAAI,UAAU,EAAE;oBACtD,MAAM,IAAI,GAAqB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAEtD,oBAAA,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAE3D,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;qBACzB;AACD,oBAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AAErC,oBAAA,IAAI;AACA,wBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1G,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAClI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;AAC1E,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW;AAChF,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBAChC;oBAAC,OAAO,CAAC,EAAE;AACR,wBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBACpB;AAED,oBAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,MAAA,CAAQ,EAAE,IAAI,CAAC,CAAC;iBAC5D;gBAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,gBAAA,OAAO,KAAK,CAAC;aAChB;iBAAM,IAAI,IAAI,CAAC,4BAA4B,IAAI,KAAK,KAAK,CAAC,EAAE;AACzD,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;oBACvB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAE/C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAEpE,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAE7B,IAAI,IAAI,CAAC,MAAM,CAAC,0BAA0B,IAAI,UAAU,EAAE;oBACtD,MAAM,IAAI,GAAqB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACtD,oBAAA,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAE3D,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;qBACzB;AAED,oBAAA,IAAI;AACA,wBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1G,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAClI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;AAC1E,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW;AAChF,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,6BAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBAChC;oBAAC,OAAO,CAAC,EAAE;AACR,wBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBACpB;AAED,oBAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,OAAA,CAAS,EAAE,IAAI,CAAC,CAAC;iBAC7D;gBAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,gBAAA,OAAO,KAAK,CAAC;aAChB;iBAAM;AACH,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAE3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,uBAAuB,CAAC,YAAoB,EAAA;AAChD,QAAA,IAAI,GAAG,GAAG;AACN,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,KAAK,EAAE,CAAC;SACX,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;AAChH,YAAA,IAAI,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACxD,YAAA,IAAI,cAAc,GAAG,CAAC,EAAE;gBACpB,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,mBAAmB,GAAG,CAAC,CAAC;;gBAG5B,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC9C,IAAI,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChD,IAAI,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBAE/D,IAAI,KAAK,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,EAAE;AACvC,oBAAA,IAAI,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAAC;oBAC/C,IAAI,WAAW,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;oBAC7D,IAAI,kBAAkB,GAAG,CAAC,gBAAgB,GAAG,YAAY,CAAC,WAAW,IAAI,CAAC,CAAC;oBAC3E,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AACnD,oBAAA,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;iBAC/E;gBAED,GAAG,CAAC,UAAU,GAAG,CAAC,MAAM,GAAG,cAAc,IAAI,GAAG,CAAC;gBACjD,GAAG,CAAC,KAAK,GAAG,CAAC,mBAAmB,GAAG,cAAc,IAAI,GAAG,CAAC;aAC5D;SACJ;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAED,IAAA,eAAe,CAAC,oBAA4B,EAAE,MAAA,GAAkB,KAAK,EAAA;AACjE,QAAA,IAAI,cAAc,GAAiC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,gBAAgB,GAAuB,SAAS,CAAC;AACrD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAe,IAAI,CAAC,OAAO,EAAA,MAAA,oBAAe,CAAC;AAC9F,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACnI,YAAA,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;AACtC,gBAAA,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAA4C,CAAC;aACrH;AACD,YAAA,gBAAgB,GAAG,UAAU,CAAC,EAAE,CAAC;SACpC;;;;AAMD,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;AAEvE,QAAA,IAAI,gBAAgB,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,GAAG,gBAAgB,EAAE;YAC7F,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;gBACtC,MAAM,GAAG,GAAG,KAAc,CAAC;AAC3B,gBAAA,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;AACrE,oBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC3B;AACD,gBAAA,IAAI,oBAAoB,KAAK,GAAG,EAAE;AAC9B,oBAAA,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;iBACzB;AACL,aAAC,CAAC,CAAC;SACN;;AAGD,QAAA,IAAI,QAAQ,GAAkB,EAAE,EAC5B,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YACtC,MAAM,GAAG,GAAG,KAAc,CAAC;AAC3B,YAAA,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBACnC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;AAChC,oBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACzD;qBAAM;oBACH,QAAQ,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;iBACvC;AAED,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAClD,oBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACrB;aACJ;iBAAM;AACH,gBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACrB;AACD,YAAA,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAC,CAAC,CAAC;AACH,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACb,gBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AACtD,gBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;AACnB,oBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;iBACrB;aACJ;iBAAM;AACH,gBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACnB;SACJ;AAED,QAAA,IAAI,aAAa,GAAG,YAAA;YAChB,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,gBAAA,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;aACtB;AACD,YAAA,OAAO,GAAG,CAAC;AACf,SAAC,CAAC;QAEF,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACjC,QAAA,OAAO,aAAa,EAAE,GAAG,GAAG,EAAE;YAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE;gBACtC,MAAM;aACT;SACJ;QAED,IAAI,mCAAmC,GAAG,CAAC,CAAC;QAC5C,IAAI,2BAA2B,GAAG,IAAI,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YACtC,MAAM,GAAG,GAAG,KAAc,CAAC;AAC3B,YAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE5B,IAAI,OAAO,GAAG,OAAO,CAAC;YACtB,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAE7C,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,GAAG,EAAE;AAC9B,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClC,gBAAA,IAAI,aAAa,IAAI,IAAI,EAAE;AACvB,oBAAA,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;iBAC3C;aACJ;YAED,IAAI,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAC3D,YAAA,IAAI,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAA,YAAY,CAAC,SAAS,GAAG,OAAO,GAAG,GAAG,CAAC;aAC1C;YACD,IAAI,kBAAkB,GAAG,aAAa,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACxE,YAAA,IAAI,kBAAkB,IAAI,IAAI,EAAE;AAC5B,gBAAA,kBAAkB,CAAC,SAAS,GAAG,OAAO,GAAG,GAAG,CAAC;aAChD;AACL,SAAC,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG,MAAK;AACZ,YAAA,IACI,IAAI,CAAC,eAAe,IAAI,IAAI;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI;gBACxB,IAAI,CAAC,eAAe,IAAI,IAAI;gBAC5B,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,EACxC;gBACE,IAAI,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,IAAI,OAAO,GAAG,CAAC,CAAC;gBAEhB,2BAA2B,GAAG,CAAC,CAAC;gBAChC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAC3B,2BAA2B,GAAG,CAAC,CAAC;iBACnC;gBAED,IAAI,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,2BAA2B,CAAC,CAAC;AAC5E,gBAAA,mCAAmC,GAAG,WAAW,CAAC,KAAK,CAAC;gBAExD,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,gBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE;AAC5B,oBAAA,IAAI,IAAI,CAAC,oCAAoC,EAAE;AAC3C,wBAAA,IAAI,2BAA2B,KAAK,CAAC,EAAE;4BACnC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC;yBACzF;6BAAM;AACH,4BAAA,KAAK,GAAG,GAAG,GAAG,mCAAmC,CAAC;4BAClD,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC;yBAC3D;wBACD,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;AAE5B,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,yCAAyC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,uCAAuC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjG,wBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;qBAClF;yBAAM;AACH,wBAAA,IAAI,2BAA2B,KAAK,CAAC,EAAE;;4BAEnC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,mCAAmC,CAAC,CAAC;yBACnF;6BAAM;AACH,4BAAA,KAAK,GAAG,GAAG,GAAG,mCAAmC,CAAC;4BAClD,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;yBACrD;wBACD,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC;;AAG7B,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,yCAAyC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACnG,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3F,wBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;qBAClF;iBACJ;AAAM,qBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE;AACnC,oBAAA,IAAI,IAAI,CAAC,oCAAoC,EAAE;AAC3C,wBAAA,IAAI,2BAA2B,KAAK,CAAC,EAAE;4BACnC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC;yBACzF;6BAAM;AACH,4BAAA,KAAK,GAAG,GAAG,GAAG,mCAAmC,CAAC;4BAClD,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC;yBAC3D;wBACD,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC;AAE7B,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,yCAAyC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACnG,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3F,wBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;qBAClF;yBAAM;;AAEH,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,yCAAyC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,wBAAA,IAAI,2BAA2B,KAAK,CAAC,EAAE;;4BAEnC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,mCAAmC,CAAC,CAAC;yBACnF;6BAAM;AACH,4BAAA,KAAK,GAAG,GAAG,GAAG,mCAAmC,CAAC;4BAClD,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;yBACrD;wBACD,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;AAE5B,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,uCAAuC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjG,wBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;qBAClF;iBACJ;aACJ;AACL,SAAC,CAAC;;;;;AAMF,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;;KAEtC;IAEM,WAAW,CAAC,IAAY,EAAE,cAAgD,EAAA;QAC7E,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEtC,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACpD,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;SACxC;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,oBAAoB,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC;QACxF,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;KAClC;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC1D,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5C,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;iBACvD,EAAE,GAAG,CAAC,CAAC;aACX,EAAE,IAAI,CAAC,CAAC;SACZ;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;;QAEhG,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACjG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;KAC3C;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,SAAS,CAAC;KAC9E;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,CAAC;KACzE;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,UAAU,CAAC,eAAe;AAC3C,QAAA,UAAU,EAAE,UAAU,OAAoB,EAAE,SAA+B,EAAA;YACvE,UAAU,CAAC,WAAW,CAAgC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;SACvI;AAED;;AAEG;QACH,MAAM,EAAE,UAAU,OAAoB,EAAA;AAClC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,UAAU,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YACrF,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,aAAa,CAAC,CAAC;gBACpF,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBACxC;aACJ;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;QAED,eAAe,EAAE,UAAU,OAAoB,EAAA;YAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,OAAO,CAAC,CAAC;YAC9E,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;aACnC;AACD,YAAA,OAAO,IAAI,CAAC;SACf;AACD,QAAA,WAAW,EAAE,UAAU,EAAU,EAAE,IAAY,EAAA;;YAE3C,IAAI,eAAe,GAAG,EAAE,CAAC;AACzB,YAAA,IAAI,cAA4D,CAAC;AACjE,YAAA,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBACvB,cAAc,GAAG,cAAc,CAAC;gBAChC,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;aAC/C;AAAM,iBAAA,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAC/B,cAAc,GAAG,eAAe,CAAC;gBACjC,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;aAChD;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,CAAgC,eAAe,CAAC,CAAC;AAC1F,YAAA,IAAI,MAAM,IAAI,cAAc,EAAE;AAC1B,gBAAA,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;aAC5C;SACJ;KACJ,CAAC;;;;ACvmBA,MAAO,gBAAiB,SAAQ,UAAmC,CAAA;IACrE,OAAO,QAAQ,GAA4B;AACvC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,MAAM,EAAE,EAAE;KACb,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,+BAA+B,CAAC;AAExD,IAAA,KAAK,CAAqB;AAC1B,IAAA,QAAQ,CAAqB;AAC7B,IAAA,aAAa,CAAgB;AAC7B,IAAA,eAAe,CAAqB;AACpC,IAAA,MAAM,CAAqB;IAEnC,WAAY,CAAA,OAAoB,EAAE,OAAyC,EAAA;AACvE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAEzF,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;aACpD;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAEjC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;SAC1E;aAAM;YACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACpC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAE1C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAChD;IAEM,eAAe,CAAC,SAA8B,EAAA,GAAU;IAEvD,qBAAqB,GAAA;AACzB,QAAA,IAAI;AACA,YAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;gBAC9B,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;AAC9C,gBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;AACzE,gBAAA,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AAEzD,gBAAA,IAAI,CAAC,uBAAuB,CACxB,sBAAsB,EACtB;oBACI,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,EAAE,EAAE,IAAI,CAAC,UAAU;oBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,oBAAA,EAAE,EAAE,SAAS;oBACb,EAAE,EAAE,IAAI,CAAC,eAAe;AACxB,oBAAA,GAAG,EAAE,WAAW;AAChB,oBAAA,CAAC,EAAE,QAAQ;iBACd,EACD;oBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,YAAY,EAAE,SAAS;oBACvB,cAAc,EAAE,IAAI,CAAC,eAAe;AACpC,oBAAA,mBAAmB,EAAE,WAAW;AAChC,oBAAA,WAAW,EAAE,QAAQ;AACxB,iBAAA,CACJ,CAAC;aACL;SACJ;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;AAEO,IAAA,cAAc,CAAC,KAAa,EAAE,UAAA,GAAsB,KAAK,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAClD;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAE7B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAE1D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;QAGnC,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACb,UAAU,GAAG,CAAC,CAAC;SAClB;AAAM,aAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACpB,UAAU,GAAG,CAAC,CAAC;SAClB;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAEtD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;AAEM,IAAA,aAAa,CAAC,OAAoB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC;SACf;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC1D,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5C,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;iBACvD,EAAE,GAAG,CAAC,CAAC;aACX,EAAE,IAAI,CAAC,CAAC;SACZ;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;;QAEjG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAElG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;KAC3C;IAEM,MAAM,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,SAAS,CAAC;KACzG;IAEM,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,CAAC;KACpG;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,gBAAgB,CAAC,eAAe;;;;;AAKjD,QAAA,UAAU,EAAE,UAAU,OAAoB,EAAE,MAA0B,EAAE,SAA+B,EAAA;YACnG,IAAI,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE;;gBAEjD,MAAM,GAAG,SAAS,CAAC;gBACnB,SAAS,GAAG,SAAS,CAAC;aACzB;AACD,YAAA,gBAAgB,CAAC,WAAW,CACxB,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,EAC3E,CAAC,OAAO,CAAC,EACT,SAAS,CACZ,CAAC;SACL;AAED;;;;AAIG;QACH,MAAM,EAAE,UAAU,OAAoB,EAAA;AAClC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,gBAAgB,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YAC3F,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAA4C,aAAa,CAAC,CAAC;gBACtG,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBACxC;aACJ;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;KACJ,CAAC;;;;ACpLA,MAAO,WAAY,SAAQ,UAA8B,CAAA;IAC3D,OAAO,QAAQ,GAAuB;AAClC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,yBAAyB,CAAC;AAElD,IAAA,cAAc,CAAqB;AACjC,IAAA,KAAK,CAAqB;AAC1B,IAAA,QAAQ,CAAqB;AAC/B,IAAA,QAAQ,CAAU;AAClB,IAAA,UAAU,CAAS;AACnB,IAAA,aAAa,CAAU;AACvB,IAAA,UAAU,CAAU;IAE5B,WAAY,CAAA,OAAoB,EAAE,OAAoC,EAAA;QAClE,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACvD,QAAA,MAAM,eAAe,GAAG,CAAC,OAAoB,KAAK,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1G,MAAM,WAAW,GAAG,CAAC,OAAoB,KACrC,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAc,kBAAkB,CAAC,EAAE,aAAa,CAAC,GAAG,OAAO,CAAC;QAE9G,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAEzF,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;;KAGnC;IAEM,eAAe,CAAC,SAA8B,EAAA,GAAI;IAEjD,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAA;AACpD,QAAA,IAAI;YACA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAc,eAAe,CAAC,CAAC;YAChE,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;aAChC;iBAAM;;AAEH,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;aAC1B;SACJ;QAAC,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpB;KACJ;AAEO,IAAA,oBAAoB,CAAC,IAAY,EAAA;AACrC,QAAA,IAAI;YACA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAc,eAAe,CAAC,CAAC;YAChE,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC/B;iBAAM;;AAEH,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACzB;SACJ;QAAC,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,YAAA,OAAO,SAAS,CAAC;SACpB;KACJ;IAEO,IAAI,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,EAAE,CAGpE;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE;AAC3C,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;gBACtE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;YAED,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;AACxD,YAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,gBAAA,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACtC,IACI,YAAY,IAAI,CAAC;oBACjB,YAAY,GAAG,IAAI,CAAC,UAAU;AAC9B,oBAAA,YAAY,KAAK,IAAI,CAAC,UAAU,6DAClC;oBACE,IAAI,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,KAAK,SAAS,EAAE;;AAErE,wBAAA,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;AAE3D,wBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;AACpC,4BAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AACzC,4BAAA,OAAO,KAAK,CAAC;yBAChB;qBACJ;iBACJ;aACJ;;AAGD,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/B,YAAA,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;AAC9D,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACnC,oBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAC5B,oBAAA,OAAO,KAAK,CAAC;iBAChB;aACJ;;;;;YAOD,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEvD,YAAA,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;;;YAI3D,IAAI,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE;AAC9D,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7C;YAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAE1C,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,aAAa,CAAC,KAAa,EAAE,UAAkB,EAAA;;;;AAKnD,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAE5B,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,EAAE;AACtI,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;SAC1D;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;QAErH,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAElG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;KACxC;AAEM,IAAA,YAAY,CAAC,MAAmB,EAAA;;;;QAKnC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,UAAU,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAE7F,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAExC,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAK;AACrB,gBAAA,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;;AAEvF,oBAAA,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;AAC3D,oBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;iBAC1C;aACJ,EAAE,GAAG,CAAC,CAAC;SACX;AAED,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;KAC3F;IAEM,gBAAgB,GAAA;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;KAC/G;IAEO,wBAAwB,GAAA;QAC5B,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;KACrE;IAEO,uBAAuB,GAAA;QAC3B,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;KACpE;IAEO,UAAU,GAAA;QACd,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACxB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACrB;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,mBAAmB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/B,QAAA,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;KACzC;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,QAAA,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;AAChD,YAAA,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxC,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAC5B;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,iCAAiC,GAAA;AACrC,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/B;AAEO,IAAA,gBAAgB,CAAC,KAAuG,EAAA;;AAE5H,QAAA,IAAI,gBAAgB,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;AACrD,QAAwB,KAAK,CAAC,SAAS,KAAK,WAAW;AAEvD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,gBAAgB,EAAE;gBAClB,OAAO;aACV;iBAAM;AACH,gBAAA,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;;oBAExB,KAAK,CAAC,KAAK,EAAE,CAAC;iBACjB;qBAAM;;AAEH,oBAAA,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oBACpC,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;AACpG,wBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;qBACtC;oBACD,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;;AAExD,wBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;qBACjC;iBACJ;gBACD,OAAO;aACV;SACJ;aAAM;;;AAGH,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,wBAAwB,EAAE,EAAE;gBAC1E,IAAI,gBAAgB,EAAE;AAClB,oBAAA,IAAI,cAAc,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;AAC1C,oBAAA,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;wBACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxC,wBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;qBAC9C;yBAAM;AACH,wBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACnC,4BAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;yBAC/B;qBACJ;iBACJ;qBAAM;AACH,oBAAA,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;;wBAExB,KAAK,CAAC,KAAK,EAAE,CAAC;qBACjB;yBAAM;;AAEH,wBAAA,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;wBACpC,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;AACpG,4BAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;yBACtC;wBACD,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;;AAExD,4BAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;yBACjC;qBACJ;iBACJ;aACJ;iBAAM;;gBAEH,IAAI,gBAAgB,EAAE;;;;;;;;AASlB,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACnC,wBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;qBAC/B;;iBAEJ;qBAAM;;AAEH,oBAAA,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oBACpC,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;AACpG,wBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;qBACtC;oBACD,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;;AAExD,wBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;qBACjC;iBACJ;aACJ;SACJ;KACJ;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,WAAW,CAAC,eAAe;AAC5C,QAAA,UAAU,EAAE,UAAU,OAAoB,EAAE,SAA+B,EAAA;AACvE,YAAA,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAA;AACxC,gBAAA,WAAW,CAAC,WAAW,CAAkC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CACxI,SAAS,IAAG;oBACR,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAkC,OAAO,CAAC,CAAC;oBACjF,IAAI,MAAM,EAAE;AACR,wBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;qBAC1B;yBAAM;wBACH,OAAO,CAAC,IAAI,CAAC,CAAC;qBACjB;AACL,iBAAC,CACJ,CAAC;AACN,aAAC,CAAC,CAAC;SACN;QAED,MAAM,EAAE,UAAU,OAAoB,EAAA;AAClC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,WAAW,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YACtF,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAkC,aAAa,CAAC,CAAC;gBACvF,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;iBACvC;aACJ;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;QAED,eAAe,EAAE,UAAU,OAAoB,EAAA;YAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAkC,OAAO,CAAC,CAAC;YACjF,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC;aACpC;AACD,YAAA,OAAO,IAAI,CAAC;SACf;AAED,QAAA,gBAAgB,EAAE,UACd,OAAoB,EACpB,KAAuG,EAAA;YAEvG,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAkC,OAAO,CAAC,CAAC;YACjF,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;aAClC;SACJ;KACJ,CAAC;;;;ACpWA,MAAO,UAAW,SAAQ,UAA6B,CAAA;IACzD,OAAO,QAAQ,GAAsB;AACjC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,wBAAwB,CAAC;AAEjD,IAAA,QAAQ,CAAqB;AAC7B,IAAA,OAAO,CAAqB;AAC5B,IAAA,aAAa,CAAS;AACtB,IAAA,cAAc,CAAqB;IAE3C,WAAY,CAAA,OAAoB,EAAE,OAAmC,EAAA;AACjE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,oBAAoB,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAEzG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAChD;AAEM,IAAA,eAAe,CAAC,SAA8B,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAE7D,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,EAAE;AAChE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;iBAAM;gBACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AAC1C,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;SACJ;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;KAC7C;AAEO,IAAA,aAAa,CAAC,KAAa,EAAA;;;AAG/B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;;;;;;SAOjD;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAE5B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAEzD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,EAAE;AAC9E,gBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,sBAAsB,CAAA,EAAA,CAAI,CAAC;aACtF;AACL,SAAC,CAAC,CAAC;;;;;;;;AAUH,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;IAEO,qBAAqB,GAAA;AACzB,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,MAAM,EAAA;AAClC,YAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,EAAE;gBACvC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;aACzD;AACL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,YAAY,CAAC,MAAmB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC;SACf;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzD,QAAA,IAAI,mBAAmB,KAAK,CAAC,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;AAExC,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAE9E,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAE5H,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACzB,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACpC,oBAAA,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACnC,wBAAA,gBAAgB,EAAE,CAAC;qBACtB;iBACJ;aACJ;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AAC1C,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;aACxE;AAED,YAAA,IAAI,gBAAgB,KAAK,IAAI,CAAC,aAAa,EAAE;AACzC,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;aAC1E;;YAGD,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAEjG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAExC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC1D,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,gBAAA,UAAU,CAAC,YAAA;oBACP,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5C,oBAAA,UAAU,CAAC,YAAA;wBACP,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;qBACvD,EAAE,GAAG,CAAC,CAAC;iBACX,EAAE,IAAI,CAAC,CAAC;aACZ;AAED,YAAA,IAAI;AACA,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,GAAG,EAAE,CAAC;gBACxE,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;AACnC,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;oBAC5F,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,WAAW,IAAI,IAAI,EAAE;AACxD,wBAAA,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC;qBACxC;iBACJ;AAED,gBAAA,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AAEzD,gBAAA,UAAU,CAAC,uBAAuB,CAC9B,eAAe,EACf;oBACI,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,EAAE,EAAE,IAAI,CAAC,UAAU;oBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,mBAAmB;AACvB,oBAAA,GAAG,EAAE,UAAU;AACf,oBAAA,CAAC,EAAE,QAAQ;iBACd,EACD;oBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,YAAY,EAAE,YAAY;AAC1B,oBAAA,aAAa,EAAE,mBAAmB;AAClC,oBAAA,mBAAmB,EAAE,UAAU;AAC/B,oBAAA,WAAW,EAAE,QAAQ;AACxB,iBAAA,CACJ,CAAC;aACL;YAAC,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACxB;SACJ;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,MAAM,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC;KACrD;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,CAAC;KACzE;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,UAAU,CAAC,eAAe;AAC3C,QAAA,UAAU,EAAE,UAAU,OAAoB,EAAE,SAA+B,EAAA;YACvE,UAAU,CAAC,WAAW,CAAgC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;SACvI;AAED;;AAEG;QACH,MAAM,EAAE,UAAU,OAAoB,EAAA;AAClC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,UAAU,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YACrF,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,aAAa,CAAC,CAAC;gBACpF,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;iBACvC;aACJ;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;QAED,eAAe,EAAE,UAAU,OAAoB,EAAA;YAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,OAAO,CAAC,CAAC;YAC9E,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;aACnC;AACD,YAAA,OAAO,IAAI,CAAC;SACf;KACJ,CAAC;;;;AC/NA,MAAO,iBAAkB,SAAQ,UAAoC,CAAA;IACvE,OAAO,QAAQ,GAAG;AACd,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,gCAAgC,CAAC;AAEzD,IAAA,QAAQ,CAAqB;AAC7B,IAAA,OAAO,CAAqB;AAC5B,IAAA,aAAa,CAAS;AACtB,IAAA,cAAc,CAAqB;AAE3C;;;;AAIG;IACH,WAAY,CAAA,OAAoB,EAAE,OAA0C,EAAA;AACxE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,oBAAoB,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAEzG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAChD;AAEM,IAAA,eAAe,CAAC,SAA8B,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAE7D,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,EAAE;AACjE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;;gBAEtE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;iBAAM;gBACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE;AAC3C,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;gBACtE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;SACJ;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;KAC7C;AAEO,IAAA,aAAa,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SACjD;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAE5B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAE1D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,EAAE;AAC9E,gBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;aACtF;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;IAEO,qBAAqB,GAAA;AACzB,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,MAAM,EAAA;AAClC,YAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,EAAE;gBACvC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;aACzD;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,YAAY,CAAC,KAAa,EAAA;AAC9B,QAAA,MAAM,WAAW,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QAE/F,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;SACnC;QAED,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;gBACvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACrC;YACD,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC;;AAGD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACzB,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACpC,oBAAA,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACpC,wBAAA,gBAAgB,EAAE,CAAC;qBACtB;iBACJ;aACJ;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE;AAC3C,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;aACzE;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;AAC7C,gBAAA,IAAI,gBAAgB,KAAK,IAAI,CAAC,aAAa,EAAE;AACzC,oBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;iBAC3E;aACJ;;YAGD,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAElG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC3C;KACJ;AAEO,IAAA,YAAY,CAAC,MAAmB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC;SACf;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzD,QAAA,IAAI,mBAAmB,KAAK,CAAC,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAEvC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC1D,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC5C,UAAU,CAAC,MAAK;wBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;qBACvD,EAAE,GAAG,CAAC,CAAC;iBACX,EAAE,IAAI,CAAC,CAAC;aACZ;AAED,YAAA,IAAI;AACA,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,GAAG,EAAE,CAAC;gBACxE,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;AACnC,oBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;AAC1F,oBAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACrB,wBAAA,UAAU,GAAG,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC;qBAC9C;iBACJ;AACD,gBAAA,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AAEzD,gBAAA,UAAU,CAAC,uBAAuB,CAC9B,uBAAuB,EACvB;oBACI,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,EAAE,EAAE,IAAI,CAAC,UAAU;oBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,mBAAmB;AACvB,oBAAA,GAAG,EAAE,UAAU;AACf,oBAAA,CAAC,EAAE,QAAQ;iBACd,EACD;oBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,YAAY,EAAE,YAAY;AAC1B,oBAAA,aAAa,EAAE,mBAAmB;AAClC,oBAAA,mBAAmB,EAAE,UAAU;AAC/B,oBAAA,WAAW,EAAE,QAAQ;AACxB,iBAAA,CACJ,CAAC;aACL;YAAC,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACxB;SACJ;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,MAAM,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,SAAS,CAAC;KACtD;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,CAAC;KAC1E;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,iBAAiB,CAAC,eAAe;AAElD,QAAA,UAAU,EAAE,UAAU,OAAoB,EAAE,SAA+B,EAAA;YACvE,iBAAiB,CAAC,WAAW,CACzB,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7D,CAAC,OAAO,CAAC,EACT,SAAS,CACZ,CAAC;SACL;AACD;;AAEG;QACH,MAAM,EAAE,UAAU,OAAoB,EAAA;AAClC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,iBAAiB,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YAC5F,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAA8C,aAAa,CAAC,CAAC;gBACzG,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;iBACvC;aACJ;AAED,YAAA,OAAO,KAAK,CAAC;SAChB;QAED,eAAe,EAAE,UAAU,OAAoB,EAAA;YAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAA8C,OAAO,CAAC,CAAC;YACnG,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;aACnC;AACD,YAAA,OAAO,IAAI,CAAC;SACf;KACJ,CAAC;;;;AC3ON;AACA;AACA,MAAM,CAAC,KAAK;AACR,IAAA,MAAM,CAAC,KAAK;AACZ,QAAA,UAAU,KAAK,EAAA;YACX,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC;AACxD,SAAC,CAAC;AAYN,MAAM,SAAS,GAAG;AACd,IAAA,WAAW,EAAE;AACT,QAAA,UAAU,EAAE;AACR,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,cAAc,EAAE;AACZ,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,GAAG,EAAE,OAAO;AACf,aAAA;AACD,YAAA,UAAU,EAAE,GAAG;AAClB,SAAA;AACD,QAAA,QAAQ,EAAE;AACN,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,cAAc,EAAE;AACZ,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,GAAG,EAAE,QAAQ;AAChB,aAAA;AACD,YAAA,UAAU,EAAE,GAAG;AAClB,SAAA;AACJ,KAAA;CACK,CAAC;AA8CX;;;;;AAKG;AACH,SAAS,QAAQ,CAAC,OAAkD,EAAA;IAChE,OAAO,OAAO,CACV,OAAO;AACH,SAAC,OAAO,CAAC,WAAW,KAAK,CAAC;YACtB,OAAO,CAAC,YAAY,KAAK,CAAC;;AAE1B,YAAA,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAClC,CAAC;AACN,CAAC;AAED;;;;;AAKG;AACH,SAAS,oBAAoB,CAAC,OAAoB,EAAA;IAC9C,IAAI,OAAO,GAAG,EAAE,EACZ,IAAI,GAAG,OAAO,CAAC,UAAyB,CAAC;AAE7C,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE;AACnB,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,QAAA,IAAI,GAAG,IAAI,CAAC,UAAyB,CAAC;KACzC;AACD,IAAA,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;;;AAMG;AACH,SAAS,YAAY,CAAC,OAAoB,EAAE,GAAmC,EAAA;AAC3E,IAAwB,oBAAoB,CAAC,OAAO,CAAC,CAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCrB,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;AAMG;AACH,SAAS,aAAa,CAAC,GAA8B,EAAE,YAAoB,EAAA;AACvE,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACb,QAAA,OAAO,YAAY,CAAC;KACvB;AACD,IAAA,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC;AACtD,CAAC;AAED;;;;;AAKG;AACH,SAAS,OAAO,CAAC,GAAW,EAAA;AACxB,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAMK,MAAO,iBAAkB,SAAQ,UAAoC,CAAA;IACvE,OAAO,QAAQ,GAA6B;AACxC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;AAEb,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,eAAe,EAAE,yBAAyB;AAC1C,QAAA,aAAa,EAAE,uBAAuB;AACtC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,WAAW,EAAE,oBAAoB;KACpC,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,gCAAgC,CAAC;AAEzD,IAAA,KAAK,CAAqB;AAC1B,IAAA,QAAQ,CAAqB;AAE7B,IAAA,UAAU,CAAS;AACnB,IAAA,YAAY,CAAU;AACtB,IAAA,eAAe,CAAU;AACzB,IAAA,aAAa,CAAmB;AAChC,IAAA,oBAAoB,CAAqB;AACzC,IAAA,2BAA2B,CAAqB;AAChD,IAAA,oCAAoC,CAAqB;AACzD,IAAA,WAAW,CAA4B;AACvC,IAAA,GAAG,CAAS;AACZ,IAAA,GAAG,CAAS;AACZ,IAAA,KAAK,CAAS;AACd,IAAA,IAAI,CAAS;AACb,IAAA,OAAO,CAAS;AAChB,IAAA,IAAI,CAAc;AAClB,IAAA,MAAM,CAAc;AACpB,IAAA,KAAK,CAAc;AACnB,IAAA,SAAS,CAAqB;AAC9B,IAAA,SAAS,CAAiB;AAC1B,IAAA,eAAe,CAAmB;AAClC,IAAA,UAAU,CAAY;IACtB,uBAAuB,GAAY,KAAK,CAAC;AACzC,IAAA,eAAe,CAAS;AACxB,IAAA,cAAc,CAAS;AACvB,IAAA,YAAY,CAAS;AACrB,IAAA,OAAO,CAAS;AAChB,IAAA,QAAQ,CAAS;AACjB,IAAA,aAAa,CAAS;AAE9B;;;;AAIG;IACH,WAAY,CAAA,OAAoB,EAAE,OAA0C,EAAA;AACxE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAExB,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACjG;QAAC,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpB;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAmB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAErI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;AACtF,QAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,EAAE;YACnC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AAC5F,YAAA,IAAI,IAAI,CAAC,2BAA2B,IAAI,IAAI,EAAE;gBAC1C,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;aACrH;SACJ;QAED,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA,CAAE,CAAC,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAE,CAAA,CAAC,CAAC;AAC3I,QAAA,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAA,CAAE,CAAC,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,CAAA,CAAC,CAAC;AACjJ,QAAA,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAc,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA,CAAE,CAAC,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAE,CAAA,CAAC,CAAC;QAC9I,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;;AAGxB,QAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;;;;AAKhC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;AACnE,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;AACnE,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACpG,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC;;QAGrE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;;;;;;;AAU7C,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACpE;AAEM,IAAA,eAAe,CAAC,SAA8B,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAE7D,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,SAAS,EAAE;YAChE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;SACJ;aAAM;YACH,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;AAEO,IAAA,mBAAmB,CAAC,GAAW,EAAA;AACnC,QAAA,IAAI;YACA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;AAEhD,YAAA,IAAI,CAAC,uBAAuB,CACxB,uBAAuB,EACvB;gBACI,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,EAAE,EAAE,IAAI,CAAC,UAAU;gBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,GAAG;aACV,EACD;gBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,aAAa,EAAE,GAAG;AACrB,aAAA,CACJ,CAAC;SACL;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;IAEM,KAAK,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACf,YAAA,OAAO,IAAI,CAAC;SACf;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC1D,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5C,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;iBACvD,EAAE,GAAG,CAAC,CAAC;aACX,EAAE,IAAI,CAAC,CAAC;SACZ;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;;QAEjG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;;AAGlG,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,EAAE;gBACvC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;gBAEtD,UAAU,CAAC,MAAK;;oBAEZ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;iBACnC,EAAE,GAAG,CAAC,CAAC;aACX;iBAAM;;gBAEH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;aACnC;AACL,SAAC,CAAC,CAAC;;QAGH,IAAI,CAAC,aAAa,EAAE,CAAC;;QAGrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;KAC9E;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;KACnE;IAEM,0BAA0B,GAAA;QAC7B,OAAO,IAAI,CAAC,uBAAuB,CAAC;KACvC;IAEO,oBAAoB,CAAC,cAAuB,KAAK,EAAA;AACrD,QAAA,IAAI,gBAAgB,GAAwC;AACxD,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,UAAU,EAAE,CAAC;SAChB,CAAC;QACF,IAAI,kBAAkB,GAAuB,SAAS,CAAC;AACvD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAsB,IAAI,CAAC,OAAO,EAAA,aAAA,2BAAsB,CAAC;AAC5G,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACnI,YAAA,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9C,YAAA,kBAAkB,GAAG,UAAU,CAAC,EAAE,CAAC;SACtC;AAED,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;AAEjF,QAAA,IAAI,kBAAkB,KAAK,SAAS,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,GAAG,kBAAkB,EAAE;AAC/G,YAAA,gBAAgB,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AACpF,YAAA,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;SACpC;QAED,IAAI,YAAY,GAAkB,IAAI,CAAC;AACvC,QAAA,IACI,gBAAgB,CAAC,YAAY,CAAC,KAAK,SAAS;AAC5C,YAAA,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACxC,YAAA,gBAAgB,CAAC,aAAa,CAAC,KAAK,SAAS;AAC7C,YAAA,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,EAC3C;YACE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;SAC3G;QAED,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;AAC5D,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEzB,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,GAAI,OAAiB,GAAI,MAAgB,CAAC;AAEnH,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YAEpF,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC;;AAErE,YAAA,IAAI,WAAW,IAAI,IAAI,CAAC,oCAAoC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;AAC1F,gBAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBAClE,IAAI,CAAC,2BAA2B,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC3D,UAAU,CAAC,MAAK;wBACZ,IAAI,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE;4BAChF,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;yBAChE;qBACJ,EAAE,IAAI,CAAC,CAAC;iBACZ;AAED,gBAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;oBAChC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBACtD,IAAI,YAAY,GAAG,IAAI,CAAC,oCAAoC,EAAE,qBAAqB,EAAE,CAAC;oBACtF,IAAI,MAAM,GAAG,CAAC,CAAC;;oBAIf,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,KAAK,CAAC,EAAE;wBAC1C,IAAI,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE;;4BAEvC,MAAM,GAAG,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;yBAClD;6BAAM,IAAI,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE;;4BAE5C,MAAM,GAAG,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;yBAChD;qBACJ;AAED,oBAAA,IAAI,MAAM,KAAK,CAAC,EAAE;AACd,wBAAA,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;qBAC7G;AACL,iBAAC,CAAC,CAAC;aACN;SACJ;KACJ;IAEO,IAAI,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAK;AACrB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC5B,EAAE,EAAE,CAAC,CAAC;SACV;aAAM;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5B;KACJ;IAEO,MAAM,CAAC,gBAAyB,EAAE,YAAqB,EAAA;AAC3D,QAAA,gBAAgB,GAAG,gBAAgB,IAAI,KAAK,CAAC;QAE7C,IAAI,gBAAgB,EAAE;AAClB,YAAA,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvG,YAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;SACzE;QAED,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAoC,CAAC;QACzH,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAoC,CAAC;QACvH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,gBAAgB,EAAE;;YAElB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;SACjG;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KACjD;AAEO,IAAA,UAAU,CAAC,CAA0B,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACf,OAAO;SACV;AAED,QAAA,IAAI,WAAW,GAAuB,CAAC,CAAC,MAAqB,CAAC;QAC9D,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAChD,YAAA,WAAW,GAAG,WAAW,CAAC,OAAO,CAAc,cAAc,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,WAAW,EAAE;YACd,OAAO;SACV;QACD,IAAI,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;YAC5B,OAAO;SACV;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;AAEnB,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5B;QAED,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;;;AAIrD,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;;AAGnD,QAAA,IAAI,CAAC,GAAG,GAAI,CAAC,CAAC,MAAsB,CAAC,SAAS,GAAG,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE;YAClH,OAAO;SACV;AAED,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EACjC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAC7D,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,EAC5D,MAAM,GAAG,IAAI,CAAC,WAAW,KAAK,UAAU,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AAE7G,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAEzB,QAAA,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;AAC5D,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,SAAS,CAAC;SAClC;KACJ;AAEO,IAAA,UAAU,CAAC,CAA0B,EAAA;QACzC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACtC,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,KAAK,UAAU,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AAE7G,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KAC5B;AAEO,IAAA,SAAS,CAAC,CAA0B,EAAA;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AACzC,SAAC,CAAC,CAAC;;QAGH,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzD,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;aAAM;AACH,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;AAChC,gBAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,EAAE;AAC9E,oBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBACtF;AACL,aAAC,CAAC,CAAC;SACN;;;KAIJ;AAEO,IAAA,GAAG,GAAG,UAAU,GAAW,EAAE,GAAW,EAAE,GAAW,EAAA;AACzD,QAAA,IAAI,GAAG,GAAG,GAAG,EAAE;AACX,YAAA,OAAO,GAAG,CAAC;SACd;AACD,QAAA,IAAI,GAAG,GAAG,GAAG,EAAE;AACX,YAAA,OAAO,GAAG,CAAC;SACd;AACD,QAAA,OAAO,GAAG,CAAC;AACf,KAAC,CAAC;IAEM,WAAW,CAAC,GAAW,EAAE,YAAsB,EAAA;QACnD,IAAI,KAAK,EAAE,MAAM,CAAC;;AAOlB,QAAA,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACvE,QAAA,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;;QAG1C,IAAI,KAAK,GAAG,MAAM,CAAC;;AAEnB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;AACrE,YAAA,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SACrC;;QAGD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;;QAEjG,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;;AAGpD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,8BAA8B,GAAG,KAAK,GAAG,oDAAoD,GAAG,UAAU,GAAG,IAAI,CAAC;;AAGhJ,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;AAGrB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEnD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;AACnC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;AAEhC,gBAAA,IAAI;AACA,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;iBAC3B;gBAAC,OAAO,CAAC,EAAE;AACR,oBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACpB;aACJ;SACJ;KACJ;;AAGO,IAAA,mBAAmB,CAAC,IAAwB,EAAA;QAChD,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,QAAA,OAAO,IAAI,KAAK,IAAI,EAAE;AAClB,YAAA,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC;AACrB,YAAA,IAAI,GAAG,IAAI,CAAC,YAA2B,CAAC;SAC3C;AACD,QAAA,OAAO,CAAC,CAAC;KACZ;AAEO,IAAA,mBAAmB,CAAC,CAA0B,EAAA;;QAElD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAc,CAAC;AAC3D,QAAA,MAAM,kBAAkB,GAAG,CAAS,MAAA,EAAA,YAAY,EAA2B,CAAC;AAC5E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,IAAI,OAAQ,CAAgB,CAAC,kBAAkB,CAAC,KAAK,WAAW,EAAE;AAC9D,YAAA,cAAc,GAAI,CAAgB,CAAC,kBAAkB,CAAC,CAAC;SAC1D;aAAM,IAAK,CAAgB,CAAC,OAAO,IAAK,CAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAQ,CAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,WAAW,EAAE;YAC7I,cAAc,GAAI,CAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;;SAErE;AAAM,aAAA,IAAI,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,WAAW,EAAE;;YAEjF,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpD;QAED,OAAO,cAAc,GAAG,QAAQ,CAAC;KACpC;AAEO,IAAA,sBAAsB,CAAC,KAAa,EAAA;AACxC,QAAA,IAAI,UAAU,CAAC;AACf,QAAA,UAAU,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;;AAGxD,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;AACrE,YAAA,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC;SAC/B;AAED,QAAA,OAAO,UAAU,CAAC;KACrB;AAEO,IAAA,oBAAoB,CAAC,KAAa,EAAA;QACtC,IAAI,UAAU,EAAE,GAAG,CAAC;AACpB,QAAA,UAAU,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;;AAGxD,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;AACrE,YAAA,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC;SAC/B;QAED,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACrE,QAAA,OAAO,GAAG,CAAC;KACd;AAEO,IAAA,oBAAoB,CAAC,GAAW,EAAA;QACpC,IAAI,UAAU,EAAE,KAAK,CAAC;QACtB,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;;AAG5C,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;AACrE,YAAA,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC;SAC/B;AAED,QAAA,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QAC5F,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC9C;AAEO,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE,EAAE;YACzD,OAAO;SACV;;QAGD,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;;KAG5C;IAEO,OAAO,GAAA;AACX,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;;;;;;KASvE;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,iBAAiB,CAAC,eAAe;AAClD,QAAA,UAAU,EAAE,UAAU,OAAoB,EAAE,SAA+B,EAAA;YACvE,iBAAiB,CAAC,WAAW,CACzB,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7D,CAAC,OAAO,CAAC,EACT,SAAS,CACZ,CAAC;SACL;QACD,KAAK,EAAE,UAAU,OAAoB,EAAA;AACjC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,iBAAiB,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YAC5F,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAA8C,aAAa,CAAC,CAAC;gBACzG,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;iBACzB;aACJ;AACD,YAAA,OAAO,IAAI,CAAC;SACf;QACD,uBAAuB,EAAE,UAAU,OAAoB,EAAA;AACnD,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,iBAAiB,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YAC5F,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAA8C,aAAa,CAAC,CAAC;gBACzG,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,0BAA0B,EAAE,CAAC;iBAC9C;aACJ;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;KACJ,CAAC;;;;ACrxBA,MAAO,UAAW,SAAQ,UAA6B,CAAA;IACzD,OAAO,QAAQ,GAAsB;AACjC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,wBAAwB,CAAC;AAEjD,IAAA,WAAW,CAAU;AACrB,IAAA,KAAK,CAAqB;IAC1B,uBAAuB,GAAY,KAAK,CAAC;AACzC,IAAA,KAAK,CAAqB;AAC1B,IAAA,cAAc,CAAU;AACxB,IAAA,iBAAiB,CAAS;AAC1B,IAAA,iBAAiB,CAAS;AAC1B,IAAA,mBAAmB,CAAU;AAC7B,IAAA,eAAe,CAAS;AACxB,IAAA,eAAe,CAAS;AACxB,IAAA,YAAY,CAAqB;AACjC,IAAA,oBAAoB,CAAS;IAErC,WAAY,CAAA,OAAoB,EAAE,OAAmC,EAAA;AACjE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAE9D,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAc,aAAa,CAAC,CAAC,CAAC;AAEnF,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;AACrG,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;AACrG,QAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;AACjG,QAAA,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAChD;AAEM,IAAA,eAAe,CAAC,SAA8B,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAE7D,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAE9B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,EAAE;AAChE,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;aAC5E;iBAAM;gBACH,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC7B;SACJ;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;AAE9B,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KACxC;AAEO,IAAA,sBAAsB,CAAC,UAAkB,EAAA;AAC7C,QAAA,IAAI;YACA,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;AAE9C,YAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;AAC3B,gBAAA,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAE3C,gBAAA,IAAI,CAAC,uBAAuB,CACxB,eAAe,EACf;oBACI,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,EAAE,EAAE,IAAI,CAAC,UAAU;oBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,EAAE,EAAE,cAAc;AAClB,oBAAA,EAAE,EAAE,UAAU;oBACd,CAAC,EAAE,IAAI,CAAC,oBAAoB;iBAC/B,EACD;oBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,YAAY,EAAE,SAAS;AACvB,oBAAA,aAAa,EAAE,cAAc;AAC7B,oBAAA,YAAY,EAAE,UAAU;oBACxB,WAAW,EAAE,IAAI,CAAC,oBAAoB;AACzC,iBAAA,CACJ,CAAC;aACL;SACJ;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;IAEO,WAAW,CAAC,KAAa,EAAE,QAAiB,EAAA;QAChD,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,CAAC;AACN,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3B;QAED,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAI;YAC3B,MAAM,GAAG,GAAG,GAAa,CAAC;AAC1B,YAAA,IAAI,GAAG,IAAI,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aACjC;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SACzC;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAE1B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAEzD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEnC,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,QAAQ,EAAE;YAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;IAEO,kBAAkB,GAAA;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,OAAO,EAAA;AACjC,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACzC;AAEO,IAAA,UAAU,CAAC,WAAwB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC;SACf;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC5C,QAAa,IAAI,CAAC,KAAK,CAAC,OAAO;QAC/B,IAAI,KAAK,GAAG,KAAK,CAAC;;;;AAKlB,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AAErC,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;;AAGtE,YAAA,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;AACxE,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAE3C,gBAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;wBACvB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;qBACtC;oBACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAE/C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;oBAEpE,IAAI,IAAI,CAAC,MAAM,CAAC,0BAA0B,IAAI,UAAU,EAAE;wBACtD,MAAM,IAAI,GAAqB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAEtD,wBAAA,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAE3D,wBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,4BAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;yBACzB;AACD,wBAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAEpC,wBAAA,IAAI;AACA,4BAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1G,4BAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;4BAClI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;AAC1E,iCAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,iCAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,iCAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;4BAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW;AAChF,iCAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,iCAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,iCAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;yBAChC;wBAAC,OAAO,CAAC,EAAE;AACR,4BAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;yBACpB;wBAED,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;qBACjD;iBACJ;qBAAM;oBACH,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;iBACnC;AAED,gBAAA,OAAO,KAAK,CAAC;aAChB;AAAM,iBAAA,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACnF,IAAI,MAAM,GAAG,IAAI,CAAC;AAElB,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;oBACvB,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;iBACpD;AAAM,qBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;oBAC1B,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;iBAClD;AAED,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;AAEhC,gBAAA,IAAI,IAAI,CAAC,cAAc,IAAI,MAAM,EAAE;AAC/B,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAC/B;aACJ;iBAAM;AACH,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;aACnC;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,WAAW,CAAC,IAAY,EAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEtC,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACpD,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;SACxC;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC;QACnE,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;KACrC;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC1D,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5C,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;iBACvD,EAAE,GAAG,CAAC,CAAC;aACX,EAAE,IAAI,CAAC,CAAC;SACZ;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;;QAEhG,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAEjG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;KAC3C;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,SAAS,CAAC;KAC9E;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,CAAC;KACzE;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,UAAU,CAAC,eAAe;AAC3C,QAAA,UAAU,EAAE,UAAU,QAAiC,EAAE,SAA+B,EAAA;YACpF,UAAU,CAAC,WAAW,CAAgC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;SAClJ;QAED,MAAM,EAAE,UAAU,OAAoB,EAAA;AAClC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,UAAU,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YACrF,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,aAAa,CAAC,CAAC;gBACpF,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;iBACrC;aACJ;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;QAED,eAAe,EAAE,UAAU,OAAoB,EAAA;YAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,OAAO,CAAC,CAAC;YAC9E,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;aACnC;AACD,YAAA,OAAO,IAAI,CAAC;SACf;AAED,QAAA,WAAW,EAAE,UAAU,EAAU,EAAE,IAAY,EAAA;YAC3C,UAAU,CAAC,eAAe,CAAgC,EAAE,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;SACpF;KACJ,CAAC;;;;ACpSA,MAAO,WAAY,SAAQ,UAA8B,CAAA;IAC3D,OAAO,QAAQ,GAAuB;AAClC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,MAAM,EAAE,EAAE;KACb,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,yBAAyB,CAAC;AAElD,IAAA,MAAM,CAAqB;AAC3B,IAAA,SAAS,CAAqB;AAC9B,IAAA,WAAW,CAAqB;AAChC,IAAA,SAAS,CAAU;AACnB,IAAA,WAAW,CAAU;IAE7B,WAAY,CAAA,OAAoB,EAAE,OAAoC,EAAA;AAClE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9F,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;aACpC;iBAAM;gBACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;aACpC;SACJ;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;KAG5B;IAEM,eAAe,CAAC,SAA8B,EAAA,GAAU;IAEvD,eAAe,CAAC,MAAe,EAAE,GAAkB,EAAA;AACvD,QAAA,IAAI;YACA,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;AAEhD,YAAA,IAAI,CAAC,uBAAuB,CACxB,SAAS,EACT;gBACI,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,EAAE,EAAE,IAAI,CAAC,UAAU;gBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,gBAAA,EAAE,EAAE,UAAU;AACd,gBAAA,EAAE,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;gBAC1B,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC;gBAClB,GAAG,EAAE,GAAG,IAAI,EAAE;aACjB,EACD;gBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,YAAY,EAAE,UAAU;AACxB,gBAAA,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;gBACpC,aAAa,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC;gBAC7B,mBAAmB,EAAE,GAAG,IAAI,EAAE;AACjC,aAAA,CACJ,CAAC;SACL;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;IAEO,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3B,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE;AACrC,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;iBAC3B;AACD,gBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;oBACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE;AACvB,wBAAA,GAAG,EAAE,IAAI,CAAC,WAAW;wBACrB,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,KAAK,EAAE,IAAI;AACd,qBAAA,CAAC,CAAC;iBACN;AAAM,qBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;AACnC,oBAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;iBAC3F;aACJ;SACJ;KACJ;AAEM,IAAA,SAAS,CAAC,SAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,SAAS,EAAE;YAC9D,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;;YAEzF,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YACjG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC3C;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEtC,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;SAC1C;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;KAClE;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,WAAW,CAAC,eAAe;;;;;AAK5C,QAAA,UAAU,EAAE,UAAU,QAAiC,EAAE,MAA0B,EAAE,SAA+B,EAAA;YAChH,IAAI,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE;;gBAEjD,MAAM,GAAG,SAAS,CAAC;gBACnB,SAAS,GAAG,SAAS,CAAC;aACzB;AACD,YAAA,WAAW,CAAC,WAAW,CACnB,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,EACtE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpB,SAAS,CACZ,CAAC;SACL;QAED,KAAK,EAAE,UAAU,OAAoB,EAAA;AACjC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,WAAW,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YACtF,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAkC,aAAa,CAAC,CAAC;gBACvF,IAAI,MAAM,EAAE;oBACR,MAAM,CAAC,KAAK,EAAE,CAAC;iBAClB;aACJ;SACJ;AACD,QAAA,QAAQ,EAAE,UAAU,EAAU,EAAE,SAAkB,EAAA;YAC9C,WAAW,CAAC,eAAe,CAAkC,EAAE,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;SAC1F;KACJ,CAAC;;;;AC7IA,MAAO,UAAW,SAAQ,UAA6B,CAAA;IACzD,OAAO,QAAQ,GAAsB;AACjC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,wBAAwB,CAAC;AAEjD,IAAA,KAAK,CAAqB;AAC1B,IAAA,QAAQ,CAAqB;AAC7B,IAAA,SAAS,CAAS;AAClB,IAAA,cAAc,CAAqB;AACnC,IAAA,gBAAgB,CAAU;AAC1B,IAAA,aAAa,CAAS;AACtB,IAAA,IAAI,CAAa;AACjB,IAAA,UAAU,CAAa;AACvB,IAAA,gBAAgB,CAAgB;AAChC,IAAA,YAAY,CAAS;AACrB,IAAA,QAAQ,CAAS;AACjB,IAAA,eAAe,CAAS;AACxB,IAAA,QAAQ,CAAqB;IAErC,WAAY,CAAA,OAAoB,EAAE,OAAmC,EAAA;AACjE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAErG,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;AAE7F,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,EAAE;AAChE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AAC1C,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;SACJ;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAE1C,QAAA,IAAI,CAAC,IAAI,GAAG,MAAK;YACb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;gBACxD,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,aAAC,CAAC,CAAC;;;AAIH,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;;;;gBAKnB,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;AAC7C,gBAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAE5B,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;AACpB,oBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;oBAClB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;iBAC5B;AAED,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;iBACnH;aACJ;AACL,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;gBAC/B,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACxD;AACL,SAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACxD,YAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;;;;gBAKnC,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC;AAC5E,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;AAErC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBACzC,IAAI,CAAC,IAAI,EAAE,CAAC;;AAGZ,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aAC3C;iBAAM;;AAEH,gBAAA,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE;AAC5B,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC;qBACtD;iBACJ;aACJ;SACJ;;KAGJ;IAEM,eAAe,CAAC,SAA8B,EAAA,GAAI;AAEjD,IAAA,oBAAoB,CAAC,WAAmB,EAAA;AAC5C,QAAA,IAAI;AACA,YAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;gBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;gBAChD,IAAI,UAAU,GAAG,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AACpC,oBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7E,oBAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACrB,wBAAA,UAAU,GAAG,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC;qBAC9C;iBACJ;AACD,gBAAA,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AAEzD,gBAAA,IAAI,CAAC,uBAAuB,CACxB,eAAe,EACf;oBACI,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,EAAE,EAAE,IAAI,CAAC,UAAU;oBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,oBAAA,EAAE,EAAE,SAAS;oBACb,EAAE,EAAE,IAAI,CAAC,cAAc;AACvB,oBAAA,GAAG,EAAE,UAAU;AACf,oBAAA,GAAG,EAAE,WAAW;AAChB,oBAAA,CAAC,EAAE,QAAQ;iBACd,EACD;oBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,YAAY,EAAE,SAAS;oBACvB,aAAa,EAAE,IAAI,CAAC,cAAc;AAClC,oBAAA,mBAAmB,EAAE,UAAU;AAC/B,oBAAA,mBAAmB,EAAE,WAAW;AAChC,oBAAA,WAAW,EAAE,QAAQ;AACxB,iBAAA,CACJ,CAAC;aACL;SACJ;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;AAEO,IAAA,aAAa,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAClD;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAE5B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAEzD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,EAAE;AAC9E,gBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;aACtF;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;AAEM,IAAA,YAAY,CAAC,MAAmB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC;SACf;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,WAAW,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;SAC5C;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;YACtD,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YACnC,OAAO;SACV;QACD,IAAI,KAAK,GAAG,CAAC,CAAC,EACV,WAAW,GAAG,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KAC5C;;IAGO,eAAe,CAAC,KAAa,EAAE,WAAmB,EAAA;AACtD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAE1B,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC;QAEpH,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACzB,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;YAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACpC,gBAAA,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACnC,oBAAA,gBAAgB,EAAE,CAAC;iBACtB;aACJ;SACJ;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AAC1C,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;SACxE;AAED,QAAA,IAAI,gBAAgB,KAAK,IAAI,CAAC,SAAS,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;SAC1E;;QAGD,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAEjG,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC1D,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5C,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;iBACvD,EAAE,GAAG,CAAC,CAAC;aACX,EAAE,IAAI,CAAC,CAAC;SACZ;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;KAC1C;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;KAC1F;IAEM,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;KAC9G;IAEM,kBAAkB,GAAA;QACrB,OAAO,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;KAC/D;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,UAAU,CAAC,eAAe;AAC3C,QAAA,UAAU,EAAE,UAAU,OAAoB,EAAE,SAA+B,EAAA;YACvE,UAAU,CAAC,WAAW,CAAgC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;SACvI;AAED;;AAEG;QACH,MAAM,EAAE,UAAU,OAAoB,EAAA;AAClC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,UAAU,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YACrF,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,aAAa,CAAC,CAAC;gBACpF,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;iBACvC;aACJ;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;QAED,eAAe,EAAE,UAAU,OAAoB,EAAA;YAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,OAAO,CAAC,CAAC;YAC9E,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;aACnC;AACD,YAAA,OAAO,IAAI,CAAC;SACf;QAED,kBAAkB,EAAE,UAAU,OAAoB,EAAA;YAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,OAAO,CAAC,CAAC;YAC9E,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,MAAM,CAAC,kBAAkB,EAAE,CAAC;aACtC;AACD,YAAA,OAAO,IAAI,CAAC;SACf;KACJ,CAAC;;;;ACvSA,MAAO,UAAW,SAAQ,UAA6B,CAAA;IACzD,OAAO,QAAQ,GAAsB;AACjC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,EAAE;KAChB,CAAC;AAEK,IAAA,OAAO,eAAe,GAAG,wBAAwB,CAAC;IAEjD,QAAQ,GAAgB,IAAK,CAAC;IAC9B,OAAO,GAAuB,IAAK,CAAC;IACpC,aAAa,GAAW,IAAK,CAAC;IAC9B,cAAc,GAAuB,SAAS,CAAC;AAE/C,IAAA,KAAK,CAAqB;AAC1B,IAAA,QAAQ,CAAqB;AAC7B,IAAA,aAAa,CAAgB;AAC7B,IAAA,eAAe,CAAqB;AACpC,IAAA,cAAc,CAAM;AACpB,IAAA,qBAAqB,CAAU;AAEvC;;;;AAIG;IACH,WAAY,CAAA,OAAoB,EAAE,OAAmC,EAAA;AACjE,QAAA,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YACtC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAClE,IAAI,WAAW,EAAE;gBACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;aAC1D;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAE1H,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAEjC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,EAAE;AAChE,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;aAC/E;SACJ;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;;KAE7C;IAEM,eAAe,CAAC,SAA8B,EAAA,GAAI;IAEjD,qBAAqB,GAAA;AACzB,QAAA,IAAI;AACA,YAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;gBAC9B,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;gBAC9C,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;AAC3G,gBAAA,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AAEzD,gBAAA,IAAI,CAAC,uBAAuB,CACxB,eAAe,EACf;oBACI,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,EAAE,EAAE,IAAI,CAAC,UAAU;oBACnB,EAAE,EAAE,IAAI,CAAC,SAAS;AAClB,oBAAA,EAAE,EAAE,SAAS;oBACb,EAAE,EAAE,IAAI,CAAC,eAAe;AACxB,oBAAA,EAAE,EAAE,WAAW;AACf,oBAAA,CAAC,EAAE,QAAQ;iBACd,EACD;oBACI,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,YAAY,EAAE,SAAS;oBACvB,aAAa,EAAE,IAAI,CAAC,eAAe;AACnC,oBAAA,YAAY,EAAE,WAAW;AACzB,oBAAA,WAAW,EAAE,QAAQ;AACxB,iBAAA,CACJ,CAAC;aACL;SACJ;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;AAEO,IAAA,cAAc,CAAC,KAAa,EAAE,MAAA,GAAkB,KAAK,EAAA;AACzD,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAClD;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAE7B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAEzD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACxC;AAED,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,MAAM,EAAE,GAAG,MAAK;AACZ,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtB,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1F;AACL,aAAC,CAAC;YACF,IAAI,MAAM,EAAE;AACR,gBAAA,EAAE,EAAE,CAAC;aACR;iBAAM;AACH,gBAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;aACtC;SACJ;aAAM;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACvC;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,EAAE;AAC9E,gBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;aACtF;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;AAEM,IAAA,aAAa,CAAC,OAAoB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC;SACf;QAED,IAAI,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAE1D,QAAA,IAAI,oBAAoB,KAAK,CAAC,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;YAE1C,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;;YAGhG,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAEjG,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC1D,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC5C,UAAU,CAAC,MAAK;wBACZ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;qBACvD,EAAE,GAAG,CAAC,CAAC;iBACX,EAAE,IAAI,CAAC,CAAC;aACZ;YAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAExC,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,eAAe,CAAC,oBAA4B,EAAE,MAAA,GAAkB,KAAK,EAAA;;;;;QAKzE,IAAI,cAAc,GAAiC,EAAE,CAAC;QACtD,IAAI,gBAAgB,GAAuB,SAAS,CAAC;AACrD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAe,IAAI,CAAC,OAAO,EAAA,MAAA,oBAAe,CAAC;AAC9F,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACnI,YAAA,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;AACtC,gBAAA,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAA4C,CAAC;aACrH;AACD,YAAA,gBAAgB,GAAG,UAAU,CAAC,EAAE,CAAC;SACpC;AAED,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;AAEvE,QAAA,IAAI,gBAAgB,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,GAAG,gBAAgB,EAAE;YAC7F,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,OAAO,EAAE,KAAK,EAAA;gBAC3C,MAAM,GAAG,GAAG,KAAe,CAAC;AAC5B,gBAAA,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;AACrE,oBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC3B;AACD,gBAAA,IAAI,oBAAoB,KAAK,GAAG,EAAE;AAC9B,oBAAA,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;iBACzB;AACL,aAAC,CAAC,CAAC;SACN;;AAGD,QAAA,IAAI,QAAQ,GAAkB,EAAE,EAC5B,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YACtC,MAAM,GAAG,GAAG,KAAe,CAAC;AAC5B,YAAA,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACnC,gBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5G,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAClD,oBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACrB;aACJ;iBAAM;AACH,gBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACrB;AACD,YAAA,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAC,CAAC,CAAC;AACH,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACtC,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACb,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AAChE,gBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;AACnB,oBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;iBACrB;;aAIJ;SACJ;QAED,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YACtC,MAAM,GAAG,GAAG,KAAe,CAAC;AAC5B,YAAA,IAAI,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE3E,YAAA,OAAO,CAAC,aAAa,EAAE,KAAK,IAAG;AAC3B,gBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;oBACvB,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;iBAC3C;AACL,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,EAAE,GAAG,YAAA;YACL,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,OAAO,EAAE,KAAK,EAAA;gBAC3C,MAAM,GAAG,GAAG,KAAe,CAAC;AAC5B,gBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;AACvB,oBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,mCAAmC,EAAE,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC/F;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC;QAEF,IAAI,MAAM,EAAE;AACR,YAAA,EAAE,EAAE,CAAC;SACR;aAAM;AACH,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;SACtC;KACJ;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,SAAS,CAAC;KAC9E;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,SAAS,CAAC;KACzE;IAEM,OAAO,GAAG,GAAG;QAChB,eAAe,EAAE,UAAU,CAAC,eAAe;;AAE3C,QAAA,wBAAwB,EAAE,UAAU,OAAoB,EAAE,SAA+B,EAAA;AACrF,YAAA,IAAI,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE;gBAC1C,OAAO;aACV;YACD,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC3D,YAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACpB,gBAAA,IAAI,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC;AACzC,gBAAA,IAAI,cAAc,GAAG,SAAS,EAAE,gBAAgB,CAAc,CAAI,CAAA,EAAA,UAAU,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;AAChG,gBAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AACxB,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC5C,wBAAA,IAAI,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;wBACtC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,aAAa,CAAC,CAAC;wBACpF,IAAI,CAAC,MAAM,EAAE;4BACT,UAAU,CAAC,WAAW,CAClB,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EACtD,CAAC,aAAa,CAAC,EACf,SAAS,CACZ,CAAC;yBACL;qBACJ;iBACJ;aACJ;AAED,YAAA,OAAO,CAAC,OAAO,CAAC,wBAAwB,GAAG,GAAG,CAAC;SAClD;AAED,QAAA,UAAU,EAAE,UAAU,OAAoB,EAAE,SAA+B,EAAA;AACvE,YAAA,UAAU,CAAC,WAAW,CAAgC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CACpI,SAAS,IAAG;gBACR,UAAU,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAChE,aAAC,CACJ,CAAC;SACL;QAED,MAAM,EAAE,UAAU,OAAoB,EAAA;AAClC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAc,CAAI,CAAA,EAAA,UAAU,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC;YACrF,IAAI,aAAa,EAAE;gBACf,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,aAAa,CAAC,CAAC;gBACpF,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBACxC;aACJ;AACD,YAAA,OAAO,KAAK,CAAC;SAChB;QAED,eAAe,EAAE,UAAU,OAAoB,EAAA;YAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAgC,OAAO,CAAC,CAAC;YAC9E,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;aACnC;AACD,YAAA,OAAO,IAAI,CAAC;SACf;KACJ,CAAC;;;;AC5SC,IAAI,YAA0B,CAAC;AAmCzB,MAAA,WAAW,GAAG,CAAC,aAA2B,KAAI;IACvD,YAAY,GAAG,aAAa,CAAC;IAE7B,OAAO;AACH,QAAA,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,UAAU,CAAC,GAAG;QAC1B,eAAe,EAAE,eAAe,CAAC,GAAG;QACpC,mBAAmB,EAAE,mBAAmB,CAAC,GAAG;QAC5C,gBAAgB,EAAE,gBAAgB,CAAC,GAAG;QACtC,UAAU,EAAE,UAAU,CAAC,GAAG;QAC1B,gBAAgB,EAAE,gBAAgB,CAAC,GAAG;QACtC,WAAW,EAAE,WAAW,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU,CAAC,GAAG;QAC1B,iBAAiB,EAAE,iBAAiB,CAAC,GAAG;QACxC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG;QACxC,UAAU,EAAE,UAAU,CAAC,GAAG;QAC1B,WAAW,EAAE,WAAW,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU,CAAC,GAAG;QAC1B,UAAU,EAAE,UAAU,CAAC,GAAG;KAC7B,CAAC;AACN;;ACnEA,SAAS,CAAC,iBAAiB,CAAS,MAAM,IAAI,cAAc,CAAC,MAAM,YAAY,CAAC,2BAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/composition/core.ts","../../../src/widgets/base/widgets_service/widgets_service.ts","../../../src/widgets/base/widgets_service/composition.ts","../../../src/composition/index.ts","../../../src/utils.ts","../../../src/animation/animation.ts","../../../src/sdk_api/adapters/es_module_sdk_api.ts","../../../src/widgets/base/base.ts","../../../src/widgets/copy/copy.ts","../../../src/widgets/data_input/data_input.ts","../../../src/widgets/date_countdown/date_countdown.ts","../../../src/widgets/multi_slide/multi_slide.ts","../../../src/widgets/poll/poll.ts","../../../src/widgets/poll_layers/poll_layers.ts","../../../src/widgets/quest/quest.ts","../../../src/widgets/quiz/quiz.ts","../../../src/widgets/quiz_grouped/quiz_grouped.ts","../../../src/widgets/range_slider/range_slider.ts","../../../src/widgets/rate/rate.ts","../../../src/widgets/share/share.ts","../../../src/widgets/test/test.ts","../../../src/widgets/vote/vote.ts","../../../src/entry_points/es_module/es_module.ts","../../../src/sdk_api/composition/es_module_sdk_api.ts"],"sourcesContent":["import { DIContainer } from \"@wessberg/di\";\n\nexport const container = new DIContainer();\n","import { SDKApi } from \"@skd_api\";\n\nexport class WidgetsService {\n constructor(\n private _env: Window,\n private _sdkApi: SDKApi\n ) {}\n\n get env(): Window {\n return this._env;\n }\n get sdkApi(): SDKApi {\n return this._sdkApi;\n }\n}\n","import { container } from \"@composition/core\";\nimport { WidgetsService } from \"./widgets_service\";\n\ncontainer.registerSingleton<WidgetsService>();\n","import { container } from \"./core\";\n\n// import '../core/composition';\nimport \"../widgets/base/widgets_service/composition\";\n\n// import '../adapters/dateTimeSource/composition';\n// import '../adapters/uuidGenerator/composition';\n// import '../effects/eventHandler/composition';\n// import '../effects/logger/composition';\n// import '../effects/timer/composition';\n\ncontainer.registerSingleton<Window>(() => window);\nexport { container };\n","import { SDKApi } from \"@skd_api\";\n\nexport const array_string = \"[object Array]\";\nexport const ops = Object.prototype.toString;\nexport const fnPrototype = Function.prototype;\nexport const bind = fnPrototype.bind;\nexport const arPrototype = Array.prototype;\nexport const obPrototype = Object.prototype;\nexport const push = arPrototype.push;\nexport const slice = arPrototype.slice;\nexport const concat = arPrototype.concat;\nexport const obKeys = Object.keys;\nexport const obHasOwnProp = obPrototype.hasOwnProperty;\nexport const toString = obPrototype.toString;\nexport const isArray =\n Array.isArray ||\n function (e) {\n return toString.call(e) === \"[object Array]\";\n };\n// Matches dashed string for camelizing\nexport const rmsPrefix = /^-ms-/;\nexport const rdashAlpha = /-([\\da-z])/gi;\nexport const fcamelCase = function (letter: string) {\n return letter.toUpperCase();\n};\n\n// private methods\nexport const isObject = function (e: any) {\n var t = typeof e;\n return t === \"function\" || (t === \"object\" && !!e);\n};\nexport const isNumber = function (t: any) {\n return toString.call(t) === \"[object Number]\";\n};\n\nexport const isNumeric = function (n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\n// isEmpty = function(e) {\n// if (e == null)\n// return !0;\n// if (isArray(e) || isString(e) || isArguments(e))\n// return e.length === 0;\n// for (var t in e)\n// if (p.has(e, t))\n// return !1;\n// return !0\n// },\nexport const has = function (e: Object, t: string) {\n return e != null && obHasOwnProp.call(e, t);\n};\nexport const keys = function (e: Object) {\n if (!isObject(e)) return [];\n if (obKeys) return obKeys(e);\n var t = [];\n for (var n in e) has(e, n) && t.push(n);\n return t;\n};\nconst d = function (e: Function, t?: Object, n?: number) {\n if (t === void 0) return e;\n switch (n == null ? 3 : n) {\n case 1:\n return function (n: any) {\n return e.call(t, n);\n };\n case 2:\n return function (n: any, r: any) {\n return e.call(t, n, r);\n };\n case 3:\n return function (n: any, r: any, i: any) {\n return e.call(t, n, r, i);\n };\n case 4:\n return function (n: any, r: any, i: any, s: any) {\n return e.call(t, n, r, i, s);\n };\n }\n return function () {\n return e.apply(t, arguments);\n };\n};\nexport const each = function <T>(e: Array<T>, t: (value: T, index: string | number, arr: Array<T>) => void, n?: Object) {\n if (e == null) return e;\n t = d(t, n) as (value: T, index: string | number, arr: Array<T>) => void;\n var r: number,\n i: number = e.length;\n if (i === +i) for (r = 0; r < i; ++r) t(e[r], r, e);\n else {\n var s: Array<string> = keys(e);\n for (r = 0, i = s.length; r < i; ++r) t((e as { [key in string]: any })[s[r]], s[r], e);\n }\n return e;\n};\nexport const forEach = each;\nexport const extend = function <T extends Record<string, any>, R extends Array<Partial<T>> = Array<Partial<T>>>(e: Partial<T>, ...args: R): T {\n var t, n;\n for (var r = 1, i = arguments.length; r < i; r++) {\n t = arguments[r];\n for (n in t) obHasOwnProp.call(t, n) && ((e as Record<string, any>)[n] = t[n]);\n }\n return e as T;\n};\nexport const isEmptyObject = function (obj: Object): boolean {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n};\n\nexport const expando = function (): string {\n return \"app\" + (\"\" + Math.random()).replace(/\\D/g, \"\");\n};\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE9-11+\n// Microsoft forgot to hump their vendor prefix (#9572)\nexport const camelCase = function (string: string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n};\n\nexport const proxy = function <T extends (...args: any[]) => any>(func: T, obj?: Object): () => ReturnType<T> {\n if (typeof func != \"function\") {\n return func;\n }\n\n // If obj is empty or another set another object\n if (!obj) {\n // @ts-ignore\n obj = this;\n }\n\n return function () {\n return func.apply(obj, arguments as unknown as any[]);\n };\n};\n\n/*\n hasData: function( elem ) {\n return data_user.hasData( elem ) || data_priv.hasData( elem );\n},\n\ndata: function( elem, name, data ) {\n return data_user.access( elem, name, data );\n},\n\nremoveData: function( elem, name ) {\n data_user.remove( elem, name );\n},\n */\n\nexport const data = function <T>(elem: HTMLElement, name: string, data?: T): T | undefined {\n return data_user.access(elem, name, data);\n};\n\nexport const getTagData = function (element: HTMLElement, key: string) {\n return element.dataset[key];\n};\n\nexport const getTagDataAsNumber = function (element: HTMLElement, key: string): number | undefined {\n const data = element.dataset[key];\n if (data == null) {\n return undefined;\n }\n return parseInt(data);\n};\n\nexport const setTagData = function (element: HTMLElement, key: string, value: string): void {\n element.dataset[key] = value;\n};\nvar rnotwhite = /\\S+/g;\nclass Data {\n static uid: number = 1;\n static accepts(owner: HTMLElement): boolean {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n /* jshint -W018 */\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n }\n\n private expando: string;\n private cache: Record<string, any>;\n constructor() {\n // Support: Android<4,\n // Old WebKit does not have Object.preventExtensions/freeze method,\n // return new empty object instead with no [[set]] accessor\n Object.defineProperty((this.cache = {}), 0, {\n get: function () {\n return {};\n },\n });\n\n this.expando = expando() + String(Data.uid++);\n }\n\n public key(owner: HTMLElement) {\n const _owner = owner as HTMLElement & { [key in string]: any };\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return the key for a frozen object.\n if (!Data.accepts(_owner)) {\n return 0;\n }\n\n var descriptor: Record<string, any> = {},\n // Check if the owner object already has a cache key\n unlock = _owner[this.expando];\n\n // If not, create one\n if (!unlock) {\n unlock = Data.uid++;\n\n // Secure it in a non-enumerable, non-writable property\n try {\n descriptor[this.expando] = { value: unlock };\n Object.defineProperties(_owner, descriptor);\n\n // Support: Android<4\n // Fallback to a less secure definition\n } catch (e) {\n descriptor[this.expando] = unlock;\n extend(_owner, descriptor);\n }\n }\n\n // Ensure the cache object\n if (!this.cache[unlock]) {\n this.cache[unlock] = {};\n }\n\n return unlock;\n }\n public set(owner: HTMLElement, data: string | Object, value: Object) {\n var prop,\n // There may be an unlock assigned to this node,\n // if there is no entry for this \"owner\", create one inline\n // and set the unlock as though an owner entry had always existed\n unlock = this.key(owner),\n cache = this.cache[unlock];\n\n // Handle: [ owner, key, value ] args\n if (typeof data === \"string\") {\n cache[data] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Fresh assignments by object are shallow copied\n if (isEmptyObject(cache)) {\n extend(this.cache[unlock], data);\n // Otherwise, copy the properties one-by-one to the cache object\n } else {\n for (prop in data) {\n //@ts-ignore\n cache[prop] = data[prop];\n }\n }\n }\n return cache;\n }\n public get(owner: HTMLElement, key: string) {\n // Either a valid cache is found, or will be created.\n // New caches will be created and the unlock returned,\n // allowing direct access to the newly created\n // empty data object. A valid owner object must be provided.\n var cache = this.cache[this.key(owner)];\n\n return key === undefined ? cache : cache[key];\n }\n public access(owner: HTMLElement, key: string, value: any) {\n var stored;\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || (key && typeof key === \"string\" && value === undefined)) {\n stored = this.get(owner, key);\n\n return stored !== undefined ? stored : this.get(owner, camelCase(key));\n }\n\n // [*]When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n }\n public remove(owner: HTMLElement, key: string): void {\n var i,\n name,\n camel,\n unlock = this.key(owner),\n cache = this.cache[unlock];\n\n if (key === undefined) {\n this.cache[unlock] = {};\n } else {\n // Support array or space separated string of keys\n if (isArray(key)) {\n // If \"name\" is an array of keys...\n // When data is initially created, via (\"key\", \"val\") signature,\n // keys will be converted to camelCase.\n // Since there is no way to tell _how_ a key was added, remove\n // both plain key and camelCase key. #12786\n // This will only penalize the array argument path.\n name = key.concat(key.map(camelCase));\n } else {\n camel = camelCase(key);\n // Try the string as a key before any manipulation\n if (key in cache) {\n name = [key, camel];\n } else {\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n name = camel;\n name = name in cache ? [name] : name.match(rnotwhite) || [];\n }\n }\n\n i = name.length;\n while (i--) {\n delete cache[name[i]];\n }\n }\n }\n public hasData(owner: HTMLElement): boolean {\n const _owner = owner as HTMLElement & { [key: string]: any };\n return !isEmptyObject(this.cache[_owner[this.expando]] || {});\n }\n public discard(owner: HTMLElement): void {\n const _owner = owner as HTMLElement & { [key: string]: any };\n if (_owner[this.expando]) {\n delete this.cache[_owner[this.expando]];\n }\n }\n}\n\n// var data_priv = new Data();\nconst data_user = new Data();\n\nexport const getSlideDuration = function (sdkApi: SDKApi, storyId: number, slideIndex: number) {\n return sdkApi.getSlideDuration(storyId, slideIndex) ?? 10000;\n};\n\nexport const getWinWidth = function (env: Window) {\n return env.innerWidth || env.document.documentElement.clientWidth || env.document.body.clientWidth;\n};\n\nexport const getWinHeight = function (env: Window) {\n return env.innerHeight || env.document.documentElement.clientHeight || env.document.body.clientHeight;\n};\n\nexport const sendStatisticEventToApp = function (\n sdkApi: SDKApi,\n name: string,\n data: Record<string, string | number>,\n devPayload?: Record<string, string | number>\n) {\n sdkApi.sendStatisticEvent(name, data, devPayload);\n};\n\nexport const getValueOrException = function <T>(value: T | undefined | null, message: string): T {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n};\n\nexport const getValueOrDefault = function <T>(value: T | undefined | null, defaultValue: T): T {\n if (value == null) {\n return defaultValue;\n }\n return value;\n};\n\nexport const getElementBounding = (env: Window, rect: DOMRect) => {\n var wWidth = getWinWidth(env);\n var wHeight = getWinHeight(env);\n\n var bounding = {\n absolute: {\n width: rect.width,\n height: rect.height,\n left: rect.left,\n right: 0,\n center: {\n x: rect.x + rect.width / 2,\n y: rect.y + rect.height / 2,\n },\n },\n width: (rect.width / wWidth) * 100,\n height: (rect.height / wHeight) * 100,\n left: (rect.left / wWidth) * 100,\n right: 0,\n center: {\n x: ((rect.x + rect.width / 2) / wWidth) * 100,\n y: ((rect.y + rect.height / 2) / wHeight) * 100,\n },\n };\n bounding.right = bounding.left + bounding.width;\n bounding.absolute.right = rect.left + rect.width;\n\n return bounding;\n};\n\nexport const toArray = <T = any>(value: any): Array<T> => Array.prototype.slice.call(value) as Array<T>;\n\nexport const addClass = (target: HTMLElement, className: string): void => {\n var arr = target.className.split(\" \");\n if (arr.indexOf(className) === -1) {\n target.className += \" \" + className;\n }\n};\nexport const removeClass = (target: HTMLElement, className: string): void => {\n target.className = target.className.replace(new RegExp(\"(?:^|\\\\s)\" + className + \"(?:\\\\s|$)\"), \" \").trim();\n};\nexport const classList = (target: HTMLElement): Array<string> => {\n if (target.classList !== undefined) {\n return toArray(target.classList);\n }\n return target.className.split(\" \");\n};\nexport const hasClass = (target: HTMLElement, className: string): boolean => classList(target).indexOf(className) !== -1;\n\nexport const Clipboard = (function (window: Window, document: Document, navigator: Navigator) {\n let textArea: HTMLTextAreaElement;\n function isOS() {\n return navigator.userAgent.match(/ipad|iphone/i);\n }\n\n function createTextArea(text: string): void {\n textArea = document.createElement(\"textArea\") as HTMLTextAreaElement;\n textArea.value = text;\n document.body.appendChild(textArea);\n }\n\n function selectText() {\n if (isOS()) {\n const range = document.createRange();\n range.selectNodeContents(textArea);\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n textArea.setSelectionRange(0, 999999);\n } else {\n textArea.select();\n }\n }\n\n function copyToClipboard() {\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n const copy = function (text: string): void {\n createTextArea(text);\n selectText();\n copyToClipboard();\n };\n\n return {\n copy,\n };\n})(window, document, navigator);\n","import { addClass, classList, hasClass, removeClass, toArray } from \"@utils\";\nimport { IAnimation } from \"./animation.h\";\n\nvar supportAnimate = document.documentElement.animate !== undefined;\nsupportAnimate = false; // tmp off\n\nvar _intervals: Array<number> = [];\n\nvar _startShakeAnimation = function (element: HTMLElement) {\n var step = 0;\n return window.setInterval(function () {\n if (element) {\n switch (step) {\n case 0:\n element.style.setProperty(\"transform\", \"translate(1px, 1px) rotate(0deg)\");\n break;\n case 10:\n element.style.setProperty(\"transform\", \"translate(-1px, -2px) rotate(-1deg)\");\n break;\n case 20:\n element.style.setProperty(\"transform\", \"translate(-3px, 0px) rotate(1deg)\");\n break;\n case 30:\n element.style.setProperty(\"transform\", \"translate(3px, 2px) rotate(0deg)\");\n break;\n case 40:\n element.style.setProperty(\"transform\", \"translate(1px, -1px) rotate(1deg)\");\n break;\n case 50:\n element.style.setProperty(\"transform\", \"translate(-1px, 2px) rotate(-1deg)\");\n break;\n case 60:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg)\");\n break;\n case 70:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg)\");\n break;\n case 80:\n element.style.setProperty(\"transform\", \"translate(-1px, -1px) rotate(1deg)\");\n break;\n case 90:\n element.style.setProperty(\"transform\", \"translate(1px, 2px) rotate(0deg)\");\n break;\n case 100:\n element.style.setProperty(\"transform\", \"translate(1px, -2px) rotate(-1deg)\");\n break;\n }\n step += 10;\n if (step > 100) {\n step = 0;\n }\n }\n }, 100);\n};\n\nvar _startExpandShakeAnimation = function (element: HTMLElement) {\n var step = 0;\n return window.setInterval(function () {\n if (element) {\n switch (step) {\n case 0:\n element.style.setProperty(\"transform\", \"translate(1px, 1px) rotate(0deg) scale(1.1)\");\n break;\n case 10:\n element.style.setProperty(\"transform\", \"translate(-1px, -2px) rotate(-1deg) scale(1.1)\");\n break;\n case 20:\n element.style.setProperty(\"transform\", \"translate(-3px, 0px) rotate(1deg) scale(1.1)\");\n break;\n case 30:\n element.style.setProperty(\"transform\", \"translate(3px, 2px) rotate(0deg) scale(1.1)\");\n break;\n case 40:\n element.style.setProperty(\"transform\", \"translate(1px, -1px) rotate(1deg) scale(1.1)\");\n break;\n case 50:\n element.style.setProperty(\"transform\", \"translate(-1px, 2px) rotate(-1deg) scale(1.1)\");\n break;\n case 60:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg) scale(1.1)\");\n break;\n case 70:\n element.style.setProperty(\"transform\", \"translate(3px, 1px) rotate(-1deg) scale(1.1)\");\n break;\n case 80:\n element.style.setProperty(\"transform\", \"translate(-1px, -1px) rotate(1deg) scale(1.1)\");\n break;\n case 90:\n element.style.setProperty(\"transform\", \"translate(1px, 2px) rotate(0deg) scale(1.1)\");\n break;\n case 100:\n element.style.setProperty(\"transform\", \"translate(1px, -2px) rotate(-1deg) scale(1.1)\");\n break;\n }\n step += 10;\n if (step > 100) {\n step = 0;\n }\n }\n }, 100);\n};\n\nvar _startBlurAnimation = function (element: HTMLElement) {\n const listener = (e: TransitionEvent) => {\n if (e.propertyName === \"filter\" && e.target != null) {\n const target = e.target as HTMLElement;\n if (hasClass(target, \"animated\")) {\n if (target.style.filter === \"blur(0px)\" || target.style.filter === \"\") {\n setTimeout(function () {\n target.style.filter = \"blur(5px)\";\n }, 10);\n } else if (target.style.filter === \"blur(5px)\") {\n setTimeout(function () {\n target.style.filter = \"blur(0px)\";\n }, 10);\n }\n } else {\n target.style.filter = \"\";\n target.removeEventListener(\"transitionend\", listener);\n }\n }\n };\n element.addEventListener(\"transitionend\", listener);\n};\n\nvar shortDuration = {\n duration: 1000,\n iterations: 1,\n};\nvar longDuration = {\n duration: 10000,\n iterations: 1,\n};\nvar extraLongDuration = {\n duration: 20000,\n iterations: 1,\n};\nvar longInfinityDuration = {\n duration: 10000,\n iterations: Infinity,\n};\n\nvar getAnimationFunction = function (element: HTMLElement): () => void {\n if (!hasClass(element, \"animated\")) {\n if (hasClass(element, \"narrative-element-animation-shake\")) {\n if (element.parentElement && hasClass(element.parentElement, \"narrative-element-expand\")) {\n return function () {\n _intervals.push(_startExpandShakeAnimation(element));\n addClass(element, \"animated\");\n };\n } else {\n return function () {\n _intervals.push(_startShakeAnimation(element));\n addClass(element, \"animated\");\n };\n }\n } else if (hasClass(element, \"narrative-element-animation-blur\")) {\n return function () {\n _startBlurAnimation(element);\n addClass(element, \"animated\");\n };\n } else {\n return function () {\n addClass(element, \"active\");\n addClass(element, \"animated\");\n };\n }\n }\n return function () {};\n};\n\nexport const animationApi: IAnimation = {\n start: function (slide: HTMLElement, animate: boolean = false) {\n if (supportAnimate && animate) {\n // for editor, todo add .reset-animation to narrative-editor-slide && clear that\n if (!hasClass(slide, \"narrative-slide\")) {\n addClass(slide, \"reset-animation\");\n }\n\n const elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n\n elements.forEach(element => {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n var _classList = classList(element);\n\n if (_classList.indexOf(\"narrative-element-animation-fade-in-up\") !== -1) {\n element.animate(\n {\n transform: [\"translateY(\" + height + \"px)\", \"translateY(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-down\") !== -1) {\n element.animate(\n {\n transform: [\"translateY(\" + -1 * height + \"px)\", \"translateY(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-left\") !== -1) {\n element.animate(\n {\n transform: [\"translateX(\" + -1 * width + \"px)\", \"translateX(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-right\") !== -1) {\n element.animate(\n {\n transform: [\"translateX(\" + width + \"px)\", \"translateX(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-blur\") !== -1) {\n element.animate(\n [\n { filter: \"blur(5px)\", offset: 0 },\n { filter: \"blur(0px)\", offset: 0.5 },\n { filter: \"blur(5px)\", offset: 1 },\n ],\n longInfinityDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-focus-in\") !== -1) {\n element.animate({ filter: [\"blur(12px)\", \"blur(0px)\"], opacity: [0, 1] }, shortDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-left\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateX(\" + 0.08 * width + \"px)\", \"scale(1.2) translateX(\" + -0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-right\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateX(\" + -0.08 * width + \"px)\", \"scale(1.2) translateX(\" + 0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-up\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateY(\" + 0.08 * width + \"px)\", \"scale(1.2) translateY(\" + -0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-down\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateY(\" + -0.08 * width + \"px)\", \"scale(1.2) translateY(\" + 0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-zoom\") !== -1) {\n element.animate({ transform: [\"scale(1)\", \"scale(1.2)\"] }, longDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-zoom-out\") !== -1) {\n element.animate({ transform: [\"scale(1.2)\", \"scale(1)\"] }, longDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-shake\") !== -1) {\n element.animate(\n [\n { transform: \"translate(1px, 1px) rotate(0deg)\", offset: 0 },\n { transform: \"translate(-1px, -2px) rotate(-1deg)\", offset: 0.1 },\n { transform: \"translate(-3px, 0px) rotate(1deg)\", offset: 0.2 },\n { transform: \"translate(3px, 2px) rotate(0deg)\", offset: 0.3 },\n { transform: \"translate(1px, -1px) rotate(1deg)\", offset: 0.4 },\n { transform: \"translate(-1px, 2px) rotate(-1deg)\", offset: 0.5 },\n { transform: \"translate(-3px, 1px) rotate(0deg)\", offset: 0.6 },\n { transform: \"translate(3px, 1px) rotate(-1deg)\", offset: 0.7 },\n { transform: \"translate(-1px, -1px) rotate(1deg)\", offset: 0.8 },\n { transform: \"translate(1px, 2px) rotate(0deg)\", offset: 0.9 },\n { transform: \"translate(1px, -2px) rotate(-1deg)\", offset: 1 },\n ],\n { duration: 1000, iterations: Infinity, composite: \"add\" }\n );\n }\n });\n\n if (elements.length > 0) {\n requestAnimationFrame(() => removeClass(slide, \"reset-animation\"));\n }\n } else {\n addClass(slide, \"animation-fallback\");\n\n type SavedAnimation = { cb: () => void; timerId?: number; timeout: number; needResume?: boolean };\n const animations: Array<SavedAnimation> = [];\n\n // просто Array\n\n var elements = slide.querySelectorAll<HTMLElement>(\".narrative-element-animation\");\n var isEditorSlide = hasClass(slide, \"narrative-editor-slide\");\n for (var i = 0; i < elements.length; i++) {\n if (!isEditorSlide && !elements[i].style.getPropertyValue(\"--width\")) {\n var rects = elements[i].getBoundingClientRect();\n var width = rects.width;\n var height = rects.height;\n if (width && height) {\n elements[i].style.setProperty(\"--width\", width + \"px\");\n elements[i].style.setProperty(\"--height\", height + \"px\");\n }\n }\n (function (element) {\n var timeout = 50;\n\n if (element.getAttribute(\"data-animation-timeout\") && parseFloat(element.getAttribute(\"data-animation-timeout\") ?? \"0\")) {\n timeout = parseFloat(element.getAttribute(\"data-animation-timeout\") ?? \"0\") * 1000;\n }\n\n const cb = () => {\n getAnimationFunction(element)();\n if (animation) {\n animation.timerId = undefined;\n }\n };\n const animation: SavedAnimation = {\n cb,\n timeout,\n timerId: window.setTimeout(cb, timeout),\n };\n animations.push(animation);\n })(elements[i]);\n }\n\n var startAt = new Date().getTime();\n // onstop && onpause\n return function (isStop: boolean) {\n for (var animation of animations) {\n if (animation[\"timerId\"] !== undefined) {\n clearTimeout(animation[\"timerId\"]);\n animation[\"timerId\"] = undefined;\n animation[\"timeout\"] -= new Date().getTime() - startAt;\n animation[\"needResume\"] = !isStop;\n }\n }\n\n // resume\n return function () {\n startAt = new Date().getTime();\n for (const animation of animations) {\n if (animation[\"timerId\"] === undefined && animation[\"needResume\"] === true) {\n animation[\"timerId\"] = window.setTimeout(animation[\"cb\"], animation[\"timeout\"]);\n }\n }\n };\n };\n }\n },\n\n stop: function (slide: HTMLElement, animate: boolean) {\n if (supportAnimate && animate) {\n /** @type {HTMLElement[]} */\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n animation.cancel();\n });\n });\n } else {\n for (var i = 0; i < _intervals.length; i++) {\n clearInterval(_intervals[i]);\n }\n\n if (slide) {\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n for (var i = 0; i < elements.length; i++) {\n removeClass(elements[i], \"active\");\n removeClass(elements[i], \"animated\");\n elements[i].style.setProperty(\"transform\", \"\");\n elements[i].style.setProperty(\"filter\", \"\");\n }\n }\n }\n },\n\n pause: function (slide: HTMLElement): void {\n if (supportAnimate) {\n /* var elements = document.querySelectorAll('.narrative-element-animation');\n elements = _toArray(elements);\n\n elements.forEach(function(el) {\n el.playState = \"paused\";\n // el.currentTime = 0;\n });*/\n\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n if (animation.playState !== \"finished\" && animation.playState === \"running\") {\n animation.pause();\n }\n });\n });\n\n // slide.getAnimations().forEach(function (animation) {\n // if (animation.playState !== 'finished' && animation.playState === 'running') {\n // animation.pause();\n // }\n // });\n }\n },\n resume: function (slide: HTMLElement): void {\n if (supportAnimate) {\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n if (animation.playState === \"paused\") {\n animation.play();\n }\n });\n });\n }\n },\n reset: function (slide: HTMLElement): void {\n // _addClass(slide, 'reset-animation');\n },\n};\n","import { APIResponse, SDKApi } from \"@skd_api\";\nimport { isArray, isNumber, isObject } from \"@utils\";\nimport { Widgets, WidgetsSharedDataMap } from \"../../widgets/base\";\nimport { animationApi, IAnimation } from \"@animation\";\nimport { SDKInterface } from \"../es_module_sdk_api.h\";\n\ndeclare class Toast {\n constructor(options: { content: string });\n}\n\nexport class EsModuleSdkApi implements SDKApi {\n constructor(private readonly sdkBinding: () => SDKInterface) {}\n\n getStoryServerData(storyId: number): Record<string, any> | null {\n return this.sdkBinding().getStoryServerData(storyId);\n }\n\n getSlideDuration(storyId: number, slideIndex: number): number | null {\n return this.sdkBinding().getSlideDuration(storyId, slideIndex);\n }\n\n showNextSlide(duration: number): void {\n this.sdkBinding().showNextSlide(duration);\n }\n\n sendStatisticEvent(name: string, data: Record<string, string | number>, devPayload?: Record<string, string | number>): void {\n this.sdkBinding().sendStatisticEvent(name, data, devPayload);\n }\n\n getStoryLocalData(): Promise<Record<string, any>> {\n return this.sdkBinding().getStoryLocalData();\n }\n\n isExistsShowLayer(): boolean {\n return true;\n }\n\n showLayer(index: number) {\n this.sdkBinding().showLayer(index);\n }\n\n get storyAnimation() {\n return animationApi;\n }\n\n get isAndroid(): boolean {\n return false;\n }\n get isIOS(): boolean {\n return false;\n }\n\n get isWeb(): boolean {\n return true;\n }\n\n pauseUI() {\n this.sdkBinding().pauseUI();\n }\n resumeUI() {\n this.sdkBinding().resumeUI();\n }\n\n get isExistsShowStoryTextInput(): boolean {\n return true;\n }\n\n showStoryTextInput(id: string, data: Record<string, any>): void {\n this.sdkBinding().showStoryTextInput(id, data);\n }\n\n setStoryLocalData(keyValue: Record<string, any>, sendToServer: boolean) {\n this.sdkBinding().setStoryLocalData(keyValue, sendToServer);\n }\n\n getWidgetsSharedData<WidgetType extends keyof WidgetsSharedDataMap>(storyId: number, widget: Widgets): WidgetsSharedDataMap[WidgetType] | null {\n return this.sdkBinding().getWidgetsSharedData<WidgetType>(storyId, widget);\n }\n\n vibrate(pattern: number): void {\n navigator.vibrate(pattern);\n }\n\n openUrl(target: string): void {\n this.sdkBinding().openUrl(target);\n }\n\n sendApiRequest<ResponseDTO>(\n url: string,\n method: string,\n params: Record<string, any> | null,\n headers: Record<string, any> | null,\n data: Record<string, any> | null,\n profilingKey: string\n ): Promise<APIResponse<ResponseDTO>> {\n return this.sdkBinding().sendApiRequest(url, method, params, headers, data, profilingKey);\n }\n\n sendApiRequestSupported(): boolean {\n return true;\n }\n showToast(text: string): void {}\n\n get sdkCanSendShareComplete(): boolean {\n return true;\n }\n\n get isExistsShare(): boolean {\n return true;\n }\n\n share(\n id: string,\n config: {\n url?: string | null;\n text?: string | null;\n title?: string | null;\n files?: Array<{\n file: File;\n name: string;\n type: string;\n }> | null;\n }\n ) {\n this.sdkBinding().share(id, config);\n }\n\n shareSlideScreenshot(shareId: string, hideElementsSelector?: string): void {\n this.sdkBinding().shareSlideScreenshot(shareId, hideElementsSelector);\n }\n\n get isExistsShowStorySlide(): boolean {\n return true;\n }\n\n showStorySlide(index: number): void {\n this.sdkBinding().showStorySlide(index);\n }\n\n get isExistsShowNextStory(): boolean {\n return true;\n }\n storyShowNext(): void {\n this.sdkBinding().storyShowNext();\n }\n}\n","import {\n data,\n extend,\n forEach,\n getSlideDuration,\n getTagData,\n getTagDataAsNumber,\n getValueOrDefault,\n getValueOrException,\n sendStatisticEventToApp,\n slice,\n} from \"@utils\";\nimport { container } from \"@composition\";\nimport { WidgetOptionsBase } from \"./base.h\";\nimport { WidgetsService } from \"./widgets_service/widgets_service\";\n\nexport class WidgetBase<WidgetOptions extends WidgetOptionsBase> {\n /**\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-1488919713\n */\n declare [\"constructor\"]: typeof WidgetBase;\n\n static DEFAULTS: WidgetOptionsBase = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n static widgetIndex = 0;\n\n protected env = WidgetBase.widgetsService.env;\n protected sdkApi = WidgetBase.widgetsService.sdkApi;\n protected options: WidgetOptions = null!;\n protected element: HTMLElement = null!;\n protected elementId: string = null!;\n protected slide: HTMLElement = null!;\n protected slideIndex: number = null!;\n protected disableTimer: boolean = null!;\n protected layoutDirection: \"ltr\" | \"rtl\" = \"ltr\";\n protected storyId: number = null!;\n protected widgetDone: Element | null = null;\n protected showWidgetCompleteToast: boolean = null!;\n protected submitButtonAnimatedView: HTMLElement | null = null;\n protected submitButtonView: HTMLElement | null = null;\n protected submitButtonViewHeight: number = 0;\n protected savedData: Record<string, any> | null = null;\n protected localData: Record<string, any> = null!;\n protected firstOpenTime: number = 0;\n protected id: string;\n\n constructor(\n element: HTMLElement,\n options: Partial<WidgetOptions>,\n elementIdGetter?: (element: HTMLElement) => string,\n slideGetter?: (element: HTMLElement) => HTMLElement\n ) {\n this.options = extend<WidgetOptions>({}, this.constructor.DEFAULTS as WidgetOptions, options);\n this.element = element;\n if (elementIdGetter) {\n this.elementId = elementIdGetter(this.element);\n } else {\n this.elementId = getValueOrException(getTagData(this.element, \"elementId\"), \"Empty elementId\");\n }\n\n if (slideGetter) {\n this.slide = slideGetter(this.element);\n } else {\n this.slide = getValueOrException(this.element.closest<HTMLElement>(\".narrative-slide\"), \"Empty slide\");\n }\n\n this.slideIndex = getValueOrException(getTagDataAsNumber(this.slide, \"index\"), \"Empty slideIndex\");\n this.disableTimer = getTagData(this.slide, \"disableTimer\") === \"1\";\n\n this.storyId = getValueOrException(getTagDataAsNumber(this.slide, \"id\"), \"Empty storyId\");\n\n if (this.env.getComputedStyle(this.element).direction === \"rtl\") {\n this.layoutDirection = \"rtl\";\n } else {\n this.layoutDirection = \"ltr\";\n }\n this.element.dir = this.layoutDirection;\n\n if (this.element.parentElement != null) {\n this.widgetDone = this.element.parentElement?.nextElementSibling; // geometry + .widget-sent-toast\n if (this.widgetDone) {\n if (!this.widgetDone.classList.contains(\"widget-sent-toast\")) {\n this.widgetDone = null;\n }\n }\n }\n this.showWidgetCompleteToast = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"showWidgetCompleteToast\"), 0));\n if (!this.showWidgetCompleteToast) {\n this.widgetDone = null;\n }\n\n if (this.element != null) {\n this.submitButtonAnimatedView = this.element.querySelector(\".submit-button-animated-view\");\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonView = this.submitButtonAnimatedView.querySelector(\".submit-button-view\");\n if (this.submitButtonView != null) {\n this.submitButtonViewHeight = this.submitButtonView.clientHeight;\n }\n }\n }\n\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, this.options.localData ?? {});\n\n this.id = `w_${this.elementId}_${WidgetBase.widgetIndex}`;\n ++WidgetBase.widgetIndex;\n }\n\n public refreshUserData(localData: Record<string, any>): void {}\n\n public static widgetCacheKey = \"ias.story-element\";\n public static widgetClassName = \"\";\n\n public static getInstance<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(element: HTMLElement): Widget | undefined {\n return data<Widget>(element, this.widgetCacheKey);\n }\n\n public static getInstanceById<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(id: string): Widget | undefined {\n const widgetsElements = slice.call(this.widgetsService.env.document.querySelectorAll(`.${this.widgetClassName}`));\n let widget: Widget | undefined;\n forEach(widgetsElements, (element, index) => {\n const localWidget = data<Widget>(element, this.widgetCacheKey);\n if (localWidget && localWidget.id === id) {\n widget = localWidget;\n }\n });\n\n return widget;\n }\n\n public static createInstance<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n instantiate: (element: HTMLElement, options: Partial<WidgetOptions>) => Widget,\n element: HTMLElement,\n options: Partial<WidgetOptions>\n ): Widget {\n // get from objects cache (just Map<key, data> where key assigned to HTMLElement)\n let instance = WidgetBase.getInstance<Widget, WidgetOptions>(element);\n if (instance == null) {\n // can throw Error\n instance = instantiate(element, options);\n // save object in cache by key associated with HTMLElement\n data(element, WidgetBase.widgetCacheKey, instance);\n }\n\n return instance;\n }\n\n public static initWidgets<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n instantiate: (element: HTMLElement, options: Partial<WidgetOptions>) => Widget,\n elements: Array<HTMLElement>,\n localData?: Record<string, any>\n ): Promise<Record<string, any>> {\n if (localData != null) {\n forEach(elements, element => {\n this.createInstance<Widget, WidgetOptions>(instantiate, element, {\n slide: null,\n localData,\n } as WidgetOptions);\n });\n return Promise.resolve(localData);\n } else {\n return new Promise<Record<string, any>>(resolve => {\n this.getLocalData().then(localData => {\n forEach(elements, element => {\n this.createInstance<Widget, WidgetOptions>(instantiate, element, {\n slide: null,\n localData,\n } as WidgetOptions);\n });\n resolve(localData);\n });\n });\n }\n }\n\n public static get widgetsService(): WidgetsService {\n return container.get<WidgetsService>();\n }\n\n public static getLocalData(): Promise<Record<string, any>> {\n return this.widgetsService.sdkApi.getStoryLocalData();\n }\n\n public getLocalData(): Promise<Record<string, any>> {\n return this.constructor.getLocalData();\n }\n\n public static setLocalData(keyValue: Record<string, any>, sendToServer?: boolean, syncWithRuntimeLocalData?: boolean) {\n // push json object as string\n if (sendToServer === undefined) {\n sendToServer = true;\n } else {\n sendToServer = Boolean(sendToServer);\n }\n if (syncWithRuntimeLocalData === undefined) {\n syncWithRuntimeLocalData = true;\n } else {\n syncWithRuntimeLocalData = Boolean(syncWithRuntimeLocalData);\n }\n\n if (syncWithRuntimeLocalData) {\n this.getLocalData().then(localData => {\n // 1 - old values, 2 - new values\n keyValue = extend({}, localData, keyValue);\n\n // todo make async via promise or async\n this.widgetsService.sdkApi.setStoryLocalData(keyValue, sendToServer);\n });\n } else {\n // todo make async via promise or async\n this.widgetsService.sdkApi.setStoryLocalData(keyValue, sendToServer);\n }\n }\n\n public setLocalData(keyValue: Record<string, any>, sendToServer?: boolean, syncWithRuntimeLocalData?: boolean) {\n return this.constructor.setLocalData(keyValue, sendToServer, syncWithRuntimeLocalData);\n }\n\n public static sendStatisticEventToApp(name: string, data: Record<string, string | number>, devPayload?: Record<string, string | number>) {\n sendStatisticEventToApp(this.widgetsService.sdkApi, name, data, devPayload);\n }\n\n public sendStatisticEventToApp(name: string, data: Record<string, string | number>, devPayload?: Record<string, string | number>) {\n this.constructor.sendStatisticEventToApp(name, data, devPayload);\n }\n\n public showNextSlide() {\n this.sdkApi.showNextSlide(getSlideDuration(this.sdkApi, this.storyId, this.slideIndex));\n }\n\n protected _showLayout(layers: Array<HTMLElement>, selectIndex: number, withStatEvent: boolean = false): void {\n if (this.sdkApi.isExistsShowLayer()) {\n this.sdkApi.showLayer(selectIndex);\n } else {\n forEach(layers, (layer, index) => {\n if (index === selectIndex) {\n layer.classList.remove(\"hidden\");\n this.sdkApi.storyAnimation?.start(layer);\n } else {\n layer.classList.add(\"hidden\");\n }\n });\n }\n if (withStatEvent) {\n this._statEventLayoutShow(selectIndex);\n }\n }\n\n protected _statEventLayoutShow(layoutIndex: number): void {\n try {\n this.sendStatisticEventToApp(\n \"layout-show\",\n {\n i: this.storyId,\n si: this.slideIndex,\n li: layoutIndex,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n layout_index: layoutIndex,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n public static refreshUserData<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n nodes: NodeListOf<HTMLElement>,\n localData?: Record<string, any>\n ): void {\n const cb = (el: HTMLElement, localData: Record<string, any>) => {\n const widgetElement = el.closest<HTMLElement>(`.${this.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetBase.getInstance<Widget, WidgetOptions>(widgetElement);\n if (widget) {\n widget.refreshUserData(localData);\n }\n }\n };\n\n if (localData != null) {\n const elements: Array<HTMLElement> = slice.call(nodes);\n forEach(elements, el => cb(el, localData));\n } else {\n WidgetBase.getLocalData().then(localData => {\n const elements: Array<HTMLElement> = slice.call(nodes);\n forEach(elements, el => cb(el, localData));\n });\n }\n }\n}\n","import { addClass, Clipboard, getTagData, removeClass, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetCopyOptions } from \"./copy.h\";\n\nexport class WidgetCopy extends WidgetBase<WidgetCopyOptions> {\n static DEFAULTS: WidgetCopyOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-copy\";\n\n private button: HTMLElement | null;\n private clipboardTarget: string | undefined;\n private isPromotionalCode: boolean;\n private state: number | null;\n private msgNetworkError: string | undefined;\n private msgServiceError: string | undefined;\n private msgNoMoreCodes: string | undefined;\n private msgTryAgain: string | undefined;\n private geometry: HTMLElement | null;\n private resultLayer: HTMLElement | null;\n private resultLayerGeometry: HTMLElement | null;\n constructor(element: HTMLElement, options: Partial<WidgetCopyOptions>) {\n super(element, options);\n\n this.button = this.element.querySelector(\".narrative-element-text-lines\");\n\n this.clipboardTarget = getTagData(element, \"clipboardTarget\");\n this.isPromotionalCode = getTagData(element, \"clipboardType\") === \"promocode\";\n\n this.state = null;\n\n this.msgNetworkError = getTagData(this.element, \"msgNetworkError\");\n this.msgServiceError = getTagData(this.element, \"msgServiceError\");\n this.msgNoMoreCodes = getTagData(this.element, \"msgNoMoreCodes\");\n this.msgTryAgain = getTagData(this.element, \"msgTryAgain\");\n\n this.geometry = this.element.closest(\".narrative-element-geometry\");\n\n this.resultLayer = this.slide.querySelector(\".narrative-element-copy-result-variant\");\n if (this.resultLayer && this.geometry) {\n this.resultLayerGeometry = this.resultLayer.closest(\".narrative-element-geometry\");\n\n // create align center\n if (this.resultLayerGeometry) {\n var baseComputedGeometry = window.getComputedStyle(this.geometry);\n var resultComputedGeometry = window.getComputedStyle(this.resultLayerGeometry);\n\n if (parseFloat(resultComputedGeometry.width) < parseFloat(baseComputedGeometry.width)) {\n // prevent resultLayer shrinking\n this.resultLayerGeometry.style.setProperty(\"width\", parseFloat(baseComputedGeometry.width) + \"px\");\n resultComputedGeometry = window.getComputedStyle(this.resultLayerGeometry);\n }\n\n var geometryCenter = parseFloat(baseComputedGeometry.left) + parseFloat(baseComputedGeometry.width) / 2;\n var resultLayerGeometryWidth = parseFloat(resultComputedGeometry.width);\n var newResultLayerGeometryLeft = geometryCenter - resultLayerGeometryWidth / 2;\n\n this.resultLayerGeometry.style.setProperty(\"left\", newResultLayerGeometryLeft + \"px\");\n }\n }\n\n if (this.isPromotionalCode) {\n this.fetchPromoCode();\n }\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {}\n\n private isTransparentElement(): boolean {\n if (this.element) {\n try {\n var color = window.getComputedStyle(this.element).color;\n if (color === \"transparent\" || color === \"rgba(0, 0, 0, 0)\" || color === \"rgba(0,0,0,0)\") {\n return true;\n }\n } catch (err) {\n console.error(err);\n }\n }\n return false;\n }\n\n private changeText(newText: string): void {\n if (this.button) {\n this.button.textContent = newText;\n }\n }\n\n private fetchPromoCode(): void {\n this.state = 0;\n\n if (this.localData[\"_cp_g_\" + this.elementId + \"_pc\"] !== undefined) {\n this.state = 1;\n this.clipboardTarget = this.localData[\"_cp_g_\" + this.elementId + \"_pc\"];\n if (this.clipboardTarget != null) {\n this.changeText(this.clipboardTarget);\n }\n removeClass(this.element, \"loader\");\n }\n\n if (this.state === 0) {\n if (!this.isTransparentElement()) {\n // for transparent element\n addClass(this.element, \"loader\");\n }\n\n // fetch promo code\n var path = \"story/\" + this.storyId + \"/widget/\" + this.elementId + \"/promo-code/\" + this.clipboardTarget;\n var headers = {\n accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n };\n var profileKey = \"fetch-promo-code\";\n\n Promise.all([\n this.sdkApi.sendApiRequest<{ code: string }>(path, \"POST\", null, headers, null, profileKey),\n new Promise<void>(function (t, e) {\n return setTimeout(t, 300);\n }),\n ]).then(values => {\n var r = values[0];\n\n var status = r.status;\n var code = null;\n var success = false;\n if (status === 200 || status === 201) {\n if (r.data) code = r.data.code;\n if (code) {\n // success case\n this.clipboardTarget = code;\n this.changeText(this.clipboardTarget);\n success = true;\n this.state = 1;\n removeClass(this.element, \"loader\");\n\n if (status === 201) {\n this.localData[\"_cp_g_\" + this.elementId + \"_pc_fetched_at\"] = Math.round(new Date().getTime() / 1000);\n this.localData[\"_&ts_cp_g_\" + this.elementId + \"_pc_fetched_at\"] = Math.round(new Date().getTime() / 1000);\n }\n this.localData[\"_cp_g_\" + this.elementId + \"_pc\"] = code;\n\n this.setLocalData(this.localData, true);\n } else {\n this.msgNoMoreCodes && this.sdkApi.showToast(this.msgNoMoreCodes);\n }\n } else if (status === 12163 || status === 12002) {\n this.msgNetworkError && this.sdkApi.showToast(this.msgNetworkError);\n } else {\n this.msgServiceError && this.sdkApi.showToast(this.msgServiceError);\n }\n\n if (!success) {\n this.state = 3;\n this.changeText(this.msgTryAgain ?? \"\");\n removeClass(this.element, \"loader\");\n }\n });\n }\n }\n\n public getStateValue(): number | null {\n return this.state;\n }\n\n public getIsPromotionalCode(): boolean {\n return this.isPromotionalCode;\n }\n\n private _statEventCopyClick(clipboardTarget: string): void {\n try {\n var buttonText = this.button?.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-copy\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: buttonText,\n wt: clipboardTarget,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: buttonText,\n widget_value: clipboardTarget,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private _select(): void {\n this.element.classList.add(\"done\");\n if (this.resultLayer) {\n this.resultLayer.classList.add(\"done\");\n }\n\n if (this.disableTimer) {\n // флаг - что таймер уже стартанул (в layout или добавить объект sharedMemory)\n // смотрим что прозрачный текст - тогда и лоадер прозрачный\n // _log(\"_showNarrativeNextSlide: \" + getSlideDuration(this.narrativeId, this.slideIndex), true);\n this.showNextSlide();\n }\n }\n\n public copyToClipboard(element: HTMLElement): void {\n this._select();\n\n var text = this.clipboardTarget ?? \"\";\n\n Clipboard.copy(text);\n\n this.completeWidget();\n\n this._statEventCopyClick(text);\n }\n\n private completeWidget(): void {\n this.localData[\"_cp_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n\n // ответ на вопрос\n this.localData[\"_&ts_cp_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_cp_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetCopy.refreshUserData,\n initWidget: function (nodeList: NodeListOf<HTMLElement>, localData?: Record<string, any>) {\n // prevent initWidget for result layer\n const elements = slice.call(nodeList).filter(element => !element.classList.contains(\"narrative-element-copy-result-variant\"));\n WidgetCopy.initWidgets<WidgetCopy, WidgetCopyOptions>((element, options) => new WidgetCopy(element, options), elements, localData);\n },\n\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetCopy.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetCopy.getInstance<WidgetCopy, WidgetCopyOptions>(widgetElement);\n if (widget) {\n if (!widget.getIsPromotionalCode()) {\n widget.copyToClipboard(element);\n } else if (widget.getStateValue() === 1) {\n widget.copyToClipboard(element);\n } else if (widget.getStateValue() === 3) {\n widget.fetchPromoCode();\n }\n }\n }\n return false;\n },\n };\n}\n","/** QUIZ */\nimport { extend, getElementBounding, getValueOrException, slice } from \"@utils\";\nimport { WidgetDataInputOptions } from \"./data_input.h\";\nimport { WidgetBase } from \"../base\";\n\nexport class WidgetDataInput extends WidgetBase<WidgetDataInputOptions> {\n static DEFAULTS = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-data-input\";\n\n private label: HTMLElement | null;\n private elementRect: DOMRect;\n private inputElement: HTMLElement;\n private textElement: HTMLElement;\n private inputPlaceholderValue: string;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetDataInputOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.elementRect = this.element.getBoundingClientRect();\n\n this.inputElement = getValueOrException(this.element.querySelector<HTMLElement>(\".input-view .input\"), \"Empty .input-view .input\");\n this.textElement = getValueOrException(\n this.inputElement.querySelector<HTMLElement>(\".narrative-element-text-lines\"),\n \"Empty .narrative-element-text-lines\"\n );\n this.inputPlaceholderValue = this.textElement.innerHTML;\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n var text = this.localData[\"_di_g_\" + this.elementId + \"_t\"];\n this._fillUserText(text);\n if (text) {\n this.element.classList.add(\"done\");\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n }\n\n private _statEventFocusIn() {\n try {\n var labelText = this.label ? this.label.textContent ?? \"\" : \"\";\n\n WidgetBase.sendStatisticEventToApp(\n \"w-data-input-focus\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private _statEventInputSave(answerText: string) {\n try {\n const labelText = this.label ? this.label.textContent ?? \"\" : \"\";\n\n WidgetBase.sendStatisticEventToApp(\n \"w-data-input-save\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wv: answerText,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_value: answerText,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n public isDone() {\n return Boolean(this.localData[\"_di_g_\" + this.elementId + \"_t\"]);\n }\n\n public click(element: HTMLElement) {\n if (this.isDone()) {\n return true;\n }\n\n this.elementRect = this.element.getBoundingClientRect();\n\n if (this.sdkApi.isAndroid || this.sdkApi.isWeb) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n if (this.sdkApi.isExistsShowStoryTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showStoryTextInput(this.id, data);\n\n this._statEventFocusIn();\n }\n\n return false;\n }\n\n private _fillUserText(text: string) {\n if (this.inputElement && this.textElement) {\n if (text) {\n this.inputElement.classList.remove(\"_is-placeholder\");\n text = text.replace(new RegExp(\"\\r?\\n\", \"g\"), \"<br />\");\n this.textElement.innerHTML = text;\n } else {\n this.inputElement.classList.add(\"_is-placeholder\");\n this.textElement.innerHTML = this.inputPlaceholderValue;\n }\n }\n }\n\n public setUserText(text: string) {\n this.slide.classList.remove(\"data-input-editing\");\n this.slide.classList.remove(\"blured\");\n\n var needResumeUITimer = true;\n\n if (text) {\n this._fillUserText(text);\n\n this.localData[\"_di_g_\" + this.elementId + \"_t\"] = text;\n // answer to question\n this.localData[\"_&ts_di_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n this.setLocalData(this.localData, true);\n\n this._statEventInputSave(text);\n\n if (this.disableTimer) {\n if (\"_showNarrativeNextSlide\" in window) {\n this.showNextSlide();\n needResumeUITimer = false;\n }\n }\n }\n if (needResumeUITimer && !this.disableTimer) {\n this.sdkApi.resumeUI();\n }\n }\n\n public static api = {\n refreshUserData: WidgetDataInput.refreshUserData,\n initWidget: function (nodeList: NodeListOf<HTMLElement>, localData?: Record<string, any>) {\n WidgetDataInput.initWidgets<WidgetDataInput, WidgetDataInputOptions>(\n (element, options) => new WidgetDataInput(element, options),\n slice.call(nodeList),\n localData\n );\n },\n\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetDataInput.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetDataInput.getInstance<WidgetDataInput, WidgetDataInputOptions>(widgetElement);\n if (widget) {\n return widget.click(element);\n }\n }\n return true;\n },\n\n setUserData: function (id: string, text: string) {\n WidgetDataInput.getInstanceById<WidgetDataInput, WidgetDataInputOptions>(id)?.setUserText(text);\n },\n };\n}\n","import { forEach, getTagData, getTagDataAsNumber, getValueOrException, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetDateCountdownOptions } from \"./date_countdown.h\";\n\nexport class WidgetDateCountdown extends WidgetBase<WidgetDateCountdownOptions> {\n static DEFAULTS: WidgetDateCountdownOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n layers: [],\n };\n\n public static widgetClassName = \"narrative-element-date-countdown\";\n\n private label: HTMLElement | null;\n private layers: Array<HTMLElement>;\n private messages: {\n days: string;\n hours: string;\n minutes: string;\n seconds: string;\n };\n private timestampSeconds: number;\n private diff: number;\n private timerInited: boolean;\n private pendingUpdate: boolean;\n\n private firstGroup1: HTMLElement;\n private firstGroup2: HTMLElement;\n private firstGroupCaption: HTMLElement;\n\n private secondGroup1: HTMLElement;\n private secondGroup2: HTMLElement;\n private secondGroupCaption: HTMLElement;\n\n private thirdGroup1: HTMLElement;\n private thirdGroup2: HTMLElement;\n private thirdGroupCaption: HTMLElement;\n\n constructor(element: HTMLElement, options: Partial<WidgetDateCountdownOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.messages = {\n days: getTagData(this.element, \"tDays\") ?? \"\",\n hours: getTagData(this.element, \"tHours\") ?? \"\",\n minutes: getTagData(this.element, \"tMinutes\") ?? \"\",\n seconds: getTagData(this.element, \"tSeconds\") ?? \"\",\n };\n\n this.timestampSeconds = getValueOrException(getTagDataAsNumber(this.element, \"timestampSeconds\"), \"Empty timestampSeconds\");\n this.diff = 0;\n\n this.timerInited = false;\n this.pendingUpdate = true;\n\n this.layers = this.options.layers;\n\n // if (false) {\n // // if (sendApiRequestSupported()) {\n // // fetch project time\n // var path = \"story/\" + this.storyId + \"/widget/\" + this.elementId + \"/timestamp\";\n // var profileKey = \"fetch-story-timestamp\";\n // this.sdkApi\n // .sendApiRequest<{ timestamp: number }>(path, \"GET\", null, null, null, profileKey)\n // .then(response => {\n // var status = response.status;\n // var timestamp = null;\n // if (status === 200) {\n // if (response.data) timestamp = response.data.timestamp;\n // if (timestamp) {\n // this.diff = new Date().getTime() - timestamp * 1000;\n // }\n // }\n //\n // this.initTimer();\n // })\n // .catch( (reason)=> {\n // console.error(reason);\n // this.initTimer();\n // });\n // } else {\n this.initTimer();\n // }\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {}\n\n private pause(): void {\n if (this.timerInited) {\n this.pendingUpdate = false;\n }\n }\n private resume(): void {\n if (this.timerInited) {\n this.pendingUpdate = true;\n this.updateTimer();\n }\n }\n\n private initTimer(): void {\n // find groups\n this.firstGroup1 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-1 .date-output-label-1\"), \"Empty firstGroup1\");\n this.firstGroup2 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-1 .date-output-label-2\"), \"Empty firstGroup2\");\n this.firstGroupCaption = getValueOrException(\n this.element.querySelector<HTMLElement>(\".date-item-view-group-1 .date-item-caption\"),\n \"Empty firstGroupCaption\"\n );\n\n this.secondGroup1 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-2 .date-output-label-1\"), \"Empty secondGroup1\");\n this.secondGroup2 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-2 .date-output-label-2\"), \"Empty secondGroup2\");\n this.secondGroupCaption = getValueOrException(\n this.element.querySelector<HTMLElement>(\".date-item-view-group-2 .date-item-caption\"),\n \"Empty secondGroupCaption\"\n );\n\n this.thirdGroup1 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-3 .date-output-label-1\"), \"Empty thirdGroup1\");\n this.thirdGroup2 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-3 .date-output-label-2\"), \"Empty thirdGroup2\");\n this.thirdGroupCaption = getValueOrException(\n this.element.querySelector<HTMLElement>(\".date-item-view-group-3 .date-item-caption\"),\n \"Empty thirdGroupCaption\"\n );\n\n this.timestampSeconds *= 1000;\n\n this.timerInited = true;\n\n var value = this.timestampSeconds - (new Date().getTime() - this.diff);\n if (value > 0) {\n this._showLayout(this.layers, 0);\n }\n\n this.updateTimer();\n }\n\n private updateTimer(): void {\n var value = this.timestampSeconds - (new Date().getTime() - this.diff);\n if (value > 0) {\n var result = this._asDuration(Math.round(value / 1000));\n\n if (result.days) {\n this.firstGroupCaption.textContent = this.messages.days;\n this.firstGroup1.textContent = result.day1;\n this.firstGroup2.textContent = result.day2;\n\n this.secondGroupCaption.textContent = this.messages.hours;\n this.secondGroup1.textContent = result.hour1;\n this.secondGroup2.textContent = result.hour2;\n\n this.thirdGroupCaption.textContent = this.messages.minutes;\n this.thirdGroup1.textContent = result.minute1;\n this.thirdGroup2.textContent = result.minute2;\n } else {\n this.firstGroupCaption.textContent = this.messages.hours;\n this.firstGroup1.textContent = result.hour1;\n this.firstGroup2.textContent = result.hour2;\n\n this.secondGroupCaption.textContent = this.messages.minutes;\n this.secondGroup1.textContent = result.minute1;\n this.secondGroup2.textContent = result.minute2;\n\n this.thirdGroupCaption.textContent = this.messages.seconds;\n this.thirdGroup1.textContent = result.second1;\n this.thirdGroup2.textContent = result.second2;\n }\n\n // this.pendingUpdate = true;\n } else {\n this.pendingUpdate = false;\n this._showLayout(this.layers, 1);\n }\n\n if (this.pendingUpdate) {\n this.env.requestAnimationFrame(() => this.updateTimer());\n }\n }\n\n private _asDuration(value: number | undefined | null) {\n var result = {\n days: false,\n day1: \"0\",\n day2: \"0\",\n hour1: \"0\",\n hour2: \"0\",\n minute1: \"0\",\n minute2: \"0\",\n second1: \"0\",\n second2: \"0\",\n };\n\n if (value === undefined || value === null) {\n return result;\n }\n if (value < 0) {\n return result;\n }\n value = Math.floor(value);\n var days = Math.floor((value / 86400) % 365);\n var hours = Math.floor((value / 3600) % 24);\n var minutes = Math.floor((value / 60) % 60);\n var seconds = value % 60;\n\n var pair;\n if (days > 0) {\n result.days = true;\n if (days < 10) result.day2 = String(days);\n else {\n pair = String(days).split(\"\");\n result.day1 = pair[0];\n result.day2 = pair[1];\n }\n }\n\n if (hours < 10) result.hour2 = String(hours);\n else {\n pair = String(hours).split(\"\");\n result.hour1 = pair[0];\n result.hour2 = pair[1];\n }\n\n if (minutes < 10) result.minute2 = String(minutes);\n else {\n pair = String(minutes).split(\"\");\n result.minute1 = pair[0];\n result.minute2 = pair[1];\n }\n\n if (seconds < 10) result.second2 = String(seconds);\n else {\n pair = String(seconds).split(\"\");\n result.second1 = pair[0];\n result.second2 = pair[1];\n }\n return result;\n }\n\n public static api = {\n refreshUserData: WidgetDateCountdown.refreshUserData,\n initWidget: function (nodeList: NodeListOf<HTMLElement>, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n WidgetDateCountdown.initWidgets<WidgetDateCountdown, WidgetDateCountdownOptions>(\n (element, options) => new WidgetDateCountdown(element, { ...options, layers }),\n slice.call(nodeList),\n localData\n );\n },\n\n pause: function (nodeList: NodeListOf<HTMLElement>): void {\n forEach(slice.call(nodeList), function (el, index) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(el)?.pause();\n });\n },\n resume: function (nodeList: NodeListOf<HTMLElement>): void {\n forEach(slice.call(nodeList), function (el, index) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(el)?.resume();\n });\n },\n };\n}\n","import { WidgetBase } from \"../base\";\nimport { forEach, getTagData, getTagDataAsNumber, isNumeric, isObject } from \"@utils\";\n\nconst displaySlide = function (slides: Array<HTMLElement>, localData: Record<string, any>) {\n const multiSlideItem = slides[0];\n\n let storyId: number | undefined = undefined;\n let slideIndex: number | undefined = undefined;\n\n if (multiSlideItem != null) {\n storyId = getTagDataAsNumber(multiSlideItem, \"id\");\n slideIndex = getTagDataAsNumber(multiSlideItem, \"index\");\n\n if (\n multiSlideItem.querySelectorAll(\n \".narrative-element-share[data-with-layer='1'], .narrative-element-poll-layers, .narrative-element-date-countdown, .narrative-element-game\"\n ).length > 0\n ) {\n // skip if exists share/poll_layers\n return;\n }\n }\n\n // score\n var score = null;\n var selectedIndex: number | undefined = undefined;\n if (localData[\"q_score\"] !== undefined) {\n score = parseInt(localData[\"q_score\"]);\n } else if (localData[\"t_score\"] !== undefined) {\n score = parseInt(localData[\"t_score\"]);\n } else if (localData[\"qg_score\"] !== undefined) {\n score = localData[\"qg_score\"]; // array\n\n var tmpScore = score;\n if (isObject(score)) {\n tmpScore = Object.values(score);\n }\n tmpScore.sort();\n tmpScore.reverse();\n\n if (tmpScore[0] === tmpScore[1]) {\n forEach(slides, function (slide, index) {\n var minScore = getTagData(slide, \"layerMinScore\");\n if (minScore !== undefined) {\n if (minScore === \"uncertain\") {\n selectedIndex = index as number;\n }\n }\n });\n } else {\n var maxCategoryCnt = 0;\n // find quiz category (selectedCategoryIndex) - chosen most often\n var selectedCategoryIndex: number | undefined = undefined;\n forEach(score, function (value, i) {\n var item = parseInt(value as unknown as string);\n if (item > maxCategoryCnt) {\n maxCategoryCnt = item;\n selectedCategoryIndex = parseInt(i as string);\n }\n });\n\n // chose slide with correct result\n forEach(slides, function (slide, index) {\n var minScore = getTagData(slide, \"layerMinScore\");\n if (minScore !== undefined && isNumeric(minScore) && parseInt(minScore) === selectedCategoryIndex) {\n selectedIndex = index as number;\n }\n });\n }\n }\n\n if (score === null) {\n if (slides.length > 0) {\n var slide = slides[0];\n slide.classList.remove(\"hidden\");\n\n WidgetBase.widgetsService.sdkApi.storyAnimation?.start(slide);\n return;\n }\n score = 0;\n }\n\n if (selectedIndex === undefined) {\n var map: Array<[number, number]> = [];\n forEach(slides, function (slide, index) {\n var minScore = getTagData(slide, \"layerMinScore\");\n if (minScore !== undefined) {\n map.push([index as number, parseInt(minScore)]);\n }\n });\n\n map.sort(function (a, b) {\n return a[1] - b[1];\n });\n\n for (var i = map.length - 1; i >= 0; i--) {\n if (score >= map[i][1]) {\n selectedIndex = map[i][0];\n break;\n }\n }\n }\n\n var undefinedResult = true;\n if (selectedIndex !== undefined) {\n forEach(slides, function (slide, index) {\n if (index === selectedIndex) {\n slide.classList.remove(\"hidden\");\n undefinedResult = false;\n WidgetBase.widgetsService.sdkApi.storyAnimation?.start(slide);\n _sendStatEvent(storyId as number, slideIndex as number, selectedIndex);\n }\n });\n }\n\n if (undefinedResult) {\n console.warn(\"undefinedResult layer index\");\n WidgetBase.widgetsService.sdkApi.showLayer(0);\n }\n};\n\nconst _sendStatEvent = function (storyId: number, slideIndex: number, layerIndex: number) {\n try {\n WidgetBase.sendStatisticEventToApp(\"layout-show\", {\n i: storyId,\n si: slideIndex,\n li: layerIndex,\n });\n } catch (error) {\n console.error(error);\n }\n};\n\nexport class WidgetMultiSlide {\n public static api = {\n init: function (slides: Array<HTMLElement>, localData?: Record<string, any>) {\n if (localData != null) {\n displaySlide(slides, localData);\n } else {\n WidgetBase.getLocalData().then(function (localData) {\n displaySlide(slides, localData);\n });\n }\n },\n };\n}\n","import { extend, forEach, getElementBounding, getTagDataAsNumber, getValueOrException, isArray, isNumber, isObject, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetPollOptions, WidgetPollSharedData } from \"./poll.h\";\nimport { Widgets } from \"../base\";\n\nexport class WidgetPoll extends WidgetBase<WidgetPollOptions> {\n static DEFAULTS = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-poll\";\n\n private elementRect: DOMRect;\n private label: HTMLElement | null;\n private percentFillMask: HTMLElement | null;\n private maskedVariants: Array<HTMLElement>;\n private variantsViewGroup: HTMLElement;\n private variants: Array<HTMLElement>;\n private variantsTexts: Array<string>;\n private isInvertedPercentFilledMaskDirection: boolean;\n private getUseResponseOnFirstButton: boolean;\n private getUseResponseOnSecondButton: boolean;\n private showClientTotalResult: boolean;\n private selectedVariant: number | undefined;\n private nativeDialogueWasOpened: boolean = false;\n private answerDuration: number = 0;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetPollOptions>) {\n super(element, options);\n this.elementRect = this.element.getBoundingClientRect();\n\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.percentFillMask = this.element.querySelector<HTMLElement>(\".percent-filled-variants-view-group-mask\");\n this.maskedVariants = slice.call(this.element.querySelectorAll(\".variants-box .variants-view-group.percent-filled-variants-view-group .variant-view\"));\n\n this.variantsViewGroup = getValueOrException(\n this.element.querySelector<HTMLElement>(\".variants-box .variants-view-group:not(.percent-filled-variants-view-group)\"),\n \"Empty variantsViewGroup\"\n );\n this.variants = slice.call(this.variantsViewGroup.querySelectorAll(\".variant-view\"));\n\n this.variantsTexts = [];\n forEach(this.variants, (element, index) => {\n const label = element.querySelector(\".label\");\n if (label) {\n this.variantsTexts.push(label.textContent ?? \"\");\n }\n });\n\n this.isInvertedPercentFilledMaskDirection =\n this.element.classList.contains(\"theme-translucent\") || this.element.classList.contains(\"base-theme-translucent\");\n\n this.getUseResponseOnFirstButton = Boolean(getTagDataAsNumber(this.element, \"getUserResponseOnFirstButton\"));\n this.getUseResponseOnSecondButton = Boolean(getTagDataAsNumber(this.element, \"getUserResponseOnSecondButton\"));\n this.showClientTotalResult = Boolean(getTagDataAsNumber(this.element, \"showClientTotalResult\"));\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n this.selectedVariant = undefined;\n\n if (this.localData) {\n if (this.localData[\"_p_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectVariant(this.localData[\"_p_g_\" + this.elementId + \"_sa\"], true);\n } else {\n this._clearVariantSelection();\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n\n this.nativeDialogueWasOpened = false;\n }\n\n private _statEventPollAnswer(): void {\n this.answerDuration = new Date().getTime() - this.firstOpenTime;\n try {\n if (this.selectedVariant !== undefined) {\n var labelText = this.label?.textContent ?? \"\";\n var variantText = this.variantsTexts[this.selectedVariant] ? this.variantsTexts[this.selectedVariant] : \"\";\n\n this.sendStatisticEventToApp(\n \"w-poll-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wal: variantText,\n d: this.answerDuration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedVariant,\n widget_answer_label: variantText,\n duration_ms: this.answerDuration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _statEventInputSave(responseText: string): void {\n try {\n if (this.selectedVariant !== undefined) {\n var labelText = this.label?.textContent ?? \"\";\n var variantText = this.variantsTexts[this.selectedVariant] ? this.variantsTexts[this.selectedVariant] : \"\";\n\n this.sendStatisticEventToApp(\n \"w-poll-clarification\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wal: variantText,\n wv: responseText,\n d: this.answerDuration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedVariant,\n widget_answer_label: variantText,\n widget_value: responseText,\n duration_ms: this.answerDuration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n _selectVariant(index: number, filled: boolean = false): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedVariant = index;\n\n this.localData[\"_p_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n this.element.classList.add(\"selected-\" + this.selectedVariant);\n if (filled) {\n this.element.classList.add(\"filled\");\n }\n\n if (this.showClientTotalResult) {\n this.element.classList.add(\"with-total-result\");\n this.displayPercents(index, filled);\n }\n\n if (this.disableTimer) {\n this.env.setTimeout(() => {\n // todo poll - если виджет на первом слайде то при повторном заходе автоматически не стартует таймлайн слайда\n // только в web sdk такое\n // если поставить через setTimeout то все ок\n this.showNextSlide();\n });\n }\n }\n\n private _clearVariantSelection(): void {\n forEach(this.variants, function (variant) {\n variant.classList.remove(\"selected\");\n });\n\n this.element.classList.remove(\"done\");\n this.element.classList.remove(\"selected-\" + this.selectedVariant);\n this.element.classList.remove(\"filled\");\n\n this.selectedVariant = undefined;\n\n this.element.classList.remove(\"with-total-result\");\n // this.displayPercents(index, filled);\n }\n\n private selectVariant(variantView: HTMLElement): boolean {\n this.nativeDialogueWasOpened = false;\n\n if (this.selectedVariant !== undefined) {\n return true;\n }\n\n var index = this.variants.indexOf(variantView);\n if (index !== -1) {\n if (this.getUseResponseOnFirstButton && index === 0) {\n if (this.sdkApi.isAndroid) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n this.selectedVariant = index;\n\n if (this.sdkApi.isExistsShowStoryTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n this.nativeDialogueWasOpened = false;\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showStoryTextInput(`${this.id}_first`, data);\n }\n\n this._statEventPollAnswer();\n\n return false;\n } else if (this.getUseResponseOnSecondButton && index === 1) {\n if (this.sdkApi.isAndroid) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n this.selectedVariant = index;\n\n if (this.sdkApi.isExistsShowStoryTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showStoryTextInput(`${this.id}_second`, data);\n }\n\n this._statEventPollAnswer();\n\n return false;\n } else {\n this._selectVariant(index);\n\n this._statEventPollAnswer();\n }\n\n this.completeWidget();\n }\n\n return false;\n }\n\n private _getVariantBoxInPercent(variantIndex: number) {\n var box = {\n sideOffset: 0,\n width: 0,\n };\n\n if (this.variantsViewGroup != null && variantIndex != null && this.variants[0] != null && this.variants[1] != null) {\n var viewGroupWidth = this.variantsViewGroup.clientWidth;\n if (viewGroupWidth > 0) {\n var offset = 0;\n var variantViewMinWidth = 0;\n\n // get min offset for variantView from variants-view-group\n var variantView = this.variants[variantIndex];\n var label = variantView.querySelector(\".label\");\n var percentLabel = variantView.querySelector(\".percent-label\");\n\n if (label != null && percentLabel != null) {\n var variantViewWidth = variantView.clientWidth;\n var labelOffset = (variantViewWidth - label.clientWidth) / 2;\n var percentLabelOffset = (variantViewWidth - percentLabel.clientWidth) / 2;\n offset = Math.min(labelOffset, percentLabelOffset);\n variantViewMinWidth = Math.max(label.clientWidth, percentLabel.clientWidth);\n }\n\n box.sideOffset = (offset / viewGroupWidth) * 100;\n box.width = (variantViewMinWidth / viewGroupWidth) * 100;\n }\n }\n\n return box;\n }\n\n displayPercents(selectedVariantIndex: number, filled: boolean = false): void {\n let pollAllocation: WidgetPollSharedData[string] = [0, 0];\n let pollAllocationTs: number | undefined = undefined;\n const sharedData = this.sdkApi.getWidgetsSharedData<Widgets.Poll>(this.storyId, Widgets.Poll);\n if (sharedData && sharedData[this.elementId] != null && (isObject(sharedData[this.elementId]) || isArray(sharedData[this.elementId]))) {\n pollAllocation = sharedData[this.elementId];\n if (isObject(sharedData[this.elementId])) {\n pollAllocation = slice.call(Object.values(sharedData[this.elementId])) as unknown as WidgetPollSharedData[string];\n }\n pollAllocationTs = sharedData.ts;\n }\n\n // todo debug\n // pollAllocation[0] = 10;\n // pollAllocation[1] = 20;\n\n var pollDoneAt = this.localData[\"_p_g_\" + this.elementId + \"_done_at\"];\n\n if (pollAllocationTs === undefined || pollDoneAt === undefined || pollDoneAt > pollAllocationTs) {\n forEach(this.variants, (element, index) => {\n const key = index as 0 | 1;\n if (pollAllocation[key] === undefined || !isNumber(pollAllocation[key])) {\n pollAllocation[key] = 0;\n }\n if (selectedVariantIndex === key) {\n ++pollAllocation[key];\n }\n });\n }\n\n // calc percents\n var percents: Array<number> = [],\n total = 0;\n forEach(this.variants, (element, index) => {\n const key = index as 0 | 1;\n if (pollAllocation[key] !== undefined) {\n if (!isNumber(pollAllocation[key])) {\n percents[key] = parseInt(String(pollAllocation[key]));\n } else {\n percents[key] = pollAllocation[key];\n }\n\n if (!isNumber(percents[key]) || isNaN(percents[key])) {\n percents[key] = 0;\n }\n } else {\n percents[key] = 0;\n }\n total += percents[key];\n });\n for (var i = 0; i < percents.length; i++) {\n if (total !== 0) {\n percents[i] = Math.round((percents[i] / total) * 100);\n if (percents[i] > 100) {\n percents[i] = 100;\n }\n } else {\n percents[i] = 0;\n }\n }\n\n var percentsTotal = function () {\n var acc = 0;\n for (var i = 0; i < percents.length; i++) {\n acc += percents[i];\n }\n return acc;\n };\n\n var start = new Date().getTime();\n while (percentsTotal() > 100) {\n percents[percents.length - 1]--;\n if (new Date().getTime() - start >= 1000) {\n break;\n }\n }\n\n var variantWithMinPercentsRelativeWidth = 0;\n var variantWithMinPercentsIndex = null;\n forEach(this.variants, (element, index) => {\n const key = index as 0 | 1;\n var percent = percents[key];\n\n var variant = element;\n var maskedVariant = this.maskedVariants[key];\n\n if (this.selectedVariant === key) {\n variant.classList.add(\"selected\");\n if (maskedVariant != null) {\n maskedVariant.classList.add(\"selected\");\n }\n }\n\n var percentLabel = variant.querySelector(\".percent-label\");\n if (percentLabel != null) {\n percentLabel.innerHTML = percent + \"%\";\n }\n var maskedPercentLabel = maskedVariant?.querySelector(\".percent-label\");\n if (maskedPercentLabel != null) {\n maskedPercentLabel.innerHTML = percent + \"%\";\n }\n });\n\n const cb = () => {\n if (\n this.percentFillMask != null &&\n this.variants[0] != null &&\n this.variants[1] != null &&\n this.selectedVariant != null &&\n percents[this.selectedVariant] != null\n ) {\n var selectedVariantPercent = percents[this.selectedVariant];\n var limit = 0;\n var percent = 0;\n\n variantWithMinPercentsIndex = 0;\n if (percents[1] < percents[0]) {\n variantWithMinPercentsIndex = 1;\n }\n\n var boxPercents = this._getVariantBoxInPercent(variantWithMinPercentsIndex);\n variantWithMinPercentsRelativeWidth = boxPercents.width;\n\n var offset = 0;\n if (this.selectedVariant === 0) {\n if (this.isInvertedPercentFilledMaskDirection) {\n if (variantWithMinPercentsIndex === 1) {\n percent = Math.max(variantWithMinPercentsRelativeWidth, 100 - selectedVariantPercent);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, 100 - selectedVariantPercent);\n }\n offset = (50 - percent) / 2;\n\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(0));\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(percent));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n } else {\n if (variantWithMinPercentsIndex === 0) {\n // real variant percent or variantView min width\n percent = Math.max(selectedVariantPercent, variantWithMinPercentsRelativeWidth);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, selectedVariantPercent);\n }\n offset = (50 - percent) / -2;\n\n // decrease alt color from start to firstVariant percents\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(percent));\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(0));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n }\n } else if (this.selectedVariant === 1) {\n if (this.isInvertedPercentFilledMaskDirection) {\n if (variantWithMinPercentsIndex === 0) {\n percent = Math.max(variantWithMinPercentsRelativeWidth, 100 - selectedVariantPercent);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, 100 - selectedVariantPercent);\n }\n offset = (50 - percent) / -2;\n\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(percent));\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(0));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n } else {\n // decrease alt color from end to secondVariant percents\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(0));\n if (variantWithMinPercentsIndex === 1) {\n // real variant percent or variantView min width\n percent = Math.max(selectedVariantPercent, variantWithMinPercentsRelativeWidth);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, selectedVariantPercent);\n }\n offset = (50 - percent) / 2;\n\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(percent));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n }\n }\n }\n };\n\n // if (filled) {\n // cb();\n // } else {\n // wait for percent render done (for calc correct variantView width)\n this.env.requestAnimationFrame(cb);\n // }\n }\n\n public setUserText(text: string, buttonPosition: \"first_button\" | \"second_button\"): void {\n this.slide.classList.remove(\"data-input-editing\");\n this.slide.classList.remove(\"blured\");\n\n if (this.selectedVariant != null) {\n this._selectVariant(this.selectedVariant);\n }\n\n if (!this.disableTimer && this.nativeDialogueWasOpened) {\n this.sdkApi.resumeUI();\n this.nativeDialogueWasOpened = false;\n }\n\n this.localData[\"_p_g_\" + this.elementId + \"_user_response_on_\" + buttonPosition] = text;\n this.completeWidget();\n\n this._statEventInputSave(text);\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_p_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // ответ на вопрос\n this.localData[\"_&ts_p_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_p_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slidePollIsDone(): boolean {\n return this.localData[\"_p_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetPoll.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetPoll.initWidgets<WidgetPoll, WidgetPollOptions>((element, options) => new WidgetPoll(element, options), [element], localData);\n },\n\n /**\n * click\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetPoll.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetPoll.getInstance<WidgetPoll, WidgetPollOptions>(widgetElement);\n if (widget) {\n return widget.selectVariant(element);\n }\n }\n return false;\n },\n\n slidePollIsDone: function (element: HTMLElement) {\n const widget = WidgetPoll.getInstance<WidgetPoll, WidgetPollOptions>(element);\n if (widget) {\n return widget.slidePollIsDone();\n }\n return true;\n },\n setUserData: function (id: string, text: string) {\n // id = widgetId_first || widgetId_second\n let correctWidgetId = id;\n let buttonPosition: \"first_button\" | \"second_button\" | undefined;\n if (id.endsWith(\"_first\")) {\n buttonPosition = \"first_button\";\n correctWidgetId = id.replace(/_first$/, \"\");\n } else if (id.endsWith(\"_second\")) {\n buttonPosition = \"second_button\";\n correctWidgetId = id.replace(/_second$/, \"\");\n }\n\n const widget = WidgetPoll.getInstanceById<WidgetPoll, WidgetPollOptions>(correctWidgetId);\n if (widget && buttonPosition) {\n widget.setUserText(text, buttonPosition);\n }\n },\n };\n}\n","import { forEach, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetPollLayersOptions } from \"./poll_layers.h\";\n\nexport class WidgetPollLayers extends WidgetBase<WidgetPollLayersOptions> {\n static DEFAULTS: WidgetPollLayersOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n layers: [],\n };\n\n public static widgetClassName = \"narrative-element-poll-layers\";\n\n private label: HTMLElement | null;\n private variants: Array<HTMLElement>;\n private variantsTexts: Array<string>;\n private selectedVariant: number | undefined;\n private layers: Array<HTMLElement>;\n\n constructor(element: HTMLElement, options: Partial<WidgetPollLayersOptions>) {\n super(element, options);\n this.layers = this.options.layers;\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view\"));\n\n this.variantsTexts = [];\n forEach(this.variants, (element, index) => {\n const label = element.querySelector(\".label\");\n if (label) {\n this.variantsTexts.push(label.textContent ?? \"\");\n }\n });\n\n this.selectedVariant = undefined;\n\n if (this.slidePollIsDone()) {\n this._selectVariant(this.localData[\"_pl_g_\" + this.elementId + \"_sa\"]);\n } else {\n this._showLayout(this.layers, 0);\n }\n\n this.firstOpenTime = new Date().getTime();\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {}\n\n private _statEventPollVariant(): void {\n try {\n if (this.selectedVariant != null) {\n var labelText = this.label?.textContent ?? \"\";\n var variantText = this.variants[this.selectedVariant]?.textContent ?? \"\";\n var duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-poll-layers-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wal: variantText,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_variant: this.selectedVariant,\n widget_answer_label: variantText,\n duration_ms: duration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectVariant(index: number, userAction: boolean = false): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedVariant = index;\n\n this.localData[\"_pl_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n // main\n var layerIndex = 0;\n if (index === 0) {\n layerIndex = 1;\n } else if (index === 1) {\n layerIndex = 2;\n }\n\n this._showLayout(this.layers, layerIndex, userAction);\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n public selectVariant(variant: HTMLElement): boolean {\n if (this.selectedVariant !== undefined) {\n return true;\n }\n\n var index = this.variants.indexOf(variant);\n if (index !== -1) {\n this._selectVariant(index, true);\n this.completeWidget();\n this._statEventPollVariant();\n }\n return false;\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_pl_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // ответ на вопрос\n this.localData[\"_&ts_pl_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData != null && this.localData[\"_pl_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slidePollIsDone(): boolean {\n return this.localData != null && this.localData[\"_pl_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetPollLayers.refreshUserData,\n // signature variants\n // (widget, layers, undefined) - modern web sdk\n // (widget, undefined, layers) - old web sdk and rn\n // (widget, layers, localData) - native sdk\n initWidget: function (element: HTMLElement, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n if (layers === undefined && localData !== undefined) {\n // @ts-ignore\n layers = localData;\n localData = undefined;\n }\n WidgetPollLayers.initWidgets<WidgetPollLayers, WidgetPollLayersOptions>(\n (element, options) => new WidgetPollLayers(element, { ...options, layers }),\n [element],\n localData\n );\n },\n\n /**\n * click on poll variant\n * @param element\n * @returns {boolean}\n */\n select: function (element: HTMLElement) {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetPollLayers.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetPollLayers.getInstance<WidgetPollLayers, WidgetPollLayersOptions>(widgetElement);\n if (widget) {\n return widget.selectVariant(element);\n }\n }\n return false;\n },\n };\n}\n","import { getTagData, getTagDataAsNumber, getValueOrDefault, getValueOrException, hasClass, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetQuestOptions } from \"./quest.h\";\n\nexport class WidgetQuest extends WidgetBase<WidgetQuestOptions> {\n static DEFAULTS: WidgetQuestOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-quest\";\n\n private selectedAnswer: number | undefined;\n protected label: HTMLElement | null;\n protected variants: Array<HTMLElement>;\n private isWidget: boolean;\n private slideCount: number;\n private nonFinalSlide: boolean;\n private finalSlide: boolean;\n\n constructor(element: HTMLElement, options: Partial<WidgetQuestOptions>) {\n const isWidget = !hasClass(element, \"narrative-slide\");\n const elementIdGetter = (element: HTMLElement) => getValueOrDefault(getTagData(element, \"elementId\"), \"\");\n const slideGetter = (element: HTMLElement) =>\n isWidget ? getValueOrException(element.closest<HTMLElement>(\".narrative-slide\"), \"Empty slide\") : element;\n\n super(element, options, elementIdGetter, slideGetter);\n\n this.isWidget = isWidget;\n this.slideCount = getTagDataAsNumber(this.slide, \"slideCount\") ?? 0;\n this.nonFinalSlide = Boolean(getTagDataAsNumber(this.slide, \"nonFinalSlide\") ?? 0);\n this.finalSlide = !this.isWidget && !this.nonFinalSlide;\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view\"));\n\n this.selectedAnswer = undefined;\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {}\n\n private setStorySessionValue(name: string, value: string): void {\n try {\n var parent = this.element.closest<HTMLElement>(\".stories-item\");\n if (parent) {\n parent.dataset[name] = value;\n } else {\n //@ts-ignore\n this.env[name] = value;\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n private getStorySessionValue(name: string): string | undefined {\n try {\n var parent = this.element.closest<HTMLElement>(\".stories-item\");\n if (parent) {\n return parent.dataset[name];\n } else {\n // @ts-ignore\n return this.env[name];\n }\n } catch (e) {\n console.error(e);\n return undefined;\n }\n }\n\n private init(): boolean {\n if (this.localData) {\n if (this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] !== undefined) {\n // this._selectAnswer(this.localData['_t_g_' + this.elementId + '_sa']);\n // setLocalData(this.localData, false);\n }\n\n if (this.localData[\"_qt_fo_at\"] === undefined) {\n this.localData[\"_qt_fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n\n var lastSlideIdx = this.localData[\"_qt_last_slide_idx\"];\n if (lastSlideIdx !== undefined) {\n lastSlideIdx = parseInt(lastSlideIdx);\n if (\n lastSlideIdx >= 0 &&\n lastSlideIdx < this.slideCount &&\n lastSlideIdx !== this.slideIndex /*&& this.slideIndex === this.firstSlideWithQuestIndex()*/\n ) {\n if (this.getStorySessionValue(\"__storyQuestSlideChanged\") === undefined) {\n // global flag - был сделан переход на нужный слайд, больше не нужно повторять за эту сессию\n this.setStorySessionValue(\"__storyQuestSlideChanged\", \"1\");\n\n if (this.sdkApi.isExistsShowStorySlide) {\n this.sdkApi.showStorySlide(lastSlideIdx);\n return false;\n }\n }\n }\n }\n\n // если этого слайда нет в роутинге (сработал переход по таймеру в app)\n var routes = this._getRoutes();\n if (routes[0].indexOf(this.slideIndex) === -1 && this.finalSlide) {\n if (this.sdkApi.isExistsShowNextStory) {\n this.sdkApi.storyShowNext();\n return false;\n }\n }\n\n // сбор роутинга - все же в selectAnswer\n // + pointer - set in select answer and in simple history back naviation\n\n // Общее поле в сторис - latest slide with viewed quest item\n // только если находимся в диапазоне квеста\n this.localData[\"_qt_last_slide_idx\"] = this.slideIndex;\n // global flag - был сделан переход на нужный слайд, больше не нужно повторять за эту сессию\n this.setStorySessionValue(\"__storyQuestSlideChanged\", \"1\");\n\n // если перешли на слайд (через кнопку - на слайд например) то не будет истории в роутере\n // добавляем сами\n if (this.getLastSlideIndexFromRouteHistory() !== this.slideIndex) {\n this._addNewRouteHistory(this.slideIndex);\n }\n\n this.setLocalData(this.localData, true);\n }\n\n this.firstOpenTime = new Date().getTime();\n\n return true;\n }\n\n private _selectAnswer(index: number, slideIndex: number): void {\n // if (this.answers[index]) {\n // this.answers[index].classList.add('selected');\n // }\n\n this.selectedAnswer = index;\n\n if (this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] === undefined || !Array.isArray(this.localData[\"_qt_g_\" + this.elementId + \"_sa\"])) {\n this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] = [];\n }\n this.localData[\"_qt_g_\" + this.elementId + \"_sa\"].push([index, slideIndex, Math.round(new Date().getTime() / 1000)]);\n // ответ на вопрос\n this.localData[\"_&ts_qt_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.element.classList.add(\"done\");\n\n this._addNewRouteHistory(slideIndex);\n }\n\n public selectAnswer(answer: HTMLElement): boolean {\n // if (this.selectedAnswer !== undefined) {\n // return true;\n // }\n\n var index = this.variants.indexOf(answer);\n if (index !== -1) {\n var slideIndex = getValueOrDefault(getTagDataAsNumber(this.variants[index], \"score\"), 0) - 1;\n\n this._selectAnswer(index, slideIndex);\n this.setLocalData(this.localData, true);\n\n this.env.setTimeout(() => {\n if (slideIndex >= 0 && slideIndex < this.slideCount && this.sdkApi.isExistsShowStorySlide) {\n // global flag - был сделан переход на нужный слайд, больше не нужно повторять за эту сессию\n this.setStorySessionValue(\"__storyQuestSlideChanged\", \"1\");\n this.sdkApi.showStorySlide(slideIndex);\n }\n }, 100);\n }\n\n return true;\n }\n\n public isDone(): boolean {\n return this.localData[\"_qt_done_at\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n public slideQuestIsDone(): boolean {\n return this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n private firstSlideWithQuestIndex(): number {\n return getTagDataAsNumber(this.slide, \"firstSlideWithQuest\") ?? 0;\n }\n\n private lastSlideWithQuestIndex(): number {\n return getTagDataAsNumber(this.slide, \"lastSlideWithQuest\") ?? 0;\n }\n\n private _getRoutes() {\n var routes = this.localData[\"_qt_routes\"];\n if (!Array.isArray(routes)) {\n routes = [[0], 0];\n }\n return routes;\n }\n\n private _addNewRouteHistory(route: number): void {\n var routes = this._getRoutes();\n var _routes = routes[0].slice(0, routes[1] + 1);\n routes[0] = _routes.concat([route]);\n routes[1] = routes[0].length - 1;\n this.localData[\"_qt_routes\"] = routes;\n }\n\n private _routeMvPtrBack() {\n var routes = this._getRoutes();\n var newPtr = routes[1] - 1;\n if (newPtr >= 0 && routes[0][newPtr] !== undefined) {\n routes[1] = newPtr;\n this.localData[\"_qt_routes\"] = routes;\n this.setLocalData(this.localData, true);\n return routes[0][newPtr];\n }\n return false;\n }\n\n private getLastSlideIndexFromRouteHistory() {\n var routes = this._getRoutes();\n return routes[0][routes[1]];\n }\n\n private handleRouteClick(event: { direction: \"backward\" | \"forward\"; slideIndex: number; slideCount: number; click: () => void }): void {\n // event: direction ('backward', 'forward') slideIndex, slideCount\n var directionForward = event.direction === \"forward\";\n var directionBackward = event.direction === \"backward\";\n\n if (this.isWidget) {\n if (directionForward) {\n return;\n } else {\n if (event.slideIndex === 0) {\n // can click back\n event.click();\n } else {\n // by routing - move back\n var moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowStorySlide) {\n this.sdkApi.showStorySlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowStorySlide) {\n // allow move to start - for broken route history\n this.sdkApi.showStorySlide(0);\n }\n }\n return;\n }\n } else {\n // slides without quest form\n // simple slide case\n if (this.nonFinalSlide || event.slideIndex < this.firstSlideWithQuestIndex()) {\n if (directionForward) {\n var nextSlideIndex = event.slideIndex + 1;\n if (nextSlideIndex < this.slideCount) {\n this._addNewRouteHistory(nextSlideIndex);\n this.setLocalData(this.localData, true);\n this.sdkApi.showStorySlide(nextSlideIndex);\n } else {\n if (this.sdkApi.isExistsShowNextStory) {\n this.sdkApi.storyShowNext();\n }\n }\n } else {\n if (event.slideIndex === 0) {\n // move to prev slide\n event.click();\n } else {\n // by routing - move back\n var moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowStorySlide) {\n this.sdkApi.showStorySlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowStorySlide) {\n // allow move to start - for broken route history\n this.sdkApi.showStorySlide(0);\n }\n }\n }\n } else {\n // quest final slide\n if (directionForward) {\n // если клик вперед по финальному слайду из любой ветки - то выходим из сторис\n // var nextSlideIndex = this.lastSlideWithQuestIndex() + 1;\n // if (nextSlideIndex < this.slideCount) {\n // this._addNewRouteHistory(nextSlideIndex);\n // setLocalData(this.localData, true);\n // window._showNarrativeSlide(nextSlideIndex);\n // } else {\n\n if (this.sdkApi.isExistsShowNextStory) {\n this.sdkApi.storyShowNext();\n }\n // }\n } else {\n // by routing - move back\n var moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowStorySlide) {\n this.sdkApi.showStorySlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowStorySlide) {\n // allow move to start - for broken route history\n this.sdkApi.showStorySlide(0);\n }\n }\n }\n }\n }\n\n public static api = {\n refreshUserData: WidgetQuest.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>): Promise<boolean> {\n return new Promise(function (resolve, reject) {\n WidgetQuest.initWidgets<WidgetQuest, WidgetQuestOptions>((element, options) => new WidgetQuest(element, options), [element], localData).then(\n localData => {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n resolve(widget.init());\n } else {\n resolve(true);\n }\n }\n );\n });\n },\n\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetQuest.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n return false;\n },\n\n slideTestIsDone: function (element: HTMLElement): boolean {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n return widget.slideQuestIsDone();\n }\n return true;\n },\n\n handleRouteClick: function (\n element: HTMLElement,\n event: { direction: \"backward\" | \"forward\"; slideIndex: number; slideCount: number; click: () => void }\n ): void {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n widget.handleRouteClick(event);\n }\n },\n };\n}\n","import { extend, forEach, getTagDataAsNumber, getValueOrException, slice } from \"@utils\";\nimport { WidgetQuizOptions } from \"./quiz.h\";\nimport { WidgetBase } from \"../base\";\n\nexport class WidgetQuiz extends WidgetBase<WidgetQuizOptions> {\n static DEFAULTS: WidgetQuizOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-quiz\";\n\n private question: HTMLElement | null;\n private answers: Array<HTMLElement>;\n private questionCount: number;\n private selectedAnswer: number | undefined;\n\n constructor(element: HTMLElement, options: Partial<WidgetQuizOptions>) {\n super(element, options);\n\n this.question = this.element.querySelector<HTMLElement>(\".label-view .label\");\n this.answers = slice.call(this.element.querySelectorAll(\".variants-box .variant-view-group\"));\n this.questionCount = getValueOrException(getTagDataAsNumber(this.slide, \"quizCount\"), \"Empty quizCount\");\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n this.selectedAnswer = undefined;\n\n if (this.localData) {\n if (this.localData[\"_q_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectAnswer(this.localData[\"_q_g_\" + this.elementId + \"_sa\"]);\n this.setLocalData(this.localData, false);\n } else {\n this._clearAnswerSelection();\n }\n\n if (this.localData[\"_q_fo_at\"] === undefined) {\n this.localData[\"_q_fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n }\n\n private _selectAnswer(index: number): void {\n // var hintContainer = null;\n // var hintContainerHeight = null;\n if (this.answers[index]) {\n this.answers[index].classList.add(\"selected\");\n\n // hintContainer = this.answers[index].nextSibling;\n // if (hintContainer && hintContainer.classList.contains('narrative-element-quiz-answer-hint-container')) {\n // hintContainerHeight = hintContainer.getBoundingClientRect().height;\n // hintContainer.style.height = 0;\n // }\n }\n\n this.selectedAnswer = index;\n\n this.localData[\"_q_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = `${this.submitButtonViewHeight}px`;\n }\n });\n\n // if (hintContainer && hintContainerHeight && window.requestAnimationFrame) {\n // requestAnimationFrame(function() {\n // requestAnimationFrame(function() {\n // hintContainer.style.height = hintContainerHeight + 'px';\n // })\n // })\n // }\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n private _clearAnswerSelection(): void {\n forEach(this.answers, function (answer) {\n answer.classList.remove(\"selected\");\n });\n\n this.selectedAnswer = undefined;\n\n this.element.classList.remove(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n }\n });\n }\n\n public selectAnswer(answer: HTMLElement): boolean {\n if (this.selectedAnswer !== undefined) {\n return true;\n }\n\n const selectedAnswerIndex = this.answers.indexOf(answer);\n if (selectedAnswerIndex !== -1) {\n this._selectAnswer(selectedAnswerIndex);\n\n var isCorrect = this.answers[selectedAnswerIndex].classList.contains(\"check\");\n\n this.localData[\"q_score\"] = (this.localData[\"q_score\"] === undefined ? 0 : this.localData[\"q_score\"]) + (isCorrect ? 1 : 0);\n\n var answeredQuestion = 0;\n for (var key in this.localData) {\n if (this.localData.hasOwnProperty(key)) {\n if (/^_q_g_[A-z0-9-_]+_sa$/.test(key)) {\n answeredQuestion++;\n }\n }\n }\n if (this.localData[\"_q_fa_at\"] === undefined) {\n this.localData[\"_q_fa_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n if (answeredQuestion === this.questionCount) {\n this.localData[\"_q_done_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n // ответ на вопрос\n this.localData[\"_&ts_q_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n const self = this;\n setTimeout(function () {\n self.widgetDone?.classList.remove(\"active\");\n setTimeout(function () {\n self.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n try {\n var questionText = this.question ? this.question.textContent ?? \"\" : \"\";\n let answerText = \"\";\n if (this.answers[selectedAnswerIndex]) {\n const answerLabel = this.answers[selectedAnswerIndex].querySelector(\".variant-view .label\");\n if (answerLabel != null && answerLabel.textContent != null) {\n answerText = answerLabel.textContent;\n }\n }\n\n var duration = new Date().getTime() - this.firstOpenTime;\n\n WidgetBase.sendStatisticEventToApp(\n \"w-quiz-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: questionText,\n wa: selectedAnswerIndex,\n wal: answerText,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: questionText,\n widget_answer: selectedAnswerIndex,\n widget_answer_label: answerText,\n duration_ms: duration,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n return false;\n }\n\n public isDone(): boolean {\n return this.localData[\"_q_done_at\"] !== undefined;\n }\n\n public slideQuizIsDone(): boolean {\n return this.localData[\"_q_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetQuiz.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetQuiz.initWidgets<WidgetQuiz, WidgetQuizOptions>((element, options) => new WidgetQuiz(element, options), [element], localData);\n },\n\n /**\n * click on quiz answer\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetQuiz.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetQuiz.getInstance<WidgetQuiz, WidgetQuizOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n return false;\n },\n\n slideQuizIsDone: function (element: HTMLElement) {\n const widget = WidgetQuiz.getInstance<WidgetQuiz, WidgetQuizOptions>(element);\n if (widget) {\n return widget.slideQuizIsDone();\n }\n return true;\n },\n };\n}\n","import { extend, forEach, getTagDataAsNumber, getValueOrDefault, getValueOrException, slice } from \"@utils\";\nimport { WidgetQuizGroupedOptions } from \"./quiz_grouped.h\";\nimport { WidgetBase } from \"../base\";\n\nexport class WidgetQuizGrouped extends WidgetBase<WidgetQuizGroupedOptions> {\n static DEFAULTS = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-quiz-grouped\";\n\n private question: HTMLElement | null;\n private answers: Array<HTMLElement>;\n private questionCount: number;\n private selectedAnswer: number | undefined;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetQuizGroupedOptions>) {\n super(element, options);\n\n this.question = this.element.querySelector<HTMLElement>(\".label-view .label\");\n this.answers = slice.call(this.element.querySelectorAll(\".variants-box .variant-view-group\"));\n this.questionCount = getValueOrException(getTagDataAsNumber(this.slide, \"quizCount\"), \"Empty quizCount\");\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n this.selectedAnswer = undefined;\n\n if (this.localData) {\n if (this.localData[\"_q_gg_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectAnswer(this.localData[\"_q_gg_\" + this.elementId + \"_sa\"]);\n // this._updateScore(this.localData['_q_gg_' + this.elementId + '_sa']);\n this.setLocalData(this.localData, false);\n } else {\n this._clearAnswerSelection();\n }\n\n if (this.localData[\"_qg_fo_at\"] === undefined) {\n this.localData[\"_qg_fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n }\n\n private _selectAnswer(index: number): void {\n if (this.answers[index]) {\n this.answers[index].classList.add(\"selected\");\n }\n\n this.selectedAnswer = index;\n\n this.localData[\"_q_gg_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = this.submitButtonViewHeight + \"px\";\n }\n });\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n private _clearAnswerSelection() {\n forEach(this.answers, function (answer) {\n answer.classList.remove(\"selected\");\n });\n\n this.selectedAnswer = undefined;\n\n this.element.classList.remove(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n }\n });\n }\n\n private _updateScore(index: number) {\n const answerValue = getValueOrDefault(getTagDataAsNumber(this.answers[index], \"value\"), index);\n\n if (this.localData[\"qg_score\"] == null) {\n this.localData[\"qg_score\"] = {};\n }\n\n var sum = 0;\n for (var i = 0; i < this.answers.length; i++) {\n if (this.localData[\"qg_score\"][i] == null) {\n this.localData[\"qg_score\"][i] = 0;\n }\n sum += this.localData[\"qg_score\"][i];\n }\n\n // если еще не ответили на все\n if (sum < this.questionCount) {\n this.localData[\"qg_score\"][answerValue] += 1;\n\n var answeredQuestion = 0;\n for (var key in this.localData) {\n if (this.localData.hasOwnProperty(key)) {\n if (/^_q_gg_[A-z0-9-_]+_sa$/.test(key)) {\n answeredQuestion++;\n }\n }\n }\n if (this.localData[\"_qg_fa_at\"] === undefined) {\n this.localData[\"_qg_fa_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n if (this.localData[\"_qg_done_at\"] === undefined) {\n if (answeredQuestion === this.questionCount) {\n this.localData[\"_qg_done_at\"] = Math.round(new Date().getTime() / 1000);\n }\n }\n\n // ответ на вопрос\n this.localData[\"_&ts_qg_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n }\n }\n\n private selectAnswer(answer: HTMLElement): boolean {\n if (this.selectedAnswer != null) {\n return true;\n }\n\n const selectedAnswerIndex = this.answers.indexOf(answer);\n if (selectedAnswerIndex !== -1) {\n this._selectAnswer(selectedAnswerIndex);\n this._updateScore(selectedAnswerIndex);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n try {\n var questionText = this.question ? this.question.textContent ?? \"\" : \"\";\n var answerText = \"\";\n if (this.answers[selectedAnswerIndex]) {\n var answerLabel = this.answers[selectedAnswerIndex].querySelector(\".variant-view .label\");\n if (answerLabel != null) {\n answerText = answerLabel.textContent ?? \"\";\n }\n }\n var duration = new Date().getTime() - this.firstOpenTime;\n\n WidgetBase.sendStatisticEventToApp(\n \"w-quiz-grouped-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: questionText,\n wa: selectedAnswerIndex,\n wal: answerText,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: questionText,\n widget_answer: selectedAnswerIndex,\n widget_answer_label: answerText,\n duration_ms: duration,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n return false;\n }\n\n public isDone(): boolean {\n return this.localData[\"_qg_done_at\"] !== undefined;\n }\n\n public slideQuizIsDone(): boolean {\n return this.localData[\"_q_gg_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetQuizGrouped.refreshUserData,\n\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetQuizGrouped.initWidgets<WidgetQuizGrouped, WidgetQuizGroupedOptions>(\n (element, options) => new WidgetQuizGrouped(element, options),\n [element],\n localData\n );\n },\n /**\n * click on quiz answer\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetQuizGrouped.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetQuizGrouped.getInstance<WidgetQuizGrouped, WidgetQuizGroupedOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n\n return false;\n },\n\n slideQuizIsDone: function (element: HTMLElement) {\n const widget = WidgetQuizGrouped.getInstance<WidgetQuizGrouped, WidgetQuizGroupedOptions>(element);\n if (widget) {\n return widget.slideQuizIsDone();\n }\n return true;\n },\n };\n}\n","import { extend, getTagData, getValueOrException, isArray, isNumber, isObject, proxy } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetRangeSliderOptions, WidgetRangeSliderSharedData } from \"./range_slider.h\";\nimport { Widgets } from \"../base/base.h\";\n\n// Polyfill Number.isNaN(value)\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN\nNumber.isNaN =\n Number.isNaN ||\n function (value) {\n return typeof value === \"number\" && value !== value;\n };\n\n/**\n * Range feature detection\n * @return {Boolean}\n */\nfunction supportsRange(env: Window) {\n var input = env.document.createElement(\"input\");\n input.setAttribute(\"type\", \"range\");\n return input.type !== \"text\";\n}\n\nconst constants = {\n orientation: {\n horizontal: {\n dimension: \"width\",\n direction: \"left\",\n directionStyle: {\n ltr: \"left\",\n rtl: \"right\",\n },\n coordinate: \"x\",\n },\n vertical: {\n dimension: \"height\",\n direction: \"top\",\n directionStyle: {\n ltr: \"bottom\",\n rtl: \"bottom\",\n },\n coordinate: \"y\",\n },\n },\n} as const;\n\n/**\n * Delays a function for the given number of milliseconds, and then calls\n * it with the arguments supplied.\n */\nfunction delay(env: Window, fn: Function, wait: number): number {\n var args = Array.prototype.slice.call(arguments, 2);\n return env.setTimeout(function () {\n return fn.apply(null, args);\n }, wait);\n}\n\n/**\n * Returns a debounced function that will make sure the given\n * function is not triggered too much.\n *\n * @param {Window} env\n * @param {Function} fn Function to debounce.\n * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the function. (defaults to 100ms)\n * @return {Function}\n */\nfunction debounce(\n env: Window,\n fn: Function & {\n debouncing?: boolean;\n lastReturnVal?: any;\n debounceTimeout?: number;\n },\n debounceDuration: number\n) {\n debounceDuration = debounceDuration || 100;\n return function () {\n if (!fn.debouncing) {\n var args = Array.prototype.slice.apply(arguments);\n fn.lastReturnVal = fn.apply(env, args);\n fn.debouncing = true;\n }\n env.clearTimeout(fn.debounceTimeout);\n fn.debounceTimeout = env.setTimeout(function () {\n fn.debouncing = false;\n }, debounceDuration);\n return fn.lastReturnVal;\n };\n}\n\n/**\n * Check if a `element` is visible in the DOM\n *\n * @param {Element} element\n * @return {Boolean}\n */\nfunction isHidden(element: (HTMLElement & { open?: boolean }) | null) {\n return Boolean(\n element &&\n (element.offsetWidth === 0 ||\n element.offsetHeight === 0 ||\n // Also Consider native `<details>` elements.\n element.open === false)\n );\n}\n\n/**\n * Get hidden parentNodes of an `element`\n *\n * @param {Element} element\n * @return {[type]}\n */\nfunction getHiddenParentNodes(element: HTMLElement) {\n var parents = [],\n node = element.parentNode as HTMLElement;\n\n while (isHidden(node)) {\n parents.push(node);\n node = node.parentNode as HTMLElement;\n }\n return parents;\n}\n\n/**\n * Returns dimensions for an element even if it is not visible in the DOM.\n *\n * @param {Element} element\n * @param {String} key (e.g. offsetWidth …)\n * @return {Number}\n */\nfunction getDimension(element: HTMLElement, key: \"offsetWidth\" | \"offsetHeight\"): number {\n var hiddenParentNodes = getHiddenParentNodes(element),\n hiddenParentNodesLength = hiddenParentNodes.length,\n inlineStyle = [];\n\n // Used for native `<details>` elements\n function toggleOpenProperty(element: HTMLElement & { open?: boolean }) {\n if (typeof element.open !== \"undefined\") {\n element.open = !Boolean(element.open);\n }\n }\n\n // if (hiddenParentNodesLength) {\n // for (var i = 0; i < hiddenParentNodesLength; i++) {\n //\n // // Cache style attribute to restore it later.\n // inlineStyle[i] = hiddenParentNodes[i].style.cssText;\n //\n // // visually hide\n // if (hiddenParentNodes[i].style.setProperty) {\n // hiddenParentNodes[i].style.setProperty('display', 'block', 'important');\n // } else {\n // hiddenParentNodes[i].style.cssText += ';display: block !important';\n // }\n // hiddenParentNodes[i].style.height = '0';\n // hiddenParentNodes[i].style.overflow = 'hidden';\n // hiddenParentNodes[i].style.visibility = 'hidden';\n // toggleOpenProperty(hiddenParentNodes[i]);\n // }\n //\n // // Update dimension\n // dimension = element[key];\n //\n // for (var j = 0; j < hiddenParentNodesLength; j++) {\n //\n // // Restore the style attribute\n // hiddenParentNodes[j].style.cssText = inlineStyle[j];\n // toggleOpenProperty(hiddenParentNodes[j]);\n // }\n // }\n return element[key];\n}\n\n/**\n * Returns the parsed float or the default if it failed.\n *\n * @param {String} str\n * @param {Number} defaultValue\n * @return {Number}\n */\nfunction tryParseFloat(str: string | undefined | null, defaultValue: number): number {\n if (str == null) {\n return defaultValue;\n }\n var value = parseFloat(str);\n return Number.isNaN(value) ? defaultValue : value;\n}\n\n/**\n * Capitalize the first letter of string\n *\n * @param {String} str\n * @return {String}\n */\nfunction ucfirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.substr(1);\n}\n\nfunction insertAfter(elem: HTMLElement, refElem: HTMLElement): HTMLElement | undefined {\n return refElem.parentNode?.insertBefore(elem, refElem.nextSibling);\n}\n\nexport class WidgetRangeSlider extends WidgetBase<WidgetRangeSliderOptions> {\n static DEFAULTS: WidgetRangeSliderOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n\n rangeClass: \"slider-view\",\n activeClass: \"rangeslider--active\",\n horizontalClass: \"rangeslider--horizontal\",\n verticalClass: \"rangeslider--vertical\",\n fillClass: \"slider-fill-view\",\n handleClass: \"slider-handle-view\",\n };\n\n public static widgetClassName = \"narrative-element-range-slider\";\n\n private label: HTMLElement | null;\n private topScale: HTMLElement | null;\n\n private startValue: number;\n private snapPosition: boolean;\n private hasSubmitButton: boolean;\n private elementSlider: HTMLInputElement;\n private elementAverageResult: HTMLElement | null;\n private elementAverageResultTooltip: HTMLElement | null;\n private elementAverageResultTooltipLabelView: HTMLElement | null;\n private orientation: \"horizontal\" | \"vertical\";\n private min: number;\n private max: number;\n private value: number;\n private step: number;\n private toFixed: number;\n private fill: HTMLElement;\n private handle: HTMLElement;\n private range: HTMLElement;\n private DIMENSION: \"width\" | \"height\";\n private DIRECTION: \"left\" | \"top\";\n private DIRECTION_STYLE: \"left\" | \"right\";\n private COORDINATE: \"x\" | \"y\";\n private isClickCapturedBySlider: boolean = false;\n private handleDimension: number;\n private rangeDimension: number;\n private maxHandlePos: number;\n private grabPos: number;\n private position: number;\n private prevSnapValue: number;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetRangeSliderOptions>) {\n super(element, options);\n\n this.hasSubmitButton = Boolean(this.element.querySelector(\".submit-button-view\"));\n this.topScale = this.element.querySelector(\".top-scale-bar-view-group\");\n this.snapPosition = false;\n try {\n this.snapPosition = this.topScale != null && this.topScale.getBoundingClientRect().height > 0;\n } catch (e) {\n console.error(e);\n }\n this.startValue = tryParseFloat(getTagData(this.element, \"startValue\"), 0);\n this.label = this.element.querySelector(\".label-view .label\");\n this.elementSlider = getValueOrException(this.element.querySelector<HTMLInputElement>('input[type=\"range\"]'), \"Empty elementSlider\");\n\n this.elementAverageResult = this.element.querySelector(\".slider-average-result-view\");\n if (this.elementAverageResult != null) {\n this.elementAverageResultTooltip = this.elementAverageResult.querySelector(\".tooltip-view\");\n if (this.elementAverageResultTooltip != null) {\n this.elementAverageResultTooltipLabelView = this.elementAverageResult.querySelector(\".average-result-label-view\");\n }\n }\n\n this.toFixed = (this.step + \"\").replace(\".\", \"\").length - 1;\n this.fill = getValueOrException(this.element.querySelector<HTMLElement>(`.${this.options.fillClass}`), `Empty .${this.options.fillClass}`);\n this.handle = getValueOrException(this.element.querySelector<HTMLElement>(`.${this.options.handleClass}`), `Empty .${this.options.handleClass}`);\n this.range = getValueOrException(this.element.querySelector<HTMLElement>(`.${this.options.rangeClass}`), `Empty .${this.options.rangeClass}`);\n this.range.id = this.id;\n\n // if (this.range.classList.contains(this.options['horizontalClass'])) {\n this.orientation = \"horizontal\";\n // } else if (this.range.classList.contains(this.options['verticalClass'])) {\n // this.orientation = 'vertical';\n // }\n\n this.DIMENSION = constants.orientation[this.orientation].dimension;\n this.DIRECTION = constants.orientation[this.orientation].direction;\n this.DIRECTION_STYLE = constants.orientation[this.orientation].directionStyle[this.layoutDirection];\n this.COORDINATE = constants.orientation[this.orientation].coordinate;\n\n // Store context\n this.handleDown = proxy(this.handleDown, this);\n this.handleMove = proxy(this.handleMove, this);\n this.handleEnd = proxy(this.handleEnd, this);\n\n this.refreshUserData(this.options.localData);\n\n // Attach Events\n // window.addEventListener('resize.' + this.identifier, debounce(function() {\n // // Simulate resizeEnd event.\n // delay(function() {\n // _this.update(false, false);\n // }, 300);\n // }, 20));\n\n this.env.document.addEventListener(\"touchstart\", this.handleDown);\n this.env.document.addEventListener(\"mousedown\", this.handleDown);\n }\n\n public refreshUserData(localData: Record<string, any>) {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n if (this.localData[\"_rs_g_\" + this.elementId + \"_v\"] !== undefined) {\n this.elementSlider.value = String(tryParseFloat(this.localData[\"_rs_g_\" + this.elementId + \"_v\"], 0));\n this.element.classList.add(\"done\");\n this.displayAverageAnswer();\n if (this.disableTimer) {\n this.showNextSlide();\n }\n } else {\n this.elementSlider.value = String(this.startValue);\n this.element.classList.remove(\"done\");\n this.element.classList.remove(\"input-done\");\n }\n\n this.init();\n }\n\n private _statEventInputSave(val: number) {\n try {\n const labelText = this.label?.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-range-slider-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: val,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: val,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n public click(): boolean {\n if (this.isDone()) {\n return true;\n }\n this.completeWidget();\n return false;\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_rs_g_\" + this.elementId + \"_v\"] = tryParseFloat(this.elementSlider.value, 0);\n this.localData[\"_rs_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // answer for question\n this.localData[\"_&ts_rs_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n // hide submit button\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n\n setTimeout(() => {\n // important, displayAverageAnswer need .done at element\n this.element.classList.add(\"done\");\n this.displayAverageAnswer(true);\n }, 200);\n } else {\n // important, displayAverageAnswer need .done at element\n this.element.classList.add(\"done\");\n this.displayAverageAnswer(true);\n }\n });\n\n // if (this.disableTimer) {\n this.showNextSlide();\n // }\n\n this.setLocalData(this.localData, true);\n this._statEventInputSave(this.localData[\"_rs_g_\" + this.elementId + \"_v\"]);\n }\n\n public isDone(): boolean {\n return this.localData[\"_rs_g_\" + this.elementId + \"_v\"] != null;\n }\n\n public getIsClickCapturedBySlider(): boolean {\n return this.isClickCapturedBySlider;\n }\n\n private displayAverageAnswer(withTooltip: boolean = false): void {\n let answerAllocation: WidgetRangeSliderSharedData[string] = {\n total_value: 0,\n total_user: 0,\n };\n let answerAllocationTs: number | undefined = undefined;\n const sharedData = this.sdkApi.getWidgetsSharedData<Widgets.RangeSlider>(this.storyId, Widgets.RangeSlider);\n if (sharedData && sharedData[this.elementId] != null && (isObject(sharedData[this.elementId]) || isArray(sharedData[this.elementId]))) {\n answerAllocation = sharedData[this.elementId];\n answerAllocationTs = sharedData.ts;\n }\n\n const rangeSliderDoneAt = this.localData[\"_rs_g_\" + this.elementId + \"_done_at\"];\n\n if (answerAllocationTs === undefined || rangeSliderDoneAt === undefined || rangeSliderDoneAt > answerAllocationTs) {\n answerAllocation[\"total_value\"] += this.localData[\"_rs_g_\" + this.elementId + \"_v\"];\n ++answerAllocation[\"total_user\"];\n }\n\n let averageValue: number | null = null;\n if (\n answerAllocation[\"total_user\"] !== undefined &&\n isNumber(answerAllocation[\"total_user\"]) &&\n answerAllocation[\"total_value\"] !== undefined &&\n isNumber(answerAllocation[\"total_value\"])\n ) {\n averageValue = Math.round((answerAllocation[\"total_value\"] / answerAllocation[\"total_user\"]) * 10) / 10;\n }\n\n if (this.elementAverageResult != null && averageValue !== null) {\n this.update(true, false);\n\n const positionDimension = this.env.document.documentElement.dir === \"rtl\" ? (\"right\" as const) : (\"left\" as const);\n\n const position = this.getPositionFromValue(averageValue) + this.handleDimension / 2;\n\n this.elementAverageResult.style[positionDimension] = position + \"px\";\n // this.elementAverageResult.style.display = 'block';\n if (withTooltip && this.elementAverageResultTooltipLabelView != null && this.element != null) {\n if (!this.elementAverageResultTooltip?.classList.contains(\"visible\")) {\n this.elementAverageResultTooltip?.classList.add(\"visible\");\n setTimeout(() => {\n if (this.elementAverageResultTooltip && this.elementAverageResultTooltip.classList) {\n this.elementAverageResultTooltip.classList.remove(\"visible\");\n }\n }, 3000);\n }\n\n this.env.requestAnimationFrame(() => {\n var elementBox = this.element.getBoundingClientRect();\n var labelViewBox = this.elementAverageResultTooltipLabelView?.getBoundingClientRect();\n var offset = 0;\n\n // console.log({labelViewBox, elementBox})\n\n if (labelViewBox && labelViewBox.width !== 0) {\n if (labelViewBox.right > elementBox.right) {\n // get -x for translateX with offset to left\n offset = elementBox.right - labelViewBox.right;\n } else if (labelViewBox.left < elementBox.left) {\n // get +x for translateX with offset to right\n offset = elementBox.left - labelViewBox.left;\n }\n }\n\n if (offset !== 0) {\n this.elementAverageResultTooltipLabelView?.style.setProperty(\"transform\", \"translateX(\" + offset + \"px)\");\n }\n });\n }\n }\n }\n\n private init(): void {\n if (!this.maxHandlePos) {\n this.env.setTimeout(() => {\n this.update(true, false);\n }, 10);\n } else {\n this.update(true, false);\n }\n }\n\n private update(updateAttributes: boolean, triggerSlide: boolean) {\n updateAttributes = updateAttributes || false;\n\n if (updateAttributes) {\n this.min = tryParseFloat(this.elementSlider.getAttribute(\"min\"), 0);\n this.max = tryParseFloat(this.elementSlider.getAttribute(\"max\"), 100);\n this.value = tryParseFloat(this.elementSlider.value, Math.round(this.min + (this.max - this.min) / 2));\n this.step = tryParseFloat(this.elementSlider.getAttribute(\"step\"), 1);\n }\n\n this.handleDimension = getDimension(this.handle, (\"offset\" + ucfirst(this.DIMENSION)) as \"offsetWidth\" | \"offsetHeight\");\n this.rangeDimension = getDimension(this.range, (\"offset\" + ucfirst(this.DIMENSION)) as \"offsetWidth\" | \"offsetHeight\");\n this.maxHandlePos = this.rangeDimension - this.handleDimension;\n this.grabPos = this.handleDimension / 2;\n this.position = this.getPositionFromValue(this.value);\n\n if (updateAttributes) {\n // Snapping steps\n this.prevSnapValue = this.getValueFromPosition(this.cap(this.position, 0, this.maxHandlePos));\n }\n\n this.setPosition(this.position, triggerSlide);\n }\n\n private handleDown(e: MouseEvent | TouchEvent) {\n if (this.isDone()) {\n return;\n }\n\n let rangeslider: HTMLElement | null = e.target as HTMLElement;\n if (!rangeslider.classList.contains(\"slider-view\")) {\n rangeslider = rangeslider.closest<HTMLElement>(\".slider-view\");\n }\n\n if (!rangeslider) {\n return;\n }\n if (rangeslider.id !== this.id) {\n return;\n }\n e.preventDefault();\n\n this.isClickCapturedBySlider = true;\n\n if (!this.maxHandlePos) {\n this.update(true, false);\n }\n\n document.addEventListener(\"touchmove\", this.handleMove);\n document.addEventListener(\"touchend\", this.handleEnd);\n\n document.addEventListener(\"mousemove\", this.handleMove);\n document.addEventListener(\"mouseup\", this.handleEnd);\n\n // add active class because Firefox is ignoring\n // the handle:active pseudo selector because of `e.preventDefault();`\n this.range.classList.add(this.options.activeClass);\n\n // If we click on the handle don't set the new position\n if ((\" \" + (e.target as HTMLElement).className + \" \").replace(/[\\n\\t]/g, \" \").indexOf(this.options.handleClass) > -1) {\n return;\n }\n\n var pos = this.getRelativePosition(e),\n rangePos = this.range.getBoundingClientRect()[this.DIRECTION],\n handlePos = this.getPositionFromNode(this.handle) - rangePos,\n setPos = this.orientation === \"vertical\" ? this.maxHandlePos - (pos - this.grabPos) : pos - this.grabPos;\n\n this.setPosition(setPos);\n\n if (pos >= handlePos && pos < handlePos + this.handleDimension) {\n this.grabPos = pos - handlePos;\n }\n }\n\n private handleMove(e: MouseEvent | TouchEvent) {\n e.preventDefault();\n var pos = this.getRelativePosition(e);\n var setPos = this.orientation === \"vertical\" ? this.maxHandlePos - (pos - this.grabPos) : pos - this.grabPos;\n\n this.setPosition(setPos);\n }\n\n private handleEnd(e: MouseEvent | TouchEvent): void {\n this.env.requestAnimationFrame(() => {\n this.isClickCapturedBySlider = false;\n });\n\n // e.preventDefault();\n document.removeEventListener(\"touchmove\", this.handleMove);\n document.removeEventListener(\"touchend\", this.handleEnd);\n\n document.removeEventListener(\"mousemove\", this.handleMove);\n document.removeEventListener(\"mouseup\", this.handleEnd);\n\n this.range.classList.remove(this.options.activeClass);\n\n this.element.classList.add(\"input-done\");\n\n if (!this.hasSubmitButton) {\n this.completeWidget();\n } else {\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = this.submitButtonViewHeight + \"px\";\n }\n });\n }\n\n // Ok we're done fire the change event\n // this.$element.trigger('change', {origin: this.identifier});\n }\n\n private cap = function (pos: number, min: number, max: number) {\n if (pos < min) {\n return min;\n }\n if (pos > max) {\n return max;\n }\n return pos;\n };\n\n private setPosition(pos: number, triggerSlide?: boolean) {\n var value, newPos;\n\n if (triggerSlide === undefined) {\n triggerSlide = true;\n }\n\n // Snapping steps\n value = this.getValueFromPosition(this.cap(pos, 0, this.maxHandlePos));\n newPos = this.getPositionFromValue(value);\n\n // Update ui\n var uiPos = newPos;\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n uiPos = this.maxHandlePos - uiPos;\n }\n\n // this.rangeDimension - slider width\n this.fill.style.transform = \"translateX(\" + (uiPos + this.grabPos - this.rangeDimension) + \"px)\";\n // this.fill.style[this.DIMENSION] = (uiPos + this.grabPos) + 'px';\n var percentage = this.getPercentageFromValue(value);\n\n // 1 + (scale - 1) * percentage\n this.handle.style.transform = \"translateY(-50%) translateX(\" + uiPos + \"px) scale(calc(1 + (var(--scale-factor, 1) - 1) * \" + percentage + \"))\";\n // this.handle.style[this.DIRECTION_STYLE] = uiPos + 'px';\n\n this.setValue(value);\n\n // Update globals\n this.position = newPos;\n this.value = value;\n\n if (this.snapPosition) {\n const stepItem = String(Math.round(this.value / this.step));\n this.fill.setAttribute(\"data-step-item\", stepItem);\n\n if (this.value !== this.prevSnapValue) {\n this.prevSnapValue = this.value;\n\n try {\n this.sdkApi.vibrate(20);\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n\n // Returns element position relative to the parent\n private getPositionFromNode(node: HTMLElement | null) {\n var i = 0;\n while (node !== null) {\n i += node.offsetLeft;\n node = node.offsetParent as HTMLElement;\n }\n return i;\n }\n\n private getRelativePosition(e: MouseEvent | TouchEvent): number {\n // Get the offset DIRECTION relative to the viewport\n const ucCoordinate = ucfirst(this.COORDINATE) as \"X\" | \"Y\";\n const ucCoordinateClient = `client${ucCoordinate}` as \"clientX\" | \"clientY\";\n const rangePos = this.range.getBoundingClientRect()[this.DIRECTION];\n let pageCoordinate = 0;\n\n if (typeof (e as MouseEvent)[ucCoordinateClient] !== \"undefined\") {\n pageCoordinate = (e as MouseEvent)[ucCoordinateClient];\n } else if ((e as TouchEvent).touches && (e as TouchEvent).touches[0] && typeof (e as TouchEvent).touches[0][ucCoordinateClient] !== \"undefined\") {\n pageCoordinate = (e as TouchEvent).touches[0][ucCoordinateClient];\n // @ts-ignore\n } else if (e.currentPoint && typeof e.currentPoint[this.COORDINATE] !== \"undefined\") {\n // @ts-ignore\n pageCoordinate = e.currentPoint[this.COORDINATE];\n }\n\n return pageCoordinate - rangePos;\n }\n\n private getPercentageFromValue(value: number): number {\n var percentage;\n percentage = (value - this.min) / (this.max - this.min);\n\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n percentage = 1 - percentage;\n }\n\n return percentage;\n }\n\n private getPositionFromValue(value: number): number {\n var percentage, pos;\n percentage = (value - this.min) / (this.max - this.min);\n\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n percentage = 1 - percentage;\n }\n\n pos = !Number.isNaN(percentage) ? percentage * this.maxHandlePos : 0;\n return pos;\n }\n\n private getValueFromPosition(pos: number): number {\n var percentage, value;\n percentage = pos / (this.maxHandlePos || 1);\n\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n percentage = 1 - percentage;\n }\n\n value = this.step * Math.round((percentage * (this.max - this.min)) / this.step) + this.min;\n return Number(value.toFixed(this.toFixed));\n }\n\n private setValue(value: number): void {\n if (value === this.value && this.elementSlider.value !== \"\") {\n return;\n }\n\n // Set the new value and fire the `input` event\n this.elementSlider.value = String(value);\n // .val(value)\n // .trigger('input', {origin: this.identifier});\n }\n\n private destroy(): void {\n this.env.document.removeEventListener(\"touchstart\", this.handleDown);\n this.env.document.removeEventListener(\"mousedown\", this.handleDown);\n\n // off resize event\n // this.$window.off('.' + this.identifier);\n\n // this.$element\n // .off('.' + this.identifier)\n // .removeAttr('style')\n // .removeData('plugin_' + pluginName);\n }\n\n public static api = {\n refreshUserData: WidgetRangeSlider.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetRangeSlider.initWidgets<WidgetRangeSlider, WidgetRangeSliderOptions>(\n (element, options) => new WidgetRangeSlider(element, options),\n [element],\n localData\n );\n },\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetRangeSlider.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetRangeSlider.getInstance<WidgetRangeSlider, WidgetRangeSliderOptions>(widgetElement);\n if (widget) {\n return widget.click();\n }\n }\n return true;\n },\n isClickCapturedBySlider: function (element: HTMLElement) {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetRangeSlider.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetRangeSlider.getInstance<WidgetRangeSlider, WidgetRangeSliderOptions>(widgetElement);\n if (widget) {\n return widget.getIsClickCapturedBySlider();\n }\n }\n return false;\n },\n };\n}\n","import { extend, forEach, getElementBounding, getTagData, getTagDataAsNumber, getValueOrDefault, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetRateOptions } from \"./rate.h\";\n\nexport class WidgetRate extends WidgetBase<WidgetRateOptions> {\n static DEFAULTS: WidgetRateOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-rate\";\n\n private elementRect: DOMRect;\n private label: HTMLElement | null;\n private nativeDialogueWasOpened: boolean = false;\n private stars: Array<HTMLElement>;\n private submitToStores: boolean;\n private submitToStoresMin: number;\n private submitToStoresMax: number;\n private showDialogOnLowRate: boolean;\n private showDialogueMin: number;\n private showDialogueMax: number;\n private selectedStar: number | undefined;\n private answerSelectDuration: number;\n\n constructor(element: HTMLElement, options: Partial<WidgetRateOptions>) {\n super(element, options);\n\n this.elementRect = this.element.getBoundingClientRect();\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.stars = slice.call(this.element.querySelectorAll<HTMLElement>(\".input-view\"));\n\n this.submitToStores = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"submitToStores\"), 0));\n this.submitToStoresMin = getValueOrDefault(getTagDataAsNumber(this.element, \"submitToStoresMin\"), 4);\n this.submitToStoresMax = getValueOrDefault(getTagDataAsNumber(this.element, \"submitToStoresMax\"), 5);\n this.showDialogOnLowRate = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"showDialogOnLowRate\"), 0));\n this.showDialogueMin = getValueOrDefault(getTagDataAsNumber(this.element, \"showDialogueMin\"), 1);\n this.showDialogueMax = getValueOrDefault(getTagDataAsNumber(this.element, \"showDialogueMax\"), 3);\n\n this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {\n this.savedData = this.sdkApi.getStoryServerData(this.storyId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n\n this.selectedStar = undefined;\n\n if (this.localData) {\n if (this.localData[\"_r_g_\" + this.elementId + \"_ss\"] !== undefined) {\n this._selectStar(this.localData[\"_r_g_\" + this.elementId + \"_ss\"], true);\n } else {\n this._clearSelectedStar();\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n this.answerSelectDuration = 0;\n\n this.nativeDialogueWasOpened = false;\n }\n\n private _statEventRateUsAnswer(answerText: string): void {\n try {\n var labelText = this.label?.textContent ?? \"\";\n\n if (this.selectedStar != null) {\n var selectedAnswer = this.selectedStar + 1;\n\n this.sendStatisticEventToApp(\n \"w-rate-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: selectedAnswer,\n wv: answerText,\n d: this.answerSelectDuration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: selectedAnswer,\n widget_value: answerText,\n duration_ms: this.answerSelectDuration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectStar(value: number, runTimer: boolean): void {\n var list = [];\n var i;\n for (i = 0; i < this.stars.length; i++) {\n list[i] = this.stars[i];\n }\n\n forEach(list, (element, idx) => {\n const key = idx as number;\n if (key <= value) {\n element.classList.add(\"fill\");\n }\n });\n\n if (list[value]) {\n list[value].classList.add(\"selected\");\n }\n\n this.selectedStar = value;\n\n this.localData[\"_r_g_\" + this.elementId + \"_ss\"] = value;\n\n this.element.classList.add(\"done\");\n\n if (this.disableTimer && runTimer) {\n this.showNextSlide();\n }\n }\n\n private _clearSelectedStar(): void {\n forEach(this.stars, function (element) {\n element.classList.remove(\"fill\");\n element.classList.remove(\"selected\");\n });\n this.element.classList.remove(\"done\");\n }\n\n private selectStar(starElement: HTMLElement): boolean {\n if (this.selectedStar !== undefined) {\n return true;\n }\n\n var index = this.stars.indexOf(starElement);\n var length = this.stars.length;\n var value = index;\n // if (this.layoutDirection === 'rtl') {\n // value = length - index + 1;\n // }\n\n this.nativeDialogueWasOpened = false;\n\n if (value !== -1) {\n this.answerSelectDuration = new Date().getTime() - this.firstOpenTime;\n\n // 1-3 stars (default)\n if (value + 1 >= this.showDialogueMin && value + 1 <= this.showDialogueMax) {\n this.selectedStar = value;\n this._selectStar(this.selectedStar, false);\n\n if (this.showDialogOnLowRate) {\n if (this.sdkApi.isAndroid) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n if (this.sdkApi.isExistsShowStoryTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n this.nativeDialogueWasOpened = true;\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showStoryTextInput(this.id, data);\n }\n } else {\n this.completeWidget();\n this._statEventRateUsAnswer(\"\");\n }\n\n return false;\n } else if (value + 1 >= this.submitToStoresMin && value + 1 <= this.submitToStoresMax) {\n var target = null;\n\n if (this.sdkApi.isAndroid) {\n target = getTagData(this.element, \"androidLink\");\n } else if (this.sdkApi.isIOS) {\n target = getTagData(this.element, \"appleLink\");\n }\n\n this._selectStar(value, false);\n this.completeWidget();\n this._statEventRateUsAnswer(\"\");\n\n if (this.submitToStores && target) {\n this.sdkApi.openUrl(target);\n }\n } else {\n this._selectStar(value, false);\n this.completeWidget();\n this._statEventRateUsAnswer(\"\");\n }\n }\n return false;\n }\n\n public setUserText(text: string): void {\n this.slide.classList.remove(\"data-input-editing\");\n this.slide.classList.remove(\"blured\");\n\n if (this.selectedStar != null) {\n this._selectStar(this.selectedStar, true);\n }\n\n if (!this.disableTimer && this.nativeDialogueWasOpened) {\n this.sdkApi.resumeUI();\n this.nativeDialogueWasOpened = false;\n }\n\n this.localData[\"_r_g_\" + this.elementId + \"_user_response\"] = text;\n this.completeWidget();\n this._statEventRateUsAnswer(text);\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_r_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // ответ на вопрос\n this.localData[\"_&ts_r_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_r_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slideRateIsDone(): boolean {\n return this.localData[\"_r_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetRate.refreshUserData,\n initWidget: function (nodeList: NodeListOf<HTMLElement>, localData?: Record<string, any>) {\n WidgetRate.initWidgets<WidgetRate, WidgetRateOptions>((element, options) => new WidgetRate(element, options), slice.call(nodeList), localData);\n },\n\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetRate.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetRate.getInstance<WidgetRate, WidgetRateOptions>(widgetElement);\n if (widget) {\n return widget.selectStar(element);\n }\n }\n return false;\n },\n\n slidePollIsDone: function (element: HTMLElement) {\n const widget = WidgetRate.getInstance<WidgetRate, WidgetRateOptions>(element);\n if (widget) {\n return widget.slideRateIsDone();\n }\n return true;\n },\n\n setUserData: function (id: string, text: string): void {\n WidgetRate.getInstanceById<WidgetRate, WidgetRateOptions>(id)?.setUserText(text);\n },\n };\n}\n","import { getTagData, getTagDataAsNumber, getValueOrDefault, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetShareOptions } from \"./share.h\";\n\nexport class WidgetShare extends WidgetBase<WidgetShareOptions> {\n static DEFAULTS: WidgetShareOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n layers: [],\n };\n\n public static widgetClassName = \"narrative-element-share\";\n\n private layers: Array<HTMLElement>;\n private shareType: string | undefined;\n private shareTarget: string | undefined;\n private withLayer: boolean;\n private btnDisabled: boolean;\n\n constructor(element: HTMLElement, options: Partial<WidgetShareOptions>) {\n super(element, options);\n this.shareType = getTagData(this.element, \"shareType\");\n this.shareTarget = getTagData(this.element, \"shareTarget\");\n this.layers = this.options.layers;\n this.withLayer = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"withLayer\"), 0));\n\n if (this.withLayer) {\n if (this.isDone()) {\n this._showLayout(this.layers, 1);\n } else {\n this._showLayout(this.layers, 0);\n }\n }\n\n this.btnDisabled = false;\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>): void {}\n\n private _statEventShare(result: boolean, via: string | null): void {\n try {\n var buttonText = this.element.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-share\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: buttonText,\n wt: this.shareTarget ?? \"\",\n wa: result ? 1 : 0,\n wal: via ?? \"\",\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: buttonText,\n widget_value: this.shareTarget ?? \"\",\n widget_answer: result ? 1 : 0,\n widget_answer_label: via ?? \"\",\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private share(): void {\n if (!this.btnDisabled) {\n if (this.sdkApi.isExistsShare) {\n if (this.sdkApi.sdkCanSendShareComplete) {\n this.btnDisabled = true;\n }\n if (this.shareType === \"url\" || this.shareType === \"story\") {\n this.sdkApi.share(this.id, {\n url: this.shareTarget, // sdk old versions\n text: this.shareTarget,\n title: null,\n files: null,\n });\n } else if (this.shareType === \"slide\") {\n this.sdkApi.shareSlideScreenshot(this.id, \"[data-element-id='\" + this.elementId + \"']\");\n }\n }\n }\n }\n\n public _complete(isSuccess: boolean): void {\n if (!this.localData[\"_s_\" + this.elementId + \"_ts\"] && isSuccess) {\n this.localData[\"_s_\" + this.elementId + \"_ts\"] = Math.round(new Date().getTime() / 1000);\n // `answer_at` time\n this.localData[\"_&ts_s_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n this._statEventShare(isSuccess, null);\n\n if (isSuccess && this.withLayer) {\n this._showLayout(this.layers, 1, true);\n }\n\n this.btnDisabled = false;\n }\n\n public isDone(): boolean {\n return Boolean(this.localData[\"_s_\" + this.elementId + \"_ts\"]);\n }\n\n public static api = {\n refreshUserData: WidgetShare.refreshUserData,\n // signature variants\n // (widget, layers, undefined) - modern web sdk\n // (widget, undefined, layers) - old web sdk and rn\n // (widget, layers, localData) - native sdk\n initWidget: function (nodeList: NodeListOf<HTMLElement>, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n if (layers === undefined && localData !== undefined) {\n // @ts-ignore\n layers = localData;\n localData = undefined;\n }\n WidgetShare.initWidgets<WidgetShare, WidgetShareOptions>(\n (element, options) => new WidgetShare(element, { ...options, layers }),\n slice.call(nodeList),\n localData\n );\n },\n\n click: function (element: HTMLElement): void {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetShare.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetShare.getInstance<WidgetShare, WidgetShareOptions>(widgetElement);\n if (widget) {\n widget.share();\n }\n }\n },\n complete: function (id: string, isSuccess: boolean): void {\n WidgetShare.getInstanceById<WidgetShare, WidgetShareOptions>(id)?._complete(isSuccess);\n },\n };\n}\n","import { extend, forEach, getTagDataAsNumber, getValueOrDefault, getValueOrException, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetTestOptions } from \"./test.h\";\n\nexport class WidgetTest extends WidgetBase<WidgetTestOptions> {\n static DEFAULTS: WidgetTestOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-test\";\n\n private label: HTMLElement | null;\n private variants: Array<HTMLElement>;\n private testCount: number;\n private selectedAnswer: number | undefined;\n private withTimeToAnswer: boolean;\n private answerTimeout: number;\n private tick: () => void;\n private cancelTick: () => void;\n private animationFrameId: number | null;\n private startTimerAt: number;\n private timeLeft: number;\n private timeLeftDefault: number;\n private timeline: HTMLElement | null;\n\n constructor(element: HTMLElement, options: Partial<WidgetTestOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view\"));\n this.testCount = getValueOrException(getTagDataAsNumber(this.slide, \"testCount\"), \"Empty testCount\");\n\n this.withTimeToAnswer = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"withTimeToAnswer\"), 0));\n this.answerTimeout = getValueOrDefault(getTagDataAsNumber(this.element, \"answerTimeout\"), 0);\n\n this.selectedAnswer = undefined;\n\n if (this.localData) {\n if (this.localData[\"_t_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectAnswer(this.localData[\"_t_g_\" + this.elementId + \"_sa\"]);\n this.setLocalData(this.localData, false);\n }\n\n if (this.localData[\"_t_fo_at\"] === undefined) {\n this.localData[\"_t_fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n\n this.tick = () => {\n this.animationFrameId = this.env.requestAnimationFrame(() => {\n this.tick();\n });\n\n // update timer\n // update timeline position\n if (this.startTimerAt) {\n // if (this.state.timeLeft - this.timeLeft >= 950) {\n // this.setState({timeLeft: this.timeLeft});\n // }\n\n var timeNow = new Date().getTime();\n this.timeLeft -= timeNow - this.startTimerAt;\n this.startTimerAt = timeNow;\n\n if (this.timeLeft <= 0) {\n this.timeLeft = 0;\n this.cancelTick();\n\n this.doneWithoutAnswer();\n }\n\n if (this.timeline) {\n this.timeline.style.transform = \"translateX(\" + String((1 - this.timeLeft / this.timeLeftDefault) * 100) + \"%)\";\n }\n }\n };\n\n this.cancelTick = () => {\n if (this.animationFrameId != null) {\n this.env.cancelAnimationFrame(this.animationFrameId);\n }\n };\n\n if (this.slideTestWithTimer()) {\n this.timeline = this.element.querySelector(\".timeline\");\n if (this.selectedAnswer === undefined) {\n // find timer element\n // start raf\n // pause raf on pauseUI (actually don`t need)\n\n this.timeLeftDefault = (this.answerTimeout ? this.answerTimeout : 0) * 1000;\n this.timeLeft = this.timeLeftDefault;\n\n this.animationFrameId = null;\n this.startTimerAt = new Date().getTime();\n this.tick();\n\n // set answer - unanswered (for close and run again)\n this.localData[\"_t_g_\" + this.elementId + \"_sa\"] = -1;\n this.setLocalData(this.localData, true);\n } else {\n // animate 100%\n if (this.selectedAnswer === -1) {\n if (this.timeline) {\n this.timeline.style.transform = \"translateX(100%)\";\n }\n }\n }\n }\n\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {}\n\n private _statEventVoteAnswer(answerScore: number): void {\n try {\n if (this.selectedAnswer != null) {\n const labelText = this.label?.textContent ?? \"\";\n var answerText = \"\";\n if (this.variants[this.selectedAnswer]) {\n var answerLabel = this.variants[this.selectedAnswer].querySelector(\".label\");\n if (answerLabel != null) {\n answerText = answerLabel.textContent ?? \"\";\n }\n }\n var duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-test-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedAnswer,\n wal: answerText,\n was: answerScore,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedAnswer,\n widget_answer_label: answerText,\n widget_answer_score: answerScore,\n duration_ms: duration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectAnswer(index: number): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedAnswer = index;\n\n this.localData[\"_t_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = this.submitButtonViewHeight + \"px\";\n }\n });\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n public selectAnswer(answer: HTMLElement): boolean {\n if (this.selectedAnswer !== undefined) {\n return true;\n }\n\n var index = this.variants.indexOf(answer);\n if (index !== -1) {\n var answerScore = getValueOrDefault(getTagDataAsNumber(this.variants[index], \"score\"), 0);\n this._completeWidget(index, answerScore);\n }\n\n if (Boolean(this.withTimeToAnswer && this.answerTimeout)) {\n this.cancelTick();\n }\n\n return false;\n }\n\n private doneWithoutAnswer(): void {\n if (this.selectedAnswer !== undefined) {\n return;\n }\n var index = -1,\n answerScore = 0;\n this._completeWidget(index, answerScore);\n }\n\n // complete answer select and save local data + stat event\n private _completeWidget(index: number, answerScore: number): void {\n this._selectAnswer(index);\n\n this.localData[\"t_score\"] = (this.localData[\"t_score\"] === undefined ? 0 : this.localData[\"t_score\"]) + answerScore;\n\n var answeredQuestion = 0;\n for (var key in this.localData) {\n if (this.localData.hasOwnProperty(key)) {\n if (/^_t_g_[A-z0-9-_]+_sa$/.test(key)) {\n answeredQuestion++;\n }\n }\n }\n if (this.localData[\"_t_fa_at\"] === undefined) {\n this.localData[\"_t_fa_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n if (answeredQuestion === this.testCount) {\n this.localData[\"_t_done_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n // answer on question\n this.localData[\"_&ts_t_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.setLocalData(this.localData, true);\n\n this._statEventVoteAnswer(answerScore);\n }\n\n public isDone(): boolean {\n return this.localData[\"_t_done_at\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n public slideTestIsDone(): boolean {\n return this.localData[\"_t_g_\" + this.elementId + \"_sa\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n public slideTestWithTimer(): boolean {\n return Boolean(this.withTimeToAnswer && this.answerTimeout);\n }\n\n public static api = {\n refreshUserData: WidgetTest.refreshUserData,\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetTest.initWidgets<WidgetTest, WidgetTestOptions>((element, options) => new WidgetTest(element, options), [element], localData);\n },\n\n /**\n * click on quiz answer\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetTest.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n return false;\n },\n\n slideTestIsDone: function (element: HTMLElement) {\n const widget = WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(element);\n if (widget) {\n return widget.slideTestIsDone();\n }\n return true;\n },\n\n slideTestWithTimer: function (element: HTMLElement) {\n const widget = WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(element);\n if (widget) {\n return widget.slideTestWithTimer();\n }\n return true;\n },\n };\n}\n","import { WidgetVoteOptions, WidgetVoteSharedData } from \"./vote.h\";\nimport { forEach, getTagData, getTagDataAsNumber, getValueOrDefault, isArray, isNumber, isObject, slice } from \"@utils\";\nimport { WidgetBase, Widgets } from \"../base\";\n\nexport class WidgetVote extends WidgetBase<WidgetVoteOptions> {\n static DEFAULTS: WidgetVoteOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-vote\";\n\n private question: HTMLElement = null!;\n private answers: Array<HTMLElement> = null!;\n private questionCount: number = null!;\n private selectedAnswer: number | undefined = undefined;\n\n private label: HTMLElement | null;\n private variants: Array<HTMLElement>;\n private variantsTexts: Array<string>;\n private selectedVariant: number | undefined;\n private voteAllocation: any;\n private hideClientTotalResult: boolean;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetVoteOptions>) {\n super(element, options);\n\n this.voteAllocation = getTagData(this.slide, \"voteAllocation\");\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view-group\"));\n this.variantsTexts = [];\n forEach(this.variants, (element, index) => {\n const variantView = element.querySelector(\".variant-view .label\");\n if (variantView) {\n this.variantsTexts.push(variantView.textContent ?? \"\");\n }\n });\n\n this.hideClientTotalResult = getValueOrDefault(Boolean(getTagDataAsNumber(this.element, \"hideClientTotalResult\")), false);\n\n this.selectedVariant = undefined;\n\n if (this.localData) {\n if (this.localData[\"_v_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectVariant(this.localData[\"_v_g_\" + this.elementId + \"_sa\"], true);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n // this.refreshUserData(this.options.localData);\n }\n\n public refreshUserData(localData: Record<string, any>) {}\n\n private _statEventVoteVariant(): void {\n try {\n if (this.selectedVariant != null) {\n var labelText = this.label?.textContent ?? \"\";\n var variantText = this.variantsTexts[this.selectedVariant] ? this.variantsTexts[this.selectedVariant] : \"\";\n var duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-vote-answer\",\n {\n i: this.storyId,\n si: this.slideIndex,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wv: variantText,\n d: duration,\n },\n {\n story_id: this.storyId,\n slide_index: this.slideIndex,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedVariant,\n widget_value: variantText,\n duration_ms: duration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectVariant(index: number, filled: boolean = false): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedVariant = index;\n\n this.localData[\"_v_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n if (filled) {\n this.element.classList.add(\"filled\");\n }\n\n if (this.hideClientTotalResult) {\n const cb = () => {\n if (this.variants[index]) {\n this.variants[index].style.setProperty(\"--selected-variant-view-clip-area\", String(0));\n }\n };\n if (filled) {\n cb();\n } else {\n this.env.requestAnimationFrame(cb);\n }\n } else {\n this.displayPercents(index, filled);\n }\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = this.submitButtonViewHeight + \"px\";\n }\n });\n\n if (this.disableTimer) {\n this.showNextSlide();\n }\n }\n\n public selectVariant(variant: HTMLElement): boolean {\n if (this.selectedVariant !== undefined) {\n return true;\n }\n\n var selectedVariantIndex = this.variants.indexOf(variant);\n\n if (selectedVariantIndex !== -1) {\n this._selectVariant(selectedVariantIndex);\n\n this.localData[\"_v_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n\n // ответ на вопрос\n this.localData[\"_&ts_v_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.setLocalData(this.localData, true);\n\n this._statEventVoteVariant();\n }\n\n return false;\n }\n\n private displayPercents(selectedVariantIndex: number, filled: boolean = false): void {\n // voteAllocation[0] - variant total count allocation\n // voteAllocation[1]\n // ...\n // voteAllocation[7]\n let voteAllocation: WidgetVoteSharedData[string] = [];\n let voteAllocationTs: number | undefined = undefined;\n const sharedData = this.sdkApi.getWidgetsSharedData<Widgets.Vote>(this.storyId, Widgets.Vote);\n if (sharedData && sharedData[this.elementId] != null && (isObject(sharedData[this.elementId]) || isArray(sharedData[this.elementId]))) {\n voteAllocation = sharedData[this.elementId];\n if (isObject(sharedData[this.elementId])) {\n voteAllocation = slice.call(Object.values(sharedData[this.elementId])) as unknown as WidgetVoteSharedData[string];\n }\n voteAllocationTs = sharedData.ts;\n }\n\n var voteDoneAt = this.localData[\"_v_g_\" + this.elementId + \"_done_at\"];\n\n if (voteAllocationTs === undefined || voteDoneAt === undefined || voteDoneAt > voteAllocationTs) {\n forEach(this.variants, function (element, index) {\n const key = index as number;\n if (voteAllocation[key] === undefined || !isNumber(voteAllocation[key])) {\n voteAllocation[key] = 0;\n }\n if (selectedVariantIndex === key) {\n ++voteAllocation[key];\n }\n });\n }\n\n // calc percents\n var percents: Array<number> = [],\n total = 0;\n forEach(this.variants, (element, index) => {\n const key = index as number;\n if (voteAllocation[key] !== undefined) {\n percents[key] = isNumber(voteAllocation[key]) ? voteAllocation[key] : parseInt(String(voteAllocation[key]));\n if (!isNumber(percents[key]) || isNaN(percents[key])) {\n percents[key] = 0;\n }\n } else {\n percents[key] = 0;\n }\n total += percents[key];\n });\n for (let i = 0; i < percents.length; ++i) {\n if (total !== 0) {\n percents[i] = Math.round((percents[i] / total) * 100 * 10) / 10;\n if (percents[i] > 100) {\n percents[i] = 100;\n }\n // percents[i] += '%';\n } else {\n // percents[i] = '0%';\n }\n }\n\n var self = this;\n forEach(this.variants, (element, index) => {\n const key = index as number;\n var percentLabels = slice.call(element.querySelectorAll(\".percent-label\"));\n\n forEach(percentLabels, label => {\n if (percents[key] != null) {\n label.textContent = percents[key] + \"%\";\n }\n });\n element.classList.add(\"selected\");\n });\n\n var cb = function () {\n forEach(self.variants, function (element, index) {\n const key = index as number;\n if (percents[key] != null) {\n element.style.setProperty(\"--selected-variant-view-clip-area\", String(100 - percents[key]));\n }\n });\n };\n\n if (filled) {\n cb();\n } else {\n this.env.requestAnimationFrame(cb);\n }\n }\n\n public isDone(): boolean {\n return this.localData[\"_v_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slideVoteIsDone(): boolean {\n return this.localData[\"_v_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n refreshUserData: WidgetVote.refreshUserData,\n // fix for WidgetVote on every layer of multilayers story\n fallbackInitOnMultiSlide: function (element: HTMLElement, localData?: Record<string, any>) {\n if (element.dataset.fallbackInitOnMultiSlide) {\n return;\n }\n var multiSlide = element.closest(\".narrative-multi-slide\");\n if (multiSlide != null) {\n var container = multiSlide.parentElement;\n var widgetElements = container?.querySelectorAll<HTMLElement>(`.${WidgetVote.widgetClassName}`);\n if (widgetElements != null) {\n for (var i = 0; i < widgetElements.length; ++i) {\n var widgetElement = widgetElements[i];\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(widgetElement);\n if (!widget) {\n WidgetVote.initWidgets<WidgetVote, WidgetVoteOptions>(\n (element, options) => new WidgetVote(element, options),\n [widgetElement],\n localData\n );\n }\n }\n }\n }\n\n element.dataset.fallbackInitOnMultiSlide = \"1\";\n },\n\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetVote.initWidgets<WidgetVote, WidgetVoteOptions>((element, options) => new WidgetVote(element, options), [element], localData).then(\n localData => {\n WidgetVote.api.fallbackInitOnMultiSlide(element, localData);\n }\n );\n },\n\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetVote.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(widgetElement);\n if (widget) {\n return widget.selectVariant(element);\n }\n }\n return false;\n },\n\n slideVoteIsDone: function (element: HTMLElement): boolean {\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(element);\n if (widget) {\n return widget.slideVoteIsDone();\n }\n return true;\n },\n };\n}\n","import { SDKInterface } from \"../../sdk_api/es_module_sdk_api.h\";\nimport { animationApi, IAnimation } from \"@animation\";\nimport { WidgetCopy } from \"../../widgets/copy\";\nimport { WidgetDataInput } from \"../../widgets/data_input\";\nimport { WidgetDateCountdown } from \"../../widgets/date_countdown\";\nimport { WidgetMultiSlide } from \"../../widgets/multi_slide\";\nimport { WidgetPoll } from \"../../widgets/poll\";\nimport { WidgetPollLayers } from \"../../widgets/poll_layers\";\nimport { WidgetQuest } from \"../../widgets/quest\";\nimport { WidgetQuiz } from \"../../widgets/quiz\";\nimport { WidgetQuizGrouped } from \"../../widgets/quiz_grouped\";\nimport { WidgetRangeSlider } from \"../../widgets/range_slider\";\nimport { WidgetRate } from \"../../widgets/rate\";\nimport { WidgetShare } from \"../../widgets/share\";\nimport { WidgetTest } from \"../../widgets/test\";\nimport { WidgetVote } from \"../../widgets/vote\";\n\nexport let sdkInterface: SDKInterface;\n\nexport type WidgetCopyApi = typeof WidgetCopy.api;\nexport type WidgetDataInputApi = typeof WidgetDataInput.api;\nexport type WidgetDateCountdownApi = typeof WidgetDateCountdown.api;\nexport type WidgetMultiSlideApi = typeof WidgetMultiSlide.api;\nexport type WidgetPollApi = typeof WidgetPoll.api;\nexport type WidgetPollLayersApi = typeof WidgetPollLayers.api;\nexport type WidgetQuestApi = typeof WidgetQuest.api;\nexport type WidgetQuizApi = typeof WidgetQuiz.api;\nexport type WidgetQuizGroupedApi = typeof WidgetQuizGrouped.api;\nexport type WidgetRangeSliderApi = typeof WidgetRangeSlider.api;\nexport type WidgetRateApi = typeof WidgetRate.api;\nexport type WidgetShareApi = typeof WidgetShare.api;\nexport type WidgetTestApi = typeof WidgetTest.api;\nexport type WidgetVoteApi = typeof WidgetVote.api;\n\nexport type SlideApi = {\n Animation: IAnimation;\n WidgetCopy: WidgetCopyApi;\n WidgetDataInput: WidgetDataInputApi;\n WidgetDateCountdown: WidgetDateCountdownApi;\n WidgetMultiSlide: WidgetMultiSlideApi;\n WidgetPoll: WidgetPollApi;\n WidgetPollLayers: WidgetPollLayersApi;\n WidgetQuest: WidgetQuestApi;\n WidgetQuiz: WidgetQuizApi;\n WidgetQuizGrouped: WidgetQuizGroupedApi;\n WidgetRangeSlider: WidgetRangeSliderApi;\n WidgetRate: WidgetRateApi;\n WidgetShare: WidgetShareApi;\n WidgetTest: WidgetTestApi;\n WidgetVote: WidgetVoteApi;\n};\n\nexport const getSlideApi = (_sdkInterface: SDKInterface): SlideApi => {\n sdkInterface = _sdkInterface;\n\n return {\n Animation: animationApi,\n WidgetCopy: WidgetCopy.api,\n WidgetDataInput: WidgetDataInput.api,\n WidgetDateCountdown: WidgetDateCountdown.api,\n WidgetMultiSlide: WidgetMultiSlide.api,\n WidgetPoll: WidgetPoll.api,\n WidgetPollLayers: WidgetPollLayers.api,\n WidgetQuest: WidgetQuest.api,\n WidgetQuiz: WidgetQuiz.api,\n WidgetQuizGrouped: WidgetQuizGrouped.api,\n WidgetRangeSlider: WidgetRangeSlider.api,\n WidgetRate: WidgetRate.api,\n WidgetShare: WidgetShare.api,\n WidgetTest: WidgetTest.api,\n WidgetVote: WidgetVote.api,\n };\n};\n","import { container } from \"@composition\";\nimport { SDKApi } from \"@skd_api\";\nimport { EsModuleSdkApi } from \"../adapters/es_module_sdk_api\";\nimport { sdkInterface } from \"../../entry_points/es_module/es_module\";\n\ncontainer.registerSingleton<SDKApi>(() => new EsModuleSdkApi(() => sdkInterface));\n"],"names":[],"mappings":"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"}
|