@builder.io/sdk 6.1.1 → 6.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/polyfills/custom-event-polyfill.js","../src/functions/next-tick.function.ts","../src/classes/query-string.class.ts","../src/classes/observable.class.ts","../src/classes/promise.class.ts","../src/functions/server-only-require.function.ts","../src/functions/fetch.function.ts","../src/functions/assign.function.ts","../src/functions/throttle.function.ts","../src/classes/animator.class.ts","../src/classes/cookies.class.ts","../src/functions/omit.function.ts","../src/functions/uuid.ts","../src/url.ts","../node_modules/hash-sum/hash-sum.js","../src/functions/to-error.ts","../src/types/api-version.ts","../src/sdk-version.ts","../src/builder.class.ts","../src/constants/builder.ts"],"sourcesContent":["(function () {\n if (typeof window === 'undefined' || typeof window.CustomEvent === 'function') return false;\n\n function CustomEvent(event, params) {\n params = params || { bubbles: false, cancelable: false, detail: null };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n window.CustomEvent = CustomEvent;\n})();\n","const isSafari =\n typeof window !== 'undefined' &&\n /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent);\n\nconst isClient = typeof window !== 'undefined';\n\n// TODO: queue all of these in a debounceNextTick\nexport function nextTick(fn: () => void) {\n // if (typeof process !== 'undefined' && process.nextTick) {\n // console.log('process.nextTick?');\n // process.nextTick(fn);\n // return;\n // }\n // FIXME: fix the real safari issue of this randomly not working\n if (!isClient || isSafari || typeof MutationObserver === 'undefined') {\n setTimeout(fn);\n return;\n }\n let called = 0;\n const observer = new MutationObserver(() => fn());\n const element = document.createTextNode('');\n observer.observe(element, {\n characterData: true,\n });\n // tslint:disable-next-line\n element.data = String((called = ++called));\n}\n","export type StringMap = Record<string, string>;\n\nconst PROPERTY_NAME_DENY_LIST = Object.freeze(['__proto__', 'prototype', 'constructor']);\n\n// TODO: unit tests\nexport class QueryString {\n static parseDeep(queryString: string) {\n const obj = this.parse(queryString);\n return this.deepen(obj);\n }\n\n static stringifyDeep(obj: any) {\n const map = this.flatten(obj);\n return this.stringify(map);\n }\n\n static parse(queryString: string): StringMap {\n const query: StringMap = {};\n const pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i].split('=');\n // TODO: node support?\n try {\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');\n } catch (error) {\n // Ignore malformed URI components\n }\n }\n return query;\n }\n\n static stringify(map: StringMap) {\n let str = '';\n for (const key in map) {\n if (map.hasOwnProperty(key)) {\n const value = map[key];\n if (str) {\n str += '&';\n }\n str += encodeURIComponent(key) + '=' + encodeURIComponent(value);\n }\n }\n return str;\n }\n\n static deepen(map: StringMap) {\n // FIXME; Should be type Tree = Record<string, string | Tree>\n // requires a typescript upgrade.\n const output: any = {};\n for (const k in map) {\n let t = output;\n const parts = k.split('.');\n const key = parts.pop()!;\n for (const part of parts) {\n assertAllowedPropertyName(part);\n t = t[part] = t[part] || {};\n }\n t[key] = map[k];\n }\n return output;\n }\n\n static flatten(obj: any, _current?: any, _res: any = {}): StringMap {\n for (const key in obj) {\n const value = obj[key];\n const newKey = _current ? _current + '.' + key : key;\n if (value && typeof value === 'object') {\n this.flatten(value, newKey, _res);\n } else {\n _res[newKey] = value;\n }\n }\n\n return _res;\n }\n}\n\nfunction assertAllowedPropertyName(name: string): asserts name {\n if (PROPERTY_NAME_DENY_LIST.indexOf(name) >= 0)\n throw new Error(`Property name \"${name}\" is not allowed`);\n}\n","export type Listener<T> = (value: T) => void;\n\nexport class Subscription<FunctionType = Function> {\n constructor(\n private listeners?: FunctionType[],\n private listener?: FunctionType\n ) {}\n\n unsubscribed = false;\n\n get closed() {\n return this.unsubscribed;\n }\n\n private readonly otherSubscriptions: Subscription[] = [];\n\n add(subscription: Subscription) {\n this.otherSubscriptions.push(subscription);\n }\n\n unsubscribe() {\n if (this.unsubscribed) {\n return;\n }\n if (this.listener && this.listeners) {\n const index = this.listeners.indexOf(this.listener);\n if (index > -1) {\n this.listeners.splice(index, 1);\n }\n }\n this.otherSubscriptions.forEach(sub => sub.unsubscribe());\n this.unsubscribed = true;\n }\n}\n\n// TODO: follow minimal basic spec: https://github.com/tc39/proposal-observable\nexport class BehaviorSubject<T = any, ErrorType = any> {\n constructor(public value: T) {}\n\n private listeners: Listener<T>[] = [];\n private errorListeners: Listener<ErrorType>[] = [];\n\n next(value: T) {\n this.value = value;\n for (const listener of this.listeners) {\n listener(value);\n }\n }\n\n // TODO: implement this as PIPE instead\n map<NewType = any>(fn: (item: T) => NewType) {\n const newSubject = new BehaviorSubject<NewType>(fn(this.value));\n // TODO: on destroy delete these\n this.subscribe(val => {\n newSubject.next(fn(val));\n });\n this.catch(err => {\n newSubject.error(err);\n });\n return newSubject;\n }\n\n catch(errorListener: Listener<ErrorType>) {\n this.errorListeners.push(errorListener);\n return new Subscription(this.errorListeners, errorListener);\n }\n\n error(error: ErrorType) {\n for (const listener of this.errorListeners) {\n listener(error);\n }\n }\n\n subscribe(listener: Listener<T>, errorListener?: Listener<ErrorType>) {\n this.listeners.push(listener);\n if (errorListener) {\n this.errorListeners.push(errorListener);\n }\n return new Subscription(this.listeners, listener);\n }\n\n toPromise() {\n return new Promise<T>((resolve, reject) => {\n const subscription = this.subscribe(\n value => {\n resolve(value);\n subscription.unsubscribe();\n },\n err => {\n reject(err);\n subscription.unsubscribe();\n }\n );\n });\n }\n\n promise() {\n return this.toPromise();\n }\n\n then: Promise<T>['then'] = (...args) => {\n return this.toPromise().then(...args);\n };\n}\n\n// TODO: make different classes\nexport const Observer = BehaviorSubject;\nexport const Observable = BehaviorSubject;\n","import { nextTick } from '../functions/next-tick.function';\n\nconst State = {\n Pending: 'Pending',\n Fulfilled: 'Fulfilled',\n Rejected: 'Rejected',\n};\n\nfunction isFunction(val: any) {\n return val && typeof val === 'function';\n}\n\nfunction isObject(val: any) {\n return val && typeof val === 'object';\n}\n\ninterface Handler<T> {\n onFulfilled: (val: T) => any;\n onRejected: (err: any) => any;\n}\n\nexport class TinyPromise<T = any> {\n private _state = State.Pending;\n private _handlers: Handler<T>[] = [];\n private _value: T | null = null;\n\n constructor(executor: (resolve: (val: T) => any, reject: (err: T) => any) => void) {\n executor(this._resolve.bind(this), this._reject.bind(this));\n }\n\n private _resolve(x: any) {\n if (x instanceof TinyPromise) {\n x.then(this._resolve.bind(this), this._reject.bind(this));\n } else if (isObject(x) || isFunction(x)) {\n let called = false;\n try {\n const thenable = (x as Promise<any>).then;\n if (isFunction(thenable)) {\n thenable.call(\n x,\n (result: any) => {\n if (!called) this._resolve(result);\n called = true;\n return undefined as any;\n },\n (error: any) => {\n if (!called) this._reject(error);\n called = true;\n return undefined as any;\n }\n );\n } else {\n this._fulfill(x);\n }\n } catch (ex) {\n if (!called) {\n this._reject(ex);\n }\n }\n } else {\n this._fulfill(x);\n }\n }\n\n private _fulfill(result: T) {\n this._state = State.Fulfilled;\n this._value = result;\n this._handlers.forEach(handler => this._callHandler(handler));\n }\n\n private _reject(error: any) {\n this._state = State.Rejected;\n this._value = error;\n this._handlers.forEach(handler => this._callHandler(handler));\n }\n\n private _isPending() {\n return this._state === State.Pending;\n }\n\n private _isFulfilled() {\n return this._state === State.Fulfilled;\n }\n\n private _isRejected() {\n return this._state === State.Rejected;\n }\n\n private _addHandler(onFulfilled: (val: T) => any, onRejected: (err: any) => any) {\n this._handlers.push({\n onFulfilled,\n onRejected,\n });\n }\n\n private _callHandler(handler: Handler<T>) {\n if (this._isFulfilled() && isFunction(handler.onFulfilled)) {\n handler.onFulfilled(this._value as T);\n } else if (this._isRejected() && isFunction(handler.onRejected)) {\n handler.onRejected(this._value);\n }\n }\n\n then(onFulfilled: (val: T) => any, onRejected: (err: any) => any) {\n switch (this._state) {\n case State.Pending: {\n return new TinyPromise((resolve, reject) => {\n this._addHandler(\n value => {\n nextTick(() => {\n try {\n if (isFunction(onFulfilled)) {\n resolve(onFulfilled(value));\n } else {\n resolve(value);\n }\n } catch (ex) {\n reject(ex);\n }\n });\n },\n error => {\n nextTick(() => {\n try {\n if (isFunction(onRejected)) {\n resolve(onRejected(error));\n } else {\n reject(error);\n }\n } catch (ex) {\n reject(ex);\n }\n });\n }\n );\n });\n }\n\n case State.Fulfilled: {\n return new TinyPromise((resolve, reject) => {\n nextTick(() => {\n try {\n if (isFunction(onFulfilled)) {\n resolve(onFulfilled(this._value as T));\n } else {\n resolve(this._value as T);\n }\n } catch (ex) {\n reject(ex);\n }\n });\n });\n }\n\n case State.Rejected: {\n return new TinyPromise((resolve, reject) => {\n nextTick(() => {\n try {\n if (isFunction(onRejected)) {\n resolve(onRejected(this._value));\n } else {\n reject(this._value);\n }\n } catch (ex) {\n reject(ex);\n }\n });\n });\n }\n }\n }\n}\n\nexport default (typeof Promise !== 'undefined' ? Promise : TinyPromise) as PromiseConstructor;\n","// Webpack workaround to conditionally require certain external modules\n// only on the server and not bundle them on the client\nlet serverOnlyRequire: NodeRequire;\ntry {\n // tslint:disable-next-line:no-eval\n serverOnlyRequire = eval('require');\n} catch (err) {\n // all good\n serverOnlyRequire = (() => null) as any;\n}\n\nexport default serverOnlyRequire;\n","import Promise from '../classes/promise.class';\nimport serverOnlyRequire from './server-only-require.function';\n\nexport interface SimplifiedFetchOptions {\n body?: string;\n headers?: { [key: string]: string };\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n credentials?: 'include';\n mode?: RequestMode;\n}\n\nexport interface SimpleFetchResponse {\n ok: boolean;\n status: number;\n statusText: string;\n url: string;\n clone: () => any;\n text: () => Promise<string>;\n json: () => Promise<any>;\n blob: () => Promise<Blob>;\n headers: {\n keys: () => string[];\n entries: () => [string, string][];\n get: (n: string) => string;\n has: (n: string) => boolean;\n };\n}\n\nfunction promiseResolve<T>(value: T) {\n return new Promise<T>(resolve => resolve(value));\n}\n\n// Adapted from https://raw.githubusercontent.com/developit/unfetch/master/src/index.mjs\nfunction tinyFetch(url: string, options: SimplifiedFetchOptions = {}) {\n return new Promise<SimpleFetchResponse>((resolve, reject) => {\n const request = new XMLHttpRequest();\n\n request.open(options.method || 'get', url, true);\n\n if (options.headers) {\n for (const i in options.headers) {\n request.setRequestHeader(i, options.headers[i]);\n }\n }\n\n request.withCredentials = options.credentials === 'include';\n\n request.onload = () => {\n resolve(response());\n };\n\n request.onerror = reject;\n\n request.send(options.body);\n\n function response() {\n const keys: string[] = [];\n const all: [string, string][] = [];\n const headers: { [key: string]: string } = {};\n let header: string | undefined = undefined;\n\n request\n .getAllResponseHeaders()\n .replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (_match, _key, value) => {\n let key = _key;\n keys.push((key = key.toLowerCase()));\n all.push([key, value]);\n header = headers[key];\n headers[key] = header ? `${header},${value}` : value;\n return '';\n });\n\n return {\n ok: ((request.status / 100) | 0) === 2, // 200-299\n status: request.status,\n statusText: request.statusText,\n url: request.responseURL,\n clone: response,\n text: () => promiseResolve(request.responseText),\n json: () => promiseResolve(request.responseText).then(JSON.parse),\n blob: () => promiseResolve(new Blob([request.response])),\n headers: {\n keys: () => keys,\n entries: () => all,\n get: (n: string) => headers[n.toLowerCase()],\n has: (n: string) => n.toLowerCase() in headers,\n },\n };\n }\n });\n}\n\nexport function getFetch() {\n // If fetch is defined, in the browser, via polyfill, or in a Cloudflare worker, use it.\n let _fetch: typeof fetch | undefined = undefined;\n if (globalThis.fetch) {\n _fetch ??= globalThis.fetch as any;\n } else if (typeof window === 'undefined') {\n // If fetch is not defined, in a Node.js environment, use node-fetch.\n try {\n // node-fetch@^3 is ESM only, and will throw error on require.\n _fetch ??= serverOnlyRequire('node-fetch');\n } catch (e) {\n // If node-fetch is not installed, use tiny-fetch.\n console.warn(\n 'node-fetch is not installed. consider polyfilling fetch or installing node-fetch.'\n );\n console.warn(e);\n }\n }\n\n // Otherwise, use tiny-fetch.\n return _fetch ?? tinyFetch;\n}\n","export function assign(target: object, ...args: any[]) {\n const to = Object(target);\n\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index];\n\n if (nextSource != null) {\n // Skip over if undefined or null\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\n","export function throttle(func: Function, wait: number, options: any = {}) {\n let context: any;\n let args: any;\n let result: any;\n let timeout = null as any;\n let previous = 0;\n const later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function (this: any) {\n const now = Date.now();\n if (!previous && options.leading === false) previous = now;\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n","import { throttle } from '../functions/throttle.function';\nimport { assign } from '../functions/assign.function';\n\nconst camelCaseToKebabCase = (str?: string) =>\n str ? str.replace(/([A-Z])/g, g => `-${g[0].toLowerCase()}`) : '';\n\nexport interface AnimationStep {\n // First one is always start state\n // isStartState?: boolean;\n styles: { [key: string]: string };\n delay?: number;\n}\n\nexport interface Animation {\n elementId: string;\n trigger: string;\n steps: AnimationStep[];\n duration: number;\n delay?: number;\n easing?: string;\n // TODO: deprecate - only here because of an API bug\n id?: string;\n // only apply in scrollInView\n repeat?: boolean;\n // only apply in scrollInView, number from -1 to 1\n thresholdPercent?: number;\n}\n\nexport class Animator {\n bindAnimations(animations: Animation[]) {\n for (const animation of animations) {\n switch (animation.trigger) {\n case 'pageLoad':\n this.triggerAnimation(animation);\n break;\n case 'hover':\n this.bindHoverAnimation(animation);\n break;\n case 'scrollInView':\n this.bindScrollInViewAnimation(animation);\n break;\n }\n }\n }\n\n private warnElementNotPresent(id: string) {\n console.warn(`Cannot animate element: element with ID ${id} not found!`);\n }\n\n private augmentAnimation(animation: Animation, element: HTMLElement) {\n const stylesUsed = this.getAllStylesUsed(animation);\n const computedStyle: any = getComputedStyle(element);\n // const computedStyle = getComputedStyle(element);\n // // FIXME: this will break if original load is in one reponsive size then resize to another hmmm\n // Need to use transform instead of left since left can change on screen sizes\n const firstStyles = animation.steps[0].styles;\n const lastStyles = animation.steps[animation.steps.length - 1]!.styles;\n const bothStyles = [firstStyles, lastStyles];\n\n // FIXME: this won't work as expected for augmented animations - may need the editor itself to manage this\n for (const styles of bothStyles) {\n for (const style of stylesUsed) {\n if (!(style in styles)) {\n styles[style] = computedStyle[style];\n }\n }\n }\n }\n\n private getAllStylesUsed(animation: Animation) {\n const properties: (keyof CSSStyleDeclaration)[] = [];\n for (const step of animation.steps) {\n for (const key in step.styles) {\n if (properties.indexOf(key as any) === -1) {\n properties.push(key as any);\n }\n }\n }\n return properties;\n }\n\n triggerAnimation(animation: Animation) {\n // TODO: do for ALL elements\n const elements = Array.prototype.slice.call(\n document.getElementsByClassName(animation.elementId || animation.id || '')\n ) as HTMLElement[];\n if (!elements.length) {\n this.warnElementNotPresent(animation.elementId || animation.id || '');\n return;\n }\n\n Array.from(elements).forEach(element => {\n this.augmentAnimation(animation, element);\n // TODO: do this properly, may have other animations of different properties\n\n // TODO: only override the properties\n // TODO: if there is an entrance and hover animation, the transition duration will get effed\n // element.setAttribute('style', '');\n\n // const styledUsed = this.getAllStylesUsed(animation);\n element.style.transition = 'none';\n element.style.transitionDelay = '0';\n assign(element.style, animation.steps[0].styles);\n // TODO: queue/batch these timeouts\n // TODO: only include properties explicitly set in the animation\n // using Object.keys(styles)\n setTimeout(() => {\n element.style.transition = `all ${animation.duration}s ${camelCaseToKebabCase(\n animation.easing\n )}`;\n if (animation.delay) {\n element.style.transitionDelay = animation.delay + 's';\n }\n assign(element.style, animation.steps[1].styles);\n // TODO: maybe remove/reset transitoin property after animation duration\n\n // TODO: queue timers\n setTimeout(\n () => {\n // TODO: what if has other transition (reset back to what it was)\n element.style.transition = '';\n element.style.transitionDelay = '';\n },\n (animation.delay || 0) * 1000 + animation.duration * 1000 + 100\n );\n });\n });\n }\n\n bindHoverAnimation(animation: Animation) {\n // TODO: is it multiple binding when editing...?\n // TODO: unbind on element remove\n // TODO: apply to ALL elements\n const elements = Array.prototype.slice.call(\n document.getElementsByClassName(animation.elementId || animation.id || '')\n ) as HTMLElement[];\n if (!elements.length) {\n this.warnElementNotPresent(animation.elementId || animation.id || '');\n return;\n }\n\n Array.from(elements).forEach(element => {\n this.augmentAnimation(animation, element);\n\n const defaultState = animation.steps[0].styles;\n const hoverState = animation.steps[1].styles;\n function attachDefaultState() {\n assign(element!.style, defaultState);\n }\n function attachHoverState() {\n assign(element!.style, hoverState);\n }\n attachDefaultState();\n element.addEventListener('mouseenter', attachHoverState);\n element.addEventListener('mouseleave', attachDefaultState);\n // TODO: queue/batch these timeouts\n setTimeout(() => {\n element.style.transition = `all ${animation.duration}s ${camelCaseToKebabCase(\n animation.easing\n )}`;\n if (animation.delay) {\n element.style.transitionDelay = animation.delay + 's';\n }\n });\n });\n }\n\n // TODO: unbind on element remove\n bindScrollInViewAnimation(animation: Animation) {\n // TODO: apply to ALL matching elements\n const elements = Array.prototype.slice.call(\n document.getElementsByClassName(animation.elementId || animation.id || '')\n ) as HTMLElement[];\n if (!elements.length) {\n this.warnElementNotPresent(animation.elementId || animation.id || '');\n return;\n }\n\n // TODO: if server side rendered and scrolled into view don't animate...\n Array.from(elements).forEach(element => {\n this.augmentAnimation(animation, element);\n\n let triggered = false;\n let pendingAnimation = false;\n function immediateOnScroll() {\n if (!triggered && isScrolledIntoView(element)) {\n triggered = true;\n pendingAnimation = true;\n setTimeout(() => {\n assign(element!.style, animation.steps[1].styles);\n if (!animation.repeat) {\n document.removeEventListener('scroll', onScroll);\n }\n setTimeout(\n () => {\n pendingAnimation = false;\n if (!animation.repeat) {\n element.style.transition = '';\n element.style.transitionDelay = '';\n }\n },\n (animation.duration + (animation.delay || 0)) * 1000 + 100\n );\n });\n } else if (\n animation.repeat &&\n triggered &&\n !pendingAnimation &&\n !isScrolledIntoView(element)\n ) {\n // we want to repeat the animation every time the the element is out of view and back again\n triggered = false;\n assign(element!.style, animation.steps[0].styles);\n }\n }\n\n // TODO: roll all of these in one for more efficiency of checking all the rects\n const onScroll = throttle(immediateOnScroll, 200, { leading: false });\n\n // TODO: fully in view or partially\n function isScrolledIntoView(elem: HTMLElement) {\n const rect = elem.getBoundingClientRect();\n\n const windowHeight = window.innerHeight;\n\n const thresholdPercent = (animation.thresholdPercent || 0) / 100;\n const threshold = thresholdPercent * windowHeight;\n\n // TODO: partial in view? or what if element is larger than screen itself\n return (\n rect.bottom > threshold && rect.top < windowHeight - threshold // Element is peeking top or bottom\n // (rect.top > 0 && rect.bottom < window.innerHeight) || // element fits within the screen and is fully on screen (not hanging off at all)\n // (rect.top < 0 && rect.bottom > window.innerHeight) // element is larger than the screen and hangs over the top and bottom\n );\n }\n\n const defaultState = animation.steps[0].styles;\n function attachDefaultState() {\n assign(element!.style, defaultState);\n }\n attachDefaultState();\n\n // TODO: queue/batch these timeouts!\n setTimeout(() => {\n element.style.transition = `all ${animation.duration}s ${camelCaseToKebabCase(\n animation.easing\n )}`;\n if (animation.delay) {\n element.style.transitionDelay = animation.delay + 's';\n }\n });\n\n // TODO: one listener for everything\n document.addEventListener('scroll', onScroll, { capture: true, passive: true } as any);\n\n // Do an initial check\n immediateOnScroll();\n });\n }\n}\n","/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\nimport { IncomingMessage, ServerResponse } from 'http';\ninterface Options {\n secure?: boolean;\n expires?: Date;\n}\n\nclass Cookies {\n secure?: boolean;\n\n constructor(\n private request: IncomingMessage,\n private response: ServerResponse\n ) {}\n\n get(name: string) {\n const header = this.request.headers['cookie'] as string;\n if (!header) {\n return;\n }\n\n const match = header.match(getPattern(name));\n if (!match) {\n return;\n }\n\n const value = match[1];\n return value;\n }\n\n set(name: string, value: string, opts: Options) {\n const res = this.response;\n const req = this.request;\n let headers = res.getHeader('Set-Cookie') || [];\n // TODO: just make this always true\n const secure =\n this.secure !== undefined\n ? !!this.secure\n : (req as any).protocol === 'https' || (req.connection as any).encrypted;\n const cookie = new Cookie(name, value, opts);\n\n if (typeof headers === 'string') {\n headers = [headers];\n }\n\n if (!secure && opts && opts.secure) {\n throw new Error('Cannot send secure cookie over unencrypted connection');\n }\n\n cookie.secure = secure;\n if (opts && 'secure' in opts) {\n cookie.secure = !!opts.secure;\n }\n\n pushCookie(headers, cookie);\n\n const setHeader = res.setHeader;\n setHeader.call(res, 'Set-Cookie', headers);\n return this;\n }\n}\n\nclass Cookie {\n path = '/';\n expires?: Date;\n domain: string | undefined = undefined;\n httpOnly = true;\n sameSite?: boolean | string = false;\n secure = false;\n overwrite = false;\n name = '';\n value = '';\n maxAge?: number;\n\n constructor(name: string, value: string, attrs: Options) {\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument value is invalid');\n }\n\n if (!value) {\n this.expires = new Date(0);\n }\n\n this.name = name;\n this.value = value || '';\n\n if (attrs.expires) {\n this.expires = attrs.expires;\n }\n if (attrs.secure) {\n this.secure = attrs.secure;\n }\n }\n\n toString() {\n return `${this.name}=${this.value}`;\n }\n\n toHeader() {\n let header = this.toString();\n\n if (this.maxAge) {\n this.expires = new Date(Date.now() + this.maxAge);\n }\n if (this.path) {\n header += `; path=${this.path}`;\n }\n if (this.expires) {\n header += `; expires=${this.expires.toUTCString()}`;\n }\n if (this.domain) {\n header += `; domain=${this.domain}`;\n }\n\n // TODO: samesite=none by default (?)\n header += `; SameSite=${this.sameSite === true ? 'strict' : 'None'}`;\n\n // TODO: On by default\n if (this.secure) {\n header += '; secure';\n }\n if (this.httpOnly) {\n header += '; httponly';\n }\n\n return header;\n }\n}\n\nfunction getPattern(name: string) {\n return new RegExp(`(?:^|;) *${name.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')}=([^;]*)`);\n}\n\nfunction pushCookie(headers: any, cookie: Cookie) {\n if (cookie.overwrite) {\n for (let i = headers.length - 1; i >= 0; i--) {\n if (headers[i].indexOf(`${cookie.name}=`) === 0) {\n headers.splice(i, 1);\n }\n }\n }\n\n headers.push(cookie.toHeader());\n}\n\nexport default Cookies;\n","export function omit<T extends object>(obj: T, ...values: (keyof T)[]): Partial<T> {\n const newObject = Object.assign({}, obj);\n for (const key of values) {\n delete (newObject as any)[key];\n }\n return newObject;\n}\n","/**\n * @credit https://stackoverflow.com/a/2117523\n */\nexport function uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Slightly cleaner and smaller UUIDs\n */\nexport function uuid() {\n return uuidv4().replace(/-/g, '');\n}\n","import { UrlWithStringQuery } from 'url';\n\ntype Fix<T> = { [P in keyof T]: T[P] | null };\n\n// It seems that the types for UrlWithStringQuery are not correct.\nexport type UrlLike = Fix<UrlWithStringQuery>;\n\nexport function emptyUrl(): UrlLike {\n return {\n query: null,\n port: null,\n auth: null,\n hash: null,\n host: null,\n hostname: null,\n href: null,\n path: null,\n pathname: null,\n protocol: null,\n search: null,\n slashes: null,\n };\n}\n\n// Replacement for `url.parse` using `URL` global object that works with relative paths.\n// Assumptions: this function operates in a NodeJS environment.\nexport function parse(url: string): UrlLike {\n const out: UrlLike = emptyUrl();\n\n let u;\n const pathOnly = url === '' || url[0] === '/';\n\n if (pathOnly) {\n u = new URL(url, 'http://0.0.0.0/');\n out.href = u.href;\n out.href = out.href?.slice(14); // remove 'http://0.0.0.0/'\n } else {\n u = new URL(url);\n out.href = u.href;\n out.port = u.port === '' ? null : u.port;\n out.hash = u.hash === '' ? null : u.hash;\n out.host = u.host;\n out.hostname = u.hostname;\n out.href = u.href;\n out.pathname = u.pathname;\n out.protocol = u.protocol;\n out.slashes = url[u.protocol.length] === '/'; // check if the mimetype is proceeded by a slash\n }\n\n out.search = u.search;\n out.query = u.search.slice(1); // remove '?'\n out.path = `${u.pathname}${u.search}`;\n out.pathname = u.pathname;\n\n return out;\n}\n","'use strict';\n\nfunction pad (hash, len) {\n while (hash.length < len) {\n hash = '0' + hash;\n }\n return hash;\n}\n\nfunction fold (hash, text) {\n var i;\n var chr;\n var len;\n if (text.length === 0) {\n return hash;\n }\n for (i = 0, len = text.length; i < len; i++) {\n chr = text.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0;\n }\n return hash < 0 ? hash * -2 : hash;\n}\n\nfunction foldObject (hash, o, seen) {\n return Object.keys(o).sort().reduce(foldKey, hash);\n function foldKey (hash, key) {\n return foldValue(hash, o[key], key, seen);\n }\n}\n\nfunction foldValue (input, value, key, seen) {\n var hash = fold(fold(fold(input, key), toString(value)), typeof value);\n if (value === null) {\n return fold(hash, 'null');\n }\n if (value === undefined) {\n return fold(hash, 'undefined');\n }\n if (typeof value === 'object' || typeof value === 'function') {\n if (seen.indexOf(value) !== -1) {\n return fold(hash, '[Circular]' + key);\n }\n seen.push(value);\n\n var objHash = foldObject(hash, value, seen)\n\n if (!('valueOf' in value) || typeof value.valueOf !== 'function') {\n return objHash;\n }\n\n try {\n return fold(objHash, String(value.valueOf()))\n } catch (err) {\n return fold(objHash, '[valueOf exception]' + (err.stack || err.message))\n }\n }\n return fold(hash, value.toString());\n}\n\nfunction toString (o) {\n return Object.prototype.toString.call(o);\n}\n\nfunction sum (o) {\n return pad(foldValue(0, o, '', []).toString(16), 8);\n}\n\nmodule.exports = sum;\n","/**\n * Safe conversion to error type. Intended to be used in catch blocks where the\n * value is not guaranteed to be an error.\n *\n * @example\n * try {\n * throw new Error('Something went wrong')\n * }\n * catch (err: unknown) {\n * const error: Error = toError(err)\n * }\n */\nexport function toError(err: unknown): Error {\n if (err instanceof Error) return err;\n return new Error(String(err));\n}\n","export type ApiVersion = 'v1' | 'v3';\nexport const DEFAULT_API_VERSION: ApiVersion = 'v3';\n","export const SDK_VERSION = '6.1.1';\n","import './polyfills/custom-event-polyfill';\nimport { IncomingMessage, ServerResponse } from 'http';\nimport { nextTick } from './functions/next-tick.function';\nimport { QueryString } from './classes/query-string.class';\nimport { BehaviorSubject } from './classes/observable.class';\nimport { getFetch, SimplifiedFetchOptions } from './functions/fetch.function';\nimport { assign } from './functions/assign.function';\nimport { throttle } from './functions/throttle.function';\nimport { Animator } from './classes/animator.class';\nimport { BuilderElement } from './types/element';\nimport Cookies from './classes/cookies.class';\nimport { omit } from './functions/omit.function';\nimport { BuilderContent } from './types/content';\nimport { uuid } from './functions/uuid';\nimport { parse as urlParse } from './url';\n\n// Do not change this to a require! It throws runtime errors - rollup\n// will preserve the `require` and throw runtime errors\nimport hash from 'hash-sum';\nimport { toError } from './functions/to-error';\nimport { emptyUrl, UrlLike } from './url';\nimport { DEFAULT_API_VERSION, ApiVersion } from './types/api-version';\nimport { SDK_VERSION } from './sdk-version';\n\nexport type Url = any;\n\nfunction datePlusMinutes(minutes = 30) {\n return new Date(Date.now() + minutes * 60000);\n}\n\nconst isPositiveNumber = (thing: unknown) =>\n typeof thing === 'number' && !isNaN(thing) && thing >= 0;\n\nexport const isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative';\n\nexport const validEnvList = [\n 'production',\n 'qa',\n 'test',\n 'development',\n 'dev',\n 'cdn-qa',\n 'cloud',\n 'fast',\n 'cdn2',\n 'cdn-prod',\n];\n\nfunction getQueryParam(url: string, variable: string): string | null {\n const query = url.split('?')[1] || '';\n const vars = query.split('&');\n for (let i = 0; i < vars.length; i++) {\n const pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) === variable) {\n return decodeURIComponent(pair[1]);\n }\n }\n return null;\n}\n\nconst urlParser = {\n parse(url: string): UrlLike {\n const el: HTMLAnchorElement = document.createElement('a') as any;\n el.href = url;\n const out: any = {};\n\n const props = [\n 'username',\n 'password',\n 'host',\n 'hostname',\n 'port',\n 'protocol',\n 'origin',\n 'pathname',\n 'search',\n 'hash',\n ] as const;\n\n for (const prop of props) {\n out[prop] = el[prop];\n }\n\n // IE 11 pathname handling workaround\n // (IE omits preceeding '/', unlike other browsers)\n if (\n (out.pathname || out.pathname === '') &&\n typeof out.pathname === 'string' &&\n out.pathname.indexOf('/') !== 0\n ) {\n out.pathname = '/' + out.pathname;\n }\n\n return out;\n },\n};\n\nconst parse: (url: string) => UrlLike = isReactNative\n ? () => emptyUrl()\n : typeof window === 'object'\n ? urlParser.parse\n : urlParse;\n\nfunction setCookie(name: string, value: string, expires?: Date) {\n try {\n let expiresString = '';\n\n // TODO: need to know if secure server side\n if (expires) {\n expiresString = '; expires=' + expires.toUTCString();\n }\n\n const secure = isBrowser ? location.protocol === 'https:' : true;\n document.cookie =\n name +\n '=' +\n (value || '') +\n expiresString +\n '; path=/' +\n (secure ? '; secure; SameSite=None' : '');\n } catch (err) {\n console.warn('Could not set cookie', err);\n }\n}\n\nfunction getCookie(name: string) {\n try {\n return (\n decodeURIComponent(\n document.cookie.replace(\n new RegExp(\n '(?:(?:^|.*;)\\\\s*' +\n encodeURIComponent(name).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') +\n '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'\n ),\n '$1'\n )\n ) || null\n );\n } catch (err) {\n console.warn('Could not get cookie', err);\n }\n}\n\nfunction size(object: object) {\n return Object.keys(object).length;\n}\n\nfunction find<T = any>(target: T[], callback: (item: T, index: number, list: T[]) => boolean) {\n const list = target;\n // Makes sures is always has an positive integer as length.\n const length = list.length >>> 0;\n const thisArg = arguments[1];\n for (let i = 0; i < length; i++) {\n const element = list[i];\n if (callback.call(thisArg, element, i, list)) {\n return element;\n }\n }\n}\n\nconst sessionStorageKey = 'builderSessionId';\nconst localStorageKey = 'builderVisitorId';\n\nexport const isBrowser = typeof window !== 'undefined' && !isReactNative;\nexport const isIframe = isBrowser && window.top !== window.self;\n\nexport interface ParamsMap {\n [key: string]: any;\n}\n\ntype TrackingHook = (\n eventData: Event,\n context: { content?: BuilderContent; [key: string]: any }\n) => Event | undefined;\n\ninterface EventData {\n contentId?: string;\n ownerId: string;\n variationId?: string;\n userAttributes?: any;\n targetSelector?: string;\n targetBuilderElement?: string;\n unique?: boolean;\n metadata?: any | string;\n meta?: any | string;\n sessionId?: string;\n visitorId?: string;\n amount?: number;\n}\n// TODO: share interfaces with API\ninterface Event {\n type: string;\n data: EventData;\n}\n\n/**\n * Attributes that can be used for custom targeting. {@link\n * https://www.builder.io/c/docs/guides/targeting-and-scheduling}\n */\nexport interface UserAttributes {\n [key: string]:\n | undefined\n | string\n | string[]\n | boolean\n | boolean[]\n | number\n | number[]\n | Record<string, any>;\n /**\n * URL path of the current user.\n */\n urlPath?: string;\n /**\n * @deprecated\n * @hidden\n */\n queryString?: string | ParamsMap;\n /**\n * @deprecated\n * @hidden\n */\n device?: 'mobile' | 'tablet' | 'desktop';\n /**\n * @deprecated\n * @hidden\n */\n location?: any;\n /**\n * @deprecated\n * @hidden\n */\n userAgent?: string;\n /**\n * @deprecated\n * @hidden\n */\n referrer?: string;\n /**\n * @deprecated\n * @hidden\n */\n entryMedium?: string;\n /**\n * @deprecated\n * @hidden\n */\n language?: string;\n /**\n * @deprecated\n * @hidden\n */\n browser?: string;\n /**\n * @deprecated\n * @hidden\n */\n cookie?: string;\n /**\n * @deprecated\n * @hidden\n */\n newVisitor?: boolean;\n /**\n * @deprecated\n * @hidden\n */\n operatingSystem?: string;\n}\n\ntype AllowEnrich =\n | { apiVersion?: Extract<ApiVersion, 'v1'> }\n | { apiVersion?: Extract<ApiVersion, 'v3'>; enrich?: boolean }\n | { apiVersion?: never; enrich?: boolean };\n\nexport type GetContentOptions = AllowEnrich & {\n /**\n * Optional fetch options to be passed as the second argument to the `fetch` function.\n */\n fetchOptions?: object;\n\n /**\n * User attribute key value pairs to be used for targeting\n * https://www.builder.io/c/docs/custom-targeting-attributes\n *\n * e.g.\n * ```js\n * userAttributes: {\n * urlPath: '/',\n * returnVisitor: true,\n * }\n * ```\n */\n userAttributes?: UserAttributes;\n /**\n * Alias for userAttributes.urlPath except it can handle a full URL (optionally with host,\n * protocol, query, etc) and we will parse out the path.\n */\n url?: string;\n /**\n * @package\n */\n includeUrl?: boolean;\n /**\n * Include content of references in the response.\n * If you use the `reference` field to pull in other content without this\n * enabled we will not fetch that content for the final response.\n * @deprecated use `enrich` instead\n */\n includeRefs?: boolean;\n /**\n * Seconds to cache content. Sets the max-age of the cache-control header\n * response header.\n *\n * Use a higher value for better performance, lower for content that will change more frequently\n *\n * @see {@link https://www.builder.io/c/docs/query-api#__next:~:text=%26includeRefs%3Dtrue-,cacheSeconds,-No}\n */\n cacheSeconds?: number;\n /**\n * Builder.io uses stale-while-revalidate caching at the CDN level. This means we always serve\n * from edge cache and update caches in the background for maximum possible performance. This also\n * means that the more frequently content is requested, the more fresh it will be. The longest we\n * will ever hold something in stale cache is 1 day by default, and you can set this to be shorter\n * yourself as well. We suggest keeping this high unless you have content that must change rapidly\n * and gets very little traffic.\n *\n * @see {@link https://www.fastly.com/blog/prevent-application-network-instability-serve-stale-content}\n */\n staleCacheSeconds?: number;\n /**\n * Maximum number of results to return. Defaults to `1`.\n */\n limit?: number;\n /**\n * Use to specify an offset for pagination of results. The default is 0.\n */\n offset?: number;\n /**\n * Mongodb style query of your data. E.g.:\n *\n * ```js\n * query: {\n * id: 'abc123',\n * data: {\n * myCustomField: { $gt: 20 },\n * }\n * }\n * ```\n *\n * See more info on MongoDB's query operators and format.\n *\n * @see {@link https://docs.mongodb.com/manual/reference/operator/query/}\n */\n query?: any;\n /**\n * Bust through all caches. Not recommended for production (for performance),\n * but can be useful for development and static builds (so the static site has\n * fully fresh / up to date content)\n */\n cachebust?: boolean;\n /**\n * Convert any visual builder content to HTML.\n *\n * This will be on data.html of the response's content entry object json.\n */\n prerender?: boolean;\n /**\n * Extract any styles to a separate css property when generating HTML.\n */\n extractCss?: boolean;\n /**\n * @package\n *\n * `BuilderContent` to render instead of fetching.\n */\n initialContent?: any;\n /**\n * The name of the model to fetch content for.\n */\n model?: string;\n /**\n * Set to `false` to not cache responses when running on the client.\n */\n cache?: boolean;\n\n /**\n * Set to the current locale in your application if you want localized inputs to be auto-resolved, should match one of the locales keys in your space settings\n * Learn more about adding or removing locales [here](https://www.builder.io/c/docs/add-remove-locales)\n */\n locale?: string;\n /**\n * @package\n *\n * Indicate that the fetch request is for preview purposes.\n */\n preview?: boolean;\n /**\n * Specific content entry ID to fetch.\n */\n entry?: string;\n /**\n * @package\n * @deprecated\n * @hidden\n */\n alias?: string;\n /**\n * Only include these fields.\n * Note: 'omit' takes precedence over 'fields'\n *\n * @example\n * ```\n * fields: 'id, name, data.customField'\n * ```\n */\n fields?: string;\n /**\n * Omit only these fields.\n * Note: 'omit' takes precedence over 'fields'\n *\n * @example\n * ```\n * omit: 'data.bigField,data.blocks'\n * ```\n */\n omit?: string;\n key?: string;\n /**\n * @package\n *\n * Affects HTML generation for specific targets.\n */\n format?: 'amp' | 'email' | 'html' | 'react' | 'solid';\n /**\n * @deprecated\n * @hidden\n */\n noWrap?: true;\n /**\n * @package\n *\n * Specific string to use for cache busting. e.g. every time we generate\n * HTML we generate a rev (a revision ID) and we send that with each request\n * on the client, such that if we generate new server HTML we get a new rev\n * and we use that to bust the cache because even though the content ID may\n * be the same, it could be an updated version of this content that needs to\n * be fresh.\n */\n rev?: string;\n /**\n * @package\n *\n * Tell the API that when generating HTML to generate it in static mode for\n * a/b tests instead of the older way we did this\n */\n static?: boolean;\n /**\n * Additional query params of the Content API to send.\n */\n options?: { [key: string]: any };\n /**\n * @package\n *\n * Don't listen to updates in the editor - this is useful for embedded\n * symbols so they don't accidentally listen to messages as you are editing\n * content thinking they should updates when they actually shouldn't.\n */\n noEditorUpdates?: boolean;\n\n /**\n * If set to `true`, it will lazy load symbols/references.\n * If set to `false`, it will render the entire content tree eagerly.\n * @deprecated use `enrich` instead\n */\n noTraverse?: boolean;\n\n /**\n * Property to order results by.\n * Use 1 for ascending and -1 for descending.\n *\n * The key is what you're sorting on, so the following example sorts by createdDate\n * and because the value is 1, the sort is ascending.\n *\n * @example\n * ```\n * createdDate: 1\n * ```\n */\n sort?: { [key: string]: 1 | -1 };\n\n /**\n * Include content entries in a response that are still in\n * draft mode and un-archived. Default is false.\n */\n includeUnpublished?: boolean;\n};\n\nexport type Class = {\n name?: string;\n new (...args: any[]): any;\n};\n\ninterface Map<K, V> {\n clear(): void;\n delete(key: K): boolean;\n entries(): IterableIterator<[K, V]>;\n forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;\n get(key: K): V;\n has(key: K): boolean;\n keys(): IterableIterator<K>;\n set(key: K, value?: V): Map<K, V>;\n size: number;\n values(): IterableIterator<V>;\n [Symbol.iterator](): IterableIterator<[K, V]>;\n}\n\n/**\n * This is the interface for inputs in `Builder.registerComponent`\n *\n * ```js\n * Builder.registerComponent(MyComponent, {\n * inputs: [{ name: 'title', type: 'text' }] // <- Input[]\n * })\n * ```\n *\n * Learn more about registering custom components [here](https://www.builder.io/c/docs/custom-react-components)\n */\nexport interface Input {\n /** This is the name of the component prop this input represents */\n name: string;\n /** A friendlier name to show in the UI if the component prop name is not ideal for end users */\n friendlyName?: string;\n /** @hidden @deprecated */\n description?: string;\n /** A default value to use */\n defaultValue?: any;\n /**\n * The type of input to use, such as 'text'\n *\n * See all available inputs [here](https://www.builder.io/c/docs/custom-components-input-types)\n * and you can create your own custom input types and associated editor UIs with [plugins](https://www.builder.io/c/docs/extending/plugins)\n */\n type: string;\n /** Is this input mandatory or not */\n required?: boolean;\n /** @hidden */\n autoFocus?: boolean;\n subFields?: readonly Input[];\n /**\n * When input is of `type` `object`, use this field to collapse multiple inputs\n * in the Visual Editor by default and preserve screen space.\n */\n folded?: boolean;\n /**\n * When input is of `type` `object`, provide guidance in the Visual Editor\n * on how to edit this object's contents.\n */\n keysHelperText?: string;\n\n /**\n * Additional text to render in the UI to give guidance on how to use this\n *\n * @example\n * ```js\n * helperText: 'Be sure to use a proper URL, starting with \"https://\"'\n * 111\n */\n helperText?: string;\n /** @hidden */\n allowedFileTypes?: readonly string[];\n /** @hidden */\n imageHeight?: number;\n /** @hidden */\n behavior?: string;\n /** @hidden */\n imageWidth?: number;\n /** @hidden */\n mediaHeight?: number;\n /** @hidden */\n mediaWidth?: number;\n /** @hidden */\n hideFromUI?: boolean;\n /** @hidden */\n modelId?: string;\n /**\n * Number field type validation maximum accepted input\n */\n max?: number;\n /**\n * Number field type validation minimum accepted input\n */\n min?: number;\n /**\n * Number field type step size when using arrows\n */\n step?: number;\n\n /**\n * Set this to `true` to show the editor for this input when\n * children of this component are selected. This is useful for things\n * like Tabs, such that users may not always select the Tabs component\n * directly but will still be looking for how to add additional tabs\n */\n broadcast?: boolean;\n /**\n * Set this to `true` to show the editor for this input when\n * group locked parents of this component are selected. This is useful\n * to bubble up important inputs for locked groups, like text and images\n */\n bubble?: boolean;\n /**\n * Set this to `true` if you want this component to be translatable\n */\n localized?: boolean;\n /** @hidden */\n options?: { [key: string]: any };\n /**\n * For \"text\" input type, specifying an enum will show a dropdown of options instead\n */\n enum?:\n | readonly string[]\n | readonly { label: string; value: string | number | boolean; helperText?: string }[];\n /** Regex field validation for all string types (text, longText, html, url, etc) */\n regex?: {\n /** pattern to test, like \"^\\/[a-z]$\" */\n pattern: string;\n /** flags for the RegExp constructor, e.g. \"gi\" */\n options?: string;\n /**\n * Friendly message to display to end-users if the regex fails, e.g.\n * \"You must use a relative url starting with '/...' \"\n */\n message: string;\n };\n /**\n * Set this to `true` to put this under the \"show more\" section of\n * the options editor. Useful for things that are more advanced\n * or more rarely used and don't need to be too prominent\n */\n advanced?: boolean;\n /** @hidden */\n onChange?: (\n options: any,\n previousOptions?: any\n ) => Promise<void> | ((options: any, previousOptions?: any) => void) | string | void | undefined;\n /** @hidden */\n code?: boolean;\n /** @hidden */\n richText?: boolean;\n /** @hidden */\n showIf?: ((options: Map<string, any>) => boolean) | string;\n /** @hidden */\n copyOnAdd?: boolean;\n /**\n * Use optionally with inputs of type `reference`. Restricts the content entry picker to a specific model by name.\n */\n model?: string;\n\n meta?: Record<string, any>;\n}\n\n/**\n * This is the interface for the options for `Builder.registerComponent`\n *\n * ```js\n * Builder.registerComponent(YourComponent, {\n * // <- Component options\n * })\n * ```\n *\n * Learn more about registering custom components [here](https://www.builder.io/c/docs/custom-react-components)\n */\nexport interface Component {\n /**\n * Name your component something unique, e.g. 'MyButton'. You can override built-in components\n * by registering a component with the same name, e.g. 'Text', to replace the built-in text component\n */\n name: string;\n /** @hidden @deprecated */\n description?: string;\n /**\n * Link to a documentation page for this component\n */\n docsLink?: string;\n /**\n * Link to an image to be used as an icon for this component in Builder's editor\n *\n * @example\n * ```js\n * image: 'https://some-cdn.com/my-icon-for-this-component.png'\n * ```\n */\n image?: string;\n /**\n * Link to a screenshot shown when user hovers over the component in Builder's editor\n * use https://builder.io/upload to upload your screeshot, for easier resizing by Builder.\n */\n screenshot?: string;\n\n /**\n * When overriding built-in components, if you don't want any special behavior that\n * the original has, set this to `true` to skip the default behavior\n *\n * Default behaviors include special \"virtual options\", such as a custom\n * aspect ratio editor for Images, or a special column editor for Columns\n *\n * Learn more about overriding built-in components here: https://www.builder.io/c/docs/custom-components-overriding\n */\n override?: boolean;\n\n /**\n * Input schema for your component for users to fill in the options via a UI\n * that translate to this components props\n */\n inputs?: readonly Input[];\n /** @hidden @deprecated */\n class?: any;\n /** @hidden @deprecated */\n type?: 'angular' | 'webcomponent' | 'react' | 'vue';\n /**\n * Default styles to apply when droppged into the Builder.io editor\n *\n * @example\n * ```js\n * defaultStyles: {\n * appearance: 'none',\n * paddingTop: '15px',\n * paddingBottom: '15px',\n * paddingLeft: '25px',\n * paddingRight: '25px',\n * backgroundColor: '#000000',\n * color: 'white',\n * borderRadius: '4px',\n * }\n * ```\n */\n defaultStyles?: { [key: string]: string };\n /**\n * Turn on if your component can accept children. Be sure to use in combination with\n * withChildren(YourComponent) like here\n * github.com/BuilderIO/builder/blob/master/examples/react-design-system/src/components/HeroWithChildren/HeroWithChildren.builder.js#L5\n */\n canHaveChildren?: boolean;\n /** @hidden */\n fragment?: boolean;\n /**\n * Do not wrap a component in a dom element. Be sure to use {...props.attributes} with this option\n * like here github.com/BuilderIO/builder/blob/master/packages/react/src/blocks/forms/Input.tsx#L34\n */\n noWrap?: boolean;\n /**\n * Default children\n */\n defaultChildren?: readonly BuilderElement[];\n /**\n * Default options to merge in when creating this block\n */\n defaults?: Partial<BuilderElement>;\n /** @hidden @deprecated */\n hooks?: { [key: string]: string | Function };\n /**\n * Hide your component in editor, useful for gradually deprecating components\n */\n hideFromInsertMenu?: boolean;\n /** Custom tag name (for custom webcomponents only) */\n tag?: string;\n /** @hidden @deprecated */\n static?: boolean;\n /**\n * Passing a list of model names will restrict using the component to only the models listed here, otherwise it'll be available for all models\n */\n models?: readonly string[];\n\n /**\n * Whether the component is a React Server Component\n */\n isRSC?: boolean;\n\n /**\n * Specify restrictions direct children must match\n */\n childRequirements?: {\n /** Message to show when this doesn't match, e.g. \"Children of 'Columns' must be a 'Column'\" */\n message: string;\n /** Simple way to say children must be a specific component name */\n component?: string;\n /**\n * More advanced - specify a MongoDB-style query (using sift.js github.com/crcn/sift.js)\n * of what the children objects should match, e.g.\n *\n * @example\n * query: {\n * // Child of this element must be a 'Button' or 'Text' component\n * 'component.name': { $in: ['Button', 'Text'] }\n * }\n */\n query?: any;\n };\n\n /**\n * Specify restrictions any parent must match\n */\n requiresParent?: {\n /** Message to show when this doesn't match, e.g. \"'Add to cart' buttons must be within a 'Product box'\" */\n message: string;\n /** Simple way to say a parent must be a specific component name, e.g. 'Product box' */\n component?: string;\n\n /**\n * More advanced - specify a MongoDB-style query (using sift.js github.com/crcn/sift.js)\n * of what at least one parent in the parents hierarchy should match, e.g.\n *\n * @example\n * query: {\n * // Thils element must be somewhere inside either a 'Product box' or 'Collection' component\n * 'component.name': { $in: ['Product Box', 'Collection'] }\n * }\n */\n query?: any;\n };\n\n friendlyName?: string;\n\n /**\n * Use to restrict access to your component based on a the current user permissions\n * By default components will show to all users\n * for more information on permissions in builder check https://www.builder.io/c/docs/guides/roles-and-permissions\n */\n requiredPermissions?: Array<Permission>;\n\n meta?: { [key: string]: any };\n}\n\ntype Permission = 'read' | 'publish' | 'editCode' | 'editDesigns' | 'admin' | 'create';\n\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends Array<infer U>\n ? Array<DeepPartial<U>>\n : T[P] extends ReadonlyArray<infer U>\n ? ReadonlyArray<DeepPartial<U>>\n : DeepPartial<T[P]>;\n};\n\nexport interface InsertMenuItem {\n name: string;\n icon?: string;\n item: DeepPartial<BuilderElement>;\n}\n\n/**\n * Use this to register custom sections in the Insert menu, for instance\n * to make new sections to organize your custom components\n *\n * ![Example of what a custom section looks like](https://cdn.builder.io/api/v1/image/assets%2F7f7bbcf72a1a4d72bac5daa359e7befd%2Fe5f2792e9c0f44ed89a9dcb77b945858)\n *\n * @example\n * ```js\n * Builder.register('insertMenu', {\n * name: 'Our components',\n * items: [\n * { name: 'Hero' },\n * { name: 'Double Columns' },\n * { name: 'Triple Columns' },\n * { name: 'Dynamic Columns' },\n * ],\n * })\n * ```\n *\n * You can make as many custom sections as you like\n *\n * See a complete usage example [here](https://github.com/builderio/builder/blob/main/examples/react-design-system/src/builder-settings.js)\n */\nexport interface InsertMenuConfig {\n name: string;\n priority?: number;\n persist?: boolean;\n advanced?: boolean;\n items: readonly InsertMenuItem[];\n}\n\nexport function BuilderComponent(info: Partial<Component> = {}) {\n return Builder.Component(info);\n}\n\n// TODO\ntype Settings = any;\n\nexport interface Action {\n name: string;\n inputs?: readonly Input[];\n returnType?: Input;\n action: (options: Record<string, any>) => string;\n /**\n * Is an action for expression (e.g. calculating a binding like a formula\n * to fill a value based on locale) or a function (e.g. something to trigger\n * on an event like add to cart) or either (e.g. a custom code block)\n */\n kind: 'expression' | 'function' | 'any';\n /**\n * Globally unique ID for an action, e.g. \"@builder.io:setState\"\n */\n id: string;\n}\n\nexport class Builder {\n static VERSION = SDK_VERSION;\n\n static components: Component[] = [];\n static singletonInstance: Builder;\n /**\n * Makes it so that a/b tests generate code like {@link\n * https://www.builder.io/blog/high-performance-no-code#__next:~:text=Static%20generated%20A%2FB%20testing}\n * instead of the old way where we render only one test group at a time on the\n * server. This is the preferred/better way not and we should ultimately make it\n * the default\n */\n static isStatic = true;\n static animator = new Animator();\n\n static nextTick = nextTick;\n static throttle = throttle;\n\n static editors: any[] = [];\n static trustedHosts: string[] = [\n '*.beta.builder.io',\n 'beta.builder.io',\n 'builder.io',\n 'localhost',\n 'qa.builder.io',\n ];\n static serverContext: any;\n static plugins: any[] = [];\n\n static actions: Action[] = [];\n static registry: { [key: string]: any[] } = {};\n static overrideHost: string | undefined;\n static attributesCookieName = 'builder.userAttributes';\n\n /**\n * @todo `key` property on any info where if a key matches a current\n * key it gets removed\n */\n static register(type: 'insertMenu', info: InsertMenuConfig): void;\n static register(type: string, info: any): void;\n static register(type: string, info: any) {\n if (type === 'plugin') {\n info = this.serializeIncludingFunctions(info, true);\n }\n\n // TODO: all must have name and can't conflict?\n let typeList = this.registry[type];\n if (!typeList) {\n typeList = this.registry[type] = [];\n }\n typeList.push(info);\n if (Builder.isBrowser) {\n const message = {\n type: 'builder.register',\n data: {\n type,\n info,\n },\n };\n try {\n parent.postMessage(message, '*');\n if (parent !== window) {\n window.postMessage(message, '*');\n }\n } catch (err) {\n console.debug('Could not postmessage', err);\n }\n }\n this.registryChange.next(this.registry);\n }\n\n static registryChange = new BehaviorSubject({} as typeof Builder.registry);\n\n static registerEditor(info: any) {\n if (Builder.isBrowser) {\n window.postMessage(\n {\n type: 'builder.registerEditor',\n data: omit(info, 'component'),\n },\n '*'\n );\n const { hostname } = location;\n\n if (!Builder.isTrustedHost(hostname)) {\n console.error(\n 'Builder.registerEditor() called in the wrong environment! You cannot load custom editors from your app, they must be loaded through the Builder.io app itself. Follow the readme here for more details: https://github.com/builderio/builder/tree/master/plugins/cloudinary or contact chat us in our Spectrum community for help: https://spectrum.chat/builder'\n );\n }\n }\n this.editors.push(info);\n }\n\n static registerPlugin(info: any) {\n this.plugins.push(info);\n }\n\n static registerAction(action: Action) {\n this.actions.push(action);\n\n if (Builder.isBrowser) {\n const actionClone = JSON.parse(JSON.stringify(action));\n if (action.action) {\n actionClone.action = action.action.toString();\n }\n window.parent?.postMessage(\n {\n type: 'builder.registerAction',\n data: actionClone,\n },\n '*'\n );\n }\n }\n\n static registerTrustedHost(host: string) {\n this.trustedHosts.push(host);\n }\n\n /**\n * @param context @type {import('isolated-vm').Context}\n * Use this function to control the execution context of custom code on the server.\n * const ivm = require('isolated-vm');\n * const isolate = new ivm.Isolate({ memoryLimit: 128 });\n * const context = isolate.createContextSync();\n * Builder.setServerContext(context);\n */\n static setServerContext(context: any) {\n this.serverContext = context;\n }\n\n static isTrustedHost(hostname: string) {\n const isTrusted =\n this.trustedHosts.findIndex(trustedHost =>\n trustedHost.startsWith('*.')\n ? hostname.endsWith(trustedHost.slice(1))\n : trustedHost === hostname\n ) > -1;\n\n return isTrusted;\n }\n\n static isTrustedHostForEvent(event: MessageEvent) {\n if (event.origin === 'null') {\n return false;\n }\n const url = parse(event.origin);\n return url.hostname && Builder.isTrustedHost(url.hostname);\n }\n\n static runAction(action: Action | string) {\n // TODO\n const actionObject =\n typeof action === 'string' ? find(this.actions, item => item.name === action) : action;\n\n if (!actionObject) {\n throw new Error(`Action not found: ${action}`);\n }\n }\n\n static fields(name: string, fields: readonly Input[]) {\n window.parent?.postMessage(\n {\n type: 'builder.fields',\n data: { name, fields },\n },\n '*'\n );\n }\n\n private static _editingPage = false;\n\n static isIframe = isIframe;\n static isBrowser = isBrowser;\n static isReactNative = isReactNative;\n static isServer = !isBrowser && !isReactNative;\n static previewingModel = Builder.isBrowser && getQueryParam(location.href, 'builder.preview');\n\n static settings: Settings = {};\n static settingsChange = new BehaviorSubject<Settings>({});\n\n /**\n * @deprecated\n * @hidden\n *\n * Use Builder.register('editor.settings', {}) instead.\n */\n static set(settings: Settings): void {\n Builder.register('editor.settings', settings);\n }\n\n static import(packageName: string) {\n if (!Builder.isBrowser) {\n // TODO: server side support *maybe*\n console.warn('Builder.import used on the server - this should only be used in the browser');\n return;\n }\n const { System } = window as any;\n\n if (!System) {\n console.warn('System.js not available. Please include System.js when using Builder.import');\n return;\n }\n return System.import(`https://cdn.builder.io/systemjs/${packageName}`);\n }\n\n // TODO: this is quick and dirty, do better implementation later. Also can be unreliable\n // if page 301s etc. Use a query param instead? also could have issues with redirects. Injecting var could\n // work but is async...\n static isEditing = Boolean(\n isIframe &&\n ((document.referrer && document.referrer.match(/builder\\.io|localhost:1234/)) ||\n location.search.indexOf('builder.frameEditing=') !== -1)\n );\n\n static isPreviewing = Boolean(\n isBrowser &&\n (location.search.indexOf('builder.preview=') !== -1 ||\n location.search.indexOf('builder.frameEditing=') !== -1)\n );\n\n // useCdnApi = false;\n\n static get editingPage() {\n return this._editingPage;\n }\n\n static set editingPage(editingPage) {\n this._editingPage = editingPage;\n if (isBrowser && isIframe) {\n if (editingPage) {\n document.body.classList.add('builder-editing-page');\n } else {\n document.body.classList.remove('builder-editing-page');\n }\n }\n }\n\n private static serializeIncludingFunctions(info: any, isForPlugin?: boolean) {\n const serializeFn = (fnValue: Function) => {\n const fnStr = fnValue.toString().trim();\n\n // we need to account for a few different fn syntaxes:\n // 1. `function name(args) => {code}`\n // 2. `name(args) => {code}`\n // 3. `(args) => {}`\n // 4. `args => {}`\n // 5. `async function(args) {code}`\n // 6. `async (args) => {}`\n // 7. `async args => {}`\n const isArrowWithoutParens = /^[a-zA-Z0-9_]+\\s*=>/i.test(fnStr);\n const appendFunction =\n !fnStr.startsWith('function') &&\n !fnStr.startsWith('async') &&\n !fnStr.startsWith('(') &&\n !isArrowWithoutParens;\n\n return `return (${appendFunction ? 'function ' : ''}${fnStr}).apply(this, arguments)`;\n };\n\n const objToReturn = JSON.parse(\n JSON.stringify(info, (key, value) => {\n const shouldNotSerializeFn = isForPlugin && key === 'onSave';\n if (typeof value === 'function' && !shouldNotSerializeFn) {\n return serializeFn(value);\n }\n return value;\n })\n );\n\n if (isForPlugin) {\n objToReturn.onSave = info.onSave;\n }\n\n return objToReturn;\n }\n\n private static prepareComponentSpecToSend(spec: Component): Component {\n return {\n ...this.serializeIncludingFunctions(spec),\n class: undefined,\n };\n }\n\n static registerBlock(component: any, options: Component) {\n this.registerComponent(component, options);\n }\n\n static registerComponent(component: any, options: Component) {\n const spec = {\n class: component,\n ...component.builderOptions,\n ...options,\n };\n this.addComponent(spec);\n const editable =\n options.models && this.singletonInstance.editingModel\n ? isBrowser && options.models.includes(this.singletonInstance.editingModel)\n : isBrowser;\n if (editable) {\n const sendSpec = this.prepareComponentSpecToSend(spec);\n window.parent?.postMessage(\n {\n type: 'builder.registerComponent',\n data: sendSpec,\n },\n '*'\n );\n }\n }\n\n private static addComponent(component: Component) {\n const current = find(this.components, item => item.name === component.name);\n if (current) {\n // FIXME: why does sometimes we get an extra post without class - probably\n // from postMessage handler wrong in some place\n if (current.class && !component.class) {\n return;\n }\n this.components.splice(this.components.indexOf(current), 1, component);\n } else {\n this.components.push(component);\n }\n }\n\n // TODO: style guide, etc off this system as well?\n static component(info: Partial<Component> = {}) {\n return (component: Class) => {\n const spec = { ...info, class: component };\n if (!spec.name) {\n spec.name = component.name;\n }\n this.addComponent(spec as Component);\n\n const sendSpec = this.prepareComponentSpecToSend(spec as Component);\n // TODO: serialize component name and inputs\n if (isBrowser) {\n window.parent?.postMessage(\n {\n type: 'builder.registerComponent',\n data: sendSpec,\n },\n '*'\n );\n }\n return component;\n };\n }\n\n static isReact = false;\n static sdkInfo = undefined as\n | {\n name: string;\n version: string;\n }\n | undefined;\n\n static get Component() {\n return this.component;\n }\n\n private eventsQueue: Event[] = [];\n\n private throttledClearEventsQueue = throttle(() => {\n this.processEventsQueue();\n // Extend the session cookie\n this.setCookie(sessionStorageKey, this.sessionId, datePlusMinutes(30));\n }, 5);\n\n private processEventsQueue() {\n if (!this.eventsQueue.length) {\n return;\n }\n const events = this.eventsQueue;\n this.eventsQueue = [];\n\n const fullUserAttributes = {\n ...Builder.overrideUserAttributes,\n ...this.trackingUserAttributes,\n };\n for (const event of events) {\n if (!event.data.metadata) {\n event.data.metadata = {};\n }\n if (!event.data.metadata.user) {\n event.data.metadata.user = {};\n }\n Object.assign(event.data.metadata.user, fullUserAttributes, event.data.metadata.user);\n }\n\n const host = this.host;\n\n getFetch()(`${host}/api/v1/track`, {\n method: 'POST',\n body: JSON.stringify({ events }),\n headers: {\n 'content-type': 'application/json',\n ...this.getSdkHeaders(),\n },\n mode: 'cors',\n }).catch(() => {\n // Not the end of the world\n });\n }\n\n env: string = 'production';\n\n sessionId = this.getSessionId();\n\n targetContent = true;\n\n contentPerRequest = 1;\n\n // TODO: make array or function\n allowCustomFonts = true;\n\n private cookies: Cookies | null = null;\n\n // TODO: api options object\n private cachebust = false;\n private overrideParams = '';\n private noCache = false;\n private preview = false;\n\n get browserTrackingDisabled() {\n return Builder.isBrowser && Boolean((window as any).builderNoTrack || !navigator.cookieEnabled);\n }\n\n get canTrack() {\n return this.canTrack$.value;\n }\n\n set canTrack(canTrack) {\n this.hasOverriddenCanTrack = true;\n if (this.canTrack !== canTrack) {\n this.canTrack$.next(canTrack);\n }\n }\n\n get apiVersion() {\n return this.apiVersion$.value;\n }\n\n set apiVersion(apiVersion: ApiVersion | undefined) {\n if (this.apiVersion !== apiVersion) {\n this.apiVersion$.next(apiVersion);\n }\n }\n\n get apiEndpoint() {\n return this.apiEndpoint$.value;\n }\n\n set apiEndpoint(apiEndpoint: 'content' | 'query') {\n if (this.apiEndpoint !== apiEndpoint) {\n this.apiEndpoint$.next(apiEndpoint);\n }\n }\n\n /**\n * Dictates which API endpoint is used when fetching content. Allows `'content'` and `'query'`.\n * Defaults to `'query'`.\n */\n private apiEndpoint$ = new BehaviorSubject<'content' | 'query'>('query');\n private apiVersion$ = new BehaviorSubject<ApiVersion | undefined>(undefined);\n private canTrack$ = new BehaviorSubject(!this.browserTrackingDisabled);\n private hasOverriddenCanTrack = false;\n private apiKey$ = new BehaviorSubject<string | null>(null);\n private authToken$ = new BehaviorSubject<string | null>(null);\n\n userAttributesChanged = new BehaviorSubject<any>(null);\n\n get editingMode() {\n return this.editingMode$.value;\n }\n\n set editingMode(value) {\n if (value !== this.editingMode) {\n this.editingMode$.next(value);\n }\n }\n\n editingMode$ = new BehaviorSubject(isIframe);\n\n get editingModel() {\n return this.editingModel$.value;\n }\n\n set editingModel(value) {\n if (value !== this.editingModel) {\n this.editingModel$.next(value);\n }\n }\n\n private findParentElement(\n target: HTMLElement,\n callback: (element: HTMLElement) => boolean,\n checkElement = true\n ): HTMLElement | null {\n if (!(target instanceof HTMLElement)) {\n return null;\n }\n let parent: HTMLElement | null = checkElement ? target : target.parentElement;\n do {\n if (!parent) {\n return null;\n }\n\n const matches = callback(parent);\n if (matches) {\n return parent;\n }\n } while ((parent = parent.parentElement));\n\n return null;\n }\n\n private findBuilderParent(target: HTMLElement) {\n return this.findParentElement(target, el => {\n const id = el.getAttribute('builder-id') || el.id;\n return Boolean(id && id.indexOf('builder-') === 0);\n });\n }\n\n // TODO: decorator to do this stuff with the get/set (how do with typing too? compiler?)\n editingModel$ = new BehaviorSubject<null | string>(null);\n\n setUserAgent(userAgent: string) {\n this.userAgent = userAgent || '';\n }\n userAgent: string = (typeof navigator === 'object' && navigator.userAgent) || '';\n\n trackingHooks: TrackingHook[] = [];\n\n /**\n * Set a hook to modify events being tracked from builder, such as impressions and clicks\n *\n * For example, to track the model ID of each event associated with content for querying\n * by mode, you can do\n *\n * builder.setTrackingHook((event, context) => {\n * if (context.content) {\n * event.data.metadata.modelId = context.content.modelId\n * }\n * })\n */\n setTrackingHook(hook: TrackingHook) {\n this.trackingHooks.push(hook);\n }\n\n track(eventName: string, properties: Partial<EventData> = {}, context?: any) {\n // TODO: queue up track requests and fire them off when canTrack set to true - otherwise may get lots of clicks with no impressions\n if (isIframe || !isBrowser || Builder.isPreviewing) {\n return;\n }\n\n const apiKey = this.apiKey;\n if (!apiKey) {\n console.error(\n 'Builder integration error: Looks like the Builder SDK has not been initialized properly (your API key has not been set). Make sure you are calling `builder.init(\"«YOUR-API-KEY»\");` as early as possible in your application\\'s code.'\n );\n return;\n }\n\n let eventData: Event = JSON.parse(\n JSON.stringify({\n type: eventName,\n data: {\n ...omit(properties, 'meta'),\n metadata: {\n sdkVersion: Builder.VERSION,\n url: location.href,\n ...properties.meta,\n ...properties.metadata,\n },\n ownerId: apiKey,\n userAttributes: this.getUserAttributes(),\n sessionId: this.sessionId,\n visitorId: this.visitorId,\n },\n })\n );\n\n for (const hook of this.trackingHooks) {\n const returnValue = hook(eventData, context || {});\n if (returnValue) {\n eventData = returnValue;\n }\n }\n\n // batch events\n this.eventsQueue.push(eventData);\n\n if (this.canTrack) {\n this.throttledClearEventsQueue();\n }\n }\n\n getSessionId() {\n let sessionId: string | null = null;\n try {\n if (Builder.isBrowser && typeof sessionStorage !== 'undefined') {\n sessionId = this.getCookie(sessionStorageKey);\n }\n } catch (err) {\n console.debug('Session storage error', err);\n // It's ok\n }\n\n if (!sessionId) {\n sessionId = uuid();\n }\n\n // Give the app a second to start up and set canTrack to false if needed\n if (Builder.isBrowser) {\n setTimeout(() => {\n try {\n if (this.canTrack) {\n this.setCookie(sessionStorageKey, sessionId, datePlusMinutes(30));\n }\n } catch (err) {\n console.debug('Cookie setting error', err);\n }\n });\n }\n return sessionId;\n }\n\n // Set this to control the userId\n // TODO: allow changing it mid session and updating existing data to be associated\n // e.g. for when a user navigates and then logs in\n visitorId: string = this.getVisitorId();\n\n getVisitorId() {\n if (this.visitorId) {\n return this.visitorId;\n }\n let visitorId: string | null = null;\n try {\n if (Builder.isBrowser && typeof localStorage !== 'undefined') {\n // TODO: cookie instead?\n visitorId = localStorage.getItem(localStorageKey);\n }\n } catch (err) {\n console.debug('Local storage error', err);\n // It's ok\n }\n\n if (!visitorId) {\n visitorId = uuid();\n }\n\n this.visitorId = visitorId;\n\n // Give the app a second to start up and set canTrack to false if needed\n if (Builder.isBrowser) {\n setTimeout(() => {\n try {\n if (this.canTrack && typeof localStorage !== 'undefined' && visitorId) {\n localStorage.setItem(localStorageKey, visitorId);\n }\n } catch (err) {\n console.debug('Session storage error', err);\n }\n });\n }\n return visitorId;\n }\n\n trackImpression(contentId: string, variationId?: string, properties?: any, context?: any) {\n if (isIframe || !isBrowser || Builder.isPreviewing) {\n return;\n }\n // TODO: use this.track method\n this.track(\n 'impression',\n {\n contentId,\n variationId: variationId !== contentId ? variationId : undefined,\n metadata: properties,\n },\n context\n );\n }\n\n trackConversion(amount?: number, customProperties?: any): void;\n trackConversion(\n amount?: number,\n contentId?: string | any,\n variationId?: string,\n customProperties?: any,\n context?: any\n ) {\n if (isIframe || !isBrowser || Builder.isPreviewing) {\n return;\n }\n const meta = typeof contentId === 'object' ? contentId : customProperties;\n const useContentId = typeof contentId === 'string' ? contentId : undefined;\n\n this.track('conversion', { amount, variationId, meta, contentId: useContentId }, context);\n }\n\n autoTrack = !Builder.isBrowser\n ? false\n : !this.isDevelopmentEnv &&\n !(Builder.isBrowser && location.search.indexOf('builder.preview=') !== -1);\n\n // TODO: set this for QA\n private get isDevelopmentEnv() {\n // Automatic determining of development environment\n return (\n Builder.isIframe ||\n (Builder.isBrowser && (location.hostname === 'localhost' || location.port !== '')) ||\n this.env !== 'production'\n );\n }\n\n trackInteraction(\n contentId: string,\n variationId?: string,\n alreadyTrackedOne = false,\n event?: MouseEvent,\n context?: any\n ) {\n if (isIframe || !isBrowser || Builder.isPreviewing) {\n return;\n }\n const target = event && (event.target as HTMLElement);\n const targetBuilderElement = target && this.findBuilderParent(target);\n\n function round(num: number) {\n return Math.round(num * 1000) / 1000;\n }\n\n const metadata: any = {};\n if (event) {\n const { clientX, clientY } = event;\n if (target) {\n const targetRect = target.getBoundingClientRect();\n const xOffset = clientX - targetRect.left;\n const yOffset = clientY - targetRect.top;\n\n const xRatio = round(xOffset / targetRect.width);\n const yRatio = round(yOffset / targetRect.height);\n\n metadata.targetOffset = {\n x: xRatio,\n y: yRatio,\n };\n }\n if (targetBuilderElement) {\n const targetRect = targetBuilderElement.getBoundingClientRect();\n const xOffset = clientX - targetRect.left;\n const yOffset = clientY - targetRect.top;\n\n const xRatio = round(xOffset / targetRect.width);\n const yRatio = round(yOffset / targetRect.height);\n\n metadata.builderTargetOffset = {\n x: xRatio,\n y: yRatio,\n };\n }\n }\n\n const builderId =\n targetBuilderElement &&\n (targetBuilderElement.getAttribute('builder-id') || targetBuilderElement.id);\n\n if (builderId && targetBuilderElement) {\n metadata.builderElementIndex = ([] as Element[]).slice\n .call(document.getElementsByClassName(builderId))\n .indexOf(targetBuilderElement);\n }\n\n this.track(\n 'click',\n {\n contentId,\n metadata,\n variationId: variationId !== contentId ? variationId : undefined,\n unique: !alreadyTrackedOne,\n targetBuilderElement: builderId || undefined,\n },\n context\n );\n }\n\n static overrideUserAttributes: Partial<UserAttributes> = {};\n\n trackingUserAttributes: { [key: string]: any } = {};\n\n component(info: Partial<Component> = {}) {\n return Builder.component(info);\n }\n\n get apiKey() {\n return this.apiKey$.value;\n }\n\n set apiKey(key: string | null) {\n this.apiKey$.next(key);\n }\n\n get authToken() {\n return this.authToken$.value;\n }\n\n set authToken(token: string | null) {\n this.authToken$.next(token);\n }\n\n constructor(\n apiKey: string | null = null,\n protected request?: IncomingMessage,\n protected response?: ServerResponse,\n forceNewInstance = false,\n authToken: string | null = null,\n apiVersion?: ApiVersion\n ) {\n // TODO: use a window variable for this perhaps, e.g. bc webcomponents may be loading builder twice\n // with it's and react (use rollup build to fix)\n if (Builder.isBrowser && !forceNewInstance && Builder.singletonInstance) {\n return Builder.singletonInstance;\n }\n\n if (this.request && this.response) {\n this.setUserAgent((this.request.headers['user-agent'] as string) || '');\n this.cookies = new Cookies(this.request, this.response);\n }\n\n if (apiKey) {\n this.apiKey = apiKey;\n }\n if (apiVersion) {\n this.apiVersion = apiVersion;\n }\n if (authToken) {\n this.authToken = authToken;\n }\n if (isBrowser) {\n if (Builder.isEditing) {\n this.bindMessageListeners();\n\n parent.postMessage(\n {\n type: 'builder.animatorOptions',\n data: {\n options: {\n version: 2,\n },\n },\n },\n '*'\n );\n }\n // TODO: postmessage to parent the builder info for every package\n // type: 'builder.sdk', data: { name: '@builder.io/react', version: '0.1.23' }\n // (window as any).BUILDER_VERSION = Builder.VERSION;\n // Ensure always one Builder global singleton\n // TODO: some people won't want this, e.g. rakuten\n // Maybe hide this behind symbol or on document, etc\n // if ((window as any).Builder) {\n // Builder.components = (window as any).Builder.components;\n // } else {\n // (window as any).Builder = Builder;\n // }\n }\n\n if (isIframe) {\n this.messageFrameLoaded();\n }\n\n // TODO: on destroy clear subscription\n this.canTrack$.subscribe((value: any) => {\n if (value) {\n if (typeof sessionStorage !== 'undefined') {\n try {\n if (!sessionStorage.getItem(sessionStorageKey)) {\n sessionStorage.setItem(sessionStorageKey, this.sessionId);\n }\n } catch (err) {\n console.debug('Session storage error', err);\n }\n }\n if (this.eventsQueue.length) {\n this.throttledClearEventsQueue();\n }\n if (this.cookieQueue.length) {\n this.cookieQueue.forEach(item => {\n this.setCookie(item[0], item[1]);\n });\n this.cookieQueue.length = 0;\n }\n }\n });\n\n if (isBrowser) {\n // TODO: defer so subclass constructor runs and injects location service\n this.setTestsFromUrl();\n // TODO: do this on every request send?\n this.getOverridesFromQueryString();\n\n // cookies used in personalization container script, so need to set before hydration to match script result\n const userAttrCookie = this.getCookie(Builder.attributesCookieName);\n if (userAttrCookie) {\n try {\n const attributes = JSON.parse(userAttrCookie);\n this.setUserAttributes(attributes);\n } catch (err) {\n console.debug('Error parsing user attributes cookie', err);\n }\n }\n }\n }\n\n private modifySearch(search: string) {\n return search.replace(\n /(^|&|\\?)(builder_.*?)=/gi,\n (_match, group1, group2) => group1 + group2.replace(/_/g, '.') + '='\n );\n }\n\n setTestsFromUrl() {\n const search = this.getLocation().search;\n try {\n const params = QueryString.parseDeep(this.modifySearch(search || '').substr(1));\n const tests = params.builder && params.builder.tests;\n if (tests && typeof tests === 'object') {\n for (const key in tests) {\n if (tests.hasOwnProperty(key)) {\n this.setTestCookie(key, tests[key]);\n }\n }\n }\n } catch (e) {\n console.debug('Error parsing tests from URL', e);\n }\n }\n\n resetOverrides() {\n // Ugly - pass down instances per request instead using react context\n // or use builder.get('foo', { req, res }) in react...........\n Builder.overrideUserAttributes = {};\n this.cachebust = false;\n this.noCache = false;\n this.preview = false;\n this.editingModel = null;\n this.overrides = {};\n this.env = 'production';\n this.userAgent = '';\n this.request = undefined;\n this.response = undefined;\n }\n\n getOverridesFromQueryString() {\n const location = this.getLocation();\n try {\n const params = QueryString.parseDeep(this.modifySearch(location.search || '').substr(1));\n const { builder } = params;\n if (builder) {\n const {\n userAttributes,\n overrides,\n env,\n host,\n api,\n cachebust,\n noCache,\n preview,\n editing,\n frameEditing,\n options,\n params: overrideParams,\n } = builder;\n\n if (userAttributes) {\n this.setUserAttributes(userAttributes);\n }\n\n if (options) {\n // picking only locale, includeRefs, and enrich for now\n this.queryOptions = {\n ...(options.locale && { locale: options.locale }),\n ...(options.includeRefs && { includeRefs: options.includeRefs }),\n ...(options.enrich && { enrich: options.enrich }),\n };\n }\n\n if (overrides) {\n this.overrides = overrides;\n }\n\n if (validEnvList.indexOf(env || api) > -1) {\n this.env = env || api;\n }\n\n if (Builder.isEditing) {\n const editingModel = frameEditing || editing || preview;\n if (editingModel && editingModel !== 'true') {\n this.editingModel = editingModel;\n }\n }\n\n if (cachebust) {\n this.cachebust = true;\n }\n\n if (noCache) {\n this.noCache = true;\n }\n\n if (preview) {\n this.preview = true;\n }\n\n if (params) {\n this.overrideParams = overrideParams;\n }\n }\n } catch (e) {\n console.debug('Error parsing overrides from URL', e);\n }\n }\n\n private messageFrameLoaded() {\n window.parent?.postMessage(\n {\n type: 'builder.loaded',\n data: {\n value: true,\n },\n },\n '*'\n );\n }\n\n private blockContentLoading = '';\n\n private bindMessageListeners() {\n addEventListener('message', event => {\n const isTrusted = Builder.isTrustedHostForEvent(event);\n if (!isTrusted) return;\n\n const { data } = event;\n if (data) {\n switch (data.type) {\n case 'builder.ping': {\n window.parent?.postMessage(\n {\n type: 'builder.pong',\n data: {},\n },\n '*'\n );\n break;\n }\n case 'builder.register': {\n // TODO: possibly do this for all...\n if (event.source === window) {\n break;\n }\n const options = data.data;\n if (!options) {\n break;\n }\n const { type, info } = options;\n // TODO: all must have name and can't conflict?\n let typeList = Builder.registry[type];\n if (!typeList) {\n typeList = Builder.registry[type] = [];\n }\n typeList.push(info);\n Builder.registryChange.next(Builder.registry);\n break;\n }\n case 'builder.settingsChange': {\n // TODO: possibly do this for all...\n if (event.source === window) {\n break;\n }\n const settings = data.data;\n if (!settings) {\n break;\n }\n Object.assign(Builder.settings, settings);\n Builder.settingsChange.next(Builder.settings);\n break;\n }\n case 'builder.registerEditor': {\n // TODO: possibly do this for all...\n if (event.source === window) {\n break;\n }\n const info = data.data;\n if (!info) {\n break;\n }\n const hasComponent = !!info.component;\n Builder.editors.every((thisInfo, index) => {\n if (info.name === thisInfo.name) {\n if (thisInfo.component && !hasComponent) {\n return false;\n } else {\n Builder.editors[index] = thisInfo;\n }\n return false;\n }\n return true;\n });\n break;\n }\n case 'builder.triggerAnimation': {\n Builder.animator.triggerAnimation(data.data);\n break;\n }\n case 'builder.contentUpdate':\n const key = data.data.key || data.data.alias || data.data.entry || data.data.modelName;\n const contentData = data.data.data; // hmmm...\n const observer = this.observersByKey[key];\n if (observer && !this.noEditorUpdates[key]) {\n observer.next([contentData]);\n }\n break;\n\n case 'builder.getComponents':\n window.parent?.postMessage(\n {\n type: 'builder.components',\n data: Builder.components.map(item => Builder.prepareComponentSpecToSend(item)),\n },\n '*'\n );\n break;\n\n case 'builder.editingModel':\n this.editingModel = data.data.model;\n break;\n\n case 'builder.registerComponent':\n const componentData = data.data;\n Builder.addComponent(componentData);\n break;\n\n case 'builder.blockContentLoading':\n if (typeof data.data.model === 'string') {\n this.blockContentLoading = data.data.model;\n }\n break;\n\n case 'builder.editingMode':\n const editingMode = data.data;\n if (editingMode) {\n this.editingMode = true;\n document.body.classList.add('builder-editing');\n } else {\n this.editingMode = false;\n document.body.classList.remove('builder-editing');\n }\n break;\n\n case 'builder.editingPageMode':\n const editingPageMode = data.data;\n Builder.editingPage = editingPageMode;\n break;\n\n case 'builder.overrideUserAttributes':\n const userAttributes = data.data;\n assign(Builder.overrideUserAttributes, userAttributes);\n this.flushGetContentQueue(true);\n // TODO: refetch too\n break;\n\n case 'builder.overrideTestGroup':\n const { variationId, contentId } = data.data;\n if (variationId && contentId) {\n this.setTestCookie(contentId, variationId);\n this.flushGetContentQueue(true);\n }\n break;\n case 'builder.evaluate': {\n const text = data.data.text;\n const args = data.data.arguments || [];\n const id = data.data.id;\n // tslint:disable-next-line:no-function-constructor-with-string-args\n const fn = new Function(text);\n let result: any;\n let error: Error | null = null;\n try {\n result = fn.apply(this, args);\n } catch (err) {\n error = toError(err);\n }\n\n if (error) {\n window.parent?.postMessage(\n {\n type: 'builder.evaluateError',\n data: { id, error: error.message },\n },\n '*'\n );\n } else {\n if (result && typeof result.then === 'function') {\n (result as Promise<any>)\n .then(finalResult => {\n window.parent?.postMessage(\n {\n type: 'builder.evaluateResult',\n data: { id, result: finalResult },\n },\n '*'\n );\n })\n .catch(console.error);\n } else {\n window.parent?.postMessage(\n {\n type: 'builder.evaluateResult',\n data: { result, id },\n },\n '*'\n );\n }\n }\n break;\n }\n }\n }\n });\n }\n\n observersByKey: { [key: string]: BehaviorSubject<BuilderContent[]> | undefined } = {};\n noEditorUpdates: { [key: string]: boolean } = {};\n\n get defaultCanTrack() {\n return Boolean(\n Builder.isBrowser &&\n navigator.userAgent.trim() &&\n !navigator.userAgent.match(\n /bot|crawler|spider|robot|crawling|prerender|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|phantom|headless|selenium|puppeteer/i\n ) &&\n !this.browserTrackingDisabled\n );\n }\n\n init(\n apiKey: string,\n canTrack = this.defaultCanTrack,\n req?: IncomingMessage,\n res?: ServerResponse,\n authToken?: string | null,\n apiVersion?: ApiVersion\n ) {\n if (req) {\n this.request = req;\n }\n if (res) {\n this.response = res;\n }\n if (!this.hasOverriddenCanTrack) {\n this.canTrack = canTrack;\n }\n this.apiKey = apiKey;\n if (authToken) {\n this.authToken = authToken;\n }\n if (apiVersion) {\n this.apiVersion = apiVersion;\n }\n return this;\n }\n\n get previewingModel() {\n const search = this.getLocation().search;\n const params = QueryString.parse((search || '').substr(1));\n return params['builder.preview'];\n }\n\n // TODO: allow adding location object as property and/or in constructor\n getLocation(): Url {\n let parsedLocation: any = {};\n\n // in ssr mode\n if (this.request) {\n parsedLocation = parse(this.request.url ?? '');\n } else if (typeof location === 'object') {\n // in the browser\n parsedLocation = parse(location.href);\n }\n\n // IE11 bug with parsed path being empty string\n // causes issues with our user targeting\n if (parsedLocation.pathname === '') {\n parsedLocation.pathname = '/';\n }\n\n return parsedLocation;\n }\n\n getUserAttributes(userAgent = this.userAgent || '') {\n const isMobile = {\n Android() {\n return userAgent.match(/Android/i);\n },\n BlackBerry() {\n return userAgent.match(/BlackBerry/i);\n },\n iOS() {\n return userAgent.match(/iPhone|iPod/i);\n },\n Opera() {\n return userAgent.match(/Opera Mini/i);\n },\n Windows() {\n return userAgent.match(/IEMobile/i) || userAgent.match(/WPDesktop/i);\n },\n any() {\n return (\n isMobile.Android() ||\n isMobile.BlackBerry() ||\n isMobile.iOS() ||\n isMobile.Opera() ||\n isMobile.Windows()\n );\n },\n };\n\n const isTablet = userAgent.match(/Tablet|iPad/i);\n\n const url = this.getLocation();\n\n return {\n urlPath: url.pathname,\n host: url.host || url.hostname,\n // TODO: maybe an option to choose to target off of mobile/tablet/desktop or just mobile/desktop\n device: isTablet ? 'tablet' : isMobile.any() ? 'mobile' : 'desktop',\n ...Builder.overrideUserAttributes,\n } as UserAttributes;\n }\n\n protected overrides: { [key: string]: string } = {};\n protected queryOptions: { [key: string]: string } = {};\n\n private getContentQueue: null | GetContentOptions[] = null;\n private priorContentQueue: null | GetContentOptions[] = null;\n\n setUserAttributes(options: object) {\n assign(Builder.overrideUserAttributes, options);\n if (this.canTrack) {\n this.setCookie(Builder.attributesCookieName, JSON.stringify(this.getUserAttributes()));\n }\n\n this.userAttributesChanged.next(options);\n }\n\n /**\n * Set user attributes just for tracking purposes.\n *\n * Do this so properties exist on event objects for querying insights, but\n * won't affect targeting\n *\n * Use this when you want to track properties but don't need to target off\n * of them to optimize cache efficiency\n */\n setTrackingUserAttributes(attributes: object) {\n assign(this.trackingUserAttributes, attributes);\n }\n\n get(\n modelName: string,\n options: GetContentOptions & {\n req?: IncomingMessage;\n res?: ServerResponse;\n apiKey?: string;\n authToken?: string;\n } = {}\n ) {\n let instance: Builder = this;\n let finalLocale =\n options.locale || options.userAttributes?.locale || this.getUserAttributes().locale;\n\n if (!('noTraverse' in options)) {\n options.noTraverse = false;\n }\n\n let finalOptions = {\n ...options,\n ...(finalLocale && {\n locale: String(finalLocale),\n userAttributes: {\n locale: String(finalLocale),\n ...options.userAttributes,\n },\n }),\n };\n if (!Builder.isBrowser) {\n instance = new Builder(\n options.apiKey || this.apiKey,\n options.req,\n options.res,\n undefined,\n options.authToken || this.authToken,\n options.apiVersion || this.apiVersion\n );\n instance.apiEndpoint = this.apiEndpoint;\n instance.setUserAttributes(this.getUserAttributes());\n } else {\n // NOTE: All these are when .init is not called and the customer\n // directly calls .get on the singleton instance of Builder\n if (options.apiKey && !this.apiKey) {\n this.apiKey = options.apiKey;\n }\n if (options.authToken && !this.authToken) {\n this.authToken = options.authToken;\n }\n if (options.apiVersion && !this.apiVersion) {\n this.apiVersion = options.apiVersion;\n }\n }\n return instance.queueGetContent(modelName, finalOptions).map(\n /* map( */ (matches: any[] | null) => {\n const match = matches && matches[0];\n if (Builder.isStatic) {\n return match;\n }\n\n const matchData = match && match.data;\n if (!matchData) {\n return null;\n }\n\n if (typeof matchData.blocksString !== 'undefined') {\n matchData.blocks = JSON.parse(matchData.blocksString);\n delete matchData.blocksString;\n }\n\n return {\n // TODO: add ab test info here and other high level stuff\n data: matchData,\n id: match.id,\n variationId: match.testVariationId || match.variationId || null,\n testVariationId: match.testVariationId || match.variationId || null,\n testVariationName: match.testVariationName || null,\n lastUpdated: match.lastUpdated || null,\n };\n }\n );\n // );\n }\n\n // TODO: entry id in options\n queueGetContent(modelName: string, options: GetContentOptions = {}) {\n // TODO: if query do modelName + query\n const key =\n options.key ||\n options.alias ||\n // TODO: SDKs only pass entry key when given to them, and never when editing...\n // options.entry ||\n\n // TODO: this is ugly - instead of multiple of same model with different options are sent\n // say requires key/alias. Or if not perhaps make a reliable hash of the options and use that.\n // TODO: store last user state on last request and if user attributes different now\n // give a warning that need to use keys to request new contente\n // (options &&\n // Object.keys(options).filter(key => key !== 'model').length &&\n // JSON.stringify({ model: modelName, ...options, initialContent: undefined })) ||\n modelName;\n\n const isEditingThisModel = this.editingModel === modelName;\n // TODO: include params in this key........\n const currentObservable = this.observersByKey[key] as BehaviorSubject<BuilderContent[]> | null;\n\n // if (options.query && options.query._id) {\n // this.flushGetContentQueue([options])\n // }\n\n if (this.apiKey === 'DEMO' && !this.overrides[key] && !options.initialContent) {\n options.initialContent = [];\n }\n\n const { initialContent } = options;\n\n // TODO: refresh option in options\n if (currentObservable && (!currentObservable.value || options.cache)) {\n // TODO: test if this ran, otherwise on 404 some observers may never be called...\n if (currentObservable.value) {\n nextTick(() => {\n // TODO: return a new observable and only that one fires subscribers, don't refire for existing ones\n currentObservable.next(currentObservable.value);\n });\n }\n return currentObservable;\n }\n if (isEditingThisModel) {\n if (Builder.isBrowser) {\n parent.postMessage({ type: 'builder.updateContent', data: { options } }, '*');\n }\n }\n if (!initialContent /* || isEditingThisModel */) {\n if (!this.getContentQueue) {\n this.getContentQueue = [];\n }\n\n this.getContentQueue.push({ ...options, model: modelName, key });\n if (this.getContentQueue && this.getContentQueue.length >= this.contentPerRequest) {\n const queue = this.getContentQueue.slice();\n this.getContentQueue = [];\n nextTick(() => {\n this.flushGetContentQueue(false, queue);\n });\n } else {\n nextTick(() => {\n this.flushGetContentQueue();\n });\n }\n }\n\n const observable = new BehaviorSubject<BuilderContent[]>(null as any);\n this.observersByKey[key] = observable;\n if (options.noEditorUpdates) {\n this.noEditorUpdates[key] = true;\n }\n if (initialContent) {\n nextTick(() => {\n // TODO: need to testModify this I think...?\n observable.next(initialContent);\n });\n }\n return observable;\n }\n\n // this is needed to satisfy the Angular SDK, which used to rely on the more complex version of `requestUrl`.\n // even though we only use `fetch()` now, we prefer to keep the old behavior and use the `fetch` that comes from\n // the core SDK for consistency\n requestUrl(\n url: string,\n options?: { headers: { [header: string]: number | string | string[] | undefined }; next?: any }\n ) {\n return getFetch()(url, this.addSdkHeaders(options)).then(res => res.json());\n }\n\n get host() {\n switch (this.env) {\n case 'qa':\n return 'https://qa.builder.io';\n case 'test':\n return 'https://builder-io-test.web.app';\n case 'fast':\n return 'https://fast.builder.io';\n case 'cloud':\n return 'https://cloud.builder.io';\n case 'cdn2':\n return 'https://cdn2.builder.io';\n case 'cdn-qa':\n return 'https://cdn-qa.builder.io';\n case 'development':\n case 'dev':\n return 'http://localhost:5000';\n case 'cdn-prod':\n return 'https://cdn.builder.io';\n default:\n return Builder.overrideHost || 'https://cdn.builder.io';\n }\n }\n\n private getSdkHeaders():\n | {\n 'X-Builder-SDK': string;\n 'X-Builder-SDK-GEN': '1';\n 'X-Builder-SDK-Version': string;\n }\n | {} {\n if (!Builder.sdkInfo) {\n return {};\n }\n\n return {\n 'X-Builder-SDK': Builder.sdkInfo.name,\n 'X-Builder-SDK-GEN': '1',\n 'X-Builder-SDK-Version': Builder.sdkInfo.version,\n } as const;\n }\n\n private addSdkHeaders(fetchOptions: any) {\n return {\n ...fetchOptions,\n headers: {\n ...fetchOptions.headers,\n ...this.getSdkHeaders(),\n },\n };\n }\n\n private makeFetchApiCall(url: string, requestOptions: any): Promise<any> {\n return getFetch()(url, this.addSdkHeaders(requestOptions));\n }\n\n /**\n * Flatten a nested MongoDB query object into a flat object with dot-separated keys.\n * $ keys are not flattened and are left as is.\n *\n * { foo: { bar: { $gt: 5 }}} -> { 'foo.bar': { '$gt': 5 }}\n * { foo: {'bar.id': { $elemMatch: { 'baz.id': { $in: ['abc', 'bcd'] }}}}} -> { 'foo.bar.id': { '$elemMatch': { 'baz.id': { '$in': ['abc', 'bcd'] }}}}\n */\n private flattenMongoQuery(obj: any, _current?: any, _res: any = {}): { [key: string]: string } {\n for (const key in obj) {\n const value = obj[key];\n const newKey = _current ? _current + '.' + key : key;\n if (\n value &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n !Object.keys(value).find(item => item.startsWith('$'))\n ) {\n this.flattenMongoQuery(value, newKey, _res);\n } else {\n _res[newKey] = value;\n }\n }\n return _res;\n }\n\n private flushGetContentQueue(usePastQueue = false, useQueue?: GetContentOptions[]) {\n if (!this.apiKey) {\n throw new Error(\n `Fetching content failed, expected apiKey to be defined instead got: ${this.apiKey}`\n );\n }\n\n if (this.apiVersion) {\n if (!['v1', 'v3'].includes(this.apiVersion)) {\n throw new Error(`Invalid apiVersion: expected 'v1' or 'v3', received '${this.apiVersion}'`);\n }\n } else {\n this.apiVersion = DEFAULT_API_VERSION;\n }\n\n if (!usePastQueue && !this.getContentQueue) {\n return;\n }\n\n const queue = useQueue || (usePastQueue ? this.priorContentQueue : this.getContentQueue) || [];\n\n // TODO: do this on every request send?\n this.getOverridesFromQueryString();\n\n const queryParams: ParamsMap = {\n // TODO: way to force a request to be in a separate queue. or just lower queue limit to be 1 by default\n omit: queue[0].omit ?? 'meta.componentsUsed',\n apiKey: this.apiKey,\n ...queue[0].options,\n ...this.queryOptions,\n };\n\n if (queue[0].locale) {\n queryParams.locale = queue[0].locale;\n }\n if (queue[0].fields) {\n queryParams.fields = queue[0].fields;\n }\n if (queue[0].format) {\n queryParams.format = queue[0].format;\n }\n if ('noTraverse' in queue[0]) {\n queryParams.noTraverse = queue[0].noTraverse;\n }\n if ('includeUnpublished' in queue[0]) {\n queryParams.includeUnpublished = queue[0].includeUnpublished;\n }\n if (queue[0].sort) {\n queryParams.sort = queue[0].sort;\n }\n\n const pageQueryParams: ParamsMap =\n (typeof location !== 'undefined'\n ? QueryString.parseDeep(location.search.substr(1))\n : undefined) || {}; // TODO: WHAT about SSR (this.request) ?\n\n const userAttributes =\n // FIXME: HACK: only checks first in queue for user attributes overrides, should check all\n // TODO: merge user attributes provided here with defaults and current user attiributes (?)\n queue && queue[0].userAttributes\n ? queue[0].userAttributes\n : this.targetContent\n ? this.getUserAttributes()\n : {\n urlPath: this.getLocation().pathname,\n };\n\n const fullUrlQueueItem = queue.find(item => !!item.includeUrl);\n if (fullUrlQueueItem) {\n const location = this.getLocation();\n if (location.origin) {\n queryParams.url = `${location.origin}${location.pathname}${location.search}`;\n }\n }\n\n const urlQueueItem = useQueue?.find(item => item.url);\n if (urlQueueItem?.url) {\n userAttributes.urlPath = urlQueueItem.url.split('?')[0];\n }\n // TODO: merge in the attribute from query string ones\n // TODO: make this an option per component/request\n queryParams.userAttributes = JSON.stringify(userAttributes);\n\n if (!usePastQueue && !useQueue) {\n this.priorContentQueue = queue;\n this.getContentQueue = null;\n }\n\n const cachebust =\n this.cachebust ||\n isIframe ||\n pageQueryParams.cachebust ||\n pageQueryParams['builder.cachebust'];\n\n if (cachebust || this.env !== 'production') {\n queryParams.cachebust = true;\n }\n\n if (Builder.isEditing) {\n queryParams.isEditing = true;\n }\n\n if (this.noCache || this.env !== 'production') {\n queryParams.noCache = true;\n }\n\n if (size(this.overrides)) {\n for (const key in this.overrides) {\n if (this.overrides.hasOwnProperty(key)) {\n queryParams[`overrides.${key}`] = this.overrides[key];\n }\n }\n }\n\n for (const options of queue) {\n const format = options.format;\n\n if (format) {\n queryParams.format = format;\n }\n // TODO: remove me and make permodel\n if (options.static) {\n queryParams.static = options.static;\n }\n\n if (options.cachebust) {\n queryParams.cachebust = options.cachebust;\n }\n\n if (isPositiveNumber(options.cacheSeconds)) {\n queryParams.cacheSeconds = options.cacheSeconds;\n }\n\n if (isPositiveNumber(options.staleCacheSeconds)) {\n queryParams.staleCacheSeconds = options.staleCacheSeconds;\n }\n\n if (this.apiEndpoint === 'content') {\n queryParams.includeRefs = true;\n }\n\n const properties: (keyof GetContentOptions)[] = [\n 'prerender',\n 'extractCss',\n 'limit',\n 'offset',\n 'query',\n 'preview',\n 'model',\n 'entry',\n 'rev',\n 'static',\n 'includeRefs',\n ];\n\n for (const key of properties) {\n const value = options[key];\n if (value !== undefined) {\n if (this.apiEndpoint === 'query') {\n queryParams.options = queryParams.options || {};\n queryParams.options[options.key!] = queryParams.options[options.key!] || {};\n queryParams.options[options.key!][key] = JSON.stringify(value);\n } else {\n queryParams[key] = JSON.stringify(value);\n }\n }\n }\n }\n if (this.preview && this.previewingModel === queue?.[0]?.model) {\n queryParams.preview = 'true';\n }\n const hasParams = Object.keys(queryParams).length > 0;\n\n // TODO: option to force dev or qa api here\n const host = this.host;\n\n const keyNames = queue.map(item => encodeURIComponent(item.key!)).join(',');\n\n if (this.overrideParams) {\n const params = omit(QueryString.parse(this.overrideParams), 'apiKey');\n assign(queryParams, params);\n }\n\n const format = queryParams.format;\n const isApiCallForCodegen = format === 'solid' || format === 'react';\n const isApiCallForCodegenOrQuery = isApiCallForCodegen || this.apiEndpoint === 'query';\n\n if (this.apiEndpoint === 'content') {\n if (queue[0].query) {\n delete queryParams.query;\n const objectToFlatten = { query: queue[0].query };\n const flattened = this.flattenMongoQuery(objectToFlatten);\n for (const key in flattened) {\n queryParams[key] = JSON.stringify(flattened[key]);\n }\n }\n }\n\n const queryStr = QueryString.stringifyDeep(queryParams);\n\n const fetchOptions = { headers: {}, ...queue[0].fetchOptions };\n if (this.authToken) {\n fetchOptions.headers = {\n ...fetchOptions.headers,\n Authorization: `Bearer ${this.authToken}`,\n };\n }\n\n let url;\n if (isApiCallForCodegen) {\n url = `${host}/api/v1/codegen/${this.apiKey}/${keyNames}`;\n } else if (this.apiEndpoint === 'query') {\n url = `${host}/api/v3/query/${this.apiKey}/${keyNames}`;\n } else {\n url = `${host}/api/v3/content/${queue[0].model}`;\n }\n\n url = url + (queryParams && hasParams ? `?${queryStr}` : '');\n\n const promise = this.makeFetchApiCall(url, fetchOptions)\n .then(res => res.json())\n .then(\n result => {\n for (const options of queue) {\n const keyName = options.key!;\n if (options.model === this.blockContentLoading && !options.noEditorUpdates) {\n continue;\n }\n\n const isEditingThisModel = this.editingModel === options.model;\n if (isEditingThisModel && Builder.isEditing) {\n parent.postMessage({ type: 'builder.updateContent', data: { options } }, '*');\n // return;\n }\n const observer = this.observersByKey[keyName];\n if (!observer) {\n return;\n }\n const data = isApiCallForCodegenOrQuery ? result[keyName] : result.results;\n const sorted = data; // sortBy(data, item => item.priority);\n if (data) {\n const testModifiedResults = Builder.isServer\n ? sorted\n : this.processResultsForTests(sorted);\n observer.next(testModifiedResults);\n } else {\n const search = this.getLocation().search;\n if ((search || '').includes('builder.preview=' + options.model)) {\n const previewData = {\n id: 'preview',\n name: 'Preview',\n data: {},\n };\n observer.next([previewData]);\n }\n observer.next([]);\n }\n }\n },\n err => {\n for (const options of queue) {\n const observer = this.observersByKey[options.key!];\n if (!observer) {\n return;\n }\n observer.error(err);\n }\n }\n );\n\n return promise;\n }\n\n private testCookiePrefix = 'builder.tests';\n\n private processResultsForTests(results: BuilderContent[]) {\n const mappedResults = results.map(item => {\n if (!item.variations) {\n return item;\n }\n const cookieValue = this.getTestCookie(item.id!);\n const cookieVariation = cookieValue === item.id ? item : item.variations[cookieValue];\n if (cookieVariation) {\n return {\n ...item,\n data: cookieVariation.data,\n variationId: cookieValue,\n testVariationId: cookieValue,\n testVariationName: cookieVariation.name,\n };\n }\n if (this.canTrack && item.variations && size(item.variations)) {\n let n = 0;\n const random = Math.random();\n for (const id in item.variations) {\n const variation = item.variations[id]!;\n const testRatio = variation.testRatio;\n n += testRatio!;\n if (random < n) {\n this.setTestCookie(item.id!, variation.id!);\n const variationName =\n variation.name || (variation.id === item.id ? 'Default variation' : '');\n return {\n ...item,\n data: variation.data,\n variationId: variation.id,\n testVariationId: variation.id,\n variationName: variationName,\n testVariationName: variationName,\n };\n }\n }\n this.setTestCookie(item.id!, item.id!);\n }\n return {\n ...item,\n variationId: item.id,\n ...(item.variations &&\n size(item.variations) && {\n testVariationId: item.id,\n testVariationName: 'Default variation',\n }),\n };\n });\n\n if (isIframe) {\n window.parent?.postMessage(\n { type: 'builder.contentResults', data: { results: mappedResults } },\n '*'\n );\n }\n\n return mappedResults;\n }\n\n private getTestCookie(contentId: string) {\n return this.getCookie(`${this.testCookiePrefix}.${contentId}`);\n }\n\n private cookieQueue: [string, string][] = [];\n\n private setTestCookie(contentId: string, variationId: string) {\n if (!this.canTrack) {\n this.cookieQueue.push([contentId, variationId]);\n return;\n }\n\n // 30 days from now\n const future = new Date();\n future.setDate(future.getDate() + 30);\n\n return this.setCookie(`${this.testCookiePrefix}.${contentId}`, variationId, future);\n }\n\n getCookie(name: string): any {\n if (this.cookies) {\n return this.cookies.get(name);\n }\n return Builder.isBrowser && getCookie(name);\n }\n\n setCookie(name: string, value: any, expires?: Date) {\n if (this.cookies && !(Builder.isServer && Builder.isStatic)) {\n return this.cookies.set(name, value, {\n expires,\n secure: this.getLocation().protocol === 'https:',\n });\n }\n return Builder.isBrowser && setCookie(name, value, expires);\n }\n\n getContent(modelName: string, options: GetContentOptions = {}) {\n if (!this.apiKey) {\n throw new Error(\n `Fetching content from model ${modelName} failed, expected apiKey to be defined instead got: ${this.apiKey}`\n );\n }\n return this.queueGetContent(modelName, options);\n }\n\n getAll(\n modelName: string,\n options: GetContentOptions & {\n req?: IncomingMessage;\n res?: ServerResponse;\n apiKey?: string;\n authToken?: string;\n } = {}\n ): Promise<BuilderContent[]> {\n let instance: Builder = this;\n if (!Builder.isBrowser) {\n instance = new Builder(\n options.apiKey || this.apiKey,\n options.req,\n options.res,\n false,\n options.authToken || this.authToken,\n options.apiVersion || this.apiVersion\n );\n instance.setUserAttributes(this.getUserAttributes());\n } else {\n // NOTE: All these are when .init is not called and the customer\n // directly calls .get on the singleton instance of Builder\n if (options.apiKey && !this.apiKey) {\n this.apiKey = options.apiKey;\n }\n if (options.authToken && !this.authToken) {\n this.authToken = options.authToken;\n }\n if (options.apiVersion && !this.apiVersion) {\n this.apiVersion = options.apiVersion;\n }\n }\n\n // Set noTraverse=true if NOT already passed by user, for query performance\n if (!('noTraverse' in options)) {\n options.noTraverse = true;\n }\n\n return instance\n .getContent(modelName, {\n limit: 30,\n ...options,\n key:\n options.key ||\n // Make the key include all options, so we don't reuse cache for the same content fetched\n // with different options\n Builder.isBrowser\n ? `${modelName}:${hash(omit(options, 'initialContent', 'req', 'res'))}`\n : undefined,\n })\n .promise();\n }\n}\n","import { Builder } from '../builder.class';\n\nexport const builder = new Builder(null, undefined, undefined, true);\nBuilder.singletonInstance = builder;\n"],"names":["Promise","serverOnlyRequire","parse","urlParse","hash"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/polyfills/custom-event-polyfill.js","../src/functions/next-tick.function.ts","../src/classes/query-string.class.ts","../src/classes/observable.class.ts","../src/classes/promise.class.ts","../src/functions/server-only-require.function.ts","../src/functions/fetch.function.ts","../src/functions/assign.function.ts","../src/functions/throttle.function.ts","../src/classes/animator.class.ts","../src/classes/cookies.class.ts","../src/functions/omit.function.ts","../src/functions/uuid.ts","../src/url.ts","../node_modules/hash-sum/hash-sum.js","../src/functions/to-error.ts","../src/types/api-version.ts","../src/sdk-version.ts","../src/builder.class.ts","../src/constants/builder.ts"],"sourcesContent":["(function () {\n if (typeof window === 'undefined' || typeof window.CustomEvent === 'function') return false;\n\n function CustomEvent(event, params) {\n params = params || { bubbles: false, cancelable: false, detail: null };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n window.CustomEvent = CustomEvent;\n})();\n","const isSafari =\n typeof window !== 'undefined' &&\n /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent);\n\nconst isClient = typeof window !== 'undefined';\n\n// TODO: queue all of these in a debounceNextTick\nexport function nextTick(fn: () => void) {\n // if (typeof process !== 'undefined' && process.nextTick) {\n // console.log('process.nextTick?');\n // process.nextTick(fn);\n // return;\n // }\n // FIXME: fix the real safari issue of this randomly not working\n if (!isClient || isSafari || typeof MutationObserver === 'undefined') {\n setTimeout(fn);\n return;\n }\n let called = 0;\n const observer = new MutationObserver(() => fn());\n const element = document.createTextNode('');\n observer.observe(element, {\n characterData: true,\n });\n // tslint:disable-next-line\n element.data = String((called = ++called));\n}\n","export type StringMap = Record<string, string>;\n\nconst PROPERTY_NAME_DENY_LIST = Object.freeze(['__proto__', 'prototype', 'constructor']);\n\n// TODO: unit tests\nexport class QueryString {\n static parseDeep(queryString: string) {\n const obj = this.parse(queryString);\n return this.deepen(obj);\n }\n\n static stringifyDeep(obj: any) {\n const map = this.flatten(obj);\n return this.stringify(map);\n }\n\n static parse(queryString: string): StringMap {\n const query: StringMap = {};\n const pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i].split('=');\n // TODO: node support?\n try {\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');\n } catch (error) {\n // Ignore malformed URI components\n }\n }\n return query;\n }\n\n static stringify(map: StringMap) {\n let str = '';\n for (const key in map) {\n if (map.hasOwnProperty(key)) {\n const value = map[key];\n if (str) {\n str += '&';\n }\n str += encodeURIComponent(key) + '=' + encodeURIComponent(value);\n }\n }\n return str;\n }\n\n static deepen(map: StringMap) {\n // FIXME; Should be type Tree = Record<string, string | Tree>\n // requires a typescript upgrade.\n const output: any = {};\n for (const k in map) {\n let t = output;\n const parts = k.split('.');\n const key = parts.pop()!;\n for (const part of parts) {\n assertAllowedPropertyName(part);\n t = t[part] = t[part] || {};\n }\n t[key] = map[k];\n }\n return output;\n }\n\n static flatten(obj: any, _current?: any, _res: any = {}): StringMap {\n for (const key in obj) {\n const value = obj[key];\n const newKey = _current ? _current + '.' + key : key;\n if (value && typeof value === 'object') {\n this.flatten(value, newKey, _res);\n } else {\n _res[newKey] = value;\n }\n }\n\n return _res;\n }\n}\n\nfunction assertAllowedPropertyName(name: string): asserts name {\n if (PROPERTY_NAME_DENY_LIST.indexOf(name) >= 0)\n throw new Error(`Property name \"${name}\" is not allowed`);\n}\n","export type Listener<T> = (value: T) => void;\n\nexport class Subscription<FunctionType = Function> {\n constructor(\n private listeners?: FunctionType[],\n private listener?: FunctionType\n ) {}\n\n unsubscribed = false;\n\n get closed() {\n return this.unsubscribed;\n }\n\n private readonly otherSubscriptions: Subscription[] = [];\n\n add(subscription: Subscription) {\n this.otherSubscriptions.push(subscription);\n }\n\n unsubscribe() {\n if (this.unsubscribed) {\n return;\n }\n if (this.listener && this.listeners) {\n const index = this.listeners.indexOf(this.listener);\n if (index > -1) {\n this.listeners.splice(index, 1);\n }\n }\n this.otherSubscriptions.forEach(sub => sub.unsubscribe());\n this.unsubscribed = true;\n }\n}\n\n// TODO: follow minimal basic spec: https://github.com/tc39/proposal-observable\nexport class BehaviorSubject<T = any, ErrorType = any> {\n constructor(public value: T) {}\n\n private listeners: Listener<T>[] = [];\n private errorListeners: Listener<ErrorType>[] = [];\n\n next(value: T) {\n this.value = value;\n for (const listener of this.listeners) {\n listener(value);\n }\n }\n\n // TODO: implement this as PIPE instead\n map<NewType = any>(fn: (item: T) => NewType) {\n const newSubject = new BehaviorSubject<NewType>(fn(this.value));\n // TODO: on destroy delete these\n this.subscribe(val => {\n newSubject.next(fn(val));\n });\n this.catch(err => {\n newSubject.error(err);\n });\n return newSubject;\n }\n\n catch(errorListener: Listener<ErrorType>) {\n this.errorListeners.push(errorListener);\n return new Subscription(this.errorListeners, errorListener);\n }\n\n error(error: ErrorType) {\n for (const listener of this.errorListeners) {\n listener(error);\n }\n }\n\n subscribe(listener: Listener<T>, errorListener?: Listener<ErrorType>) {\n this.listeners.push(listener);\n if (errorListener) {\n this.errorListeners.push(errorListener);\n }\n return new Subscription(this.listeners, listener);\n }\n\n toPromise() {\n return new Promise<T>((resolve, reject) => {\n const subscription = this.subscribe(\n value => {\n resolve(value);\n subscription.unsubscribe();\n },\n err => {\n reject(err);\n subscription.unsubscribe();\n }\n );\n });\n }\n\n promise() {\n return this.toPromise();\n }\n\n then: Promise<T>['then'] = (...args) => {\n return this.toPromise().then(...args);\n };\n}\n\n// TODO: make different classes\nexport const Observer = BehaviorSubject;\nexport const Observable = BehaviorSubject;\n","import { nextTick } from '../functions/next-tick.function';\n\nconst State = {\n Pending: 'Pending',\n Fulfilled: 'Fulfilled',\n Rejected: 'Rejected',\n};\n\nfunction isFunction(val: any) {\n return val && typeof val === 'function';\n}\n\nfunction isObject(val: any) {\n return val && typeof val === 'object';\n}\n\ninterface Handler<T> {\n onFulfilled: (val: T) => any;\n onRejected: (err: any) => any;\n}\n\nexport class TinyPromise<T = any> {\n private _state = State.Pending;\n private _handlers: Handler<T>[] = [];\n private _value: T | null = null;\n\n constructor(executor: (resolve: (val: T) => any, reject: (err: T) => any) => void) {\n executor(this._resolve.bind(this), this._reject.bind(this));\n }\n\n private _resolve(x: any) {\n if (x instanceof TinyPromise) {\n x.then(this._resolve.bind(this), this._reject.bind(this));\n } else if (isObject(x) || isFunction(x)) {\n let called = false;\n try {\n const thenable = (x as Promise<any>).then;\n if (isFunction(thenable)) {\n thenable.call(\n x,\n (result: any) => {\n if (!called) this._resolve(result);\n called = true;\n return undefined as any;\n },\n (error: any) => {\n if (!called) this._reject(error);\n called = true;\n return undefined as any;\n }\n );\n } else {\n this._fulfill(x);\n }\n } catch (ex) {\n if (!called) {\n this._reject(ex);\n }\n }\n } else {\n this._fulfill(x);\n }\n }\n\n private _fulfill(result: T) {\n this._state = State.Fulfilled;\n this._value = result;\n this._handlers.forEach(handler => this._callHandler(handler));\n }\n\n private _reject(error: any) {\n this._state = State.Rejected;\n this._value = error;\n this._handlers.forEach(handler => this._callHandler(handler));\n }\n\n private _isPending() {\n return this._state === State.Pending;\n }\n\n private _isFulfilled() {\n return this._state === State.Fulfilled;\n }\n\n private _isRejected() {\n return this._state === State.Rejected;\n }\n\n private _addHandler(onFulfilled: (val: T) => any, onRejected: (err: any) => any) {\n this._handlers.push({\n onFulfilled,\n onRejected,\n });\n }\n\n private _callHandler(handler: Handler<T>) {\n if (this._isFulfilled() && isFunction(handler.onFulfilled)) {\n handler.onFulfilled(this._value as T);\n } else if (this._isRejected() && isFunction(handler.onRejected)) {\n handler.onRejected(this._value);\n }\n }\n\n then(onFulfilled: (val: T) => any, onRejected: (err: any) => any) {\n switch (this._state) {\n case State.Pending: {\n return new TinyPromise((resolve, reject) => {\n this._addHandler(\n value => {\n nextTick(() => {\n try {\n if (isFunction(onFulfilled)) {\n resolve(onFulfilled(value));\n } else {\n resolve(value);\n }\n } catch (ex) {\n reject(ex);\n }\n });\n },\n error => {\n nextTick(() => {\n try {\n if (isFunction(onRejected)) {\n resolve(onRejected(error));\n } else {\n reject(error);\n }\n } catch (ex) {\n reject(ex);\n }\n });\n }\n );\n });\n }\n\n case State.Fulfilled: {\n return new TinyPromise((resolve, reject) => {\n nextTick(() => {\n try {\n if (isFunction(onFulfilled)) {\n resolve(onFulfilled(this._value as T));\n } else {\n resolve(this._value as T);\n }\n } catch (ex) {\n reject(ex);\n }\n });\n });\n }\n\n case State.Rejected: {\n return new TinyPromise((resolve, reject) => {\n nextTick(() => {\n try {\n if (isFunction(onRejected)) {\n resolve(onRejected(this._value));\n } else {\n reject(this._value);\n }\n } catch (ex) {\n reject(ex);\n }\n });\n });\n }\n }\n }\n}\n\nexport default (typeof Promise !== 'undefined' ? Promise : TinyPromise) as PromiseConstructor;\n","// Webpack workaround to conditionally require certain external modules\n// only on the server and not bundle them on the client\nlet serverOnlyRequire: NodeRequire;\ntry {\n // tslint:disable-next-line:no-eval\n serverOnlyRequire = eval('require');\n} catch (err) {\n // all good\n serverOnlyRequire = (() => null) as any;\n}\n\nexport default serverOnlyRequire;\n","import Promise from '../classes/promise.class';\nimport serverOnlyRequire from './server-only-require.function';\n\nexport interface SimplifiedFetchOptions {\n body?: string;\n headers?: { [key: string]: string };\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n credentials?: 'include';\n mode?: RequestMode;\n}\n\nexport interface SimpleFetchResponse {\n ok: boolean;\n status: number;\n statusText: string;\n url: string;\n clone: () => any;\n text: () => Promise<string>;\n json: () => Promise<any>;\n blob: () => Promise<Blob>;\n headers: {\n keys: () => string[];\n entries: () => [string, string][];\n get: (n: string) => string;\n has: (n: string) => boolean;\n };\n}\n\nfunction promiseResolve<T>(value: T) {\n return new Promise<T>(resolve => resolve(value));\n}\n\n// Adapted from https://raw.githubusercontent.com/developit/unfetch/master/src/index.mjs\nfunction tinyFetch(url: string, options: SimplifiedFetchOptions = {}) {\n return new Promise<SimpleFetchResponse>((resolve, reject) => {\n const request = new XMLHttpRequest();\n\n request.open(options.method || 'get', url, true);\n\n if (options.headers) {\n for (const i in options.headers) {\n request.setRequestHeader(i, options.headers[i]);\n }\n }\n\n request.withCredentials = options.credentials === 'include';\n\n request.onload = () => {\n resolve(response());\n };\n\n request.onerror = reject;\n\n request.send(options.body);\n\n function response() {\n const keys: string[] = [];\n const all: [string, string][] = [];\n const headers: { [key: string]: string } = {};\n let header: string | undefined = undefined;\n\n request\n .getAllResponseHeaders()\n .replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (_match, _key, value) => {\n let key = _key;\n keys.push((key = key.toLowerCase()));\n all.push([key, value]);\n header = headers[key];\n headers[key] = header ? `${header},${value}` : value;\n return '';\n });\n\n return {\n ok: ((request.status / 100) | 0) === 2, // 200-299\n status: request.status,\n statusText: request.statusText,\n url: request.responseURL,\n clone: response,\n text: () => promiseResolve(request.responseText),\n json: () => promiseResolve(request.responseText).then(JSON.parse),\n blob: () => promiseResolve(new Blob([request.response])),\n headers: {\n keys: () => keys,\n entries: () => all,\n get: (n: string) => headers[n.toLowerCase()],\n has: (n: string) => n.toLowerCase() in headers,\n },\n };\n }\n });\n}\n\nexport function getFetch() {\n // If fetch is defined, in the browser, via polyfill, or in a Cloudflare worker, use it.\n let _fetch: typeof fetch | undefined = undefined;\n if (globalThis.fetch) {\n _fetch ??= globalThis.fetch as any;\n } else if (typeof window === 'undefined') {\n // If fetch is not defined, in a Node.js environment, use node-fetch.\n try {\n // node-fetch@^3 is ESM only, and will throw error on require.\n _fetch ??= serverOnlyRequire('node-fetch');\n } catch (e) {\n // If node-fetch is not installed, use tiny-fetch.\n console.warn(\n 'node-fetch is not installed. consider polyfilling fetch or installing node-fetch.'\n );\n console.warn(e);\n }\n }\n\n // Otherwise, use tiny-fetch.\n return _fetch ?? tinyFetch;\n}\n","export function assign(target: object, ...args: any[]) {\n const to = Object(target);\n\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index];\n\n if (nextSource != null) {\n // Skip over if undefined or null\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\n","export function throttle(func: Function, wait: number, options: any = {}) {\n let context: any;\n let args: any;\n let result: any;\n let timeout = null as any;\n let previous = 0;\n const later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function (this: any) {\n const now = Date.now();\n if (!previous && options.leading === false) previous = now;\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n","import { throttle } from '../functions/throttle.function';\nimport { assign } from '../functions/assign.function';\n\nconst camelCaseToKebabCase = (str?: string) =>\n str ? str.replace(/([A-Z])/g, g => `-${g[0].toLowerCase()}`) : '';\n\nexport interface AnimationStep {\n // First one is always start state\n // isStartState?: boolean;\n styles: { [key: string]: string };\n delay?: number;\n}\n\nexport interface Animation {\n elementId: string;\n trigger: string;\n steps: AnimationStep[];\n duration: number;\n delay?: number;\n easing?: string;\n // TODO: deprecate - only here because of an API bug\n id?: string;\n // only apply in scrollInView\n repeat?: boolean;\n // only apply in scrollInView, number from -1 to 1\n thresholdPercent?: number;\n}\n\nexport class Animator {\n bindAnimations(animations: Animation[]) {\n for (const animation of animations) {\n switch (animation.trigger) {\n case 'pageLoad':\n this.triggerAnimation(animation);\n break;\n case 'hover':\n this.bindHoverAnimation(animation);\n break;\n case 'scrollInView':\n this.bindScrollInViewAnimation(animation);\n break;\n }\n }\n }\n\n private warnElementNotPresent(id: string) {\n console.warn(`Cannot animate element: element with ID ${id} not found!`);\n }\n\n private augmentAnimation(animation: Animation, element: HTMLElement) {\n const stylesUsed = this.getAllStylesUsed(animation);\n const computedStyle: any = getComputedStyle(element);\n // const computedStyle = getComputedStyle(element);\n // // FIXME: this will break if original load is in one reponsive size then resize to another hmmm\n // Need to use transform instead of left since left can change on screen sizes\n const firstStyles = animation.steps[0].styles;\n const lastStyles = animation.steps[animation.steps.length - 1]!.styles;\n const bothStyles = [firstStyles, lastStyles];\n\n // FIXME: this won't work as expected for augmented animations - may need the editor itself to manage this\n for (const styles of bothStyles) {\n for (const style of stylesUsed) {\n if (!(style in styles)) {\n styles[style] = computedStyle[style];\n }\n }\n }\n }\n\n private getAllStylesUsed(animation: Animation) {\n const properties: (keyof CSSStyleDeclaration)[] = [];\n for (const step of animation.steps) {\n for (const key in step.styles) {\n if (properties.indexOf(key as any) === -1) {\n properties.push(key as any);\n }\n }\n }\n return properties;\n }\n\n triggerAnimation(animation: Animation) {\n // TODO: do for ALL elements\n const elements = Array.prototype.slice.call(\n document.getElementsByClassName(animation.elementId || animation.id || '')\n ) as HTMLElement[];\n if (!elements.length) {\n this.warnElementNotPresent(animation.elementId || animation.id || '');\n return;\n }\n\n Array.from(elements).forEach(element => {\n this.augmentAnimation(animation, element);\n // TODO: do this properly, may have other animations of different properties\n\n // TODO: only override the properties\n // TODO: if there is an entrance and hover animation, the transition duration will get effed\n // element.setAttribute('style', '');\n\n // const styledUsed = this.getAllStylesUsed(animation);\n element.style.transition = 'none';\n element.style.transitionDelay = '0';\n assign(element.style, animation.steps[0].styles);\n // TODO: queue/batch these timeouts\n // TODO: only include properties explicitly set in the animation\n // using Object.keys(styles)\n setTimeout(() => {\n element.style.transition = `all ${animation.duration}s ${camelCaseToKebabCase(\n animation.easing\n )}`;\n if (animation.delay) {\n element.style.transitionDelay = animation.delay + 's';\n }\n assign(element.style, animation.steps[1].styles);\n // TODO: maybe remove/reset transitoin property after animation duration\n\n // TODO: queue timers\n setTimeout(\n () => {\n // TODO: what if has other transition (reset back to what it was)\n element.style.transition = '';\n element.style.transitionDelay = '';\n },\n (animation.delay || 0) * 1000 + animation.duration * 1000 + 100\n );\n });\n });\n }\n\n bindHoverAnimation(animation: Animation) {\n // TODO: is it multiple binding when editing...?\n // TODO: unbind on element remove\n // TODO: apply to ALL elements\n const elements = Array.prototype.slice.call(\n document.getElementsByClassName(animation.elementId || animation.id || '')\n ) as HTMLElement[];\n if (!elements.length) {\n this.warnElementNotPresent(animation.elementId || animation.id || '');\n return;\n }\n\n Array.from(elements).forEach(element => {\n this.augmentAnimation(animation, element);\n\n const defaultState = animation.steps[0].styles;\n const hoverState = animation.steps[1].styles;\n function attachDefaultState() {\n assign(element!.style, defaultState);\n }\n function attachHoverState() {\n assign(element!.style, hoverState);\n }\n attachDefaultState();\n element.addEventListener('mouseenter', attachHoverState);\n element.addEventListener('mouseleave', attachDefaultState);\n // TODO: queue/batch these timeouts\n setTimeout(() => {\n element.style.transition = `all ${animation.duration}s ${camelCaseToKebabCase(\n animation.easing\n )}`;\n if (animation.delay) {\n element.style.transitionDelay = animation.delay + 's';\n }\n });\n });\n }\n\n // TODO: unbind on element remove\n bindScrollInViewAnimation(animation: Animation) {\n // TODO: apply to ALL matching elements\n const elements = Array.prototype.slice.call(\n document.getElementsByClassName(animation.elementId || animation.id || '')\n ) as HTMLElement[];\n if (!elements.length) {\n this.warnElementNotPresent(animation.elementId || animation.id || '');\n return;\n }\n\n // TODO: if server side rendered and scrolled into view don't animate...\n Array.from(elements).forEach(element => {\n this.augmentAnimation(animation, element);\n\n let triggered = false;\n let pendingAnimation = false;\n function immediateOnScroll() {\n if (!triggered && isScrolledIntoView(element)) {\n triggered = true;\n pendingAnimation = true;\n setTimeout(() => {\n assign(element!.style, animation.steps[1].styles);\n if (!animation.repeat) {\n document.removeEventListener('scroll', onScroll);\n }\n setTimeout(\n () => {\n pendingAnimation = false;\n if (!animation.repeat) {\n element.style.transition = '';\n element.style.transitionDelay = '';\n }\n },\n (animation.duration + (animation.delay || 0)) * 1000 + 100\n );\n });\n } else if (\n animation.repeat &&\n triggered &&\n !pendingAnimation &&\n !isScrolledIntoView(element)\n ) {\n // we want to repeat the animation every time the the element is out of view and back again\n triggered = false;\n assign(element!.style, animation.steps[0].styles);\n }\n }\n\n // TODO: roll all of these in one for more efficiency of checking all the rects\n const onScroll = throttle(immediateOnScroll, 200, { leading: false });\n\n // TODO: fully in view or partially\n function isScrolledIntoView(elem: HTMLElement) {\n const rect = elem.getBoundingClientRect();\n\n const windowHeight = window.innerHeight;\n\n const thresholdPercent = (animation.thresholdPercent || 0) / 100;\n const threshold = thresholdPercent * windowHeight;\n\n // TODO: partial in view? or what if element is larger than screen itself\n return (\n rect.bottom > threshold && rect.top < windowHeight - threshold // Element is peeking top or bottom\n // (rect.top > 0 && rect.bottom < window.innerHeight) || // element fits within the screen and is fully on screen (not hanging off at all)\n // (rect.top < 0 && rect.bottom > window.innerHeight) // element is larger than the screen and hangs over the top and bottom\n );\n }\n\n const defaultState = animation.steps[0].styles;\n function attachDefaultState() {\n assign(element!.style, defaultState);\n }\n attachDefaultState();\n\n // TODO: queue/batch these timeouts!\n setTimeout(() => {\n element.style.transition = `all ${animation.duration}s ${camelCaseToKebabCase(\n animation.easing\n )}`;\n if (animation.delay) {\n element.style.transitionDelay = animation.delay + 's';\n }\n });\n\n // TODO: one listener for everything\n document.addEventListener('scroll', onScroll, { capture: true, passive: true } as any);\n\n // Do an initial check\n immediateOnScroll();\n });\n }\n}\n","/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\nimport { IncomingMessage, ServerResponse } from 'http';\ninterface Options {\n secure?: boolean;\n expires?: Date;\n}\n\nclass Cookies {\n secure?: boolean;\n\n constructor(\n private request: IncomingMessage,\n private response: ServerResponse\n ) {}\n\n get(name: string) {\n const header = this.request.headers['cookie'] as string;\n if (!header) {\n return;\n }\n\n const match = header.match(getPattern(name));\n if (!match) {\n return;\n }\n\n const value = match[1];\n return value;\n }\n\n set(name: string, value: string, opts: Options) {\n const res = this.response;\n const req = this.request;\n let headers = res.getHeader('Set-Cookie') || [];\n // TODO: just make this always true\n const secure =\n this.secure !== undefined\n ? !!this.secure\n : (req as any).protocol === 'https' || (req.connection as any).encrypted;\n const cookie = new Cookie(name, value, opts);\n\n if (typeof headers === 'string') {\n headers = [headers];\n }\n\n if (!secure && opts && opts.secure) {\n throw new Error('Cannot send secure cookie over unencrypted connection');\n }\n\n cookie.secure = secure;\n if (opts && 'secure' in opts) {\n cookie.secure = !!opts.secure;\n }\n\n pushCookie(headers, cookie);\n\n const setHeader = res.setHeader;\n setHeader.call(res, 'Set-Cookie', headers);\n return this;\n }\n}\n\nclass Cookie {\n path = '/';\n expires?: Date;\n domain: string | undefined = undefined;\n httpOnly = true;\n sameSite?: boolean | string = false;\n secure = false;\n overwrite = false;\n name = '';\n value = '';\n maxAge?: number;\n\n constructor(name: string, value: string, attrs: Options) {\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument value is invalid');\n }\n\n if (!value) {\n this.expires = new Date(0);\n }\n\n this.name = name;\n this.value = value || '';\n\n if (attrs.expires) {\n this.expires = attrs.expires;\n }\n if (attrs.secure) {\n this.secure = attrs.secure;\n }\n }\n\n toString() {\n return `${this.name}=${this.value}`;\n }\n\n toHeader() {\n let header = this.toString();\n\n if (this.maxAge) {\n this.expires = new Date(Date.now() + this.maxAge);\n }\n if (this.path) {\n header += `; path=${this.path}`;\n }\n if (this.expires) {\n header += `; expires=${this.expires.toUTCString()}`;\n }\n if (this.domain) {\n header += `; domain=${this.domain}`;\n }\n\n // TODO: samesite=none by default (?)\n header += `; SameSite=${this.sameSite === true ? 'strict' : 'None'}`;\n\n // TODO: On by default\n if (this.secure) {\n header += '; secure';\n }\n if (this.httpOnly) {\n header += '; httponly';\n }\n\n return header;\n }\n}\n\nfunction getPattern(name: string) {\n return new RegExp(`(?:^|;) *${name.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')}=([^;]*)`);\n}\n\nfunction pushCookie(headers: any, cookie: Cookie) {\n if (cookie.overwrite) {\n for (let i = headers.length - 1; i >= 0; i--) {\n if (headers[i].indexOf(`${cookie.name}=`) === 0) {\n headers.splice(i, 1);\n }\n }\n }\n\n headers.push(cookie.toHeader());\n}\n\nexport default Cookies;\n","export function omit<T extends object>(obj: T, ...values: (keyof T)[]): Partial<T> {\n const newObject = Object.assign({}, obj);\n for (const key of values) {\n delete (newObject as any)[key];\n }\n return newObject;\n}\n","/**\n * @credit https://stackoverflow.com/a/2117523\n */\nexport function uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Slightly cleaner and smaller UUIDs\n */\nexport function uuid() {\n return uuidv4().replace(/-/g, '');\n}\n","import { UrlWithStringQuery } from 'url';\n\ntype Fix<T> = { [P in keyof T]: T[P] | null };\n\n// It seems that the types for UrlWithStringQuery are not correct.\nexport type UrlLike = Fix<UrlWithStringQuery>;\n\nexport function emptyUrl(): UrlLike {\n return {\n query: null,\n port: null,\n auth: null,\n hash: null,\n host: null,\n hostname: null,\n href: null,\n path: null,\n pathname: null,\n protocol: null,\n search: null,\n slashes: null,\n };\n}\n\n// Replacement for `url.parse` using `URL` global object that works with relative paths.\n// Assumptions: this function operates in a NodeJS environment.\nexport function parse(url: string): UrlLike {\n const out: UrlLike = emptyUrl();\n\n let u;\n const pathOnly = url === '' || url[0] === '/';\n\n if (pathOnly) {\n u = new URL(url, 'http://0.0.0.0/');\n out.href = u.href;\n out.href = out.href?.slice(14); // remove 'http://0.0.0.0/'\n } else {\n u = new URL(url);\n out.href = u.href;\n out.port = u.port === '' ? null : u.port;\n out.hash = u.hash === '' ? null : u.hash;\n out.host = u.host;\n out.hostname = u.hostname;\n out.href = u.href;\n out.pathname = u.pathname;\n out.protocol = u.protocol;\n out.slashes = url[u.protocol.length] === '/'; // check if the mimetype is proceeded by a slash\n }\n\n out.search = u.search;\n out.query = u.search.slice(1); // remove '?'\n out.path = `${u.pathname}${u.search}`;\n out.pathname = u.pathname;\n\n return out;\n}\n","'use strict';\n\nfunction pad (hash, len) {\n while (hash.length < len) {\n hash = '0' + hash;\n }\n return hash;\n}\n\nfunction fold (hash, text) {\n var i;\n var chr;\n var len;\n if (text.length === 0) {\n return hash;\n }\n for (i = 0, len = text.length; i < len; i++) {\n chr = text.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0;\n }\n return hash < 0 ? hash * -2 : hash;\n}\n\nfunction foldObject (hash, o, seen) {\n return Object.keys(o).sort().reduce(foldKey, hash);\n function foldKey (hash, key) {\n return foldValue(hash, o[key], key, seen);\n }\n}\n\nfunction foldValue (input, value, key, seen) {\n var hash = fold(fold(fold(input, key), toString(value)), typeof value);\n if (value === null) {\n return fold(hash, 'null');\n }\n if (value === undefined) {\n return fold(hash, 'undefined');\n }\n if (typeof value === 'object' || typeof value === 'function') {\n if (seen.indexOf(value) !== -1) {\n return fold(hash, '[Circular]' + key);\n }\n seen.push(value);\n\n var objHash = foldObject(hash, value, seen)\n\n if (!('valueOf' in value) || typeof value.valueOf !== 'function') {\n return objHash;\n }\n\n try {\n return fold(objHash, String(value.valueOf()))\n } catch (err) {\n return fold(objHash, '[valueOf exception]' + (err.stack || err.message))\n }\n }\n return fold(hash, value.toString());\n}\n\nfunction toString (o) {\n return Object.prototype.toString.call(o);\n}\n\nfunction sum (o) {\n return pad(foldValue(0, o, '', []).toString(16), 8);\n}\n\nmodule.exports = sum;\n","/**\n * Safe conversion to error type. Intended to be used in catch blocks where the\n * value is not guaranteed to be an error.\n *\n * @example\n * try {\n * throw new Error('Something went wrong')\n * }\n * catch (err: unknown) {\n * const error: Error = toError(err)\n * }\n */\nexport function toError(err: unknown): Error {\n if (err instanceof Error) return err;\n return new Error(String(err));\n}\n","export type ApiVersion = 'v1' | 'v3';\nexport const DEFAULT_API_VERSION: ApiVersion = 'v3';\n","export const SDK_VERSION = '6.1.3';\n","import './polyfills/custom-event-polyfill';\nimport { IncomingMessage, ServerResponse } from 'http';\nimport { nextTick } from './functions/next-tick.function';\nimport { QueryString } from './classes/query-string.class';\nimport { BehaviorSubject } from './classes/observable.class';\nimport { getFetch, SimplifiedFetchOptions } from './functions/fetch.function';\nimport { assign } from './functions/assign.function';\nimport { throttle } from './functions/throttle.function';\nimport { Animator } from './classes/animator.class';\nimport { BuilderElement } from './types/element';\nimport Cookies from './classes/cookies.class';\nimport { omit } from './functions/omit.function';\nimport { BuilderContent } from './types/content';\nimport { uuid } from './functions/uuid';\nimport { parse as urlParse } from './url';\n\n// Do not change this to a require! It throws runtime errors - rollup\n// will preserve the `require` and throw runtime errors\nimport hash from 'hash-sum';\nimport { toError } from './functions/to-error';\nimport { emptyUrl, UrlLike } from './url';\nimport { DEFAULT_API_VERSION, ApiVersion } from './types/api-version';\nimport { SDK_VERSION } from './sdk-version';\n\nexport type Url = any;\n\nfunction datePlusMinutes(minutes = 30) {\n return new Date(Date.now() + minutes * 60000);\n}\n\nconst isPositiveNumber = (thing: unknown) =>\n typeof thing === 'number' && !isNaN(thing) && thing >= 0;\n\nexport const isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative';\n\nexport const validEnvList = [\n 'production',\n 'qa',\n 'test',\n 'development',\n 'dev',\n 'cdn-qa',\n 'cloud',\n 'fast',\n 'cdn2',\n 'cdn-prod',\n];\n\nfunction getQueryParam(url: string, variable: string): string | null {\n const query = url.split('?')[1] || '';\n const vars = query.split('&');\n for (let i = 0; i < vars.length; i++) {\n const pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) === variable) {\n return decodeURIComponent(pair[1]);\n }\n }\n return null;\n}\n\nconst urlParser = {\n parse(url: string): UrlLike {\n const el: HTMLAnchorElement = document.createElement('a') as any;\n el.href = url;\n const out: any = {};\n\n const props = [\n 'username',\n 'password',\n 'host',\n 'hostname',\n 'port',\n 'protocol',\n 'origin',\n 'pathname',\n 'search',\n 'hash',\n ] as const;\n\n for (const prop of props) {\n out[prop] = el[prop];\n }\n\n // IE 11 pathname handling workaround\n // (IE omits preceeding '/', unlike other browsers)\n if (\n (out.pathname || out.pathname === '') &&\n typeof out.pathname === 'string' &&\n out.pathname.indexOf('/') !== 0\n ) {\n out.pathname = '/' + out.pathname;\n }\n\n return out;\n },\n};\n\nconst parse: (url: string) => UrlLike = isReactNative\n ? () => emptyUrl()\n : typeof window === 'object'\n ? urlParser.parse\n : urlParse;\n\nfunction setCookie(name: string, value: string, expires?: Date) {\n try {\n let expiresString = '';\n\n // TODO: need to know if secure server side\n if (expires) {\n expiresString = '; expires=' + expires.toUTCString();\n }\n\n const secure = isBrowser ? location.protocol === 'https:' : true;\n document.cookie =\n name +\n '=' +\n (value || '') +\n expiresString +\n '; path=/' +\n (secure ? '; secure; SameSite=None' : '');\n } catch (err) {\n console.warn('Could not set cookie', err);\n }\n}\n\nfunction getCookie(name: string) {\n try {\n return (\n decodeURIComponent(\n document.cookie.replace(\n new RegExp(\n '(?:(?:^|.*;)\\\\s*' +\n encodeURIComponent(name).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') +\n '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'\n ),\n '$1'\n )\n ) || null\n );\n } catch (err) {\n console.warn('Could not get cookie', err);\n }\n}\n\nfunction size(object: object) {\n return Object.keys(object).length;\n}\n\nfunction find<T = any>(target: T[], callback: (item: T, index: number, list: T[]) => boolean) {\n const list = target;\n // Makes sures is always has an positive integer as length.\n const length = list.length >>> 0;\n const thisArg = arguments[1];\n for (let i = 0; i < length; i++) {\n const element = list[i];\n if (callback.call(thisArg, element, i, list)) {\n return element;\n }\n }\n}\n\nconst sessionStorageKey = 'builderSessionId';\nconst localStorageKey = 'builderVisitorId';\n\nexport const isBrowser = typeof window !== 'undefined' && !isReactNative;\nexport const isIframe = isBrowser && window.top !== window.self;\n\nexport interface ParamsMap {\n [key: string]: any;\n}\n\ntype TrackingHook = (\n eventData: Event,\n context: { content?: BuilderContent; [key: string]: any }\n) => Event | undefined;\n\ninterface EventData {\n contentId?: string;\n ownerId: string;\n variationId?: string;\n userAttributes?: any;\n targetSelector?: string;\n targetBuilderElement?: string;\n unique?: boolean;\n metadata?: any | string;\n meta?: any | string;\n sessionId?: string;\n visitorId?: string;\n amount?: number;\n}\n// TODO: share interfaces with API\ninterface Event {\n type: string;\n data: EventData;\n}\n\n/**\n * Attributes that can be used for custom targeting. {@link\n * https://www.builder.io/c/docs/guides/targeting-and-scheduling}\n */\nexport interface UserAttributes {\n [key: string]:\n | undefined\n | string\n | string[]\n | boolean\n | boolean[]\n | number\n | number[]\n | Record<string, any>;\n /**\n * URL path of the current user.\n */\n urlPath?: string;\n /**\n * @deprecated\n * @hidden\n */\n queryString?: string | ParamsMap;\n /**\n * @deprecated\n * @hidden\n */\n device?: 'mobile' | 'tablet' | 'desktop';\n /**\n * @deprecated\n * @hidden\n */\n location?: any;\n /**\n * @deprecated\n * @hidden\n */\n userAgent?: string;\n /**\n * @deprecated\n * @hidden\n */\n referrer?: string;\n /**\n * @deprecated\n * @hidden\n */\n entryMedium?: string;\n /**\n * @deprecated\n * @hidden\n */\n language?: string;\n /**\n * @deprecated\n * @hidden\n */\n browser?: string;\n /**\n * @deprecated\n * @hidden\n */\n cookie?: string;\n /**\n * @deprecated\n * @hidden\n */\n newVisitor?: boolean;\n /**\n * @deprecated\n * @hidden\n */\n operatingSystem?: string;\n}\n\ntype AllowEnrich =\n | { apiVersion?: Extract<ApiVersion, 'v1'> }\n | { apiVersion?: Extract<ApiVersion, 'v3'>; enrich?: boolean }\n | { apiVersion?: never; enrich?: boolean };\n\nexport type GetContentOptions = AllowEnrich & {\n /**\n * Optional fetch options to be passed as the second argument to the `fetch` function.\n */\n fetchOptions?: object;\n\n /**\n * User attribute key value pairs to be used for targeting\n * https://www.builder.io/c/docs/custom-targeting-attributes\n *\n * e.g.\n * ```js\n * userAttributes: {\n * urlPath: '/',\n * returnVisitor: true,\n * }\n * ```\n */\n userAttributes?: UserAttributes;\n /**\n * Alias for userAttributes.urlPath except it can handle a full URL (optionally with host,\n * protocol, query, etc) and we will parse out the path.\n */\n url?: string;\n /**\n * @package\n */\n includeUrl?: boolean;\n /**\n * Include content of references in the response.\n * If you use the `reference` field to pull in other content without this\n * enabled we will not fetch that content for the final response.\n * @deprecated use `enrich` instead\n */\n includeRefs?: boolean;\n /**\n * Seconds to cache content. Sets the max-age of the cache-control header\n * response header.\n *\n * Use a higher value for better performance, lower for content that will change more frequently\n *\n * @see {@link https://www.builder.io/c/docs/query-api#__next:~:text=%26includeRefs%3Dtrue-,cacheSeconds,-No}\n */\n cacheSeconds?: number;\n /**\n * Builder.io uses stale-while-revalidate caching at the CDN level. This means we always serve\n * from edge cache and update caches in the background for maximum possible performance. This also\n * means that the more frequently content is requested, the more fresh it will be. The longest we\n * will ever hold something in stale cache is 1 day by default, and you can set this to be shorter\n * yourself as well. We suggest keeping this high unless you have content that must change rapidly\n * and gets very little traffic.\n *\n * @see {@link https://www.fastly.com/blog/prevent-application-network-instability-serve-stale-content}\n */\n staleCacheSeconds?: number;\n /**\n * Maximum number of results to return. Defaults to `1`.\n */\n limit?: number;\n /**\n * Use to specify an offset for pagination of results. The default is 0.\n */\n offset?: number;\n /**\n * Mongodb style query of your data. E.g.:\n *\n * ```js\n * query: {\n * id: 'abc123',\n * data: {\n * myCustomField: { $gt: 20 },\n * }\n * }\n * ```\n *\n * See more info on MongoDB's query operators and format.\n *\n * @see {@link https://docs.mongodb.com/manual/reference/operator/query/}\n */\n query?: any;\n /**\n * Bust through all caches. Not recommended for production (for performance),\n * but can be useful for development and static builds (so the static site has\n * fully fresh / up to date content)\n */\n cachebust?: boolean;\n /**\n * Convert any visual builder content to HTML.\n *\n * This will be on data.html of the response's content entry object json.\n */\n prerender?: boolean;\n /**\n * Extract any styles to a separate css property when generating HTML.\n */\n extractCss?: boolean;\n /**\n * @package\n *\n * `BuilderContent` to render instead of fetching.\n */\n initialContent?: any;\n /**\n * The name of the model to fetch content for.\n */\n model?: string;\n /**\n * Set to `false` to not cache responses when running on the client.\n */\n cache?: boolean;\n\n /**\n * Set to the current locale in your application if you want localized inputs to be auto-resolved, should match one of the locales keys in your space settings\n * Learn more about adding or removing locales [here](https://www.builder.io/c/docs/add-remove-locales)\n */\n locale?: string;\n /**\n * @package\n *\n * Indicate that the fetch request is for preview purposes.\n */\n preview?: boolean;\n /**\n * Specific content entry ID to fetch.\n */\n entry?: string;\n /**\n * @package\n * @deprecated\n * @hidden\n */\n alias?: string;\n /**\n * Only include these fields.\n * Note: 'omit' takes precedence over 'fields'\n *\n * @example\n * ```\n * fields: 'id, name, data.customField'\n * ```\n */\n fields?: string;\n /**\n * Omit only these fields.\n * Note: 'omit' takes precedence over 'fields'\n *\n * @example\n * ```\n * omit: 'data.bigField,data.blocks'\n * ```\n */\n omit?: string;\n key?: string;\n /**\n * @package\n *\n * Affects HTML generation for specific targets.\n */\n format?: 'amp' | 'email' | 'html' | 'react' | 'solid';\n /**\n * @deprecated\n * @hidden\n */\n noWrap?: true;\n /**\n * @package\n *\n * Specific string to use for cache busting. e.g. every time we generate\n * HTML we generate a rev (a revision ID) and we send that with each request\n * on the client, such that if we generate new server HTML we get a new rev\n * and we use that to bust the cache because even though the content ID may\n * be the same, it could be an updated version of this content that needs to\n * be fresh.\n */\n rev?: string;\n /**\n * @package\n *\n * Tell the API that when generating HTML to generate it in static mode for\n * a/b tests instead of the older way we did this\n */\n static?: boolean;\n /**\n * Additional query params of the Content API to send.\n */\n options?: { [key: string]: any };\n /**\n * @package\n *\n * Don't listen to updates in the editor - this is useful for embedded\n * symbols so they don't accidentally listen to messages as you are editing\n * content thinking they should updates when they actually shouldn't.\n */\n noEditorUpdates?: boolean;\n\n /**\n * If set to `true`, it will lazy load symbols/references.\n * If set to `false`, it will render the entire content tree eagerly.\n * @deprecated use `enrich` instead\n */\n noTraverse?: boolean;\n\n /**\n * Property to order results by.\n * Use 1 for ascending and -1 for descending.\n *\n * The key is what you're sorting on, so the following example sorts by createdDate\n * and because the value is 1, the sort is ascending.\n *\n * @example\n * ```\n * createdDate: 1\n * ```\n */\n sort?: { [key: string]: 1 | -1 };\n\n /**\n * Include content entries in a response that are still in\n * draft mode and un-archived. Default is false.\n */\n includeUnpublished?: boolean;\n};\n\nexport type Class = {\n name?: string;\n new (...args: any[]): any;\n};\n\ninterface Map<K, V> {\n clear(): void;\n delete(key: K): boolean;\n entries(): IterableIterator<[K, V]>;\n forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;\n get(key: K): V;\n has(key: K): boolean;\n keys(): IterableIterator<K>;\n set(key: K, value?: V): Map<K, V>;\n size: number;\n values(): IterableIterator<V>;\n [Symbol.iterator](): IterableIterator<[K, V]>;\n}\n\n/**\n * This is the interface for inputs in `Builder.registerComponent`\n *\n * ```js\n * Builder.registerComponent(MyComponent, {\n * inputs: [{ name: 'title', type: 'text' }] // <- Input[]\n * })\n * ```\n *\n * Learn more about registering custom components [here](https://www.builder.io/c/docs/custom-react-components)\n */\nexport interface Input {\n /** This is the name of the component prop this input represents */\n name: string;\n /** A friendlier name to show in the UI if the component prop name is not ideal for end users */\n friendlyName?: string;\n /** @hidden @deprecated */\n description?: string;\n /** A default value to use */\n defaultValue?: any;\n /**\n * The type of input to use, such as 'text'\n *\n * See all available inputs [here](https://www.builder.io/c/docs/custom-components-input-types)\n * and you can create your own custom input types and associated editor UIs with [plugins](https://www.builder.io/c/docs/extending/plugins)\n */\n type: string;\n /** Is this input mandatory or not */\n required?: boolean;\n /** @hidden */\n autoFocus?: boolean;\n subFields?: readonly Input[];\n /**\n * When input is of `type` `object`, use this field to collapse multiple inputs\n * in the Visual Editor by default and preserve screen space.\n */\n folded?: boolean;\n /**\n * When input is of `type` `object`, provide guidance in the Visual Editor\n * on how to edit this object's contents.\n */\n keysHelperText?: string;\n\n /**\n * Additional text to render in the UI to give guidance on how to use this\n *\n * @example\n * ```js\n * helperText: 'Be sure to use a proper URL, starting with \"https://\"'\n * 111\n */\n helperText?: string;\n /** @hidden */\n allowedFileTypes?: readonly string[];\n /** @hidden */\n imageHeight?: number;\n /** @hidden */\n behavior?: string;\n /** @hidden */\n imageWidth?: number;\n /** @hidden */\n mediaHeight?: number;\n /** @hidden */\n mediaWidth?: number;\n /** @hidden */\n hideFromUI?: boolean;\n /** @hidden */\n modelId?: string;\n /**\n * Number field type validation maximum accepted input\n */\n max?: number;\n /**\n * Number field type validation minimum accepted input\n */\n min?: number;\n /**\n * Number field type step size when using arrows\n */\n step?: number;\n\n /**\n * Set this to `true` to show the editor for this input when\n * children of this component are selected. This is useful for things\n * like Tabs, such that users may not always select the Tabs component\n * directly but will still be looking for how to add additional tabs\n */\n broadcast?: boolean;\n /**\n * Set this to `true` to show the editor for this input when\n * group locked parents of this component are selected. This is useful\n * to bubble up important inputs for locked groups, like text and images\n */\n bubble?: boolean;\n /**\n * Set this to `true` if you want this component to be translatable\n */\n localized?: boolean;\n /** @hidden */\n options?: { [key: string]: any };\n /**\n * For \"text\" input type, specifying an enum will show a dropdown of options instead\n */\n enum?:\n | readonly string[]\n | readonly { label: string; value: string | number | boolean; helperText?: string }[];\n /** Regex field validation for all string types (text, longText, html, url, etc) */\n regex?: {\n /** pattern to test, like \"^\\/[a-z]$\" */\n pattern: string;\n /** flags for the RegExp constructor, e.g. \"gi\" */\n options?: string;\n /**\n * Friendly message to display to end-users if the regex fails, e.g.\n * \"You must use a relative url starting with '/...' \"\n */\n message: string;\n };\n /**\n * Set this to `true` to put this under the \"show more\" section of\n * the options editor. Useful for things that are more advanced\n * or more rarely used and don't need to be too prominent\n */\n advanced?: boolean;\n /** @hidden */\n onChange?: (\n options: any,\n previousOptions?: any\n ) => Promise<void> | ((options: any, previousOptions?: any) => void) | string | void | undefined;\n /** @hidden */\n code?: boolean;\n /** @hidden */\n richText?: boolean;\n /** @hidden */\n showIf?: ((options: Map<string, any>) => boolean) | string;\n /** @hidden */\n copyOnAdd?: boolean;\n /**\n * Use optionally with inputs of type `reference`. Restricts the content entry picker to a specific model by name.\n */\n model?: string;\n\n meta?: Record<string, any>;\n}\n\n/**\n * This is the interface for the options for `Builder.registerComponent`\n *\n * ```js\n * Builder.registerComponent(YourComponent, {\n * // <- Component options\n * })\n * ```\n *\n * Learn more about registering custom components [here](https://www.builder.io/c/docs/custom-react-components)\n */\nexport interface Component {\n /**\n * Name your component something unique, e.g. 'MyButton'. You can override built-in components\n * by registering a component with the same name, e.g. 'Text', to replace the built-in text component\n */\n name: string;\n /** @hidden @deprecated */\n description?: string;\n /**\n * Link to a documentation page for this component\n */\n docsLink?: string;\n /**\n * Link to an image to be used as an icon for this component in Builder's editor\n *\n * @example\n * ```js\n * image: 'https://some-cdn.com/my-icon-for-this-component.png'\n * ```\n */\n image?: string;\n /**\n * Link to a screenshot shown when user hovers over the component in Builder's editor\n * use https://builder.io/upload to upload your screeshot, for easier resizing by Builder.\n */\n screenshot?: string;\n\n /**\n * When overriding built-in components, if you don't want any special behavior that\n * the original has, set this to `true` to skip the default behavior\n *\n * Default behaviors include special \"virtual options\", such as a custom\n * aspect ratio editor for Images, or a special column editor for Columns\n *\n * Learn more about overriding built-in components here: https://www.builder.io/c/docs/custom-components-overriding\n */\n override?: boolean;\n\n /**\n * Input schema for your component for users to fill in the options via a UI\n * that translate to this components props\n */\n inputs?: readonly Input[];\n /** @hidden @deprecated */\n class?: any;\n /** @hidden @deprecated */\n type?: 'angular' | 'webcomponent' | 'react' | 'vue';\n /**\n * Default styles to apply when droppged into the Builder.io editor\n *\n * @example\n * ```js\n * defaultStyles: {\n * appearance: 'none',\n * paddingTop: '15px',\n * paddingBottom: '15px',\n * paddingLeft: '25px',\n * paddingRight: '25px',\n * backgroundColor: '#000000',\n * color: 'white',\n * borderRadius: '4px',\n * }\n * ```\n */\n defaultStyles?: { [key: string]: string };\n /**\n * Turn on if your component can accept children. Be sure to use in combination with\n * withChildren(YourComponent) like here\n * github.com/BuilderIO/builder/blob/master/examples/react-design-system/src/components/HeroWithChildren/HeroWithChildren.builder.js#L5\n */\n canHaveChildren?: boolean;\n /** @hidden */\n fragment?: boolean;\n /**\n * Do not wrap a component in a dom element. Be sure to use {...props.attributes} with this option\n * like here github.com/BuilderIO/builder/blob/master/packages/react/src/blocks/forms/Input.tsx#L34\n */\n noWrap?: boolean;\n /**\n * Default children\n */\n defaultChildren?: readonly BuilderElement[];\n /**\n * Default options to merge in when creating this block\n */\n defaults?: Partial<BuilderElement>;\n /** @hidden @deprecated */\n hooks?: { [key: string]: string | Function };\n /**\n * Hide your component in editor, useful for gradually deprecating components\n */\n hideFromInsertMenu?: boolean;\n /** Custom tag name (for custom webcomponents only) */\n tag?: string;\n /** @hidden @deprecated */\n static?: boolean;\n /**\n * Passing a list of model names will restrict using the component to only the models listed here, otherwise it'll be available for all models\n */\n models?: readonly string[];\n\n /**\n * Whether the component is a React Server Component\n */\n isRSC?: boolean;\n\n /**\n * Specify restrictions direct children must match\n */\n childRequirements?: {\n /** Message to show when this doesn't match, e.g. \"Children of 'Columns' must be a 'Column'\" */\n message: string;\n /** Simple way to say children must be a specific component name */\n component?: string;\n /**\n * More advanced - specify a MongoDB-style query (using sift.js github.com/crcn/sift.js)\n * of what the children objects should match, e.g.\n *\n * @example\n * query: {\n * // Child of this element must be a 'Button' or 'Text' component\n * 'component.name': { $in: ['Button', 'Text'] }\n * }\n */\n query?: any;\n };\n\n /**\n * Specify restrictions any parent must match\n */\n requiresParent?: {\n /** Message to show when this doesn't match, e.g. \"'Add to cart' buttons must be within a 'Product box'\" */\n message: string;\n /** Simple way to say a parent must be a specific component name, e.g. 'Product box' */\n component?: string;\n\n /**\n * More advanced - specify a MongoDB-style query (using sift.js github.com/crcn/sift.js)\n * of what at least one parent in the parents hierarchy should match, e.g.\n *\n * @example\n * query: {\n * // Thils element must be somewhere inside either a 'Product box' or 'Collection' component\n * 'component.name': { $in: ['Product Box', 'Collection'] }\n * }\n */\n query?: any;\n };\n\n friendlyName?: string;\n\n /**\n * Use to restrict access to your component based on a the current user permissions\n * By default components will show to all users\n * for more information on permissions in builder check https://www.builder.io/c/docs/guides/roles-and-permissions\n */\n requiredPermissions?: Array<Permission>;\n\n meta?: { [key: string]: any };\n}\n\ntype Permission = 'read' | 'publish' | 'editCode' | 'editDesigns' | 'admin' | 'create';\n\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends Array<infer U>\n ? Array<DeepPartial<U>>\n : T[P] extends ReadonlyArray<infer U>\n ? ReadonlyArray<DeepPartial<U>>\n : DeepPartial<T[P]>;\n};\n\nexport interface InsertMenuItem {\n name: string;\n icon?: string;\n item: DeepPartial<BuilderElement>;\n}\n\n/**\n * Use this to register custom sections in the Insert menu, for instance\n * to make new sections to organize your custom components\n *\n * ![Example of what a custom section looks like](https://cdn.builder.io/api/v1/image/assets%2F7f7bbcf72a1a4d72bac5daa359e7befd%2Fe5f2792e9c0f44ed89a9dcb77b945858)\n *\n * @example\n * ```js\n * Builder.register('insertMenu', {\n * name: 'Our components',\n * items: [\n * { name: 'Hero' },\n * { name: 'Double Columns' },\n * { name: 'Triple Columns' },\n * { name: 'Dynamic Columns' },\n * ],\n * })\n * ```\n *\n * You can make as many custom sections as you like\n *\n * See a complete usage example [here](https://github.com/builderio/builder/blob/main/examples/react-design-system/src/builder-settings.js)\n */\nexport interface InsertMenuConfig {\n name: string;\n priority?: number;\n persist?: boolean;\n advanced?: boolean;\n items: readonly InsertMenuItem[];\n}\n\nexport function BuilderComponent(info: Partial<Component> = {}) {\n return Builder.Component(info);\n}\n\n// TODO\ntype Settings = any;\n\nexport interface Action {\n name: string;\n inputs?: readonly Input[];\n returnType?: Input;\n action: (options: Record<string, any>) => string;\n /**\n * Is an action for expression (e.g. calculating a binding like a formula\n * to fill a value based on locale) or a function (e.g. something to trigger\n * on an event like add to cart) or either (e.g. a custom code block)\n */\n kind: 'expression' | 'function' | 'any';\n /**\n * Globally unique ID for an action, e.g. \"@builder.io:setState\"\n */\n id: string;\n}\n\nexport class Builder {\n static VERSION = SDK_VERSION;\n\n static components: Component[] = [];\n static singletonInstance: Builder;\n /**\n * Makes it so that a/b tests generate code like {@link\n * https://www.builder.io/blog/high-performance-no-code#__next:~:text=Static%20generated%20A%2FB%20testing}\n * instead of the old way where we render only one test group at a time on the\n * server. This is the preferred/better way not and we should ultimately make it\n * the default\n */\n static isStatic = true;\n static animator = new Animator();\n\n static nextTick = nextTick;\n static throttle = throttle;\n\n static editors: any[] = [];\n static trustedHosts: string[] = [\n '*.beta.builder.io',\n 'beta.builder.io',\n 'builder.io',\n 'localhost',\n 'qa.builder.io',\n ];\n static serverContext: any;\n static plugins: any[] = [];\n\n static actions: Action[] = [];\n static registry: { [key: string]: any[] } = {};\n static overrideHost: string | undefined;\n static attributesCookieName = 'builder.userAttributes';\n\n /**\n * @todo `key` property on any info where if a key matches a current\n * key it gets removed\n */\n static register(type: 'insertMenu', info: InsertMenuConfig): void;\n static register(type: string, info: any): void;\n static register(type: string, info: any) {\n if (type === 'plugin') {\n info = this.serializeIncludingFunctions(info, true);\n }\n\n // TODO: all must have name and can't conflict?\n let typeList = this.registry[type];\n if (!typeList) {\n typeList = this.registry[type] = [];\n }\n typeList.push(info);\n if (Builder.isBrowser) {\n const message = {\n type: 'builder.register',\n data: {\n type,\n info,\n },\n };\n try {\n parent.postMessage(message, '*');\n if (parent !== window) {\n window.postMessage(message, '*');\n }\n } catch (err) {\n console.debug('Could not postmessage', err);\n }\n }\n this.registryChange.next(this.registry);\n }\n\n static registryChange = new BehaviorSubject({} as typeof Builder.registry);\n\n static registerEditor(info: any) {\n if (Builder.isBrowser) {\n window.postMessage(\n {\n type: 'builder.registerEditor',\n data: omit(info, 'component'),\n },\n '*'\n );\n const { hostname } = location;\n\n if (!Builder.isTrustedHost(hostname)) {\n console.error(\n 'Builder.registerEditor() called in the wrong environment! You cannot load custom editors from your app, they must be loaded through the Builder.io app itself. Follow the readme here for more details: https://github.com/builderio/builder/tree/master/plugins/cloudinary or contact chat us in our Spectrum community for help: https://spectrum.chat/builder'\n );\n }\n }\n this.editors.push(info);\n }\n\n static registerPlugin(info: any) {\n this.plugins.push(info);\n }\n\n static registerAction(action: Action) {\n this.actions.push(action);\n\n if (Builder.isBrowser) {\n const actionClone = JSON.parse(JSON.stringify(action));\n if (action.action) {\n actionClone.action = action.action.toString();\n }\n window.parent?.postMessage(\n {\n type: 'builder.registerAction',\n data: actionClone,\n },\n '*'\n );\n }\n }\n\n static registerTrustedHost(host: string) {\n this.trustedHosts.push(host);\n }\n\n /**\n * @param context @type {import('isolated-vm').Context}\n * Use this function to control the execution context of custom code on the server.\n * const ivm = require('isolated-vm');\n * const isolate = new ivm.Isolate({ memoryLimit: 128 });\n * const context = isolate.createContextSync();\n * Builder.setServerContext(context);\n */\n static setServerContext(context: any) {\n this.serverContext = context;\n }\n\n static isTrustedHost(hostname: string) {\n const isTrusted =\n this.trustedHosts.findIndex(trustedHost =>\n trustedHost.startsWith('*.')\n ? hostname.endsWith(trustedHost.slice(1))\n : trustedHost === hostname\n ) > -1;\n\n return isTrusted;\n }\n\n static isTrustedHostForEvent(event: MessageEvent) {\n if (event.origin === 'null') {\n return false;\n }\n const url = parse(event.origin);\n return url.hostname && Builder.isTrustedHost(url.hostname);\n }\n\n static runAction(action: Action | string) {\n // TODO\n const actionObject =\n typeof action === 'string' ? find(this.actions, item => item.name === action) : action;\n\n if (!actionObject) {\n throw new Error(`Action not found: ${action}`);\n }\n }\n\n static fields(name: string, fields: readonly Input[]) {\n window.parent?.postMessage(\n {\n type: 'builder.fields',\n data: { name, fields },\n },\n '*'\n );\n }\n\n private static _editingPage = false;\n\n static isIframe = isIframe;\n static isBrowser = isBrowser;\n static isReactNative = isReactNative;\n static isServer = !isBrowser && !isReactNative;\n static previewingModel = Builder.isBrowser && getQueryParam(location.href, 'builder.preview');\n\n static settings: Settings = {};\n static settingsChange = new BehaviorSubject<Settings>({});\n\n /**\n * @deprecated\n * @hidden\n *\n * Use Builder.register('editor.settings', {}) instead.\n */\n static set(settings: Settings): void {\n Builder.register('editor.settings', settings);\n }\n\n static import(packageName: string) {\n if (!Builder.isBrowser) {\n // TODO: server side support *maybe*\n console.warn('Builder.import used on the server - this should only be used in the browser');\n return;\n }\n const { System } = window as any;\n\n if (!System) {\n console.warn('System.js not available. Please include System.js when using Builder.import');\n return;\n }\n return System.import(`https://cdn.builder.io/systemjs/${packageName}`);\n }\n\n // TODO: this is quick and dirty, do better implementation later. Also can be unreliable\n // if page 301s etc. Use a query param instead? also could have issues with redirects. Injecting var could\n // work but is async...\n static isEditing = Boolean(\n isIframe &&\n ((document.referrer && document.referrer.match(/builder\\.io|localhost:1234/)) ||\n location.search.indexOf('builder.frameEditing=') !== -1)\n );\n\n static isPreviewing = Boolean(\n isBrowser &&\n (location.search.indexOf('builder.preview=') !== -1 ||\n location.search.indexOf('builder.frameEditing=') !== -1)\n );\n\n // useCdnApi = false;\n\n static get editingPage() {\n return this._editingPage;\n }\n\n static set editingPage(editingPage) {\n this._editingPage = editingPage;\n if (isBrowser && isIframe) {\n if (editingPage) {\n document.body.classList.add('builder-editing-page');\n } else {\n document.body.classList.remove('builder-editing-page');\n }\n }\n }\n\n private static serializeIncludingFunctions(info: any, isForPlugin?: boolean) {\n const serializeFn = (fnValue: Function) => {\n const fnStr = fnValue.toString().trim();\n\n // we need to account for a few different fn syntaxes:\n // 1. `function name(args) => {code}`\n // 2. `name(args) => {code}`\n // 3. `(args) => {}`\n // 4. `args => {}`\n // 5. `async function(args) {code}`\n // 6. `async (args) => {}`\n // 7. `async args => {}`\n const isArrowWithoutParens = /^[a-zA-Z0-9_]+\\s*=>/i.test(fnStr);\n const appendFunction =\n !fnStr.startsWith('function') &&\n !fnStr.startsWith('async') &&\n !fnStr.startsWith('(') &&\n !isArrowWithoutParens;\n\n return `return (${appendFunction ? 'function ' : ''}${fnStr}).apply(this, arguments)`;\n };\n\n const objToReturn = JSON.parse(\n JSON.stringify(info, (key, value) => {\n const shouldNotSerializeFn = isForPlugin && key === 'onSave';\n if (typeof value === 'function' && !shouldNotSerializeFn) {\n return serializeFn(value);\n }\n return value;\n })\n );\n\n if (isForPlugin) {\n objToReturn.onSave = info.onSave;\n }\n\n return objToReturn;\n }\n\n private static prepareComponentSpecToSend(spec: Component): Component {\n return {\n ...this.serializeIncludingFunctions(spec),\n class: undefined,\n };\n }\n\n static registerBlock(component: any, options: Component) {\n this.registerComponent(component, options);\n }\n\n static registerComponent(component: any, options: Component) {\n const spec = {\n class: component,\n ...component.builderOptions,\n ...options,\n };\n this.addComponent(spec);\n const editable =\n options.models && this.singletonInstance.editingModel\n ? isBrowser && options.models.includes(this.singletonInstance.editingModel)\n : isBrowser;\n if (editable) {\n const sendSpec = this.prepareComponentSpecToSend(spec);\n window.parent?.postMessage(\n {\n type: 'builder.registerComponent',\n data: sendSpec,\n },\n '*'\n );\n }\n }\n\n private static addComponent(component: Component) {\n const current = find(this.components, item => item.name === component.name);\n if (current) {\n // FIXME: why does sometimes we get an extra post without class - probably\n // from postMessage handler wrong in some place\n if (current.class && !component.class) {\n return;\n }\n this.components.splice(this.components.indexOf(current), 1, component);\n } else {\n this.components.push(component);\n }\n }\n\n // TODO: style guide, etc off this system as well?\n static component(info: Partial<Component> = {}) {\n return (component: Class) => {\n const spec = { ...info, class: component };\n if (!spec.name) {\n spec.name = component.name;\n }\n this.addComponent(spec as Component);\n\n const sendSpec = this.prepareComponentSpecToSend(spec as Component);\n // TODO: serialize component name and inputs\n if (isBrowser) {\n window.parent?.postMessage(\n {\n type: 'builder.registerComponent',\n data: sendSpec,\n },\n '*'\n );\n }\n return component;\n };\n }\n\n static isReact = false;\n static sdkInfo = undefined as\n | {\n name: string;\n version: string;\n }\n | undefined;\n\n static get Component() {\n return this.component;\n }\n\n private eventsQueue: Event[] = [];\n\n private throttledClearEventsQueue = throttle(() => {\n this.processEventsQueue();\n // Extend the session cookie\n this.setCookie(sessionStorageKey, this.sessionId, datePlusMinutes(30));\n }, 5);\n\n private processEventsQueue() {\n if (!this.eventsQueue.length) {\n return;\n }\n const events = this.eventsQueue;\n this.eventsQueue = [];\n\n const fullUserAttributes = {\n ...Builder.overrideUserAttributes,\n ...this.trackingUserAttributes,\n };\n for (const event of events) {\n if (!event.data.metadata) {\n event.data.metadata = {};\n }\n if (!event.data.metadata.user) {\n event.data.metadata.user = {};\n }\n Object.assign(event.data.metadata.user, fullUserAttributes, event.data.metadata.user);\n }\n\n const host = this.host;\n\n getFetch()(`${host}/api/v1/track`, {\n method: 'POST',\n body: JSON.stringify({ events }),\n headers: {\n 'content-type': 'application/json',\n ...this.getSdkHeaders(),\n },\n mode: 'cors',\n }).catch(() => {\n // Not the end of the world\n });\n }\n\n env: string = 'production';\n\n sessionId = this.getSessionId();\n\n targetContent = true;\n\n contentPerRequest = 1;\n\n // TODO: make array or function\n allowCustomFonts = true;\n\n private cookies: Cookies | null = null;\n\n // TODO: api options object\n private cachebust = false;\n private overrideParams = '';\n private noCache = false;\n private preview = false;\n\n get browserTrackingDisabled() {\n return Builder.isBrowser && Boolean((window as any).builderNoTrack || !navigator.cookieEnabled);\n }\n\n get canTrack() {\n return this.canTrack$.value;\n }\n\n set canTrack(canTrack) {\n this.hasOverriddenCanTrack = true;\n if (this.canTrack !== canTrack) {\n this.canTrack$.next(canTrack);\n }\n }\n\n get apiVersion() {\n return this.apiVersion$.value;\n }\n\n set apiVersion(apiVersion: ApiVersion | undefined) {\n if (this.apiVersion !== apiVersion) {\n this.apiVersion$.next(apiVersion);\n }\n }\n\n get apiEndpoint() {\n return this.apiEndpoint$.value;\n }\n\n set apiEndpoint(apiEndpoint: 'content' | 'query') {\n if (this.apiEndpoint !== apiEndpoint) {\n this.apiEndpoint$.next(apiEndpoint);\n }\n }\n\n /**\n * Dictates which API endpoint is used when fetching content. Allows `'content'` and `'query'`.\n * Defaults to `'query'`.\n */\n private apiEndpoint$ = new BehaviorSubject<'content' | 'query'>('query');\n private apiVersion$ = new BehaviorSubject<ApiVersion | undefined>(undefined);\n private canTrack$ = new BehaviorSubject(!this.browserTrackingDisabled);\n private hasOverriddenCanTrack = false;\n private apiKey$ = new BehaviorSubject<string | null>(null);\n private authToken$ = new BehaviorSubject<string | null>(null);\n private contentId$ = new BehaviorSubject<string | null>(null);\n\n userAttributesChanged = new BehaviorSubject<any>(null);\n\n get editingMode() {\n return this.editingMode$.value;\n }\n\n set editingMode(value) {\n if (value !== this.editingMode) {\n this.editingMode$.next(value);\n }\n }\n\n editingMode$ = new BehaviorSubject(isIframe);\n\n get editingModel() {\n return this.editingModel$.value;\n }\n\n set editingModel(value) {\n if (value !== this.editingModel) {\n this.editingModel$.next(value);\n }\n }\n\n private findParentElement(\n target: HTMLElement,\n callback: (element: HTMLElement) => boolean,\n checkElement = true\n ): HTMLElement | null {\n if (!(target instanceof HTMLElement)) {\n return null;\n }\n let parent: HTMLElement | null = checkElement ? target : target.parentElement;\n do {\n if (!parent) {\n return null;\n }\n\n const matches = callback(parent);\n if (matches) {\n return parent;\n }\n } while ((parent = parent.parentElement));\n\n return null;\n }\n\n private findBuilderParent(target: HTMLElement) {\n return this.findParentElement(target, el => {\n const id = el.getAttribute('builder-id') || el.id;\n return Boolean(id && id.indexOf('builder-') === 0);\n });\n }\n\n // TODO: decorator to do this stuff with the get/set (how do with typing too? compiler?)\n editingModel$ = new BehaviorSubject<null | string>(null);\n\n setUserAgent(userAgent: string) {\n this.userAgent = userAgent || '';\n }\n userAgent: string = (typeof navigator === 'object' && navigator.userAgent) || '';\n\n trackingHooks: TrackingHook[] = [];\n\n /**\n * Set a hook to modify events being tracked from builder, such as impressions and clicks\n *\n * For example, to track the model ID of each event associated with content for querying\n * by mode, you can do\n *\n * builder.setTrackingHook((event, context) => {\n * if (context.content) {\n * event.data.metadata.modelId = context.content.modelId\n * }\n * })\n */\n setTrackingHook(hook: TrackingHook) {\n this.trackingHooks.push(hook);\n }\n\n track(eventName: string, properties: Partial<EventData> = {}, context?: any) {\n // TODO: queue up track requests and fire them off when canTrack set to true - otherwise may get lots of clicks with no impressions\n if (isIframe || !isBrowser || Builder.isPreviewing) {\n return;\n }\n\n const apiKey = this.apiKey;\n if (!apiKey) {\n console.error(\n 'Builder integration error: Looks like the Builder SDK has not been initialized properly (your API key has not been set). Make sure you are calling `builder.init(\"«YOUR-API-KEY»\");` as early as possible in your application\\'s code.'\n );\n return;\n }\n\n let eventData: Event = JSON.parse(\n JSON.stringify({\n type: eventName,\n data: {\n ...omit(properties, 'meta'),\n metadata: {\n sdkVersion: Builder.VERSION,\n url: location.href,\n ...properties.meta,\n ...properties.metadata,\n },\n ownerId: apiKey,\n userAttributes: this.getUserAttributes(),\n sessionId: this.sessionId,\n visitorId: this.visitorId,\n },\n })\n );\n\n for (const hook of this.trackingHooks) {\n const returnValue = hook(eventData, context || {});\n if (returnValue) {\n eventData = returnValue;\n }\n }\n\n // batch events\n this.eventsQueue.push(eventData);\n\n if (this.canTrack) {\n this.throttledClearEventsQueue();\n }\n }\n\n getSessionId() {\n let sessionId: string | null = null;\n try {\n if (Builder.isBrowser && typeof sessionStorage !== 'undefined') {\n sessionId = this.getCookie(sessionStorageKey);\n }\n } catch (err) {\n console.debug('Session storage error', err);\n // It's ok\n }\n\n if (!sessionId) {\n sessionId = uuid();\n }\n\n // Give the app a second to start up and set canTrack to false if needed\n if (Builder.isBrowser) {\n setTimeout(() => {\n try {\n if (this.canTrack) {\n this.setCookie(sessionStorageKey, sessionId, datePlusMinutes(30));\n }\n } catch (err) {\n console.debug('Cookie setting error', err);\n }\n });\n }\n return sessionId;\n }\n\n // Set this to control the userId\n // TODO: allow changing it mid session and updating existing data to be associated\n // e.g. for when a user navigates and then logs in\n visitorId: string = this.getVisitorId();\n\n getVisitorId() {\n if (this.visitorId) {\n return this.visitorId;\n }\n let visitorId: string | null = null;\n try {\n if (Builder.isBrowser && typeof localStorage !== 'undefined') {\n // TODO: cookie instead?\n visitorId = localStorage.getItem(localStorageKey);\n }\n } catch (err) {\n console.debug('Local storage error', err);\n // It's ok\n }\n\n if (!visitorId) {\n visitorId = uuid();\n }\n\n this.visitorId = visitorId;\n\n // Give the app a second to start up and set canTrack to false if needed\n if (Builder.isBrowser) {\n setTimeout(() => {\n try {\n if (this.canTrack && typeof localStorage !== 'undefined' && visitorId) {\n localStorage.setItem(localStorageKey, visitorId);\n }\n } catch (err) {\n console.debug('Session storage error', err);\n }\n });\n }\n return visitorId;\n }\n\n trackImpression(contentId: string, variationId?: string, properties?: any, context?: any) {\n if (isIframe || !isBrowser || Builder.isPreviewing) {\n return;\n }\n // TODO: use this.track method\n this.track(\n 'impression',\n {\n contentId,\n variationId: variationId !== contentId ? variationId : undefined,\n metadata: properties,\n },\n context\n );\n }\n\n trackConversion(amount?: number, customProperties?: any): void;\n trackConversion(\n amount?: number,\n contentId?: string | any,\n variationId?: string,\n customProperties?: any,\n context?: any\n ) {\n if (isIframe || !isBrowser || Builder.isPreviewing) {\n return;\n }\n const meta = typeof contentId === 'object' ? contentId : customProperties;\n let useContentId = typeof contentId === 'string' ? contentId : undefined;\n\n if (!useContentId && !contentId && this.contentId) {\n useContentId = this.contentId;\n }\n\n let useVariationId = variationId;\n if (!useVariationId && useContentId) {\n useVariationId = this.getTestCookie(useContentId);\n }\n\n this.track(\n 'conversion',\n {\n amount,\n variationId:\n useVariationId && useContentId && useVariationId !== useContentId\n ? useVariationId\n : undefined,\n meta,\n contentId: useContentId,\n },\n context\n );\n }\n\n autoTrack = !Builder.isBrowser\n ? false\n : !this.isDevelopmentEnv &&\n !(Builder.isBrowser && location.search.indexOf('builder.preview=') !== -1);\n\n // TODO: set this for QA\n private get isDevelopmentEnv() {\n // Automatic determining of development environment\n return (\n Builder.isIframe ||\n (Builder.isBrowser && (location.hostname === 'localhost' || location.port !== '')) ||\n this.env !== 'production'\n );\n }\n\n trackInteraction(\n contentId: string,\n variationId?: string,\n alreadyTrackedOne = false,\n event?: MouseEvent,\n context?: any\n ) {\n if (isIframe || !isBrowser || Builder.isPreviewing) {\n return;\n }\n const target = event && (event.target as HTMLElement);\n const targetBuilderElement = target && this.findBuilderParent(target);\n\n function round(num: number) {\n return Math.round(num * 1000) / 1000;\n }\n\n const metadata: any = {};\n if (event) {\n const { clientX, clientY } = event;\n if (target) {\n const targetRect = target.getBoundingClientRect();\n const xOffset = clientX - targetRect.left;\n const yOffset = clientY - targetRect.top;\n\n const xRatio = round(xOffset / targetRect.width);\n const yRatio = round(yOffset / targetRect.height);\n\n metadata.targetOffset = {\n x: xRatio,\n y: yRatio,\n };\n }\n if (targetBuilderElement) {\n const targetRect = targetBuilderElement.getBoundingClientRect();\n const xOffset = clientX - targetRect.left;\n const yOffset = clientY - targetRect.top;\n\n const xRatio = round(xOffset / targetRect.width);\n const yRatio = round(yOffset / targetRect.height);\n\n metadata.builderTargetOffset = {\n x: xRatio,\n y: yRatio,\n };\n }\n }\n\n const builderId =\n targetBuilderElement &&\n (targetBuilderElement.getAttribute('builder-id') || targetBuilderElement.id);\n\n if (builderId && targetBuilderElement) {\n metadata.builderElementIndex = ([] as Element[]).slice\n .call(document.getElementsByClassName(builderId))\n .indexOf(targetBuilderElement);\n }\n\n this.track(\n 'click',\n {\n contentId,\n metadata,\n variationId: variationId !== contentId ? variationId : undefined,\n unique: !alreadyTrackedOne,\n targetBuilderElement: builderId || undefined,\n },\n context\n );\n }\n\n static overrideUserAttributes: Partial<UserAttributes> = {};\n\n trackingUserAttributes: { [key: string]: any } = {};\n\n component(info: Partial<Component> = {}) {\n return Builder.component(info);\n }\n\n get apiKey() {\n return this.apiKey$.value;\n }\n\n set apiKey(key: string | null) {\n this.apiKey$.next(key);\n }\n\n get contentId() {\n return this.contentId$.value;\n }\n\n set contentId(id: string | null) {\n this.contentId$.next(id);\n }\n\n get authToken() {\n return this.authToken$.value;\n }\n\n set authToken(token: string | null) {\n this.authToken$.next(token);\n }\n\n constructor(\n apiKey: string | null = null,\n protected request?: IncomingMessage,\n protected response?: ServerResponse,\n forceNewInstance = false,\n authToken: string | null = null,\n apiVersion?: ApiVersion\n ) {\n // TODO: use a window variable for this perhaps, e.g. bc webcomponents may be loading builder twice\n // with it's and react (use rollup build to fix)\n if (Builder.isBrowser && !forceNewInstance && Builder.singletonInstance) {\n return Builder.singletonInstance;\n }\n\n if (this.request && this.response) {\n this.setUserAgent((this.request.headers['user-agent'] as string) || '');\n this.cookies = new Cookies(this.request, this.response);\n }\n\n if (apiKey) {\n this.apiKey = apiKey;\n }\n if (apiVersion) {\n this.apiVersion = apiVersion;\n }\n if (authToken) {\n this.authToken = authToken;\n }\n if (isBrowser) {\n if (Builder.isEditing) {\n this.bindMessageListeners();\n\n parent.postMessage(\n {\n type: 'builder.animatorOptions',\n data: {\n options: {\n version: 2,\n },\n },\n },\n '*'\n );\n }\n // TODO: postmessage to parent the builder info for every package\n // type: 'builder.sdk', data: { name: '@builder.io/react', version: '0.1.23' }\n // (window as any).BUILDER_VERSION = Builder.VERSION;\n // Ensure always one Builder global singleton\n // TODO: some people won't want this, e.g. rakuten\n // Maybe hide this behind symbol or on document, etc\n // if ((window as any).Builder) {\n // Builder.components = (window as any).Builder.components;\n // } else {\n // (window as any).Builder = Builder;\n // }\n }\n\n if (isIframe) {\n this.messageFrameLoaded();\n }\n\n // TODO: on destroy clear subscription\n this.canTrack$.subscribe((value: any) => {\n if (value) {\n if (typeof sessionStorage !== 'undefined') {\n try {\n if (!sessionStorage.getItem(sessionStorageKey)) {\n sessionStorage.setItem(sessionStorageKey, this.sessionId);\n }\n } catch (err) {\n console.debug('Session storage error', err);\n }\n }\n if (this.eventsQueue.length) {\n this.throttledClearEventsQueue();\n }\n if (this.cookieQueue.length) {\n this.cookieQueue.forEach(item => {\n this.setCookie(item[0], item[1]);\n });\n this.cookieQueue.length = 0;\n }\n }\n });\n\n if (isBrowser) {\n // TODO: defer so subclass constructor runs and injects location service\n this.setTestsFromUrl();\n // TODO: do this on every request send?\n this.getOverridesFromQueryString();\n\n // cookies used in personalization container script, so need to set before hydration to match script result\n const userAttrCookie = this.getCookie(Builder.attributesCookieName);\n if (userAttrCookie) {\n try {\n const attributes = JSON.parse(userAttrCookie);\n this.setUserAttributes(attributes);\n } catch (err) {\n console.debug('Error parsing user attributes cookie', err);\n }\n }\n }\n }\n\n private modifySearch(search: string) {\n return search.replace(\n /(^|&|\\?)(builder_.*?)=/gi,\n (_match, group1, group2) => group1 + group2.replace(/_/g, '.') + '='\n );\n }\n\n setTestsFromUrl() {\n const search = this.getLocation().search;\n try {\n const params = QueryString.parseDeep(this.modifySearch(search || '').substr(1));\n const tests = params.builder && params.builder.tests;\n if (tests && typeof tests === 'object') {\n for (const key in tests) {\n if (tests.hasOwnProperty(key)) {\n this.setTestCookie(key, tests[key]);\n }\n }\n }\n } catch (e) {\n console.debug('Error parsing tests from URL', e);\n }\n }\n\n resetOverrides() {\n // Ugly - pass down instances per request instead using react context\n // or use builder.get('foo', { req, res }) in react...........\n Builder.overrideUserAttributes = {};\n this.cachebust = false;\n this.noCache = false;\n this.preview = false;\n this.editingModel = null;\n this.overrides = {};\n this.env = 'production';\n this.userAgent = '';\n this.request = undefined;\n this.response = undefined;\n }\n\n getOverridesFromQueryString() {\n const location = this.getLocation();\n try {\n const params = QueryString.parseDeep(this.modifySearch(location.search || '').substr(1));\n const { builder } = params;\n if (builder) {\n const {\n userAttributes,\n overrides,\n env,\n host,\n api,\n cachebust,\n noCache,\n preview,\n editing,\n frameEditing,\n options,\n params: overrideParams,\n } = builder;\n\n if (userAttributes) {\n this.setUserAttributes(userAttributes);\n }\n\n if (options) {\n // picking only locale, includeRefs, and enrich for now\n this.queryOptions = {\n ...(options.locale && { locale: options.locale }),\n ...(options.includeRefs && { includeRefs: options.includeRefs }),\n ...(options.enrich && { enrich: options.enrich }),\n };\n }\n\n if (overrides) {\n this.overrides = overrides;\n }\n\n if (validEnvList.indexOf(env || api) > -1) {\n this.env = env || api;\n }\n\n if (Builder.isEditing) {\n const editingModel = frameEditing || editing || preview;\n if (editingModel && editingModel !== 'true') {\n this.editingModel = editingModel;\n }\n }\n\n if (cachebust) {\n this.cachebust = true;\n }\n\n if (noCache) {\n this.noCache = true;\n }\n\n if (preview) {\n this.preview = true;\n }\n\n if (params) {\n this.overrideParams = overrideParams;\n }\n }\n } catch (e) {\n console.debug('Error parsing overrides from URL', e);\n }\n }\n\n private messageFrameLoaded() {\n window.parent?.postMessage(\n {\n type: 'builder.loaded',\n data: {\n value: true,\n },\n },\n '*'\n );\n }\n\n private blockContentLoading = '';\n\n private bindMessageListeners() {\n addEventListener('message', event => {\n const isTrusted = Builder.isTrustedHostForEvent(event);\n if (!isTrusted) return;\n\n const { data } = event;\n if (data) {\n switch (data.type) {\n case 'builder.ping': {\n window.parent?.postMessage(\n {\n type: 'builder.pong',\n data: {},\n },\n '*'\n );\n break;\n }\n case 'builder.register': {\n // TODO: possibly do this for all...\n if (event.source === window) {\n break;\n }\n const options = data.data;\n if (!options) {\n break;\n }\n const { type, info } = options;\n // TODO: all must have name and can't conflict?\n let typeList = Builder.registry[type];\n if (!typeList) {\n typeList = Builder.registry[type] = [];\n }\n typeList.push(info);\n Builder.registryChange.next(Builder.registry);\n break;\n }\n case 'builder.settingsChange': {\n // TODO: possibly do this for all...\n if (event.source === window) {\n break;\n }\n const settings = data.data;\n if (!settings) {\n break;\n }\n Object.assign(Builder.settings, settings);\n Builder.settingsChange.next(Builder.settings);\n break;\n }\n case 'builder.registerEditor': {\n // TODO: possibly do this for all...\n if (event.source === window) {\n break;\n }\n const info = data.data;\n if (!info) {\n break;\n }\n const hasComponent = !!info.component;\n Builder.editors.every((thisInfo, index) => {\n if (info.name === thisInfo.name) {\n if (thisInfo.component && !hasComponent) {\n return false;\n } else {\n Builder.editors[index] = thisInfo;\n }\n return false;\n }\n return true;\n });\n break;\n }\n case 'builder.triggerAnimation': {\n Builder.animator.triggerAnimation(data.data);\n break;\n }\n case 'builder.contentUpdate':\n const key = data.data.key || data.data.alias || data.data.entry || data.data.modelName;\n const contentData = data.data.data; // hmmm...\n const observer = this.observersByKey[key];\n if (observer && !this.noEditorUpdates[key]) {\n observer.next([contentData]);\n }\n break;\n\n case 'builder.getComponents':\n window.parent?.postMessage(\n {\n type: 'builder.components',\n data: Builder.components.map(item => Builder.prepareComponentSpecToSend(item)),\n },\n '*'\n );\n break;\n\n case 'builder.editingModel':\n this.editingModel = data.data.model;\n break;\n\n case 'builder.registerComponent':\n const componentData = data.data;\n Builder.addComponent(componentData);\n break;\n\n case 'builder.blockContentLoading':\n if (typeof data.data.model === 'string') {\n this.blockContentLoading = data.data.model;\n }\n break;\n\n case 'builder.editingMode':\n const editingMode = data.data;\n if (editingMode) {\n this.editingMode = true;\n document.body.classList.add('builder-editing');\n } else {\n this.editingMode = false;\n document.body.classList.remove('builder-editing');\n }\n break;\n\n case 'builder.editingPageMode':\n const editingPageMode = data.data;\n Builder.editingPage = editingPageMode;\n break;\n\n case 'builder.overrideUserAttributes':\n const userAttributes = data.data;\n assign(Builder.overrideUserAttributes, userAttributes);\n this.flushGetContentQueue(true);\n // TODO: refetch too\n break;\n\n case 'builder.overrideTestGroup':\n const { variationId, contentId } = data.data;\n if (variationId && contentId) {\n this.setTestCookie(contentId, variationId);\n this.flushGetContentQueue(true);\n }\n break;\n case 'builder.evaluate': {\n const text = data.data.text;\n const args = data.data.arguments || [];\n const id = data.data.id;\n // tslint:disable-next-line:no-function-constructor-with-string-args\n const fn = new Function(text);\n let result: any;\n let error: Error | null = null;\n try {\n result = fn.apply(this, args);\n } catch (err) {\n error = toError(err);\n }\n\n if (error) {\n window.parent?.postMessage(\n {\n type: 'builder.evaluateError',\n data: { id, error: error.message },\n },\n '*'\n );\n } else {\n if (result && typeof result.then === 'function') {\n (result as Promise<any>)\n .then(finalResult => {\n window.parent?.postMessage(\n {\n type: 'builder.evaluateResult',\n data: { id, result: finalResult },\n },\n '*'\n );\n })\n .catch(console.error);\n } else {\n window.parent?.postMessage(\n {\n type: 'builder.evaluateResult',\n data: { result, id },\n },\n '*'\n );\n }\n }\n break;\n }\n }\n }\n });\n }\n\n observersByKey: { [key: string]: BehaviorSubject<BuilderContent[]> | undefined } = {};\n noEditorUpdates: { [key: string]: boolean } = {};\n\n get defaultCanTrack() {\n return Boolean(\n Builder.isBrowser &&\n navigator.userAgent.trim() &&\n !navigator.userAgent.match(\n /bot|crawler|spider|robot|crawling|prerender|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|phantom|headless|selenium|puppeteer/i\n ) &&\n !this.browserTrackingDisabled\n );\n }\n\n init(\n apiKey: string,\n canTrack = this.defaultCanTrack,\n req?: IncomingMessage,\n res?: ServerResponse,\n authToken?: string | null,\n apiVersion?: ApiVersion\n ) {\n if (req) {\n this.request = req;\n }\n if (res) {\n this.response = res;\n }\n if (!this.hasOverriddenCanTrack) {\n this.canTrack = canTrack;\n }\n this.apiKey = apiKey;\n if (authToken) {\n this.authToken = authToken;\n }\n if (apiVersion) {\n this.apiVersion = apiVersion;\n }\n return this;\n }\n\n get previewingModel() {\n const search = this.getLocation().search;\n const params = QueryString.parse((search || '').substr(1));\n return params['builder.preview'];\n }\n\n // TODO: allow adding location object as property and/or in constructor\n getLocation(): Url {\n let parsedLocation: any = {};\n\n // in ssr mode\n if (this.request) {\n parsedLocation = parse(this.request.url ?? '');\n } else if (typeof location === 'object') {\n // in the browser\n parsedLocation = parse(location.href);\n }\n\n // IE11 bug with parsed path being empty string\n // causes issues with our user targeting\n if (parsedLocation.pathname === '') {\n parsedLocation.pathname = '/';\n }\n\n return parsedLocation;\n }\n\n getUserAttributes(userAgent = this.userAgent || '') {\n const isMobile = {\n Android() {\n return userAgent.match(/Android/i);\n },\n BlackBerry() {\n return userAgent.match(/BlackBerry/i);\n },\n iOS() {\n return userAgent.match(/iPhone|iPod/i);\n },\n Opera() {\n return userAgent.match(/Opera Mini/i);\n },\n Windows() {\n return userAgent.match(/IEMobile/i) || userAgent.match(/WPDesktop/i);\n },\n any() {\n return (\n isMobile.Android() ||\n isMobile.BlackBerry() ||\n isMobile.iOS() ||\n isMobile.Opera() ||\n isMobile.Windows()\n );\n },\n };\n\n const isTablet = userAgent.match(/Tablet|iPad/i);\n\n const url = this.getLocation();\n\n return {\n urlPath: url.pathname,\n host: url.host || url.hostname,\n // TODO: maybe an option to choose to target off of mobile/tablet/desktop or just mobile/desktop\n device: isTablet ? 'tablet' : isMobile.any() ? 'mobile' : 'desktop',\n ...Builder.overrideUserAttributes,\n } as UserAttributes;\n }\n\n protected overrides: { [key: string]: string } = {};\n protected queryOptions: { [key: string]: string } = {};\n\n private getContentQueue: null | GetContentOptions[] = null;\n private priorContentQueue: null | GetContentOptions[] = null;\n\n setUserAttributes(options: object) {\n assign(Builder.overrideUserAttributes, options);\n if (this.canTrack) {\n this.setCookie(Builder.attributesCookieName, JSON.stringify(this.getUserAttributes()));\n }\n\n this.userAttributesChanged.next(options);\n }\n\n /**\n * Set user attributes just for tracking purposes.\n *\n * Do this so properties exist on event objects for querying insights, but\n * won't affect targeting\n *\n * Use this when you want to track properties but don't need to target off\n * of them to optimize cache efficiency\n */\n setTrackingUserAttributes(attributes: object) {\n assign(this.trackingUserAttributes, attributes);\n }\n\n get(\n modelName: string,\n options: GetContentOptions & {\n req?: IncomingMessage;\n res?: ServerResponse;\n apiKey?: string;\n authToken?: string;\n } = {}\n ) {\n let instance: Builder = this;\n let finalLocale =\n options.locale || options.userAttributes?.locale || this.getUserAttributes().locale;\n\n if (!('noTraverse' in options)) {\n options.noTraverse = false;\n }\n\n let finalOptions = {\n ...options,\n ...(finalLocale && {\n locale: String(finalLocale),\n userAttributes: {\n locale: String(finalLocale),\n ...options.userAttributes,\n },\n }),\n };\n if (!Builder.isBrowser) {\n instance = new Builder(\n options.apiKey || this.apiKey,\n options.req,\n options.res,\n undefined,\n options.authToken || this.authToken,\n options.apiVersion || this.apiVersion\n );\n instance.apiEndpoint = this.apiEndpoint;\n instance.setUserAttributes(this.getUserAttributes());\n } else {\n // NOTE: All these are when .init is not called and the customer\n // directly calls .get on the singleton instance of Builder\n if (options.apiKey && !this.apiKey) {\n this.apiKey = options.apiKey;\n }\n if (options.authToken && !this.authToken) {\n this.authToken = options.authToken;\n }\n if (options.apiVersion && !this.apiVersion) {\n this.apiVersion = options.apiVersion;\n }\n }\n return instance.queueGetContent(modelName, finalOptions).map(\n /* map( */ (matches: any[] | null) => {\n const match = matches && matches[0];\n if (Builder.isStatic) {\n return match;\n }\n\n const matchData = match && match.data;\n if (!matchData) {\n return null;\n }\n\n if (typeof matchData.blocksString !== 'undefined') {\n matchData.blocks = JSON.parse(matchData.blocksString);\n delete matchData.blocksString;\n }\n\n return {\n // TODO: add ab test info here and other high level stuff\n data: matchData,\n id: match.id,\n variationId: match.testVariationId || match.variationId || null,\n testVariationId: match.testVariationId || match.variationId || null,\n testVariationName: match.testVariationName || null,\n lastUpdated: match.lastUpdated || null,\n };\n }\n );\n // );\n }\n\n // TODO: entry id in options\n queueGetContent(modelName: string, options: GetContentOptions = {}) {\n // TODO: if query do modelName + query\n const key =\n options.key ||\n options.alias ||\n // TODO: SDKs only pass entry key when given to them, and never when editing...\n // options.entry ||\n\n // TODO: this is ugly - instead of multiple of same model with different options are sent\n // say requires key/alias. Or if not perhaps make a reliable hash of the options and use that.\n // TODO: store last user state on last request and if user attributes different now\n // give a warning that need to use keys to request new contente\n // (options &&\n // Object.keys(options).filter(key => key !== 'model').length &&\n // JSON.stringify({ model: modelName, ...options, initialContent: undefined })) ||\n modelName;\n\n const isEditingThisModel = this.editingModel === modelName;\n // TODO: include params in this key........\n const currentObservable = this.observersByKey[key] as BehaviorSubject<BuilderContent[]> | null;\n\n // if (options.query && options.query._id) {\n // this.flushGetContentQueue([options])\n // }\n\n if (this.apiKey === 'DEMO' && !this.overrides[key] && !options.initialContent) {\n options.initialContent = [];\n }\n\n const { initialContent } = options;\n\n // TODO: refresh option in options\n if (currentObservable && (!currentObservable.value || options.cache)) {\n // TODO: test if this ran, otherwise on 404 some observers may never be called...\n if (currentObservable.value) {\n nextTick(() => {\n // TODO: return a new observable and only that one fires subscribers, don't refire for existing ones\n currentObservable.next(currentObservable.value);\n });\n }\n return currentObservable;\n }\n if (isEditingThisModel) {\n if (Builder.isBrowser) {\n parent.postMessage({ type: 'builder.updateContent', data: { options } }, '*');\n }\n }\n if (!initialContent /* || isEditingThisModel */) {\n if (!this.getContentQueue) {\n this.getContentQueue = [];\n }\n\n this.getContentQueue.push({ ...options, model: modelName, key });\n if (this.getContentQueue && this.getContentQueue.length >= this.contentPerRequest) {\n const queue = this.getContentQueue.slice();\n this.getContentQueue = [];\n nextTick(() => {\n this.flushGetContentQueue(false, queue);\n });\n } else {\n nextTick(() => {\n this.flushGetContentQueue();\n });\n }\n }\n\n const observable = new BehaviorSubject<BuilderContent[]>(null as any);\n this.observersByKey[key] = observable;\n if (options.noEditorUpdates) {\n this.noEditorUpdates[key] = true;\n }\n if (initialContent) {\n nextTick(() => {\n // TODO: need to testModify this I think...?\n observable.next(initialContent);\n });\n }\n return observable;\n }\n\n // this is needed to satisfy the Angular SDK, which used to rely on the more complex version of `requestUrl`.\n // even though we only use `fetch()` now, we prefer to keep the old behavior and use the `fetch` that comes from\n // the core SDK for consistency\n requestUrl(\n url: string,\n options?: { headers: { [header: string]: number | string | string[] | undefined }; next?: any }\n ) {\n return getFetch()(url, this.addSdkHeaders(options)).then(res => res.json());\n }\n\n get host() {\n switch (this.env) {\n case 'qa':\n return 'https://qa.builder.io';\n case 'test':\n return 'https://builder-io-test.web.app';\n case 'fast':\n return 'https://fast.builder.io';\n case 'cloud':\n return 'https://cloud.builder.io';\n case 'cdn2':\n return 'https://cdn2.builder.io';\n case 'cdn-qa':\n return 'https://cdn-qa.builder.io';\n case 'development':\n case 'dev':\n return 'http://localhost:5000';\n case 'cdn-prod':\n return 'https://cdn.builder.io';\n default:\n return Builder.overrideHost || 'https://cdn.builder.io';\n }\n }\n\n private getSdkHeaders():\n | {\n 'X-Builder-SDK': string;\n 'X-Builder-SDK-GEN': '1';\n 'X-Builder-SDK-Version': string;\n }\n | {} {\n if (!Builder.sdkInfo) {\n return {};\n }\n\n return {\n 'X-Builder-SDK': Builder.sdkInfo.name,\n 'X-Builder-SDK-GEN': '1',\n 'X-Builder-SDK-Version': Builder.sdkInfo.version,\n } as const;\n }\n\n private addSdkHeaders(fetchOptions: any) {\n return {\n ...fetchOptions,\n headers: {\n ...fetchOptions.headers,\n ...this.getSdkHeaders(),\n },\n };\n }\n\n private makeFetchApiCall(url: string, requestOptions: any): Promise<any> {\n return getFetch()(url, this.addSdkHeaders(requestOptions));\n }\n\n /**\n * Flatten a nested MongoDB query object into a flat object with dot-separated keys.\n * $ keys are not flattened and are left as is.\n *\n * { foo: { bar: { $gt: 5 }}} -> { 'foo.bar': { '$gt': 5 }}\n * { foo: {'bar.id': { $elemMatch: { 'baz.id': { $in: ['abc', 'bcd'] }}}}} -> { 'foo.bar.id': { '$elemMatch': { 'baz.id': { '$in': ['abc', 'bcd'] }}}}\n */\n private flattenMongoQuery(obj: any, _current?: any, _res: any = {}): { [key: string]: string } {\n for (const key in obj) {\n const value = obj[key];\n const newKey = _current ? _current + '.' + key : key;\n if (\n value &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n !Object.keys(value).find(item => item.startsWith('$'))\n ) {\n this.flattenMongoQuery(value, newKey, _res);\n } else {\n _res[newKey] = value;\n }\n }\n return _res;\n }\n\n private flushGetContentQueue(usePastQueue = false, useQueue?: GetContentOptions[]) {\n if (!this.apiKey) {\n throw new Error(\n `Fetching content failed, expected apiKey to be defined instead got: ${this.apiKey}`\n );\n }\n\n if (this.apiVersion) {\n if (!['v1', 'v3'].includes(this.apiVersion)) {\n throw new Error(`Invalid apiVersion: expected 'v1' or 'v3', received '${this.apiVersion}'`);\n }\n } else {\n this.apiVersion = DEFAULT_API_VERSION;\n }\n\n if (!usePastQueue && !this.getContentQueue) {\n return;\n }\n\n const queue = useQueue || (usePastQueue ? this.priorContentQueue : this.getContentQueue) || [];\n\n // TODO: do this on every request send?\n this.getOverridesFromQueryString();\n\n const queryParams: ParamsMap = {\n // TODO: way to force a request to be in a separate queue. or just lower queue limit to be 1 by default\n omit: queue[0].omit ?? 'meta.componentsUsed',\n apiKey: this.apiKey,\n ...queue[0].options,\n ...this.queryOptions,\n };\n\n if (queue[0].locale) {\n queryParams.locale = queue[0].locale;\n }\n if (queue[0].fields) {\n queryParams.fields = queue[0].fields;\n }\n if (queue[0].format) {\n queryParams.format = queue[0].format;\n }\n if ('noTraverse' in queue[0]) {\n queryParams.noTraverse = queue[0].noTraverse;\n }\n if ('includeUnpublished' in queue[0]) {\n queryParams.includeUnpublished = queue[0].includeUnpublished;\n }\n if (queue[0].sort) {\n queryParams.sort = queue[0].sort;\n }\n\n const pageQueryParams: ParamsMap =\n (typeof location !== 'undefined'\n ? QueryString.parseDeep(location.search.substr(1))\n : undefined) || {}; // TODO: WHAT about SSR (this.request) ?\n\n const userAttributes =\n // FIXME: HACK: only checks first in queue for user attributes overrides, should check all\n // TODO: merge user attributes provided here with defaults and current user attiributes (?)\n queue && queue[0].userAttributes\n ? queue[0].userAttributes\n : this.targetContent\n ? this.getUserAttributes()\n : {\n urlPath: this.getLocation().pathname,\n };\n\n const fullUrlQueueItem = queue.find(item => !!item.includeUrl);\n if (fullUrlQueueItem) {\n const location = this.getLocation();\n if (location.origin) {\n queryParams.url = `${location.origin}${location.pathname}${location.search}`;\n }\n }\n\n const urlQueueItem = useQueue?.find(item => item.url);\n if (urlQueueItem?.url) {\n userAttributes.urlPath = urlQueueItem.url.split('?')[0];\n }\n // TODO: merge in the attribute from query string ones\n // TODO: make this an option per component/request\n queryParams.userAttributes = JSON.stringify(userAttributes);\n\n if (!usePastQueue && !useQueue) {\n this.priorContentQueue = queue;\n this.getContentQueue = null;\n }\n\n const cachebust =\n this.cachebust ||\n isIframe ||\n pageQueryParams.cachebust ||\n pageQueryParams['builder.cachebust'];\n\n if (cachebust || this.env !== 'production') {\n queryParams.cachebust = true;\n }\n\n if (Builder.isEditing) {\n queryParams.isEditing = true;\n }\n\n if (this.noCache || this.env !== 'production') {\n queryParams.noCache = true;\n }\n\n if (size(this.overrides)) {\n for (const key in this.overrides) {\n if (this.overrides.hasOwnProperty(key)) {\n queryParams[`overrides.${key}`] = this.overrides[key];\n }\n }\n }\n\n for (const options of queue) {\n const format = options.format;\n\n if (format) {\n queryParams.format = format;\n }\n // TODO: remove me and make permodel\n if (options.static) {\n queryParams.static = options.static;\n }\n\n if (options.cachebust) {\n queryParams.cachebust = options.cachebust;\n }\n\n if (isPositiveNumber(options.cacheSeconds)) {\n queryParams.cacheSeconds = options.cacheSeconds;\n }\n\n if (isPositiveNumber(options.staleCacheSeconds)) {\n queryParams.staleCacheSeconds = options.staleCacheSeconds;\n }\n\n if (this.apiEndpoint === 'content') {\n queryParams.includeRefs = true;\n }\n\n const properties: (keyof GetContentOptions)[] = [\n 'prerender',\n 'extractCss',\n 'limit',\n 'offset',\n 'query',\n 'preview',\n 'model',\n 'entry',\n 'rev',\n 'static',\n 'includeRefs',\n ];\n\n for (const key of properties) {\n const value = options[key];\n if (value !== undefined) {\n if (this.apiEndpoint === 'query') {\n queryParams.options = queryParams.options || {};\n queryParams.options[options.key!] = queryParams.options[options.key!] || {};\n queryParams.options[options.key!][key] = JSON.stringify(value);\n } else {\n queryParams[key] = JSON.stringify(value);\n }\n }\n }\n }\n if (this.preview && this.previewingModel === queue?.[0]?.model) {\n queryParams.preview = 'true';\n }\n const hasParams = Object.keys(queryParams).length > 0;\n\n // TODO: option to force dev or qa api here\n const host = this.host;\n\n const keyNames = queue.map(item => encodeURIComponent(item.key!)).join(',');\n\n if (this.overrideParams) {\n const params = omit(QueryString.parse(this.overrideParams), 'apiKey');\n assign(queryParams, params);\n }\n\n const format = queryParams.format;\n const isApiCallForCodegen = format === 'solid' || format === 'react';\n const isApiCallForCodegenOrQuery = isApiCallForCodegen || this.apiEndpoint === 'query';\n\n if (this.apiEndpoint === 'content') {\n if (queue[0].query) {\n delete queryParams.query;\n const objectToFlatten = { query: queue[0].query };\n const flattened = this.flattenMongoQuery(objectToFlatten);\n for (const key in flattened) {\n queryParams[key] = JSON.stringify(flattened[key]);\n }\n }\n }\n\n const queryStr = QueryString.stringifyDeep(queryParams);\n\n const fetchOptions = { headers: {}, ...queue[0].fetchOptions };\n if (this.authToken) {\n fetchOptions.headers = {\n ...fetchOptions.headers,\n Authorization: `Bearer ${this.authToken}`,\n };\n }\n\n let url;\n if (isApiCallForCodegen) {\n url = `${host}/api/v1/codegen/${this.apiKey}/${keyNames}`;\n } else if (this.apiEndpoint === 'query') {\n url = `${host}/api/v3/query/${this.apiKey}/${keyNames}`;\n } else {\n url = `${host}/api/v3/content/${queue[0].model}`;\n }\n\n url = url + (queryParams && hasParams ? `?${queryStr}` : '');\n\n const promise = this.makeFetchApiCall(url, fetchOptions)\n .then(res => res.json())\n .then(\n result => {\n for (const options of queue) {\n const keyName = options.key!;\n if (options.model === this.blockContentLoading && !options.noEditorUpdates) {\n continue;\n }\n\n const isEditingThisModel = this.editingModel === options.model;\n if (isEditingThisModel && Builder.isEditing) {\n parent.postMessage({ type: 'builder.updateContent', data: { options } }, '*');\n // return;\n }\n const observer = this.observersByKey[keyName];\n if (!observer) {\n return;\n }\n const data = isApiCallForCodegenOrQuery ? result[keyName] : result.results;\n const sorted = data; // sortBy(data, item => item.priority);\n if (data) {\n const testModifiedResults = Builder.isServer\n ? sorted\n : this.processResultsForTests(sorted);\n observer.next(testModifiedResults);\n } else {\n const search = this.getLocation().search;\n if ((search || '').includes('builder.preview=' + options.model)) {\n const previewData = {\n id: 'preview',\n name: 'Preview',\n data: {},\n };\n observer.next([previewData]);\n }\n observer.next([]);\n }\n }\n },\n err => {\n for (const options of queue) {\n const observer = this.observersByKey[options.key!];\n if (!observer) {\n return;\n }\n observer.error(err);\n }\n }\n );\n\n return promise;\n }\n\n private testCookiePrefix = 'builder.tests';\n\n private processResultsForTests(results: BuilderContent[]) {\n const mappedResults = results.map(item => {\n if (!item.variations) {\n return item;\n }\n const cookieValue = this.getTestCookie(item.id!);\n const cookieVariation = cookieValue === item.id ? item : item.variations[cookieValue];\n if (cookieVariation) {\n return {\n ...item,\n data: cookieVariation.data,\n variationId: cookieValue,\n testVariationId: cookieValue,\n testVariationName: cookieVariation.name,\n };\n }\n if (this.canTrack && item.variations && size(item.variations)) {\n let n = 0;\n const random = Math.random();\n for (const id in item.variations) {\n const variation = item.variations[id]!;\n const testRatio = variation.testRatio;\n n += testRatio!;\n if (random < n) {\n this.setTestCookie(item.id!, variation.id!);\n const variationName =\n variation.name || (variation.id === item.id ? 'Default variation' : '');\n return {\n ...item,\n data: variation.data,\n variationId: variation.id,\n testVariationId: variation.id,\n variationName: variationName,\n testVariationName: variationName,\n };\n }\n }\n this.setTestCookie(item.id!, item.id!);\n }\n return {\n ...item,\n variationId: item.id,\n ...(item.variations &&\n size(item.variations) && {\n testVariationId: item.id,\n testVariationName: 'Default variation',\n }),\n };\n });\n\n if (isIframe) {\n window.parent?.postMessage(\n { type: 'builder.contentResults', data: { results: mappedResults } },\n '*'\n );\n }\n\n return mappedResults;\n }\n\n private getTestCookie(contentId: string) {\n return this.getCookie(`${this.testCookiePrefix}.${contentId}`);\n }\n\n private cookieQueue: [string, string][] = [];\n\n private setTestCookie(contentId: string, variationId: string) {\n if (!this.canTrack) {\n this.cookieQueue.push([contentId, variationId]);\n return;\n }\n\n // 30 days from now\n const future = new Date();\n future.setDate(future.getDate() + 30);\n\n return this.setCookie(`${this.testCookiePrefix}.${contentId}`, variationId, future);\n }\n\n getCookie(name: string): any {\n if (this.cookies) {\n return this.cookies.get(name);\n }\n return Builder.isBrowser && getCookie(name);\n }\n\n setCookie(name: string, value: any, expires?: Date) {\n if (this.cookies && !(Builder.isServer && Builder.isStatic)) {\n return this.cookies.set(name, value, {\n expires,\n secure: this.getLocation().protocol === 'https:',\n });\n }\n return Builder.isBrowser && setCookie(name, value, expires);\n }\n\n getContent(modelName: string, options: GetContentOptions = {}) {\n if (!this.apiKey) {\n throw new Error(\n `Fetching content from model ${modelName} failed, expected apiKey to be defined instead got: ${this.apiKey}`\n );\n }\n return this.queueGetContent(modelName, options);\n }\n\n getAll(\n modelName: string,\n options: GetContentOptions & {\n req?: IncomingMessage;\n res?: ServerResponse;\n apiKey?: string;\n authToken?: string;\n } = {}\n ): Promise<BuilderContent[]> {\n let instance: Builder = this;\n if (!Builder.isBrowser) {\n instance = new Builder(\n options.apiKey || this.apiKey,\n options.req,\n options.res,\n false,\n options.authToken || this.authToken,\n options.apiVersion || this.apiVersion\n );\n instance.setUserAttributes(this.getUserAttributes());\n } else {\n // NOTE: All these are when .init is not called and the customer\n // directly calls .get on the singleton instance of Builder\n if (options.apiKey && !this.apiKey) {\n this.apiKey = options.apiKey;\n }\n if (options.authToken && !this.authToken) {\n this.authToken = options.authToken;\n }\n if (options.apiVersion && !this.apiVersion) {\n this.apiVersion = options.apiVersion;\n }\n }\n\n // Set noTraverse=true if NOT already passed by user, for query performance\n if (!('noTraverse' in options)) {\n options.noTraverse = true;\n }\n\n return instance\n .getContent(modelName, {\n limit: 30,\n ...options,\n key:\n options.key ||\n // Make the key include all options, so we don't reuse cache for the same content fetched\n // with different options\n Builder.isBrowser\n ? `${modelName}:${hash(omit(options, 'initialContent', 'req', 'res'))}`\n : undefined,\n })\n .promise();\n }\n}\n","import { Builder } from '../builder.class';\n\nexport const builder = new Builder(null, undefined, undefined, true);\nBuilder.singletonInstance = builder;\n"],"names":["Promise","serverOnlyRequire","parse","urlParse","hash"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAA,CAAC,YAAY;IACb,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,OAAO,KAAK,CAAC;AAC9F;IACA,EAAE,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;IACtC,IAAI,MAAM,GAAG,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3E,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACjF,IAAI,OAAO,GAAG,CAAC;IACf,GAAG;AACH;IACA,EAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC,GAAG;;ICXJ,IAAM,QAAQ,GACZ,OAAO,MAAM,KAAK,WAAW;QAC7B,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpE,IAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IAE/C;IACM,SAAU,QAAQ,CAAC,EAAc,EAAA;;;;;;;QAOrC,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;YACpE,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,OAAO;IACR,KAAA;QACD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAA,IAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,YAAA,EAAM,OAAA,EAAE,EAAE,CAAA,EAAA,CAAC,CAAC;QAClD,IAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;IACxB,QAAA,aAAa,EAAE,IAAI;IACpB,KAAA,CAAC,CAAC;;IAEH,IAAA,OAAO,CAAC,IAAI,GAAG,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC;IAC7C;;ICxBA,IAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAEzF;IACA,IAAA,WAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,WAAA,GAAA;SAsEC;QArEQ,WAAS,CAAA,SAAA,GAAhB,UAAiB,WAAmB,EAAA;YAClC,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB,CAAA;QAEM,WAAa,CAAA,aAAA,GAApB,UAAqB,GAAQ,EAAA;YAC3B,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAC5B,CAAA;QAEM,WAAK,CAAA,KAAA,GAAZ,UAAa,WAAmB,EAAA;YAC9B,IAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,QAAA,IAAM,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACxF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAEjC,IAAI;IACF,gBAAA,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE,aAAA;IAAC,YAAA,OAAO,KAAK,EAAE;;IAEf,aAAA;IACF,SAAA;IACD,QAAA,OAAO,KAAK,CAAC;SACd,CAAA;QAEM,WAAS,CAAA,SAAA,GAAhB,UAAiB,GAAc,EAAA;YAC7B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,QAAA,KAAK,IAAM,GAAG,IAAI,GAAG,EAAE;IACrB,YAAA,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;IAC3B,gBAAA,IAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,gBAAA,IAAI,GAAG,EAAE;wBACP,GAAG,IAAI,GAAG,CAAC;IACZ,iBAAA;IACD,gBAAA,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClE,aAAA;IACF,SAAA;IACD,QAAA,OAAO,GAAG,CAAC;SACZ,CAAA;QAEM,WAAM,CAAA,MAAA,GAAb,UAAc,GAAc,EAAA;;;YAG1B,IAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,QAAA,KAAK,IAAM,CAAC,IAAI,GAAG,EAAE;gBACnB,IAAI,CAAC,GAAG,MAAM,CAAC;gBACf,IAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAA,IAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;IACzB,YAAA,KAAmB,UAAK,EAAL,OAAA,GAAA,KAAK,EAAL,EAAK,GAAA,OAAA,CAAA,MAAA,EAAL,IAAK,EAAE;IAArB,gBAAA,IAAM,IAAI,GAAA,OAAA,CAAA,EAAA,CAAA,CAAA;oBACb,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,gBAAA,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,aAAA;gBACD,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,SAAA;IACD,QAAA,OAAO,MAAM,CAAC;SACf,CAAA;IAEM,IAAA,WAAA,CAAA,OAAO,GAAd,UAAe,GAAQ,EAAE,QAAc,EAAE,IAAc,EAAA;IAAd,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;IACrD,QAAA,KAAK,IAAM,GAAG,IAAI,GAAG,EAAE;IACrB,YAAA,IAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,YAAA,IAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACrD,YAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBACtC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,aAAA;IAAM,iBAAA;IACL,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IACtB,aAAA;IACF,SAAA;IAED,QAAA,OAAO,IAAI,CAAC;SACb,CAAA;QACH,OAAC,WAAA,CAAA;IAAD,CAAC,EAAA,CAAA,CAAA;IAED,SAAS,yBAAyB,CAAC,IAAY,EAAA;IAC7C,IAAA,IAAI,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5C,QAAA,MAAM,IAAI,KAAK,CAAC,0BAAkB,IAAI,EAAA,mBAAA,CAAkB,CAAC,CAAC;IAC9D;;AC9EA,QAAA,YAAA,kBAAA,YAAA;QACE,SACU,YAAA,CAAA,SAA0B,EAC1B,QAAuB,EAAA;YADvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;YAC1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAe;YAGjC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;YAMJ,IAAkB,CAAA,kBAAA,GAAmB,EAAE,CAAC;SARrD;IAIJ,IAAA,MAAA,CAAA,cAAA,CAAI,YAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAV,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;;;IAAA,KAAA,CAAA,CAAA;QAID,YAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,YAA0B,EAAA;IAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC5C,CAAA;IAED,IAAA,YAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;YACE,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,OAAO;IACR,SAAA;IACD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;IACnC,YAAA,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;oBACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACjC,aAAA;IACF,SAAA;IACD,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA,EAAI,OAAA,GAAG,CAAC,WAAW,EAAE,CAAjB,EAAiB,CAAC,CAAC;IAC1D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B,CAAA;QACH,OAAC,YAAA,CAAA;IAAD,CAAC,EAAA,EAAA;IAED;AACA,QAAA,eAAA,kBAAA,YAAA;IACE,IAAA,SAAA,eAAA,CAAmB,KAAQ,EAAA;YAA3B,IAA+B,KAAA,GAAA,IAAA,CAAA;YAAZ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;YAEnB,IAAS,CAAA,SAAA,GAAkB,EAAE,CAAC;YAC9B,IAAc,CAAA,cAAA,GAA0B,EAAE,CAAC;IA4DnD,QAAA,IAAA,CAAA,IAAI,GAAuB,YAAA;;gBAAC,IAAO,IAAA,GAAA,EAAA,CAAA;qBAAP,IAAO,EAAA,GAAA,CAAA,EAAP,EAAO,GAAA,SAAA,CAAA,MAAA,EAAP,EAAO,EAAA,EAAA;oBAAP,IAAO,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;gBACjC,OAAO,CAAA,EAAA,GAAA,KAAI,CAAC,SAAS,EAAE,EAAC,IAAI,CAAI,KAAA,CAAA,EAAA,EAAA,IAAI,CAAE,CAAA;IACxC,SAAC,CAAC;SAjE6B;QAK/B,eAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,KAAQ,EAAA;IACX,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,KAAuB,IAAA,EAAA,GAAA,CAAc,EAAd,EAAA,GAAA,IAAI,CAAC,SAAS,EAAd,EAAA,GAAA,EAAA,CAAA,MAAc,EAAd,EAAA,EAAc,EAAE;IAAlC,YAAA,IAAM,QAAQ,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;gBACjB,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjB,SAAA;SACF,CAAA;;QAGD,eAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAmB,EAAwB,EAAA;IACzC,QAAA,IAAM,UAAU,GAAG,IAAI,eAAe,CAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;IAEhE,QAAA,IAAI,CAAC,SAAS,CAAC,UAAA,GAAG,EAAA;gBAChB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,SAAC,CAAC,CAAC;IACH,QAAA,IAAI,CAAC,KAAK,CAAC,UAAA,GAAG,EAAA;IACZ,YAAA,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,SAAC,CAAC,CAAC;IACH,QAAA,OAAO,UAAU,CAAC;SACnB,CAAA;QAED,eAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,aAAkC,EAAA;IACtC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACxC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;SAC7D,CAAA;QAED,eAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,KAAgB,EAAA;YACpB,KAAuB,IAAA,EAAA,GAAA,CAAmB,EAAnB,EAAA,GAAA,IAAI,CAAC,cAAc,EAAnB,EAAA,GAAA,EAAA,CAAA,MAAmB,EAAnB,EAAA,EAAmB,EAAE;IAAvC,YAAA,IAAM,QAAQ,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;gBACjB,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjB,SAAA;SACF,CAAA;IAED,IAAA,eAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,QAAqB,EAAE,aAAmC,EAAA;IAClE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,QAAA,IAAI,aAAa,EAAE;IACjB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzC,SAAA;YACD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;SACnD,CAAA;IAED,IAAA,eAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;YAAA,IAaC,KAAA,GAAA,IAAA,CAAA;IAZC,QAAA,OAAO,IAAI,OAAO,CAAI,UAAC,OAAO,EAAE,MAAM,EAAA;IACpC,YAAA,IAAM,YAAY,GAAG,KAAI,CAAC,SAAS,CACjC,UAAA,KAAK,EAAA;oBACH,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,YAAY,CAAC,WAAW,EAAE,CAAC;iBAC5B,EACD,UAAA,GAAG,EAAA;oBACD,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,YAAY,CAAC,WAAW,EAAE,CAAC;IAC7B,aAAC,CACF,CAAC;IACJ,SAAC,CAAC,CAAC;SACJ,CAAA;IAED,IAAA,eAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;IACE,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;SACzB,CAAA;QAKH,OAAC,eAAA,CAAA;IAAD,CAAC,EAAA;;ICrGD,IAAM,KAAK,GAAG;IACZ,IAAA,OAAO,EAAE,SAAS;IAClB,IAAA,SAAS,EAAE,WAAW;IACtB,IAAA,QAAQ,EAAE,UAAU;KACrB,CAAC;IAEF,SAAS,UAAU,CAAC,GAAQ,EAAA;IAC1B,IAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC;IAC1C,CAAC;IAED,SAAS,QAAQ,CAAC,GAAQ,EAAA;IACxB,IAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;IACxC,CAAC;IAOD,IAAA,WAAA,kBAAA,YAAA;IAKE,IAAA,SAAA,WAAA,CAAY,QAAqE,EAAA;IAJzE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;YACvB,IAAS,CAAA,SAAA,GAAiB,EAAE,CAAC;YAC7B,IAAM,CAAA,MAAA,GAAa,IAAI,CAAC;IAG9B,QAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7D;QAEO,WAAQ,CAAA,SAAA,CAAA,QAAA,GAAhB,UAAiB,CAAM,EAAA;YAAvB,IAgCC,KAAA,GAAA,IAAA,CAAA;YA/BC,IAAI,CAAC,YAAY,WAAW,EAAE;gBAC5B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,SAAA;iBAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;gBACvC,IAAI,QAAM,GAAG,KAAK,CAAC;gBACnB,IAAI;IACF,gBAAA,IAAM,QAAQ,GAAI,CAAkB,CAAC,IAAI,CAAC;IAC1C,gBAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;IACxB,oBAAA,QAAQ,CAAC,IAAI,CACX,CAAC,EACD,UAAC,MAAW,EAAA;IACV,wBAAA,IAAI,CAAC,QAAM;IAAE,4BAAA,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACnC,QAAM,GAAG,IAAI,CAAC;IACd,wBAAA,OAAO,SAAgB,CAAC;yBACzB,EACD,UAAC,KAAU,EAAA;IACT,wBAAA,IAAI,CAAC,QAAM;IAAE,4BAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;4BACjC,QAAM,GAAG,IAAI,CAAC;IACd,wBAAA,OAAO,SAAgB,CAAC;IAC1B,qBAAC,CACF,CAAC;IACH,iBAAA;IAAM,qBAAA;IACL,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClB,iBAAA;IACF,aAAA;IAAC,YAAA,OAAO,EAAE,EAAE;oBACX,IAAI,CAAC,QAAM,EAAE;IACX,oBAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClB,iBAAA;IACF,aAAA;IACF,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClB,SAAA;SACF,CAAA;QAEO,WAAQ,CAAA,SAAA,CAAA,QAAA,GAAhB,UAAiB,MAAS,EAAA;YAA1B,IAIC,KAAA,GAAA,IAAA,CAAA;IAHC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,OAAO,EAAI,EAAA,OAAA,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAA1B,EAA0B,CAAC,CAAC;SAC/D,CAAA;QAEO,WAAO,CAAA,SAAA,CAAA,OAAA,GAAf,UAAgB,KAAU,EAAA;YAA1B,IAIC,KAAA,GAAA,IAAA,CAAA;IAHC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACpB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,OAAO,EAAI,EAAA,OAAA,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAA1B,EAA0B,CAAC,CAAC;SAC/D,CAAA;IAEO,IAAA,WAAA,CAAA,SAAA,CAAA,UAAU,GAAlB,YAAA;IACE,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,CAAC;SACtC,CAAA;IAEO,IAAA,WAAA,CAAA,SAAA,CAAA,YAAY,GAApB,YAAA;IACE,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;SACxC,CAAA;IAEO,IAAA,WAAA,CAAA,SAAA,CAAA,WAAW,GAAnB,YAAA;IACE,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC;SACvC,CAAA;IAEO,IAAA,WAAA,CAAA,SAAA,CAAA,WAAW,GAAnB,UAAoB,WAA4B,EAAE,UAA6B,EAAA;IAC7E,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAClB,YAAA,WAAW,EAAA,WAAA;IACX,YAAA,UAAU,EAAA,UAAA;IACX,SAAA,CAAC,CAAC;SACJ,CAAA;QAEO,WAAY,CAAA,SAAA,CAAA,YAAA,GAApB,UAAqB,OAAmB,EAAA;YACtC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;IAC1D,YAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAW,CAAC,CAAC;IACvC,SAAA;iBAAM,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;IAC/D,YAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,SAAA;SACF,CAAA;IAED,IAAA,WAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,WAA4B,EAAE,UAA6B,EAAA;YAAhE,IAmEC,KAAA,GAAA,IAAA,CAAA;YAlEC,QAAQ,IAAI,CAAC,MAAM;IACjB,YAAA,KAAK,KAAK,CAAC,OAAO,EAAE;IAClB,gBAAA,OAAO,IAAI,WAAW,CAAC,UAAC,OAAO,EAAE,MAAM,EAAA;IACrC,oBAAA,KAAI,CAAC,WAAW,CACd,UAAA,KAAK,EAAA;IACH,wBAAA,QAAQ,CAAC,YAAA;gCACP,IAAI;IACF,gCAAA,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;IAC3B,oCAAA,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,iCAAA;IAAM,qCAAA;wCACL,OAAO,CAAC,KAAK,CAAC,CAAC;IAChB,iCAAA;IACF,6BAAA;IAAC,4BAAA,OAAO,EAAE,EAAE;oCACX,MAAM,CAAC,EAAE,CAAC,CAAC;IACZ,6BAAA;IACH,yBAAC,CAAC,CAAC;yBACJ,EACD,UAAA,KAAK,EAAA;IACH,wBAAA,QAAQ,CAAC,YAAA;gCACP,IAAI;IACF,gCAAA,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;IAC1B,oCAAA,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5B,iCAAA;IAAM,qCAAA;wCACL,MAAM,CAAC,KAAK,CAAC,CAAC;IACf,iCAAA;IACF,6BAAA;IAAC,4BAAA,OAAO,EAAE,EAAE;oCACX,MAAM,CAAC,EAAE,CAAC,CAAC;IACZ,6BAAA;IACH,yBAAC,CAAC,CAAC;IACL,qBAAC,CACF,CAAC;IACJ,iBAAC,CAAC,CAAC;IACJ,aAAA;IAED,YAAA,KAAK,KAAK,CAAC,SAAS,EAAE;IACpB,gBAAA,OAAO,IAAI,WAAW,CAAC,UAAC,OAAO,EAAE,MAAM,EAAA;IACrC,oBAAA,QAAQ,CAAC,YAAA;4BACP,IAAI;IACF,4BAAA,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;oCAC3B,OAAO,CAAC,WAAW,CAAC,KAAI,CAAC,MAAW,CAAC,CAAC,CAAC;IACxC,6BAAA;IAAM,iCAAA;IACL,gCAAA,OAAO,CAAC,KAAI,CAAC,MAAW,CAAC,CAAC;IAC3B,6BAAA;IACF,yBAAA;IAAC,wBAAA,OAAO,EAAE,EAAE;gCACX,MAAM,CAAC,EAAE,CAAC,CAAC;IACZ,yBAAA;IACH,qBAAC,CAAC,CAAC;IACL,iBAAC,CAAC,CAAC;IACJ,aAAA;IAED,YAAA,KAAK,KAAK,CAAC,QAAQ,EAAE;IACnB,gBAAA,OAAO,IAAI,WAAW,CAAC,UAAC,OAAO,EAAE,MAAM,EAAA;IACrC,oBAAA,QAAQ,CAAC,YAAA;4BACP,IAAI;IACF,4BAAA,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;oCAC1B,OAAO,CAAC,UAAU,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClC,6BAAA;IAAM,iCAAA;IACL,gCAAA,MAAM,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;IACrB,6BAAA;IACF,yBAAA;IAAC,wBAAA,OAAO,EAAE,EAAE;gCACX,MAAM,CAAC,EAAE,CAAC,CAAC;IACZ,yBAAA;IACH,qBAAC,CAAC,CAAC;IACL,iBAAC,CAAC,CAAC;IACJ,aAAA;IACF,SAAA;SACF,CAAA;QACH,OAAC,WAAA,CAAA;IAAD,CAAC,EAAA,CAAA,CAAA;AAED,oBAAe,CAAC,OAAO,OAAO,KAAK,WAAW,GAAG,OAAO,GAAG,WAAW;;IC7KtE;IACA;IACA,IAAI,iBAA8B,CAAC;IACnC,IAAI;;IAEF,IAAA,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAA;IAAC,OAAO,GAAG,EAAE;;QAEZ,iBAAiB,IAAI,YAAM,EAAA,OAAA,IAAI,CAAJ,EAAI,CAAQ,CAAC;IACzC,CAAA;AAED,8BAAe,iBAAiB;;ICiBhC,SAAS,cAAc,CAAI,KAAQ,EAAA;IACjC,IAAA,OAAO,IAAIA,SAAO,CAAI,UAAA,OAAO,EAAI,EAAA,OAAA,OAAO,CAAC,KAAK,CAAC,CAAd,EAAc,CAAC,CAAC;IACnD,CAAC;IAED;IACA,SAAS,SAAS,CAAC,GAAW,EAAE,OAAoC,EAAA;IAApC,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAoC,GAAA,EAAA,CAAA,EAAA;IAClE,IAAA,OAAO,IAAIA,SAAO,CAAsB,UAAC,OAAO,EAAE,MAAM,EAAA;IACtD,QAAA,IAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IAErC,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEjD,IAAI,OAAO,CAAC,OAAO,EAAE;IACnB,YAAA,KAAK,IAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE;IAC/B,gBAAA,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,aAAA;IACF,SAAA;YAED,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC;YAE5D,OAAO,CAAC,MAAM,GAAG,YAAA;IACf,YAAA,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtB,SAAC,CAAC;IAEF,QAAA,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IAEzB,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B,QAAA,SAAS,QAAQ,GAAA;gBACf,IAAM,IAAI,GAAa,EAAE,CAAC;gBAC1B,IAAM,GAAG,GAAuB,EAAE,CAAC;gBACnC,IAAM,OAAO,GAA8B,EAAE,CAAC;gBAC9C,IAAI,MAAM,GAAuB,SAAS,CAAC;gBAE3C,OAAO;IACJ,iBAAA,qBAAqB,EAAE;qBACvB,OAAO,CAAC,8BAA8B,EAAE,UAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAA;oBAC3D,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,gBAAA,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;oBACrC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACvB,gBAAA,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAG,CAAA,MAAA,CAAA,MAAM,cAAI,KAAK,CAAE,GAAG,KAAK,CAAC;IACrD,gBAAA,OAAO,EAAE,CAAC;IACZ,aAAC,CAAC,CAAC;gBAEL,OAAO;IACL,gBAAA,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;oBACtC,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,GAAG,EAAE,OAAO,CAAC,WAAW;IACxB,gBAAA,KAAK,EAAE,QAAQ;oBACf,IAAI,EAAE,YAAM,EAAA,OAAA,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA,EAAA;IAChD,gBAAA,IAAI,EAAE,YAAM,EAAA,OAAA,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAA;IACjE,gBAAA,IAAI,EAAE,YAAM,EAAA,OAAA,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAA;IACxD,gBAAA,OAAO,EAAE;IACP,oBAAA,IAAI,EAAE,YAAA,EAAM,OAAA,IAAI,GAAA;IAChB,oBAAA,OAAO,EAAE,YAAA,EAAM,OAAA,GAAG,GAAA;IAClB,oBAAA,GAAG,EAAE,UAAC,CAAS,EAAA,EAAK,OAAA,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAA;IAC5C,oBAAA,GAAG,EAAE,UAAC,CAAS,EAAA,EAAK,OAAA,CAAC,CAAC,WAAW,EAAE,IAAI,OAAO,CAAA,EAAA;IAC/C,iBAAA;iBACF,CAAC;aACH;IACH,KAAC,CAAC,CAAC;IACL,CAAC;aAEe,QAAQ,GAAA;;QAEtB,IAAI,MAAM,GAA6B,SAAS,CAAC;QACjD,IAAI,UAAU,CAAC,KAAK,EAAE;YACpB,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAN,MAAM,IAAN,MAAM,GAAK,UAAU,CAAC,KAAY,CAAC,CAAA;IACpC,KAAA;IAAM,SAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;;YAExC,IAAI;;gBAEF,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAN,MAAM,IAAN,MAAM,GAAKC,mBAAiB,CAAC,YAAY,CAAC,CAAC,CAAA;IAC5C,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;;IAEV,YAAA,OAAO,CAAC,IAAI,CACV,mFAAmF,CACpF,CAAC;IACF,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,SAAA;IACF,KAAA;;IAGD,IAAA,OAAO,MAAM,KAAN,IAAA,IAAA,MAAM,cAAN,MAAM,GAAI,SAAS,CAAC;IAC7B;;ICjHM,SAAU,MAAM,CAAC,MAAc,EAAA;IACnC,IAAA,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAE1B,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IACrD,QAAA,IAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAEpC,IAAI,UAAU,IAAI,IAAI,EAAE;;IAEtB,YAAA,KAAK,IAAM,OAAO,IAAI,UAAU,EAAE;;IAEhC,gBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;wBAC7D,EAAE,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,iBAAA;IACF,aAAA;IACF,SAAA;IACF,KAAA;IACD,IAAA,OAAO,EAAE,CAAC;IACZ;;aCjBgB,QAAQ,CAAC,IAAc,EAAE,IAAY,EAAE,OAAiB,EAAA;IAAjB,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAiB,GAAA,EAAA,CAAA,EAAA;IACtE,IAAA,IAAI,OAAY,CAAC;IACjB,IAAA,IAAI,IAAS,CAAC;IACd,IAAA,IAAI,MAAW,CAAC;QAChB,IAAI,OAAO,GAAG,IAAW,CAAC;QAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAA,IAAM,KAAK,GAAG,YAAA;IACZ,QAAA,QAAQ,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtD,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,QAAA,IAAI,CAAC,OAAO;IAAE,YAAA,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;IACtC,KAAC,CAAC;QACF,OAAO,YAAA;IACL,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,QAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;gBAAE,QAAQ,GAAG,GAAG,CAAC;YAC3D,IAAM,SAAS,GAAG,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC;YAC1C,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,GAAG,SAAS,CAAC;IACjB,QAAA,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,IAAI,EAAE;IACtC,YAAA,IAAI,OAAO,EAAE;oBACX,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,GAAG,IAAI,CAAC;IAChB,aAAA;gBACD,QAAQ,GAAG,GAAG,CAAC;gBACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,YAAA,IAAI,CAAC,OAAO;IAAE,gBAAA,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC,SAAA;iBAAM,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;IACjD,YAAA,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,SAAA;IACD,QAAA,OAAO,MAAM,CAAC;IAChB,KAAC,CAAC;IACJ;;IC5BA,IAAM,oBAAoB,GAAG,UAAC,GAAY,EAAA;IACxC,IAAA,OAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,GAAI,CAAA,MAAA,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAE,CAAA,EAAA,CAAC,GAAG,EAAE,CAAA;IAAjE,CAAiE,CAAC;IAwBpE,IAAA,QAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,QAAA,GAAA;SAuOC;QAtOC,QAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,UAAuB,EAAA;IACpC,QAAA,KAAwB,UAAU,EAAV,YAAA,GAAA,UAAU,EAAV,EAAU,GAAA,YAAA,CAAA,MAAA,EAAV,IAAU,EAAE;IAA/B,YAAA,IAAM,SAAS,GAAA,YAAA,CAAA,EAAA,CAAA,CAAA;gBAClB,QAAQ,SAAS,CAAC,OAAO;IACvB,gBAAA,KAAK,UAAU;IACb,oBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;wBACjC,MAAM;IACR,gBAAA,KAAK,OAAO;IACV,oBAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;wBACnC,MAAM;IACR,gBAAA,KAAK,cAAc;IACjB,oBAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;wBAC1C,MAAM;IACT,aAAA;IACF,SAAA;SACF,CAAA;QAEO,QAAqB,CAAA,SAAA,CAAA,qBAAA,GAA7B,UAA8B,EAAU,EAAA;IACtC,QAAA,OAAO,CAAC,IAAI,CAAC,kDAA2C,EAAE,EAAA,aAAA,CAAa,CAAC,CAAC;SAC1E,CAAA;IAEO,IAAA,QAAA,CAAA,SAAA,CAAA,gBAAgB,GAAxB,UAAyB,SAAoB,EAAE,OAAoB,EAAA;YACjE,IAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACpD,QAAA,IAAM,aAAa,GAAQ,gBAAgB,CAAC,OAAO,CAAC,CAAC;;;;YAIrD,IAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,QAAA,IAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,MAAM,CAAC;IACvE,QAAA,IAAM,UAAU,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;;IAG7C,QAAA,KAAqB,UAAU,EAAV,YAAA,GAAA,UAAU,EAAV,EAAU,GAAA,YAAA,CAAA,MAAA,EAAV,IAAU,EAAE;IAA5B,YAAA,IAAM,MAAM,GAAA,YAAA,CAAA,EAAA,CAAA,CAAA;IACf,YAAA,KAAoB,UAAU,EAAV,YAAA,GAAA,UAAU,EAAV,EAAU,GAAA,YAAA,CAAA,MAAA,EAAV,IAAU,EAAE;IAA3B,gBAAA,IAAM,KAAK,GAAA,YAAA,CAAA,EAAA,CAAA,CAAA;IACd,gBAAA,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE;wBACtB,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,iBAAA;IACF,aAAA;IACF,SAAA;SACF,CAAA;QAEO,QAAgB,CAAA,SAAA,CAAA,gBAAA,GAAxB,UAAyB,SAAoB,EAAA;YAC3C,IAAM,UAAU,GAAkC,EAAE,CAAC;YACrD,KAAmB,IAAA,EAAA,GAAA,CAAe,EAAf,EAAA,GAAA,SAAS,CAAC,KAAK,EAAf,EAAA,GAAA,EAAA,CAAA,MAAe,EAAf,EAAA,EAAe,EAAE;IAA/B,YAAA,IAAM,IAAI,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;IACb,YAAA,KAAK,IAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;oBAC7B,IAAI,UAAU,CAAC,OAAO,CAAC,GAAU,CAAC,KAAK,CAAC,CAAC,EAAE;IACzC,oBAAA,UAAU,CAAC,IAAI,CAAC,GAAU,CAAC,CAAC;IAC7B,iBAAA;IACF,aAAA;IACF,SAAA;IACD,QAAA,OAAO,UAAU,CAAC;SACnB,CAAA;QAED,QAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,SAAoB,EAAA;YAArC,IA8CC,KAAA,GAAA,IAAA,CAAA;;YA5CC,IAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CACzC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAC1D,CAAC;IACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;IACpB,YAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtE,OAAO;IACR,SAAA;YAED,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,OAAO,EAAA;IAClC,YAAA,KAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;;;;;;IAQ1C,YAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAClC,YAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;IACpC,YAAA,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;;;IAIjD,YAAA,UAAU,CAAC,YAAA;IACT,gBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,cAAO,SAAS,CAAC,QAAQ,EAAA,IAAA,CAAA,CAAA,MAAA,CAAK,oBAAoB,CAC3E,SAAS,CAAC,MAAM,CACjB,CAAE,CAAC;oBACJ,IAAI,SAAS,CAAC,KAAK,EAAE;wBACnB,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC;IACvD,iBAAA;IACD,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;;IAIjD,gBAAA,UAAU,CACR,YAAA;;IAEE,oBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;IAC9B,oBAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;IACrC,iBAAC,EACD,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAChE,CAAC;IACJ,aAAC,CAAC,CAAC;IACL,SAAC,CAAC,CAAC;SACJ,CAAA;QAED,QAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,SAAoB,EAAA;YAAvC,IAoCC,KAAA,GAAA,IAAA,CAAA;;;;YAhCC,IAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CACzC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAC1D,CAAC;IACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;IACpB,YAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtE,OAAO;IACR,SAAA;YAED,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,OAAO,EAAA;IAClC,YAAA,KAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAE1C,IAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC/C,IAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7C,YAAA,SAAS,kBAAkB,GAAA;IACzB,gBAAA,MAAM,CAAC,OAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;iBACtC;IACD,YAAA,SAAS,gBAAgB,GAAA;IACvB,gBAAA,MAAM,CAAC,OAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBACpC;IACD,YAAA,kBAAkB,EAAE,CAAC;IACrB,YAAA,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACzD,YAAA,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;;IAE3D,YAAA,UAAU,CAAC,YAAA;IACT,gBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,cAAO,SAAS,CAAC,QAAQ,EAAA,IAAA,CAAA,CAAA,MAAA,CAAK,oBAAoB,CAC3E,SAAS,CAAC,MAAM,CACjB,CAAE,CAAC;oBACJ,IAAI,SAAS,CAAC,KAAK,EAAE;wBACnB,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC;IACvD,iBAAA;IACH,aAAC,CAAC,CAAC;IACL,SAAC,CAAC,CAAC;SACJ,CAAA;;QAGD,QAAyB,CAAA,SAAA,CAAA,yBAAA,GAAzB,UAA0B,SAAoB,EAAA;YAA9C,IA0FC,KAAA,GAAA,IAAA,CAAA;;YAxFC,IAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CACzC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAC1D,CAAC;IACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;IACpB,YAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtE,OAAO;IACR,SAAA;;YAGD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,OAAO,EAAA;IAClC,YAAA,KAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAE1C,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,YAAA,SAAS,iBAAiB,GAAA;IACxB,gBAAA,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE;wBAC7C,SAAS,GAAG,IAAI,CAAC;wBACjB,gBAAgB,GAAG,IAAI,CAAC;IACxB,oBAAA,UAAU,CAAC,YAAA;IACT,wBAAA,MAAM,CAAC,OAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClD,wBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACrB,4BAAA,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClD,yBAAA;IACD,wBAAA,UAAU,CACR,YAAA;gCACE,gBAAgB,GAAG,KAAK,CAAC;IACzB,4BAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACrB,gCAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;IAC9B,gCAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;IACpC,6BAAA;IACH,yBAAC,EACD,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,CAC3D,CAAC;IACJ,qBAAC,CAAC,CAAC;IACJ,iBAAA;yBAAM,IACL,SAAS,CAAC,MAAM;wBAChB,SAAS;IACT,oBAAA,CAAC,gBAAgB;IACjB,oBAAA,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAC5B;;wBAEA,SAAS,GAAG,KAAK,CAAC;IAClB,oBAAA,MAAM,CAAC,OAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACnD,iBAAA;iBACF;;IAGD,YAAA,IAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;;gBAGtE,SAAS,kBAAkB,CAAC,IAAiB,EAAA;IAC3C,gBAAA,IAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAE1C,gBAAA,IAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;oBAExC,IAAM,gBAAgB,GAAG,CAAC,SAAS,CAAC,gBAAgB,IAAI,CAAC,IAAI,GAAG,CAAC;IACjE,gBAAA,IAAM,SAAS,GAAG,gBAAgB,GAAG,YAAY,CAAC;;IAGlD,gBAAA,QACE,IAAI,CAAC,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,GAAG,YAAY,GAAG,SAAS;;;sBAG9D;iBACH;gBAED,IAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/C,YAAA,SAAS,kBAAkB,GAAA;IACzB,gBAAA,MAAM,CAAC,OAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;iBACtC;IACD,YAAA,kBAAkB,EAAE,CAAC;;IAGrB,YAAA,UAAU,CAAC,YAAA;IACT,gBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,cAAO,SAAS,CAAC,QAAQ,EAAA,IAAA,CAAA,CAAA,MAAA,CAAK,oBAAoB,CAC3E,SAAS,CAAC,MAAM,CACjB,CAAE,CAAC;oBACJ,IAAI,SAAS,CAAC,KAAK,EAAE;wBACnB,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC;IACvD,iBAAA;IACH,aAAC,CAAC,CAAC;;IAGH,YAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAS,CAAC,CAAC;;IAGvF,YAAA,iBAAiB,EAAE,CAAC;IACtB,SAAC,CAAC,CAAC;SACJ,CAAA;QACH,OAAC,QAAA,CAAA;IAAD,CAAC,EAAA,CAAA;;ICnQD;;;;;;IAMG;IACH,IAAM,kBAAkB,GAAG,uCAAuC,CAAC;IAQnE,IAAA,OAAA,kBAAA,YAAA;QAGE,SACU,OAAA,CAAA,OAAwB,EACxB,QAAwB,EAAA;YADxB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;YACxB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAgB;SAC9B;QAEJ,OAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,IAAY,EAAA;YACd,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAW,CAAC;YACxD,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;IACR,SAAA;YAED,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO;IACR,SAAA;IAED,QAAA,IAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,QAAA,OAAO,KAAK,CAAC;SACd,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,IAAY,EAAE,KAAa,EAAE,IAAa,EAAA;IAC5C,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC1B,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,IAAI,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;;IAEhD,QAAA,IAAM,MAAM,GACV,IAAI,CAAC,MAAM,KAAK,SAAS;IACvB,cAAE,CAAC,CAAC,IAAI,CAAC,MAAM;IACf,cAAG,GAAW,CAAC,QAAQ,KAAK,OAAO,IAAK,GAAG,CAAC,UAAkB,CAAC,SAAS,CAAC;YAC7E,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAE7C,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;IAC/B,YAAA,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,SAAA;YAED,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;IAClC,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC1E,SAAA;IAED,QAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,QAAA,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;gBAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B,SAAA;IAED,QAAA,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE5B,QAAA,IAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAA,OAAO,IAAI,CAAC;SACb,CAAA;QACH,OAAC,OAAA,CAAA;IAAD,CAAC,EAAA,CAAA,CAAA;IAED,IAAA,MAAA,kBAAA,YAAA;IAYE,IAAA,SAAA,MAAA,CAAY,IAAY,EAAE,KAAa,EAAE,KAAc,EAAA;YAXvD,IAAI,CAAA,IAAA,GAAG,GAAG,CAAC;YAEX,IAAM,CAAA,MAAA,GAAuB,SAAS,CAAC;YACvC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;YAChB,IAAQ,CAAA,QAAA,GAAsB,KAAK,CAAC;YACpC,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;YACf,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;YAClB,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;YACV,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;IAIT,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAClC,YAAA,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACjD,SAAA;YAED,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC5C,YAAA,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAClD,SAAA;YAED,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAA;IAED,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;YAEzB,IAAI,KAAK,CAAC,OAAO,EAAE;IACjB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,SAAA;YACD,IAAI,KAAK,CAAC,MAAM,EAAE;IAChB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,SAAA;SACF;IAED,IAAA,MAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;YACE,OAAO,EAAA,CAAA,MAAA,CAAG,IAAI,CAAC,IAAI,cAAI,IAAI,CAAC,KAAK,CAAE,CAAC;SACrC,CAAA;IAED,IAAA,MAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;IACE,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE7B,IAAI,IAAI,CAAC,MAAM,EAAE;IACf,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,SAAA;YACD,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,YAAA,MAAM,IAAI,SAAU,CAAA,MAAA,CAAA,IAAI,CAAC,IAAI,CAAE,CAAC;IACjC,SAAA;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,MAAM,IAAI,oBAAa,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAE,CAAC;IACrD,SAAA;YACD,IAAI,IAAI,CAAC,MAAM,EAAE;IACf,YAAA,MAAM,IAAI,WAAY,CAAA,MAAA,CAAA,IAAI,CAAC,MAAM,CAAE,CAAC;IACrC,SAAA;;IAGD,QAAA,MAAM,IAAI,aAAc,CAAA,MAAA,CAAA,IAAI,CAAC,QAAQ,KAAK,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAE,CAAC;;YAGrE,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,MAAM,IAAI,UAAU,CAAC;IACtB,SAAA;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,MAAM,IAAI,YAAY,CAAC;IACxB,SAAA;IAED,QAAA,OAAO,MAAM,CAAC;SACf,CAAA;QACH,OAAC,MAAA,CAAA;IAAD,CAAC,EAAA,CAAA,CAAA;IAED,SAAS,UAAU,CAAC,IAAY,EAAA;IAC9B,IAAA,OAAO,IAAI,MAAM,CAAC,WAAA,CAAA,MAAA,CAAY,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,EAAA,UAAA,CAAU,CAAC,CAAC;IAC5F,CAAC;IAED,SAAS,UAAU,CAAC,OAAY,EAAE,MAAc,EAAA;QAC9C,IAAI,MAAM,CAAC,SAAS,EAAE;IACpB,QAAA,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC5C,YAAA,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAG,CAAA,MAAA,CAAA,MAAM,CAAC,IAAI,EAAA,GAAA,CAAG,CAAC,KAAK,CAAC,EAAE;IAC/C,gBAAA,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,aAAA;IACF,SAAA;IACF,KAAA;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClC;;IC3JM,SAAU,IAAI,CAAmB,GAAM,EAAA;QAAE,IAAsB,MAAA,GAAA,EAAA,CAAA;aAAtB,IAAsB,EAAA,GAAA,CAAA,EAAtB,EAAsB,GAAA,SAAA,CAAA,MAAA,EAAtB,EAAsB,EAAA,EAAA;YAAtB,MAAsB,CAAA,EAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;QACnE,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACzC,IAAA,KAAkB,UAAM,EAAN,QAAA,GAAA,MAAM,EAAN,EAAM,GAAA,QAAA,CAAA,MAAA,EAAN,IAAM,EAAE;IAArB,QAAA,IAAM,GAAG,GAAA,QAAA,CAAA,EAAA,CAAA,CAAA;IACZ,QAAA,OAAQ,SAAiB,CAAC,GAAG,CAAC,CAAC;IAChC,KAAA;IACD,IAAA,OAAO,SAAS,CAAC;IACnB;;ICNA;;IAEG;aACa,MAAM,GAAA;IACpB,IAAA,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAA;IACxE,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAC9B,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;IACrC,QAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxB,KAAC,CAAC,CAAC;IACL,CAAC;IAED;;IAEG;aACa,IAAI,GAAA;QAClB,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC;;aCTgB,QAAQ,GAAA;QACtB,OAAO;IACL,QAAA,KAAK,EAAE,IAAI;IACX,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,QAAQ,EAAE,IAAI;IACd,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,IAAI,EAAE,IAAI;IACV,QAAA,QAAQ,EAAE,IAAI;IACd,QAAA,QAAQ,EAAE,IAAI;IACd,QAAA,MAAM,EAAE,IAAI;IACZ,QAAA,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED;IACA;IACM,SAAUC,OAAK,CAAC,GAAW,EAAA;;IAC/B,IAAA,IAAM,GAAG,GAAY,QAAQ,EAAE,CAAC;IAEhC,IAAA,IAAI,CAAC,CAAC;IACN,IAAA,IAAM,QAAQ,GAAG,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;IAE9C,IAAA,IAAI,QAAQ,EAAE;YACZ,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACpC,QAAA,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAClB,QAAA,GAAG,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,KAAA;IAAM,SAAA;IACL,QAAA,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,QAAA,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAClB,QAAA,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,QAAA,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,QAAA,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAClB,QAAA,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC1B,QAAA,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAClB,QAAA,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC1B,QAAA,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC1B,QAAA,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;IAC9C,KAAA;IAED,IAAA,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,IAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAA,GAAG,CAAC,IAAI,GAAG,EAAA,CAAA,MAAA,CAAG,CAAC,CAAC,QAAQ,CAAA,CAAA,MAAA,CAAG,CAAC,CAAC,MAAM,CAAE,CAAC;IACtC,IAAA,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAE1B,IAAA,OAAO,GAAG,CAAC;IACb;;ICrDA,SAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IACzB,EAAE,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;IAC5B,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IACtB,GAAG;IACH,EAAE,OAAO,IAAI,CAAC;IACd,CAAC;AACD;IACA,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IAC3B,EAAE,IAAI,CAAC,CAAC;IACR,EAAE,IAAI,GAAG,CAAC;IACV,EAAE,IAAI,GAAG,CAAC;IACV,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;IACzB,IAAI,OAAO,IAAI,CAAC;IAChB,GAAG;IACH,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;IAC/C,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC;IACtC,IAAI,IAAI,IAAI,CAAC,CAAC;IACd,GAAG;IACH,EAAE,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,CAAC;AACD;IACA,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;IACpC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;IAC/B,IAAI,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,GAAG;IACH,CAAC;AACD;IACA,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;IAC7C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;IACzE,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;IACtB,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG;IACH,EAAE,IAAI,KAAK,KAAK,SAAS,EAAE;IAC3B,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnC,GAAG;IACH,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;IAChE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;IACpC,MAAM,OAAO,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,GAAG,CAAC,CAAC;IAC5C,KAAK;IACL,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB;IACA,IAAI,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC;AAC/C;IACA,IAAI,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;IACtE,MAAM,OAAO,OAAO,CAAC;IACrB,KAAK;AACL;IACA,IAAI,IAAI;IACR,MAAM,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,OAAO,GAAG,EAAE;IAClB,MAAM,OAAO,IAAI,CAAC,OAAO,EAAE,qBAAqB,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9E,KAAK;IACL,GAAG;IACH,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtC,CAAC;AACD;IACA,SAAS,QAAQ,EAAE,CAAC,EAAE;IACtB,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;AACD;IACA,SAAS,GAAG,EAAE,CAAC,EAAE;IACjB,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;AACD;IACA,IAAA,OAAc,GAAG,GAAG;;ICpEpB;;;;;;;;;;;IAWG;IACG,SAAU,OAAO,CAAC,GAAY,EAAA;QAClC,IAAI,GAAG,YAAY,KAAK;IAAE,QAAA,OAAO,GAAG,CAAC;QACrC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC;;ICdO,IAAM,mBAAmB,GAAe,IAAI;;ICD5C,IAAM,WAAW,GAAG,4BAA4B;;IC0BvD,SAAS,eAAe,CAAC,OAAY,EAAA;IAAZ,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAY,GAAA,EAAA,CAAA,EAAA;IACnC,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,IAAM,gBAAgB,GAAG,UAAC,KAAc,EAAA;IACtC,IAAA,OAAA,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAAxD,CAAwD,CAAC;IAEpD,IAAM,aAAa,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO,KAAK,aAAa,CAAC;IAE3F,IAAM,YAAY,GAAG;QAC1B,YAAY;QACZ,IAAI;QACJ,MAAM;QACN,aAAa;QACb,KAAK;QACL,QAAQ;QACR,OAAO;QACP,MAAM;QACN,MAAM;QACN,UAAU;KACX,CAAC;IAEF,SAAS,aAAa,CAAC,GAAW,EAAE,QAAgB,EAAA;IAClD,IAAA,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;IAC5C,YAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,SAAA;IACF,KAAA;IACD,IAAA,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAM,SAAS,GAAG;IAChB,IAAA,KAAK,YAAC,GAAW,EAAA;YACf,IAAM,EAAE,GAAsB,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAQ,CAAC;IACjE,QAAA,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;YACd,IAAM,GAAG,GAAQ,EAAE,CAAC;IAEpB,QAAA,IAAM,KAAK,GAAG;gBACZ,UAAU;gBACV,UAAU;gBACV,MAAM;gBACN,UAAU;gBACV,MAAM;gBACN,UAAU;gBACV,QAAQ;gBACR,UAAU;gBACV,QAAQ;gBACR,MAAM;aACE,CAAC;IAEX,QAAA,KAAmB,UAAK,EAAL,OAAA,GAAA,KAAK,EAAL,EAAK,GAAA,OAAA,CAAA,MAAA,EAAL,IAAK,EAAE;IAArB,YAAA,IAAM,IAAI,GAAA,OAAA,CAAA,EAAA,CAAA,CAAA;gBACb,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACtB,SAAA;;;YAID,IACE,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE;IACpC,YAAA,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;gBAChC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAC/B;gBACA,GAAG,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC;IACnC,SAAA;IAED,QAAA,OAAO,GAAG,CAAC;SACZ;KACF,CAAC;IAEF,IAAM,KAAK,GAA6B,aAAa;IACnD,MAAE,YAAM,EAAA,OAAA,QAAQ,EAAE,GAAA;IAClB,MAAE,OAAO,MAAM,KAAK,QAAQ;cACxB,SAAS,CAAC,KAAK;cACfC,OAAQ,CAAC;IAEf,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,OAAc,EAAA;QAC5D,IAAI;YACF,IAAI,aAAa,GAAG,EAAE,CAAC;;IAGvB,QAAA,IAAI,OAAO,EAAE;IACX,YAAA,aAAa,GAAG,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACtD,SAAA;IAED,QAAA,IAAM,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC;IACjE,QAAA,QAAQ,CAAC,MAAM;gBACb,IAAI;oBACJ,GAAG;qBACF,KAAK,IAAI,EAAE,CAAC;oBACb,aAAa;oBACb,UAAU;qBACT,MAAM,GAAG,yBAAyB,GAAG,EAAE,CAAC,CAAC;IAC7C,KAAA;IAAC,IAAA,OAAO,GAAG,EAAE;IACZ,QAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAC3C,KAAA;IACH,CAAC;IAED,SAAS,SAAS,CAAC,IAAY,EAAA;QAC7B,IAAI;IACF,QAAA,QACE,kBAAkB,CAChB,QAAQ,CAAC,MAAM,CAAC,OAAO,CACrB,IAAI,MAAM,CACR,kBAAkB;gBAChB,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;gBACvD,6BAA6B,CAChC,EACD,IAAI,CACL,CACF,IAAI,IAAI,EACT;IACH,KAAA;IAAC,IAAA,OAAO,GAAG,EAAE;IACZ,QAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAC3C,KAAA;IACH,CAAC;IAED,SAAS,IAAI,CAAC,MAAc,EAAA;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,SAAS,IAAI,CAAU,MAAW,EAAE,QAAwD,EAAA;QAC1F,IAAM,IAAI,GAAG,MAAM,CAAC;;IAEpB,IAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,IAAA,IAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/B,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;IAC5C,YAAA,OAAO,OAAO,CAAC;IAChB,SAAA;IACF,KAAA;IACH,CAAC;IAED,IAAM,iBAAiB,GAAG,kBAAkB,CAAC;IAC7C,IAAM,eAAe,GAAG,kBAAkB,CAAC;AAE9B,QAAA,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,cAAc;IAClE,IAAM,QAAQ,GAAG,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC;IA6sB1D,SAAU,gBAAgB,CAAC,IAA6B,EAAA;IAA7B,IAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAA6B,GAAA,EAAA,CAAA,EAAA;IAC5D,IAAA,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;AAsBD,QAAA,OAAA,kBAAA,YAAA;QA00BE,SACE,OAAA,CAAA,MAA4B,EAClB,OAAyB,EACzB,QAAyB,EACnC,gBAAwB,EACxB,SAA+B,EAC/B,UAAuB,EAAA;IALvB,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA4B,GAAA,IAAA,CAAA,EAAA;IAG5B,QAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAwB,GAAA,KAAA,CAAA,EAAA;IACxB,QAAA,IAAA,SAAA,KAAA,KAAA,CAAA,EAAA,EAAA,SAA+B,GAAA,IAAA,CAAA,EAAA;YALjC,IAsGC,KAAA,GAAA,IAAA,CAAA;YApGW,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;YACzB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;YApe7B,IAAW,CAAA,WAAA,GAAY,EAAE,CAAC;YAE1B,IAAyB,CAAA,yBAAA,GAAG,QAAQ,CAAC,YAAA;gBAC3C,KAAI,CAAC,kBAAkB,EAAE,CAAC;;IAE1B,YAAA,KAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;aACxE,EAAE,CAAC,CAAC,CAAC;YAsCN,IAAG,CAAA,GAAA,GAAW,YAAY,CAAC;IAE3B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEhC,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;YAErB,IAAiB,CAAA,iBAAA,GAAG,CAAC,CAAC;;YAGtB,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;YAEhB,IAAO,CAAA,OAAA,GAAmB,IAAI,CAAC;;YAG/B,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;YAClB,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;YACpB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;YAChB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;IAqCxB;;;IAGG;IACK,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAsB,OAAO,CAAC,CAAC;IACjE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAyB,SAAS,CAAC,CAAC;YACrE,IAAS,CAAA,SAAA,GAAG,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC/D,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;IAC9B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;IACnD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;IACtD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;IAE9D,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;IAYvD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;;IA2C7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;IAKzD,QAAA,IAAA,CAAA,SAAS,GAAW,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,KAAK,EAAE,CAAC;YAEjF,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;;;;IAmGnC,QAAA,IAAA,CAAA,SAAS,GAAW,IAAI,CAAC,YAAY,EAAE,CAAC;IA4FxC,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS;IAC5B,cAAE,KAAK;IACP,cAAE,CAAC,IAAI,CAAC,gBAAgB;IACtB,gBAAA,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAqF/E,IAAsB,CAAA,sBAAA,GAA2B,EAAE,CAAC;YA+P5C,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;YAmMjC,IAAc,CAAA,cAAA,GAAqE,EAAE,CAAC;YACtF,IAAe,CAAA,eAAA,GAA+B,EAAE,CAAC;YA4GvC,IAAS,CAAA,SAAA,GAA8B,EAAE,CAAC;YAC1C,IAAY,CAAA,YAAA,GAA8B,EAAE,CAAC;YAE/C,IAAe,CAAA,eAAA,GAA+B,IAAI,CAAC;YACnD,IAAiB,CAAA,iBAAA,GAA+B,IAAI,CAAC;YAuiBrD,IAAgB,CAAA,gBAAA,GAAG,eAAe,CAAC;YAkEnC,IAAW,CAAA,WAAA,GAAuB,EAAE,CAAC;;;YApnC3C,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,EAAE;gBACvE,OAAO,OAAO,CAAC,iBAAiB,CAAC;IAClC,SAAA;IAED,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjC,YAAA,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAY,IAAI,EAAE,CAAC,CAAC;IACxE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,SAAA;IAED,QAAA,IAAI,MAAM,EAAE;IACV,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,SAAA;IACD,QAAA,IAAI,UAAU,EAAE;IACd,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,SAAA;IACD,QAAA,IAAI,SAAS,EAAE;IACb,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,SAAA;IACD,QAAA,IAAI,SAAS,EAAE;gBACb,IAAI,OAAO,CAAC,SAAS,EAAE;oBACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAE5B,MAAM,CAAC,WAAW,CAChB;IACE,oBAAA,IAAI,EAAE,yBAAyB;IAC/B,oBAAA,IAAI,EAAE;IACJ,wBAAA,OAAO,EAAE;IACP,4BAAA,OAAO,EAAE,CAAC;IACX,yBAAA;IACF,qBAAA;qBACF,EACD,GAAG,CACJ,CAAC;IACH,aAAA;;;;;;;;;;;;IAYF,SAAA;IAED,QAAA,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,SAAA;;IAGD,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAC,KAAU,EAAA;IAClC,YAAA,IAAI,KAAK,EAAE;IACT,gBAAA,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;wBACzC,IAAI;IACF,wBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;gCAC9C,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,yBAAA;IACF,qBAAA;IAAC,oBAAA,OAAO,GAAG,EAAE;IACZ,wBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC7C,qBAAA;IACF,iBAAA;IACD,gBAAA,IAAI,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;wBAC3B,KAAI,CAAC,yBAAyB,EAAE,CAAC;IAClC,iBAAA;IACD,gBAAA,IAAI,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IAC3B,oBAAA,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;IAC3B,wBAAA,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,qBAAC,CAAC,CAAC;IACH,oBAAA,KAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,iBAAA;IACF,aAAA;IACH,SAAC,CAAC,CAAC;IAEH,QAAA,IAAI,SAAS,EAAE;;gBAEb,IAAI,CAAC,eAAe,EAAE,CAAC;;gBAEvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;;gBAGnC,IAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpE,YAAA,IAAI,cAAc,EAAE;oBAClB,IAAI;wBACF,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACpC,iBAAA;IAAC,gBAAA,OAAO,GAAG,EAAE;IACZ,oBAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;IAC5D,iBAAA;IACF,aAAA;IACF,SAAA;SACF;IAx4BM,IAAA,OAAA,CAAA,QAAQ,GAAf,UAAgB,IAAY,EAAE,IAAS,EAAA;YACrC,IAAI,IAAI,KAAK,QAAQ,EAAE;gBACrB,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,SAAA;;YAGD,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,SAAA;IACD,QAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,OAAO,CAAC,SAAS,EAAE;IACrB,YAAA,IAAM,OAAO,GAAG;IACd,gBAAA,IAAI,EAAE,kBAAkB;IACxB,gBAAA,IAAI,EAAE;IACJ,oBAAA,IAAI,EAAA,IAAA;IACJ,oBAAA,IAAI,EAAA,IAAA;IACL,iBAAA;iBACF,CAAC;gBACF,IAAI;IACF,gBAAA,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACjC,IAAI,MAAM,KAAK,MAAM,EAAE;IACrB,oBAAA,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClC,iBAAA;IACF,aAAA;IAAC,YAAA,OAAO,GAAG,EAAE;IACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC7C,aAAA;IACF,SAAA;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACzC,CAAA;QAIM,OAAc,CAAA,cAAA,GAArB,UAAsB,IAAS,EAAA;YAC7B,IAAI,OAAO,CAAC,SAAS,EAAE;gBACrB,MAAM,CAAC,WAAW,CAChB;IACE,gBAAA,IAAI,EAAE,wBAAwB;IAC9B,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;iBAC9B,EACD,GAAG,CACJ,CAAC;IACM,YAAA,IAAA,QAAQ,GAAK,QAAQ,CAAA,QAAb,CAAc;IAE9B,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;IACpC,gBAAA,OAAO,CAAC,KAAK,CACX,kWAAkW,CACnW,CAAC;IACH,aAAA;IACF,SAAA;IACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB,CAAA;QAEM,OAAc,CAAA,cAAA,GAArB,UAAsB,IAAS,EAAA;IAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB,CAAA;QAEM,OAAc,CAAA,cAAA,GAArB,UAAsB,MAAc,EAAA;;IAClC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1B,IAAI,OAAO,CAAC,SAAS,EAAE;IACrB,YAAA,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvD,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjB,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC/C,aAAA;IACD,YAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,gBAAA,IAAI,EAAE,wBAAwB;IAC9B,gBAAA,IAAI,EAAE,WAAW;iBAClB,EACD,GAAG,CACJ,CAAC;IACH,SAAA;SACF,CAAA;QAEM,OAAmB,CAAA,mBAAA,GAA1B,UAA2B,IAAY,EAAA;IACrC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC9B,CAAA;IAED;;;;;;;IAOG;QACI,OAAgB,CAAA,gBAAA,GAAvB,UAAwB,OAAY,EAAA;IAClC,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;SAC9B,CAAA;QAEM,OAAa,CAAA,aAAA,GAApB,UAAqB,QAAgB,EAAA;YACnC,IAAM,SAAS,GACb,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAA,WAAW,EAAA;IACrC,YAAA,OAAA,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;sBACxB,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;sBACvC,WAAW,KAAK,QAAQ,CAAA;IAF5B,SAE4B,CAC7B,GAAG,CAAC,CAAC,CAAC;IAET,QAAA,OAAO,SAAS,CAAC;SAClB,CAAA;QAEM,OAAqB,CAAA,qBAAA,GAA5B,UAA6B,KAAmB,EAAA;IAC9C,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;IAC3B,YAAA,OAAO,KAAK,CAAC;IACd,SAAA;YACD,IAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,QAAA,OAAO,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC5D,CAAA;QAEM,OAAS,CAAA,SAAA,GAAhB,UAAiB,MAAuB,EAAA;;IAEtC,QAAA,IAAM,YAAY,GAChB,OAAO,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAA,IAAI,EAAI,EAAA,OAAA,IAAI,CAAC,IAAI,KAAK,MAAM,CAApB,EAAoB,CAAC,GAAG,MAAM,CAAC;YAEzF,IAAI,CAAC,YAAY,EAAE;IACjB,YAAA,MAAM,IAAI,KAAK,CAAC,4BAAqB,MAAM,CAAE,CAAC,CAAC;IAChD,SAAA;SACF,CAAA;IAEM,IAAA,OAAA,CAAA,MAAM,GAAb,UAAc,IAAY,EAAE,MAAwB,EAAA;;IAClD,QAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,YAAA,IAAI,EAAE,gBAAgB;IACtB,YAAA,IAAI,EAAE,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE;aACvB,EACD,GAAG,CACJ,CAAC;SACH,CAAA;IAaD;;;;;IAKG;QACI,OAAG,CAAA,GAAA,GAAV,UAAW,QAAkB,EAAA;IAC3B,QAAA,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;SAC/C,CAAA;QAEM,OAAM,CAAA,MAAA,GAAb,UAAc,WAAmB,EAAA;IAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;;IAEtB,YAAA,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;gBAC5F,OAAO;IACR,SAAA;IACO,QAAA,IAAA,MAAM,GAAK,MAAa,CAAA,MAAlB,CAAmB;YAEjC,IAAI,CAAC,MAAM,EAAE;IACX,YAAA,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;gBAC5F,OAAO;IACR,SAAA;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,0CAAmC,WAAW,CAAE,CAAC,CAAC;SACxE,CAAA;IAmBD,IAAA,MAAA,CAAA,cAAA,CAAW,OAAW,EAAA,aAAA,EAAA;;IAAtB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;IAED,QAAA,GAAA,EAAA,UAAuB,WAAW,EAAA;IAChC,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;gBAChC,IAAI,SAAS,IAAI,QAAQ,EAAE;IACzB,gBAAA,IAAI,WAAW,EAAE;wBACf,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACrD,iBAAA;IAAM,qBAAA;wBACL,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACxD,iBAAA;IACF,aAAA;aACF;;;IAXA,KAAA,CAAA,CAAA;IAac,IAAA,OAAA,CAAA,2BAA2B,GAA1C,UAA2C,IAAS,EAAE,WAAqB,EAAA;YACzE,IAAM,WAAW,GAAG,UAAC,OAAiB,EAAA;gBACpC,IAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;;;;;;;;;gBAUxC,IAAM,oBAAoB,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChE,IAAM,cAAc,GAClB,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;IAC7B,gBAAA,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;IAC1B,gBAAA,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;IACtB,gBAAA,CAAC,oBAAoB,CAAC;IAExB,YAAA,OAAO,UAAW,CAAA,MAAA,CAAA,cAAc,GAAG,WAAW,GAAG,EAAE,CAAG,CAAA,MAAA,CAAA,KAAK,6BAA0B,CAAC;IACxF,SAAC,CAAC;IAEF,QAAA,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAC,GAAG,EAAE,KAAK,EAAA;IAC9B,YAAA,IAAM,oBAAoB,GAAG,WAAW,IAAI,GAAG,KAAK,QAAQ,CAAC;IAC7D,YAAA,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC,oBAAoB,EAAE;IACxD,gBAAA,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3B,aAAA;IACD,YAAA,OAAO,KAAK,CAAC;aACd,CAAC,CACH,CAAC;IAEF,QAAA,IAAI,WAAW,EAAE;IACf,YAAA,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,SAAA;IAED,QAAA,OAAO,WAAW,CAAC;SACpB,CAAA;QAEc,OAA0B,CAAA,0BAAA,GAAzC,UAA0C,IAAe,EAAA;YACvD,OACK,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CACzC,EAAA,EAAA,KAAK,EAAE,SAAS,EAChB,CAAA,CAAA;SACH,CAAA;IAEM,IAAA,OAAA,CAAA,aAAa,GAApB,UAAqB,SAAc,EAAE,OAAkB,EAAA;IACrD,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;SAC5C,CAAA;IAEM,IAAA,OAAA,CAAA,iBAAiB,GAAxB,UAAyB,SAAc,EAAE,OAAkB,EAAA;;IACzD,QAAA,IAAM,IAAI,GAAA,QAAA,CAAA,QAAA,CAAA,EACR,KAAK,EAAE,SAAS,EAAA,EACb,SAAS,CAAC,cAAc,CAAA,EACxB,OAAO,CACX,CAAC;IACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,IAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY;IACnD,cAAE,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;kBACzE,SAAS,CAAC;IAChB,QAAA,IAAI,QAAQ,EAAE;gBACZ,IAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACvD,YAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,gBAAA,IAAI,EAAE,2BAA2B;IACjC,gBAAA,IAAI,EAAE,QAAQ;iBACf,EACD,GAAG,CACJ,CAAC;IACH,SAAA;SACF,CAAA;QAEc,OAAY,CAAA,YAAA,GAA3B,UAA4B,SAAoB,EAAA;YAC9C,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAA,IAAI,EAAA,EAAI,OAAA,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAA,EAAA,CAAC,CAAC;IAC5E,QAAA,IAAI,OAAO,EAAE;;;gBAGX,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;oBACrC,OAAO;IACR,aAAA;IACD,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACxE,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,SAAA;SACF,CAAA;;QAGM,OAAS,CAAA,SAAA,GAAhB,UAAiB,IAA6B,EAAA;YAA9C,IAqBC,KAAA,GAAA,IAAA,CAAA;IArBgB,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAA6B,GAAA,EAAA,CAAA,EAAA;IAC5C,QAAA,OAAO,UAAC,SAAgB,EAAA;;gBACtB,IAAM,IAAI,yBAAQ,IAAI,CAAA,EAAA,EAAE,KAAK,EAAE,SAAS,GAAE,CAAC;IAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACd,gBAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC5B,aAAA;IACD,YAAA,KAAI,CAAC,YAAY,CAAC,IAAiB,CAAC,CAAC;gBAErC,IAAM,QAAQ,GAAG,KAAI,CAAC,0BAA0B,CAAC,IAAiB,CAAC,CAAC;;IAEpE,YAAA,IAAI,SAAS,EAAE;IACb,gBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,oBAAA,IAAI,EAAE,2BAA2B;IACjC,oBAAA,IAAI,EAAE,QAAQ;qBACf,EACD,GAAG,CACJ,CAAC;IACH,aAAA;IACD,YAAA,OAAO,SAAS,CAAC;IACnB,SAAC,CAAC;SACH,CAAA;IAUD,IAAA,MAAA,CAAA,cAAA,CAAW,OAAS,EAAA,WAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;;;IAAA,KAAA,CAAA,CAAA;IAUO,IAAA,OAAA,CAAA,SAAA,CAAA,kBAAkB,GAA1B,YAAA;IACE,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBAC5B,OAAO;IACR,SAAA;IACD,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IAChC,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YAEtB,IAAM,kBAAkB,GACnB,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,OAAO,CAAC,sBAAsB,GAC9B,IAAI,CAAC,sBAAsB,CAC/B,CAAC;IACF,QAAA,KAAoB,UAAM,EAAN,QAAA,GAAA,MAAM,EAAN,EAAM,GAAA,QAAA,CAAA,MAAA,EAAN,IAAM,EAAE;IAAvB,YAAA,IAAM,OAAK,GAAA,QAAA,CAAA,EAAA,CAAA,CAAA;IACd,YAAA,IAAI,CAAC,OAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;IACxB,gBAAA,OAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC1B,aAAA;gBACD,IAAI,CAAC,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC7B,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;IAC/B,aAAA;gBACD,MAAM,CAAC,MAAM,CAAC,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvF,SAAA;IAED,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAEvB,QAAA,QAAQ,EAAE,CAAC,EAAG,CAAA,MAAA,CAAA,IAAI,kBAAe,EAAE;IACjC,YAAA,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAA,MAAA,EAAE,CAAC;gBAChC,OAAO,EAAA,QAAA,CAAA,EACL,cAAc,EAAE,kBAAkB,IAC/B,IAAI,CAAC,aAAa,EAAE,CACxB;IACD,YAAA,IAAI,EAAE,MAAM;aACb,CAAC,CAAC,KAAK,CAAC,YAAA;;IAET,SAAC,CAAC,CAAC;SACJ,CAAA;IAqBD,IAAA,MAAA,CAAA,cAAA,CAAI,OAAuB,CAAA,SAAA,EAAA,yBAAA,EAAA;IAA3B,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,OAAO,CAAC,SAAS,IAAI,OAAO,CAAE,MAAc,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;aACjG;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,OAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAZ,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC7B;IAED,QAAA,GAAA,EAAA,UAAa,QAAQ,EAAA;IACnB,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAClC,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;IAC9B,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,aAAA;aACF;;;IAPA,KAAA,CAAA,CAAA;IASD,IAAA,MAAA,CAAA,cAAA,CAAI,OAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAAd,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;aAC/B;IAED,QAAA,GAAA,EAAA,UAAe,UAAkC,EAAA;IAC/C,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;IAClC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnC,aAAA;aACF;;;IANA,KAAA,CAAA,CAAA;IAQD,IAAA,MAAA,CAAA,cAAA,CAAI,OAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;aAChC;IAED,QAAA,GAAA,EAAA,UAAgB,WAAgC,EAAA;IAC9C,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;IACpC,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,aAAA;aACF;;;IANA,KAAA,CAAA,CAAA;IAsBD,IAAA,MAAA,CAAA,cAAA,CAAI,OAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;aAChC;IAED,QAAA,GAAA,EAAA,UAAgB,KAAK,EAAA;IACnB,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;IAC9B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,aAAA;aACF;;;IANA,KAAA,CAAA,CAAA;IAUD,IAAA,MAAA,CAAA,cAAA,CAAI,OAAY,CAAA,SAAA,EAAA,cAAA,EAAA;IAAhB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;aACjC;IAED,QAAA,GAAA,EAAA,UAAiB,KAAK,EAAA;IACpB,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;IAC/B,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,aAAA;aACF;;;IANA,KAAA,CAAA,CAAA;IAQO,IAAA,OAAA,CAAA,SAAA,CAAA,iBAAiB,GAAzB,UACE,MAAmB,EACnB,QAA2C,EAC3C,YAAmB,EAAA;IAAnB,QAAA,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,EAAA,YAAmB,GAAA,IAAA,CAAA,EAAA;IAEnB,QAAA,IAAI,EAAE,MAAM,YAAY,WAAW,CAAC,EAAE;IACpC,YAAA,OAAO,IAAI,CAAC;IACb,SAAA;IACD,QAAA,IAAI,MAAM,GAAuB,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;YAC9E,GAAG;gBACD,IAAI,CAAC,MAAM,EAAE;IACX,gBAAA,OAAO,IAAI,CAAC;IACb,aAAA;IAED,YAAA,IAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,YAAA,IAAI,OAAO,EAAE;IACX,gBAAA,OAAO,MAAM,CAAC;IACf,aAAA;IACF,SAAA,SAAS,MAAM,GAAG,MAAM,CAAC,aAAa,GAAG;IAE1C,QAAA,OAAO,IAAI,CAAC;SACb,CAAA;QAEO,OAAiB,CAAA,SAAA,CAAA,iBAAA,GAAzB,UAA0B,MAAmB,EAAA;IAC3C,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAA,EAAE,EAAA;IACtC,YAAA,IAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;IAClD,YAAA,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,SAAC,CAAC,CAAC;SACJ,CAAA;QAKD,OAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,SAAiB,EAAA;IAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;SAClC,CAAA;IAKD;;;;;;;;;;;IAWG;QACH,OAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAkB,EAAA;IAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,SAAiB,EAAE,UAAmC,EAAE,OAAa,EAAA;IAAlD,QAAA,IAAA,UAAA,KAAA,KAAA,CAAA,EAAA,EAAA,UAAmC,GAAA,EAAA,CAAA,EAAA;;YAE1D,IAAI,QAAQ,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE;gBAClD,OAAO;IACR,SAAA;IAED,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE;IACX,YAAA,OAAO,CAAC,KAAK,CACX,wOAAwO,CACzO,CAAC;gBACF,OAAO;IACR,SAAA;YAED,IAAI,SAAS,GAAU,IAAI,CAAC,KAAK,CAC/B,IAAI,CAAC,SAAS,CAAC;IACb,YAAA,IAAI,EAAE,SAAS;gBACf,IAAI,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA,EAAA,EAC3B,QAAQ,EAAA,QAAA,CAAA,QAAA,CAAA,EACN,UAAU,EAAE,OAAO,CAAC,OAAO,EAC3B,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAA,EACf,UAAU,CAAC,IAAI,CAAA,EACf,UAAU,CAAC,QAAQ,CAExB,EAAA,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,EACxC,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EAC1B,CAAA;IACF,SAAA,CAAC,CACH,CAAC;YAEF,KAAmB,IAAA,EAAA,GAAA,CAAkB,EAAlB,EAAA,GAAA,IAAI,CAAC,aAAa,EAAlB,EAAA,GAAA,EAAA,CAAA,MAAkB,EAAlB,EAAA,EAAkB,EAAE;IAAlC,YAAA,IAAM,IAAI,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;gBACb,IAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACnD,YAAA,IAAI,WAAW,EAAE;oBACf,SAAS,GAAG,WAAW,CAAC;IACzB,aAAA;IACF,SAAA;;IAGD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IAClC,SAAA;SACF,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;YAAA,IA4BC,KAAA,GAAA,IAAA,CAAA;YA3BC,IAAI,SAAS,GAAkB,IAAI,CAAC;YACpC,IAAI;gBACF,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;IAC9D,gBAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC/C,aAAA;IACF,SAAA;IAAC,QAAA,OAAO,GAAG,EAAE;IACZ,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;;IAE7C,SAAA;YAED,IAAI,CAAC,SAAS,EAAE;gBACd,SAAS,GAAG,IAAI,EAAE,CAAC;IACpB,SAAA;;YAGD,IAAI,OAAO,CAAC,SAAS,EAAE;IACrB,YAAA,UAAU,CAAC,YAAA;oBACT,IAAI;wBACF,IAAI,KAAI,CAAC,QAAQ,EAAE;IACjB,wBAAA,KAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,qBAAA;IACF,iBAAA;IAAC,gBAAA,OAAO,GAAG,EAAE;IACZ,oBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAC5C,iBAAA;IACH,aAAC,CAAC,CAAC;IACJ,SAAA;IACD,QAAA,OAAO,SAAS,CAAC;SAClB,CAAA;IAOD,IAAA,OAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;YAAA,IAkCC,KAAA,GAAA,IAAA,CAAA;YAjCC,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,SAAA;YACD,IAAI,SAAS,GAAkB,IAAI,CAAC;YACpC,IAAI;gBACF,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;;IAE5D,gBAAA,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACnD,aAAA;IACF,SAAA;IAAC,QAAA,OAAO,GAAG,EAAE;IACZ,YAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;IAE3C,SAAA;YAED,IAAI,CAAC,SAAS,EAAE;gBACd,SAAS,GAAG,IAAI,EAAE,CAAC;IACpB,SAAA;IAED,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;;YAG3B,IAAI,OAAO,CAAC,SAAS,EAAE;IACrB,YAAA,UAAU,CAAC,YAAA;oBACT,IAAI;wBACF,IAAI,KAAI,CAAC,QAAQ,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,SAAS,EAAE;IACrE,wBAAA,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAClD,qBAAA;IACF,iBAAA;IAAC,gBAAA,OAAO,GAAG,EAAE;IACZ,oBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC7C,iBAAA;IACH,aAAC,CAAC,CAAC;IACJ,SAAA;IACD,QAAA,OAAO,SAAS,CAAC;SAClB,CAAA;QAED,OAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,SAAiB,EAAE,WAAoB,EAAE,UAAgB,EAAE,OAAa,EAAA;YACtF,IAAI,QAAQ,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE;gBAClD,OAAO;IACR,SAAA;;IAED,QAAA,IAAI,CAAC,KAAK,CACR,YAAY,EACZ;IACE,YAAA,SAAS,EAAA,SAAA;gBACT,WAAW,EAAE,WAAW,KAAK,SAAS,GAAG,WAAW,GAAG,SAAS;IAChE,YAAA,QAAQ,EAAE,UAAU;aACrB,EACD,OAAO,CACR,CAAC;SACH,CAAA;QAGD,OAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UACE,MAAe,EACf,SAAwB,EACxB,WAAoB,EACpB,gBAAsB,EACtB,OAAa,EAAA;YAEb,IAAI,QAAQ,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE;gBAClD,OAAO;IACR,SAAA;IACD,QAAA,IAAM,IAAI,GAAG,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;IAC1E,QAAA,IAAI,YAAY,GAAG,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;YAEzE,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;IACjD,YAAA,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,SAAA;YAED,IAAI,cAAc,GAAG,WAAW,CAAC;IACjC,QAAA,IAAI,CAAC,cAAc,IAAI,YAAY,EAAE;IACnC,YAAA,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACnD,SAAA;IAED,QAAA,IAAI,CAAC,KAAK,CACR,YAAY,EACZ;IACE,YAAA,MAAM,EAAA,MAAA;IACN,YAAA,WAAW,EACT,cAAc,IAAI,YAAY,IAAI,cAAc,KAAK,YAAY;IAC/D,kBAAE,cAAc;IAChB,kBAAE,SAAS;IACf,YAAA,IAAI,EAAA,IAAA;IACJ,YAAA,SAAS,EAAE,YAAY;aACxB,EACD,OAAO,CACR,CAAC;SACH,CAAA;IAQD,IAAA,MAAA,CAAA,cAAA,CAAY,OAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;;IAA5B,QAAA,GAAA,EAAA,YAAA;;gBAEE,QACE,OAAO,CAAC,QAAQ;IAChB,iBAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IAClF,gBAAA,IAAI,CAAC,GAAG,KAAK,YAAY,EACzB;aACH;;;IAAA,KAAA,CAAA,CAAA;QAED,OAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UACE,SAAiB,EACjB,WAAoB,EACpB,iBAAyB,EACzB,KAAkB,EAClB,OAAa,EAAA;IAFb,QAAA,IAAA,iBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,iBAAyB,GAAA,KAAA,CAAA,EAAA;YAIzB,IAAI,QAAQ,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE;gBAClD,OAAO;IACR,SAAA;IACD,QAAA,IAAM,MAAM,GAAG,KAAK,IAAK,KAAK,CAAC,MAAsB,CAAC;YACtD,IAAM,oBAAoB,GAAG,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAEtE,SAAS,KAAK,CAAC,GAAW,EAAA;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;aACtC;YAED,IAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,QAAA,IAAI,KAAK,EAAE;gBACD,IAAA,OAAO,GAAc,KAAK,CAAA,OAAnB,EAAE,OAAO,GAAK,KAAK,CAAA,OAAV,CAAW;IACnC,YAAA,IAAI,MAAM,EAAE;IACV,gBAAA,IAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAClD,gBAAA,IAAM,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAC1C,gBAAA,IAAM,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;oBAEzC,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;oBACjD,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;oBAElD,QAAQ,CAAC,YAAY,GAAG;IACtB,oBAAA,CAAC,EAAE,MAAM;IACT,oBAAA,CAAC,EAAE,MAAM;qBACV,CAAC;IACH,aAAA;IACD,YAAA,IAAI,oBAAoB,EAAE;IACxB,gBAAA,IAAM,UAAU,GAAG,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;IAChE,gBAAA,IAAM,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAC1C,gBAAA,IAAM,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;oBAEzC,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;oBACjD,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;oBAElD,QAAQ,CAAC,mBAAmB,GAAG;IAC7B,oBAAA,CAAC,EAAE,MAAM;IACT,oBAAA,CAAC,EAAE,MAAM;qBACV,CAAC;IACH,aAAA;IACF,SAAA;YAED,IAAM,SAAS,GACb,oBAAoB;iBACnB,oBAAoB,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAE/E,IAAI,SAAS,IAAI,oBAAoB,EAAE;IACrC,YAAA,QAAQ,CAAC,mBAAmB,GAAI,EAAgB,CAAC,KAAK;IACnD,iBAAA,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;qBAChD,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClC,SAAA;IAED,QAAA,IAAI,CAAC,KAAK,CACR,OAAO,EACP;IACE,YAAA,SAAS,EAAA,SAAA;IACT,YAAA,QAAQ,EAAA,QAAA;gBACR,WAAW,EAAE,WAAW,KAAK,SAAS,GAAG,WAAW,GAAG,SAAS;gBAChE,MAAM,EAAE,CAAC,iBAAiB;gBAC1B,oBAAoB,EAAE,SAAS,IAAI,SAAS;aAC7C,EACD,OAAO,CACR,CAAC;SACH,CAAA;QAMD,OAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,IAA6B,EAAA;IAA7B,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAA6B,GAAA,EAAA,CAAA,EAAA;IACrC,QAAA,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAChC,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,OAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAV,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;aAC3B;IAED,QAAA,GAAA,EAAA,UAAW,GAAkB,EAAA;IAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACxB;;;IAJA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAI,OAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAAb,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;aAC9B;IAED,QAAA,GAAA,EAAA,UAAc,EAAiB,EAAA;IAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC1B;;;IAJA,KAAA,CAAA,CAAA;IAMD,IAAA,MAAA,CAAA,cAAA,CAAI,OAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAAb,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;aAC9B;IAED,QAAA,GAAA,EAAA,UAAc,KAAoB,EAAA;IAChC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC7B;;;IAJA,KAAA,CAAA,CAAA;QA8GO,OAAY,CAAA,SAAA,CAAA,YAAA,GAApB,UAAqB,MAAc,EAAA;IACjC,QAAA,OAAO,MAAM,CAAC,OAAO,CACnB,0BAA0B,EAC1B,UAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAK,EAAA,OAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,CAAxC,EAAwC,CACrE,CAAC;SACH,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;YACE,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;YACzC,IAAI;gBACF,IAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChF,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IACrD,YAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACtC,gBAAA,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;IACvB,oBAAA,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;4BAC7B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,qBAAA;IACF,iBAAA;IACF,aAAA;IACF,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;IACV,YAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;IAClD,SAAA;SACF,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;;;IAGE,QAAA,OAAO,CAAC,sBAAsB,GAAG,EAAE,CAAC;IACpC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACvB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACrB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACpB,QAAA,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;IACxB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACpB,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;SAC3B,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,2BAA2B,GAA3B,YAAA;IACE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI;gBACF,IAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,YAAA,IAAA,OAAO,GAAK,MAAM,CAAA,OAAX,CAAY;IAC3B,YAAA,IAAI,OAAO,EAAE;oBAET,IAAA,cAAc,GAYZ,OAAO,CAZK,cAAA,EACd,SAAS,GAWP,OAAO,CAAA,SAXA,EACT,GAAG,GAUD,OAAO,CAVN,GAAA,EACH,IAAI,GASF,OAAO,CAAA,IATL,EACJ,GAAG,GAQD,OAAO,CARN,GAAA,EACH,SAAS,GAOP,OAAO,CAAA,SAPA,EACT,OAAO,GAML,OAAO,CANF,OAAA,EACP,OAAO,GAKL,OAAO,CAAA,OALF,EACP,OAAO,GAIL,OAAO,CAJF,OAAA,EACP,YAAY,GAGV,OAAO,CAAA,YAHG,EACZ,OAAO,GAEL,OAAO,CAFF,OAAA,EACC,cAAc,GACpB,OAAO,CAAA,MADa,CACZ;IAEZ,gBAAA,IAAI,cAAc,EAAE;IAClB,oBAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACxC,iBAAA;IAED,gBAAA,IAAI,OAAO,EAAE;;wBAEX,IAAI,CAAC,YAAY,GACZ,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,GAAC,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAC5C,OAAO,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,EAAC,GAC5D,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EACjD,CAAC;IACH,iBAAA;IAED,gBAAA,IAAI,SAAS,EAAE;IACb,oBAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,iBAAA;oBAED,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;IACzC,oBAAA,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC;IACvB,iBAAA;oBAED,IAAI,OAAO,CAAC,SAAS,EAAE;IACrB,oBAAA,IAAM,YAAY,GAAG,YAAY,IAAI,OAAO,IAAI,OAAO,CAAC;IACxD,oBAAA,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;IAC3C,wBAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IAClC,qBAAA;IACF,iBAAA;IAED,gBAAA,IAAI,SAAS,EAAE;IACb,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,iBAAA;IAED,gBAAA,IAAI,OAAO,EAAE;IACX,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,iBAAA;IAED,gBAAA,IAAI,OAAO,EAAE;IACX,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,iBAAA;IAED,gBAAA,IAAI,MAAM,EAAE;IACV,oBAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACtC,iBAAA;IACF,aAAA;IACF,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;IACV,YAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;IACtD,SAAA;SACF,CAAA;IAEO,IAAA,OAAA,CAAA,SAAA,CAAA,kBAAkB,GAA1B,YAAA;;IACE,QAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,YAAA,IAAI,EAAE,gBAAgB;IACtB,YAAA,IAAI,EAAE;IACJ,gBAAA,KAAK,EAAE,IAAI;IACZ,aAAA;aACF,EACD,GAAG,CACJ,CAAC;SACH,CAAA;IAIO,IAAA,OAAA,CAAA,SAAA,CAAA,oBAAoB,GAA5B,YAAA;YAAA,IA+LC,KAAA,GAAA,IAAA,CAAA;IA9LC,QAAA,gBAAgB,CAAC,SAAS,EAAE,UAAA,KAAK,EAAA;;gBAC/B,IAAM,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACvD,YAAA,IAAI,CAAC,SAAS;oBAAE,OAAO;IAEf,YAAA,IAAA,IAAI,GAAK,KAAK,CAAA,IAAV,CAAW;IACvB,YAAA,IAAI,IAAI,EAAE;oBACR,QAAQ,IAAI,CAAC,IAAI;wBACf,KAAK,cAAc,EAAE;IACnB,wBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,4BAAA,IAAI,EAAE,cAAc;IACpB,4BAAA,IAAI,EAAE,EAAE;6BACT,EACD,GAAG,CACJ,CAAC;4BACF,MAAM;IACP,qBAAA;wBACD,KAAK,kBAAkB,EAAE;;IAEvB,wBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;gCAC3B,MAAM;IACP,yBAAA;IACD,wBAAA,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;4BAC1B,IAAI,CAAC,OAAO,EAAE;gCACZ,MAAM;IACP,yBAAA;4BACO,IAAA,IAAI,GAAW,OAAO,CAAA,IAAlB,EAAE,IAAI,GAAK,OAAO,CAAA,IAAZ,CAAa;;4BAE/B,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;4BACtC,IAAI,CAAC,QAAQ,EAAE;gCACb,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACxC,yBAAA;IACD,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACpB,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;4BAC9C,MAAM;IACP,qBAAA;wBACD,KAAK,wBAAwB,EAAE;;IAE7B,wBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;gCAC3B,MAAM;IACP,yBAAA;IACD,wBAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;4BAC3B,IAAI,CAAC,QAAQ,EAAE;gCACb,MAAM;IACP,yBAAA;4BACD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;4BAC1C,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;4BAC9C,MAAM;IACP,qBAAA;wBACD,KAAK,wBAAwB,EAAE;;IAE7B,wBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;gCAC3B,MAAM;IACP,yBAAA;IACD,wBAAA,IAAM,MAAI,GAAG,IAAI,CAAC,IAAI,CAAC;4BACvB,IAAI,CAAC,MAAI,EAAE;gCACT,MAAM;IACP,yBAAA;IACD,wBAAA,IAAM,cAAY,GAAG,CAAC,CAAC,MAAI,CAAC,SAAS,CAAC;4BACtC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAC,QAAQ,EAAE,KAAK,EAAA;IACpC,4BAAA,IAAI,MAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;IAC/B,gCAAA,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC,cAAY,EAAE;IACvC,oCAAA,OAAO,KAAK,CAAC;IACd,iCAAA;IAAM,qCAAA;IACL,oCAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;IACnC,iCAAA;IACD,gCAAA,OAAO,KAAK,CAAC;IACd,6BAAA;IACD,4BAAA,OAAO,IAAI,CAAC;IACd,yBAAC,CAAC,CAAC;4BACH,MAAM;IACP,qBAAA;wBACD,KAAK,0BAA0B,EAAE;4BAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAC7C,MAAM;IACP,qBAAA;IACD,oBAAA,KAAK,uBAAuB;4BAC1B,IAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;4BACvF,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;4BACnC,IAAM,QAAQ,GAAG,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;4BAC1C,IAAI,QAAQ,IAAI,CAAC,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;IAC1C,4BAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B,yBAAA;4BACD,MAAM;IAER,oBAAA,KAAK,uBAAuB;IAC1B,wBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,4BAAA,IAAI,EAAE,oBAAoB;IAC1B,4BAAA,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC;6BAC/E,EACD,GAAG,CACJ,CAAC;4BACF,MAAM;IAER,oBAAA,KAAK,sBAAsB;4BACzB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;4BACpC,MAAM;IAER,oBAAA,KAAK,2BAA2B;IAC9B,wBAAA,IAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;IAChC,wBAAA,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;4BACpC,MAAM;IAER,oBAAA,KAAK,6BAA6B;4BAChC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;gCACvC,KAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C,yBAAA;4BACD,MAAM;IAER,oBAAA,KAAK,qBAAqB;IACxB,wBAAA,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;IAC9B,wBAAA,IAAI,WAAW,EAAE;IACf,4BAAA,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gCACxB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAChD,yBAAA;IAAM,6BAAA;IACL,4BAAA,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gCACzB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACnD,yBAAA;4BACD,MAAM;IAER,oBAAA,KAAK,yBAAyB;IAC5B,wBAAA,IAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC;IAClC,wBAAA,OAAO,CAAC,WAAW,GAAG,eAAe,CAAC;4BACtC,MAAM;IAER,oBAAA,KAAK,gCAAgC;IACnC,wBAAA,IAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;IACjC,wBAAA,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;IACvD,wBAAA,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;;4BAEhC,MAAM;IAER,oBAAA,KAAK,2BAA2B;4BACxB,IAAA,EAAA,GAA6B,IAAI,CAAC,IAAI,EAApC,WAAW,GAAA,EAAA,CAAA,WAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAc,CAAC;4BAC7C,IAAI,WAAW,IAAI,SAAS,EAAE;IAC5B,4BAAA,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3C,4BAAA,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjC,yBAAA;4BACD,MAAM;wBACR,KAAK,kBAAkB,EAAE;IACvB,wBAAA,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;4BAC5B,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IACvC,wBAAA,IAAM,IAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;;IAExB,wBAAA,IAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;4BAC9B,IAAI,MAAM,SAAK,CAAC;4BAChB,IAAI,KAAK,GAAiB,IAAI,CAAC;4BAC/B,IAAI;gCACF,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,yBAAA;IAAC,wBAAA,OAAO,GAAG,EAAE;IACZ,4BAAA,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,yBAAA;IAED,wBAAA,IAAI,KAAK,EAAE;IACT,4BAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,gCAAA,IAAI,EAAE,uBAAuB;oCAC7B,IAAI,EAAE,EAAE,EAAE,EAAA,IAAA,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;iCACnC,EACD,GAAG,CACJ,CAAC;IACH,yBAAA;IAAM,6BAAA;gCACL,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;oCAC9C,MAAuB;yCACrB,IAAI,CAAC,UAAA,WAAW,EAAA;;IACf,oCAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,wCAAA,IAAI,EAAE,wBAAwB;4CAC9B,IAAI,EAAE,EAAE,EAAE,EAAA,IAAA,EAAE,MAAM,EAAE,WAAW,EAAE;yCAClC,EACD,GAAG,CACJ,CAAC;IACJ,iCAAC,CAAC;IACD,qCAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB,6BAAA;IAAM,iCAAA;IACL,gCAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB;IACE,oCAAA,IAAI,EAAE,wBAAwB;IAC9B,oCAAA,IAAI,EAAE,EAAE,MAAM,QAAA,EAAE,EAAE,MAAA,EAAE;qCACrB,EACD,GAAG,CACJ,CAAC;IACH,6BAAA;IACF,yBAAA;4BACD,MAAM;IACP,qBAAA;IACF,iBAAA;IACF,aAAA;IACH,SAAC,CAAC,CAAC;SACJ,CAAA;IAKD,IAAA,MAAA,CAAA,cAAA,CAAI,OAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;IACE,YAAA,OAAO,OAAO,CACZ,OAAO,CAAC,SAAS;IACf,gBAAA,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE;IAC1B,gBAAA,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CACxB,uIAAuI,CACxI;IACD,gBAAA,CAAC,IAAI,CAAC,uBAAuB,CAChC,CAAC;aACH;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UACE,MAAc,EACd,QAA+B,EAC/B,GAAqB,EACrB,GAAoB,EACpB,SAAyB,EACzB,UAAuB,EAAA;IAJvB,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAA,GAAW,IAAI,CAAC,eAAe,CAAA,EAAA;IAM/B,QAAA,IAAI,GAAG,EAAE;IACP,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACpB,SAAA;IACD,QAAA,IAAI,GAAG,EAAE;IACP,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACrB,SAAA;IACD,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;IAC/B,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,SAAA;IACD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,QAAA,IAAI,SAAS,EAAE;IACb,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,SAAA;IACD,QAAA,IAAI,UAAU,EAAE;IACd,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,SAAA;IACD,QAAA,OAAO,IAAI,CAAC;SACb,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,OAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;IAAnB,QAAA,GAAA,EAAA,YAAA;gBACE,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;IACzC,YAAA,IAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,YAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,CAAC;aAClC;;;IAAA,KAAA,CAAA,CAAA;;IAGD,IAAA,OAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;;YACE,IAAI,cAAc,GAAQ,EAAE,CAAC;;YAG7B,IAAI,IAAI,CAAC,OAAO,EAAE;IAChB,YAAA,cAAc,GAAG,KAAK,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC,CAAC;IAChD,SAAA;IAAM,aAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;;IAEvC,YAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,SAAA;;;IAID,QAAA,IAAI,cAAc,CAAC,QAAQ,KAAK,EAAE,EAAE;IAClC,YAAA,cAAc,CAAC,QAAQ,GAAG,GAAG,CAAC;IAC/B,SAAA;IAED,QAAA,OAAO,cAAc,CAAC;SACvB,CAAA;QAED,OAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,SAAgC,EAAA;IAAhC,QAAA,IAAA,SAAA,KAAA,KAAA,CAAA,EAAA,EAAA,SAAY,GAAA,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA,EAAA;IAChD,QAAA,IAAM,QAAQ,GAAG;gBACf,OAAO,EAAA,YAAA;IACL,gBAAA,OAAO,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;iBACpC;gBACD,UAAU,EAAA,YAAA;IACR,gBAAA,OAAO,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;iBACvC;gBACD,GAAG,EAAA,YAAA;IACD,gBAAA,OAAO,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;iBACxC;gBACD,KAAK,EAAA,YAAA;IACH,gBAAA,OAAO,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;iBACvC;gBACD,OAAO,EAAA,YAAA;IACL,gBAAA,OAAO,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;iBACtE;gBACD,GAAG,EAAA,YAAA;IACD,gBAAA,QACE,QAAQ,CAAC,OAAO,EAAE;wBAClB,QAAQ,CAAC,UAAU,EAAE;wBACrB,QAAQ,CAAC,GAAG,EAAE;wBACd,QAAQ,CAAC,KAAK,EAAE;IAChB,oBAAA,QAAQ,CAAC,OAAO,EAAE,EAClB;iBACH;aACF,CAAC;YAEF,IAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAEjD,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAE/B,QAAA,OAAO,QACL,CAAA,EAAA,OAAO,EAAE,GAAG,CAAC,QAAQ,EACrB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ;;gBAE9B,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,SAAS,EAAA,EAChE,OAAO,CAAC,sBAAsB,CAChB,CAAC;SACrB,CAAA;QAQD,OAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,OAAe,EAAA;IAC/B,QAAA,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,QAAQ,EAAE;IACjB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACxF,SAAA;IAED,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1C,CAAA;IAED;;;;;;;;IAQG;QACH,OAAyB,CAAA,SAAA,CAAA,yBAAA,GAAzB,UAA0B,UAAkB,EAAA;IAC1C,QAAA,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;SACjD,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UACE,SAAiB,EACjB,OAKM,EAAA;;IALN,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAKM,GAAA,EAAA,CAAA,EAAA;YAEN,IAAI,QAAQ,GAAY,IAAI,CAAC;YAC7B,IAAI,WAAW,GACb,OAAO,CAAC,MAAM,KAAI,CAAA,EAAA,GAAA,OAAO,CAAC,cAAc,0CAAE,MAAM,CAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC;IAEtF,QAAA,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,EAAE;IAC9B,YAAA,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,SAAA;IAED,QAAA,IAAI,YAAY,GACX,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,OAAO,CACP,GAAC,WAAW,IAAI;IACjB,YAAA,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;gBAC3B,cAAc,EAAA,QAAA,CAAA,EACZ,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,EACxB,EAAA,OAAO,CAAC,cAAc,CAC1B;IACF,SAAA,EACF,CAAC;IACF,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IACtB,YAAA,QAAQ,GAAG,IAAI,OAAO,CACpB,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAC7B,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,GAAG,EACX,SAAS,EACT,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EACnC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CACtC,CAAC;IACF,YAAA,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBACxC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtD,SAAA;IAAM,aAAA;;;gBAGL,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAClC,gBAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,aAAA;gBACD,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;IACxC,gBAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,aAAA;gBACD,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAC1C,gBAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,aAAA;IACF,SAAA;YACD,OAAO,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,GAAG;uBAC/C,UAAC,OAAqB,EAAA;gBAC/B,IAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,OAAO,CAAC,QAAQ,EAAE;IACpB,gBAAA,OAAO,KAAK,CAAC;IACd,aAAA;IAED,YAAA,IAAM,SAAS,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;gBACtC,IAAI,CAAC,SAAS,EAAE;IACd,gBAAA,OAAO,IAAI,CAAC;IACb,aAAA;IAED,YAAA,IAAI,OAAO,SAAS,CAAC,YAAY,KAAK,WAAW,EAAE;oBACjD,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBACtD,OAAO,SAAS,CAAC,YAAY,CAAC;IAC/B,aAAA;gBAED,OAAO;;IAEL,gBAAA,IAAI,EAAE,SAAS;oBACf,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,WAAW,EAAE,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI;oBAC/D,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI;IACnE,gBAAA,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,IAAI;IAClD,gBAAA,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;iBACvC,CAAC;IACJ,SAAC,CACF,CAAC;;SAEH,CAAA;;IAGD,IAAA,OAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,SAAiB,EAAE,OAA+B,EAAA;YAAlE,IA8EC,KAAA,GAAA,IAAA,CAAA;IA9EkC,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAA+B,GAAA,EAAA,CAAA,EAAA;;IAEhE,QAAA,IAAM,GAAG,GACP,OAAO,CAAC,GAAG;IACX,YAAA,OAAO,CAAC,KAAK;;;;;;;;;;IAWb,YAAA,SAAS,CAAC;IAEZ,QAAA,IAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC;;YAE3D,IAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAA6C,CAAC;;;;IAM/F,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;IAC7E,YAAA,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC;IAC7B,SAAA;IAEO,QAAA,IAAA,cAAc,GAAK,OAAO,CAAA,cAAZ,CAAa;;IAGnC,QAAA,IAAI,iBAAiB,KAAK,CAAC,iBAAiB,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;;gBAEpE,IAAI,iBAAiB,CAAC,KAAK,EAAE;IAC3B,gBAAA,QAAQ,CAAC,YAAA;;IAEP,oBAAA,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClD,iBAAC,CAAC,CAAC;IACJ,aAAA;IACD,YAAA,OAAO,iBAAiB,CAAC;IAC1B,SAAA;IACD,QAAA,IAAI,kBAAkB,EAAE;gBACtB,IAAI,OAAO,CAAC,SAAS,EAAE;IACrB,gBAAA,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAA,OAAA,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/E,aAAA;IACF,SAAA;IACD,QAAA,IAAI,CAAC,cAAc,8BAA8B;IAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;IACzB,gBAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC3B,aAAA;IAED,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,uBAAM,OAAO,CAAA,EAAA,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAA,GAAA,IAAG,CAAC;IACjE,YAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBACjF,IAAM,OAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC3C,gBAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC1B,gBAAA,QAAQ,CAAC,YAAA;IACP,oBAAA,KAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAK,CAAC,CAAC;IAC1C,iBAAC,CAAC,CAAC;IACJ,aAAA;IAAM,iBAAA;IACL,gBAAA,QAAQ,CAAC,YAAA;wBACP,KAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,iBAAC,CAAC,CAAC;IACJ,aAAA;IACF,SAAA;IAED,QAAA,IAAM,UAAU,GAAG,IAAI,eAAe,CAAmB,IAAW,CAAC,CAAC;IACtE,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;YACtC,IAAI,OAAO,CAAC,eAAe,EAAE;IAC3B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAClC,SAAA;IACD,QAAA,IAAI,cAAc,EAAE;IAClB,YAAA,QAAQ,CAAC,YAAA;;IAEP,gBAAA,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClC,aAAC,CAAC,CAAC;IACJ,SAAA;IACD,QAAA,OAAO,UAAU,CAAC;SACnB,CAAA;;;;IAKD,IAAA,OAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UACE,GAAW,EACX,OAA+F,EAAA;YAE/F,OAAO,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG,EAAA,EAAI,OAAA,GAAG,CAAC,IAAI,EAAE,CAAA,EAAA,CAAC,CAAC;SAC7E,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,OAAI,CAAA,SAAA,EAAA,MAAA,EAAA;IAAR,QAAA,GAAA,EAAA,YAAA;gBACE,QAAQ,IAAI,CAAC,GAAG;IACd,gBAAA,KAAK,IAAI;IACP,oBAAA,OAAO,uBAAuB,CAAC;IACjC,gBAAA,KAAK,MAAM;IACT,oBAAA,OAAO,iCAAiC,CAAC;IAC3C,gBAAA,KAAK,MAAM;IACT,oBAAA,OAAO,yBAAyB,CAAC;IACnC,gBAAA,KAAK,OAAO;IACV,oBAAA,OAAO,0BAA0B,CAAC;IACpC,gBAAA,KAAK,MAAM;IACT,oBAAA,OAAO,yBAAyB,CAAC;IACnC,gBAAA,KAAK,QAAQ;IACX,oBAAA,OAAO,2BAA2B,CAAC;IACrC,gBAAA,KAAK,aAAa,CAAC;IACnB,gBAAA,KAAK,KAAK;IACR,oBAAA,OAAO,uBAAuB,CAAC;IACjC,gBAAA,KAAK,UAAU;IACb,oBAAA,OAAO,wBAAwB,CAAC;IAClC,gBAAA;IACE,oBAAA,OAAO,OAAO,CAAC,YAAY,IAAI,wBAAwB,CAAC;IAC3D,aAAA;aACF;;;IAAA,KAAA,CAAA,CAAA;IAEO,IAAA,OAAA,CAAA,SAAA,CAAA,aAAa,GAArB,YAAA;IAOE,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;IACpB,YAAA,OAAO,EAAE,CAAC;IACX,SAAA;YAED,OAAO;IACL,YAAA,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;IACrC,YAAA,mBAAmB,EAAE,GAAG;IACxB,YAAA,uBAAuB,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;aACxC,CAAC;SACZ,CAAA;QAEO,OAAa,CAAA,SAAA,CAAA,aAAA,GAArB,UAAsB,YAAiB,EAAA;IACrC,QAAA,OAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACK,YAAY,CAAA,EAAA,EACf,OAAO,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACF,YAAY,CAAC,OAAO,CAAA,EACpB,IAAI,CAAC,aAAa,EAAE,CAEzB,EAAA,CAAA,CAAA;SACH,CAAA;IAEO,IAAA,OAAA,CAAA,SAAA,CAAA,gBAAgB,GAAxB,UAAyB,GAAW,EAAE,cAAmB,EAAA;IACvD,QAAA,OAAO,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;SAC5D,CAAA;IAED;;;;;;IAMG;IACK,IAAA,OAAA,CAAA,SAAA,CAAA,iBAAiB,GAAzB,UAA0B,GAAQ,EAAE,QAAc,EAAE,IAAc,EAAA;IAAd,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;IAChE,QAAA,KAAK,IAAM,GAAG,IAAI,GAAG,EAAE;IACrB,YAAA,IAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,YAAA,IAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACrD,YAAA,IACE,KAAK;oBACL,OAAO,KAAK,KAAK,QAAQ;IACzB,gBAAA,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACrB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,EACtD;oBACA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,aAAA;IAAM,iBAAA;IACL,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IACtB,aAAA;IACF,SAAA;IACD,QAAA,OAAO,IAAI,CAAC;SACb,CAAA;IAEO,IAAA,OAAA,CAAA,SAAA,CAAA,oBAAoB,GAA5B,UAA6B,YAAoB,EAAE,QAA8B,EAAA;YAAjF,IA+QC,KAAA,GAAA,IAAA,CAAA;;IA/Q4B,QAAA,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,EAAA,YAAoB,GAAA,KAAA,CAAA,EAAA;IAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,MAAM,IAAI,KAAK,CACb,sEAAA,CAAA,MAAA,CAAuE,IAAI,CAAC,MAAM,CAAE,CACrF,CAAC;IACH,SAAA;YAED,IAAI,IAAI,CAAC,UAAU,EAAE;IACnB,YAAA,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAC3C,MAAM,IAAI,KAAK,CAAC,uDAAA,CAAA,MAAA,CAAwD,IAAI,CAAC,UAAU,EAAG,GAAA,CAAA,CAAC,CAAC;IAC7F,aAAA;IACF,SAAA;IAAM,aAAA;IACL,YAAA,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC;IACvC,SAAA;IAED,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBAC1C,OAAO;IACR,SAAA;YAED,IAAM,KAAK,GAAG,QAAQ,KAAK,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;;YAG/F,IAAI,CAAC,2BAA2B,EAAE,CAAC;IAEnC,QAAA,IAAM,WAAW,GAAA,QAAA,CAAA,QAAA,CAAA;;IAEf,YAAA,IAAI,EAAE,CAAA,EAAA,GAAA,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,qBAAqB,EAC5C,MAAM,EAAE,IAAI,CAAC,MAAM,EAChB,EAAA,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA,EAChB,IAAI,CAAC,YAAY,CACrB,CAAC;IAEF,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;gBACnB,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtC,SAAA;IACD,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;gBACnB,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtC,SAAA;IACD,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;gBACnB,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtC,SAAA;IACD,QAAA,IAAI,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC5B,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9C,SAAA;IACD,QAAA,IAAI,oBAAoB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;gBACpC,WAAW,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC9D,SAAA;IACD,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACjB,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,SAAA;IAED,QAAA,IAAM,eAAe,GACnB,CAAC,OAAO,QAAQ,KAAK,WAAW;IAC9B,cAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClD,cAAE,SAAS,KAAK,EAAE,CAAC;IAEvB,QAAA,IAAM,cAAc;;;IAGlB,QAAA,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc;IAC9B,cAAE,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc;kBACvB,IAAI,CAAC,aAAa;IAClB,kBAAE,IAAI,CAAC,iBAAiB,EAAE;IAC1B,kBAAE;IACE,oBAAA,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ;qBACrC,CAAC;IAEV,QAAA,IAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,EAAA,EAAI,OAAA,CAAC,CAAC,IAAI,CAAC,UAAU,CAAjB,EAAiB,CAAC,CAAC;IAC/D,QAAA,IAAI,gBAAgB,EAAE;IACpB,YAAA,IAAM,UAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,IAAI,UAAQ,CAAC,MAAM,EAAE;IACnB,gBAAA,WAAW,CAAC,GAAG,GAAG,EAAG,CAAA,MAAA,CAAA,UAAQ,CAAC,MAAM,CAAA,CAAA,MAAA,CAAG,UAAQ,CAAC,QAAQ,CAAG,CAAA,MAAA,CAAA,UAAQ,CAAC,MAAM,CAAE,CAAC;IAC9E,aAAA;IACF,SAAA;YAED,IAAM,YAAY,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,IAAI,CAAC,UAAA,IAAI,EAAA,EAAI,OAAA,IAAI,CAAC,GAAG,CAAR,EAAQ,CAAC,CAAC;IACtD,QAAA,IAAI,YAAY,KAAZ,IAAA,IAAA,YAAY,uBAAZ,YAAY,CAAE,GAAG,EAAE;IACrB,YAAA,cAAc,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,SAAA;;;YAGD,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE5D,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE;IAC9B,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAC/B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,SAAA;IAED,QAAA,IAAM,SAAS,GACb,IAAI,CAAC,SAAS;gBACd,QAAQ;IACR,YAAA,eAAe,CAAC,SAAS;gBACzB,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAEvC,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY,EAAE;IAC1C,YAAA,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;IAC9B,SAAA;YAED,IAAI,OAAO,CAAC,SAAS,EAAE;IACrB,YAAA,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;IAC9B,SAAA;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY,EAAE;IAC7C,YAAA,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;IAC5B,SAAA;IAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IACxB,YAAA,KAAK,IAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;oBAChC,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;IACtC,oBAAA,WAAW,CAAC,YAAA,CAAA,MAAA,CAAa,GAAG,CAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACvD,iBAAA;IACF,aAAA;IACF,SAAA;IAED,QAAA,KAAsB,UAAK,EAAL,OAAA,GAAA,KAAK,EAAL,EAAK,GAAA,OAAA,CAAA,MAAA,EAAL,IAAK,EAAE;IAAxB,YAAA,IAAM,OAAO,GAAA,OAAA,CAAA,EAAA,CAAA,CAAA;IAChB,YAAA,IAAM,QAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE9B,YAAA,IAAI,QAAM,EAAE;IACV,gBAAA,WAAW,CAAC,MAAM,GAAG,QAAM,CAAC;IAC7B,aAAA;;gBAED,IAAI,OAAO,CAAC,MAAM,EAAE;IAClB,gBAAA,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACrC,aAAA;gBAED,IAAI,OAAO,CAAC,SAAS,EAAE;IACrB,gBAAA,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAC3C,aAAA;IAED,YAAA,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;IAC1C,gBAAA,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IACjD,aAAA;IAED,YAAA,IAAI,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;IAC/C,gBAAA,WAAW,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAC3D,aAAA;IAED,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;IAClC,gBAAA,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;IAChC,aAAA;IAED,YAAA,IAAM,UAAU,GAAgC;oBAC9C,WAAW;oBACX,YAAY;oBACZ,OAAO;oBACP,QAAQ;oBACR,OAAO;oBACP,SAAS;oBACT,OAAO;oBACP,OAAO;oBACP,KAAK;oBACL,QAAQ;oBACR,aAAa;iBACd,CAAC;IAEF,YAAA,KAAkB,UAAU,EAAV,YAAA,GAAA,UAAU,EAAV,EAAU,GAAA,YAAA,CAAA,MAAA,EAAV,IAAU,EAAE;IAAzB,gBAAA,IAAM,GAAG,GAAA,YAAA,CAAA,EAAA,CAAA,CAAA;IACZ,gBAAA,IAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC3B,IAAI,KAAK,KAAK,SAAS,EAAE;IACvB,oBAAA,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;4BAChC,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;IAChD,wBAAA,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAI,CAAC,IAAI,EAAE,CAAC;IAC5E,wBAAA,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChE,qBAAA;IAAM,yBAAA;4BACL,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1C,qBAAA;IACF,iBAAA;IACF,aAAA;IACF,SAAA;YACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,MAAK,CAAA,EAAA,GAAA,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAE;IAC9D,YAAA,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC;IAC9B,SAAA;IACD,QAAA,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;;IAGtD,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAEvB,IAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAI,EAAA,OAAA,kBAAkB,CAAC,IAAI,CAAC,GAAI,CAAC,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE5E,IAAI,IAAI,CAAC,cAAc,EAAE;IACvB,YAAA,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtE,YAAA,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAA;IAED,QAAA,IAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YAClC,IAAM,mBAAmB,GAAG,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,CAAC;YACrE,IAAM,0BAA0B,GAAG,mBAAmB,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC;IAEvF,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;IAClC,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBAClB,OAAO,WAAW,CAAC,KAAK,CAAC;IACzB,gBAAA,IAAM,eAAe,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBAClD,IAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC1D,gBAAA,KAAK,IAAM,GAAG,IAAI,SAAS,EAAE;IAC3B,oBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,iBAAA;IACF,aAAA;IACF,SAAA;YAED,IAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAExD,QAAA,IAAM,YAAY,GAAA,QAAA,CAAA,EAAK,OAAO,EAAE,EAAE,EAAA,EAAK,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAE,CAAC;YAC/D,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,YAAA,YAAY,CAAC,OAAO,GACf,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,YAAY,CAAC,OAAO,CAAA,EAAA,EACvB,aAAa,EAAE,iBAAU,IAAI,CAAC,SAAS,CAAE,GAC1C,CAAC;IACH,SAAA;IAED,QAAA,IAAI,GAAG,CAAC;IACR,QAAA,IAAI,mBAAmB,EAAE;gBACvB,GAAG,GAAG,EAAG,CAAA,MAAA,CAAA,IAAI,EAAmB,kBAAA,CAAA,CAAA,MAAA,CAAA,IAAI,CAAC,MAAM,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,CAAE,CAAC;IAC3D,SAAA;IAAM,aAAA,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;gBACvC,GAAG,GAAG,EAAG,CAAA,MAAA,CAAA,IAAI,EAAiB,gBAAA,CAAA,CAAA,MAAA,CAAA,IAAI,CAAC,MAAM,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,CAAE,CAAC;IACzD,SAAA;IAAM,aAAA;gBACL,GAAG,GAAG,EAAG,CAAA,MAAA,CAAA,IAAI,EAAmB,kBAAA,CAAA,CAAA,MAAA,CAAA,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC;IAClD,SAAA;IAED,QAAA,GAAG,GAAG,GAAG,IAAI,WAAW,IAAI,SAAS,GAAG,GAAA,CAAA,MAAA,CAAI,QAAQ,CAAE,GAAG,EAAE,CAAC,CAAC;YAE7D,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC;iBACrD,IAAI,CAAC,UAAA,GAAG,EAAI,EAAA,OAAA,GAAG,CAAC,IAAI,EAAE,CAAV,EAAU,CAAC;iBACvB,IAAI,CACH,UAAA,MAAM,EAAA;IACJ,YAAA,KAAsB,UAAK,EAAL,OAAA,GAAA,KAAK,EAAL,EAAK,GAAA,OAAA,CAAA,MAAA,EAAL,IAAK,EAAE;IAAxB,gBAAA,IAAM,OAAO,GAAA,OAAA,CAAA,EAAA,CAAA,CAAA;IAChB,gBAAA,IAAM,OAAO,GAAG,OAAO,CAAC,GAAI,CAAC;IAC7B,gBAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAI,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;wBAC1E,SAAS;IACV,iBAAA;oBAED,IAAM,kBAAkB,GAAG,KAAI,CAAC,YAAY,KAAK,OAAO,CAAC,KAAK,CAAC;IAC/D,gBAAA,IAAI,kBAAkB,IAAI,OAAO,CAAC,SAAS,EAAE;IAC3C,oBAAA,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAA,OAAA,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;;IAE/E,iBAAA;oBACD,IAAM,QAAQ,GAAG,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC9C,IAAI,CAAC,QAAQ,EAAE;wBACb,OAAO;IACR,iBAAA;IACD,gBAAA,IAAM,IAAI,GAAG,0BAA0B,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3E,gBAAA,IAAM,MAAM,GAAG,IAAI,CAAC;IACpB,gBAAA,IAAI,IAAI,EAAE;IACR,oBAAA,IAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ;IAC1C,0BAAE,MAAM;IACR,0BAAE,KAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxC,oBAAA,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpC,iBAAA;IAAM,qBAAA;wBACL,IAAM,MAAM,GAAG,KAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;IACzC,oBAAA,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,CAAC,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;IAC/D,wBAAA,IAAM,WAAW,GAAG;IAClB,4BAAA,EAAE,EAAE,SAAS;IACb,4BAAA,IAAI,EAAE,SAAS;IACf,4BAAA,IAAI,EAAE,EAAE;6BACT,CAAC;IACF,wBAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B,qBAAA;IACD,oBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,iBAAA;IACF,aAAA;aACF,EACD,UAAA,GAAG,EAAA;IACD,YAAA,KAAsB,UAAK,EAAL,OAAA,GAAA,KAAK,EAAL,EAAK,GAAA,OAAA,CAAA,MAAA,EAAL,IAAK,EAAE;IAAxB,gBAAA,IAAM,OAAO,GAAA,OAAA,CAAA,EAAA,CAAA,CAAA;oBAChB,IAAM,QAAQ,GAAG,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC;oBACnD,IAAI,CAAC,QAAQ,EAAE;wBACb,OAAO;IACR,iBAAA;IACD,gBAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,aAAA;IACH,SAAC,CACF,CAAC;IAEJ,QAAA,OAAO,OAAO,CAAC;SAChB,CAAA;QAIO,OAAsB,CAAA,SAAA,CAAA,sBAAA,GAA9B,UAA+B,OAAyB,EAAA;YAAxD,IA0DC,KAAA,GAAA,IAAA,CAAA;;IAzDC,QAAA,IAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,IAAI,EAAA;IACpC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IACpB,gBAAA,OAAO,IAAI,CAAC;IACb,aAAA;gBACD,IAAM,WAAW,GAAG,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;gBACjD,IAAM,eAAe,GAAG,WAAW,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACtF,YAAA,IAAI,eAAe,EAAE;oBACnB,OACK,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,KACP,IAAI,EAAE,eAAe,CAAC,IAAI,EAC1B,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,WAAW,EAC5B,iBAAiB,EAAE,eAAe,CAAC,IAAI,EACvC,CAAA,CAAA;IACH,aAAA;IACD,YAAA,IAAI,KAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAC7D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,gBAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7B,gBAAA,KAAK,IAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;wBAChC,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAE,CAAC;IACvC,oBAAA,IAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;wBACtC,CAAC,IAAI,SAAU,CAAC;wBAChB,IAAI,MAAM,GAAG,CAAC,EAAE;4BACd,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAG,EAAE,SAAS,CAAC,EAAG,CAAC,CAAC;4BAC5C,IAAM,aAAa,GACjB,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,mBAAmB,GAAG,EAAE,CAAC,CAAC;4BAC1E,OACK,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,CACP,EAAA,EAAA,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,WAAW,EAAE,SAAS,CAAC,EAAE,EACzB,eAAe,EAAE,SAAS,CAAC,EAAE,EAC7B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,aAAa,EAChC,CAAA,CAAA;IACH,qBAAA;IACF,iBAAA;oBACD,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAG,EAAE,IAAI,CAAC,EAAG,CAAC,CAAC;IACxC,aAAA;gBACD,OACK,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,CACP,EAAA,EAAA,WAAW,EAAE,IAAI,CAAC,EAAE,EACjB,CAAA,GAAC,IAAI,CAAC,UAAU;IACjB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI;oBACvB,eAAe,EAAE,IAAI,CAAC,EAAE;IACxB,gBAAA,iBAAiB,EAAE,mBAAmB;IACvC,aAAA,EACH,CAAA;IACJ,SAAC,CAAC,CAAC;IAEH,QAAA,IAAI,QAAQ,EAAE;gBACZ,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACxB,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EACpE,GAAG,CACJ,CAAC;IACH,SAAA;IAED,QAAA,OAAO,aAAa,CAAC;SACtB,CAAA;QAEO,OAAa,CAAA,SAAA,CAAA,aAAA,GAArB,UAAsB,SAAiB,EAAA;IACrC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAG,CAAA,MAAA,CAAA,IAAI,CAAC,gBAAgB,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,SAAS,CAAE,CAAC,CAAC;SAChE,CAAA;IAIO,IAAA,OAAA,CAAA,SAAA,CAAA,aAAa,GAArB,UAAsB,SAAiB,EAAE,WAAmB,EAAA;IAC1D,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;gBAChD,OAAO;IACR,SAAA;;IAGD,QAAA,IAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAEtC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAA,CAAA,MAAA,CAAG,IAAI,CAAC,gBAAgB,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,SAAS,CAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;SACrF,CAAA;QAED,OAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,IAAY,EAAA;YACpB,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,SAAA;YACD,OAAO,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;SAC7C,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,IAAY,EAAE,KAAU,EAAE,OAAc,EAAA;IAChD,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;IACnC,gBAAA,OAAO,EAAA,OAAA;oBACP,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,KAAK,QAAQ;IACjD,aAAA,CAAC,CAAC;IACJ,SAAA;IACD,QAAA,OAAO,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;SAC7D,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UAAW,SAAiB,EAAE,OAA+B,EAAA;IAA/B,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAA+B,GAAA,EAAA,CAAA,EAAA;IAC3D,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,MAAM,IAAI,KAAK,CACb,8BAA+B,CAAA,MAAA,CAAA,SAAS,EAAuD,sDAAA,CAAA,CAAA,MAAA,CAAA,IAAI,CAAC,MAAM,CAAE,CAC7G,CAAC;IACH,SAAA;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;SACjD,CAAA;IAED,IAAA,OAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UACE,SAAiB,EACjB,OAKM,EAAA;IALN,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAKM,GAAA,EAAA,CAAA,EAAA;YAEN,IAAI,QAAQ,GAAY,IAAI,CAAC;IAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IACtB,YAAA,QAAQ,GAAG,IAAI,OAAO,CACpB,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAC7B,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,GAAG,EACX,KAAK,EACL,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EACnC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CACtC,CAAC;gBACF,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtD,SAAA;IAAM,aAAA;;;gBAGL,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAClC,gBAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,aAAA;gBACD,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;IACxC,gBAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,aAAA;gBACD,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAC1C,gBAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,aAAA;IACF,SAAA;;IAGD,QAAA,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,EAAE;IAC9B,YAAA,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,SAAA;IAED,QAAA,OAAO,QAAQ;IACZ,aAAA,UAAU,CAAC,SAAS,EACnB,QAAA,CAAA,QAAA,CAAA,EAAA,KAAK,EAAE,EAAE,EACN,EAAA,OAAO,CACV,EAAA,EAAA,GAAG,EACD,OAAO,CAAC,GAAG;;;IAGX,gBAAA,OAAO,CAAC,SAAS;IACf,kBAAE,EAAG,CAAA,MAAA,CAAA,SAAS,EAAI,GAAA,CAAA,CAAA,MAAA,CAAAC,OAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE;sBACrE,SAAS,EACf,CAAA,CAAA;IACD,aAAA,OAAO,EAAE,CAAC;SACd,CAAA;QApiEM,OAAO,CAAA,OAAA,GAAG,WAAW,CAAC;QAEtB,OAAU,CAAA,UAAA,GAAgB,EAAE,CAAC;IAEpC;;;;;;IAMG;QACI,OAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;IAChB,IAAA,OAAA,CAAA,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE1B,OAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;QACpB,OAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;QAEpB,OAAO,CAAA,OAAA,GAAU,EAAE,CAAC;IACpB,IAAA,OAAA,CAAA,YAAY,GAAa;YAC9B,mBAAmB;YACnB,iBAAiB;YACjB,YAAY;YACZ,WAAW;YACX,eAAe;SAChB,CAAC;QAEK,OAAO,CAAA,OAAA,GAAU,EAAE,CAAC;QAEpB,OAAO,CAAA,OAAA,GAAa,EAAE,CAAC;QACvB,OAAQ,CAAA,QAAA,GAA6B,EAAE,CAAC;QAExC,OAAoB,CAAA,oBAAA,GAAG,wBAAwB,CAAC;IAuChD,IAAA,OAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAC,EAA6B,CAAC,CAAC;QAmG5D,OAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAE7B,OAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;QACpB,OAAS,CAAA,SAAA,GAAG,SAAS,CAAC;QACtB,OAAa,CAAA,aAAA,GAAG,aAAa,CAAC;IAC9B,IAAA,OAAA,CAAA,QAAQ,GAAG,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC;IACxC,IAAA,OAAA,CAAA,eAAe,GAAG,OAAO,CAAC,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAEvF,OAAQ,CAAA,QAAA,GAAa,EAAE,CAAC;IACxB,IAAA,OAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC,CAAC;;;;QA8BnD,OAAS,CAAA,SAAA,GAAG,OAAO,CACxB,QAAQ;IACN,SAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC;IAC1E,YAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7D,CAAC;QAEK,OAAY,CAAA,YAAA,GAAG,OAAO,CAC3B,SAAS;aACN,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACjD,YAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7D,CAAC;QAkIK,OAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,OAAO,CAAA,OAAA,GAAG,SAKJ,CAAC;QAucP,OAAsB,CAAA,sBAAA,GAA4B,EAAE,CAAC;QA4vC9D,OAAC,OAAA,CAAA;IAAA,CAtiED,EAsiEC;;AC96FM,QAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACrE,OAAO,CAAC,iBAAiB,GAAG,OAAO;;;;;;;;;;;;;;;"}