ai12z 3.3.1 → 3.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{ai12z-bot-e97d6697.js → ai12z-bot-74f5836f.js} +2 -2
- package/dist/cjs/ai12z-bot-74f5836f.js.map +1 -0
- package/dist/cjs/ai12z-bot.cjs.entry.js +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/collection/components/ai12z-bot/ai12z-bot.js +1 -1
- package/dist/collection/components/ai12z-bot/ai12z-bot.js.map +1 -1
- package/dist/esm/{ai12z-bot-c41c059a.js → ai12z-bot-6f64c1b4.js} +2 -2
- package/dist/esm/ai12z-bot-6f64c1b4.js.map +1 -0
- package/dist/esm/ai12z-bot.entry.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/library/index.esm.js +1 -1
- package/dist/library/library.esm.js +1 -1
- package/dist/library/{p-45807409.js → p-a6392d09.js} +2 -2
- package/dist/library/{p-45807409.js.map → p-a6392d09.js.map} +1 -1
- package/dist/library/{p-85559039.entry.js → p-af76a7c6.entry.js} +2 -2
- package/package.json +2 -2
- package/dist/cjs/ai12z-bot-e97d6697.js.map +0 -1
- package/dist/esm/ai12z-bot-c41c059a.js.map +0 -1
- /package/dist/library/{p-85559039.entry.js.map → p-af76a7c6.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai12z-bot.js","sourceRoot":"","sources":["../../../src/components/ai12z-bot/ai12z-bot.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, State, Prop, Element, Watch, Listen, Event, EventEmitter, Method, Env, Host } from \"@stencil/core\"\nimport { io, Socket } from \"socket.io-client\"\nimport showdown from \"showdown\"\nimport hljs from \"highlight.js\"\nimport { LiveAgentEventHandler } from \"../../utils/liveagents/liveagent-event-handler\"\nimport {\n getEndpoint,\n generateUUID,\n updateButtonEvents,\n getConfig,\n verifyRecaptcha,\n getOrCreateVisitorId,\n getComponentByControlType,\n splitContent,\n getMetaInfo,\n getBroswerLang,\n getAllLanguagesInSurvey,\n checkStatus,\n sendFeedback,\n removeHtmlTags,\n getAudioContent,\n base64ToBlob,\n} from \"../../utils/utils\"\n// import Handlebars from \"handlebars\"\nimport { Handlebars } from \"../../utils/helpers\"\nimport { setBotElement } from \"../../utils/global-store\"\nimport { LiveAgentProviderType } from \"../../utils/liveagents/liveagent-factory-services\"\nimport { ChatEventBus } from \"../../utils/liveagents/chateventbus\"\n\n// import $ from \"jquery\"\n// import { Model } from \"survey-jquery\"\ndeclare global {\n interface Window {\n grecaptcha: {\n ready(callback: () => void): void\n execute(siteKey: string, options: { action: string }): Promise<string>\n }\n }\n}\n@Component({\n tag: \"ai12z-bot\",\n styleUrls: [\"./ai12z-bot.css\", \"../../global/tailwind.min.css\", \"../../global/survey.min.css\", \"./ai12z-chatbot.css\"],\n shadow: true,\n})\nexport class Ai12zBot {\n private cdnPath: string = \"https://cdn.ai12z.net/assets/bot\"\n private styles = [\n // `${this.cdnPath}/v1/survey.min.css`,\n // `https://unpkg.com/survey-core/defaultV2.min.css`,\n // `${this.cdnPath}/v1/survey-core.min.css`,\n `https://unpkg.com/@highlightjs/cdn-assets@11.9.0/styles/default.min.css`,\n ]\n private liveAgentEventHandler: LiveAgentEventHandler = new LiveAgentEventHandler()\n private audioElement: HTMLAudioElement\n @State() liveAgentButtonText: string = \"Talk to a liveagent\"\n @State() isLiveAgentEnabled: boolean = false\n @State() isTypingIndicatorVisible: boolean = false\n @Element() el: HTMLElement\n\n @Prop({ reflect: true }) dataKey: string = Env.DATA_KEY || \"\"\n @Prop({ reflect: true }) dataMode: string = Env.DATA_MODE || \"prod\" // \"local\", \"dev\", or \"prod\"\n @Prop({ reflect: true }) configId: string\n @Prop({ reflect: true }) dataAttributes: any = {}\n @Prop() excludeTags: Array<string> = []\n @Prop() includeTags: Array<string> = []\n\n\n @State() botSettings: any = {}\n @State() canRender = true\n @State() copied: boolean = false\n @State() isPlayed: boolean = false\n @State() voiceType: string = \"default\"\n @State() voice: string = \"en-US\"\n @State() showSubmit: boolean = false\n @State() hideAllButtons: boolean = false\n @State() showMenu: boolean = false\n @State() isProse: boolean = true // Flag to track if prose mode is enabled\n @State() isLiveAgent: boolean = false\n\n @State() showWelcomeScreen: boolean = true\n @State() showHistory: boolean = false\n @State() conversationId: string = \"\"\n @State() surveyDomId: string = \"\"\n @State() searchResults: any = {}\n @State() buttons: Array<{ id: string; label: string }> = []\n @State() currentDomId: string = \"\"\n @State() messages: {\n text: string\n isUser: boolean\n id: string\n timestamp: string\n images?: any[]\n conversationId: string\n formModel?: any\n surveyDomId?: string\n thumbsId?: string\n insightId?: string\n sender?: any\n showIcon?: boolean\n }[] = []\n @State() questionCounter: number = 0\n @State() isChatOpen: boolean = false\n @State() visitorID: string\n @State() timestamp: string = \"\"\n @State() rowCount = 1\n @State() isBot = false\n @State() conversationHistory = []\n @State() query: string = \"\"\n @State() scriptArray = []\n private customStyle: string = \"\"\n private customJS: string = \"\"\n private timer: NodeJS.Timeout\n private inputEl!: HTMLTextAreaElement\n private uploadElem: HTMLInputElement\n private dataOverrideFunction: ((data: any) => Promise<any>) | null = null\n menuV2Ref: HTMLElement\n plusIconRef: HTMLElement\n private socket: Socket\n imagesBase64List = []\n private liveAgentRef: HTMLLiveAgentChatElement\n\n /* new version of bot */\n @State() isAnimated = false\n @State() isMinimized: boolean = false\n @State() isOpened = false\n @State() isContent = false\n @State() isExpanded: boolean\n @State() isToggled = false\n @State() showTextarea: boolean = false // Changing this will trigger a re-render\n @State() showPrivacy: boolean = false // Changing this will trigger a re-render\n @State() isRendered: boolean = false // Flag to track if the component has been rendered\n @Event({\n eventName: \"messageSent\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageSent: EventEmitter\n @Event({\n eventName: \"messageReceived\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageReceived: EventEmitter\n\n @Event({\n eventName: \"close\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n close: EventEmitter\n\n @Event({\n eventName: \"open\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n open: EventEmitter\n\n @Event({\n eventName: \"minimize\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n minimize: EventEmitter\n\n @Event({\n eventName: \"errored\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n errored: EventEmitter\n\n @Event({\n eventName: \"formSubmitted\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n formSubmitted!: EventEmitter<any>\n\n\n toggleBot = e => {\n e.stopPropagation()\n this.isToggled = !this.isToggled\n }\n\n\n @Listen(\"buttonClick\")\n buttonClickHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n // this.hideInput = false\n this.query = event.detail.action\n this.handleSend(event.detail.label)\n }\n\n @Listen(\"sendQueryToBot\")\n sendQueryToBotHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n // this.hideInput = false\n this.query = event.detail\n this.handleSend(event.detail)\n }\n\n @Listen(\"deleteChatHistory\")\n deleteChatHistoryHandler(event: CustomEvent) {\n const chatHistory = this.getConversationHistory()\n const updatedHistory = chatHistory.filter(item => item.conversationId !== event.detail.conversationId)\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(updatedHistory))\n this.conversationHistory = updatedHistory\n }\n\n @Listen(\"chatClick\")\n chatClickHandler(event: CustomEvent) {\n this.messages = event.detail\n this.showWelcomeScreen = false\n // this.hideInput = false\n this.showHistory = false\n }\n\n @Listen(\"openChat\")\n openChatHandler(_event: CustomEvent) {\n this.isChatOpen = true\n }\n\n @Listen(\"formComplete\")\n formSubmittedHandler(event: CustomEvent) {\n event.stopPropagation()\n this.formSubmitted.emit(event.detail.data)\n }\n\n handleClickOutside(event: MouseEvent) {\n // Check if the clicked target is outside the menu\n const target = event.target as HTMLElement\n\n if (this.isToggled && this.menuV2Ref && !this.menuV2Ref.contains(target)) {\n // console.log(\"Clicked outside the menu, closing...\")\n this.isToggled = false\n }\n\n if (this.showMenu && this.plusIconRef && !this.plusIconRef.contains(target)) {\n this.showMenu = false\n }\n }\n\n loadRecaptchaV3(siteKey: string): Promise<void> {\n return new Promise((resolve, reject) => {\n if (!document.querySelector(\"#recaptcha-script\")) {\n const script = document.createElement(\"script\")\n script.src = `https://www.google.com/recaptcha/api.js?render=${siteKey}`\n script.id = \"recaptcha-script\"\n script.async = true\n\n script.onload = () => {\n resolve()\n }\n\n script.onerror = err => {\n console.error(\"Failed to load reCAPTCHA script\", err)\n reject(new Error(\"Failed to load reCAPTCHA script. Invalid siteKey or network error.\"))\n }\n\n document.head.appendChild(script)\n } else {\n resolve()\n }\n })\n }\n\n componentDidLoad() {\n setBotElement(this.el) // register globally\n if (typeof window !== \"undefined\" && !(window as any).Handlebars) {\n ;(window as any).Handlebars = Handlebars\n }\n // console.log(\"Bot Settings getAssetPath\")\n // this.updateScreenSize()\n window.addEventListener(\"resize\", this.updateScreenSize.bind(this))\n // debugger;\n document.addEventListener(\"click\", this.handleClickOutside.bind(this))\n // Load jQuery first\n const jQueryScript = document.createElement(\"script\")\n jQueryScript.src = this.cdnPath + \"/v1/jquery.min.js\" // Path relative to the www root\n jQueryScript.onload = () => {\n // console.log(\"jQuery loaded\")\n // Load the script that loads and exposes SurveyJS\n const loadSurveyScript = document.createElement(\"script\")\n loadSurveyScript.src = this.cdnPath + \"/v1/survey.jquery.min.js\" // Path relative to the www root\n loadSurveyScript.onload = () => {\n // console.log(\"SurveyJS loaded and SurveyModel exposed\")\n }\n loadSurveyScript.onerror = err => {\n console.error(\"Failed to load Forms:\", err)\n }\n document.head.appendChild(loadSurveyScript)\n this.el.shadowRoot.appendChild(loadSurveyScript)\n }\n jQueryScript.onerror = err => {\n console.error(\"Failed to load jQuery:\", err)\n }\n document.head.appendChild(jQueryScript)\n\n const ai12zHeading = document.createElement(\"script\")\n ai12zHeading.text = `\n var ai12zChat = window[\"ai12z\"] = {}\n `\n document.head.appendChild(ai12zHeading)\n this.el.shadowRoot.appendChild(ai12zHeading)\n this.el.shadowRoot.appendChild(jQueryScript)\n this.loadStyles()\n }\n\n loadStyles() {\n for (const style of this.styles) {\n const loadStyle = document.createElement(\"link\")\n loadStyle.rel = \"stylesheet\"\n loadStyle.href = style\n loadStyle.onerror = err => {\n console.error(\"Failed to load style:\", err)\n }\n this.el.shadowRoot.appendChild(loadStyle)\n }\n }\n\n disconnectedCallback() {\n // Remove event listener when component is destroyed\n document.removeEventListener(\"click\", this.handleClickOutside.bind(this))\n\n window.removeEventListener(\"resize\", this.updateScreenSize)\n\n // clearInterval(this.timer)\n }\n\n checkHistory = () => {\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n let chatHistory = []\n if (storedMessages) {\n chatHistory = JSON.parse(storedMessages)\n chatHistory = chatHistory.filter(item => item.projectId === this.botSettings?.pId)\n }\n this.showHistory = chatHistory.length > 0 && this.botSettings.botVersion === \"v1\" ? true : false\n // console.log(\"showHistory\", this.showHistory)\n }\n\n @Method()\n async sendMessage(message: string, displayText?: string) {\n this.query = message\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n\n this.handleSend(displayText ?? message)\n }\n\n @Method()\n async sendQuery(query: string) {\n console.warn(\"sendQuery mehtdod is deprecated, use sendMessage instead\")\n this.handleSend(query)\n }\n\n @Method()\n async sendJSON(jsonData: Object, displayText: string) {\n this.query = JSON.stringify(jsonData)\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n this.handleSend(displayText)\n }\n\n setLocalData() {\n const botData = { qCounter: this.questionCounter }\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify(botData))\n }\n\n @Method()\n async openBot(expanded: boolean = false) {\n this.openChat(expanded)\n }\n\n @Method()\n async action(type, options?: any) {\n // this.isChatOpen = !this.isChatOpen\n if (type === \"open\") {\n this.openChat(options?.expanded ?? false)\n }\n if (type === \"minimize\" && this.isOpened) {\n this.minimizeChat()\n }\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.checkHistory()\n if (type === \"close\") {\n this.isChatOpen = false\n this.searchResults = {}\n this.surveyDomId = \"\"\n this.showWelcomeScreen = true\n this.showHistory = this.messages.length > 0 ? true : false\n // this.saveConversation()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.close.emit(\"close\")\n clearInterval(this.timer)\n }\n }\n\n async processDataOverride(data: any): Promise<any> {\n // Check if a custom override function has been set\n if (this.dataOverrideFunction && typeof this.dataOverrideFunction === \"function\") {\n try {\n return await this.dataOverrideFunction(data)\n } catch (error) {\n console.error(\"Error in custom processDataOverride:\", error)\n throw error\n }\n }\n\n // Default implementation - return the data as-is\n return data\n }\n\n // Method to set the override function\n @Method()\n async setProcessDataOverride(overrideFunction: (data: any) => Promise<any>): Promise<void> {\n this.dataOverrideFunction = overrideFunction\n }\n openChat(expanded: boolean = false) {\n // console.log(\"expanded ??\")\n this.isOpened = true\n this.isExpanded = expanded\n this.isMinimized = false\n this.isContent = false\n this.open.emit(\"open\")\n this.toggleTextarea()\n }\n\n private async executeRecaptcha(configId: string, siteKey: string): Promise<any> {\n try {\n await this.loadRecaptchaV3(siteKey)\n\n await new Promise<void>((resolve, reject) => {\n if (window.grecaptcha && typeof window.grecaptcha.ready === \"function\") {\n window.grecaptcha.ready(() => resolve())\n } else {\n reject(new Error(\"grecaptcha not available or ready() not a function\"))\n }\n })\n\n if (!window.grecaptcha || typeof window.grecaptcha.execute !== \"function\") {\n throw new Error(\"grecaptcha.execute is not available. Possibly due to invalid site key.\")\n }\n\n const token = await window.grecaptcha.execute(siteKey, { action: \"open_chat\" })\n\n if (!token) {\n throw new Error(\"reCAPTCHA token is empty. Possibly invalid site key.\")\n }\n\n const result = await this.verifyRecaptchaToken(token, configId)\n return result\n } catch (err) {\n console.error(\"executeRecaptcha error:\", err)\n throw err\n }\n }\n\n private async verifyRecaptchaToken(captchaToken: string, configId: string): Promise<any> {\n try {\n const payload = {\n apiKey: this.dataKey,\n configId,\n configType: \"bot\",\n token: captchaToken,\n }\n const data = await verifyRecaptcha(payload, this.dataMode)\n if (data) {\n console.log(\"reCAPTCHA verified successfully by backend!\")\n return data // Return the data\n } else {\n console.warn(\"Bot activity suspected. Verification failed.\", data[\"error-codes\"])\n this.errored.emit({ message: \"Bot verification failed\", codes: data[\"error-codes\"] })\n throw new Error(\"Bot verification failed: reCAPTCHA was unsuccessful\")\n }\n } catch (err) {\n console.error(\"Failed to contact backend for reCAPTCHA verification:\", err)\n this.errored.emit({ message: \"reCAPTCHA backend error\", error: err })\n throw err\n }\n }\n\n minimizeChat() {\n this.isOpened = false\n // this.isContent = false\n this.isContent = this.isExpanded ? true : false\n this.isMinimized = this.isExpanded ? false : true\n this.isAnimated = false\n this.updateScreenSize()\n this.minimize.emit(\"minimize\")\n }\n\n private get mainObject(): any {\n if (!window[\"ai12z\"]) {\n window[\"ai12z\"] = {}\n }\n return window[\"ai12z\"]\n }\n\n adjustHeight() {\n if (this.inputEl) {\n this.inputEl.style.height = \"auto\"\n this.inputEl.style.height = this.inputEl.scrollHeight + \"px\"\n }\n }\n\n connectedCallback() {\n //this.parseMyObjectProp(this.myObject);\n checkStatus(this.dataKey, this.dataMode).then(enable => {\n this.canRender = enable\n // if (!enable) {\n // console.log(\"ai12z canRender\", this.canRender)\n // }\n })\n this.configBot()\n }\n\n componentWillLoad() {\n this.checkCustomSlot()\n this.timestamp = this.formatTimestamp(new Date())\n this.updateScreenSize()\n // this.socketConnection()\n // this.configBot()\n }\n\n configBot() {\n const payload = {\n apiKey: this.dataKey,\n configId: this.configId,\n configType: \"bot\",\n }\n\n getConfig(payload, this.dataMode).then(data => {\n if (data) {\n // console.log(\"bot settings\", data)\n this.botSettings = data\n if (!this.botSettings.botVersion) {\n this.botSettings.botVersion = \"v1\" // Default to v1 if not specified\n }\n if (this.botSettings.botVersion === \"v2\" && !this.botSettings.isExpanded && !this.isBot) {\n // this.botSettings.imageUpload = true\n this.isMinimized = true\n }\n if (this.botSettings.theme) {\n let themeLink = \"\"\n if (this.botSettings.theme !== \"custom\") {\n themeLink = `${this.cdnPath}/v2/themes/theme-${this.botSettings.theme}.css`\n } else {\n themeLink = this.botSettings.customTheme\n }\n\n const linkEl = document.createElement(\"link\")\n linkEl.setAttribute(\"rel\", \"stylesheet\")\n linkEl.setAttribute(\"href\", themeLink)\n document.head.appendChild(linkEl)\n } else {\n const linkEl = document.createElement(\"link\")\n linkEl.setAttribute(\"rel\", \"stylesheet\")\n linkEl.setAttribute(\"href\", `${this.cdnPath}/v2/themes/theme-default.css`)\n document.head.appendChild(linkEl)\n }\n\n if(this.botSettings.welcome) {\n if(this.botSettings.welcome.styles) {\n this.insertStyles(this.botSettings.welcome.styles)\n }\n if(this.botSettings.welcome.scripts) {\n const scriptEl = document.createElement(\"script\")\n scriptEl.setAttribute(\"type\", \"text/javascript\")\n scriptEl.setAttribute(\"src\", this.botSettings.welcome.scripts)\n this.el.shadowRoot?.appendChild(scriptEl)\n }\n }\n // console.log(\"isbot\", this.isBot)\n if (this.botSettings.isExpanded && !this.isBot) {\n this.isExpanded = true\n this.isMinimized = false\n if (data?.v3?.siteKey) {\n this.executeRecaptcha(data._id, data.v3.siteKey)\n .then(response => {\n if (response) {\n this.isRendered = true\n }\n })\n .catch(err => {\n console.error(\"Recaptcha verification failed:\", err)\n this.isRendered = false\n })\n }\n } else {\n this.isMinimized = true\n }\n if (!this.botSettings.linkTarget) {\n this.botSettings.linkTarget = \"_blank\"\n }\n if (this.botSettings.botVersion === \"v2\") {\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.toggleTextarea()\n }\n if (this.botSettings.privacyTemplate && this.botSettings.privacyTemplate !== \"\") {\n this.showPrivacy = true\n }\n if (this.botSettings.customCSS) {\n this.customStyle = this.botSettings.customCSS\n this.insertStyles(this.botSettings.customCSS)\n }\n if (this.botSettings.customJS) {\n this.customJS = this.botSettings.customJS\n const scriptEl = document.createElement(\"script\")\n scriptEl.setAttribute(\"type\", \"text/javascript\")\n scriptEl.setAttribute(\"src\", this.botSettings.customJS)\n this.el.shadowRoot?.appendChild(scriptEl)\n }\n if(this.botSettings.audioType) {\n this.voiceType = this.botSettings.audioType\n this.voice = this.botSettings.voice\n }\n\n this.isRendered = true // Set the flag to true after rendering\n }\n })\n }\n\n insertStyles(linkURL: string) {\n const linkEl = document.createElement(\"link\")\n linkEl.setAttribute(\"rel\", \"stylesheet\")\n linkEl.setAttribute(\"href\", linkURL)\n\n const shadowRoot = this.el.shadowRoot\n if (shadowRoot) {\n shadowRoot.appendChild(linkEl)\n }\n }\n\n checkCustomSlot() {\n const slot = this.el[\"children\"]\n let slotHasContent = slot && slot.length > 0\n // console.log(\"slotcontent\", slotHasContent)\n if (slotHasContent) {\n for (var i = 0; i < slot.length; i++) {\n // console.log(slot[i])\n if (slot[i].tagName.toLowerCase() === \"bot\" || slot[i].getAttribute(\"slot\") === \"bot\") {\n this.isBot = true\n this.isExpanded = false\n }\n }\n }\n }\n\n @Watch(\"currentDomId\")\n watchStateHandler(_newValue: boolean, _oldValue: boolean) {\n this.socket.off(\"response\")\n this.socket.off(\"end_response\")\n // console.log(\"currentDomId changed\")\n // console.log(\"questionCounter\", this.botSettings.maxQuestion)\n if (this.botSettings.maxQuestion === undefined || this.botSettings.maxQuestion === 0) {\n this.botSettings.maxQuestion = 0\n this.handleBotMessages()\n } else if (this.questionCounter <= this.botSettings.maxQuestion) {\n this.handleBotMessages()\n }\n }\n\n generateMessage() {\n return {\n text: \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n }\n }\n hideSpinner(chatData) {\n // Logic for hiding the spinner (assumed to return a Promise if async is needed)\n return new Promise(resolve => {\n const renderedBubble = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (renderedBubble) {\n ;(renderedBubble.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n // Assume some async action here, then resolve\n // console.log(\"Spinner hidden\")\n resolve(true)\n })\n }\n\n async processTemplateData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n let handletemplate\n let currentResponse\n\n if (data.controlType === \"template\") {\n const currentTemplate = data.controlData?.template\n currentResponse = data.controlData?.data.source\n handletemplate = Handlebars.compile(currentTemplate[0]?.content)\n }\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer) {\n Handlebars.registerHelper(\"processArray\", function (array) {\n if (!Array.isArray(array)) {\n return \"\" // Return an empty string if the input is not an array\n }\n return new Handlebars.SafeString(JSON.stringify(array))\n })\n // console.log(\"data\", data.controlData)\n if (data.controlData && data.controlData.data) {\n data.controlData.data.msgId = chatData.id //`msg-${chatData.id}`\n }\n targetContainer.innerHTML = handletemplate({ msgId: `${chatData.id}`, source: currentResponse, llm: data.controlData.data.llm, isBot: true })\n targetContainer.classList.add(\"overflow-x-auto\")\n targetContainer.classList.add(\"scroll-nobar\")\n setTimeout(() => {\n this.renderTemplateData(chatData)\n }, 1000)\n // Step 4: Wait until the control element is rendered\n await this.waitForElementRender(targetContainer as HTMLElement)\n\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\n renderTemplateData(chatData) {\n // console.log(`#${chatData.id}`)\n\n if (!this.mainObject[`${chatData.id}`]) {\n this.mainObject[`${chatData.id}`] = {}\n }\n const scripts = this.el.shadowRoot.querySelectorAll(`#${chatData.id} script`)\n scripts.forEach(script => {\n const newScript = document.createElement(\"script\")\n newScript.type = \"text/javascript\"\n\n // If it's an external script (with `src`), copy the `src` attribute\n if ((script as HTMLScriptElement).src) {\n newScript.src = (script as HTMLScriptElement).src\n } else {\n // If it's inline, set the JavaScript code as the content of the new <script> element\n // newScript.innerHTML = `const source = ${JSON.stringify(chatData.data.source)};\\n`\n // newScript.innerHTML += `const llm = ${JSON.stringify(chatData.data.llm)};\\n`\n newScript.innerHTML += script.innerHTML\n }\n // Append the new script to the document body to execute it\n if (!newScript.src) {\n this.scriptArray.push(newScript)\n }\n script.parentNode?.removeChild(script)\n\n // Optionally, remove the old <script> tag from the DOM\n\n if (newScript.src && !this.el.shadowRoot.querySelector(`script[src=\"${newScript.src}\"]`)) {\n this.el.shadowRoot.appendChild(newScript)\n } else {\n const scriptDom = this.el.shadowRoot.querySelector(`script[type=\"text/javascript\"]`)\n // console.log(\"scriptDom\", scriptDom)\n // console.log(\"newScript\", newScript)\n if (scriptDom && !newScript.src) {\n // console.log(\"scriptDom\", this.scriptArray)\n if (this.scriptArray.length > 0) {\n this.scriptArray.forEach(script => {\n if (!script.src && script.innerHTML !== newScript.innerHTML) {\n this.el.shadowRoot.appendChild(newScript)\n }\n })\n } else {\n // console.log(\"ele\", this.el.shadowRoot)\n this.el.shadowRoot.appendChild(newScript)\n }\n // this.el.shadowRoot.appendChild(newScript)\n } else {\n // console.log(\"scriptDom not found\")\n this.el.shadowRoot.appendChild(newScript)\n }\n }\n })\n // Step 4: Ensure Google Charts is loaded, then call the `drawGoogleChart` function\n setTimeout(() => {\n this.initializeScript(chatData.id)\n }, 1000)\n }\n\n initializeScript(id) {\n if (typeof this.mainObject[`${id}`][\"onLoadCallback\"] === \"function\") {\n this.mainObject[`${id}`][\"onLoadCallback\"]()\n }\n // window[\"google\"]?.charts.load(\"current\", { packages: [\"corechart\"] })\n // window[\"google\"]?.charts.setOnLoadCallback()\n }\n\n async processChatData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n\n if (data.controlData?.data?.source) {\n data.controlData.data.source.customCss = this.customStyle || \"\"\n data.controlData.data.source.customJs = this.customJS || \"\"\n }\n data.isExpanded = this.isExpanded\n // Step 2: Get the control element based on control type\n const controlElement = getComponentByControlType(data, \"bot\")\n\n const tmpControlType = data.controlData?.data?.source?.carousel?.type\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer && controlElement) {\n targetContainer.appendChild(controlElement)\n\n targetContainer[\"style\"].width = \"98%\"\n\n if (tmpControlType === \"custom\" || tmpControlType === \"list\" || tmpControlType === \"slider\") {\n targetContainer.classList.remove(\"p-2.5\")\n targetContainer.classList.add(\"p-0\")\n targetContainer.classList.add(\"md:p-2.5\")\n }\n\n // Step 4: Wait until the control element is rendered\n await this.waitForComponentFullyLoaded(controlElement)\n // console.log(\"targetContainer\", targetContainer)\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\nprivate waitForComponentFullyLoaded(element: HTMLElement): Promise<void> {\n return new Promise((resolve) => {\n // Check if component emits ready event\n const handleReady = () => {\n element.removeEventListener('componentReady', handleReady)\n resolve()\n }\n\n element.addEventListener('componentReady', handleReady)\n\n // Fallback check for data attribute\n const checkAttribute = () => {\n // console.log(\"getattr\",element.getAttribute('data-component-ready'))\n if (element.getAttribute('data-component-ready') === 'true') {\n element.removeEventListener('componentReady', handleReady)\n resolve()\n return\n }\n setTimeout(checkAttribute, 100)\n }\n\n // Start both checks\n setTimeout(checkAttribute, 100)\n\n // Ultimate fallback\n setTimeout(() => {\n element.removeEventListener('componentReady', handleReady)\n resolve()\n }, 15000)\n })\n}\n\n\n // Helper function to detect when the target element is rendered\n waitForElementRender(element: HTMLElement, timeout: number = 2000): Promise<void> {\n return new Promise<void>((resolve, _reject) => {\n const checkReady = () => {\n // Customize your readiness check as needed\n if (element && element.childNodes.length > 0) {\n resolve();\n return true;\n }\n return false;\n };\n\n if (checkReady()) return;\n\n const observer = new MutationObserver(() => {\n if (checkReady()) {\n observer.disconnect();\n }\n });\n\n observer.observe(element, {\n childList: true,\n subtree: true,\n });\n\n // Fallback timeout to avoid infinite wait\n setTimeout(() => {\n observer.disconnect();\n resolve(); // or reject('Timeout') if you want to enforce it\n }, timeout);\n });\n // const observer = new MutationObserver(_mutations => {\n // resolve()\n // observer.disconnect()\n // })\n \n\n // observer.observe(element, { childList: true, subtree: true })\n // })\n }\n\n handleBotMessages() {\n // const domId = this.messages[this.messages.length - 1].id\n this.socket.on(\"response\", event => {\n this.handleMessage(event.data, `${this.currentDomId}`) // Use the unique ID to handle messages\n })\n this.socket.on(\"end_response\", data => {\n // console.log(\"end_response\")\n this.messageReceived.emit(data)\n const converter = new showdown.Converter()\n let finalHtml = converter.makeHtml(data.answer)\n // document.getElementById(\"messageId\").innerHTML = finalHtml;\n finalHtml = this.updateAnchorTags(finalHtml)\n finalHtml = updateButtonEvents(finalHtml).body\n this.buttons = updateButtonEvents(finalHtml).buttons\n this.searchResults = data\n this.conversationId = data.conversationId\n if (finalHtml.indexOf(\"[control\") > -1) {\n // console.log(\"controlType\", data.controlType)\n switch (data.controlType) {\n case \"form\":\n this.surveyDomId = \"surveyElement-\" + generateUUID()\n finalHtml = finalHtml.replace(RegExp(/\\[[^>]*]/gm), `<div id=${this.surveyDomId} style=\"width:${this.botSettings.botVersion === \"v1\" ? \"330px\" : \"100%\"}\"></div>`)\n // finalHtml = `<div id=${this.surveyDomId} style=\"width:${this.botSettings.botVersion === \"v1\" ? \"330px\" : \"100%\"}\"></div>`\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n break\n case \"carousel\":\n case \"list\":\n case \"template\":\n // if (data.controlType && data.controlType !== null) {\n // const newContent = splitContent(finalHtml)\n // finalHtml = newContent.before\n // this.updateConversations(finalHtml, data)\n // const newMessage = this.generateMessage()\n // this.messages = [...this.messages, newMessage]\n // setTimeout(() => {\n // data.controlType === \"template\" ? this.processTemplateData(newMessage, data) : this.processChatData(newMessage, data)\n // }, 2000)\n // if (newContent.after.trim().length > 0) {\n // const afterMessage = this.generateMessage()\n // afterMessage.text = newContent.after\n // this.messages = [...this.messages, afterMessage]\n // setTimeout(() => {\n // if (afterMessage.id) {\n // const bubbleEle = this.el.shadowRoot.querySelector(`#${afterMessage.id}`)\n // if (bubbleEle && (bubbleEle.querySelector(\"#spinner\") as HTMLElement)) {\n // ;(bubbleEle.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n // }\n // }\n // }, 500)\n // }\n // }\n if (data.controlType) {\n const newContent = splitContent(finalHtml)\n finalHtml = newContent.before\n\n this.updateConversations(finalHtml, data)\n\n const newMessage = this.generateMessage()\n const messagesToAdd = [newMessage]\n\n // Add after message if any\n if (newContent.after.trim()) {\n const afterMessage = this.generateMessage()\n afterMessage.text = newContent.after\n afterMessage.id = afterMessage.id || `chatbot-${generateUUID()}`\n messagesToAdd.push(afterMessage)\n }\n\n // 🔥 Single batched update\n this.messages = [...this.messages, ...messagesToAdd]\n\n // 🔁 Wait for DOM update (1 frame + microtask delay)\n requestAnimationFrame(() => {\n setTimeout(() => {\n if (data.controlType === \"template\") {\n this.processTemplateData(newMessage, data)\n } else {\n this.processChatData(newMessage, data)\n }\n\n // Hide spinner for afterMessage if exists\n const afterMessage = messagesToAdd[1]\n if (afterMessage?.id) {\n const bubbleEle = this.el.shadowRoot.querySelector(`#${afterMessage.id}`)\n const spinner = bubbleEle?.querySelector(\"#spinner\") as HTMLElement\n if (spinner) spinner.style.display = \"none\"\n }\n }, 0)\n })\n }\n }\n } else {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n currentDomElement.style.width = \"auto\"\n }\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n }\n\n this.saveConversation()\n this.scrollToBottom()\n })\n }\n\n updateAnchorTags(htmlContent: string) {\n const parser = new DOMParser()\n const doc = parser.parseFromString(htmlContent, \"text/html\")\n const anchorTags = Array.from(doc.querySelectorAll(\"a\"))\n\n anchorTags.forEach(anchor => {\n // console.log(\"targtet\")\n anchor.setAttribute(\"target\", this.botSettings.linkTarget)\n anchor.classList.add(\"ai12z-link\")\n })\n\n // Update the htmlContent with the modified anchor tags\n return doc.body.innerHTML\n }\n\n updateConversations(finalHtml, data) {\n const updatedmsg = {\n id: this.currentDomId,\n text: finalHtml,\n isUser: false,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: data.controlData?.data?.source ?? data.controlData ?? {},\n surveyDomId: this.surveyDomId,\n thumbsId: `${generateUUID()}`,\n showIcon: data.controlType ? false : true,\n insightId: data?.insightId ?? null,\n sender: data?.sender ?? null,\n }\n this.addEventListeners(`#${this.currentDomId}`)\n this.messages = this.messages.map(item => (item.id === this.currentDomId ? updatedmsg : item))\n requestAnimationFrame(() => this.checkHighlightcode(this.currentDomId))\n }\n\n checkHighlightcode(highlightcodeId: string = \"\"): void {\n try {\n // Guard clause: Ensure highlightcodeId is provided\n if (!highlightcodeId) {\n console.warn(\"highlightcodeId is empty\")\n this.isProse = true\n return\n }\n\n hljs.configure({\n ignoreUnescapedHTML: true,\n })\n\n // Get the target element by ID from shadow DOM\n const container = this.el.shadowRoot?.querySelector(`#${highlightcodeId}`)\n if (!container) {\n console.warn(`Element with id '${highlightcodeId}' not found in shadowRoot`)\n this.isProse = true\n return\n }\n\n // Select all <pre> elements inside the target container\n const preElements = container.querySelectorAll(\"pre\")\n\n if (preElements.length > 0) {\n // this.isProse = false\n container.classList.remove(\"prose\")\n preElements.forEach(pre => {\n if (pre.dataset.highlighted) {\n console.warn(\"Element previously highlighted...\")\n return\n }\n hljs.highlightElement(pre)\n })\n } else {\n container.classList.add(\"prose\")\n // this.isProse = true\n }\n } catch (error) {\n console.error(\"Error in highlightcode:\", error)\n this.isProse = true\n }\n }\n\n @Watch(\"surveyDomId\")\n watchSurveyDomIdHandler(_newValue: boolean, _oldValue: boolean) {\n setTimeout(() => {\n this.renderSurvey(this.searchResults)\n }, 1000)\n }\n\n resolveLocalized(value: any, fallback: string = \"\"): string {\n if (!value) return fallback\n\n if (typeof value === \"string\") {\n return value\n }\n\n let defaultLang\n if (this.dataAttributes && this.dataAttributes.lang) {\n // You can use this.dataAttributes.lang here\n defaultLang = this.dataAttributes.lang\n }\n\n console.log(\"defaultLang\", defaultLang)\n\n if (typeof value === \"object\") {\n return value[defaultLang] || value[getBroswerLang()] || value.default || fallback\n }\n\n return fallback\n }\n\n alertResults = sender => {\n // console.log(\"Survey results\", sender.keyName)\n this.formSubmitted.emit(sender.data)\n // console.log(\"survey results\", sender.jsonObj)\n // const results = JSON.stringify(sender.data)\n let results = JSON.parse(JSON.stringify(sender.data))\n\n // results.description = sender.jsonObj.description ? sender.jsonObj.description : \"\"\n // const completedHtml = sender.jsonObj.completedHtml ? sender.jsonObj.completedHtml : \"Thank You!\"\n // const completeText = sender.jsonObj.completeText ? sender.jsonObj.completeText : \"Submit\"\n\n results.description = this.resolveLocalized(sender.jsonObj.description, \"\")\n const completedHtml = this.resolveLocalized(sender.jsonObj.completedHtml, \"Thank You!\")\n const completeText = this.resolveLocalized(sender.jsonObj.completeText, \"Submit\")\n // Object.assign(results.data, { description: sender.jsonObj.description })\n // console.log(\"sender\", results)\n // const query = \"Here is the data you requested:\" + results\n // this.query = query\n const domId = sender.implementor.renderedElement.id\n // const surveyDataId = domId.replace(\"surveyElement-\", \"\")\n // sender.implementor.renderedElement.innerHTML = `<p><b>Thank you</b></p>`\n // console.log(\"messages\", this.messages)\n const idx = this.messages.findIndex(item => item.surveyDomId === domId)\n this.currentDomId = this.messages[idx].id\n this.surveyDomId = domId\n this.updateConversations(completedHtml, {})\n const jsonData = `This JSON is from a form submission [${sender.keyName}]: ${JSON.stringify(results, null, 2)}. There is no need to show the form [${sender.keyName}] again.`\n // this.sendJSON(results, completeText)\n this.sendMessage(jsonData, completeText)\n // const lastMessage = {\n // text: \"\",\n // isUser: false,\n // id: `chatbot-${generateUUID()}`,\n // timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n // images: [],\n // conversationId: this.conversationId,\n // formModel: {},\n // surveyDomId: \"\",\n // }\n // this.currentDomId = lastMessage.id\n // this.surveyDomId = domId\n\n // if (idx === -1) {\n // // this.handleSubmit(null, query, \"survey-res\", false, null)\n // this.messages.splice(this.messages.length - 1, 1)\n // this.messages = [...this.messages, lastMessage]\n // } else {\n // this.messages = [...this.messages.slice(0, idx), lastMessage, ...this.messages.slice(idx + 1)]\n // }\n\n this.scrollToBottom()\n // this.invokeSocket()\n }\n\n renderSurvey = chat => {\n window[\"Survey\"].Serializer.addProperty(\"survey\", {\n name: \"keyName:string\",\n visible: false, // makes it appear in Survey Creator\n category: \"general\", // optional, groups the property\n default: \"\", // optional default value\n })\n let formModel = chat.controlData?.data?.source ?? chat.controlData\n if (typeof formModel === \"object\") {\n formModel.keyName = chat.keyName\n } else {\n formModel = JSON.parse(formModel)\n formModel.keyName = chat.keyName\n }\n\n let supportedLocales\n if (formModel) {\n supportedLocales = getAllLanguagesInSurvey(formModel)\n }\n // console.log(\"supportedLocales\", supportedLocales)\n let locale = \"default\"\n\n if (this.dataAttributes?.lang && supportedLocales.has(this.dataAttributes.lang)) {\n locale = this.dataAttributes.lang\n } else {\n const browserLang = getBroswerLang()\n if (supportedLocales.has(browserLang)) {\n locale = browserLang\n }\n }\n\n window[\"Survey\"].surveyLocalization.currentLocale = locale\n\n const survey = new window[\"Survey\"].Model(formModel)\n if (this.surveyDomId === \"\") {\n return\n }\n const domELe = this.el.shadowRoot?.querySelector(`#${this.surveyDomId}`)\n if (domELe) {\n window[\"jQuery\"](domELe).Survey({ model: survey })\n } else {\n console.error(\"Survey Element not found\")\n }\n\n if (typeof chat.controlData?.data?.source == \"object\" || typeof chat.controlData === \"object\") {\n this.hideCompleteButton(chat.controlData?.data?.source ?? chat.controlData, survey)\n } else {\n this.hideCompleteButton(JSON.parse(chat.controlData?.data?.source ?? chat.controlData), survey)\n }\n // survey.completeText = \"Submit\"\n survey.showCompletedPage = false\n if (chat.theme) {\n survey.applyTheme(JSON.parse(chat.theme))\n }\n survey.onAfterRenderQuestionInput.add(function (_, options) {\n options.htmlElement.name = options.question.name\n })\n survey.onComplete.add(this.alertResults)\n }\n\n hideCompleteButton(form: any, survey) {\n survey.completeText = form?.completeText ?? \"Submit\"\n survey.completedHTML = form?.completedHtml ?? \"Thank You!\"\n if (form && form.pages) {\n form.pages.forEach((page: any) => {\n if (page.elements) {\n // console.log(\"page.elements\", page.elements)\n page.elements.forEach((element: any) => {\n if (element.type === \"html\") {\n if (element.html.includes(\"<iframe\")) {\n survey.showCompleteButton = false\n }\n }\n })\n }\n })\n }\n }\n\n addEventListeners(msgId) {\n const container = this.el.shadowRoot.querySelector(msgId)\n if (container) {\n this.buttons.forEach(button => {\n const buttonElement = container.querySelector(`#${button.id}`)\n if (buttonElement) {\n const originalCall = buttonElement.getAttribute(\"data-original-click\") // Ensure type safety or handle undefined\n if (!originalCall) {\n console.warn(`originalClickHandler is not defined for button with id: ${button.id}`)\n return\n }\n\n // const match = originalCall.match(/^(\\w+)\\s*\\((.*)\\)$/) // extract name and arguments\n const match = originalCall.match(/^(\\w+)\\s*\\(([\\s\\S]*)\\)$/)\n // console.log(\"match\", match)\n if (match) {\n const funcName = match[1]\n const argsStr = match[2] // string of args, like \"'param', true\"\n const self = this\n const func = self[funcName]\n buttonElement.addEventListener(\"click\", () => {\n if (typeof this[funcName] === \"function\") {\n try {\n // console.log(\"args\", argsStr)\n // Evaluate arguments safely\n switch (funcName) {\n case \"sendQuery\":\n const args = eval(`[${argsStr}]`)\n args[0] = button.label\n func.apply(self, args)\n break\n case \"sendMessage\":\n const msgArgs = eval(`[${argsStr}]`)\n func.apply(self, msgArgs)\n break\n\n case \"sendJSON\":\n const tempArgs = argsStr.match(/^'(.*?)'\\s*,\\s*'(.*?)'$/)\n\n const rawObjectStr = tempArgs[1]\n .replace(/([{,])\\s*(\\w+)\\s*:/g, '$1\"$2\":') // quote keys\n .replace(/:\\s*'([^']*)'/g, ': \"$1\"') // convert single to double quotes\n\n const parsedObj = JSON.parse(rawObjectStr)\n const jsonArgs = [parsedObj, tempArgs[2]]\n func.apply(self, jsonArgs)\n break\n }\n } catch (err) {\n console.error(`Error invoking ${funcName}:`, err)\n }\n } else {\n console.warn(`Function ${funcName} not found on this`)\n }\n })\n // buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n }\n }\n })\n }\n }\n\n handleButtonClick = (label: string) => (_event: Event) => {\n this.inputEl.value = label\n this.handleSend(label)\n }\n\n formatTimestamp(date: Date) {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n const options: Intl.DateTimeFormatOptions = {\n weekday: \"long\",\n hour: \"numeric\",\n minute: \"numeric\",\n hour12: true,\n }\n const formatter = new Intl.DateTimeFormat(\"en-US\", options)\n const formattedDate = formatter.format(date)\n\n if (date.toDateString() === today.toDateString()) {\n return `Today, ${formattedDate.split(\" \").slice(1).join(\" \")}`\n } else {\n return formattedDate\n }\n }\n\n async socketConnection() {\n let a12z_EndPoint = getEndpoint(this.dataMode)\n this.socket = io(a12z_EndPoint, { transports: [\"polling\"] })\n\n await new Promise<void>(resolve => {\n this.socket.on(\"connect\", () => {\n // console.log(\"Connected to Socket.IO server\")\n resolve()\n })\n })\n\n this.socket.on(\"connect_error\", error => {\n this.errored.emit(error)\n console.error(\"Connection error:\", error)\n })\n\n this.socket.on(\"disconnect\", () => {\n // console.log(\"Disconnected from Socket.IO server\")\n this.socket.off(\"response\")\n // Handle disconnection if needed\n })\n }\n\n invokeSocket() {\n const data = {\n apiKey: this.dataKey,\n query: this.query !== \"\" ? this.query : this.inputEl.value,\n conversationId: this.conversationId,\n event: \"evaluate_query\",\n attributes: this.dataAttributes,\n excludeTags: this.excludeTags,\n includeTags: this.includeTags,\n base64Images: this.imagesBase64List,\n meta: getMetaInfo(),\n }\n // Call the override method to allow developer processing\n this.processDataOverride(data)\n .then(processedData => {\n // If null is returned, stop execution\n if (processedData === null || processedData === undefined) {\n console.log(\"Data processing returned null, stopping execution\")\n return\n }\n\n this.messageSent.emit(JSON.stringify(processedData))\n\n this.socket.emit(\"evaluate_query\", processedData, (error, _response) => {\n if (error) {\n this.errored.emit(error)\n console.error(\"Error:\", error)\n } else {\n // console.log(\"Response:\", response)\n }\n })\n\n if (this.inputEl) {\n this.inputEl.value = \"\"\n this.adjustHeight()\n }\n this.query = \"\"\n })\n .catch(error => {\n console.error(\"Error in processDataOverride:\", error)\n this.errored.emit(error)\n })\n }\n\n handleMessage = (data, aiMessageId) => {\n const converter = new showdown.Converter()\n // const aiMessageBubble = document.getElementById(aiMessageId);\n\n const aiMessageBubble = this.el.shadowRoot?.querySelector(`#${aiMessageId}`)\n // const aiMessageBubble = this.element.querySelector('.ai12z-suggest-answer')\n\n if (!aiMessageBubble) {\n console.error(`Message bubble with ID ${aiMessageId} not found.`)\n return\n }\n var bubbleText = aiMessageBubble.getAttribute(\"data-bubbleText\") || \"\"\n bubbleText = bubbleText + data\n aiMessageBubble.setAttribute(\"data-bubbleText\", bubbleText)\n\n // Assuming data is a string containing the message content\n let html = converter.makeHtml(bubbleText)\n // Append new content to the existing chat bubble\n aiMessageBubble.innerHTML = html\n }\n\n onInputChange(files: FileList) {\n if (files.length > 0) {\n this.uploadImage(files)\n } else {\n console.error(files.length === 0 || \"NO IMAGE UPLOADED\")\n return false\n }\n }\n\n private uploadImage(files) {\n let newFile\n let tempImagesBase64List = []\n if (files.length > 10 || this.imagesBase64List.length > 10) {\n // this.showErrorMessage = true\n // console.error('You can upload a maximum of 10 images once at a time.');\n return\n }\n for (var i = 0; i < files.length; i++) {\n const mimeType = files[i].type\n if (!mimeType.match(\"image.*\")) {\n console.log(\"file is not an image\")\n return\n }\n newFile = files[i]\n\n const reader = new FileReader()\n\n reader.onload = () => {\n const imagePreviewContainer: HTMLElement = this.el.shadowRoot.querySelector(\"#previewContainer\")\n\n const base64Image = `data:${mimeType};base64,${(reader.result as string).split(\",\")[1]}`\n this.imagesBase64List.push(base64Image)\n tempImagesBase64List = this.imagesBase64List\n\n const newDiv = document.createElement(\"div\")\n newDiv.classList.add(\"image-Container\")\n newDiv.classList.add(\"sc-ai12z-input-form\")\n\n const img = document.createElement(\"img\")\n img.setAttribute(\"src\", reader.result as string)\n img.style.width = \"70px\"\n img.style.height = \"50px\"\n\n const deleteSpan = document.createElement(\"span\")\n deleteSpan.textContent = \"x\"\n deleteSpan.classList.add(\"delete-image\")\n deleteSpan.classList.add(\"sc-ai12z-input-form\")\n imagePreviewContainer.appendChild(newDiv)\n\n newDiv.appendChild(img)\n newDiv.appendChild(deleteSpan)\n\n deleteSpan.onclick = function (event) {\n let imgSrc = event.target[\"previousSibling\"] ? event.target[\"previousSibling\"].src : null\n let index = tempImagesBase64List.indexOf(imgSrc)\n if (index > -1) {\n tempImagesBase64List.splice(index, 1)\n }\n newDiv.remove()\n }\n\n // console.log('uploading finished, emitting an image blob to the outside world');\n }\n reader.readAsDataURL(newFile)\n reader.onloadend = () => {\n console.log(\"upload finished\")\n }\n\n reader.onerror = err => {\n console.error(\"something went wrong...\", err)\n }\n }\n }\n\n getConversationHistory() {\n const storedData = localStorage.getItem(`${this.visitorID}`)\n return storedData ? JSON.parse(storedData) : []\n }\n\n /**\n * Calculate the size of a string in bytes (UTF-8 encoding)\n */\n private getStringSize(str: string): number {\n return new Blob([str]).size\n }\n\n /**\n * Get the current size of localStorage in bytes\n */\n private getLocalStorageSize(): number {\n let totalSize = 0\n for (const key in localStorage) {\n if (localStorage.hasOwnProperty(key)) {\n const value = localStorage.getItem(key) || \"\"\n totalSize += this.getStringSize(key + value)\n }\n }\n return totalSize\n }\n\n /**\n * Clean up old conversations based on date to free up storage space\n * @param conversations Array of conversations to clean up\n * @param maxSizeBytes Maximum size in bytes before cleanup\n * @returns Cleaned up conversations array\n */\n private cleanupOldConversations(conversations: any[], maxSizeBytes: number = 2 * 1024 * 1024): any[] {\n const currentSize = this.getLocalStorageSize()\n\n // If we're under the size limit, no cleanup needed\n if (currentSize <= maxSizeBytes) {\n return conversations\n }\n\n // Sort conversations by date (oldest first) for cleanup\n const sortedConversations = [...conversations].sort((a, b) => {\n const dateA = new Date(a.date).getTime()\n const dateB = new Date(b.date).getTime()\n return dateA - dateB\n })\n\n let cleanedConversations = [...sortedConversations]\n let estimatedSize = this.getStringSize(JSON.stringify(cleanedConversations))\n\n // Remove oldest conversations until we're under the size limit\n while (estimatedSize > maxSizeBytes && cleanedConversations.length > 1) {\n cleanedConversations.shift()\n estimatedSize = this.getStringSize(JSON.stringify(cleanedConversations))\n }\n\n // If we still have size issues, clean up old messages from remaining conversations\n if (estimatedSize > maxSizeBytes) {\n cleanedConversations = cleanedConversations.map(conversation => {\n if (conversation.messages && conversation.messages.length > 10) {\n // Keep only the last 10 messages in each conversation\n conversation.messages = conversation.messages.slice(-10)\n }\n return conversation\n })\n }\n\n return cleanedConversations\n }\n\n saveConversation() {\n let pastMessages = this.getConversationHistory()\n\n // Update or add current conversation\n if (pastMessages.length > 0) {\n let conversationExists = pastMessages.filter(item => item.conversationId === this.conversationId && item.projectId === this.botSettings?.pId)\n if (conversationExists.length > 0) {\n conversationExists[0].messages = this.messages\n conversationExists[0].date = new Date() // Update the date when conversation is modified\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n\n if (this.messages.length > 0) {\n // Clean up old conversations if storage is getting full\n const cleanedMessages = this.cleanupOldConversations(pastMessages)\n\n try {\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(cleanedMessages))\n\n // Log storage usage for debugging\n // const storageSize = this.getLocalStorageSize()\n // const storageMB = (storageSize / (1024 * 1024)).toFixed(2)\n } catch (error) {\n // If storage is full, try more aggressive cleanup\n if (error.name === \"QuotaExceededError\") {\n const aggressiveCleanup = this.cleanupOldConversations(pastMessages, 1 * 1024 * 1024) // 1MB limit\n\n try {\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(aggressiveCleanup))\n } catch (secondError) {\n console.error(\"AI12Z: Even aggressive cleanup failed:\", secondError)\n // Clear all conversation history as last resort\n localStorage.removeItem(`${this.visitorID}`)\n }\n }\n }\n }\n }\n\n loadConversation() {\n this.showWelcomeScreen = false\n // this.hideInput = true\n // this.messages = []\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n if (storedMessages) {\n this.conversationHistory = JSON.parse(storedMessages)\n this.conversationHistory = this.conversationHistory.filter(item => item.projectId === this.botSettings?.pId)\n // console.log(\"conversationHistory\", this.conversationHistory)\n // this.messages = chatHistory.map(item => ({ ...item }))\n }\n }\n\n @Listen(\"keydown\")\n handleKeyDown(ev: KeyboardEvent) {\n if (ev.key === \"Enter\" && !ev.shiftKey) {\n // console.log(\"down arrow pressed\")\n ev.preventDefault()\n if (this.inputEl?.value.trim().length > 0) {\n this.handleSend(this.inputEl.value)\n }\n }\n }\n\n startTimer() {\n // const startTime = Date.now()\n this.timer = setInterval(() => {\n this.questionCounter = 0\n // const endTime = Date.now()\n // console.log(`Timer executed after ${endTime - startTime} milliseconds`)\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n }, this.botSettings.autoResetTimer)\n }\n\n updateScreenSize = () => {\n // console.log(\"updateScreenSize\")\n\n if (window.innerWidth <= 767) {\n this.isMinimized = this.isOpened ? false : true\n }\n // if (window.innerWidth < 640) {\n // this.isMinimized = this.isOpened ? false : true\n // } else if (window.innerWidth < 768) {\n // this.isMinimized = this.isOpened ? false : true\n // } else {\n // console.log(\"content\", this.isContent)\n // this.isMinimized = this.isExpanded ? false : true\n // this.isExpanded = true\n // }\n }\n\n handleSend = eleValue => {\n // console.log(\"handle send\", eleValue)\n if (eleValue.trim().length === 0 && this.imagesBase64List.length === 0) {\n return\n }\n this.questionCounter = this.questionCounter + 1\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n const inputValue = eleValue\n\n if (this.inputEl) {\n this.inputEl.value = inputValue\n }\n if (this.messages.length === 0 && this.botSettings.autoResetTimer > 0) {\n this.startTimer()\n }\n if (this.showWelcomeScreen && this.botSettings.botVersion === \"v1\") {\n this.showWelcomeScreen = false\n }\n\n if (this.messages.length === 0) {\n this.socketConnection()\n }\n\n // if (inputValue.trim()) {\n const now = new Date()\n const timestamp = now.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n\n // Add the new message to the chat\n this.messages = [\n ...this.messages,\n {\n text: inputValue,\n isUser: true,\n id: `user-${generateUUID()}`,\n timestamp: timestamp,\n images: this.imagesBase64List,\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n {\n text: this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion ? this.botSettings.msgLimit : \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: \"\",\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n ]\n\n if (this.messages.length === 2) {\n this.visitorID = getOrCreateVisitorId()\n }\n\n this.checkHistory()\n\n setTimeout(() => {\n this.scrollToBottom()\n }, 100)\n if (this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion) {\n console.log(\"Max question limit reached\")\n this.inputEl.value = \"\"\n } else {\n this.currentDomId = this.messages[this.messages.length - 1].id\n if (this.isLiveAgent) {\n this.liveAgentEventHandler.sendMessage({ sessionId: \"\", message: this.inputEl.value })\n if (this.inputEl.value) {\n this.inputEl.value = \"\"\n }\n this.query = \"\"\n } else {\n this.checkLiveAgentMode()\n this.invokeSocket()\n }\n }\n // this.invokeSocket()\n\n const parent = this.el.shadowRoot.querySelector(\"#previewContainer\")\n if (parent) {\n parent.innerHTML = \"\"\n }\n\n this.imagesBase64List = []\n this.rowCount = 1\n this.showSubmit = false\n // }\n }\n\n scrollToBottom() {\n const container = this.el.shadowRoot.querySelector(\".chat-body\")\n if (container) {\n container.scroll({\n top: container.scrollHeight,\n behavior: \"smooth\",\n })\n }\n }\n\n\n // Function to trigger the text-to-speech\nasync speakText(msg: string) {\n if (this.voiceType === \"default\") {\n if (\"speechSynthesis\" in window) {\n const voices = window.speechSynthesis.getVoices()\n const voice = voices.find(voice => voice.name === this.voice)\n this.isPlayed = true\n const utterance = new SpeechSynthesisUtterance(msg) // Create a speech synthesis utterance\n utterance.lang = \"en-US\" // Set the language, you can change this as needed\n utterance.rate = 1\n utterance.pitch = 1\n utterance.voice = voice\n // Speak the text\n window.speechSynthesis.speak(utterance)\n } else {\n alert(\"Speech Synthesis API is not supported in your browser.\")\n }\n }\n \n if (this.voiceType === \"google\") {\n const base64audiocontent = await getAudioContent(this.dataKey, this.dataMode, msg, this.voice)\n const audioBlob = base64ToBlob(base64audiocontent.audio_content, \"audio/mpeg\")\n const audioUrl = URL.createObjectURL(audioBlob)\n \n // Create the audio element\n this.audioElement = new Audio(audioUrl)\n this.audioElement.onended = () => {\n // this.isPlaying = false\n this.isPlayed = false\n }\n if (this.audioElement.paused) {\n this.audioElement.play()\n this.isPlayed = true\n } else {\n this.audioElement.pause()\n this.audioElement.currentTime = 0\n this.audioElement.src = \"\" // Remove the audio source\n this.audioElement = null // Dereference the object\n this.isPlayed = false\n }\n }\n }\n\n defaultTemplate() {\n return (\n <div class={{ \"prose\": true, \"floating-icon\": !this.isBot, \"right\": this.botSettings?.botPosition === \"right\", \"left\": this.botSettings?.botPosition === \"left\" }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"white\" height=\"30px\" width=\"30px\" version=\"1.1\" id=\"Capa_1\" viewBox=\"0 0 60.019 60.019\">\n <g>\n <path d=\"M59.888,47.514l-3.839-11.518c2.056-3.615,3.14-7.716,3.14-11.893c0-13.286-10.809-24.095-24.095-24.095 c-8.242,0-15.824,4.223-20.219,11.007c3.089-1.291,6.477-2.007,10.029-2.007C39.294,9.01,51,20.716,51,35.104 c0,3.996-0.905,7.783-2.518,11.172l10.263,2.701c0.085,0.022,0.17,0.033,0.255,0.033c0.006,0,0.014-0.001,0.02,0 c0.553,0,1-0.448,1-1C60.019,47.829,59.972,47.66,59.888,47.514z\" />\n <path d=\"M24.905,11.01C11.619,11.01,0.81,21.819,0.81,35.104c0,4.176,1.084,8.277,3.14,11.893L0.051,58.693 c-0.116,0.349-0.032,0.732,0.219,1C0.462,59.898,0.727,60.01,1,60.01c0.085,0,0.17-0.011,0.255-0.033l12.788-3.365 c3.35,1.694,7.097,2.587,10.862,2.587C38.191,59.199,49,48.39,49,35.104S38.191,11.01,24.905,11.01z M41.246,26.799 c-0.152,0.083-0.317,0.123-0.479,0.123c-0.354,0-0.696-0.188-0.878-0.519c-2.795-5.097-8.115-8.679-13.883-9.349 c-0.549-0.063-0.941-0.56-0.878-1.108c0.063-0.548,0.558-0.942,1.108-0.878c6.401,0.743,12.304,4.718,15.406,10.373 C41.908,25.926,41.73,26.534,41.246,26.799z\" />\n </g>\n </svg>\n </div>\n )\n }\n\n handleFollowUp(_e) {\n // console.log(\"follow up\", e)\n this.messages = [...[]]\n this.conversationId = \"\"\n this.showWelcomeScreen = true\n }\n\n showButton(e) {\n if (e.target.value.length > 0) {\n this.showSubmit = true\n } else {\n this.showSubmit = false\n }\n }\n\n toggleTextarea() {\n // console.log(\"toggleTextarea\", this.showTextarea)\n this.showTextarea = false // Remove textarea\n setTimeout(() => {\n this.showTextarea = true // Re-add textarea after a short delay\n // console.log(\"toggleTextarea2\", this.showTextarea)\n }, 50) // Small delay ensures the element is fully unmounted\n }\n\n checkLiveAgentMode() {\n const isLiveAgentConfigured = this.botSettings?.liveagent && Object.keys(this.botSettings?.liveagent).length > 0\n /**\n * Check if live agent is enabled\n * If live agent is configured and there are more than one messages in the chat,\n * then enable live agent mode.\n * This is to ensure that live agent mode is only enabled after the user has interacted with the bot\n * and there is a conversation history to refer to.\n * This prevents the live agent from being connected immediately when the chat is opened.\n */\n this.isLiveAgentEnabled = isLiveAgentConfigured && this.messages.length > 1\n }\n disconnectLiveChat() {\n this.liveAgentEventHandler.disconnectLiveAgent()\n }\n async connectLiveChat() {\n const liveAgentProviderNames: string[] = Object.keys(this.botSettings?.liveagent ?? {})\n if (liveAgentProviderNames.length === 0) {\n console.error(\"No live agent provider found in bot settings\")\n return\n }\n if (liveAgentProviderNames.length > 1) {\n console.warn(\"Multiple live agent providers found, using the first one\")\n }\n let liveAgentSettings = this.botSettings?.liveagent[liveAgentProviderNames[0]] ?? null\n if (!liveAgentSettings) {\n console.error(\"No live agent settings found for the provider\", liveAgentProviderNames[0])\n return\n }\n if (liveAgentSettings) {\n const conversationExists = this.getConversationHistory()\n let messageHistory = conversationExists.filter(item => item.conversationId === this.conversationId && item.projectId === this.botSettings?.pId)\n this.isTypingIndicatorVisible = true\n liveAgentSettings = {\n config: liveAgentSettings,\n userId: this.visitorID,\n conversationId: this.conversationId,\n messageHistory: messageHistory,\n }\n\n if (liveAgentProviderNames[0] === \"liveagent\") {\n if (!this.liveAgentRef) {\n this.isTypingIndicatorVisible = false\n console.error(\"LiveAgent reference is not set\")\n return\n }\n await this.liveAgentRef.startChat()\n } else {\n this.liveAgentEventHandler.connectToLiveAgent(liveAgentProviderNames[0] as LiveAgentProviderType, liveAgentSettings)\n ChatEventBus.on(\"AGENT_SESSION_CREATED\", () => {\n this.isLiveAgent = true\n this.liveAgentButtonText = \"End liveagent chat\"\n })\n ChatEventBus.on(\"AGENT_EVENT\", (event: any) => {\n this.isTypingIndicatorVisible = false\n if (event?.length > 0) {\n const agentEventMessages: HTMLElement = this.liveAgentEventHandler.addAgentEventMessage(event)\n if (agentEventMessages) {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n // Append the agent event messages to the current message bubble\n currentDomElement.parentNode.appendChild(agentEventMessages)\n }\n if (this.inputEl) {\n this.inputEl.value = \"\"\n }\n }\n }\n })\n ChatEventBus.on(\"TYPING_STARTED\", (status: boolean) => {\n this.isTypingIndicatorVisible = status\n })\n ChatEventBus.on(\"TYPING_STOPPED\", (_status: boolean) => {\n this.isTypingIndicatorVisible = false\n })\n ChatEventBus.on(\"AGENT_MESSAGE\", (message: any) => {\n const retMessage = this.liveAgentEventHandler.handleAgentMessage(message)\n if (retMessage) {\n const aiMessageBubble = this.el.shadowRoot?.querySelector(`#${this.currentDomId}`)\n if (aiMessageBubble) {\n const converter = new showdown.Converter()\n let bubbleText = aiMessageBubble.getAttribute(\"data-bubbleText\") || \"\"\n bubbleText = `${bubbleText} \\n\\n ${retMessage}`\n aiMessageBubble.setAttribute(\"data-bubbleText\", bubbleText)\n\n let html = converter.makeHtml(bubbleText)\n this.updateConversations(html, message[0])\n }\n setTimeout(() => {\n this.scrollToBottom()\n }, 10)\n }\n })\n ChatEventBus.on(\"AGENT_ERROR\", () => {\n addEventMessage(\"Something went wrong with liveagent\")\n this.isLiveAgent = false\n this.isTypingIndicatorVisible = false\n this.liveAgentEventHandler.disconnectLiveAgent()\n })\n ChatEventBus.on(\"CONVERSATION_CLOSED\", () => {\n addEventMessage(\"Conversation closed with liveagent\")\n this.isLiveAgent = false\n this.isTypingIndicatorVisible = false\n this.liveAgentButtonText = \"Talk to a liveagent\"\n })\n }\n const addEventMessage = (_message: string) => {\n const agentEventMessages: HTMLElement = this.liveAgentEventHandler.addAgentEventMessage([\n {\n text: _message,\n },\n ])\n if (agentEventMessages) {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n // Append the agent event messages to the current message bubble\n currentDomElement.parentNode.appendChild(agentEventMessages)\n }\n }\n }\n }\n }\n\n // Function to copy the text to clipboard\n copyToClipboard(text: string) {\n navigator.clipboard\n .write([\n new ClipboardItem({\n \"text/html\": new Blob([text], { type: \"text/html\" }),\n \"text/plain\": new Blob([removeHtmlTags(text)], { type: \"text/plain\" }),\n }),\n ])\n .then(() => {\n // console.log(\"Text copied to clipboard\", text)\n this.copied = true // Set a flag to show copied state\n setTimeout(() => {\n this.copied = false // Reset copied state after 2 seconds\n }, 2000)\n })\n }\n\n\n disableFeedback = (id: string): void => {\n const thumbsUp = this.el.shadowRoot.querySelector(`#thumbsUp_${id}`)\n const thumbsDown = this.el.shadowRoot.querySelector(`#thumbsDown_${id}`)\n thumbsUp.classList.add(\"not-allowed\")\n thumbsUp.setAttribute(\"disabled\", \"true\")\n thumbsDown.classList.add(\"not-allowed\")\n thumbsDown.setAttribute(\"disabled\", \"true\")\n }\n\n \n thumbsUp = (id: string, insightId: string): void => {\n const thumbsUp = this.el.shadowRoot.querySelector(`#thumbsUp_${id}`)\n thumbsUp.classList.add(\"thumbs-up\")\n thumbsUp.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7.493 18.5c-.425 0-.82-.236-.975-.632A7.48 7.48 0 0 1 6 15.125c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75A.75.75 0 0 1 15 2a2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23h-.777ZM2.331 10.727a11.969 11.969 0 0 0-.831 4.398 12 12 0 0 0 .52 3.507C2.28 19.482 3.105 20 3.994 20H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 0 1-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227Z\" />\n </svg>\n `\n this.disableFeedback(id)\n sendFeedback(this.dataKey, this.dataMode, insightId, {value: 1})\n // this.feedback.emit({ insightId: insightId, feedback: { value: 1 } })\n }\n\n thumbsDown = (id: string, insightId: string): void => {\n const thumbsDown = this.el.shadowRoot.querySelector(`#thumbsDown_${id}`)\n thumbsDown.classList.add(\"thumbs-down\")\n thumbsDown.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M15.73 5.5h1.035A7.465 7.465 0 0 1 18 9.625a7.465 7.465 0 0 1-1.235 4.125h-.148c-.806 0-1.534.446-2.031 1.08a9.04 9.04 0 0 1-2.861 2.4c-.723.384-1.35.956-1.653 1.715a4.499 4.499 0 0 0-.322 1.672v.633A.75.75 0 0 1 9 22a2.25 2.25 0 0 1-2.25-2.25c0-1.152.26-2.243.723-3.218.266-.558-.107-1.282-.725-1.282H3.622c-1.026 0-1.945-.694-2.054-1.715A12.137 12.137 0 0 1 1.5 12.25c0-2.848.992-5.464 2.649-7.521C4.537 4.247 5.136 4 5.754 4H9.77a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23ZM21.669 14.023c.536-1.362.831-2.845.831-4.398 0-1.22-.182-2.398-.52-3.507-.26-.85-1.084-1.368-1.973-1.368H19.1c-.445 0-.72.498-.523.898.591 1.2.924 2.55.924 3.977a8.958 8.958 0 0 1-1.302 4.666c-.245.403.028.959.5.959h1.053c.832 0 1.612-.453 1.918-1.227Z\" />\n </svg>\n `\n this.disableFeedback(id)\n sendFeedback(this.dataKey, this.dataMode, insightId, {value: -1})\n // this.feedback.emit({ insightId: insightId, feedback: { value: -1 } })\n }\n render() {\n\n if (!this.canRender) {\n return (\n <Host>\n <span style={{ display: \"none\" }}>Failed to load ai12z bot control due to insufficient fund</span>\n </Host>\n )\n }\n return (\n <div>\n {this.botSettings.botVersion !== \"v1\" && this.isRendered && (\n <div\n class={`pt-0 show-grid ${this.isAnimated ? \"transition ease-out duration-300\" : \"\"} layout ${this.isOpened ? \"is-open\" : \"\"} ${this.isExpanded ? \"is-expanded\" : \"\"} search-flex`}\n style={{\n gridTemplateColumns: `0fr minmax(${this.botSettings.minWidth ?? \"340px\"}, ${this.botSettings.maxWidth ?? \"375px\"}) 0fr`,\n paddingTop: this.botSettings?.paddingTop ?? \"96px\",\n }}\n >\n <div\n class={`modal-overlay`}\n role=\"button\"\n aria-label=\"Close Modal\"\n style={{\n display: this.isExpanded && this.isOpened ? \"grid\" : \"none\",\n opacity: this.isExpanded && this.isOpened ? \"1\" : \"0\",\n pointerEvents: this.isExpanded && this.isOpened ? \"all\" : \"none\",\n }}\n ></div>\n {/* {this.isOpen && ( */}\n <div\n class=\"modal\"\n data-testid=\"modal\"\n aria-hidden=\"false\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n style={{ display: this.isOpened ? \"grid\" : \"none\", opacity: this.isOpened ? \"1\" : \"0\", transform: this.isOpened ? \"none\" : \"translateY(100%)\" }}\n >\n <div class=\"flex bg-white overflow-hidden border-b border-gray-90 border-solid md:pl-3 pl-4 justify-end md:rounded-t-xl items-center toolbar\">\n <div class=\"flex gap-1 toolbar-overflow-actions\">\n {this.isLiveAgentEnabled && this.botSettings?.liveagent?.liveagent && (\n <live-agent-chat config={this.botSettings?.liveagent?.liveagent} ref={el => (this.liveAgentRef = el) as HTMLLiveAgentChatElement}></live-agent-chat>\n )}\n {!this.showHistory && (\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6\"\n tabindex=\"0\"\n aria-label=\"options menu\"\n aria-haspopup=\"menu\"\n aria-expanded=\"false\"\n aria-controls=\"toolbar-dropdown-menu\"\n onClick={e => {\n e.preventDefault()\n e.stopPropagation()\n this.toggleBot(e)\n }}\n >\n <i class=\"block wes-icon--loading text-body2 modal-toolbar-icon \">\n <svg viewBox=\"0 0 24 24\" id=\"align-left-2\" data-name=\"Flat Line\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon flat-line\" fill=\"currentColor\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <path id=\"primary\" d=\"M3,12H17M3,6H21M3,18H13\" style={{ fill: \"none\", stroke: \"currentColor\" }}></path>\n </g>\n </svg>\n </i>\n </button>\n )}\n {this.showHistory && (\n <button\n class=\"w-6 h-6 back-btn\"\n onClick={e => {\n e.preventDefault()\n e.stopPropagation()\n this.showHistory = false\n this.showWelcomeScreen = true\n // this.hideInput = false\n this.isOpened = true\n this.isMinimized = false\n this.isAnimated = true\n }}\n >\n <i>\n <svg viewBox=\"0 0 200 200\" data-name=\"Layer 1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <title></title>\n <path d=\"M160,89.75H56l53-53a9.67,9.67,0,0,0,0-14,9.67,9.67,0,0,0-14,0l-56,56a30.18,30.18,0,0,0-8.5,18.5c0,1-.5,1.5-.5,2.5a6.34,6.34,0,0,0,.5,3,31.47,31.47,0,0,0,8.5,18.5l56,56a9.9,9.9,0,0,0,14-14l-52.5-53.5H160a10,10,0,0,0,0-20Z\"></path>\n </g>\n </svg>\n </i>\n </button>\n )}\n\n <div\n id=\"dropdown-menu\"\n role=\"menu\"\n class={`flex flex-col gap-y-1 grow-wrap absolute bg-white border-b border-gray-80 border-solid rounded-lg shadow-lg p-2 mt-4 min-w-[200px] left-5 overflow-hidden ${this.isToggled ? \"show\" : \"\"} dropdown-menu`}\n style={{ height: \"auto\" }}\n ref={el => (this.menuV2Ref = el)}\n >\n {this.botSettings?.buttons?.map(button => (\n <div class=\"w-full dropdown-item\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={e => {\n this.toggleBot(e)\n this.showHistory = false\n this.showWelcomeScreen = true\n this.handleSend(button.label)\n }}\n >\n {button.label}\n </button>\n </div>\n ))}\n <div class=\"w-full dropdown-item\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={e => {\n this.toggleBot(e)\n this.showHistory = true\n // this.hideInput = true\n this.loadConversation()\n // console.log(\"this.show\", this.conversationHistory)\n }}\n >\n View Recent chat\n </button>\n </div>\n <div class=\"w-full dropdown-item\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={ev => {\n ev.preventDefault()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.isOpened = false\n this.isMinimized = this.isExpanded ? false : true\n this.showWelcomeScreen = true\n this.toggleBot(ev)\n this.showHistory = false\n this.close.emit(\"close\")\n }}\n >\n End conversation\n </button>\n </div>\n <div class=\"w-full dropdown-item\" role=\"menuitem\" tabindex=\"-1\">\n {this.checkLiveAgentMode()}\n <button\n class={`dropdown-item-button ${!this.isLiveAgentEnabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"opacity-100 cursor-pointer\"}`}\n style={{ opacity: !this.isLiveAgentEnabled ? \"0.5\" : \"1\", cursor: !this.isLiveAgentEnabled ? \"not-allowed\" : \"pointer\" }}\n onClick={ev => {\n ev.preventDefault()\n if (!this.isLiveAgentEnabled) return\n if (this.isLiveAgent) {\n this.disconnectLiveChat()\n } else {\n this.connectLiveChat()\n }\n }}\n >\n {this.liveAgentButtonText}\n </button>\n </div>\n </div>\n </div>\n {this.botSettings?.botLogo && <img src={this.botSettings?.botLogo} class=\"w-8 h-8 rounded-lg\"></img>}\n <h2 class=\"flex-1 pl-2 heading text-body1\">{this.botSettings?.botName}</h2>\n <div class=\"buttons flex gap-2 p-[10px]\">\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6 hidden md:flex\"\n tabindex=\"0\"\n onClick={() => {\n this.isExpanded = !this.isExpanded\n this.isAnimated = true\n }}\n aria-label=\"Collapse Agentforce to Side Panel\"\n >\n <i class=\"wes-block wes-icon--loading wes-text-body2 modal-toolbar-icon\">\n {this.isExpanded && (\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.215 14.7076H27.692C28.3074 14.7076 28.492 14.0307 27.9997 13.5383L24.9843 10.4614L30.5228 4.86149C30.8305 4.5538 30.8305 3.99995 30.5228 3.69226L28.2459 1.41536C27.9382 1.16921 27.4459 1.16921 27.0767 1.4769L21.5381 7.01532L18.3997 3.99995C17.9073 3.50765 17.2304 3.69226 17.2304 4.30764V13.7845C17.2304 14.2153 17.7843 14.7076 18.215 14.7076ZM13.7847 17.2308H4.30766C3.69227 17.2308 3.50765 17.9077 3.99996 18.4L7.01537 21.4769L1.47686 27.0769C1.16917 27.3846 1.16917 27.9384 1.47686 28.2461L3.75381 30.523C4.0615 30.8307 4.55381 30.8307 4.92305 30.523L10.5231 24.923L13.6616 27.9384C14.0924 28.4923 14.7693 28.3076 14.7693 27.6923V18.2769C14.7693 17.8462 14.2154 17.2308 13.7847 17.2308Z\"\n ></path>\n </svg>\n )}\n {!this.isExpanded && (\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M30.0308 1.23071H20.4923C19.8769 1.23071 19.6923 1.78455 20.1846 2.27686L23.2 5.29222L17.6615 10.8306C17.3538 11.1383 17.3538 11.6306 17.6615 11.9999L19.9384 14.2768C20.2461 14.5845 20.7384 14.5845 21.1077 14.2768L26.7077 8.67681L29.7231 11.6922C30.2154 12.1845 30.7692 11.9999 30.7692 11.3845V1.90763C30.7692 1.5384 30.4 1.23071 30.0308 1.23071ZM2.15379 30.7692H11.6307C12.2461 30.7692 12.4307 30.0923 11.9384 29.6L8.92303 26.5231L14.4615 20.9231C14.7692 20.6154 14.7692 20.0616 14.4615 19.7539L12.1846 17.477C11.8769 17.1693 11.3846 17.1693 11.0153 17.477L5.47687 23.0154L2.39995 20C1.8461 19.5077 1.23071 19.6923 1.23071 20.3077V29.7846C1.23071 30.2153 1.72302 30.7692 2.15379 30.7692Z\"\n ></path>\n </svg>\n )}\n </i>\n </button>\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6\"\n tabindex=\"0\"\n data-testid=\"modal-minimize\"\n aria-label=\"Minimize\"\n onClick={() => {\n this.isOpened = false\n // this.isContent = false\n this.isContent = this.isExpanded && this.botSettings.isExpanded ? true : false\n this.isMinimized = this.isExpanded && this.botSettings.isExpanded ? false : true\n this.isAnimated = false\n this.updateScreenSize()\n this.minimize.emit(\"minimize\")\n }}\n >\n <i class=\"block wes-icon--loading text-body2 modal-toolbar-icon\">\n <svg viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M25 24.25C25 24.65 24.65 25 24.25 25H1.75C1.35 25 1 24.65 1 24.25V22.75C1 22.35 1.35 22 1.75 22H24.25C24.65 22 25 22.35 25 22.75V24.25Z\"\n ></path>\n </svg>\n </i>\n </button>\n </div>\n </div>\n <div class=\"flex-1 flex flex-col main\">\n <div class=\"h-full flex flex-col chat-body\">\n <div class=\"px-5 flex-[1_1_0] min-h-[calc(100%-1px)] flex flex-col gap-y-3 @md:px-3 messages-container\" role=\"region\" aria-label=\"messages\">\n {/* <h3 class=\"text-display5 font-avant-garde text-[#001E5B] @md:text-display4 text-center @md:px-6 pb-3 @md:pb-7 @md:pt-8 pt-5\">\n How can <strong class=\"text-[#0344D1]\">Agentforce</strong> help?\n </h3> */}\n {this.showWelcomeScreen && <div class=\"@md:px-6 pb-3 @md:pb-7 @md:pt-8 pt-5 text-display5\" innerHTML={this.botSettings?.welcome?.message}></div>}\n {/* <div class=\"message-item flex pb-3 gap-x-2 @md:gap-x-3 justify-center\" style={{ opacity: \"1\", transform: \"none\" }}>\n <div class=\"flex flex-col\">\n <div class=\"timestamp text-gray-30 text-body4 pt-2\">Agentforce joined • 12:45 PM</div>\n </div>\n </div> */}\n {this.messages.length > 0 &&\n !this.showHistory &&\n this.messages.map((message, idx) => {\n // const showAvatar = !message.isUser && (idx === this.messages.length - 1 || this.messages[idx + 1]?.isUser === true)\n const email = \"\"\n return (\n <div\n class={`flex pb-3 gap-x-2 @md:gap-x-3 \n ${message.isUser ? \"self-end\" : \"\"}\n ${message.isUser ? \"justify-end\" : \"\"} end-user-message message-item`}\n style={{ opacity: \"1\", transform: \"none\" }}\n >\n {message.isUser && (\n <div class=\"flex flex-col items-end\">\n <div\n data-testid=\"message\"\n class=\"break-words @md:text-body2 box-border @md:pr-4 flex-1 rounded-lg py-2 px-4 user-msg text-body3\"\n innerHTML={message.text}\n >\n {message?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" />\n })}\n </div>\n\n <div class=\"text-gray-30 pt-2 text-right text-body4\">Sent {message.timestamp}</div>\n </div>\n )}\n {!message.isUser && (\n <div class=\"avatar-column\">\n <chat-avatar id={`la${message.id}`} senderType={message?.sender ? \"agent\" : \"bot\"} avatarUrl={this.botSettings?.botAvatar}></chat-avatar>\n </div>\n )}\n {!message.isUser && (\n <div class=\"flex flex-col\" style={{ width: \"100%\" }}> \n <div\n data-testid=\"message\"\n class={{\n \"prose\": true,\n \"transition-all\": true,\n \"duration-300\": true,\n \"opacity-100\": this.isProse,\n \"opacity-90\": !this.isProse,\n \"max-w-full break-words @md:text-body2 box-border @md:pr-4 flex-1 rounded-lg text-gray-30 pr-2 text-body3\": true,\n }}\n innerHTML={message.text}\n id={message.id}\n >\n {message.text === \"\" && (\n <div class=\"w-full rounded-md\" id=\"spinner\">\n <div class=\"flex animate-pulse space-x-4\">\n {/* <div class=\"size-10 rounded-full bg-gray-200\"></div> */}\n <div class=\"flex-1 space-y-3 py-1\">\n <div class=\"h-4 rounded bg-gray-200\"></div>\n <div class=\"space-y-3\">\n <div class=\"grid grid-cols-3 gap-4\">\n <div class=\"col-span-2 h-4 rounded bg-gray-200\"></div>\n <div class=\"col-span-1 h-4 rounded bg-gray-200\"></div>\n </div>\n <div class=\"h-4 rounded bg-gray-200\"></div>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n {/* 👍👎 THUMBS BUTTONS BELOW MESSAGE */}\n { message.text!==\"\" && message.showIcon && <div class=\"thumbs-container flex gap-2 mt-2\">\n {this.isPlayed && (\n <button\n class=\"copy-btn\"\n onClick={() => {\n this.isPlayed = false\n window.speechSynthesis.cancel()\n if (this.audioElement) {\n this.audioElement.pause()\n this.audioElement.currentTime = 0\n this.audioElement.src = \"\" // Remove the audio source\n this.audioElement = null // Dereference the object\n }\n // this.isPlayed = false\n }}\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon-md-heavy\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM9.5 8.5C8.94772 8.5 8.5 8.94772 8.5 9.5V14.5C8.5 15.0523 8.94772 15.5 9.5 15.5H14.5C15.0523 15.5 15.5 15.0523 15.5 14.5V9.5C15.5 8.94772 15.0523 8.5 14.5 8.5H9.5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n )}\n {!this.isPlayed && (\n <button class=\"copy-btn\" onClick={() => this.speakText(removeHtmlTags(message.text))}>\n <svg class=\"w-6 h-6\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11 4.9099C11 4.47485 10.4828 4.24734 10.1621 4.54132L6.67572 7.7372C6.49129 7.90626 6.25019 8.00005 6 8.00005H4C3.44772 8.00005 3 8.44776 3 9.00005V15C3 15.5523 3.44772 16 4 16H6C6.25019 16 6.49129 16.0938 6.67572 16.2629L10.1621 19.4588C10.4828 19.7527 11 19.5252 11 19.0902V4.9099ZM8.81069 3.06701C10.4142 1.59714 13 2.73463 13 4.9099V19.0902C13 21.2655 10.4142 22.403 8.81069 20.9331L5.61102 18H4C2.34315 18 1 16.6569 1 15V9.00005C1 7.34319 2.34315 6.00005 4 6.00005H5.61102L8.81069 3.06701ZM20.3166 6.35665C20.8019 6.09313 21.409 6.27296 21.6725 6.75833C22.5191 8.3176 22.9996 10.1042 22.9996 12.0001C22.9996 13.8507 22.5418 15.5974 21.7323 17.1302C21.4744 17.6185 20.8695 17.8054 20.3811 17.5475C19.8927 17.2896 19.7059 16.6846 19.9638 16.1962C20.6249 14.9444 20.9996 13.5175 20.9996 12.0001C20.9996 10.4458 20.6064 8.98627 19.9149 7.71262C19.6514 7.22726 19.8312 6.62017 20.3166 6.35665ZM15.7994 7.90049C16.241 7.5688 16.8679 7.65789 17.1995 8.09947C18.0156 9.18593 18.4996 10.5379 18.4996 12.0001C18.4996 13.3127 18.1094 14.5372 17.4385 15.5604C17.1357 16.0222 16.5158 16.1511 16.0539 15.8483C15.5921 15.5455 15.4632 14.9255 15.766 14.4637C16.2298 13.7564 16.4996 12.9113 16.4996 12.0001C16.4996 10.9859 16.1653 10.0526 15.6004 9.30063C15.2687 8.85905 15.3578 8.23218 15.7994 7.90049Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n )}\n <button id={`thumbsUp_${message.thumbsId}`} onClick={() => this.thumbsUp(message.thumbsId, message.insightId)} class=\"chat-thumbs-up\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-6 h-6\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M6.633 10.25c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75a.75.75 0 0 1 .75-.75 2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282m0 0h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23H5.904m10.598-9.75H14.25M5.904 18.5c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 0 1-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 9.953 4.167 9.5 5 9.5h1.053c.472 0 .745.556.5.96a8.958 8.958 0 0 0-1.302 4.665c0 1.194.232 2.333.654 3.375Z\"\n />\n </svg>\n </button>\n <button id={`thumbsDown_${message.thumbsId}`} onClick={() => this.thumbsDown(message.thumbsId, message.insightId)} class=\"chat-thumbs-up\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-6 h-6\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M7.498 15.25H4.372c-1.026 0-1.945-.694-2.054-1.715a12.137 12.137 0 0 1-.068-1.285c0-2.848.992-5.464 2.649-7.521C5.287 4.247 5.886 4 6.504 4h4.016a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23h1.294M7.498 15.25c.618 0 .991.724.725 1.282A7.471 7.471 0 0 0 7.5 19.75 2.25 2.25 0 0 0 9.75 22a.75.75 0 0 0 .75-.75v-.633c0-.573.11-1.14.322-1.672.304-.76.93-1.33 1.653-1.715a9.04 9.04 0 0 0 2.86-2.4c.498-.634 1.226-1.08 2.032-1.08h.384m-10.253 1.5H9.7m8.075-9.75c.01.05.027.1.05.148.593 1.2.925 2.55.925 3.977 0 1.487-.36 2.89-.999 4.125m.023-8.25c-.076-.365.183-.75.575-.75h.908c.889 0 1.713.518 1.972 1.368.339 1.11.521 2.287.521 3.507 0 1.553-.295 3.036-.831 4.398-.306.774-1.086 1.227-1.918 1.227h-1.053c-.472 0-.745-.556-.5-.96a8.95 8.95 0 0 0 .303-.54\"\n />\n </svg>\n </button>\n <button class=\"copy-btn\" onClick={() => this.copyToClipboard(message.text)}>\n {!this.copied && (\n <svg class=\"w-6 h-6\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n )}\n {this.copied && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"w-6 h-6\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19.8198 6.19526C20.0601 6.45561 20.0601 6.87772 19.8198 7.13807L9.9736 17.8047C9.73328 18.0651 9.34364 18.0651 9.10332 17.8047L4.18024 12.4714C3.93992 12.2111 3.93992 11.7889 4.18024 11.5286C4.42056 11.2682 4.8102 11.2682 5.05053 11.5286L9.53846 16.3905L18.9495 6.19526C19.1898 5.93491 19.5794 5.93491 19.8198 6.19526Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n )}\n </button>\n <button class=\"copy-btn\">\n <a\n href={`mailto:${email}?subject=${encodeURIComponent(this.messages[idx - 1]?.text)}&body=${encodeURIComponent(removeHtmlTags(message.text))}`}\n target=\"_blank\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"currentColor\" stroke-width=\"0.3\" class=\"w-6 h-6\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M3.75 5.25L3 6V18L3.75 18.75H20.25L21 18V6L20.25 5.25H3.75ZM4.5 7.6955V17.25H19.5V7.69525L11.9999 14.5136L4.5 7.6955ZM18.3099 6.75H5.68986L11.9999 12.4864L18.3099 6.75Z\"\n fill=\"currentColor\"\n ></path>{\" \"}\n </svg>\n </a>\n </button>\n </div>}\n <div class=\"text-gray-30 pt-2 text-body4\">\n {this.botSettings.botName} • {message.timestamp}\n </div>\n </div>\n )}\n </div>\n )\n })}\n {this.showHistory && (\n <chatbot-history chatList={this.conversationHistory} botName={this.botSettings?.botName} styles={this.customStyle} scripts={this.customJS}></chatbot-history>\n )}\n <div class=\"h-px pt-2px\" style={{ overflowAnchor: \"auto\" }}></div>\n </div>\n\n <div aria-live=\"polite\" class=\"absolute w-[1px] h-[1px] p-0 m-[-1px] overflow-hidden whitespace-nowrap border-0\"></div>\n </div>\n </div>\n </div>\n {/* )} */}\n {/* {!this.isMinimized && ( */}\n <form\n data-testid=\"user-input\"\n class={`relative pointer-events-auto ${this.isOpened ? \"p-2.5\" : \"\"} searchform user-input`}\n role=\"region\"\n aria-label=\"Message Area\"\n aria-hidden=\"false\"\n style={{ opacity: !this.isMinimized ? \"1\" : \"0\", transform: \"translateX(0)\", pointerEvents: !this.isMinimized ? \"auto\" : \"none\" }}\n >\n {!this.isOpened && (\n <div class={`absolute right-4 md:right-0 border-2 border-white border-solid rounded-full ${this.isContent ? \"\" : \"top-0\"} minimize-input`}>\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-gray-500 bg-opacity-60 hover:bg-opacity-80 h-5 w-5\"\n tabindex=\"0\"\n onClick={e => {\n e.preventDefault()\n this.isMinimized = !this.isMinimized\n }}\n >\n <i class=\"block ai-minimize-icon ai-text-caption\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"52\" width=\"52\" viewBox=\"0 0 520 520\" fill=\"#fff\">\n <path d=\"M500 275c0 8-7 15-15 15H35c-8 0-15-7-15-15v-30c0-8 7-15 15-15h450c8 0 15 7 15 15z\"></path>\n </svg>\n </i>\n </button>\n </div>\n )}\n <fieldset class={`flex flex-col @md:mx-0 @md:rounded-t-xl transition-colors ${this.isMinimized && !this.isExpanded ? \"\" : \"p-4 user-input-fieldset\"}`}>\n {/* <div class={`text-white wes-text-display7 pb-3 help-text ${this.isOpen ? \"hide-title\" : \"\"}`} aria-hidden=\"true\">\n Need help? Ask AI.\n </div> */}\n {!this.isExpanded && this.isOpened && this.messages.length === 0 && (\n <privacy-modal show={this.showPrivacy} message={this.botSettings.privacyTemplate}></privacy-modal>\n )}\n <div class=\"flex-1 align-bottom\">\n {this.isTypingIndicatorVisible && (\n <div class=\"flex items-center justify-center w-full h-12\">\n <typing-indicator></typing-indicator>\n </div>\n )}\n <div class=\"grow-wrap show-grid after:whitespace-pre-wrap after:invisible relative\" data-replicated-value=\"\" aria-disabled=\"false\">\n {this.botSettings.imageUpload && (\n <div\n aria-disabled=\"true\"\n class={`absolute flex items-center left-0 bottom-0 h-full pl-4 pr-2 ${this.hideAllButtons ? \"hidden\" : \"\"} ${this.isContent ? \"hidden\" : \"\"} agent-input-icon`}\n >\n <button\n class=\"plus-icon\"\n onClick={e => {\n e.stopPropagation()\n e.preventDefault()\n this.showMenu = !this.showMenu\n }}\n >\n <i class=\"plus-icon wes-block wes-text-body1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z\"></path>\n </svg>\n </i>\n </button>\n {/* Option Box */}\n <div\n class={`absolute bottom-6 left-0 w-44 bg-white rounded-lg shadow-lg transition-all duration-300 ease-in-out z-10\n ${this.showMenu ? \"opacity-100 scale-100 pointer-events-auto\" : \"opacity-0 scale-90 pointer-events-none\"}`}\n >\n <ul class=\"space-y-2\" ref={el => (this.plusIconRef = el)}>\n <li\n class=\"px-4 py-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n this.uploadElem.click()\n // this.isOpen = false\n this.showMenu = false\n }}\n >\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => {\n // this.isImage = true\n this.onInputChange($event.target.files)\n }}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <div class=\"mr-1\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5 shrink-0\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.0322 5.02393C17.7488 5.00078 17.3766 5 16.8 5H11.5002C11.3 6 11.0989 6.91141 10.8903 7.85409C10.7588 8.44955 10.6432 8.97304 10.3675 9.41399C10.1262 9.80009 9.80009 10.1262 9.41399 10.3675C8.97304 10.6432 8.44955 10.7588 7.85409 10.8903C7.81276 10.8994 7.77108 10.9086 7.72906 10.9179L5.21693 11.4762C5.1442 11.4924 5.07155 11.5001 5 11.5002V16.8C5 17.3766 5.00078 17.7488 5.02393 18.0322C5.04612 18.3038 5.0838 18.4045 5.109 18.454C5.20487 18.6422 5.35785 18.7951 5.54601 18.891C5.59546 18.9162 5.69617 18.9539 5.96784 18.9761C6.25118 18.9992 6.62345 19 7.2 19H10C10.5523 19 11 19.4477 11 20C11 20.5523 10.5523 21 10 21H7.16144C6.6343 21 6.17954 21 5.80497 20.9694C5.40963 20.9371 5.01641 20.8658 4.63803 20.673C4.07354 20.3854 3.6146 19.9265 3.32698 19.362C3.13419 18.9836 3.06287 18.5904 3.03057 18.195C2.99997 17.8205 2.99998 17.3657 3 16.8385L3 11C3 8.92477 4.02755 6.93324 5.4804 5.4804C6.93324 4.02755 8.92477 3 11 3L16.8385 3C17.3657 2.99998 17.8205 2.99997 18.195 3.03057C18.5904 3.06287 18.9836 3.13419 19.362 3.32698C19.9265 3.6146 20.3854 4.07354 20.673 4.63803C20.8658 5.01641 20.9371 5.40963 20.9694 5.80497C21 6.17954 21 6.6343 21 7.16144V10C21 10.5523 20.5523 11 20 11C19.4477 11 19 10.5523 19 10V7.2C19 6.62345 18.9992 6.25118 18.9761 5.96784C18.9539 5.69617 18.9162 5.59546 18.891 5.54601C18.7951 5.35785 18.6422 5.20487 18.454 5.109C18.4045 5.0838 18.3038 5.04612 18.0322 5.02393ZM5.28014 9.41336L7.2952 8.96556C8.08861 8.78925 8.24308 8.74089 8.35381 8.67166C8.48251 8.59121 8.59121 8.48251 8.67166 8.35381C8.74089 8.24308 8.78925 8.08861 8.96556 7.2952L9.41336 5.28014C8.51014 5.59289 7.63524 6.15398 6.89461 6.89461C6.15398 7.63524 5.59289 8.51014 5.28014 9.41336ZM17 15C17 14.4477 17.4477 14 18 14C18.5523 14 19 14.4477 19 15V17H21C21.5523 17 22 17.4477 22 18C22 18.5523 21.5523 19 21 19H19V21C19 21.5523 18.5523 22 18 22C17.4477 22 17 21.5523 17 21V19H15C14.4477 19 14 18.5523 14 18C14 17.4477 14.4477 17 15 17H17V15Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Upload Images</div>\n </li>\n\n {/* <li\n class=\"px-4 pb-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n // this.captureScreen()\n // this.toggleBox()\n this.showMenu = !this.showMenu\n }}\n >\n <div class=\"mr-1 mt-px\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M12 9a3.75 3.75 0 1 0 0 7.5A3.75 3.75 0 0 0 12 9Z\"></path>\n <path\n fill-rule=\"evenodd\"\n d=\"M9.344 3.071a49.52 49.52 0 0 1 5.312 0c.967.052 1.83.585 2.332 1.39l.821 1.317c.24.383.645.643 1.11.71.386.054.77.113 1.152.177 1.432.239 2.429 1.493 2.429 2.909V18a3 3 0 0 1-3 3h-15a3 3 0 0 1-3-3V9.574c0-1.416.997-2.67 2.429-2.909.382-.064.766-.123 1.151-.178a1.56 1.56 0 0 0 1.11-.71l.822-1.315a2.942 2.942 0 0 1 2.332-1.39ZM6.75 12.75a5.25 5.25 0 1 1 10.5 0 5.25 5.25 0 0 1-10.5 0Zm12-1.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </div>\n <div>Capture</div>\n </li> */}\n </ul>\n </div>\n </div>\n )}\n <div class={`${this.isContent ? \"hidden\" : \"\"} textarea`}>\n <div id=\"previewContainer\"></div>\n {this.showTextarea && (\n <textarea\n class={`resize-none overflow-hidden text-ellipsis focus:outline-none w-full ${this.hideAllButtons ? \"hidden\" : \"\"}`}\n data-testid=\"user-input-textarea\"\n rows={this.rowCount}\n name=\"userMessage\"\n placeholder={this.botSettings?.botPlaceholderText ?? \"Ask me anything\"}\n // aria-labelledby=\"message-submit\"\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={_e => {\n this.adjustHeight()\n }}\n onKeyDown={e => {\n this.handleKeyDown(e)\n if (e.key === \"Enter\" && !e.shiftKey) {\n this.isOpened = true\n }\n }}\n ></textarea>\n )}\n </div>\n {this.botSettings.enableMic && (\n <label class={`absolute bottom-0 ${this.isContent ? \"hidden\" : \"\"} ${this.hideAllButtons ? \"w-full\" : \"right-8\"}`}>\n <audio-recorder\n component-type=\"bot\"\n onStartRecord={_ev => {\n // console.log(\"test\", ev)\n this.hideAllButtons = true\n }}\n onStopRecord={_ev => {\n this.hideAllButtons = false\n }}\n onSendTranscript={ev => {\n // console.log(\"ev\", ev)\n\n setTimeout(() => {\n // console.log(\"input\", this.inputEl)\n if (this.inputEl) {\n this.inputEl.value = ev.detail\n this.adjustHeight()\n this.showSubmit = true\n }\n }, 1000)\n }}\n style={{ width: this.hideAllButtons ? \"100%\" : \"10%\" }}\n ></audio-recorder>\n </label>\n )}\n <label class={`absolute right-0 bottom-0 ${this.isContent ? \"hidden\" : \"\"} ${this.hideAllButtons ? \"hidden\" : \"\"}`}>\n <button\n class=\"text-white transition rounded-full p-1.5 self-center btn-bg-color\"\n // class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-8 w-8\"\n tabindex=\"-1\"\n id=\"message-submit\"\n // type=\"submit\"\n onClick={e => {\n e.preventDefault()\n if ((!this.inputEl || this.inputEl.value.trim() === \"\") && this.imagesBase64List && this.imagesBase64List.length === 0) {\n return\n }\n this.isOpened = true\n // this.handleMessageSubmit(e)\n this.handleSend(this.inputEl?.value)\n }}\n >\n <i class=\"block ai-icon text-body1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" class=\"size-6\">\n <path\n fill-rule=\"evenodd\"\n d=\"M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </i>\n </button>\n </label>\n\n <button\n class={`${this.isContent && !this.isMinimized ? \"block\" : \"hidden\"} rounded-full isContent`}\n aria-label=\"Return to AI\"\n onClick={ev => {\n ev.preventDefault()\n this.isContent = false\n this.isOpened = true\n this.isExpanded = true\n }}\n >\n <div class=\"font-bold text-body2 text-white hidden md:flex pl-3 items-center\">\n Return to AI\n <i class=\"inline-block pl-3 ai-minimize-icon block wes-icon--loading text-body1 return-text-color\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.30775 9.15362H14.077C14.4231 9.15362 14.577 9.5767 14.3462 9.80747L10.6539 13.4998C10.4231 13.7305 10.4231 14.0767 10.6539 14.3075L11.5001 15.1536C11.7308 15.3844 12.077 15.3844 12.3077 15.1536L19.0385 8.38439C19.2693 8.15362 19.2693 7.80747 19.0385 7.5767L12.3077 0.845928C12.077 0.615159 11.7308 0.615159 11.5001 0.845928L10.6924 1.65362C10.4616 1.88439 10.4616 2.23054 10.6924 2.46131L14.3847 6.15362C14.6154 6.42285 14.4616 6.84593 14.1154 6.84593H1.34621C1.03852 6.84593 0.769287 7.0767 0.769287 7.38439V8.53824C0.769287 8.84593 1.00006 9.15362 1.30775 9.15362Z\"\n fill=\"white\"\n ></path>\n </svg>\n </i>\n </div>\n </button>\n </div>\n\n {this.isExpanded && !this.isOpened && <privacy-modal show={this.showPrivacy} message={this.botSettings.privacyTemplate}></privacy-modal>}\n </div>\n </fieldset>\n </form>\n {/* )} */}\n\n <div\n // slot=\"bot\"\n class=\"pointer-events-auto fixed right-7 whitespace-nowrap transition-transform duration-300 ease-in-out fab\"\n style={{\n opacity: this.isMinimized ? \"1\" : \"0\",\n transform: this.isMinimized ? \"translateX(0)\" : \"translateX(-100%)\",\n pointerEvents: this.isMinimized ? \"auto\" : \"none\",\n transformOrigin: \"50% 50% 0px\",\n }}\n onClick={() => {\n this.openChat()\n }}\n >\n {this.isBot && <slot name=\"bot\" />}\n {!this.isBot && (\n <button\n class=\"rounded-full flex cursor-pointer items-center pr-[14px] md:gap-x-3 focus:outline focus:outline-2 focus:outline-offset-2 focus:outline-blue-focused\"\n tabindex=\"0\"\n // onClick={() => {\n // this.openChat()\n // }}\n >\n {/* <div class=\"fixed bottom-4 left-4 flex items-center space-x-2 bg-gradient-to-r from-green-400 to-teal-500 text-white px-4 py-2 rounded-full shadow-lg\"> */}\n <div class=\"w-10 h-10 flex items-center justify-center bg-white rounded-full border relative\">\n {/* <div class=\"absolute bottom-[-2px] left-[3px] w-2 h-2 border-r-2 border-b-2 border-white rotate-45\"></div> */}\n {/* <svg class=\"w-5 h-5 text-gray-600\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12l2 2 4-4\"></path>\n </svg> */}\n {this.botSettings.botLaunchIcon && <img src={this.botSettings.botLaunchIcon} alt=\"bot icon\" class=\"w-8 h-8 rounded-lg\" />}\n\n {!this.botSettings.botLaunchIcon && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#2095ae\">\n <g stroke-width=\"0\"></g>\n <g stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g>\n {\" \"}\n <path\n d=\"M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z\"\n stroke=\"#2095ae\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></path>{\" \"}\n </g>\n </svg>\n )}\n </div>\n <span class=\"bot-name\">Ask {this.botSettings?.botName}</span>\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ai12z-bot.js","sourceRoot":"","sources":["../../../src/components/ai12z-bot/ai12z-bot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAgB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzH,OAAO,EAAE,EAAE,EAAU,MAAM,kBAAkB,CAAA;AAC7C,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,IAAI,MAAM,cAAc,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAA;AACtF,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EACf,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,sCAAsC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAiBlE,MAAM,OAAO,QAAQ;;QACX,YAAO,GAAW,kCAAkC,CAAA;QACpD,WAAM,GAAG;YACf,uCAAuC;YACvC,qDAAqD;YACrD,4CAA4C;YAC5C,yEAAyE;SAC1E,CAAA;QACO,0BAAqB,GAA0B,IAAI,qBAAqB,EAAE,CAAA;QAyD1E,gBAAW,GAAW,EAAE,CAAA;QACxB,aAAQ,GAAW,EAAE,CAAA;QAIrB,yBAAoB,GAAyC,IAAI,CAAA;QAIzE,qBAAgB,GAAG,EAAE,CAAA;QAqErB,cAAS,GAAG,CAAC,CAAC,EAAE;YACd,CAAC,CAAC,eAAe,EAAE,CAAA;YACnB,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAA;QAClC,CAAC,CAAA;QAmJD,iBAAY,GAAG,GAAG,EAAE;YAClB,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;YAChE,IAAI,WAAW,GAAG,EAAE,CAAA;YACpB,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;gBACxC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,IAAI,CAAC,SAAS,MAAK,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAA,CAAA,EAAA,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;YAChG,+CAA+C;QACjD,CAAC,CAAA;QAkxBD,iBAAY,GAAG,MAAM,CAAC,EAAE;YACtB,gDAAgD;YAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACpC,gDAAgD;YAChD,8CAA8C;YAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YAErD,qFAAqF;YACrF,mGAAmG;YACnG,4FAA4F;YAE5F,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;YAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;YACvF,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;YACjF,2EAA2E;YAC3E,iCAAiC;YACjC,4DAA4D;YAC5D,qBAAqB;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAA;YACnD,2DAA2D;YAC3D,2EAA2E;YAC3E,yCAAyC;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,CAAA;YACvE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;YACzC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;YACxB,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;YAC3C,MAAM,QAAQ,GAAG,wCAAwC,MAAM,CAAC,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,wCAAwC,MAAM,CAAC,OAAO,UAAU,CAAA;YAC7K,uCAAuC;YACvC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;YACxC,wBAAwB;YACxB,cAAc;YACd,mBAAmB;YACnB,qCAAqC;YACrC,0FAA0F;YAC1F,gBAAgB;YAChB,yCAAyC;YACzC,mBAAmB;YACnB,qBAAqB;YACrB,IAAI;YACJ,qCAAqC;YACrC,2BAA2B;YAE3B,oBAAoB;YACpB,iEAAiE;YACjE,sDAAsD;YACtD,oDAAoD;YACpD,WAAW;YACX,mGAAmG;YACnG,IAAI;YAEJ,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,sBAAsB;QACxB,CAAC,CAAA;QAED,iBAAY,GAAG,IAAI,CAAC,EAAE;;YACpB,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE;gBAChD,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,KAAK,EAAE,oCAAoC;gBACpD,QAAQ,EAAE,SAAS,EAAE,gCAAgC;gBACrD,OAAO,EAAE,EAAE,EAAE,yBAAyB;aACvC,CAAC,CAAA;YACF,IAAI,SAAS,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,0CAAE,MAAM,mCAAI,IAAI,CAAC,WAAW,CAAA;YAClE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;YAClC,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACjC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;YAClC,CAAC;YAED,IAAI,gBAAgB,CAAA;YACpB,IAAI,SAAS,EAAE,CAAC;gBACd,gBAAgB,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAA;YACvD,CAAC;YACD,oDAAoD;YACpD,IAAI,MAAM,GAAG,SAAS,CAAA;YAEtB,IAAI,CAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,IAAI,KAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChF,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;gBACpC,IAAI,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtC,MAAM,GAAG,WAAW,CAAA;gBACtB,CAAC;YACH,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,aAAa,GAAG,MAAM,CAAA;YAE1D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACpD,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;gBAC5B,OAAM;YACR,CAAC;YACD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YACxE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACpD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC3C,CAAC;YAED,IAAI,OAAO,CAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,0CAAE,MAAM,CAAA,IAAI,QAAQ,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC9F,IAAI,CAAC,kBAAkB,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,0CAAE,MAAM,mCAAI,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YACrF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,0CAAE,MAAM,mCAAI,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAA;YACjG,CAAC;YACD,iCAAiC;YACjC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAA;YAChC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3C,CAAC;YACD,MAAM,CAAC,0BAA0B,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO;gBACxD,OAAO,CAAC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;YAClD,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1C,CAAC,CAAA;QAmFD,sBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAa,EAAE,EAAE;YACvD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;YAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC,CAAA;QAwFD,kBAAa,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE;;YACpC,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAA;YAC1C,gEAAgE;YAEhE,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;YAC5E,8EAA8E;YAE9E,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,0BAA0B,WAAW,aAAa,CAAC,CAAA;gBACjE,OAAM;YACR,CAAC;YACD,IAAI,UAAU,GAAG,eAAe,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAA;YACtE,UAAU,GAAG,UAAU,GAAG,IAAI,CAAA;YAC9B,eAAe,CAAC,YAAY,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAA;YAE3D,2DAA2D;YAC3D,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;YACzC,iDAAiD;YACjD,eAAe,CAAC,SAAS,GAAG,IAAI,CAAA;QAClC,CAAC,CAAA;QAyOD,qBAAgB,GAAG,GAAG,EAAE;YACtB,kCAAkC;YAElC,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;YACjD,CAAC;YACD,iCAAiC;YACjC,oDAAoD;YACpD,wCAAwC;YACxC,oDAAoD;YACpD,WAAW;YACX,yCAAyC;YACzC,oDAAoD;YACpD,yBAAyB;YACzB,IAAI;QACN,CAAC,CAAA;QAED,eAAU,GAAG,QAAQ,CAAC,EAAE;YACtB,uCAAuC;YACvC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvE,OAAM;YACR,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;YAC/C,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;YAC1F,MAAM,UAAU,GAAG,QAAQ,CAAA;YAE3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAA;YACjC,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,UAAU,EAAE,CAAA;YACnB,CAAC;YACD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBACnE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;YAChC,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACzB,CAAC;YAED,2BAA2B;YAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;YACtB,MAAM,SAAS,GAAG,GAAG,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;YAEpF,kCAAkC;YAClC,IAAI,CAAC,QAAQ,GAAG;gBACd,GAAG,IAAI,CAAC,QAAQ;gBAChB;oBACE,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,IAAI;oBACZ,EAAE,EAAE,QAAQ,YAAY,EAAE,EAAE;oBAC5B,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,IAAI,CAAC,gBAAgB;oBAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;oBACnC,SAAS,EAAE,EAAE;oBACb,WAAW,EAAE,EAAE;iBAChB;gBACD;oBACE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAC9H,MAAM,EAAE,KAAK;oBACb,EAAE,EAAE,WAAW,YAAY,EAAE,EAAE;oBAC/B,SAAS,EAAE,EAAE;oBACb,MAAM,EAAE,EAAE;oBACV,cAAc,EAAE,IAAI,CAAC,cAAc;oBACnC,SAAS,EAAE,EAAE;oBACb,WAAW,EAAE,EAAE;iBAChB;aACF,CAAA;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,GAAG,oBAAoB,EAAE,CAAA;YACzC,CAAC;YAED,IAAI,CAAC,YAAY,EAAE,CAAA;YAEnB,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,cAAc,EAAE,CAAA;YACvB,CAAC,EAAE,GAAG,CAAC,CAAA;YACP,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;gBAC5F,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;gBACzC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC9D,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;oBACtF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;wBACvB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;oBACzB,CAAC;oBACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;gBACjB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,kBAAkB,EAAE,CAAA;oBACzB,IAAI,CAAC,YAAY,EAAE,CAAA;gBACrB,CAAC;YACH,CAAC;YACD,sBAAsB;YAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAA;YACpE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,SAAS,GAAG,EAAE,CAAA;YACvB,CAAC;YAED,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;YAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;YACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACvB,IAAI;QACN,CAAC,CAAA;QA2OD,oBAAe,GAAG,CAAC,EAAU,EAAQ,EAAE;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;YACxE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YACrC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YACzC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YACvC,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAC7C,CAAC,CAAA;QAGD,aAAQ,GAAG,CAAC,EAAU,EAAE,SAAiB,EAAQ,EAAE;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;YACpE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACnC,QAAQ,CAAC,SAAS,GAAG;;;;KAIpB,CAAA;YACD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;YACxB,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAA;YAChE,uEAAuE;QACzE,CAAC,CAAA;QAED,eAAU,GAAG,CAAC,EAAU,EAAE,SAAiB,EAAQ,EAAE;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;YACxE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YACvC,UAAU,CAAC,SAAS,GAAG;;;;KAItB,CAAA;YACD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;YACxB,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAC,KAAK,EAAE,CAAC,CAAC,EAAC,CAAC,CAAA;YACjE,wEAAwE;QAC1E,CAAC,CAAA;mCAt8DsC,qBAAqB;kCACrB,KAAK;wCACC,KAAK;uBAGP,GAAG,CAAC,QAAQ,IAAI,EAAE;wBACjB,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,4BAA4B;;;8BAEjD,EAAE;2BACZ,EAAE;2BACF,EAAE;2BAGX,EAAE;yBACT,IAAI;sBACE,KAAK;wBACH,KAAK;yBACL,SAAS;qBACb,OAAO;0BACD,KAAK;8BACD,KAAK;wBACX,KAAK;uBACN,IAAI,CAAC,yCAAyC;;2BAC1C,KAAK;iCAEC,IAAI;2BACV,KAAK;8BACH,EAAE;2BACL,EAAE;6BACH,EAAE;uBACyB,EAAE;4BAC3B,EAAE;wBAc5B,EAAE;+BAC2B,CAAC;0BACL,KAAK;;yBAEP,EAAE;wBACX,CAAC;qBACJ,KAAK;mCACS,EAAE;qBACR,EAAE;2BACJ,EAAE;0BAcH,KAAK;2BACK,KAAK;wBACjB,KAAK;yBACJ,KAAK;;yBAEL,KAAK;4BACO,KAAK,CAAC,yCAAyC;;2BAChD,KAAK,CAAC,yCAAyC;;0BAChD,KAAK,CAAC,mDAAmD;;;IAgExF,kBAAkB,CAAC,KAAkB;QACnC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;QAC9B,yBAAyB;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAA;QAChC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;IAGD,qBAAqB,CAAC,KAAkB;QACtC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;QAC9B,yBAAyB;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;IAGD,wBAAwB,CAAC,KAAkB;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;QACjD,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACtG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;QACzE,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAA;IAC3C,CAAC;IAGD,gBAAgB,CAAC,KAAkB;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;QAC9B,yBAAyB;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;IAC1B,CAAC;IAGD,eAAe,CAAC,MAAmB;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAGD,oBAAoB,CAAC,KAAkB;QACrC,KAAK,CAAC,eAAe,EAAE,CAAA;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED,kBAAkB,CAAC,KAAiB;QAClC,kDAAkD;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAA;QAE1C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzE,sDAAsD;YACtD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACxB,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACvB,CAAC;IACH,CAAC;IAED,eAAe,CAAC,OAAe;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;gBAC/C,MAAM,CAAC,GAAG,GAAG,kDAAkD,OAAO,EAAE,CAAA;gBACxE,MAAM,CAAC,EAAE,GAAG,kBAAkB,CAAA;gBAC9B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;gBAEnB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;oBACnB,OAAO,EAAE,CAAA;gBACX,CAAC,CAAA;gBAED,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE;oBACrB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAA;oBACrD,MAAM,CAAC,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC,CAAA;gBACzF,CAAC,CAAA;gBAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB;QACd,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAC,oBAAoB;QAC3C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAE,MAAc,CAAC,UAAU,EAAE,CAAC;YACjE,CAAC;YAAC,MAAc,CAAC,UAAU,GAAG,UAAU,CAAA;QAC1C,CAAC;QACD,2CAA2C;QAC3C,0BAA0B;QAC1B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACnE,YAAY;QACZ,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACtE,oBAAoB;QACpB,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QACrD,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAA,CAAC,gCAAgC;QACtF,YAAY,CAAC,MAAM,GAAG,GAAG,EAAE;YACzB,+BAA+B;YAC/B,kDAAkD;YAClD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YACzD,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,0BAA0B,CAAA,CAAC,gCAAgC;YACjG,gBAAgB,CAAC,MAAM,GAAG,GAAG,EAAE;gBAC7B,yDAAyD;YAC3D,CAAC,CAAA;YACD,gBAAgB,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE;gBAC/B,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;YAC7C,CAAC,CAAA;YACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;YAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;QAClD,CAAC,CAAA;QACD,YAAY,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE;YAC3B,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAA;QAC9C,CAAC,CAAA;QACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QAEvC,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QACrD,YAAY,CAAC,IAAI,GAAG;;KAEnB,CAAA;QACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAED,UAAU;QACR,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;YAChD,SAAS,CAAC,GAAG,GAAG,YAAY,CAAA;YAC5B,SAAS,CAAC,IAAI,GAAG,KAAK,CAAA;YACtB,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE;gBACxB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;YAC7C,CAAC,CAAA;YACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IAED,oBAAoB;QAClB,oDAAoD;QACpD,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAEzE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAE3D,4BAA4B;IAC9B,CAAC;IAcD,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,WAAoB;QACrD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,OAAO,CAAC,CAAA;IACzC,CAAC;IAGD,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;QACxE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAGD,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,WAAmB;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAC9B,CAAC;IAED,YAAY;QACV,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAA;QAClD,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACjE,CAAC;IAGD,KAAK,CAAC,OAAO,CAAC,WAAoB,KAAK;QACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACzB,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAa;;QAC9B,qCAAqC;QACrC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,KAAK,CAAC,CAAA;QAC3C,CAAC;QACD,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;QACD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAC7D,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAA;QACzC,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACvB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;YACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;YACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;YAC1D,0BAA0B;YAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;YACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACxB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAS;QACjC,mDAAmD;QACnD,IAAI,IAAI,CAAC,oBAAoB,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;YACjF,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAA;gBAC5D,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,sCAAsC;IAEtC,KAAK,CAAC,sBAAsB,CAAC,gBAA6C;QACxE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAA;IAC9C,CAAC;IACD,QAAQ,CAAC,WAAoB,KAAK;QAChC,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;QAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,IAAI,CAAC,cAAc,EAAE,CAAA;IACvB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,OAAe;QAC9D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;YAEnC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oBACvE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC1C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAA;gBACzE,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;YAC3F,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;YAE/E,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;YACzE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAC/D,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;YAC7C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,YAAoB,EAAE,QAAgB;QACvE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,QAAQ;gBACR,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,YAAY;aACpB,CAAA;YACD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC1D,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAA;gBAC1D,OAAO,IAAI,CAAA,CAAC,kBAAkB;YAChC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;gBACjF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;gBACrF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,uDAAuD,EAAE,GAAG,CAAC,CAAA;YAC3E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YACrE,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,yBAAyB;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QACjD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;IAED,IAAY,UAAU;QACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QACtB,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;YAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAA;QAC9D,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,wCAAwC;QACxC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACrD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAA;YACvB,iBAAiB;YACjB,mDAAmD;YACnD,IAAI;QACN,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,0BAA0B;QAC1B,mBAAmB;IACrB,CAAC;IAED,SAAS;QACP,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,KAAK;SAClB,CAAA;QAED,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,oCAAoC;gBACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAA,CAAC,iCAAiC;gBACtE,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACxF,sCAAsC;oBACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACzB,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;oBAC3B,IAAI,SAAS,GAAG,EAAE,CAAA;oBAClB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACxC,SAAS,GAAG,GAAG,IAAI,CAAC,OAAO,oBAAoB,IAAI,CAAC,WAAW,CAAC,KAAK,MAAM,CAAA;oBAC7E,CAAC;yBAAM,CAAC;wBACN,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAA;oBAC1C,CAAC;oBAED,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;oBAC7C,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;oBACxC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;oBACtC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBACnC,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;oBAC7C,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;oBACxC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,8BAA8B,CAAC,CAAA;oBAC1E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBACnC,CAAC;gBAED,IAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBAC5B,IAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;wBACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;oBACpD,CAAC;oBACD,IAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;wBACjD,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;wBAChD,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;wBAC9D,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;oBAC3C,CAAC;gBACH,CAAC;gBACD,mCAAmC;gBACnC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;oBACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;oBACxB,IAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,0CAAE,OAAO,EAAE,CAAC;wBACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;6BAC7C,IAAI,CAAC,QAAQ,CAAC,EAAE;4BACf,IAAI,QAAQ,EAAE,CAAC;gCACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;4BACxB,CAAC;wBACH,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACX,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;4BACpD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;wBACzB,CAAC,CAAC,CAAA;oBACN,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACzB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAA;gBACxC,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBACzC,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;oBAC7D,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAA;oBACzC,IAAI,CAAC,cAAc,EAAE,CAAA;gBACvB,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,EAAE,EAAE,CAAC;oBAChF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACzB,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;oBAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAA;oBAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;gBAC/C,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;oBAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAA;oBACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;oBACjD,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;oBAChD,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;oBACvD,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;gBAC3C,CAAC;gBACD,IAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;oBAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAA;oBAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA;gBACrC,CAAC;gBAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA,CAAC,uCAAuC;YAChE,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;QACxC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAEpC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAA;QACrC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,eAAe;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;QAChC,IAAI,cAAc,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QAC5C,6CAA6C;QAC7C,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,uBAAuB;gBACvB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;oBACtF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;oBACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAGD,iBAAiB,CAAC,SAAkB,EAAE,SAAkB;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAC/B,sCAAsC;QACtC,+DAA+D;QAC/D,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YACrF,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAA;YAChC,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YAChE,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,eAAe;QACb,OAAO;YACL,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,KAAK;YACb,EAAE,EAAE,WAAW,YAAY,EAAE,EAAE;YAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACpF,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;SAChB,CAAA;IACH,CAAC;IACD,WAAW,CAAC,QAAQ;QAClB,gFAAgF;QAChF,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;YAC1E,IAAI,cAAc,EAAE,CAAC;gBACnB,CAAC;gBAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAiB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YACnF,CAAC;YACD,8CAA8C;YAC9C,gCAAgC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI;;QACtC,2BAA2B;QAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAChC,IAAI,cAAc,CAAA;QAClB,IAAI,eAAe,CAAA;QAEnB,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,WAAW,0CAAE,QAAQ,CAAA;YAClD,eAAe,GAAG,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,CAAC,MAAM,CAAA;YAC/C,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAA,eAAe,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,CAAA;QAClE,CAAC;QAED,+EAA+E;QAC/E,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3E,IAAI,eAAe,EAAE,CAAC;YACpB,UAAU,CAAC,cAAc,CAAC,cAAc,EAAE,UAAU,KAAK;gBACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,OAAO,EAAE,CAAA,CAAC,sDAAsD;gBAClE,CAAC;gBACD,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;YACzD,CAAC,CAAC,CAAA;YACF,wCAAwC;YACxC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAA,CAAC,sBAAsB;YAClE,CAAC;YACD,eAAe,CAAC,SAAS,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7I,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAChD,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YAC7C,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;YACnC,CAAC,EAAE,IAAI,CAAC,CAAA;YACR,qDAAqD;YACrD,MAAM,IAAI,CAAC,oBAAoB,CAAC,eAA8B,CAAC,CAAA;YAE/D,yDAAyD;YACzD,QAAQ,CAAC,IAAI,GAAG,eAAe,CAAC,SAAS,CAAA;YAEzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,QAAQ;QACzB,iCAAiC;QAEjC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAA;QACxC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAA;QAC7E,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;;YACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YAClD,SAAS,CAAC,IAAI,GAAG,iBAAiB,CAAA;YAElC,oEAAoE;YACpE,IAAK,MAA4B,CAAC,GAAG,EAAE,CAAC;gBACtC,SAAS,CAAC,GAAG,GAAI,MAA4B,CAAC,GAAG,CAAA;YACnD,CAAC;iBAAM,CAAC;gBACN,qFAAqF;gBACrF,oFAAoF;gBACpF,+EAA+E;gBAC/E,SAAS,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAA;YACzC,CAAC;YACD,2DAA2D;YAC3D,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAClC,CAAC;YACD,MAAA,MAAM,CAAC,UAAU,0CAAE,WAAW,CAAC,MAAM,CAAC,CAAA;YAEtC,uDAAuD;YAEvD,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;gBACzF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAA;gBACpF,sCAAsC;gBACtC,sCAAsC;gBACtC,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;oBAChC,6CAA6C;oBAC7C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;4BAChC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;gCAC5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;4BAC3C,CAAC;wBACH,CAAC,CAAC,CAAA;oBACJ,CAAC;yBAAM,CAAC;wBACN,yCAAyC;wBACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;oBAC3C,CAAC;oBACD,4CAA4C;gBAC9C,CAAC;qBAAM,CAAC;oBACN,qCAAqC;oBACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QACF,mFAAmF;QACnF,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACpC,CAAC,EAAE,IAAI,CAAC,CAAA;IACV,CAAC;IAED,gBAAgB,CAAC,EAAE;QACjB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,UAAU,EAAE,CAAC;YACrE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;QAC9C,CAAC;QACD,wEAAwE;QACxE,+CAA+C;IACjD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI;;QAClC,2BAA2B;QAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAEhC,IAAI,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,0CAAE,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAA;YAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAA;QAC7D,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,wDAAwD;QACxD,MAAM,cAAc,GAAG,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAE7D,MAAM,cAAc,GAAG,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,0CAAE,MAAM,0CAAE,QAAQ,0CAAE,IAAI,CAAA;QAErE,+EAA+E;QAC/E,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3E,IAAI,eAAe,IAAI,cAAc,EAAE,CAAC;YACtC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;YAE3C,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YAEtC,IAAI,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,MAAM,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;gBAC5F,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBACzC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBACpC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC3C,CAAC;YAED,qDAAqD;YACrD,MAAM,IAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAA;YACtD,kDAAkD;YAClD,yDAAyD;YACzD,QAAQ,CAAC,IAAI,GAAG,eAAe,CAAC,SAAS,CAAA;YACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;IAEK,2BAA2B,CAAC,OAAoB;QACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,uCAAuC;YACvC,MAAM,WAAW,GAAG,GAAG,EAAE;gBACvB,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;gBAC1D,OAAO,EAAE,CAAA;YACX,CAAC,CAAA;YAED,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;YAEvD,oCAAoC;YACpC,MAAM,cAAc,GAAG,GAAG,EAAE;gBAC1B,sEAAsE;gBACtE,IAAI,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,MAAM,EAAE,CAAC;oBAC5D,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;oBAC1D,OAAO,EAAE,CAAA;oBACT,OAAM;gBACR,CAAC;gBACD,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;YACjC,CAAC,CAAA;YAED,oBAAoB;YACpB,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;YAE/B,oBAAoB;YACpB,UAAU,CAAC,GAAG,EAAE;gBACd,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;gBAC1D,OAAO,EAAE,CAAA;YACX,CAAC,EAAE,KAAK,CAAC,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC;IAGC,gEAAgE;IAChE,oBAAoB,CAAC,OAAoB,EAAE,UAAkB,IAAI;QAC/D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YAChD,MAAM,UAAU,GAAG,GAAG,EAAE;gBACpB,2CAA2C;gBAC3C,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7C,OAAO,EAAE,CAAC;oBACV,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;YAEF,IAAI,UAAU,EAAE;gBAAE,OAAO;YAEzB,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;gBACzC,IAAI,UAAU,EAAE,EAAE,CAAC;oBACjB,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;gBACxB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,0CAA0C;YAC1C,UAAU,CAAC,GAAG,EAAE;gBACd,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC,CAAC,iDAAiD;YAC9D,CAAC,EAAE,OAAO,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACC,wDAAwD;QACxD,cAAc;QACd,0BAA0B;QAC1B,KAAK;QAGL,gEAAgE;QAClE,KAAK;IACP,CAAC;IAED,iBAAiB;QACf,2DAA2D;QAC3D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA,CAAC,uCAAuC;QAChG,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE;YACpC,8BAA8B;YAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAA;YAC1C,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/C,8DAA8D;YAC9D,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;YAC5C,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAA;YAC9C,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAA;YACpD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;YACzC,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACvC,+CAA+C;gBAC/C,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;oBACzB,KAAK,MAAM;wBACT,IAAI,CAAC,WAAW,GAAG,gBAAgB,GAAG,YAAY,EAAE,CAAA;wBACpD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,IAAI,CAAC,WAAW,iBAAiB,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,CAAA;wBAClK,4HAA4H;wBAC5H,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA;wBAC/E,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;wBACzC,MAAK;oBACP,KAAK,UAAU,CAAC;oBAChB,KAAK,MAAM,CAAC;oBACZ,KAAK,UAAU;wBACb,uDAAuD;wBACvD,+CAA+C;wBAC/C,kCAAkC;wBAClC,8CAA8C;wBAC9C,8CAA8C;wBAC9C,mDAAmD;wBACnD,uBAAuB;wBACvB,4HAA4H;wBAC5H,aAAa;wBACb,8CAA8C;wBAC9C,kDAAkD;wBAClD,2CAA2C;wBAC3C,uDAAuD;wBACvD,yBAAyB;wBACzB,+BAA+B;wBAC/B,oFAAoF;wBACpF,mFAAmF;wBACnF,yFAAyF;wBACzF,YAAY;wBACZ,UAAU;wBACV,cAAc;wBACd,MAAM;wBACN,IAAI;wBACJ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;4BACrB,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;4BAC1C,SAAS,GAAG,UAAU,CAAC,MAAM,CAAA;4BAE7B,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;4BAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;4BACzC,MAAM,aAAa,GAAG,CAAC,UAAU,CAAC,CAAA;4BAElC,2BAA2B;4BAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gCAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;gCAC3C,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAA;gCACpC,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,IAAI,WAAW,YAAY,EAAE,EAAE,CAAA;gCAChE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;4BAClC,CAAC;4BAED,2BAA2B;4BAC3B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAA;4BAEpD,qDAAqD;4BACrD,qBAAqB,CAAC,GAAG,EAAE;gCACzB,UAAU,CAAC,GAAG,EAAE;oCACd,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;wCACpC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;oCAC5C,CAAC;yCAAM,CAAC;wCACN,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;oCACxC,CAAC;oCAED,0CAA0C;oCAC1C,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;oCACrC,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,EAAE,EAAE,CAAC;wCACrB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC,CAAA;wCACzE,MAAM,OAAO,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,aAAa,CAAC,UAAU,CAAgB,CAAA;wCACnE,IAAI,OAAO;4CAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;oCAC7C,CAAC;gCACH,CAAC,EAAE,CAAC,CAAC,CAAA;4BACP,CAAC,CAAC,CAAA;wBACJ,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAgB,CAAA;gBAClG,IAAI,iBAAiB,EAAE,CAAC;oBACtB,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;gBACxC,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA;gBAC/E,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC3C,CAAC;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACvB,IAAI,CAAC,cAAc,EAAE,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB,CAAC,WAAmB;QAClC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;QAExD,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1B,yBAAyB;YACzB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;YAC1D,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,uDAAuD;QACvD,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAA;IAC3B,CAAC;IAED,mBAAmB,CAAC,SAAS,EAAE,IAAI;;QACjC,MAAM,UAAU,GAAG;YACjB,EAAE,EAAE,IAAI,CAAC,YAAY;YACrB,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACpF,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,0CAAE,MAAM,mCAAI,IAAI,CAAC,WAAW,mCAAI,EAAE;YACnE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,GAAG,YAAY,EAAE,EAAE;YAC7B,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACzC,SAAS,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,mCAAI,IAAI;YAClC,MAAM,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,IAAI;SAC7B,CAAA;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9F,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,kBAAkB,CAAC,kBAA0B,EAAE;;QAC7C,IAAI,CAAC;YACH,mDAAmD;YACnD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;gBACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;gBACnB,OAAM;YACR,CAAC;YAED,IAAI,CAAC,SAAS,CAAC;gBACb,mBAAmB,EAAE,IAAI;aAC1B,CAAC,CAAA;YAEF,+CAA+C;YAC/C,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;YAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,oBAAoB,eAAe,2BAA2B,CAAC,CAAA;gBAC5E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;gBACnB,OAAM;YACR,CAAC;YAED,wDAAwD;YACxD,MAAM,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;YAErD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,uBAAuB;gBACvB,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBACnC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACxB,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;wBAC5B,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;wBACjD,OAAM;oBACR,CAAC;oBACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;gBAC5B,CAAC,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAChC,sBAAsB;YACxB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAA;YAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACrB,CAAC;IACH,CAAC;IAGD,uBAAuB,CAAC,SAAkB,EAAE,SAAkB;QAC5D,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACvC,CAAC,EAAE,IAAI,CAAC,CAAA;IACV,CAAC;IAED,gBAAgB,CAAC,KAAU,EAAE,WAAmB,EAAE;QAChD,IAAI,CAAC,KAAK;YAAE,OAAO,QAAQ,CAAA;QAE3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,WAAW,CAAA;QACf,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YACpD,4CAA4C;YAC5C,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAA;QACxC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAEvC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAA;QACnF,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAoHD,kBAAkB,CAAC,IAAS,EAAE,MAAM;;QAClC,MAAM,CAAC,YAAY,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,mCAAI,QAAQ,CAAA;QACpD,MAAM,CAAC,aAAa,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,mCAAI,YAAY,CAAA;QAC1D,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,8CAA8C;oBAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE;wBACrC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gCACrC,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAA;4BACnC,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,KAAK;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC5B,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;gBAC9D,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAA,CAAC,yCAAyC;oBAChH,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,OAAO,CAAC,IAAI,CAAC,2DAA2D,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;wBACpF,OAAM;oBACR,CAAC;oBAED,uFAAuF;oBACvF,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;oBAC3D,8BAA8B;oBAC9B,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;wBACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,uCAAuC;wBAChE,MAAM,IAAI,GAAG,IAAI,CAAA;wBACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;wBAC3B,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;4BAC3C,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;gCACzC,IAAI,CAAC;oCACH,+BAA+B;oCAC/B,4BAA4B;oCAC5B,QAAQ,QAAQ,EAAE,CAAC;wCACjB,KAAK,WAAW;4CACd,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,CAAA;4CACjC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;4CACtB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;4CACtB,MAAK;wCACP,KAAK,aAAa;4CAChB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,CAAA;4CACpC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;4CACzB,MAAK;wCAEP,KAAK,UAAU;4CACb,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;4CAEzD,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC;iDAC7B,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,aAAa;iDACvD,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA,CAAC,kCAAkC;4CAEzE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;4CAC1C,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;4CACzC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;4CAC1B,MAAK;oCACT,CAAC;gCACH,CAAC;gCAAC,OAAO,GAAG,EAAE,CAAC;oCACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAA;gCACnD,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,OAAO,CAAC,IAAI,CAAC,YAAY,QAAQ,oBAAoB,CAAC,CAAA;4BACxD,CAAC;wBACH,CAAC,CAAC,CAAA;wBACF,gFAAgF;oBAClF,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAOD,eAAe,CAAC,IAAU;QACxB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1B,MAAM,OAAO,GAA+B;YAC1C,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,IAAI;SACb,CAAA;QACD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC3D,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAE5C,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YACjD,OAAO,UAAU,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAA;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAE5D,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC7B,+CAA+C;gBAC/C,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAChC,oDAAoD;YACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC3B,iCAAiC;QACnC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAC1D,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,KAAK,EAAE,gBAAgB;YACvB,UAAU,EAAE,IAAI,CAAC,cAAc;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,gBAAgB;YACnC,IAAI,EAAE,WAAW,EAAE;SACpB,CAAA;QACD,yDAAyD;QACzD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;aAC3B,IAAI,CAAC,aAAa,CAAC,EAAE;YACpB,sCAAsC;YACtC,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;gBAChE,OAAM;YACR,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;YAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;gBACrE,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACxB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;gBAChC,CAAC;qBAAM,CAAC;oBACN,qCAAqC;gBACvC,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;gBACvB,IAAI,CAAC,YAAY,EAAE,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACjB,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAA;YACrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACN,CAAC;IAuBD,aAAa,CAAC,KAAe;QAC3B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAA;YACxD,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAK;QACvB,IAAI,OAAO,CAAA;QACX,IAAI,oBAAoB,GAAG,EAAE,CAAA;QAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC3D,+BAA+B;YAC/B,0EAA0E;YAC1E,OAAM;QACR,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;gBACnC,OAAM;YACR,CAAC;YACD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAElB,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;YAE/B,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;gBACnB,MAAM,qBAAqB,GAAgB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAA;gBAEhG,MAAM,WAAW,GAAG,QAAQ,QAAQ,WAAY,MAAM,CAAC,MAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;gBACxF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBACvC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAA;gBAE5C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;gBAC5C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;gBACvC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;gBAE3C,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;gBACzC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAgB,CAAC,CAAA;gBAChD,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;gBACxB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;gBAEzB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;gBACjD,UAAU,CAAC,WAAW,GAAG,GAAG,CAAA;gBAC5B,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBACxC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;gBAC/C,qBAAqB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBAEzC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBACvB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;gBAE9B,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK;oBAClC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;oBACzF,IAAI,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;oBAChD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;wBACf,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;oBACvC,CAAC;oBACD,MAAM,CAAC,MAAM,EAAE,CAAA;gBACjB,CAAC,CAAA;gBAED,kFAAkF;YACpF,CAAC,CAAA;YACD,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YAC7B,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAChC,CAAC,CAAA;YAED,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE;gBACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;YAC/C,CAAC,CAAA;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;QACpB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAC5D,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACjD,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,GAAW;QAC/B,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7B,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;gBAC7C,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;;;;OAKG;IACK,uBAAuB,CAAC,aAAoB,EAAE,eAAuB,CAAC,GAAG,IAAI,GAAG,IAAI;QAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE9C,mDAAmD;QACnD,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO,aAAa,CAAA;QACtB,CAAC;QAED,wDAAwD;QACxD,MAAM,mBAAmB,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;YACxC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;YACxC,OAAO,KAAK,GAAG,KAAK,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,IAAI,oBAAoB,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAA;QACnD,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAE5E,+DAA+D;QAC/D,OAAO,aAAa,GAAG,YAAY,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,oBAAoB,CAAC,KAAK,EAAE,CAAA;YAC5B,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAC1E,CAAC;QAED,mFAAmF;QACnF,IAAI,aAAa,GAAG,YAAY,EAAE,CAAC;YACjC,oBAAoB,GAAG,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBAC7D,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBAC/D,sDAAsD;oBACtD,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;gBAC1D,CAAC;gBACD,OAAO,YAAY,CAAA;YACrB,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAED,gBAAgB;;QACd,IAAI,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAEhD,qCAAqC;QACrC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,MAAK,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAA,CAAA,EAAA,CAAC,CAAA;YAC7I,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAC9C,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA,CAAC,gDAAgD;YAC1F,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,IAAI,CAAC;oBAChB,cAAc,EAAE,IAAI,CAAC,cAAc;oBACnC,SAAS,EAAE,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG;oBAChC,IAAI,EAAE,IAAI,IAAI,EAAE;oBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC;gBAChB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,SAAS,EAAE,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG;gBAChC,IAAI,EAAE,IAAI,IAAI,EAAE;gBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,wDAAwD;YACxD,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAA;YAElE,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAA;gBAE1E,kCAAkC;gBAClC,iDAAiD;gBACjD,6DAA6D;YAC/D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,kDAAkD;gBAClD,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBACxC,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA,CAAC,YAAY;oBAElG,IAAI,CAAC;wBACH,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAA;oBAC9E,CAAC;oBAAC,OAAO,WAAW,EAAE,CAAC;wBACrB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,WAAW,CAAC,CAAA;wBACpE,gDAAgD;wBAChD,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;QAC9B,wBAAwB;QACxB,qBAAqB;QACrB,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAChE,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;YACrD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,IAAI,CAAC,SAAS,MAAK,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAA,CAAA,EAAA,CAAC,CAAA;YAC5G,+DAA+D;YAC/D,yDAAyD;QAC3D,CAAC;IACH,CAAC;IAGD,aAAa,CAAC,EAAiB;;QAC7B,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YACvC,oCAAoC;YACpC,EAAE,CAAC,cAAc,EAAE,CAAA;YACnB,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,IAAI,GAAG,MAAM,IAAG,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;QACR,+BAA+B;QAC/B,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;YACxB,6BAA6B;YAC7B,0EAA0E;YAC1E,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;QAC5F,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;IACrC,CAAC;IA6GD,cAAc;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;QAChE,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,MAAM,CAAC;gBACf,GAAG,EAAE,SAAS,CAAC,YAAY;gBAC3B,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAGC,yCAAyC;IAC7C,KAAK,CAAC,SAAS,CAAC,GAAW;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,iBAAiB,IAAI,MAAM,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,CAAA;gBACjD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,MAAM,SAAS,GAAG,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAA,CAAC,sCAAsC;gBAC1F,SAAS,CAAC,IAAI,GAAG,OAAO,CAAA,CAAC,kDAAkD;gBAC3E,SAAS,CAAC,IAAI,GAAG,CAAC,CAAA;gBAClB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAA;gBACnB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;gBACvB,iBAAiB;gBACjB,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACzC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,wDAAwD,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,kBAAkB,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YAC9F,MAAM,SAAS,GAAG,YAAY,CAAC,kBAAkB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;YAC9E,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;YAE/C,2BAA2B;YAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE;gBAC/B,yBAAyB;gBACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACvB,CAAC,CAAA;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;gBACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;gBACzB,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAA;gBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,EAAE,CAAA,CAAC,0BAA0B;gBACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA,CAAC,yBAAyB;gBAClD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACvB,CAAC;QACH,CAAC;IACL,CAAC;IAED,eAAe;;QACb,OAAO,CACL,WAAK,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,WAAW,MAAK,OAAO,EAAE,MAAM,EAAE,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,WAAW,MAAK,MAAM,EAAE;YAC/J,WAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAC,KAAK,EAAC,EAAE,EAAC,QAAQ,EAAC,OAAO,EAAC,mBAAmB;gBACnI;oBACE,YAAM,CAAC,EAAC,kYAAkY,GAAG;oBAC7Y,YAAM,CAAC,EAAC,klBAAklB,GAAG,CAC3lB,CACA,CACF,CACP,CAAA;IACH,CAAC;IAED,cAAc,CAAC,EAAE;QACf,8BAA8B;QAC9B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;IAC/B,CAAC;IAED,UAAU,CAAC,CAAC;QACV,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACzB,CAAC;IACH,CAAC;IAED,cAAc;QACZ,mDAAmD;QACnD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA,CAAC,kBAAkB;QAC5C,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA,CAAC,sCAAsC;YAC/D,oDAAoD;QACtD,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC,qDAAqD;IAC9D,CAAC;IAED,kBAAkB;;QAChB,MAAM,qBAAqB,GAAG,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,KAAI,MAAM,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;QAChH;;;;;;;WAOG;QACH,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7E,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,CAAA;IAClD,CAAC;IACD,KAAK,CAAC,eAAe;;QACnB,MAAM,sBAAsB,GAAa,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,mCAAI,EAAE,CAAC,CAAA;QACvF,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;YAC7D,OAAM;QACR,CAAC;QACD,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,iBAAiB,GAAG,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAA;QACtF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAA;YACzF,OAAM;QACR,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;YACxD,IAAI,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,MAAK,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAA,CAAA,EAAA,CAAC,CAAA;YAC/I,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAA;YACpC,iBAAiB,GAAG;gBAClB,MAAM,EAAE,iBAAiB;gBACzB,MAAM,EAAE,IAAI,CAAC,SAAS;gBACtB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,cAAc,EAAE,cAAc;aAC/B,CAAA;YAED,IAAI,sBAAsB,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvB,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAA;oBACrC,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;oBAC/C,OAAM;gBACR,CAAC;gBACD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAA;YACrC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAA0B,EAAE,iBAAiB,CAAC,CAAA;gBACpH,YAAY,CAAC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;oBAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;oBACvB,IAAI,CAAC,mBAAmB,GAAG,oBAAoB,CAAA;gBACjD,CAAC,CAAC,CAAA;gBACF,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAU,EAAE,EAAE;oBAC5C,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAA;oBACrC,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;wBACtB,MAAM,kBAAkB,GAAgB,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;wBAC9F,IAAI,kBAAkB,EAAE,CAAC;4BACvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAgB,CAAA;4BAClG,IAAI,iBAAiB,EAAE,CAAC;gCACtB,gEAAgE;gCAChE,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAA;4BAC9D,CAAC;4BACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gCACjB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;4BACzB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAA;gBACF,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,MAAe,EAAE,EAAE;oBACpD,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAA;gBACxC,CAAC,CAAC,CAAA;gBACF,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,OAAgB,EAAE,EAAE;oBACrD,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAA;gBACvC,CAAC,CAAC,CAAA;gBACF,YAAY,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,OAAY,EAAE,EAAE;;oBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;oBACzE,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;wBAClF,IAAI,eAAe,EAAE,CAAC;4BACpB,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAA;4BAC1C,IAAI,UAAU,GAAG,eAAe,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAA;4BACtE,UAAU,GAAG,GAAG,UAAU,SAAS,UAAU,EAAE,CAAA;4BAC/C,eAAe,CAAC,YAAY,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAA;4BAE3D,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;4BACzC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;wBAC5C,CAAC;wBACD,UAAU,CAAC,GAAG,EAAE;4BACd,IAAI,CAAC,cAAc,EAAE,CAAA;wBACvB,CAAC,EAAE,EAAE,CAAC,CAAA;oBACR,CAAC;gBACH,CAAC,CAAC,CAAA;gBACF,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;oBAClC,eAAe,CAAC,qCAAqC,CAAC,CAAA;oBACtD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;oBACxB,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAA;oBACrC,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,CAAA;gBAClD,CAAC,CAAC,CAAA;gBACF,YAAY,CAAC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBAC1C,eAAe,CAAC,oCAAoC,CAAC,CAAA;oBACrD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;oBACxB,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAA;oBACrC,IAAI,CAAC,mBAAmB,GAAG,qBAAqB,CAAA;gBAClD,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,EAAE;gBAC3C,MAAM,kBAAkB,GAAgB,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC;oBACtF;wBACE,IAAI,EAAE,QAAQ;qBACf;iBACF,CAAC,CAAA;gBACF,IAAI,kBAAkB,EAAE,CAAC;oBACvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAgB,CAAA;oBAClG,IAAI,iBAAiB,EAAE,CAAC;wBACtB,gEAAgE;wBAChE,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAA;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC,CAAA;QACH,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,eAAe,CAAC,IAAY;QAC1B,SAAS,CAAC,SAAS;aAChB,KAAK,CAAC;YACL,IAAI,aAAa,CAAC;gBAChB,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACpD,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;aACvE,CAAC;SACH,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACT,gDAAgD;YAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA,CAAC,kCAAkC;YACrD,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA,CAAC,qCAAqC;YAC3D,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;IACN,CAAC;IAsCD,MAAM;;QAEJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CACL,EAAC,IAAI;gBACH,YAAM,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,gEAAkE,CAC7F,CACR,CAAA;QACH,CAAC;QACD,OAAO,CACL,eACG,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,CAC1D,WACE,KAAK,EAAE,mBAAmB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAClL,KAAK,EAAE;gBACL,mBAAmB,EAAE,cAAc,MAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,mCAAI,OAAO,KAAK,MAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,mCAAI,OAAO,OAAO;gBACvH,UAAU,EAAE,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,UAAU,mCAAI,MAAM;aACnD;YAED,WACE,KAAK,EAAE,eAAe,EACtB,IAAI,EAAC,QAAQ,gBACF,aAAa,EACxB,KAAK,EAAE;oBACL,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;oBAC3D,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;oBACrD,aAAa,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;iBACjE,GACI;YAEP,WACE,KAAK,EAAC,OAAO,iBACD,OAAO,iBACP,OAAO,EACnB,IAAI,EAAC,QAAQ,gBACF,MAAM,EACjB,QAAQ,EAAC,IAAI,EACb,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE;gBAE/I,WAAK,KAAK,EAAC,kIAAkI;oBAC3I,WAAK,KAAK,EAAC,qCAAqC;wBAC7C,IAAI,CAAC,kBAAkB,KAAI,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,0CAAE,SAAS,CAAA,IAAI,CACpE,uBAAiB,MAAM,EAAE,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,0CAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAA6B,GAAoB,CACrJ;wBACA,CAAC,IAAI,CAAC,WAAW,IAAI,CACpB,cACE,KAAK,EAAC,yKAAyK,EAC/K,QAAQ,EAAC,GAAG,gBACD,cAAc,mBACX,MAAM,mBACN,OAAO,mBACP,uBAAuB,EACrC,OAAO,EAAE,CAAC,CAAC,EAAE;gCACX,CAAC,CAAC,cAAc,EAAE,CAAA;gCAClB,CAAC,CAAC,eAAe,EAAE,CAAA;gCACnB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;4BACnB,CAAC;4BAED,SAAG,KAAK,EAAC,wDAAwD;gCAC/D,WAAK,OAAO,EAAC,WAAW,EAAC,EAAE,EAAC,cAAc,eAAW,WAAW,EAAC,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,gBAAgB,EAAC,IAAI,EAAC,cAAc;oCAC5I,SAAG,EAAE,EAAC,mBAAmB,kBAAc,GAAG,GAAK;oCAC/C,SAAG,EAAE,EAAC,uBAAuB,oBAAgB,OAAO,qBAAiB,OAAO,GAAK;oCACjF,SAAG,EAAE,EAAC,qBAAqB;wCACzB,YAAM,EAAE,EAAC,SAAS,EAAC,CAAC,EAAC,yBAAyB,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAS,CACrG,CACA,CACJ,CACG,CACV;wBACA,IAAI,CAAC,WAAW,IAAI,CACnB,cACE,KAAK,EAAC,kBAAkB,EACxB,OAAO,EAAE,CAAC,CAAC,EAAE;gCACX,CAAC,CAAC,cAAc,EAAE,CAAA;gCAClB,CAAC,CAAC,eAAe,EAAE,CAAA;gCACnB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;gCACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;gCAC7B,yBAAyB;gCACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gCACpB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;gCACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;4BACxB,CAAC;4BAED;gCACE,WAAK,OAAO,EAAC,aAAa,eAAW,SAAS,EAAC,EAAE,EAAC,SAAS,EAAC,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI;oCACnH,SAAG,EAAE,EAAC,mBAAmB,kBAAc,GAAG,GAAK;oCAC/C,SAAG,EAAE,EAAC,uBAAuB,oBAAgB,OAAO,qBAAiB,OAAO,GAAK;oCACjF,SAAG,EAAE,EAAC,qBAAqB;wCACzB,gBAAe;wCACf,YAAM,CAAC,EAAC,8NAA8N,GAAQ,CAC5O,CACA,CACJ,CACG,CACV;wBAED,WACE,EAAE,EAAC,eAAe,EAClB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,6JAA6J,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAChN,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,IAE/B,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,OAAO;+BAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACxC,WAAK,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,IAAI;gCAC7D,cACE,KAAK,EAAC,sBAAsB,EAC5B,OAAO,EAAE,CAAC,CAAC,EAAE;wCACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;wCACjB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;wCACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;wCAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oCAC/B,CAAC,IAEA,MAAM,CAAC,KAAK,CACN,CACL,CACP,CAAC;4BACF,WAAK,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,IAAI;gCAC7D,cACE,KAAK,EAAC,sBAAsB,EAC5B,OAAO,EAAE,CAAC,CAAC,EAAE;wCACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;wCACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;wCACvB,wBAAwB;wCACxB,IAAI,CAAC,gBAAgB,EAAE,CAAA;wCACvB,qDAAqD;oCACvD,CAAC,uBAGM,CACL;4BACN,WAAK,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,IAAI;gCAC7D,cACE,KAAK,EAAC,sBAAsB,EAC5B,OAAO,EAAE,EAAE,CAAC,EAAE;wCACZ,EAAE,CAAC,cAAc,EAAE,CAAA;wCACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;wCACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;wCACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;wCACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;wCACjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;wCAC7B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;wCAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;wCACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oCAC1B,CAAC,uBAGM,CACL;4BACL,IAAI,CAAC,kBAAkB,IAAI,WAAK,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,IAAI;gCACxF,IAAI,CAAC,kBAAkB,EAAE;gCAC1B,cACE,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,4BAA4B,EAAE,EAC9I,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,EACxH,OAAO,EAAE,EAAE,CAAC,EAAE;wCACZ,EAAE,CAAC,cAAc,EAAE,CAAA;wCACnB,IAAI,CAAC,IAAI,CAAC,kBAAkB;4CAAE,OAAM;wCACpC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;4CACrB,IAAI,CAAC,kBAAkB,EAAE,CAAA;wCAC3B,CAAC;6CAAM,CAAC;4CACN,IAAI,CAAC,eAAe,EAAE,CAAA;wCACxB,CAAC;oCACH,CAAC,IAEA,IAAI,CAAC,mBAAmB,CAClB,CACL,CACF,CACF;oBACL,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,OAAO,KAAI,WAAK,GAAG,EAAE,MAAA,IAAI,CAAC,WAAW,0CAAE,OAAO,EAAE,KAAK,EAAC,oBAAoB,GAAO;oBACpG,UAAI,KAAK,EAAC,gCAAgC,IAAE,MAAA,IAAI,CAAC,WAAW,0CAAE,OAAO,CAAM;oBAC3E,WAAK,KAAK,EAAC,6BAA6B;wBACtC,cACE,KAAK,EAAC,wLAAwL,EAC9L,QAAQ,EAAC,GAAG,EACZ,OAAO,EAAE,GAAG,EAAE;gCACZ,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAA;gCAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;4BACxB,CAAC,gBACU,mCAAmC;4BAE9C,SAAG,KAAK,EAAC,+DAA+D;gCACrE,IAAI,CAAC,UAAU,IAAI,CAClB,WAAK,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,cAAc;oCAC7E,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,urBAAurB,GACnrB,CACJ,CACP;gCACA,CAAC,IAAI,CAAC,UAAU,IAAI,CACnB,WAAK,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,cAAc;oCAC7E,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,krBAAkrB,GAC9qB,CACJ,CACP,CACC,CACG;wBACT,cACE,KAAK,EAAC,yKAAyK,EAC/K,QAAQ,EAAC,GAAG,iBACA,gBAAgB,gBACjB,UAAU,EACrB,OAAO,EAAE,GAAG,EAAE;gCACZ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;gCACrB,yBAAyB;gCACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;gCAC9E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;gCAChF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;gCACvB,IAAI,CAAC,gBAAgB,EAAE,CAAA;gCACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;4BAChC,CAAC;4BAED,SAAG,KAAK,EAAC,uDAAuD;gCAC9D,WAAK,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,cAAc;oCAC7E,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,yIAAyI,GACrI,CACJ,CACJ,CACG,CACL,CACF;gBACN,WAAK,KAAK,EAAC,2BAA2B;oBACpC,WAAK,KAAK,EAAC,gCAAgC;wBACzC,WAAK,KAAK,EAAC,4FAA4F,EAAC,IAAI,EAAC,QAAQ,gBAAY,UAAU;4BAIxI,IAAI,CAAC,iBAAiB,IAAI,WAAK,KAAK,EAAC,oDAAoD,EAAC,SAAS,EAAE,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,OAAO,0CAAE,OAAO,GAAQ;4BAM/I,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gCACvB,CAAC,IAAI,CAAC,WAAW;gCACjB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;;oCACjC,sHAAsH;oCACtH,MAAM,KAAK,GAAG,EAAE,CAAA;oCAChB,OAAO,CACL,WACE,KAAK,EAAE;oBACf,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;oBAChC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,gCAAgC,EAC3D,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;wCAEzC,OAAO,CAAC,MAAM,IAAI,CACjB,WAAK,KAAK,EAAC,yBAAyB;4CAClC,0BACc,SAAS,EACrB,KAAK,EAAC,gGAAgG,EACtG,SAAS,EAAE,OAAO,CAAC,IAAI,IAEtB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,GAAG,CAAC,GAAG,CAAC,EAAE;gDAC1B,OAAO,WAAK,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,WAAW,EAAC,GAAG,EAAC,WAAW,GAAG,CAAA;4CAC5D,CAAC,CAAC,CACE;4CAEN,WAAK,KAAK,EAAC,yCAAyC;;gDAAO,OAAO,CAAC,SAAS,CAAO,CAC/E,CACP;wCACA,CAAC,OAAO,CAAC,MAAM,IAAI,CAClB,WAAK,KAAK,EAAC,eAAe;4CACxB,mBAAa,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,GAAgB,CACrI,CACP;wCACA,CAAC,OAAO,CAAC,MAAM,IAAI,CAClB,WAAK,KAAK,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;4CACjD,0BACc,SAAS,EACrB,KAAK,EAAE;oDACL,OAAO,EAAE,IAAI;oDACb,gBAAgB,EAAE,IAAI;oDACtB,cAAc,EAAE,IAAI;oDACpB,aAAa,EAAE,IAAI,CAAC,OAAO;oDAC3B,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO;oDAC3B,0GAA0G,EAAE,IAAI;iDACjH,EACD,SAAS,EAAE,OAAO,CAAC,IAAI,EACvB,EAAE,EAAE,OAAO,CAAC,EAAE,IAEb,OAAO,CAAC,IAAI,KAAK,EAAE,IAAI,CACtB,WAAK,KAAK,EAAC,mBAAmB,EAAC,EAAE,EAAC,SAAS;gDACzC,WAAK,KAAK,EAAC,8BAA8B;oDAEvC,WAAK,KAAK,EAAC,uBAAuB;wDAChC,WAAK,KAAK,EAAC,yBAAyB,GAAO;wDAC3C,WAAK,KAAK,EAAC,WAAW;4DACpB,WAAK,KAAK,EAAC,wBAAwB;gEACjC,WAAK,KAAK,EAAC,oCAAoC,GAAO;gEACtD,WAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD;4DACN,WAAK,KAAK,EAAC,yBAAyB,GAAO,CACvC,CACF,CACF,CACF,CACP,CACG;4CAEJ,OAAO,CAAC,IAAI,KAAG,EAAE,IAAI,OAAO,CAAC,QAAQ,IAAI,WAAK,KAAK,EAAC,kCAAkC;gDACrF,IAAI,CAAC,QAAQ,IAAI,CAChB,cACE,KAAK,EAAC,UAAU,EAChB,OAAO,EAAE,GAAG,EAAE;wDACZ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;wDACrB,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAA;wDAC/B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4DACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;4DACzB,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAA;4DACjC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,EAAE,CAAA,CAAC,0BAA0B;4DACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA,CAAC,yBAAyB;wDACpD,CAAC;wDACD,wBAAwB;oDAC1B,CAAC;oDAED,WAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,eAAe;wDAClH,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,qRAAqR,EACvR,IAAI,EAAC,cAAc,GACb,CACJ,CACC,CACV;gDACA,CAAC,IAAI,CAAC,QAAQ,IAAI,CACjB,cAAQ,KAAK,EAAC,UAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oDAClF,WAAK,KAAK,EAAC,SAAS,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;wDACrF,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,8wCAA8wC,EAChxC,IAAI,EAAC,cAAc,GACb,CACJ,CACC,CACV;gDACD,cAAQ,EAAE,EAAE,YAAY,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAC,gBAAgB;oDACjI,WAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,kBAAc,KAAK,EAAC,MAAM,EAAC,cAAc,EAAC,KAAK,EAAC,SAAS;wDAClH,8BACiB,OAAO,qBACN,OAAO,EACvB,CAAC,EAAC,qtBAAqtB,GACvtB,CACE,CACb;gDACT,cAAQ,EAAE,EAAE,cAAc,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAC,gBAAgB;oDACvI,WAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,kBAAc,KAAK,EAAC,MAAM,EAAC,cAAc,EAAC,KAAK,EAAC,SAAS;wDAChH,8BACiB,OAAO,qBACN,OAAO,EACvB,CAAC,EAAC,4vBAA4vB,GAC9vB,CACE,CACb;gDACT,cAAQ,KAAK,EAAC,UAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;oDACvE,CAAC,IAAI,CAAC,MAAM,IAAI,CACf,WAAK,KAAK,EAAC,SAAS,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;wDACrF,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,gbAAgb,EAClb,IAAI,EAAC,cAAc,GACb,CACJ,CACP;oDACA,IAAI,CAAC,MAAM,IAAI,CACd,WAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,SAAS;wDACrF,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,iUAAiU,EACnU,IAAI,EAAC,cAAc,GACb,CACJ,CACP,CACM;gDACT,cAAQ,KAAK,EAAC,UAAU;oDACpB,SACE,IAAI,EAAE,UAAU,KAAK,YAAY,kBAAkB,CAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,0CAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAC5I,MAAM,EAAC,QAAQ;wDAEf,WAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAC,MAAM,EAAC,cAAc,kBAAc,KAAK,EAAC,KAAK,EAAC,SAAS;4DAC9H,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,0KAA0K,EAC5K,IAAI,EAAC,cAAc,GACb;4DAAC,GAAG,CACR,CACJ,CACC,CACL;4CACN,WAAK,KAAK,EAAC,8BAA8B;gDACtC,IAAI,CAAC,WAAW,CAAC,OAAO;;gDAAK,OAAO,CAAC,SAAS,CAC3C,CACF,CACP,CACG,CACP,CAAA;gCACH,CAAC,CAAC;4BACH,IAAI,CAAC,WAAW,IAAI,CACnB,uBAAiB,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,MAAA,IAAI,CAAC,WAAW,0CAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,GAAoB,CAC9J;4BACD,WAAK,KAAK,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,GAAQ,CAC9D;wBAEN,wBAAe,QAAQ,EAAC,KAAK,EAAC,kFAAkF,GAAO,CACnH,CACF,CACF;YAGN,2BACc,YAAY,EACxB,KAAK,EAAE,gCAAgC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAC3F,IAAI,EAAC,QAAQ,gBACF,cAAc,iBACb,OAAO,EACnB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;gBAEhI,CAAC,IAAI,CAAC,QAAQ,IAAI,CACjB,WAAK,KAAK,EAAE,+EAA+E,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,iBAAiB;oBACvI,cACE,KAAK,EAAC,iIAAiI,EACvI,QAAQ,EAAC,GAAG,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE;4BACX,CAAC,CAAC,cAAc,EAAE,CAAA;4BAClB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;wBACtC,CAAC;wBAED,SAAG,KAAK,EAAC,wCAAwC;4BAC/C,WAAK,KAAK,EAAC,4BAA4B,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,OAAO,EAAC,aAAa,EAAC,IAAI,EAAC,MAAM;gCAC9F,YAAM,CAAC,EAAC,mFAAmF,GAAQ,CAC/F,CACJ,CACG,CACL,CACP;gBACD,gBAAU,KAAK,EAAE,+DAA+D,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,EAAE;oBAIpJ,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAClE,qBAAe,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,GAAkB,CACnG;oBACD,WAAK,KAAK,EAAC,qBAAqB;wBAC7B,IAAI,CAAC,wBAAwB,IAAI,CAChC,WAAK,KAAK,EAAC,8CAA8C;4BACvD,2BAAqC,CACjC,CACP;wBACD,WAAK,KAAK,EAAC,wEAAwE,2BAAuB,EAAE,mBAAe,OAAO;4BAC/H,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,CAC/B,4BACgB,MAAM,EACpB,KAAK,EAAE,+DAA+D,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,mBAAmB;gCAE9J,cACE,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,CAAC,CAAC,EAAE;wCACX,CAAC,CAAC,eAAe,EAAE,CAAA;wCACnB,CAAC,CAAC,cAAc,EAAE,CAAA;wCAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAA;oCAChC,CAAC;oCAED,SAAG,KAAK,EAAC,oCAAoC;wCAC3C,WAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI;4CACpG,YAAM,CAAC,EAAC,8HAA8H,GAAQ,CAC1I,CACJ,CACG;gCAET,WACE,KAAK,EAAE;cACnB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,wCAAwC,EAAE;oCAE5F,UAAI,KAAK,EAAC,WAAW,EAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;wCACtD,UACE,KAAK,EAAC,iDAAiD,EACvD,OAAO,EAAE,GAAG,EAAE;gDACZ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;gDACvB,sBAAsB;gDACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;4CACvB,CAAC;4CAED,aACE,IAAI,EAAC,MAAM,EACX,QAAQ,QACR,IAAI,EAAC,SAAS,EACd,EAAE,EAAC,WAAW,EACd,MAAM,EAAC,SAAS,EAChB,KAAK,EAAC,qBAAqB,EAC3B,QAAQ,EAAE,CAAC,MAAW,EAAE,EAAE;oDACxB,sBAAsB;oDACtB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gDACzC,CAAC,EACD,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAsB,CAAC,GACrD;4CACF,WAAK,KAAK,EAAC,MAAM;gDACf,WAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,kBAAkB;oDACrH,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,25DAA25D,EAC75D,IAAI,EAAC,cAAc,GACb,CACJ,CACF;4CACN,+BAAwB,CACrB,CAsBF,CACD,CACF,CACP;4BACD,WAAK,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW;gCACtD,WAAK,EAAE,EAAC,kBAAkB,GAAO;gCAChC,IAAI,CAAC,YAAY,IAAI,CACpB,gBACE,KAAK,EAAE,uEAAuE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,iBACvG,qBAAqB,EACjC,IAAI,EAAE,IAAI,CAAC,QAAQ,EACnB,IAAI,EAAC,aAAa,EAClB,WAAW,EAAE,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,kBAAkB,mCAAI,iBAAiB;oCACtE,mCAAmC;oCACnC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,EAAyB,CAAC,EACrD,OAAO,EAAE,EAAE,CAAC,EAAE;wCACZ,IAAI,CAAC,YAAY,EAAE,CAAA;oCACrB,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,EAAE;wCACb,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;wCACrB,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;4CACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;wCACtB,CAAC;oCACH,CAAC,GACS,CACb,CACG;4BACL,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAC7B,aAAO,KAAK,EAAE,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;gCAC/G,wCACiB,KAAK,EACpB,aAAa,EAAE,GAAG,CAAC,EAAE;wCACnB,0BAA0B;wCAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;oCAC5B,CAAC,EACD,YAAY,EAAE,GAAG,CAAC,EAAE;wCAClB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;oCAC7B,CAAC,EACD,gBAAgB,EAAE,EAAE,CAAC,EAAE;wCACrB,wBAAwB;wCAExB,UAAU,CAAC,GAAG,EAAE;4CACd,qCAAqC;4CACrC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gDACjB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,CAAA;gDAC9B,IAAI,CAAC,YAAY,EAAE,CAAA;gDACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;4CACxB,CAAC;wCACH,CAAC,EAAE,IAAI,CAAC,CAAA;oCACV,CAAC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,GACtC,CACZ,CACT;4BACD,aAAO,KAAK,EAAE,6BAA6B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;gCAChH,cACE,KAAK,EAAC,mEAAmE;oCACzE,kLAAkL;oCAClL,QAAQ,EAAC,IAAI,EACb,EAAE,EAAC,gBAAgB;oCACnB,gBAAgB;oCAChB,OAAO,EAAE,CAAC,CAAC,EAAE;;wCACX,CAAC,CAAC,cAAc,EAAE,CAAA;wCAClB,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4CACvH,OAAM;wCACR,CAAC;wCACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;wCACpB,8BAA8B;wCAC9B,IAAI,CAAC,UAAU,CAAC,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,CAAA;oCACtC,CAAC;oCAED,SAAG,KAAK,EAAC,0BAA0B;wCACjC,WAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAC,KAAK,EAAC,QAAQ;4CAC5F,yBACY,SAAS,EACnB,CAAC,EAAC,+JAA+J,eACvJ,SAAS,GACb,CACJ,CACJ,CACG,CACH;4BAER,cACE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,yBAAyB,gBAChF,cAAc,EACzB,OAAO,EAAE,EAAE,CAAC,EAAE;oCACZ,EAAE,CAAC,cAAc,EAAE,CAAA;oCACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;oCACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;oCACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gCACxB,CAAC;gCAED,WAAK,KAAK,EAAC,kEAAkE;;oCAE3E,SAAG,KAAK,EAAC,yFAAyF;wCAChG,WAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM;4CACrE,yBACY,SAAS,eACT,SAAS,EACnB,CAAC,EAAC,2jBAA2jB,EAC7jB,IAAI,EAAC,OAAO,GACN,CACJ,CACJ,CACA,CACC,CACL;wBAEL,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,qBAAe,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,GAAkB,CACpI,CACG,CACN;YAGP;gBACE,aAAa;gBACb,KAAK,EAAC,uGAAuG,EAC7G,KAAK,EAAE;oBACL,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;oBACrC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB;oBACnE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;oBACjD,eAAe,EAAE,aAAa;iBAC/B,EACD,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACjB,CAAC;gBAEA,IAAI,CAAC,KAAK,IAAI,YAAM,IAAI,EAAC,KAAK,GAAG;gBACjC,CAAC,IAAI,CAAC,KAAK,IAAI,CACd,cACE,KAAK,EAAC,qJAAqJ,EAC3J,QAAQ,EAAC,GAAG;oBAMZ,WAAK,KAAK,EAAC,kFAAkF;wBAK1F,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,WAAK,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,EAAC,UAAU,EAAC,KAAK,EAAC,oBAAoB,GAAG;wBAExH,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,CAClC,WAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAC,MAAM,EAAC,SAAS;4BACtF,yBAAgB,GAAG,GAAK;4BACxB,2BAAkB,OAAO,qBAAiB,OAAO,GAAK;4BACtD;gCACG,GAAG;gCACJ,YACE,CAAC,EAAC,mHAAmH,EACrH,MAAM,EAAC,SAAS,kBACH,GAAG,oBACD,OAAO,qBACN,OAAO,GACjB;gCAAC,GAAG,CACV,CACA,CACP,CACG;oBACN,YAAM,KAAK,EAAC,UAAU;gCAAM,MAAA,IAAI,CAAC,WAAW;2BAAE,OAAO,CAAQ,CACtD,CACV,CACG,CACF,CACP,CACG,CACP,CAAA;IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, State, Prop, Element, Watch, Listen, Event, EventEmitter, Method, Env, Host } from \"@stencil/core\"\nimport { io, Socket } from \"socket.io-client\"\nimport showdown from \"showdown\"\nimport hljs from \"highlight.js\"\nimport { LiveAgentEventHandler } from \"../../utils/liveagents/liveagent-event-handler\"\nimport {\n getEndpoint,\n generateUUID,\n updateButtonEvents,\n getConfig,\n verifyRecaptcha,\n getOrCreateVisitorId,\n getComponentByControlType,\n splitContent,\n getMetaInfo,\n getBroswerLang,\n getAllLanguagesInSurvey,\n checkStatus,\n sendFeedback,\n removeHtmlTags,\n getAudioContent,\n base64ToBlob,\n} from \"../../utils/utils\"\n// import Handlebars from \"handlebars\"\nimport { Handlebars } from \"../../utils/helpers\"\nimport { setBotElement } from \"../../utils/global-store\"\nimport { LiveAgentProviderType } from \"../../utils/liveagents/liveagent-factory-services\"\nimport { ChatEventBus } from \"../../utils/liveagents/chateventbus\"\n\n// import $ from \"jquery\"\n// import { Model } from \"survey-jquery\"\ndeclare global {\n interface Window {\n grecaptcha: {\n ready(callback: () => void): void\n execute(siteKey: string, options: { action: string }): Promise<string>\n }\n }\n}\n@Component({\n tag: \"ai12z-bot\",\n styleUrls: [\"./ai12z-bot.css\", \"../../global/tailwind.min.css\", \"../../global/survey.min.css\", \"./ai12z-chatbot.css\"],\n shadow: true,\n})\nexport class Ai12zBot {\n private cdnPath: string = \"https://cdn.ai12z.net/assets/bot\"\n private styles = [\n // `${this.cdnPath}/v1/survey.min.css`,\n // `https://unpkg.com/survey-core/defaultV2.min.css`,\n // `${this.cdnPath}/v1/survey-core.min.css`,\n `https://unpkg.com/@highlightjs/cdn-assets@11.9.0/styles/default.min.css`,\n ]\n private liveAgentEventHandler: LiveAgentEventHandler = new LiveAgentEventHandler()\n private audioElement: HTMLAudioElement\n @State() liveAgentButtonText: string = \"Talk to a liveagent\"\n @State() isLiveAgentEnabled: boolean = false\n @State() isTypingIndicatorVisible: boolean = false\n @Element() el: HTMLElement\n\n @Prop({ reflect: true }) dataKey: string = Env.DATA_KEY || \"\"\n @Prop({ reflect: true }) dataMode: string = Env.DATA_MODE || \"prod\" // \"local\", \"dev\", or \"prod\"\n @Prop({ reflect: true }) configId: string\n @Prop({ reflect: true }) dataAttributes: any = {}\n @Prop() excludeTags: Array<string> = []\n @Prop() includeTags: Array<string> = []\n\n\n @State() botSettings: any = {}\n @State() canRender = true\n @State() copied: boolean = false\n @State() isPlayed: boolean = false\n @State() voiceType: string = \"default\"\n @State() voice: string = \"en-US\"\n @State() showSubmit: boolean = false\n @State() hideAllButtons: boolean = false\n @State() showMenu: boolean = false\n @State() isProse: boolean = true // Flag to track if prose mode is enabled\n @State() isLiveAgent: boolean = false\n\n @State() showWelcomeScreen: boolean = true\n @State() showHistory: boolean = false\n @State() conversationId: string = \"\"\n @State() surveyDomId: string = \"\"\n @State() searchResults: any = {}\n @State() buttons: Array<{ id: string; label: string }> = []\n @State() currentDomId: string = \"\"\n @State() messages: {\n text: string\n isUser: boolean\n id: string\n timestamp: string\n images?: any[]\n conversationId: string\n formModel?: any\n surveyDomId?: string\n thumbsId?: string\n insightId?: string\n sender?: any\n showIcon?: boolean\n }[] = []\n @State() questionCounter: number = 0\n @State() isChatOpen: boolean = false\n @State() visitorID: string\n @State() timestamp: string = \"\"\n @State() rowCount = 1\n @State() isBot = false\n @State() conversationHistory = []\n @State() query: string = \"\"\n @State() scriptArray = []\n private customStyle: string = \"\"\n private customJS: string = \"\"\n private timer: NodeJS.Timeout\n private inputEl!: HTMLTextAreaElement\n private uploadElem: HTMLInputElement\n private dataOverrideFunction: ((data: any) => Promise<any>) | null = null\n menuV2Ref: HTMLElement\n plusIconRef: HTMLElement\n private socket: Socket\n imagesBase64List = []\n private liveAgentRef: HTMLLiveAgentChatElement\n\n /* new version of bot */\n @State() isAnimated = false\n @State() isMinimized: boolean = false\n @State() isOpened = false\n @State() isContent = false\n @State() isExpanded: boolean\n @State() isToggled = false\n @State() showTextarea: boolean = false // Changing this will trigger a re-render\n @State() showPrivacy: boolean = false // Changing this will trigger a re-render\n @State() isRendered: boolean = false // Flag to track if the component has been rendered\n @Event({\n eventName: \"messageSent\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageSent: EventEmitter\n @Event({\n eventName: \"messageReceived\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n messageReceived: EventEmitter\n\n @Event({\n eventName: \"close\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n close: EventEmitter\n\n @Event({\n eventName: \"open\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n open: EventEmitter\n\n @Event({\n eventName: \"minimize\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n minimize: EventEmitter\n\n @Event({\n eventName: \"errored\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n errored: EventEmitter\n\n @Event({\n eventName: \"formSubmitted\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n formSubmitted!: EventEmitter<any>\n\n\n toggleBot = e => {\n e.stopPropagation()\n this.isToggled = !this.isToggled\n }\n\n\n @Listen(\"buttonClick\")\n buttonClickHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n // this.hideInput = false\n this.query = event.detail.action\n this.handleSend(event.detail.label)\n }\n\n @Listen(\"sendQueryToBot\")\n sendQueryToBotHandler(event: CustomEvent) {\n this.showWelcomeScreen = false\n // this.hideInput = false\n this.query = event.detail\n this.handleSend(event.detail)\n }\n\n @Listen(\"deleteChatHistory\")\n deleteChatHistoryHandler(event: CustomEvent) {\n const chatHistory = this.getConversationHistory()\n const updatedHistory = chatHistory.filter(item => item.conversationId !== event.detail.conversationId)\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(updatedHistory))\n this.conversationHistory = updatedHistory\n }\n\n @Listen(\"chatClick\")\n chatClickHandler(event: CustomEvent) {\n this.messages = event.detail\n this.showWelcomeScreen = false\n // this.hideInput = false\n this.showHistory = false\n }\n\n @Listen(\"openChat\")\n openChatHandler(_event: CustomEvent) {\n this.isChatOpen = true\n }\n\n @Listen(\"formComplete\")\n formSubmittedHandler(event: CustomEvent) {\n event.stopPropagation()\n this.formSubmitted.emit(event.detail.data)\n }\n\n handleClickOutside(event: MouseEvent) {\n // Check if the clicked target is outside the menu\n const target = event.target as HTMLElement\n\n if (this.isToggled && this.menuV2Ref && !this.menuV2Ref.contains(target)) {\n // console.log(\"Clicked outside the menu, closing...\")\n this.isToggled = false\n }\n\n if (this.showMenu && this.plusIconRef && !this.plusIconRef.contains(target)) {\n this.showMenu = false\n }\n }\n\n loadRecaptchaV3(siteKey: string): Promise<void> {\n return new Promise((resolve, reject) => {\n if (!document.querySelector(\"#recaptcha-script\")) {\n const script = document.createElement(\"script\")\n script.src = `https://www.google.com/recaptcha/api.js?render=${siteKey}`\n script.id = \"recaptcha-script\"\n script.async = true\n\n script.onload = () => {\n resolve()\n }\n\n script.onerror = err => {\n console.error(\"Failed to load reCAPTCHA script\", err)\n reject(new Error(\"Failed to load reCAPTCHA script. Invalid siteKey or network error.\"))\n }\n\n document.head.appendChild(script)\n } else {\n resolve()\n }\n })\n }\n\n componentDidLoad() {\n setBotElement(this.el) // register globally\n if (typeof window !== \"undefined\" && !(window as any).Handlebars) {\n ;(window as any).Handlebars = Handlebars\n }\n // console.log(\"Bot Settings getAssetPath\")\n // this.updateScreenSize()\n window.addEventListener(\"resize\", this.updateScreenSize.bind(this))\n // debugger;\n document.addEventListener(\"click\", this.handleClickOutside.bind(this))\n // Load jQuery first\n const jQueryScript = document.createElement(\"script\")\n jQueryScript.src = this.cdnPath + \"/v1/jquery.min.js\" // Path relative to the www root\n jQueryScript.onload = () => {\n // console.log(\"jQuery loaded\")\n // Load the script that loads and exposes SurveyJS\n const loadSurveyScript = document.createElement(\"script\")\n loadSurveyScript.src = this.cdnPath + \"/v1/survey.jquery.min.js\" // Path relative to the www root\n loadSurveyScript.onload = () => {\n // console.log(\"SurveyJS loaded and SurveyModel exposed\")\n }\n loadSurveyScript.onerror = err => {\n console.error(\"Failed to load Forms:\", err)\n }\n document.head.appendChild(loadSurveyScript)\n this.el.shadowRoot.appendChild(loadSurveyScript)\n }\n jQueryScript.onerror = err => {\n console.error(\"Failed to load jQuery:\", err)\n }\n document.head.appendChild(jQueryScript)\n\n const ai12zHeading = document.createElement(\"script\")\n ai12zHeading.text = `\n var ai12zChat = window[\"ai12z\"] = {}\n `\n document.head.appendChild(ai12zHeading)\n this.el.shadowRoot.appendChild(ai12zHeading)\n this.el.shadowRoot.appendChild(jQueryScript)\n this.loadStyles()\n }\n\n loadStyles() {\n for (const style of this.styles) {\n const loadStyle = document.createElement(\"link\")\n loadStyle.rel = \"stylesheet\"\n loadStyle.href = style\n loadStyle.onerror = err => {\n console.error(\"Failed to load style:\", err)\n }\n this.el.shadowRoot.appendChild(loadStyle)\n }\n }\n\n disconnectedCallback() {\n // Remove event listener when component is destroyed\n document.removeEventListener(\"click\", this.handleClickOutside.bind(this))\n\n window.removeEventListener(\"resize\", this.updateScreenSize)\n\n // clearInterval(this.timer)\n }\n\n checkHistory = () => {\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n let chatHistory = []\n if (storedMessages) {\n chatHistory = JSON.parse(storedMessages)\n chatHistory = chatHistory.filter(item => item.projectId === this.botSettings?.pId)\n }\n this.showHistory = chatHistory.length > 0 && this.botSettings.botVersion === \"v1\" ? true : false\n // console.log(\"showHistory\", this.showHistory)\n }\n\n @Method()\n async sendMessage(message: string, displayText?: string) {\n this.query = message\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n\n this.handleSend(displayText ?? message)\n }\n\n @Method()\n async sendQuery(query: string) {\n console.warn(\"sendQuery mehtdod is deprecated, use sendMessage instead\")\n this.handleSend(query)\n }\n\n @Method()\n async sendJSON(jsonData: Object, displayText: string) {\n this.query = JSON.stringify(jsonData)\n if (!this.isChatOpen) {\n this.isChatOpen = true\n }\n this.handleSend(displayText)\n }\n\n setLocalData() {\n const botData = { qCounter: this.questionCounter }\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify(botData))\n }\n\n @Method()\n async openBot(expanded: boolean = false) {\n this.openChat(expanded)\n }\n\n @Method()\n async action(type, options?: any) {\n // this.isChatOpen = !this.isChatOpen\n if (type === \"open\") {\n this.openChat(options?.expanded ?? false)\n }\n if (type === \"minimize\" && this.isOpened) {\n this.minimizeChat()\n }\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.checkHistory()\n if (type === \"close\") {\n this.isChatOpen = false\n this.searchResults = {}\n this.surveyDomId = \"\"\n this.showWelcomeScreen = true\n this.showHistory = this.messages.length > 0 ? true : false\n // this.saveConversation()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.close.emit(\"close\")\n clearInterval(this.timer)\n }\n }\n\n async processDataOverride(data: any): Promise<any> {\n // Check if a custom override function has been set\n if (this.dataOverrideFunction && typeof this.dataOverrideFunction === \"function\") {\n try {\n return await this.dataOverrideFunction(data)\n } catch (error) {\n console.error(\"Error in custom processDataOverride:\", error)\n throw error\n }\n }\n\n // Default implementation - return the data as-is\n return data\n }\n\n // Method to set the override function\n @Method()\n async setProcessDataOverride(overrideFunction: (data: any) => Promise<any>): Promise<void> {\n this.dataOverrideFunction = overrideFunction\n }\n openChat(expanded: boolean = false) {\n // console.log(\"expanded ??\")\n this.isOpened = true\n this.isExpanded = expanded\n this.isMinimized = false\n this.isContent = false\n this.open.emit(\"open\")\n this.toggleTextarea()\n }\n\n private async executeRecaptcha(configId: string, siteKey: string): Promise<any> {\n try {\n await this.loadRecaptchaV3(siteKey)\n\n await new Promise<void>((resolve, reject) => {\n if (window.grecaptcha && typeof window.grecaptcha.ready === \"function\") {\n window.grecaptcha.ready(() => resolve())\n } else {\n reject(new Error(\"grecaptcha not available or ready() not a function\"))\n }\n })\n\n if (!window.grecaptcha || typeof window.grecaptcha.execute !== \"function\") {\n throw new Error(\"grecaptcha.execute is not available. Possibly due to invalid site key.\")\n }\n\n const token = await window.grecaptcha.execute(siteKey, { action: \"open_chat\" })\n\n if (!token) {\n throw new Error(\"reCAPTCHA token is empty. Possibly invalid site key.\")\n }\n\n const result = await this.verifyRecaptchaToken(token, configId)\n return result\n } catch (err) {\n console.error(\"executeRecaptcha error:\", err)\n throw err\n }\n }\n\n private async verifyRecaptchaToken(captchaToken: string, configId: string): Promise<any> {\n try {\n const payload = {\n apiKey: this.dataKey,\n configId,\n configType: \"bot\",\n token: captchaToken,\n }\n const data = await verifyRecaptcha(payload, this.dataMode)\n if (data) {\n console.log(\"reCAPTCHA verified successfully by backend!\")\n return data // Return the data\n } else {\n console.warn(\"Bot activity suspected. Verification failed.\", data[\"error-codes\"])\n this.errored.emit({ message: \"Bot verification failed\", codes: data[\"error-codes\"] })\n throw new Error(\"Bot verification failed: reCAPTCHA was unsuccessful\")\n }\n } catch (err) {\n console.error(\"Failed to contact backend for reCAPTCHA verification:\", err)\n this.errored.emit({ message: \"reCAPTCHA backend error\", error: err })\n throw err\n }\n }\n\n minimizeChat() {\n this.isOpened = false\n // this.isContent = false\n this.isContent = this.isExpanded ? true : false\n this.isMinimized = this.isExpanded ? false : true\n this.isAnimated = false\n this.updateScreenSize()\n this.minimize.emit(\"minimize\")\n }\n\n private get mainObject(): any {\n if (!window[\"ai12z\"]) {\n window[\"ai12z\"] = {}\n }\n return window[\"ai12z\"]\n }\n\n adjustHeight() {\n if (this.inputEl) {\n this.inputEl.style.height = \"auto\"\n this.inputEl.style.height = this.inputEl.scrollHeight + \"px\"\n }\n }\n\n connectedCallback() {\n //this.parseMyObjectProp(this.myObject);\n checkStatus(this.dataKey, this.dataMode).then(enable => {\n this.canRender = enable\n // if (!enable) {\n // console.log(\"ai12z canRender\", this.canRender)\n // }\n })\n this.configBot()\n }\n\n componentWillLoad() {\n this.checkCustomSlot()\n this.timestamp = this.formatTimestamp(new Date())\n this.updateScreenSize()\n // this.socketConnection()\n // this.configBot()\n }\n\n configBot() {\n const payload = {\n apiKey: this.dataKey,\n configId: this.configId,\n configType: \"bot\",\n }\n\n getConfig(payload, this.dataMode).then(data => {\n if (data) {\n // console.log(\"bot settings\", data)\n this.botSettings = data\n if (!this.botSettings.botVersion) {\n this.botSettings.botVersion = \"v1\" // Default to v1 if not specified\n }\n if (this.botSettings.botVersion === \"v2\" && !this.botSettings.isExpanded && !this.isBot) {\n // this.botSettings.imageUpload = true\n this.isMinimized = true\n }\n if (this.botSettings.theme) {\n let themeLink = \"\"\n if (this.botSettings.theme !== \"custom\") {\n themeLink = `${this.cdnPath}/v2/themes/theme-${this.botSettings.theme}.css`\n } else {\n themeLink = this.botSettings.customTheme\n }\n\n const linkEl = document.createElement(\"link\")\n linkEl.setAttribute(\"rel\", \"stylesheet\")\n linkEl.setAttribute(\"href\", themeLink)\n document.head.appendChild(linkEl)\n } else {\n const linkEl = document.createElement(\"link\")\n linkEl.setAttribute(\"rel\", \"stylesheet\")\n linkEl.setAttribute(\"href\", `${this.cdnPath}/v2/themes/theme-default.css`)\n document.head.appendChild(linkEl)\n }\n\n if(this.botSettings.welcome) {\n if(this.botSettings.welcome.styles) {\n this.insertStyles(this.botSettings.welcome.styles)\n }\n if(this.botSettings.welcome.scripts) {\n const scriptEl = document.createElement(\"script\")\n scriptEl.setAttribute(\"type\", \"text/javascript\")\n scriptEl.setAttribute(\"src\", this.botSettings.welcome.scripts)\n this.el.shadowRoot?.appendChild(scriptEl)\n }\n }\n // console.log(\"isbot\", this.isBot)\n if (this.botSettings.isExpanded && !this.isBot) {\n this.isExpanded = true\n this.isMinimized = false\n if (data?.v3?.siteKey) {\n this.executeRecaptcha(data._id, data.v3.siteKey)\n .then(response => {\n if (response) {\n this.isRendered = true\n }\n })\n .catch(err => {\n console.error(\"Recaptcha verification failed:\", err)\n this.isRendered = false\n })\n }\n } else {\n this.isMinimized = true\n }\n if (!this.botSettings.linkTarget) {\n this.botSettings.linkTarget = \"_blank\"\n }\n if (this.botSettings.botVersion === \"v2\") {\n const getVisitorKey = localStorage.getItem(`ai12z-visitorId`)\n this.visitorID = \"ai12z-\" + getVisitorKey\n this.toggleTextarea()\n }\n if (this.botSettings.privacyTemplate && this.botSettings.privacyTemplate !== \"\") {\n this.showPrivacy = true\n }\n if (this.botSettings.customCSS) {\n this.customStyle = this.botSettings.customCSS\n this.insertStyles(this.botSettings.customCSS)\n }\n if (this.botSettings.customJS) {\n this.customJS = this.botSettings.customJS\n const scriptEl = document.createElement(\"script\")\n scriptEl.setAttribute(\"type\", \"text/javascript\")\n scriptEl.setAttribute(\"src\", this.botSettings.customJS)\n this.el.shadowRoot?.appendChild(scriptEl)\n }\n if(this.botSettings.audioType) {\n this.voiceType = this.botSettings.audioType\n this.voice = this.botSettings.voice\n }\n\n this.isRendered = true // Set the flag to true after rendering\n }\n })\n }\n\n insertStyles(linkURL: string) {\n const linkEl = document.createElement(\"link\")\n linkEl.setAttribute(\"rel\", \"stylesheet\")\n linkEl.setAttribute(\"href\", linkURL)\n\n const shadowRoot = this.el.shadowRoot\n if (shadowRoot) {\n shadowRoot.appendChild(linkEl)\n }\n }\n\n checkCustomSlot() {\n const slot = this.el[\"children\"]\n let slotHasContent = slot && slot.length > 0\n // console.log(\"slotcontent\", slotHasContent)\n if (slotHasContent) {\n for (var i = 0; i < slot.length; i++) {\n // console.log(slot[i])\n if (slot[i].tagName.toLowerCase() === \"bot\" || slot[i].getAttribute(\"slot\") === \"bot\") {\n this.isBot = true\n this.isExpanded = false\n }\n }\n }\n }\n\n @Watch(\"currentDomId\")\n watchStateHandler(_newValue: boolean, _oldValue: boolean) {\n this.socket.off(\"response\")\n this.socket.off(\"end_response\")\n // console.log(\"currentDomId changed\")\n // console.log(\"questionCounter\", this.botSettings.maxQuestion)\n if (this.botSettings.maxQuestion === undefined || this.botSettings.maxQuestion === 0) {\n this.botSettings.maxQuestion = 0\n this.handleBotMessages()\n } else if (this.questionCounter <= this.botSettings.maxQuestion) {\n this.handleBotMessages()\n }\n }\n\n generateMessage() {\n return {\n text: \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n }\n }\n hideSpinner(chatData) {\n // Logic for hiding the spinner (assumed to return a Promise if async is needed)\n return new Promise(resolve => {\n const renderedBubble = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (renderedBubble) {\n ;(renderedBubble.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n }\n // Assume some async action here, then resolve\n // console.log(\"Spinner hidden\")\n resolve(true)\n })\n }\n\n async processTemplateData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n let handletemplate\n let currentResponse\n\n if (data.controlType === \"template\") {\n const currentTemplate = data.controlData?.template\n currentResponse = data.controlData?.data.source\n handletemplate = Handlebars.compile(currentTemplate[0]?.content)\n }\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer) {\n Handlebars.registerHelper(\"processArray\", function (array) {\n if (!Array.isArray(array)) {\n return \"\" // Return an empty string if the input is not an array\n }\n return new Handlebars.SafeString(JSON.stringify(array))\n })\n // console.log(\"data\", data.controlData)\n if (data.controlData && data.controlData.data) {\n data.controlData.data.msgId = chatData.id //`msg-${chatData.id}`\n }\n targetContainer.innerHTML = handletemplate({ msgId: `${chatData.id}`, source: currentResponse, llm: data.controlData.data.llm, isBot: true })\n targetContainer.classList.add(\"overflow-x-auto\")\n targetContainer.classList.add(\"scroll-nobar\")\n setTimeout(() => {\n this.renderTemplateData(chatData)\n }, 1000)\n // Step 4: Wait until the control element is rendered\n await this.waitForElementRender(targetContainer as HTMLElement)\n\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\n renderTemplateData(chatData) {\n // console.log(`#${chatData.id}`)\n\n if (!this.mainObject[`${chatData.id}`]) {\n this.mainObject[`${chatData.id}`] = {}\n }\n const scripts = this.el.shadowRoot.querySelectorAll(`#${chatData.id} script`)\n scripts.forEach(script => {\n const newScript = document.createElement(\"script\")\n newScript.type = \"text/javascript\"\n\n // If it's an external script (with `src`), copy the `src` attribute\n if ((script as HTMLScriptElement).src) {\n newScript.src = (script as HTMLScriptElement).src\n } else {\n // If it's inline, set the JavaScript code as the content of the new <script> element\n // newScript.innerHTML = `const source = ${JSON.stringify(chatData.data.source)};\\n`\n // newScript.innerHTML += `const llm = ${JSON.stringify(chatData.data.llm)};\\n`\n newScript.innerHTML += script.innerHTML\n }\n // Append the new script to the document body to execute it\n if (!newScript.src) {\n this.scriptArray.push(newScript)\n }\n script.parentNode?.removeChild(script)\n\n // Optionally, remove the old <script> tag from the DOM\n\n if (newScript.src && !this.el.shadowRoot.querySelector(`script[src=\"${newScript.src}\"]`)) {\n this.el.shadowRoot.appendChild(newScript)\n } else {\n const scriptDom = this.el.shadowRoot.querySelector(`script[type=\"text/javascript\"]`)\n // console.log(\"scriptDom\", scriptDom)\n // console.log(\"newScript\", newScript)\n if (scriptDom && !newScript.src) {\n // console.log(\"scriptDom\", this.scriptArray)\n if (this.scriptArray.length > 0) {\n this.scriptArray.forEach(script => {\n if (!script.src && script.innerHTML !== newScript.innerHTML) {\n this.el.shadowRoot.appendChild(newScript)\n }\n })\n } else {\n // console.log(\"ele\", this.el.shadowRoot)\n this.el.shadowRoot.appendChild(newScript)\n }\n // this.el.shadowRoot.appendChild(newScript)\n } else {\n // console.log(\"scriptDom not found\")\n this.el.shadowRoot.appendChild(newScript)\n }\n }\n })\n // Step 4: Ensure Google Charts is loaded, then call the `drawGoogleChart` function\n setTimeout(() => {\n this.initializeScript(chatData.id)\n }, 1000)\n }\n\n initializeScript(id) {\n if (typeof this.mainObject[`${id}`][\"onLoadCallback\"] === \"function\") {\n this.mainObject[`${id}`][\"onLoadCallback\"]()\n }\n // window[\"google\"]?.charts.load(\"current\", { packages: [\"corechart\"] })\n // window[\"google\"]?.charts.setOnLoadCallback()\n }\n\n async processChatData(chatData, data) {\n // Step 1: Hide the spinner\n await this.hideSpinner(chatData)\n\n if (data.controlData?.data?.source) {\n data.controlData.data.source.customCss = this.customStyle || \"\"\n data.controlData.data.source.customJs = this.customJS || \"\"\n }\n data.isExpanded = this.isExpanded\n // Step 2: Get the control element based on control type\n const controlElement = getComponentByControlType(data, \"bot\")\n\n const tmpControlType = data.controlData?.data?.source?.carousel?.type\n\n // Step 3: Append the control element if both it and the target container exist\n const targetContainer = this.el.shadowRoot.querySelector(`#${chatData.id}`)\n if (targetContainer && controlElement) {\n targetContainer.appendChild(controlElement)\n\n targetContainer[\"style\"].width = \"98%\"\n\n if (tmpControlType === \"custom\" || tmpControlType === \"list\" || tmpControlType === \"slider\") {\n targetContainer.classList.remove(\"p-2.5\")\n targetContainer.classList.add(\"p-0\")\n targetContainer.classList.add(\"md:p-2.5\")\n }\n\n // Step 4: Wait until the control element is rendered\n await this.waitForComponentFullyLoaded(controlElement)\n // console.log(\"targetContainer\", targetContainer)\n // Step 5: Retrieve the content and emit the updated data\n chatData.text = targetContainer.innerHTML\n this.messages = this.messages.map(item => (item.id === chatData.id ? chatData : item))\n }\n }\n\nprivate waitForComponentFullyLoaded(element: HTMLElement): Promise<void> {\n return new Promise((resolve) => {\n // Check if component emits ready event\n const handleReady = () => {\n element.removeEventListener('componentReady', handleReady)\n resolve()\n }\n\n element.addEventListener('componentReady', handleReady)\n\n // Fallback check for data attribute\n const checkAttribute = () => {\n // console.log(\"getattr\",element.getAttribute('data-component-ready'))\n if (element.getAttribute('data-component-ready') === 'true') {\n element.removeEventListener('componentReady', handleReady)\n resolve()\n return\n }\n setTimeout(checkAttribute, 100)\n }\n\n // Start both checks\n setTimeout(checkAttribute, 100)\n\n // Ultimate fallback\n setTimeout(() => {\n element.removeEventListener('componentReady', handleReady)\n resolve()\n }, 15000)\n })\n}\n\n\n // Helper function to detect when the target element is rendered\n waitForElementRender(element: HTMLElement, timeout: number = 2000): Promise<void> {\n return new Promise<void>((resolve, _reject) => {\n const checkReady = () => {\n // Customize your readiness check as needed\n if (element && element.childNodes.length > 0) {\n resolve();\n return true;\n }\n return false;\n };\n\n if (checkReady()) return;\n\n const observer = new MutationObserver(() => {\n if (checkReady()) {\n observer.disconnect();\n }\n });\n\n observer.observe(element, {\n childList: true,\n subtree: true,\n });\n\n // Fallback timeout to avoid infinite wait\n setTimeout(() => {\n observer.disconnect();\n resolve(); // or reject('Timeout') if you want to enforce it\n }, timeout);\n });\n // const observer = new MutationObserver(_mutations => {\n // resolve()\n // observer.disconnect()\n // })\n \n\n // observer.observe(element, { childList: true, subtree: true })\n // })\n }\n\n handleBotMessages() {\n // const domId = this.messages[this.messages.length - 1].id\n this.socket.on(\"response\", event => {\n this.handleMessage(event.data, `${this.currentDomId}`) // Use the unique ID to handle messages\n })\n this.socket.on(\"end_response\", data => {\n // console.log(\"end_response\")\n this.messageReceived.emit(data)\n const converter = new showdown.Converter()\n let finalHtml = converter.makeHtml(data.answer)\n // document.getElementById(\"messageId\").innerHTML = finalHtml;\n finalHtml = this.updateAnchorTags(finalHtml)\n finalHtml = updateButtonEvents(finalHtml).body\n this.buttons = updateButtonEvents(finalHtml).buttons\n this.searchResults = data\n this.conversationId = data.conversationId\n if (finalHtml.indexOf(\"[control\") > -1) {\n // console.log(\"controlType\", data.controlType)\n switch (data.controlType) {\n case \"form\":\n this.surveyDomId = \"surveyElement-\" + generateUUID()\n finalHtml = finalHtml.replace(RegExp(/\\[[^>]*]/gm), `<div id=${this.surveyDomId} style=\"width:${this.botSettings.botVersion === \"v1\" ? \"330px\" : \"100%\"}\"></div>`)\n // finalHtml = `<div id=${this.surveyDomId} style=\"width:${this.botSettings.botVersion === \"v1\" ? \"330px\" : \"100%\"}\"></div>`\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n break\n case \"carousel\":\n case \"list\":\n case \"template\":\n // if (data.controlType && data.controlType !== null) {\n // const newContent = splitContent(finalHtml)\n // finalHtml = newContent.before\n // this.updateConversations(finalHtml, data)\n // const newMessage = this.generateMessage()\n // this.messages = [...this.messages, newMessage]\n // setTimeout(() => {\n // data.controlType === \"template\" ? this.processTemplateData(newMessage, data) : this.processChatData(newMessage, data)\n // }, 2000)\n // if (newContent.after.trim().length > 0) {\n // const afterMessage = this.generateMessage()\n // afterMessage.text = newContent.after\n // this.messages = [...this.messages, afterMessage]\n // setTimeout(() => {\n // if (afterMessage.id) {\n // const bubbleEle = this.el.shadowRoot.querySelector(`#${afterMessage.id}`)\n // if (bubbleEle && (bubbleEle.querySelector(\"#spinner\") as HTMLElement)) {\n // ;(bubbleEle.querySelector(\"#spinner\") as HTMLElement).style.display = \"none\"\n // }\n // }\n // }, 500)\n // }\n // }\n if (data.controlType) {\n const newContent = splitContent(finalHtml)\n finalHtml = newContent.before\n\n this.updateConversations(finalHtml, data)\n\n const newMessage = this.generateMessage()\n const messagesToAdd = [newMessage]\n\n // Add after message if any\n if (newContent.after.trim()) {\n const afterMessage = this.generateMessage()\n afterMessage.text = newContent.after\n afterMessage.id = afterMessage.id || `chatbot-${generateUUID()}`\n messagesToAdd.push(afterMessage)\n }\n\n // 🔥 Single batched update\n this.messages = [...this.messages, ...messagesToAdd]\n\n // 🔁 Wait for DOM update (1 frame + microtask delay)\n requestAnimationFrame(() => {\n setTimeout(() => {\n if (data.controlType === \"template\") {\n this.processTemplateData(newMessage, data)\n } else {\n this.processChatData(newMessage, data)\n }\n\n // Hide spinner for afterMessage if exists\n const afterMessage = messagesToAdd[1]\n if (afterMessage?.id) {\n const bubbleEle = this.el.shadowRoot.querySelector(`#${afterMessage.id}`)\n const spinner = bubbleEle?.querySelector(\"#spinner\") as HTMLElement\n if (spinner) spinner.style.display = \"none\"\n }\n }, 0)\n })\n }\n }\n } else {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n currentDomElement.style.width = \"auto\"\n }\n this.el.shadowRoot.querySelector(`#${this.currentDomId}`).innerHTML = finalHtml\n this.updateConversations(finalHtml, data)\n }\n\n this.saveConversation()\n this.scrollToBottom()\n })\n }\n\n updateAnchorTags(htmlContent: string) {\n const parser = new DOMParser()\n const doc = parser.parseFromString(htmlContent, \"text/html\")\n const anchorTags = Array.from(doc.querySelectorAll(\"a\"))\n\n anchorTags.forEach(anchor => {\n // console.log(\"targtet\")\n anchor.setAttribute(\"target\", this.botSettings.linkTarget)\n anchor.classList.add(\"ai12z-link\")\n })\n\n // Update the htmlContent with the modified anchor tags\n return doc.body.innerHTML\n }\n\n updateConversations(finalHtml, data) {\n const updatedmsg = {\n id: this.currentDomId,\n text: finalHtml,\n isUser: false,\n timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n images: [],\n conversationId: this.conversationId,\n formModel: data.controlData?.data?.source ?? data.controlData ?? {},\n surveyDomId: this.surveyDomId,\n thumbsId: `${generateUUID()}`,\n showIcon: data.controlType ? false : true,\n insightId: data?.insightId ?? null,\n sender: data?.sender ?? null,\n }\n this.addEventListeners(`#${this.currentDomId}`)\n this.messages = this.messages.map(item => (item.id === this.currentDomId ? updatedmsg : item))\n requestAnimationFrame(() => this.checkHighlightcode(this.currentDomId))\n }\n\n checkHighlightcode(highlightcodeId: string = \"\"): void {\n try {\n // Guard clause: Ensure highlightcodeId is provided\n if (!highlightcodeId) {\n console.warn(\"highlightcodeId is empty\")\n this.isProse = true\n return\n }\n\n hljs.configure({\n ignoreUnescapedHTML: true,\n })\n\n // Get the target element by ID from shadow DOM\n const container = this.el.shadowRoot?.querySelector(`#${highlightcodeId}`)\n if (!container) {\n console.warn(`Element with id '${highlightcodeId}' not found in shadowRoot`)\n this.isProse = true\n return\n }\n\n // Select all <pre> elements inside the target container\n const preElements = container.querySelectorAll(\"pre\")\n\n if (preElements.length > 0) {\n // this.isProse = false\n container.classList.remove(\"prose\")\n preElements.forEach(pre => {\n if (pre.dataset.highlighted) {\n console.warn(\"Element previously highlighted...\")\n return\n }\n hljs.highlightElement(pre)\n })\n } else {\n container.classList.add(\"prose\")\n // this.isProse = true\n }\n } catch (error) {\n console.error(\"Error in highlightcode:\", error)\n this.isProse = true\n }\n }\n\n @Watch(\"surveyDomId\")\n watchSurveyDomIdHandler(_newValue: boolean, _oldValue: boolean) {\n setTimeout(() => {\n this.renderSurvey(this.searchResults)\n }, 1000)\n }\n\n resolveLocalized(value: any, fallback: string = \"\"): string {\n if (!value) return fallback\n\n if (typeof value === \"string\") {\n return value\n }\n\n let defaultLang\n if (this.dataAttributes && this.dataAttributes.lang) {\n // You can use this.dataAttributes.lang here\n defaultLang = this.dataAttributes.lang\n }\n\n console.log(\"defaultLang\", defaultLang)\n\n if (typeof value === \"object\") {\n return value[defaultLang] || value[getBroswerLang()] || value.default || fallback\n }\n\n return fallback\n }\n\n alertResults = sender => {\n // console.log(\"Survey results\", sender.keyName)\n this.formSubmitted.emit(sender.data)\n // console.log(\"survey results\", sender.jsonObj)\n // const results = JSON.stringify(sender.data)\n let results = JSON.parse(JSON.stringify(sender.data))\n\n // results.description = sender.jsonObj.description ? sender.jsonObj.description : \"\"\n // const completedHtml = sender.jsonObj.completedHtml ? sender.jsonObj.completedHtml : \"Thank You!\"\n // const completeText = sender.jsonObj.completeText ? sender.jsonObj.completeText : \"Submit\"\n\n results.description = this.resolveLocalized(sender.jsonObj.description, \"\")\n const completedHtml = this.resolveLocalized(sender.jsonObj.completedHtml, \"Thank You!\")\n const completeText = this.resolveLocalized(sender.jsonObj.completeText, \"Submit\")\n // Object.assign(results.data, { description: sender.jsonObj.description })\n // console.log(\"sender\", results)\n // const query = \"Here is the data you requested:\" + results\n // this.query = query\n const domId = sender.implementor.renderedElement.id\n // const surveyDataId = domId.replace(\"surveyElement-\", \"\")\n // sender.implementor.renderedElement.innerHTML = `<p><b>Thank you</b></p>`\n // console.log(\"messages\", this.messages)\n const idx = this.messages.findIndex(item => item.surveyDomId === domId)\n this.currentDomId = this.messages[idx].id\n this.surveyDomId = domId\n this.updateConversations(completedHtml, {})\n const jsonData = `This JSON is from a form submission [${sender.keyName}]: ${JSON.stringify(results, null, 2)}. There is no need to show the form [${sender.keyName}] again.`\n // this.sendJSON(results, completeText)\n this.sendMessage(jsonData, completeText)\n // const lastMessage = {\n // text: \"\",\n // isUser: false,\n // id: `chatbot-${generateUUID()}`,\n // timestamp: new Date().toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" }),\n // images: [],\n // conversationId: this.conversationId,\n // formModel: {},\n // surveyDomId: \"\",\n // }\n // this.currentDomId = lastMessage.id\n // this.surveyDomId = domId\n\n // if (idx === -1) {\n // // this.handleSubmit(null, query, \"survey-res\", false, null)\n // this.messages.splice(this.messages.length - 1, 1)\n // this.messages = [...this.messages, lastMessage]\n // } else {\n // this.messages = [...this.messages.slice(0, idx), lastMessage, ...this.messages.slice(idx + 1)]\n // }\n\n this.scrollToBottom()\n // this.invokeSocket()\n }\n\n renderSurvey = chat => {\n window[\"Survey\"].Serializer.addProperty(\"survey\", {\n name: \"keyName:string\",\n visible: false, // makes it appear in Survey Creator\n category: \"general\", // optional, groups the property\n default: \"\", // optional default value\n })\n let formModel = chat.controlData?.data?.source ?? chat.controlData\n if (typeof formModel === \"object\") {\n formModel.keyName = chat.keyName\n } else {\n formModel = JSON.parse(formModel)\n formModel.keyName = chat.keyName\n }\n\n let supportedLocales\n if (formModel) {\n supportedLocales = getAllLanguagesInSurvey(formModel)\n }\n // console.log(\"supportedLocales\", supportedLocales)\n let locale = \"default\"\n\n if (this.dataAttributes?.lang && supportedLocales.has(this.dataAttributes.lang)) {\n locale = this.dataAttributes.lang\n } else {\n const browserLang = getBroswerLang()\n if (supportedLocales.has(browserLang)) {\n locale = browserLang\n }\n }\n\n window[\"Survey\"].surveyLocalization.currentLocale = locale\n\n const survey = new window[\"Survey\"].Model(formModel)\n if (this.surveyDomId === \"\") {\n return\n }\n const domELe = this.el.shadowRoot?.querySelector(`#${this.surveyDomId}`)\n if (domELe) {\n window[\"jQuery\"](domELe).Survey({ model: survey })\n } else {\n console.error(\"Survey Element not found\")\n }\n\n if (typeof chat.controlData?.data?.source == \"object\" || typeof chat.controlData === \"object\") {\n this.hideCompleteButton(chat.controlData?.data?.source ?? chat.controlData, survey)\n } else {\n this.hideCompleteButton(JSON.parse(chat.controlData?.data?.source ?? chat.controlData), survey)\n }\n // survey.completeText = \"Submit\"\n survey.showCompletedPage = false\n if (chat.theme) {\n survey.applyTheme(JSON.parse(chat.theme))\n }\n survey.onAfterRenderQuestionInput.add(function (_, options) {\n options.htmlElement.name = options.question.name\n })\n survey.onComplete.add(this.alertResults)\n }\n\n hideCompleteButton(form: any, survey) {\n survey.completeText = form?.completeText ?? \"Submit\"\n survey.completedHTML = form?.completedHtml ?? \"Thank You!\"\n if (form && form.pages) {\n form.pages.forEach((page: any) => {\n if (page.elements) {\n // console.log(\"page.elements\", page.elements)\n page.elements.forEach((element: any) => {\n if (element.type === \"html\") {\n if (element.html.includes(\"<iframe\")) {\n survey.showCompleteButton = false\n }\n }\n })\n }\n })\n }\n }\n\n addEventListeners(msgId) {\n const container = this.el.shadowRoot.querySelector(msgId)\n if (container) {\n this.buttons.forEach(button => {\n const buttonElement = container.querySelector(`#${button.id}`)\n if (buttonElement) {\n const originalCall = buttonElement.getAttribute(\"data-original-click\") // Ensure type safety or handle undefined\n if (!originalCall) {\n console.warn(`originalClickHandler is not defined for button with id: ${button.id}`)\n return\n }\n\n // const match = originalCall.match(/^(\\w+)\\s*\\((.*)\\)$/) // extract name and arguments\n const match = originalCall.match(/^(\\w+)\\s*\\(([\\s\\S]*)\\)$/)\n // console.log(\"match\", match)\n if (match) {\n const funcName = match[1]\n const argsStr = match[2] // string of args, like \"'param', true\"\n const self = this\n const func = self[funcName]\n buttonElement.addEventListener(\"click\", () => {\n if (typeof this[funcName] === \"function\") {\n try {\n // console.log(\"args\", argsStr)\n // Evaluate arguments safely\n switch (funcName) {\n case \"sendQuery\":\n const args = eval(`[${argsStr}]`)\n args[0] = button.label\n func.apply(self, args)\n break\n case \"sendMessage\":\n const msgArgs = eval(`[${argsStr}]`)\n func.apply(self, msgArgs)\n break\n\n case \"sendJSON\":\n const tempArgs = argsStr.match(/^'(.*?)'\\s*,\\s*'(.*?)'$/)\n\n const rawObjectStr = tempArgs[1]\n .replace(/([{,])\\s*(\\w+)\\s*:/g, '$1\"$2\":') // quote keys\n .replace(/:\\s*'([^']*)'/g, ': \"$1\"') // convert single to double quotes\n\n const parsedObj = JSON.parse(rawObjectStr)\n const jsonArgs = [parsedObj, tempArgs[2]]\n func.apply(self, jsonArgs)\n break\n }\n } catch (err) {\n console.error(`Error invoking ${funcName}:`, err)\n }\n } else {\n console.warn(`Function ${funcName} not found on this`)\n }\n })\n // buttonElement.addEventListener(\"click\", this.handleButtonClick(button.label))\n }\n }\n })\n }\n }\n\n handleButtonClick = (label: string) => (_event: Event) => {\n this.inputEl.value = label\n this.handleSend(label)\n }\n\n formatTimestamp(date: Date) {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n const options: Intl.DateTimeFormatOptions = {\n weekday: \"long\",\n hour: \"numeric\",\n minute: \"numeric\",\n hour12: true,\n }\n const formatter = new Intl.DateTimeFormat(\"en-US\", options)\n const formattedDate = formatter.format(date)\n\n if (date.toDateString() === today.toDateString()) {\n return `Today, ${formattedDate.split(\" \").slice(1).join(\" \")}`\n } else {\n return formattedDate\n }\n }\n\n async socketConnection() {\n let a12z_EndPoint = getEndpoint(this.dataMode)\n this.socket = io(a12z_EndPoint, { transports: [\"polling\"] })\n\n await new Promise<void>(resolve => {\n this.socket.on(\"connect\", () => {\n // console.log(\"Connected to Socket.IO server\")\n resolve()\n })\n })\n\n this.socket.on(\"connect_error\", error => {\n this.errored.emit(error)\n console.error(\"Connection error:\", error)\n })\n\n this.socket.on(\"disconnect\", () => {\n // console.log(\"Disconnected from Socket.IO server\")\n this.socket.off(\"response\")\n // Handle disconnection if needed\n })\n }\n\n invokeSocket() {\n const data = {\n apiKey: this.dataKey,\n query: this.query !== \"\" ? this.query : this.inputEl.value,\n conversationId: this.conversationId,\n event: \"evaluate_query\",\n attributes: this.dataAttributes,\n excludeTags: this.excludeTags,\n includeTags: this.includeTags,\n base64Images: this.imagesBase64List,\n meta: getMetaInfo(),\n }\n // Call the override method to allow developer processing\n this.processDataOverride(data)\n .then(processedData => {\n // If null is returned, stop execution\n if (processedData === null || processedData === undefined) {\n console.log(\"Data processing returned null, stopping execution\")\n return\n }\n\n this.messageSent.emit(JSON.stringify(processedData))\n\n this.socket.emit(\"evaluate_query\", processedData, (error, _response) => {\n if (error) {\n this.errored.emit(error)\n console.error(\"Error:\", error)\n } else {\n // console.log(\"Response:\", response)\n }\n })\n\n if (this.inputEl) {\n this.inputEl.value = \"\"\n this.adjustHeight()\n }\n this.query = \"\"\n })\n .catch(error => {\n console.error(\"Error in processDataOverride:\", error)\n this.errored.emit(error)\n })\n }\n\n handleMessage = (data, aiMessageId) => {\n const converter = new showdown.Converter()\n // const aiMessageBubble = document.getElementById(aiMessageId);\n\n const aiMessageBubble = this.el.shadowRoot?.querySelector(`#${aiMessageId}`)\n // const aiMessageBubble = this.element.querySelector('.ai12z-suggest-answer')\n\n if (!aiMessageBubble) {\n console.error(`Message bubble with ID ${aiMessageId} not found.`)\n return\n }\n var bubbleText = aiMessageBubble.getAttribute(\"data-bubbleText\") || \"\"\n bubbleText = bubbleText + data\n aiMessageBubble.setAttribute(\"data-bubbleText\", bubbleText)\n\n // Assuming data is a string containing the message content\n let html = converter.makeHtml(bubbleText)\n // Append new content to the existing chat bubble\n aiMessageBubble.innerHTML = html\n }\n\n onInputChange(files: FileList) {\n if (files.length > 0) {\n this.uploadImage(files)\n } else {\n console.error(files.length === 0 || \"NO IMAGE UPLOADED\")\n return false\n }\n }\n\n private uploadImage(files) {\n let newFile\n let tempImagesBase64List = []\n if (files.length > 10 || this.imagesBase64List.length > 10) {\n // this.showErrorMessage = true\n // console.error('You can upload a maximum of 10 images once at a time.');\n return\n }\n for (var i = 0; i < files.length; i++) {\n const mimeType = files[i].type\n if (!mimeType.match(\"image.*\")) {\n console.log(\"file is not an image\")\n return\n }\n newFile = files[i]\n\n const reader = new FileReader()\n\n reader.onload = () => {\n const imagePreviewContainer: HTMLElement = this.el.shadowRoot.querySelector(\"#previewContainer\")\n\n const base64Image = `data:${mimeType};base64,${(reader.result as string).split(\",\")[1]}`\n this.imagesBase64List.push(base64Image)\n tempImagesBase64List = this.imagesBase64List\n\n const newDiv = document.createElement(\"div\")\n newDiv.classList.add(\"image-Container\")\n newDiv.classList.add(\"sc-ai12z-input-form\")\n\n const img = document.createElement(\"img\")\n img.setAttribute(\"src\", reader.result as string)\n img.style.width = \"70px\"\n img.style.height = \"50px\"\n\n const deleteSpan = document.createElement(\"span\")\n deleteSpan.textContent = \"x\"\n deleteSpan.classList.add(\"delete-image\")\n deleteSpan.classList.add(\"sc-ai12z-input-form\")\n imagePreviewContainer.appendChild(newDiv)\n\n newDiv.appendChild(img)\n newDiv.appendChild(deleteSpan)\n\n deleteSpan.onclick = function (event) {\n let imgSrc = event.target[\"previousSibling\"] ? event.target[\"previousSibling\"].src : null\n let index = tempImagesBase64List.indexOf(imgSrc)\n if (index > -1) {\n tempImagesBase64List.splice(index, 1)\n }\n newDiv.remove()\n }\n\n // console.log('uploading finished, emitting an image blob to the outside world');\n }\n reader.readAsDataURL(newFile)\n reader.onloadend = () => {\n console.log(\"upload finished\")\n }\n\n reader.onerror = err => {\n console.error(\"something went wrong...\", err)\n }\n }\n }\n\n getConversationHistory() {\n const storedData = localStorage.getItem(`${this.visitorID}`)\n return storedData ? JSON.parse(storedData) : []\n }\n\n /**\n * Calculate the size of a string in bytes (UTF-8 encoding)\n */\n private getStringSize(str: string): number {\n return new Blob([str]).size\n }\n\n /**\n * Get the current size of localStorage in bytes\n */\n private getLocalStorageSize(): number {\n let totalSize = 0\n for (const key in localStorage) {\n if (localStorage.hasOwnProperty(key)) {\n const value = localStorage.getItem(key) || \"\"\n totalSize += this.getStringSize(key + value)\n }\n }\n return totalSize\n }\n\n /**\n * Clean up old conversations based on date to free up storage space\n * @param conversations Array of conversations to clean up\n * @param maxSizeBytes Maximum size in bytes before cleanup\n * @returns Cleaned up conversations array\n */\n private cleanupOldConversations(conversations: any[], maxSizeBytes: number = 2 * 1024 * 1024): any[] {\n const currentSize = this.getLocalStorageSize()\n\n // If we're under the size limit, no cleanup needed\n if (currentSize <= maxSizeBytes) {\n return conversations\n }\n\n // Sort conversations by date (oldest first) for cleanup\n const sortedConversations = [...conversations].sort((a, b) => {\n const dateA = new Date(a.date).getTime()\n const dateB = new Date(b.date).getTime()\n return dateA - dateB\n })\n\n let cleanedConversations = [...sortedConversations]\n let estimatedSize = this.getStringSize(JSON.stringify(cleanedConversations))\n\n // Remove oldest conversations until we're under the size limit\n while (estimatedSize > maxSizeBytes && cleanedConversations.length > 1) {\n cleanedConversations.shift()\n estimatedSize = this.getStringSize(JSON.stringify(cleanedConversations))\n }\n\n // If we still have size issues, clean up old messages from remaining conversations\n if (estimatedSize > maxSizeBytes) {\n cleanedConversations = cleanedConversations.map(conversation => {\n if (conversation.messages && conversation.messages.length > 10) {\n // Keep only the last 10 messages in each conversation\n conversation.messages = conversation.messages.slice(-10)\n }\n return conversation\n })\n }\n\n return cleanedConversations\n }\n\n saveConversation() {\n let pastMessages = this.getConversationHistory()\n\n // Update or add current conversation\n if (pastMessages.length > 0) {\n let conversationExists = pastMessages.filter(item => item.conversationId === this.conversationId && item.projectId === this.botSettings?.pId)\n if (conversationExists.length > 0) {\n conversationExists[0].messages = this.messages\n conversationExists[0].date = new Date() // Update the date when conversation is modified\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n } else {\n pastMessages.push({\n conversationId: this.conversationId,\n projectId: this.botSettings?.pId,\n date: new Date(),\n messages: this.messages,\n })\n }\n\n if (this.messages.length > 0) {\n // Clean up old conversations if storage is getting full\n const cleanedMessages = this.cleanupOldConversations(pastMessages)\n\n try {\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(cleanedMessages))\n\n // Log storage usage for debugging\n // const storageSize = this.getLocalStorageSize()\n // const storageMB = (storageSize / (1024 * 1024)).toFixed(2)\n } catch (error) {\n // If storage is full, try more aggressive cleanup\n if (error.name === \"QuotaExceededError\") {\n const aggressiveCleanup = this.cleanupOldConversations(pastMessages, 1 * 1024 * 1024) // 1MB limit\n\n try {\n localStorage.setItem(`${this.visitorID}`, JSON.stringify(aggressiveCleanup))\n } catch (secondError) {\n console.error(\"AI12Z: Even aggressive cleanup failed:\", secondError)\n // Clear all conversation history as last resort\n localStorage.removeItem(`${this.visitorID}`)\n }\n }\n }\n }\n }\n\n loadConversation() {\n this.showWelcomeScreen = false\n // this.hideInput = true\n // this.messages = []\n const storedMessages = localStorage.getItem(`${this.visitorID}`)\n if (storedMessages) {\n this.conversationHistory = JSON.parse(storedMessages)\n this.conversationHistory = this.conversationHistory.filter(item => item.projectId === this.botSettings?.pId)\n // console.log(\"conversationHistory\", this.conversationHistory)\n // this.messages = chatHistory.map(item => ({ ...item }))\n }\n }\n\n @Listen(\"keydown\")\n handleKeyDown(ev: KeyboardEvent) {\n if (ev.key === \"Enter\" && !ev.shiftKey) {\n // console.log(\"down arrow pressed\")\n ev.preventDefault()\n if (this.inputEl?.value.trim().length > 0) {\n this.handleSend(this.inputEl.value)\n }\n }\n }\n\n startTimer() {\n // const startTime = Date.now()\n this.timer = setInterval(() => {\n this.questionCounter = 0\n // const endTime = Date.now()\n // console.log(`Timer executed after ${endTime - startTime} milliseconds`)\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n }, this.botSettings.autoResetTimer)\n }\n\n updateScreenSize = () => {\n // console.log(\"updateScreenSize\")\n\n if (window.innerWidth <= 767) {\n this.isMinimized = this.isOpened ? false : true\n }\n // if (window.innerWidth < 640) {\n // this.isMinimized = this.isOpened ? false : true\n // } else if (window.innerWidth < 768) {\n // this.isMinimized = this.isOpened ? false : true\n // } else {\n // console.log(\"content\", this.isContent)\n // this.isMinimized = this.isExpanded ? false : true\n // this.isExpanded = true\n // }\n }\n\n handleSend = eleValue => {\n // console.log(\"handle send\", eleValue)\n if (eleValue.trim().length === 0 && this.imagesBase64List.length === 0) {\n return\n }\n this.questionCounter = this.questionCounter + 1\n localStorage.setItem(`ai12z-bot-data`, JSON.stringify({ qCounter: this.questionCounter }))\n const inputValue = eleValue\n\n if (this.inputEl) {\n this.inputEl.value = inputValue\n }\n if (this.messages.length === 0 && this.botSettings.autoResetTimer > 0) {\n this.startTimer()\n }\n if (this.showWelcomeScreen && this.botSettings.botVersion === \"v1\") {\n this.showWelcomeScreen = false\n }\n\n if (this.messages.length === 0) {\n this.socketConnection()\n }\n\n // if (inputValue.trim()) {\n const now = new Date()\n const timestamp = now.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n\n // Add the new message to the chat\n this.messages = [\n ...this.messages,\n {\n text: inputValue,\n isUser: true,\n id: `user-${generateUUID()}`,\n timestamp: timestamp,\n images: this.imagesBase64List,\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n {\n text: this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion ? this.botSettings.msgLimit : \"\",\n isUser: false,\n id: `chatbot-${generateUUID()}`,\n timestamp: \"\",\n images: [],\n conversationId: this.conversationId,\n formModel: {},\n surveyDomId: \"\",\n },\n ]\n\n if (this.messages.length === 2) {\n this.visitorID = getOrCreateVisitorId()\n }\n\n this.checkHistory()\n\n setTimeout(() => {\n this.scrollToBottom()\n }, 100)\n if (this.botSettings.maxQuestion > 0 && this.questionCounter > this.botSettings.maxQuestion) {\n console.log(\"Max question limit reached\")\n this.inputEl.value = \"\"\n } else {\n this.currentDomId = this.messages[this.messages.length - 1].id\n if (this.isLiveAgent) {\n this.liveAgentEventHandler.sendMessage({ sessionId: \"\", message: this.inputEl.value })\n if (this.inputEl.value) {\n this.inputEl.value = \"\"\n }\n this.query = \"\"\n } else {\n this.checkLiveAgentMode()\n this.invokeSocket()\n }\n }\n // this.invokeSocket()\n\n const parent = this.el.shadowRoot.querySelector(\"#previewContainer\")\n if (parent) {\n parent.innerHTML = \"\"\n }\n\n this.imagesBase64List = []\n this.rowCount = 1\n this.showSubmit = false\n // }\n }\n\n scrollToBottom() {\n const container = this.el.shadowRoot.querySelector(\".chat-body\")\n if (container) {\n container.scroll({\n top: container.scrollHeight,\n behavior: \"smooth\",\n })\n }\n }\n\n\n // Function to trigger the text-to-speech\nasync speakText(msg: string) {\n if (this.voiceType === \"default\") {\n if (\"speechSynthesis\" in window) {\n const voices = window.speechSynthesis.getVoices()\n const voice = voices.find(voice => voice.name === this.voice)\n this.isPlayed = true\n const utterance = new SpeechSynthesisUtterance(msg) // Create a speech synthesis utterance\n utterance.lang = \"en-US\" // Set the language, you can change this as needed\n utterance.rate = 1\n utterance.pitch = 1\n utterance.voice = voice\n // Speak the text\n window.speechSynthesis.speak(utterance)\n } else {\n alert(\"Speech Synthesis API is not supported in your browser.\")\n }\n }\n \n if (this.voiceType === \"google\") {\n const base64audiocontent = await getAudioContent(this.dataKey, this.dataMode, msg, this.voice)\n const audioBlob = base64ToBlob(base64audiocontent.audio_content, \"audio/mpeg\")\n const audioUrl = URL.createObjectURL(audioBlob)\n \n // Create the audio element\n this.audioElement = new Audio(audioUrl)\n this.audioElement.onended = () => {\n // this.isPlaying = false\n this.isPlayed = false\n }\n if (this.audioElement.paused) {\n this.audioElement.play()\n this.isPlayed = true\n } else {\n this.audioElement.pause()\n this.audioElement.currentTime = 0\n this.audioElement.src = \"\" // Remove the audio source\n this.audioElement = null // Dereference the object\n this.isPlayed = false\n }\n }\n }\n\n defaultTemplate() {\n return (\n <div class={{ \"prose\": true, \"floating-icon\": !this.isBot, \"right\": this.botSettings?.botPosition === \"right\", \"left\": this.botSettings?.botPosition === \"left\" }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"white\" height=\"30px\" width=\"30px\" version=\"1.1\" id=\"Capa_1\" viewBox=\"0 0 60.019 60.019\">\n <g>\n <path d=\"M59.888,47.514l-3.839-11.518c2.056-3.615,3.14-7.716,3.14-11.893c0-13.286-10.809-24.095-24.095-24.095 c-8.242,0-15.824,4.223-20.219,11.007c3.089-1.291,6.477-2.007,10.029-2.007C39.294,9.01,51,20.716,51,35.104 c0,3.996-0.905,7.783-2.518,11.172l10.263,2.701c0.085,0.022,0.17,0.033,0.255,0.033c0.006,0,0.014-0.001,0.02,0 c0.553,0,1-0.448,1-1C60.019,47.829,59.972,47.66,59.888,47.514z\" />\n <path d=\"M24.905,11.01C11.619,11.01,0.81,21.819,0.81,35.104c0,4.176,1.084,8.277,3.14,11.893L0.051,58.693 c-0.116,0.349-0.032,0.732,0.219,1C0.462,59.898,0.727,60.01,1,60.01c0.085,0,0.17-0.011,0.255-0.033l12.788-3.365 c3.35,1.694,7.097,2.587,10.862,2.587C38.191,59.199,49,48.39,49,35.104S38.191,11.01,24.905,11.01z M41.246,26.799 c-0.152,0.083-0.317,0.123-0.479,0.123c-0.354,0-0.696-0.188-0.878-0.519c-2.795-5.097-8.115-8.679-13.883-9.349 c-0.549-0.063-0.941-0.56-0.878-1.108c0.063-0.548,0.558-0.942,1.108-0.878c6.401,0.743,12.304,4.718,15.406,10.373 C41.908,25.926,41.73,26.534,41.246,26.799z\" />\n </g>\n </svg>\n </div>\n )\n }\n\n handleFollowUp(_e) {\n // console.log(\"follow up\", e)\n this.messages = [...[]]\n this.conversationId = \"\"\n this.showWelcomeScreen = true\n }\n\n showButton(e) {\n if (e.target.value.length > 0) {\n this.showSubmit = true\n } else {\n this.showSubmit = false\n }\n }\n\n toggleTextarea() {\n // console.log(\"toggleTextarea\", this.showTextarea)\n this.showTextarea = false // Remove textarea\n setTimeout(() => {\n this.showTextarea = true // Re-add textarea after a short delay\n // console.log(\"toggleTextarea2\", this.showTextarea)\n }, 50) // Small delay ensures the element is fully unmounted\n }\n\n checkLiveAgentMode() {\n const isLiveAgentConfigured = this.botSettings?.liveagent && Object.keys(this.botSettings?.liveagent).length > 0\n /**\n * Check if live agent is enabled\n * If live agent is configured and there are more than one messages in the chat,\n * then enable live agent mode.\n * This is to ensure that live agent mode is only enabled after the user has interacted with the bot\n * and there is a conversation history to refer to.\n * This prevents the live agent from being connected immediately when the chat is opened.\n */\n this.isLiveAgentEnabled = isLiveAgentConfigured && this.messages.length > 1\n }\n disconnectLiveChat() {\n this.liveAgentEventHandler.disconnectLiveAgent()\n }\n async connectLiveChat() {\n const liveAgentProviderNames: string[] = Object.keys(this.botSettings?.liveagent ?? {})\n if (liveAgentProviderNames.length === 0) {\n console.error(\"No live agent provider found in bot settings\")\n return\n }\n if (liveAgentProviderNames.length > 1) {\n console.warn(\"Multiple live agent providers found, using the first one\")\n }\n let liveAgentSettings = this.botSettings?.liveagent[liveAgentProviderNames[0]] ?? null\n if (!liveAgentSettings) {\n console.error(\"No live agent settings found for the provider\", liveAgentProviderNames[0])\n return\n }\n if (liveAgentSettings) {\n const conversationExists = this.getConversationHistory()\n let messageHistory = conversationExists.filter(item => item.conversationId === this.conversationId && item.projectId === this.botSettings?.pId)\n this.isTypingIndicatorVisible = true\n liveAgentSettings = {\n config: liveAgentSettings,\n userId: this.visitorID,\n conversationId: this.conversationId,\n messageHistory: messageHistory,\n }\n\n if (liveAgentProviderNames[0] === \"liveagent\") {\n if (!this.liveAgentRef) {\n this.isTypingIndicatorVisible = false\n console.error(\"LiveAgent reference is not set\")\n return\n }\n await this.liveAgentRef.startChat()\n } else {\n this.liveAgentEventHandler.connectToLiveAgent(liveAgentProviderNames[0] as LiveAgentProviderType, liveAgentSettings)\n ChatEventBus.on(\"AGENT_SESSION_CREATED\", () => {\n this.isLiveAgent = true\n this.liveAgentButtonText = \"End liveagent chat\"\n })\n ChatEventBus.on(\"AGENT_EVENT\", (event: any) => {\n this.isTypingIndicatorVisible = false\n if (event?.length > 0) {\n const agentEventMessages: HTMLElement = this.liveAgentEventHandler.addAgentEventMessage(event)\n if (agentEventMessages) {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n // Append the agent event messages to the current message bubble\n currentDomElement.parentNode.appendChild(agentEventMessages)\n }\n if (this.inputEl) {\n this.inputEl.value = \"\"\n }\n }\n }\n })\n ChatEventBus.on(\"TYPING_STARTED\", (status: boolean) => {\n this.isTypingIndicatorVisible = status\n })\n ChatEventBus.on(\"TYPING_STOPPED\", (_status: boolean) => {\n this.isTypingIndicatorVisible = false\n })\n ChatEventBus.on(\"AGENT_MESSAGE\", (message: any) => {\n const retMessage = this.liveAgentEventHandler.handleAgentMessage(message)\n if (retMessage) {\n const aiMessageBubble = this.el.shadowRoot?.querySelector(`#${this.currentDomId}`)\n if (aiMessageBubble) {\n const converter = new showdown.Converter()\n let bubbleText = aiMessageBubble.getAttribute(\"data-bubbleText\") || \"\"\n bubbleText = `${bubbleText} \\n\\n ${retMessage}`\n aiMessageBubble.setAttribute(\"data-bubbleText\", bubbleText)\n\n let html = converter.makeHtml(bubbleText)\n this.updateConversations(html, message[0])\n }\n setTimeout(() => {\n this.scrollToBottom()\n }, 10)\n }\n })\n ChatEventBus.on(\"AGENT_ERROR\", () => {\n addEventMessage(\"Something went wrong with liveagent\")\n this.isLiveAgent = false\n this.isTypingIndicatorVisible = false\n this.liveAgentEventHandler.disconnectLiveAgent()\n })\n ChatEventBus.on(\"CONVERSATION_CLOSED\", () => {\n addEventMessage(\"Conversation closed with liveagent\")\n this.isLiveAgent = false\n this.isTypingIndicatorVisible = false\n this.liveAgentButtonText = \"Talk to a liveagent\"\n })\n }\n const addEventMessage = (_message: string) => {\n const agentEventMessages: HTMLElement = this.liveAgentEventHandler.addAgentEventMessage([\n {\n text: _message,\n },\n ])\n if (agentEventMessages) {\n const currentDomElement = this.el.shadowRoot.querySelector(`#${this.currentDomId}`) as HTMLElement\n if (currentDomElement) {\n // Append the agent event messages to the current message bubble\n currentDomElement.parentNode.appendChild(agentEventMessages)\n }\n }\n }\n }\n }\n\n // Function to copy the text to clipboard\n copyToClipboard(text: string) {\n navigator.clipboard\n .write([\n new ClipboardItem({\n \"text/html\": new Blob([text], { type: \"text/html\" }),\n \"text/plain\": new Blob([removeHtmlTags(text)], { type: \"text/plain\" }),\n }),\n ])\n .then(() => {\n // console.log(\"Text copied to clipboard\", text)\n this.copied = true // Set a flag to show copied state\n setTimeout(() => {\n this.copied = false // Reset copied state after 2 seconds\n }, 2000)\n })\n }\n\n\n disableFeedback = (id: string): void => {\n const thumbsUp = this.el.shadowRoot.querySelector(`#thumbsUp_${id}`)\n const thumbsDown = this.el.shadowRoot.querySelector(`#thumbsDown_${id}`)\n thumbsUp.classList.add(\"not-allowed\")\n thumbsUp.setAttribute(\"disabled\", \"true\")\n thumbsDown.classList.add(\"not-allowed\")\n thumbsDown.setAttribute(\"disabled\", \"true\")\n }\n\n \n thumbsUp = (id: string, insightId: string): void => {\n const thumbsUp = this.el.shadowRoot.querySelector(`#thumbsUp_${id}`)\n thumbsUp.classList.add(\"thumbs-up\")\n thumbsUp.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7.493 18.5c-.425 0-.82-.236-.975-.632A7.48 7.48 0 0 1 6 15.125c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75A.75.75 0 0 1 15 2a2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23h-.777ZM2.331 10.727a11.969 11.969 0 0 0-.831 4.398 12 12 0 0 0 .52 3.507C2.28 19.482 3.105 20 3.994 20H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 0 1-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227Z\" />\n </svg>\n `\n this.disableFeedback(id)\n sendFeedback(this.dataKey, this.dataMode, insightId, {value: 1})\n // this.feedback.emit({ insightId: insightId, feedback: { value: 1 } })\n }\n\n thumbsDown = (id: string, insightId: string): void => {\n const thumbsDown = this.el.shadowRoot.querySelector(`#thumbsDown_${id}`)\n thumbsDown.classList.add(\"thumbs-down\")\n thumbsDown.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M15.73 5.5h1.035A7.465 7.465 0 0 1 18 9.625a7.465 7.465 0 0 1-1.235 4.125h-.148c-.806 0-1.534.446-2.031 1.08a9.04 9.04 0 0 1-2.861 2.4c-.723.384-1.35.956-1.653 1.715a4.499 4.499 0 0 0-.322 1.672v.633A.75.75 0 0 1 9 22a2.25 2.25 0 0 1-2.25-2.25c0-1.152.26-2.243.723-3.218.266-.558-.107-1.282-.725-1.282H3.622c-1.026 0-1.945-.694-2.054-1.715A12.137 12.137 0 0 1 1.5 12.25c0-2.848.992-5.464 2.649-7.521C4.537 4.247 5.136 4 5.754 4H9.77a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23ZM21.669 14.023c.536-1.362.831-2.845.831-4.398 0-1.22-.182-2.398-.52-3.507-.26-.85-1.084-1.368-1.973-1.368H19.1c-.445 0-.72.498-.523.898.591 1.2.924 2.55.924 3.977a8.958 8.958 0 0 1-1.302 4.666c-.245.403.028.959.5.959h1.053c.832 0 1.612-.453 1.918-1.227Z\" />\n </svg>\n `\n this.disableFeedback(id)\n sendFeedback(this.dataKey, this.dataMode, insightId, {value: -1})\n // this.feedback.emit({ insightId: insightId, feedback: { value: -1 } })\n }\n render() {\n\n if (!this.canRender) {\n return (\n <Host>\n <span style={{ display: \"none\" }}>Failed to load ai12z bot control due to insufficient fund</span>\n </Host>\n )\n }\n return (\n <div>\n {this.botSettings.botVersion !== \"v1\" && this.isRendered && (\n <div\n class={`pt-0 show-grid ${this.isAnimated ? \"transition ease-out duration-300\" : \"\"} layout ${this.isOpened ? \"is-open\" : \"\"} ${this.isExpanded ? \"is-expanded\" : \"\"} search-flex`}\n style={{\n gridTemplateColumns: `0fr minmax(${this.botSettings.minWidth ?? \"340px\"}, ${this.botSettings.maxWidth ?? \"375px\"}) 0fr`,\n paddingTop: this.botSettings?.paddingTop ?? \"96px\",\n }}\n >\n <div\n class={`modal-overlay`}\n role=\"button\"\n aria-label=\"Close Modal\"\n style={{\n display: this.isExpanded && this.isOpened ? \"grid\" : \"none\",\n opacity: this.isExpanded && this.isOpened ? \"1\" : \"0\",\n pointerEvents: this.isExpanded && this.isOpened ? \"all\" : \"none\",\n }}\n ></div>\n {/* {this.isOpen && ( */}\n <div\n class=\"modal\"\n data-testid=\"modal\"\n aria-hidden=\"false\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n style={{ display: this.isOpened ? \"grid\" : \"none\", opacity: this.isOpened ? \"1\" : \"0\", transform: this.isOpened ? \"none\" : \"translateY(100%)\" }}\n >\n <div class=\"flex bg-white overflow-hidden border-b border-gray-90 border-solid md:pl-3 pl-4 justify-end md:rounded-t-xl items-center toolbar\">\n <div class=\"flex gap-1 toolbar-overflow-actions\">\n {this.isLiveAgentEnabled && this.botSettings?.liveagent?.liveagent && (\n <live-agent-chat config={this.botSettings?.liveagent?.liveagent} ref={el => (this.liveAgentRef = el) as HTMLLiveAgentChatElement}></live-agent-chat>\n )}\n {!this.showHistory && (\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6\"\n tabindex=\"0\"\n aria-label=\"options menu\"\n aria-haspopup=\"menu\"\n aria-expanded=\"false\"\n aria-controls=\"toolbar-dropdown-menu\"\n onClick={e => {\n e.preventDefault()\n e.stopPropagation()\n this.toggleBot(e)\n }}\n >\n <i class=\"block wes-icon--loading text-body2 modal-toolbar-icon \">\n <svg viewBox=\"0 0 24 24\" id=\"align-left-2\" data-name=\"Flat Line\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon flat-line\" fill=\"currentColor\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <path id=\"primary\" d=\"M3,12H17M3,6H21M3,18H13\" style={{ fill: \"none\", stroke: \"currentColor\" }}></path>\n </g>\n </svg>\n </i>\n </button>\n )}\n {this.showHistory && (\n <button\n class=\"w-6 h-6 back-btn\"\n onClick={e => {\n e.preventDefault()\n e.stopPropagation()\n this.showHistory = false\n this.showWelcomeScreen = true\n // this.hideInput = false\n this.isOpened = true\n this.isMinimized = false\n this.isAnimated = true\n }}\n >\n <i>\n <svg viewBox=\"0 0 200 200\" data-name=\"Layer 1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <title></title>\n <path d=\"M160,89.75H56l53-53a9.67,9.67,0,0,0,0-14,9.67,9.67,0,0,0-14,0l-56,56a30.18,30.18,0,0,0-8.5,18.5c0,1-.5,1.5-.5,2.5a6.34,6.34,0,0,0,.5,3,31.47,31.47,0,0,0,8.5,18.5l56,56a9.9,9.9,0,0,0,14-14l-52.5-53.5H160a10,10,0,0,0,0-20Z\"></path>\n </g>\n </svg>\n </i>\n </button>\n )}\n\n <div\n id=\"dropdown-menu\"\n role=\"menu\"\n class={`flex flex-col gap-y-1 grow-wrap absolute bg-white border-b border-gray-80 border-solid rounded-lg shadow-lg p-2 mt-4 min-w-[200px] left-5 overflow-hidden ${this.isToggled ? \"show\" : \"\"} dropdown-menu`}\n style={{ height: \"auto\" }}\n ref={el => (this.menuV2Ref = el)}\n >\n {this.botSettings?.buttons?.map(button => (\n <div class=\"w-full dropdown-item\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={e => {\n this.toggleBot(e)\n this.showHistory = false\n this.showWelcomeScreen = true\n this.handleSend(button.label)\n }}\n >\n {button.label}\n </button>\n </div>\n ))}\n <div class=\"w-full dropdown-item\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={e => {\n this.toggleBot(e)\n this.showHistory = true\n // this.hideInput = true\n this.loadConversation()\n // console.log(\"this.show\", this.conversationHistory)\n }}\n >\n View Recent chat\n </button>\n </div>\n <div class=\"w-full dropdown-item\" role=\"menuitem\" tabindex=\"-1\">\n <button\n class=\"dropdown-item-button\"\n onClick={ev => {\n ev.preventDefault()\n this.messages = [...[]]\n this.conversationId = \"\"\n this.isOpened = false\n this.isMinimized = this.isExpanded ? false : true\n this.showWelcomeScreen = true\n this.toggleBot(ev)\n this.showHistory = false\n this.close.emit(\"close\")\n }}\n >\n End conversation\n </button>\n </div>\n {this.isLiveAgentEnabled && <div class=\"w-full dropdown-item\" role=\"menuitem\" tabindex=\"-1\">\n {this.checkLiveAgentMode()}\n <button\n class={`dropdown-item-button ${!this.isLiveAgentEnabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"opacity-100 cursor-pointer\"}`}\n style={{ opacity: !this.isLiveAgentEnabled ? \"0.5\" : \"1\", cursor: !this.isLiveAgentEnabled ? \"not-allowed\" : \"pointer\" }}\n onClick={ev => {\n ev.preventDefault()\n if (!this.isLiveAgentEnabled) return\n if (this.isLiveAgent) {\n this.disconnectLiveChat()\n } else {\n this.connectLiveChat()\n }\n }}\n >\n {this.liveAgentButtonText}\n </button>\n </div>}\n </div>\n </div>\n {this.botSettings?.botLogo && <img src={this.botSettings?.botLogo} class=\"w-8 h-8 rounded-lg\"></img>}\n <h2 class=\"flex-1 pl-2 heading text-body1\">{this.botSettings?.botName}</h2>\n <div class=\"buttons flex gap-2 p-[10px]\">\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6 hidden md:flex\"\n tabindex=\"0\"\n onClick={() => {\n this.isExpanded = !this.isExpanded\n this.isAnimated = true\n }}\n aria-label=\"Collapse Agentforce to Side Panel\"\n >\n <i class=\"wes-block wes-icon--loading wes-text-body2 modal-toolbar-icon\">\n {this.isExpanded && (\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.215 14.7076H27.692C28.3074 14.7076 28.492 14.0307 27.9997 13.5383L24.9843 10.4614L30.5228 4.86149C30.8305 4.5538 30.8305 3.99995 30.5228 3.69226L28.2459 1.41536C27.9382 1.16921 27.4459 1.16921 27.0767 1.4769L21.5381 7.01532L18.3997 3.99995C17.9073 3.50765 17.2304 3.69226 17.2304 4.30764V13.7845C17.2304 14.2153 17.7843 14.7076 18.215 14.7076ZM13.7847 17.2308H4.30766C3.69227 17.2308 3.50765 17.9077 3.99996 18.4L7.01537 21.4769L1.47686 27.0769C1.16917 27.3846 1.16917 27.9384 1.47686 28.2461L3.75381 30.523C4.0615 30.8307 4.55381 30.8307 4.92305 30.523L10.5231 24.923L13.6616 27.9384C14.0924 28.4923 14.7693 28.3076 14.7693 27.6923V18.2769C14.7693 17.8462 14.2154 17.2308 13.7847 17.2308Z\"\n ></path>\n </svg>\n )}\n {!this.isExpanded && (\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M30.0308 1.23071H20.4923C19.8769 1.23071 19.6923 1.78455 20.1846 2.27686L23.2 5.29222L17.6615 10.8306C17.3538 11.1383 17.3538 11.6306 17.6615 11.9999L19.9384 14.2768C20.2461 14.5845 20.7384 14.5845 21.1077 14.2768L26.7077 8.67681L29.7231 11.6922C30.2154 12.1845 30.7692 11.9999 30.7692 11.3845V1.90763C30.7692 1.5384 30.4 1.23071 30.0308 1.23071ZM2.15379 30.7692H11.6307C12.2461 30.7692 12.4307 30.0923 11.9384 29.6L8.92303 26.5231L14.4615 20.9231C14.7692 20.6154 14.7692 20.0616 14.4615 19.7539L12.1846 17.477C11.8769 17.1693 11.3846 17.1693 11.0153 17.477L5.47687 23.0154L2.39995 20C1.8461 19.5077 1.23071 19.6923 1.23071 20.3077V29.7846C1.23071 30.2153 1.72302 30.7692 2.15379 30.7692Z\"\n ></path>\n </svg>\n )}\n </i>\n </button>\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-6 w-6\"\n tabindex=\"0\"\n data-testid=\"modal-minimize\"\n aria-label=\"Minimize\"\n onClick={() => {\n this.isOpened = false\n // this.isContent = false\n this.isContent = this.isExpanded && this.botSettings.isExpanded ? true : false\n this.isMinimized = this.isExpanded && this.botSettings.isExpanded ? false : true\n this.isAnimated = false\n this.updateScreenSize()\n this.minimize.emit(\"minimize\")\n }}\n >\n <i class=\"block wes-icon--loading text-body2 modal-toolbar-icon\">\n <svg viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M25 24.25C25 24.65 24.65 25 24.25 25H1.75C1.35 25 1 24.65 1 24.25V22.75C1 22.35 1.35 22 1.75 22H24.25C24.65 22 25 22.35 25 22.75V24.25Z\"\n ></path>\n </svg>\n </i>\n </button>\n </div>\n </div>\n <div class=\"flex-1 flex flex-col main\">\n <div class=\"h-full flex flex-col chat-body\">\n <div class=\"px-5 flex-[1_1_0] min-h-[calc(100%-1px)] flex flex-col gap-y-3 @md:px-3 messages-container\" role=\"region\" aria-label=\"messages\">\n {/* <h3 class=\"text-display5 font-avant-garde text-[#001E5B] @md:text-display4 text-center @md:px-6 pb-3 @md:pb-7 @md:pt-8 pt-5\">\n How can <strong class=\"text-[#0344D1]\">Agentforce</strong> help?\n </h3> */}\n {this.showWelcomeScreen && <div class=\"@md:px-6 pb-3 @md:pb-7 @md:pt-8 pt-5 text-display5\" innerHTML={this.botSettings?.welcome?.message}></div>}\n {/* <div class=\"message-item flex pb-3 gap-x-2 @md:gap-x-3 justify-center\" style={{ opacity: \"1\", transform: \"none\" }}>\n <div class=\"flex flex-col\">\n <div class=\"timestamp text-gray-30 text-body4 pt-2\">Agentforce joined • 12:45 PM</div>\n </div>\n </div> */}\n {this.messages.length > 0 &&\n !this.showHistory &&\n this.messages.map((message, idx) => {\n // const showAvatar = !message.isUser && (idx === this.messages.length - 1 || this.messages[idx + 1]?.isUser === true)\n const email = \"\"\n return (\n <div\n class={`flex pb-3 gap-x-2 @md:gap-x-3 \n ${message.isUser ? \"self-end\" : \"\"}\n ${message.isUser ? \"justify-end\" : \"\"} end-user-message message-item`}\n style={{ opacity: \"1\", transform: \"none\" }}\n >\n {message.isUser && (\n <div class=\"flex flex-col items-end\">\n <div\n data-testid=\"message\"\n class=\"break-words @md:text-body2 box-border @md:pr-4 flex-1 rounded-lg py-2 px-4 user-msg text-body3\"\n innerHTML={message.text}\n >\n {message?.images?.map(img => {\n return <img src={img} class=\"thumbnail\" alt=\"thumbnail\" />\n })}\n </div>\n\n <div class=\"text-gray-30 pt-2 text-right text-body4\">Sent {message.timestamp}</div>\n </div>\n )}\n {!message.isUser && (\n <div class=\"avatar-column\">\n <chat-avatar id={`la${message.id}`} senderType={message?.sender ? \"agent\" : \"bot\"} avatarUrl={this.botSettings?.botAvatar}></chat-avatar>\n </div>\n )}\n {!message.isUser && (\n <div class=\"flex flex-col\" style={{ width: \"100%\" }}> \n <div\n data-testid=\"message\"\n class={{\n \"prose\": true,\n \"transition-all\": true,\n \"duration-300\": true,\n \"opacity-100\": this.isProse,\n \"opacity-90\": !this.isProse,\n \"max-w-full break-words @md:text-body2 box-border @md:pr-4 flex-1 rounded-lg text-gray-30 pr-2 text-body3\": true,\n }}\n innerHTML={message.text}\n id={message.id}\n >\n {message.text === \"\" && (\n <div class=\"w-full rounded-md\" id=\"spinner\">\n <div class=\"flex animate-pulse space-x-4\">\n {/* <div class=\"size-10 rounded-full bg-gray-200\"></div> */}\n <div class=\"flex-1 space-y-3 py-1\">\n <div class=\"h-4 rounded bg-gray-200\"></div>\n <div class=\"space-y-3\">\n <div class=\"grid grid-cols-3 gap-4\">\n <div class=\"col-span-2 h-4 rounded bg-gray-200\"></div>\n <div class=\"col-span-1 h-4 rounded bg-gray-200\"></div>\n </div>\n <div class=\"h-4 rounded bg-gray-200\"></div>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n {/* 👍👎 THUMBS BUTTONS BELOW MESSAGE */}\n { message.text!==\"\" && message.showIcon && <div class=\"thumbs-container flex gap-2 mt-2\">\n {this.isPlayed && (\n <button\n class=\"copy-btn\"\n onClick={() => {\n this.isPlayed = false\n window.speechSynthesis.cancel()\n if (this.audioElement) {\n this.audioElement.pause()\n this.audioElement.currentTime = 0\n this.audioElement.src = \"\" // Remove the audio source\n this.audioElement = null // Dereference the object\n }\n // this.isPlayed = false\n }}\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon-md-heavy\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM9.5 8.5C8.94772 8.5 8.5 8.94772 8.5 9.5V14.5C8.5 15.0523 8.94772 15.5 9.5 15.5H14.5C15.0523 15.5 15.5 15.0523 15.5 14.5V9.5C15.5 8.94772 15.0523 8.5 14.5 8.5H9.5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n )}\n {!this.isPlayed && (\n <button class=\"copy-btn\" onClick={() => this.speakText(removeHtmlTags(message.text))}>\n <svg class=\"w-6 h-6\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11 4.9099C11 4.47485 10.4828 4.24734 10.1621 4.54132L6.67572 7.7372C6.49129 7.90626 6.25019 8.00005 6 8.00005H4C3.44772 8.00005 3 8.44776 3 9.00005V15C3 15.5523 3.44772 16 4 16H6C6.25019 16 6.49129 16.0938 6.67572 16.2629L10.1621 19.4588C10.4828 19.7527 11 19.5252 11 19.0902V4.9099ZM8.81069 3.06701C10.4142 1.59714 13 2.73463 13 4.9099V19.0902C13 21.2655 10.4142 22.403 8.81069 20.9331L5.61102 18H4C2.34315 18 1 16.6569 1 15V9.00005C1 7.34319 2.34315 6.00005 4 6.00005H5.61102L8.81069 3.06701ZM20.3166 6.35665C20.8019 6.09313 21.409 6.27296 21.6725 6.75833C22.5191 8.3176 22.9996 10.1042 22.9996 12.0001C22.9996 13.8507 22.5418 15.5974 21.7323 17.1302C21.4744 17.6185 20.8695 17.8054 20.3811 17.5475C19.8927 17.2896 19.7059 16.6846 19.9638 16.1962C20.6249 14.9444 20.9996 13.5175 20.9996 12.0001C20.9996 10.4458 20.6064 8.98627 19.9149 7.71262C19.6514 7.22726 19.8312 6.62017 20.3166 6.35665ZM15.7994 7.90049C16.241 7.5688 16.8679 7.65789 17.1995 8.09947C18.0156 9.18593 18.4996 10.5379 18.4996 12.0001C18.4996 13.3127 18.1094 14.5372 17.4385 15.5604C17.1357 16.0222 16.5158 16.1511 16.0539 15.8483C15.5921 15.5455 15.4632 14.9255 15.766 14.4637C16.2298 13.7564 16.4996 12.9113 16.4996 12.0001C16.4996 10.9859 16.1653 10.0526 15.6004 9.30063C15.2687 8.85905 15.3578 8.23218 15.7994 7.90049Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n )}\n <button id={`thumbsUp_${message.thumbsId}`} onClick={() => this.thumbsUp(message.thumbsId, message.insightId)} class=\"chat-thumbs-up\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-6 h-6\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M6.633 10.25c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75a.75.75 0 0 1 .75-.75 2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282m0 0h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23H5.904m10.598-9.75H14.25M5.904 18.5c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 0 1-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 9.953 4.167 9.5 5 9.5h1.053c.472 0 .745.556.5.96a8.958 8.958 0 0 0-1.302 4.665c0 1.194.232 2.333.654 3.375Z\"\n />\n </svg>\n </button>\n <button id={`thumbsDown_${message.thumbsId}`} onClick={() => this.thumbsDown(message.thumbsId, message.insightId)} class=\"chat-thumbs-up\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-6 h-6\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M7.498 15.25H4.372c-1.026 0-1.945-.694-2.054-1.715a12.137 12.137 0 0 1-.068-1.285c0-2.848.992-5.464 2.649-7.521C5.287 4.247 5.886 4 6.504 4h4.016a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23h1.294M7.498 15.25c.618 0 .991.724.725 1.282A7.471 7.471 0 0 0 7.5 19.75 2.25 2.25 0 0 0 9.75 22a.75.75 0 0 0 .75-.75v-.633c0-.573.11-1.14.322-1.672.304-.76.93-1.33 1.653-1.715a9.04 9.04 0 0 0 2.86-2.4c.498-.634 1.226-1.08 2.032-1.08h.384m-10.253 1.5H9.7m8.075-9.75c.01.05.027.1.05.148.593 1.2.925 2.55.925 3.977 0 1.487-.36 2.89-.999 4.125m.023-8.25c-.076-.365.183-.75.575-.75h.908c.889 0 1.713.518 1.972 1.368.339 1.11.521 2.287.521 3.507 0 1.553-.295 3.036-.831 4.398-.306.774-1.086 1.227-1.918 1.227h-1.053c-.472 0-.745-.556-.5-.96a8.95 8.95 0 0 0 .303-.54\"\n />\n </svg>\n </button>\n <button class=\"copy-btn\" onClick={() => this.copyToClipboard(message.text)}>\n {!this.copied && (\n <svg class=\"w-6 h-6\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7 5C7 3.34315 8.34315 2 10 2H19C20.6569 2 22 3.34315 22 5V14C22 15.6569 20.6569 17 19 17H17V19C17 20.6569 15.6569 22 14 22H5C3.34315 22 2 20.6569 2 19V10C2 8.34315 3.34315 7 5 7H7V5ZM9 7H14C15.6569 7 17 8.34315 17 10V15H19C19.5523 15 20 14.5523 20 14V5C20 4.44772 19.5523 4 19 4H10C9.44772 4 9 4.44772 9 5V7ZM5 9C4.44772 9 4 9.44772 4 10V19C4 19.5523 4.44772 20 5 20H14C14.5523 20 15 19.5523 15 19V10C15 9.44772 14.5523 9 14 9H5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n )}\n {this.copied && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"w-6 h-6\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19.8198 6.19526C20.0601 6.45561 20.0601 6.87772 19.8198 7.13807L9.9736 17.8047C9.73328 18.0651 9.34364 18.0651 9.10332 17.8047L4.18024 12.4714C3.93992 12.2111 3.93992 11.7889 4.18024 11.5286C4.42056 11.2682 4.8102 11.2682 5.05053 11.5286L9.53846 16.3905L18.9495 6.19526C19.1898 5.93491 19.5794 5.93491 19.8198 6.19526Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n )}\n </button>\n <button class=\"copy-btn\">\n <a\n href={`mailto:${email}?subject=${encodeURIComponent(this.messages[idx - 1]?.text)}&body=${encodeURIComponent(removeHtmlTags(message.text))}`}\n target=\"_blank\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"currentColor\" stroke-width=\"0.3\" class=\"w-6 h-6\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M3.75 5.25L3 6V18L3.75 18.75H20.25L21 18V6L20.25 5.25H3.75ZM4.5 7.6955V17.25H19.5V7.69525L11.9999 14.5136L4.5 7.6955ZM18.3099 6.75H5.68986L11.9999 12.4864L18.3099 6.75Z\"\n fill=\"currentColor\"\n ></path>{\" \"}\n </svg>\n </a>\n </button>\n </div>}\n <div class=\"text-gray-30 pt-2 text-body4\">\n {this.botSettings.botName} • {message.timestamp}\n </div>\n </div>\n )}\n </div>\n )\n })}\n {this.showHistory && (\n <chatbot-history chatList={this.conversationHistory} botName={this.botSettings?.botName} styles={this.customStyle} scripts={this.customJS}></chatbot-history>\n )}\n <div class=\"h-px pt-2px\" style={{ overflowAnchor: \"auto\" }}></div>\n </div>\n\n <div aria-live=\"polite\" class=\"absolute w-[1px] h-[1px] p-0 m-[-1px] overflow-hidden whitespace-nowrap border-0\"></div>\n </div>\n </div>\n </div>\n {/* )} */}\n {/* {!this.isMinimized && ( */}\n <form\n data-testid=\"user-input\"\n class={`relative pointer-events-auto ${this.isOpened ? \"p-2.5\" : \"\"} searchform user-input`}\n role=\"region\"\n aria-label=\"Message Area\"\n aria-hidden=\"false\"\n style={{ opacity: !this.isMinimized ? \"1\" : \"0\", transform: \"translateX(0)\", pointerEvents: !this.isMinimized ? \"auto\" : \"none\" }}\n >\n {!this.isOpened && (\n <div class={`absolute right-4 md:right-0 border-2 border-white border-solid rounded-full ${this.isContent ? \"\" : \"top-0\"} minimize-input`}>\n <button\n class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-gray-500 bg-opacity-60 hover:bg-opacity-80 h-5 w-5\"\n tabindex=\"0\"\n onClick={e => {\n e.preventDefault()\n this.isMinimized = !this.isMinimized\n }}\n >\n <i class=\"block ai-minimize-icon ai-text-caption\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"52\" width=\"52\" viewBox=\"0 0 520 520\" fill=\"#fff\">\n <path d=\"M500 275c0 8-7 15-15 15H35c-8 0-15-7-15-15v-30c0-8 7-15 15-15h450c8 0 15 7 15 15z\"></path>\n </svg>\n </i>\n </button>\n </div>\n )}\n <fieldset class={`flex flex-col @md:mx-0 @md:rounded-t-xl transition-colors ${this.isMinimized && !this.isExpanded ? \"\" : \"p-4 user-input-fieldset\"}`}>\n {/* <div class={`text-white wes-text-display7 pb-3 help-text ${this.isOpen ? \"hide-title\" : \"\"}`} aria-hidden=\"true\">\n Need help? Ask AI.\n </div> */}\n {!this.isExpanded && this.isOpened && this.messages.length === 0 && (\n <privacy-modal show={this.showPrivacy} message={this.botSettings.privacyTemplate}></privacy-modal>\n )}\n <div class=\"flex-1 align-bottom\">\n {this.isTypingIndicatorVisible && (\n <div class=\"flex items-center justify-center w-full h-12\">\n <typing-indicator></typing-indicator>\n </div>\n )}\n <div class=\"grow-wrap show-grid after:whitespace-pre-wrap after:invisible relative\" data-replicated-value=\"\" aria-disabled=\"false\">\n {this.botSettings.imageUpload && (\n <div\n aria-disabled=\"true\"\n class={`absolute flex items-center left-0 bottom-0 h-full pl-4 pr-2 ${this.hideAllButtons ? \"hidden\" : \"\"} ${this.isContent ? \"hidden\" : \"\"} agent-input-icon`}\n >\n <button\n class=\"plus-icon\"\n onClick={e => {\n e.stopPropagation()\n e.preventDefault()\n this.showMenu = !this.showMenu\n }}\n >\n <i class=\"plus-icon wes-block wes-text-body1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z\"></path>\n </svg>\n </i>\n </button>\n {/* Option Box */}\n <div\n class={`absolute bottom-6 left-0 w-44 bg-white rounded-lg shadow-lg transition-all duration-300 ease-in-out z-10\n ${this.showMenu ? \"opacity-100 scale-100 pointer-events-auto\" : \"opacity-0 scale-90 pointer-events-none\"}`}\n >\n <ul class=\"space-y-2\" ref={el => (this.plusIconRef = el)}>\n <li\n class=\"px-4 py-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n this.uploadElem.click()\n // this.isOpen = false\n this.showMenu = false\n }}\n >\n <input\n type=\"file\"\n multiple\n name=\"files[]\"\n id=\"fileInput\"\n accept=\"image/*\"\n class=\"image-upload__input\"\n onChange={($event: any) => {\n // this.isImage = true\n this.onInputChange($event.target.files)\n }}\n ref={el => (this.uploadElem = el as HTMLInputElement)}\n />\n <div class=\"mr-1\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5 shrink-0\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.0322 5.02393C17.7488 5.00078 17.3766 5 16.8 5H11.5002C11.3 6 11.0989 6.91141 10.8903 7.85409C10.7588 8.44955 10.6432 8.97304 10.3675 9.41399C10.1262 9.80009 9.80009 10.1262 9.41399 10.3675C8.97304 10.6432 8.44955 10.7588 7.85409 10.8903C7.81276 10.8994 7.77108 10.9086 7.72906 10.9179L5.21693 11.4762C5.1442 11.4924 5.07155 11.5001 5 11.5002V16.8C5 17.3766 5.00078 17.7488 5.02393 18.0322C5.04612 18.3038 5.0838 18.4045 5.109 18.454C5.20487 18.6422 5.35785 18.7951 5.54601 18.891C5.59546 18.9162 5.69617 18.9539 5.96784 18.9761C6.25118 18.9992 6.62345 19 7.2 19H10C10.5523 19 11 19.4477 11 20C11 20.5523 10.5523 21 10 21H7.16144C6.6343 21 6.17954 21 5.80497 20.9694C5.40963 20.9371 5.01641 20.8658 4.63803 20.673C4.07354 20.3854 3.6146 19.9265 3.32698 19.362C3.13419 18.9836 3.06287 18.5904 3.03057 18.195C2.99997 17.8205 2.99998 17.3657 3 16.8385L3 11C3 8.92477 4.02755 6.93324 5.4804 5.4804C6.93324 4.02755 8.92477 3 11 3L16.8385 3C17.3657 2.99998 17.8205 2.99997 18.195 3.03057C18.5904 3.06287 18.9836 3.13419 19.362 3.32698C19.9265 3.6146 20.3854 4.07354 20.673 4.63803C20.8658 5.01641 20.9371 5.40963 20.9694 5.80497C21 6.17954 21 6.6343 21 7.16144V10C21 10.5523 20.5523 11 20 11C19.4477 11 19 10.5523 19 10V7.2C19 6.62345 18.9992 6.25118 18.9761 5.96784C18.9539 5.69617 18.9162 5.59546 18.891 5.54601C18.7951 5.35785 18.6422 5.20487 18.454 5.109C18.4045 5.0838 18.3038 5.04612 18.0322 5.02393ZM5.28014 9.41336L7.2952 8.96556C8.08861 8.78925 8.24308 8.74089 8.35381 8.67166C8.48251 8.59121 8.59121 8.48251 8.67166 8.35381C8.74089 8.24308 8.78925 8.08861 8.96556 7.2952L9.41336 5.28014C8.51014 5.59289 7.63524 6.15398 6.89461 6.89461C6.15398 7.63524 5.59289 8.51014 5.28014 9.41336ZM17 15C17 14.4477 17.4477 14 18 14C18.5523 14 19 14.4477 19 15V17H21C21.5523 17 22 17.4477 22 18C22 18.5523 21.5523 19 21 19H19V21C19 21.5523 18.5523 22 18 22C17.4477 22 17 21.5523 17 21V19H15C14.4477 19 14 18.5523 14 18C14 17.4477 14.4477 17 15 17H17V15Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Upload Images</div>\n </li>\n\n {/* <li\n class=\"px-4 pb-2 hover:bg-gray-100 cursor-pointer flex\"\n onClick={() => {\n // this.captureScreen()\n // this.toggleBox()\n this.showMenu = !this.showMenu\n }}\n >\n <div class=\"mr-1 mt-px\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M12 9a3.75 3.75 0 1 0 0 7.5A3.75 3.75 0 0 0 12 9Z\"></path>\n <path\n fill-rule=\"evenodd\"\n d=\"M9.344 3.071a49.52 49.52 0 0 1 5.312 0c.967.052 1.83.585 2.332 1.39l.821 1.317c.24.383.645.643 1.11.71.386.054.77.113 1.152.177 1.432.239 2.429 1.493 2.429 2.909V18a3 3 0 0 1-3 3h-15a3 3 0 0 1-3-3V9.574c0-1.416.997-2.67 2.429-2.909.382-.064.766-.123 1.151-.178a1.56 1.56 0 0 0 1.11-.71l.822-1.315a2.942 2.942 0 0 1 2.332-1.39ZM6.75 12.75a5.25 5.25 0 1 1 10.5 0 5.25 5.25 0 0 1-10.5 0Zm12-1.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </div>\n <div>Capture</div>\n </li> */}\n </ul>\n </div>\n </div>\n )}\n <div class={`${this.isContent ? \"hidden\" : \"\"} textarea`}>\n <div id=\"previewContainer\"></div>\n {this.showTextarea && (\n <textarea\n class={`resize-none overflow-hidden text-ellipsis focus:outline-none w-full ${this.hideAllButtons ? \"hidden\" : \"\"}`}\n data-testid=\"user-input-textarea\"\n rows={this.rowCount}\n name=\"userMessage\"\n placeholder={this.botSettings?.botPlaceholderText ?? \"Ask me anything\"}\n // aria-labelledby=\"message-submit\"\n ref={el => (this.inputEl = el as HTMLTextAreaElement)}\n onKeyUp={_e => {\n this.adjustHeight()\n }}\n onKeyDown={e => {\n this.handleKeyDown(e)\n if (e.key === \"Enter\" && !e.shiftKey) {\n this.isOpened = true\n }\n }}\n ></textarea>\n )}\n </div>\n {this.botSettings.enableMic && (\n <label class={`absolute bottom-0 ${this.isContent ? \"hidden\" : \"\"} ${this.hideAllButtons ? \"w-full\" : \"right-8\"}`}>\n <audio-recorder\n component-type=\"bot\"\n onStartRecord={_ev => {\n // console.log(\"test\", ev)\n this.hideAllButtons = true\n }}\n onStopRecord={_ev => {\n this.hideAllButtons = false\n }}\n onSendTranscript={ev => {\n // console.log(\"ev\", ev)\n\n setTimeout(() => {\n // console.log(\"input\", this.inputEl)\n if (this.inputEl) {\n this.inputEl.value = ev.detail\n this.adjustHeight()\n this.showSubmit = true\n }\n }, 1000)\n }}\n style={{ width: this.hideAllButtons ? \"100%\" : \"10%\" }}\n ></audio-recorder>\n </label>\n )}\n <label class={`absolute right-0 bottom-0 ${this.isContent ? \"hidden\" : \"\"} ${this.hideAllButtons ? \"hidden\" : \"\"}`}>\n <button\n class=\"text-white transition rounded-full p-1.5 self-center btn-bg-color\"\n // class=\"rounded-full flex items-center justify-center disabled:cursor-not-allowed bg-transparent hover:bg-blue-95 disabled:bg-transparent disabled:hover:bg-transparent h-8 w-8\"\n tabindex=\"-1\"\n id=\"message-submit\"\n // type=\"submit\"\n onClick={e => {\n e.preventDefault()\n if ((!this.inputEl || this.inputEl.value.trim() === \"\") && this.imagesBase64List && this.imagesBase64List.length === 0) {\n return\n }\n this.isOpened = true\n // this.handleMessageSubmit(e)\n this.handleSend(this.inputEl?.value)\n }}\n >\n <i class=\"block ai-icon text-body1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" class=\"size-6\">\n <path\n fill-rule=\"evenodd\"\n d=\"M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n </i>\n </button>\n </label>\n\n <button\n class={`${this.isContent && !this.isMinimized ? \"block\" : \"hidden\"} rounded-full isContent`}\n aria-label=\"Return to AI\"\n onClick={ev => {\n ev.preventDefault()\n this.isContent = false\n this.isOpened = true\n this.isExpanded = true\n }}\n >\n <div class=\"font-bold text-body2 text-white hidden md:flex pl-3 items-center\">\n Return to AI\n <i class=\"inline-block pl-3 ai-minimize-icon block wes-icon--loading text-body1 return-text-color\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.30775 9.15362H14.077C14.4231 9.15362 14.577 9.5767 14.3462 9.80747L10.6539 13.4998C10.4231 13.7305 10.4231 14.0767 10.6539 14.3075L11.5001 15.1536C11.7308 15.3844 12.077 15.3844 12.3077 15.1536L19.0385 8.38439C19.2693 8.15362 19.2693 7.80747 19.0385 7.5767L12.3077 0.845928C12.077 0.615159 11.7308 0.615159 11.5001 0.845928L10.6924 1.65362C10.4616 1.88439 10.4616 2.23054 10.6924 2.46131L14.3847 6.15362C14.6154 6.42285 14.4616 6.84593 14.1154 6.84593H1.34621C1.03852 6.84593 0.769287 7.0767 0.769287 7.38439V8.53824C0.769287 8.84593 1.00006 9.15362 1.30775 9.15362Z\"\n fill=\"white\"\n ></path>\n </svg>\n </i>\n </div>\n </button>\n </div>\n\n {this.isExpanded && !this.isOpened && <privacy-modal show={this.showPrivacy} message={this.botSettings.privacyTemplate}></privacy-modal>}\n </div>\n </fieldset>\n </form>\n {/* )} */}\n\n <div\n // slot=\"bot\"\n class=\"pointer-events-auto fixed right-7 whitespace-nowrap transition-transform duration-300 ease-in-out fab\"\n style={{\n opacity: this.isMinimized ? \"1\" : \"0\",\n transform: this.isMinimized ? \"translateX(0)\" : \"translateX(-100%)\",\n pointerEvents: this.isMinimized ? \"auto\" : \"none\",\n transformOrigin: \"50% 50% 0px\",\n }}\n onClick={() => {\n this.openChat()\n }}\n >\n {this.isBot && <slot name=\"bot\" />}\n {!this.isBot && (\n <button\n class=\"rounded-full flex cursor-pointer items-center pr-[14px] md:gap-x-3 focus:outline focus:outline-2 focus:outline-offset-2 focus:outline-blue-focused\"\n tabindex=\"0\"\n // onClick={() => {\n // this.openChat()\n // }}\n >\n {/* <div class=\"fixed bottom-4 left-4 flex items-center space-x-2 bg-gradient-to-r from-green-400 to-teal-500 text-white px-4 py-2 rounded-full shadow-lg\"> */}\n <div class=\"w-10 h-10 flex items-center justify-center bg-white rounded-full border relative\">\n {/* <div class=\"absolute bottom-[-2px] left-[3px] w-2 h-2 border-r-2 border-b-2 border-white rotate-45\"></div> */}\n {/* <svg class=\"w-5 h-5 text-gray-600\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12l2 2 4-4\"></path>\n </svg> */}\n {this.botSettings.botLaunchIcon && <img src={this.botSettings.botLaunchIcon} alt=\"bot icon\" class=\"w-8 h-8 rounded-lg\" />}\n\n {!this.botSettings.botLaunchIcon && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#2095ae\">\n <g stroke-width=\"0\"></g>\n <g stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g>\n {\" \"}\n <path\n d=\"M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z\"\n stroke=\"#2095ae\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></path>{\" \"}\n </g>\n </svg>\n )}\n </div>\n <span class=\"bot-name\">Ask {this.botSettings?.botName}</span>\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n )\n }\n}\n"]}
|