@product7/feedback-sdk 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/feedback-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-sdk.js","sources":["../src/utils/errors.js","../src/core/APIService.js","../src/core/EventBus.js","../src/utils/helpers.js","../src/widgets/BaseWidget.js","../src/widgets/ButtonWidget.js","../src/widgets/InlineWidget.js","../src/widgets/messenger/MessengerState.js","../src/widgets/messenger/components/MessengerLauncher.js","../src/widgets/messenger/components/NavigationTabs.js","../src/widgets/messenger/components/MessengerPanel.js","../src/widgets/messenger/views/ChangelogView.js","../src/widgets/messenger/views/ChatView.js","../src/widgets/messenger/views/ConversationsView.js","../src/widgets/messenger/views/HelpView.js","../src/widgets/messenger/views/HomeView.js","../src/widgets/MessengerWidget.js","../src/widgets/SurveyWidget.js","../src/widgets/TabWidget.js","../src/widgets/WidgetFactory.js","../src/core/FeedbackSDK.js","../src/styles/messengerStyles.js","../src/styles/styles.js","../src/index.js"],"sourcesContent":["export class SDKError extends Error {\n\tconstructor(message, cause) {\n\t\tsuper(message);\n\t\tthis.name = 'SDKError';\n\t\tthis.cause = cause;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, SDKError);\n\t\t}\n\t}\n}\n\nexport class APIError extends Error {\n\tconstructor(status, message, response) {\n\t\tsuper(message);\n\t\tthis.name = 'APIError';\n\t\tthis.status = status;\n\t\tthis.response = response;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, APIError);\n\t\t}\n\t}\n\n\tisNetworkError() {\n\t\treturn this.status === 0;\n\t}\n\n\tisClientError() {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\tisServerError() {\n\t\treturn this.status >= 500 && this.status < 600;\n\t}\n}\n\nexport class WidgetError extends Error {\n\tconstructor(message, widgetType, widgetId) {\n\t\tsuper(message);\n\t\tthis.name = 'WidgetError';\n\t\tthis.widgetType = widgetType;\n\t\tthis.widgetId = widgetId;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, WidgetError);\n\t\t}\n\t}\n}\n\nexport class ConfigError extends Error {\n\tconstructor(message, configKey) {\n\t\tsuper(message);\n\t\tthis.name = 'ConfigError';\n\t\tthis.configKey = configKey;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ConfigError);\n\t\t}\n\t}\n}\n\nexport class ValidationError extends Error {\n\tconstructor(message, field, value) {\n\t\tsuper(message);\n\t\tthis.name = 'ValidationError';\n\t\tthis.field = field;\n\t\tthis.value = value;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ValidationError);\n\t\t}\n\t}\n}\n\nexport class ErrorHandler {\n\tconstructor(debug = false) {\n\t\tthis.debug = debug;\n\t}\n\n\thandle(error, context = '') {\n\t\tconst errorInfo = {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tcontext,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tif (error instanceof APIError) {\n\t\t\terrorInfo.status = error.status;\n\t\t\terrorInfo.type = 'api';\n\t\t} else if (error instanceof WidgetError) {\n\t\t\terrorInfo.widgetType = error.widgetType;\n\t\t\terrorInfo.widgetId = error.widgetId;\n\t\t\terrorInfo.type = 'widget';\n\t\t} else if (error instanceof ConfigError) {\n\t\t\terrorInfo.configKey = error.configKey;\n\t\t\terrorInfo.type = 'config';\n\t\t} else if (error instanceof ValidationError) {\n\t\t\terrorInfo.field = error.field;\n\t\t\terrorInfo.value = error.value;\n\t\t\terrorInfo.type = 'validation';\n\t\t} else {\n\t\t\terrorInfo.type = 'unknown';\n\t\t}\n\n\t\tif (this.debug) {\n\t\t\tconsole.error('[FeedbackSDK Error]', errorInfo, error);\n\t\t} else {\n\t\t\tconsole.error('[FeedbackSDK Error]', error.message);\n\t\t}\n\n\t\treturn errorInfo;\n\t}\n\n\tgetUserMessage(error) {\n\t\tif (error instanceof APIError) {\n\t\t\tif (error.isNetworkError()) {\n\t\t\t\treturn 'Network error. Please check your connection and try again.';\n\t\t\t} else if (error.isClientError()) {\n\t\t\t\treturn 'Invalid request. Please check your input and try again.';\n\t\t\t} else if (error.isServerError()) {\n\t\t\t\treturn 'Server error. Please try again later.';\n\t\t\t}\n\t\t\treturn 'Failed to submit feedback. Please try again.';\n\t\t}\n\n\t\tif (error instanceof ValidationError) {\n\t\t\treturn `Please check your ${error.field}: ${error.message}`;\n\t\t}\n\n\t\tif (error instanceof ConfigError) {\n\t\t\treturn 'Configuration error. Please check your SDK setup.';\n\t\t}\n\n\t\tif (error instanceof WidgetError) {\n\t\t\treturn 'Widget error. Please try refreshing the page.';\n\t\t}\n\n\t\treturn 'An unexpected error occurred. Please try again.';\n\t}\n}\n","import { APIError } from '../utils/errors.js';\n\nconst MOCK_CONFIG = {\n\tprimaryColor: '#21244A',\n\tbackgroundColor: '#ffffff',\n\ttextColor: '#1F2937',\n\tboardId: 'feature-requests',\n\tsize: 'medium',\n\tdisplayMode: 'modal',\n};\n\n// Mock surveys for development\nconst MOCK_SURVEYS = [\n\t{\n\t\tid: 'mock_nps_survey',\n\t\ttype: 'nps',\n\t\ttitle: 'How likely are you to recommend us?',\n\t\tdescription: 'Your feedback helps us improve',\n\t\tlow_label: 'Not likely',\n\t\thigh_label: 'Very likely',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n\t{\n\t\tid: 'mock_csat_survey',\n\t\ttype: 'csat',\n\t\ttitle: 'How satisfied are you?',\n\t\tdescription: 'Rate your experience with our product',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n\t{\n\t\tid: 'mock_ces_survey',\n\t\ttype: 'ces',\n\t\ttitle: 'How easy was it?',\n\t\tdescription: 'Rate the ease of completing your task',\n\t\tlow_label: 'Very difficult',\n\t\thigh_label: 'Very easy',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n];\n\n// Environment URLs\nconst ENV_URLS = {\n\tproduction: {\n\t\tbase: 'https://api.product7.io/api/v1',\n\t\twithWorkspace: (workspace) => `https://${workspace}.api.product7.io/api/v1`,\n\t},\n\tstaging: {\n\t\tbase: 'https://staging.api.product7.io/api/v1',\n\t\twithWorkspace: (workspace) =>\n\t\t\t`https://${workspace}.staging.api.product7.io/api/v1`,\n\t},\n};\n\nexport class APIService {\n\tconstructor(config = {}) {\n\t\tthis.workspace = config.workspace;\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.userContext = config.userContext || null;\n\t\tthis.mock = config.mock || false;\n\t\tthis.env = config.env || 'production';\n\n\t\tif (config.apiUrl) {\n\t\t\tthis.baseURL = config.apiUrl;\n\t\t} else {\n\t\t\tconst envConfig = ENV_URLS[this.env] || ENV_URLS.production;\n\t\t\tthis.baseURL = this.workspace\n\t\t\t\t? envConfig.withWorkspace(this.workspace)\n\t\t\t\t: envConfig.base;\n\t\t}\n\n\t\tthis._loadStoredSession();\n\t}\n\n\tasync init(userContext = null) {\n\t\tif (userContext) {\n\t\t\tthis.userContext = userContext;\n\t\t}\n\n\t\tif (this.isSessionValid()) {\n\t\t\treturn { sessionToken: this.sessionToken };\n\t\t}\n\n\t\tif (!this.userContext || !this.workspace) {\n\t\t\tconst error = `Missing ${!this.workspace ? 'workspace' : 'user context'} for initialization`;\n\t\t\tthrow new APIError(400, error);\n\t\t}\n\n\t\t// Mock mode - return fake session\n\t\tif (this.mock) {\n\t\t\tthis.sessionToken = 'mock_session_' + Date.now();\n\t\t\tthis.sessionExpiry = new Date(Date.now() + 3600 * 1000);\n\t\t\tthis._storeSession();\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: MOCK_CONFIG,\n\t\t\t\texpiresIn: 3600,\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\tworkspace: this.workspace,\n\t\t\tuser: this.userContext,\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/init', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tthis.sessionToken = response.session_token;\n\t\t\tthis.sessionExpiry = new Date(Date.now() + response.expires_in * 1000);\n\t\t\tthis._storeSession();\n\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: response.config || {},\n\t\t\t\texpiresIn: response.expires_in,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to initialize widget: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tasync submitFeedback(feedbackData) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\t// Mock mode - simulate success\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 500));\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_post_' + Date.now(),\n\t\t\t\t\ttitle: feedbackData.title,\n\t\t\t\t\tcontent: feedbackData.content,\n\t\t\t\t},\n\t\t\t\tmessage: 'Feedback submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\tboard:\n\t\t\t\tfeedbackData.board_id || feedbackData.board || feedbackData.boardId,\n\t\t\ttitle: feedbackData.title,\n\t\t\tcontent: feedbackData.content,\n\t\t\tattachments: feedbackData.attachments || [],\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/feedback', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.submitFeedback(feedbackData);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to submit feedback: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Get active surveys for the current user/context\n\t * @param {Object} context - Optional context overrides for targeting\n\t * @param {string} context.url - Override current URL\n\t * @param {Object} context.userProperties - Additional user properties\n\t * @returns {Promise<Array>} Array of active surveys matching targeting rules\n\t */\n\tasync getActiveSurveys(context = {}) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\t// Mock mode - return mock surveys\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 200));\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: MOCK_SURVEYS,\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst queryParams = new URLSearchParams();\n\n\t\t\t// Auto-detect current URL or use provided override\n\t\t\tconst currentUrl =\n\t\t\t\tcontext.url ||\n\t\t\t\t(typeof window !== 'undefined' ? window.location.href : '');\n\t\t\tif (currentUrl) {\n\t\t\t\tqueryParams.append('url', currentUrl);\n\t\t\t}\n\n\t\t\t// Auto-detect device info\n\t\t\tconst deviceInfo = this._getDeviceInfo();\n\t\t\tif (deviceInfo.device) queryParams.append('device', deviceInfo.device);\n\t\t\tif (deviceInfo.browser) queryParams.append('browser', deviceInfo.browser);\n\t\t\tif (deviceInfo.os) queryParams.append('os', deviceInfo.os);\n\n\t\t\t// Add user properties if provided\n\t\t\tif (context.userProperties) {\n\t\t\t\tqueryParams.append(\n\t\t\t\t\t'user_properties',\n\t\t\t\t\tJSON.stringify(context.userProperties)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst endpoint = `/widget/surveys/active${queryParams.toString() ? '?' + queryParams.toString() : ''}`;\n\n\t\t\tconst response = await this._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: {\n\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.getActiveSurveys(context);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to get active surveys: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Auto-detect device, browser, and OS info\n\t * @returns {Object} Device info object\n\t */\n\t_getDeviceInfo() {\n\t\tif (typeof navigator === 'undefined') {\n\t\t\treturn { device: null, browser: null, os: null };\n\t\t}\n\n\t\tconst ua = navigator.userAgent;\n\n\t\t// Detect device type\n\t\tlet device = 'desktop';\n\t\tif (/Mobi|Android/i.test(ua)) {\n\t\t\tdevice = /Tablet|iPad/i.test(ua) ? 'tablet' : 'mobile';\n\t\t}\n\n\t\t// Detect browser\n\t\tlet browser = 'unknown';\n\t\tif (ua.includes('Firefox')) browser = 'firefox';\n\t\telse if (ua.includes('Edg')) browser = 'edge';\n\t\telse if (ua.includes('Chrome')) browser = 'chrome';\n\t\telse if (ua.includes('Safari')) browser = 'safari';\n\t\telse if (ua.includes('Opera') || ua.includes('OPR')) browser = 'opera';\n\n\t\t// Detect OS\n\t\tlet os = 'unknown';\n\t\tif (ua.includes('Windows')) os = 'windows';\n\t\telse if (ua.includes('Mac')) os = 'macos';\n\t\telse if (ua.includes('Linux')) os = 'linux';\n\t\telse if (ua.includes('Android')) os = 'android';\n\t\telse if (ua.includes('iPhone') || ua.includes('iPad')) os = 'ios';\n\n\t\treturn { device, browser, os };\n\t}\n\n\t/**\n\t * Submit a survey response\n\t * @param {string} surveyId - The survey ID\n\t * @param {Object} responseData - The survey response data\n\t * @param {number|string} responseData.rating - The rating/score value\n\t * @param {string} responseData.feedback - Optional text feedback\n\t * @param {Object} responseData.answers - For custom surveys, key-value pairs\n\t * @returns {Promise<Object>} Submission result\n\t */\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tif (!surveyId) {\n\t\t\tthrow new APIError(400, 'Survey ID is required');\n\t\t}\n\n\t\t// Mock mode - simulate success\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 300));\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_response_' + Date.now(),\n\t\t\t\t\tsurvey_id: surveyId,\n\t\t\t\t\t...responseData,\n\t\t\t\t},\n\t\t\t\tmessage: 'Survey response submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\trating: responseData.rating,\n\t\t\tfeedback: responseData.feedback || '',\n\t\t\tanswers: responseData.answers || {},\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/responses`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.submitSurveyResponse(surveyId, responseData);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to submit survey response: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Dismiss a survey (mark as seen but not completed)\n\t * @param {string} surveyId - The survey ID to dismiss\n\t * @returns {Promise<Object>} Dismissal result\n\t */\n\tasync dismissSurvey(surveyId) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tif (!surveyId) {\n\t\t\tthrow new APIError(400, 'Survey ID is required');\n\t\t}\n\n\t\t// Mock mode - simulate success\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100));\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tmessage: 'Survey dismissed successfully',\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/dismiss`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.dismissSurvey(surveyId);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to dismiss survey: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tisSessionValid() {\n\t\treturn (\n\t\t\tthis.sessionToken && this.sessionExpiry && new Date() < this.sessionExpiry\n\t\t);\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.userContext = userContext;\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.setItem(\n\t\t\t\t'feedbackSDK_userContext',\n\t\t\t\tJSON.stringify(userContext)\n\t\t\t);\n\t\t}\n\t}\n\n\tgetUserContext() {\n\t\treturn this.userContext;\n\t}\n\n\tclearSession() {\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.removeItem('feedbackSDK_session');\n\t\t\tlocalStorage.removeItem('feedbackSDK_userContext');\n\t\t}\n\t}\n\n\t_storeSession() {\n\t\tif (typeof localStorage === 'undefined') return;\n\n\t\ttry {\n\t\t\tconst sessionData = {\n\t\t\t\ttoken: this.sessionToken,\n\t\t\t\texpiry: this.sessionExpiry.toISOString(),\n\t\t\t\tworkspace: this.workspace,\n\t\t\t};\n\t\t\tlocalStorage.setItem('feedbackSDK_session', JSON.stringify(sessionData));\n\t\t} catch (error) {\n\t\t\t// Silently fail if localStorage is not available\n\t\t}\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('feedbackSDK_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage =\n\t\t\t\t\t\tresponseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n}\n","export class EventBus {\n\tconstructor() {\n\t\tthis.events = new Map();\n\t}\n\n\ton(event, callback) {\n\t\tif (!this.events.has(event)) {\n\t\t\tthis.events.set(event, []);\n\t\t}\n\t\tthis.events.get(event).push(callback);\n\n\t\treturn () => this.off(event, callback);\n\t}\n\n\toff(event, callback) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index > -1) {\n\t\t\t\tcallbacks.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\temit(event, data) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tcallbacks.forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[FeedbackSDK] Event callback error:', error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tonce(event, callback) {\n\t\tconst unsubscribe = this.on(event, (data) => {\n\t\t\tcallback(data);\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn unsubscribe;\n\t}\n\n\tclear() {\n\t\tthis.events.clear();\n\t}\n\n\tgetListenerCount(event) {\n\t\tconst callbacks = this.events.get(event);\n\t\treturn callbacks ? callbacks.length : 0;\n\t}\n}\n","export function generateId(prefix = 'feedback') {\n\tconst timestamp = Date.now();\n\tconst random = Math.random().toString(36).substring(2, 9);\n\treturn `${prefix}_${timestamp}_${random}`;\n}\n\nexport function deepMerge(target, source) {\n\tconst result = { ...target };\n\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tif (\n\t\t\t\tsource[key] &&\n\t\t\t\ttypeof source[key] === 'object' &&\n\t\t\t\t!Array.isArray(source[key])\n\t\t\t) {\n\t\t\t\tresult[key] = deepMerge(target[key] || {}, source[key]);\n\t\t\t} else {\n\t\t\t\tresult[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function debounce(func, wait) {\n\tlet timeout;\n\treturn function executedFunction(...args) {\n\t\tconst later = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tfunc(...args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport function throttle(func, limit) {\n\tlet lastFunc;\n\tlet lastRan;\n\treturn function (...args) {\n\t\tif (!lastRan) {\n\t\t\tfunc(...args);\n\t\t\tlastRan = Date.now();\n\t\t} else {\n\t\t\tclearTimeout(lastFunc);\n\t\t\tlastFunc = setTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tif (Date.now() - lastRan >= limit) {\n\t\t\t\t\t\tfunc(...args);\n\t\t\t\t\t\tlastRan = Date.now();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlimit - (Date.now() - lastRan)\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport function isValidEmail(email) {\n\tif (!email || typeof email !== 'string') return false;\n\n\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\treturn emailRegex.test(email.trim());\n}\n\nexport function sanitizeHTML(str) {\n\tif (!str || typeof str !== 'string') return '';\n\n\tconst div = document.createElement('div');\n\tdiv.textContent = str;\n\treturn div.innerHTML;\n}\n\nexport function getCSSProperty(element, property, fallback = '') {\n\tif (!element || !property) return fallback;\n\n\ttry {\n\t\tconst style = window.getComputedStyle(element);\n\t\treturn style.getPropertyValue(property) || fallback;\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function isInViewport(element) {\n\tif (!element) return false;\n\n\tconst rect = element.getBoundingClientRect();\n\treturn (\n\t\trect.top >= 0 &&\n\t\trect.left >= 0 &&\n\t\trect.bottom <=\n\t\t\t(window.innerHeight || document.documentElement.clientHeight) &&\n\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t);\n}\n\nexport function scrollToElement(element, options = {}) {\n\tif (!element) return;\n\n\tconst defaultOptions = {\n\t\tbehavior: 'smooth',\n\t\tblock: 'center',\n\t\tinline: 'nearest',\n\t};\n\n\telement.scrollIntoView({ ...defaultOptions, ...options });\n}\n\nexport function getBrowserInfo() {\n\tconst userAgent = navigator.userAgent;\n\tconst platform = navigator.platform;\n\n\treturn {\n\t\tuserAgent,\n\t\tplatform,\n\t\tlanguage: navigator.language || navigator.userLanguage,\n\t\tcookieEnabled: navigator.cookieEnabled,\n\t\tscreenResolution: `${screen.width}x${screen.height}`,\n\t\twindowSize: `${window.innerWidth}x${window.innerHeight}`,\n\t\ttimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\t};\n}\n\nexport function formatFileSize(bytes) {\n\tif (bytes === 0) return '0 Bytes';\n\n\tconst k = 1024;\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function safeJsonParse(str, fallback = null) {\n\ttry {\n\t\treturn JSON.parse(str);\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function escapeRegex(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport function getNestedProperty(obj, path, defaultValue = undefined) {\n\tif (!obj || !path) return defaultValue;\n\n\tconst keys = path.split('.');\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (current === null || current === undefined || !(key in current)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\treturn current;\n}\n\nexport function setNestedProperty(obj, path, value) {\n\tif (!obj || !path) return obj;\n\n\tconst keys = path.split('.');\n\tconst lastKey = keys.pop();\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (!(key in current) || typeof current[key] !== 'object') {\n\t\t\tcurrent[key] = {};\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\tcurrent[lastKey] = value;\n\treturn obj;\n}\n\nexport function isBrowser() {\n\treturn typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nexport function isMobile() {\n\tif (!isBrowser()) return false;\n\n\treturn (\n\t\t/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n\t\t\tnavigator.userAgent\n\t\t) || window.innerWidth <= 768\n\t);\n}\n\nexport function getCurrentTimestamp() {\n\treturn new Date().toISOString();\n}\n\nexport function validateConfig(config, required = []) {\n\tconst missing = [];\n\n\tfor (const key of required) {\n\t\tif (!config[key]) {\n\t\t\tmissing.push(key);\n\t\t}\n\t}\n\n\tif (missing.length > 0) {\n\t\tthrow new Error(`Missing required configuration: ${missing.join(', ')}`);\n\t}\n\n\treturn true;\n}\n","export class BaseWidget {\n\tconstructor(options = {}) {\n\t\tthis.id = options.id;\n\t\tthis.sdk = options.sdk;\n\t\tthis.apiService = options.apiService;\n\t\tthis.type = options.type || 'base';\n\n\t\tthis.options = {\n\t\t\tcontainer: null,\n\t\t\tposition: this.sdk.config.position,\n\t\t\tboardId: this.sdk.config.boardId,\n\t\t\tdisplayMode: options.displayMode || 'panel',\n\t\t\tsize: options.size || 'medium',\n\t\t\tprimaryColor: options.primaryColor || '#21244A',\n\t\t\tbackgroundColor: options.backgroundColor || '#ffffff',\n\t\t\ttextColor: options.textColor || '#1F2937',\n\t\t\tautoShow: false,\n\t\t\tshowBackdrop: true,\n\t\t\tcustomStyles: {},\n\t\t\t...options,\n\t\t};\n\n\t\tthis.element = null;\n\t\tthis.panelElement = null;\n\t\tthis.backdropElement = null;\n\t\tthis.mounted = false;\n\t\tthis.destroyed = false;\n\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tisLoading: false,\n\t\t\tisSubmitting: false,\n\t\t\ttitle: '',\n\t\t\tcontent: '',\n\t\t\temail: '',\n\t\t\tattachments: [],\n\t\t\terrors: {},\n\t\t};\n\n\t\tthis._bindMethods();\n\t}\n\n\tmount(container) {\n\t\tif (this.mounted || this.destroyed) return this;\n\n\t\tif (typeof container === 'string') {\n\t\t\tcontainer = document.querySelector(container);\n\t\t}\n\n\t\tif (!container) {\n\t\t\tcontainer = document.body;\n\t\t}\n\n\t\tthis.container = container;\n\t\tthis.element = this._render();\n\t\tthis.container.appendChild(this.element);\n\n\t\tthis.mounted = true;\n\t\tthis._attachEvents();\n\t\tthis.onMount();\n\n\t\tif (this.options.autoShow) {\n\t\t\tthis.show();\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('widget:mounted', { widget: this });\n\t\treturn this;\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\topenPanel() {\n\t\tthis.state.isOpen = true;\n\n\t\tif (this.options.displayMode === 'modal') {\n\t\t\tthis._showLoadingModal();\n\t\t\t// Simulate loading delay then show form\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._hideLoadingModal();\n\t\t\t\tthis._renderPanel();\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tif (this.panelElement) {\n\t\t\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t\t\t}\n\t\t\t\t\tif (this.backdropElement) {\n\t\t\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, 600);\n\t\t} else {\n\t\t\tthis._renderPanel();\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (this.panelElement) {\n\t\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t\t}\n\t\t\t\tif (this.backdropElement) {\n\t\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_showLoadingModal() {\n\t\tthis.state.isLoading = true;\n\n\t\t// Create backdrop\n\t\tthis.backdropElement = document.createElement('div');\n\t\tthis.backdropElement.className = 'feedback-panel-backdrop';\n\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t// Create loading modal\n\t\tthis.loadingElement = document.createElement('div');\n\t\tthis.loadingElement.className = `feedback-loading-modal theme-${this.options.theme}`;\n\t\tthis.loadingElement.innerHTML = `\n\t\t\t<div class=\"feedback-loading-spinner\"></div>\n\t\t`;\n\t\tdocument.body.appendChild(this.loadingElement);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.backdropElement.classList.add('show');\n\t\t\tthis.loadingElement.classList.add('show');\n\t\t});\n\t}\n\n\t_hideLoadingModal() {\n\t\tthis.state.isLoading = false;\n\t\tif (this.loadingElement) {\n\t\t\tthis.loadingElement.remove();\n\t\t\tthis.loadingElement = null;\n\t\t}\n\t}\n\n\tclosePanel() {\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.panelElement && this.panelElement.parentNode) {\n\t\t\t\tthis.panelElement.parentNode.removeChild(this.panelElement);\n\t\t\t\tthis.panelElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t\tthis._resetForm();\n\t\t}, 300);\n\t}\n\n\tasync submitFeedback() {\n\t\tif (this.state.isSubmitting) return;\n\n\t\tthis._hideError();\n\n\t\ttry {\n\t\t\tthis.state.isSubmitting = true;\n\t\t\tthis._updateSubmitButton();\n\n\t\t\tconst payload = {\n\t\t\t\ttitle: this.state.title || 'Feedback',\n\t\t\t\tcontent: this.state.content,\n\t\t\t\temail: this.state.email,\n\t\t\t\tboard_id: this.options.boardId,\n\t\t\t\tattachments: this.state.attachments,\n\t\t\t};\n\n\t\t\tif (!this.state.content.trim()) {\n\t\t\t\tthis._showError('Please enter your feedback message.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = await this.apiService.submitFeedback(payload);\n\n\t\t\tthis._showSuccessMessage();\n\t\t\tthis.closePanel();\n\n\t\t\tthis.sdk.eventBus.emit('feedback:submitted', {\n\t\t\t\twidget: this,\n\t\t\t\tfeedback: response,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis._showError('Failed to submit feedback. Please try again.');\n\t\t\tthis.sdk.eventBus.emit('feedback:error', { widget: this, error });\n\t\t} finally {\n\t\t\tthis.state.isSubmitting = false;\n\t\t\tthis._updateSubmitButton();\n\t\t}\n\t}\n\n\thandleConfigUpdate(newConfig) {\n\t\tthis.options.theme = newConfig.theme;\n\t\tif (this.element) {\n\t\t\tthis._updateTheme();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.destroyed) return;\n\n\t\tthis.onDestroy();\n\t\tthis.closePanel();\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.destroyed = true;\n\t\tthis.mounted = false;\n\t\tthis.sdk.eventBus.emit('widget:destroyed', { widget: this });\n\t}\n\n\tonMount() {}\n\tonDestroy() {}\n\n\t_render() {\n\t\tthrow new Error('_render() must be implemented by concrete widget');\n\t}\n\n\t_attachEvents() {\n\t\t// Override in concrete widgets\n\t}\n\n\t_bindMethods() {\n\t\tthis.openPanel = this.openPanel.bind(this);\n\t\tthis.closePanel = this.closePanel.bind(this);\n\t\tthis.submitFeedback = this.submitFeedback.bind(this);\n\t}\n\n\t_renderPanel() {\n\t\tif (this.panelElement) return;\n\n\t\tif (this.options.showBackdrop && !this.backdropElement) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'feedback-panel-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t\tthis.backdropElement.addEventListener('click', this.closePanel);\n\t\t}\n\n\t\tconst modeClass =\n\t\t\tthis.options.displayMode === 'modal'\n\t\t\t\t? 'feedback-modal'\n\t\t\t\t: 'feedback-panel';\n\t\tconst sizeClass = `size-${this.options.size}`;\n\t\tthis.panelElement = document.createElement('div');\n\t\tthis.panelElement.className = `${modeClass} ${sizeClass}`;\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--primary-color',\n\t\t\tthis.options.primaryColor\n\t\t);\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--bg-color',\n\t\t\tthis.options.backgroundColor\n\t\t);\n\t\tthis.panelElement.style.setProperty('--text-color', this.options.textColor);\n\t\tthis.panelElement.innerHTML = this._getPanelHTML();\n\n\t\tdocument.body.appendChild(this.panelElement);\n\t\tthis._attachPanelEvents();\n\n\t\tconst firstInput = this.panelElement.querySelector('input, textarea');\n\t\tif (firstInput) {\n\t\t\tsetTimeout(() => firstInput.focus(), 350);\n\t\t}\n\t}\n\n\t_getPanelHTML() {\n\t\treturn `\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-header\">\n <h3>Send Feedback</h3>\n <button class=\"feedback-panel-close\" type=\"button\" aria-label=\"Close\">×</button>\n </div>\n <div class=\"feedback-panel-body\">\n <form class=\"feedback-form\">\n <div class=\"feedback-form-group\">\n <label for=\"feedback-title-${this.id}\">Title (optional)</label>\n <input \n type=\"text\" \n id=\"feedback-title-${this.id}\" \n name=\"title\" \n placeholder=\"Brief description of your feedback\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <label for=\"feedback-content-${this.id}\">Message *</label>\n <textarea \n id=\"feedback-content-${this.id}\" \n name=\"content\" \n placeholder=\"Tell us what you think...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-error\" role=\"alert\"></div>\n <div class=\"feedback-form-actions\">\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n ${this.state.isSubmitting ? 'Sending...' : 'Send Feedback'}\n </button>\n </div>\n </form>\n </div>\n </div>\n `;\n\t}\n\n\t_attachPanelEvents() {\n\t\tconst panel = this.panelElement;\n\n\t\tpanel\n\t\t\t.querySelector('.feedback-panel-close')\n\t\t\t.addEventListener('click', this.closePanel);\n\n\t\tconst form = panel.querySelector('.feedback-form');\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('input[name=\"title\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.title = e.target.value;\n\t\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tconst handleEscape = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closePanel();\n\t\t\t\tdocument.removeEventListener('keydown', handleEscape);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', handleEscape);\n\t}\n\n\t_updateSubmitButton() {\n\t\tif (this.panelElement) {\n\t\t\tconst submitBtn = this.panelElement.querySelector('.feedback-btn-submit');\n\t\t\tif (submitBtn) {\n\t\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t\t? 'Sending...'\n\t\t\t\t\t: 'Send Feedback';\n\t\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t\t}\n\t\t}\n\t}\n\n\t_showError(message) {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.textContent = message;\n\t\t\t\terrorElement.classList.add('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_hideError() {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.classList.remove('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'feedback-success-notification';\n\t\tnotification.innerHTML = `\n <div class=\"feedback-success-content\">\n <div class=\"feedback-success-icon\">✓</div>\n <span>Feedback submitted successfully!</span>\n <button class=\"feedback-success-close\" aria-label=\"Close\">×</button>\n </div>\n `;\n\n\t\tdocument.body.appendChild(notification);\n\n\t\tconst closeBtn = notification.querySelector('.feedback-success-close');\n\t\tconst closeNotification = () => {\n\t\t\tif (notification.parentNode) {\n\t\t\t\tnotification.style.opacity = '0';\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (notification.parentNode) {\n\t\t\t\t\t\tnotification.parentNode.removeChild(notification);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t};\n\n\t\tcloseBtn.addEventListener('click', closeNotification);\n\n\t\tsetTimeout(closeNotification, 4000);\n\t}\n\n\t_resetForm() {\n\t\tthis.state.title = '';\n\t\tthis.state.content = '';\n\t\tthis.state.email = '';\n\t\tthis.state.errors = {};\n\t}\n\n\t_updateTheme() {\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.className = this.panelElement.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t}\n\n\topenModal() {\n\t\tthis.openPanel();\n\t}\n\n\tcloseModal() {\n\t\tthis.closePanel();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\nexport class ButtonWidget extends BaseWidget {\n constructor(options) {\n super({ ...options, type: 'button' });\n this.isMinimized = false;\n }\n\n _render() {\n const button = document.createElement('div');\n button.className = `feedback-widget feedback-widget-button theme-${this.options.theme} position-${this.options.position}`;\n button.innerHTML = `\n <button class=\"feedback-trigger-btn\" type=\"button\">\n <svg class=\"feedback-icon\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" fill=\"currentColor\">\n <path d=\"M216,80H184V48a16,16,0,0,0-16-16H40A16,16,0,0,0,24,48V176a8,8,0,0,0,13,6.22L72,154V184a16,16,0,0,0,16,16h93.59L219,230.22a8,8,0,0,0,5,1.78,8,8,0,0,0,8-8V96A16,16,0,0,0,216,80ZM66.55,137.78,40,159.25V48H168v88H71.58A8,8,0,0,0,66.55,137.78ZM216,207.25l-26.55-21.47a8,8,0,0,0-5-1.78H88V152h80a16,16,0,0,0,16-16V96h32Z\"/>\n </svg>\n <span class=\"feedback-text\">Feedback</span>\n \n <div class=\"feedback-minimize-icon\">\n <svg viewBox=\"0 0 256 256\">\n <path d=\"M213.66,53.66,163.31,104H192a8,8,0,0,1,0,16H144a8,8,0,0,1-8-8V64a8,8,0,0,1,16,0V92.69l50.34-50.35a8,8,0,0,1,11.32,11.32ZM112,136H64a8,8,0,0,0,0,16H92.69L42.34,202.34a8,8,0,0,0,11.32,11.32L104,163.31V192a8,8,0,0,0,16,0V144A8,8,0,0,0,112,136Z\"/>\n </svg>\n </div>\n \n <div class=\"feedback-expand-icon\">\n <svg viewBox=\"0 0 256 256\">\n <path d=\"M112,40V64.69L61.66,14.34A8,8,0,0,0,50.34,25.66L100.69,76H72a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V36A8,8,0,0,0,112,40Zm131.06,70.61a8,8,0,0,0-8.72,1.73L184,162.69V136a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8h48a8,8,0,0,0,0-16H195.31l50.35-50.34A8,8,0,0,0,243.06,110.61Z\"/>\n </svg>\n </div>\n </button>\n `;\n\n if (this.options.customStyles) {\n Object.assign(button.style, this.options.customStyles);\n }\n\n return button;\n }\n\n _attachEvents() {\n const button = this.element.querySelector('.feedback-trigger-btn');\n const minimizeIcon = this.element.querySelector('.feedback-minimize-icon');\n const expandIcon = this.element.querySelector('.feedback-expand-icon');\n\n button.addEventListener('click', (e) => {\n const clickedMinimize = e.target.closest('.feedback-minimize-icon');\n const clickedExpand = e.target.closest('.feedback-expand-icon');\n \n if (clickedMinimize) {\n e.stopPropagation();\n this.minimize();\n } else if (clickedExpand) {\n e.stopPropagation();\n this.restore();\n } else {\n if (!this.isMinimized) {\n this.openPanel();\n }\n }\n });\n\n button.addEventListener('mouseenter', () => {\n if (!this.state.isSubmitting && !this.isMinimized) {\n button.style.transform = 'translateY(-2px)';\n }\n });\n\n button.addEventListener('mouseleave', () => {\n if (!this.isMinimized) {\n button.style.transform = 'translateY(0)';\n }\n });\n }\n\n minimize() {\n this.isMinimized = true;\n this.element.classList.add('minimized');\n }\n\n restore() {\n this.isMinimized = false;\n this.element.classList.remove('minimized');\n }\n\n mount(container) {\n super.mount(container);\n }\n\n updateText(text) {\n const textEl = this.element?.querySelector('.feedback-text');\n if (textEl) {\n textEl.textContent = text;\n }\n }\n\n updatePosition(position) {\n this.options.position = position;\n if (this.element) {\n this.element.className = this.element.className.replace(\n /position-\\w+-\\w+/,\n `position-${position}`\n );\n }\n }\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class InlineWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'inline' });\n\t}\n\n\t_render() {\n\t\tconst widget = document.createElement('div');\n\t\twidget.className = `feedback-widget feedback-widget-inline theme-${this.options.theme}`;\n\t\twidget.innerHTML = `\n <div class=\"feedback-inline-content\">\n <h3>Send us your feedback</h3>\n <form class=\"feedback-inline-form\">\n <div class=\"feedback-form-group\">\n <input \n type=\"text\" \n name=\"title\" \n placeholder=\"Title (optional)\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <textarea \n name=\"content\" \n placeholder=\"Your feedback...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-form-group\">\n <input \n type=\"email\" \n name=\"email\" \n placeholder=\"Email (optional)\"\n value=\"${this.state.email}\"\n />\n </div>\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n Send Feedback\n </button>\n <div class=\"feedback-error\" style=\"display: none;\"></div>\n </form>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(widget.style, this.options.customStyles);\n\t\t}\n\n\t\treturn widget;\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.feedback-inline-form');\n\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tform.querySelector('input[name=\"title\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.title = e.target.value;\n\t\t});\n\n\t\tform\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tform.querySelector('input[name=\"email\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.email = e.target.value;\n\t\t});\n\t}\n\n\topenModal() {\n\t\tconst textarea = this.element.querySelector('textarea[name=\"content\"]');\n\t\tif (textarea) {\n\t\t\ttextarea.focus();\n\t\t}\n\t}\n\n\tcloseModal() {\n\t\t// Inline widget doesn't use modal\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst widget = this.element.querySelector('.feedback-inline-content');\n\t\tconst originalContent = widget.innerHTML;\n\n\t\twidget.innerHTML = `\n <div class=\"feedback-success\">\n <div class=\"feedback-success-icon\">✓</div>\n <h3>Thank you!</h3>\n <p>Your feedback has been submitted successfully.</p>\n <button class=\"feedback-btn feedback-btn-reset\">Send Another</button>\n </div>\n `;\n\n\t\tconst resetBtn = widget.querySelector('.feedback-btn-reset');\n\t\tresetBtn.addEventListener('click', () => {\n\t\t\twidget.innerHTML = originalContent;\n\t\t\tthis._attachEvents();\n\t\t\tthis._resetForm();\n\t\t});\n\t}\n\n\t_showError(message) {\n\t\tconst errorElement = this.element.querySelector('.feedback-error');\n\t\tif (errorElement) {\n\t\t\terrorElement.textContent = message;\n\t\t\terrorElement.style.display = 'block';\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (errorElement) {\n\t\t\t\t\terrorElement.style.display = 'none';\n\t\t\t\t}\n\t\t\t}, 5000);\n\t\t}\n\t}\n\n\t_updateSubmitButton() {\n\t\tconst submitBtn = this.element.querySelector('.feedback-btn-submit');\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t? 'Sending...'\n\t\t\t\t: 'Send Feedback';\n\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t}\n\t}\n\n\tupdateTitle(title) {\n\t\tconst titleElement = this.element?.querySelector('h3');\n\t\tif (titleElement) {\n\t\t\ttitleElement.textContent = title;\n\t\t}\n\t}\n\n\tsetPlaceholder(field, placeholder) {\n\t\tconst input = this.element?.querySelector(`[name=\"${field}\"]`);\n\t\tif (input) {\n\t\t\tinput.placeholder = placeholder;\n\t\t}\n\t}\n}\n","/**\n * MessengerState - State management for the Messenger widget\n */\nexport class MessengerState {\n\tconstructor(options = {}) {\n\t\tthis.currentView = 'home'; // 'home', 'messages', 'chat', 'help', 'changelog'\n\t\tthis.isOpen = false;\n\t\tthis.unreadCount = 0;\n\t\tthis.activeConversationId = null;\n\n\t\t// Conversations\n\t\tthis.conversations = [];\n\t\tthis.messages = {}; // { conversationId: [messages] }\n\n\t\t// Help articles\n\t\tthis.helpArticles = [];\n\t\tthis.helpSearchQuery = '';\n\n\t\t// Changelog\n\t\tthis.homeChangelogItems = [];\n\t\tthis.changelogItems = [];\n\n\t\t// Team info\n\t\tthis.teamName = options.teamName || 'Support';\n\t\tthis.teamAvatars = options.teamAvatars || [];\n\t\tthis.welcomeMessage = options.welcomeMessage || 'How can we help?';\n\n\t\t// User info\n\t\tthis.userContext = options.userContext || null;\n\n\t\t// Feature flags\n\t\tthis.enableHelp = options.enableHelp !== false;\n\t\tthis.enableChangelog = options.enableChangelog !== false;\n\n\t\t// Listeners\n\t\tthis._listeners = new Set();\n\t}\n\n\t/**\n\t * Subscribe to state changes\n\t */\n\tsubscribe(callback) {\n\t\tthis._listeners.add(callback);\n\t\treturn () => this._listeners.delete(callback);\n\t}\n\n\t/**\n\t * Notify all listeners of state change\n\t */\n\t_notify(changeType, data) {\n\t\tthis._listeners.forEach((cb) => cb(changeType, data, this));\n\t}\n\n\t/**\n\t * Set current view\n\t */\n\tsetView(view) {\n\t\tconst previousView = this.currentView;\n\t\tthis.currentView = view;\n\t\tthis._notify('viewChange', { previousView, currentView: view });\n\t}\n\n\t/**\n\t * Toggle panel open/closed\n\t */\n\tsetOpen(isOpen) {\n\t\tthis.isOpen = isOpen;\n\t\tthis._notify('openChange', { isOpen });\n\t}\n\n\t/**\n\t * Set active conversation for chat view\n\t */\n\tsetActiveConversation(conversationId) {\n\t\tthis.activeConversationId = conversationId;\n\t\tthis._notify('conversationChange', { conversationId });\n\t}\n\n\t/**\n\t * Update conversations list\n\t */\n\tsetConversations(conversations) {\n\t\tthis.conversations = conversations;\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationsUpdate', { conversations });\n\t}\n\n\t/**\n\t * Add a new conversation\n\t */\n\taddConversation(conversation) {\n\t\tthis.conversations.unshift(conversation);\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationAdded', { conversation });\n\t}\n\n\t/**\n\t * Update messages for a conversation\n\t */\n\tsetMessages(conversationId, messages) {\n\t\tthis.messages[conversationId] = messages;\n\t\tthis._notify('messagesUpdate', { conversationId, messages });\n\t}\n\n\t/**\n\t * Add a message to a conversation\n\t */\n\taddMessage(conversationId, message) {\n\t\tif (!this.messages[conversationId]) {\n\t\t\tthis.messages[conversationId] = [];\n\t\t}\n\t\tthis.messages[conversationId].push(message);\n\n\t\t// Update conversation preview\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv) {\n\t\t\tconv.lastMessage = message.content;\n\t\t\tconv.lastMessageTime = message.timestamp;\n\t\t\tif (!message.isOwn) {\n\t\t\t\tconv.unread = (conv.unread || 0) + 1;\n\t\t\t\tthis._updateUnreadCount();\n\t\t\t}\n\t\t}\n\n\t\tthis._notify('messageAdded', { conversationId, message });\n\t}\n\n\t/**\n\t * Mark conversation as read\n\t */\n\tmarkAsRead(conversationId) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv && conv.unread > 0) {\n\t\t\tconv.unread = 0;\n\t\t\tthis._updateUnreadCount();\n\t\t\tthis._notify('conversationRead', { conversationId });\n\t\t}\n\t}\n\n\t/**\n\t * Update unread count\n\t */\n\t_updateUnreadCount() {\n\t\tthis.unreadCount = this.conversations.reduce(\n\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t0\n\t\t);\n\t\tthis._notify('unreadCountChange', { count: this.unreadCount });\n\t}\n\n\t/**\n\t * Set help articles\n\t */\n\tsetHelpArticles(articles) {\n\t\tthis.helpArticles = articles;\n\t\tthis._notify('helpArticlesUpdate', { articles });\n\t}\n\n\t/**\n\t * Set help search query\n\t */\n\tsetHelpSearchQuery(query) {\n\t\tthis.helpSearchQuery = query;\n\t\tthis._notify('helpSearchChange', { query });\n\t}\n\n\t/**\n\t * Set home changelog items\n\t */\n\tsetHomeChangelogItems(items) {\n\t\tthis.homeChangelogItems = items;\n\t\tthis._notify('homeChangelogUpdate', { items });\n\t}\n\n\t/**\n\t * Set changelog items\n\t */\n\tsetChangelogItems(items) {\n\t\tthis.changelogItems = items;\n\t\tthis._notify('changelogUpdate', { items });\n\t}\n\n\t/**\n\t * Get current conversation\n\t */\n\tgetActiveConversation() {\n\t\treturn this.conversations.find((c) => c.id === this.activeConversationId);\n\t}\n\n\t/**\n\t * Get messages for active conversation\n\t */\n\tgetActiveMessages() {\n\t\treturn this.messages[this.activeConversationId] || [];\n\t}\n\n\t/**\n\t * Get filtered help articles\n\t */\n\tgetFilteredHelpArticles() {\n\t\tif (!this.helpSearchQuery) {\n\t\t\treturn this.helpArticles;\n\t\t}\n\t\tconst query = this.helpSearchQuery.toLowerCase();\n\t\treturn this.helpArticles.filter(\n\t\t\t(article) =>\n\t\t\t\tarticle.title.toLowerCase().includes(query) ||\n\t\t\t\t(article.description &&\n\t\t\t\t\tarticle.description.toLowerCase().includes(query))\n\t\t);\n\t}\n\n\t/**\n\t * Reset state\n\t */\n\treset() {\n\t\tthis.currentView = 'home';\n\t\tthis.activeConversationId = null;\n\t\tthis.helpSearchQuery = '';\n\t\tthis._notify('reset', {});\n\t}\n}\n","/**\n * MessengerLauncher - Floating trigger button for messenger\n */\nexport class MessengerLauncher {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\tprimaryColor: options.primaryColor || '#1c1c1e',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `messenger-launcher messenger-launcher-${this.options.position}`;\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._updateIcon();\n\t\t\t}\n\t\t\tif (type === 'unreadCountChange') {\n\t\t\t\tthis._updateBadge();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst badgeHtml =\n\t\t\tthis.state.unreadCount > 0\n\t\t\t\t? `<span class=\"messenger-launcher-badge\">${this.state.unreadCount > 9 ? '9+' : this.state.unreadCount}</span>`\n\t\t\t\t: '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<button class=\"messenger-launcher-btn\" aria-label=\"Open messenger\" style=\"background: ${this.options.primaryColor};\">\n\t\t\t\t<span class=\"messenger-launcher-icon messenger-launcher-icon-chat\">\n\t\t\t\t\t<i class=\"ph ph-chat-circle-dots\" style=\"font-size: 24px;\"></i>\n\t\t\t\t</span>\n\t\t\t\t<span class=\"messenger-launcher-icon messenger-launcher-icon-close\" style=\"display: none;\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 24px;\"></i>\n\t\t\t\t</span>\n\t\t\t\t${badgeHtml}\n\t\t\t</button>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.messenger-launcher-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(!this.state.isOpen);\n\t\t\t});\n\t}\n\n\t_updateIcon() {\n\t\tconst chatIcon = this.element.querySelector(\n\t\t\t'.messenger-launcher-icon-chat'\n\t\t);\n\t\tconst closeIcon = this.element.querySelector(\n\t\t\t'.messenger-launcher-icon-close'\n\t\t);\n\n\t\tif (this.state.isOpen) {\n\t\t\tchatIcon.style.display = 'none';\n\t\t\tcloseIcon.style.display = 'flex';\n\t\t\tthis.element.classList.add('messenger-launcher-open');\n\t\t} else {\n\t\t\tchatIcon.style.display = 'flex';\n\t\t\tcloseIcon.style.display = 'none';\n\t\t\tthis.element.classList.remove('messenger-launcher-open');\n\t\t}\n\t}\n\n\t_updateBadge() {\n\t\tconst existingBadge = this.element.querySelector(\n\t\t\t'.messenger-launcher-badge'\n\t\t);\n\t\tif (existingBadge) {\n\t\t\texistingBadge.remove();\n\t\t}\n\n\t\tif (this.state.unreadCount > 0 && !this.state.isOpen) {\n\t\t\tconst badge = document.createElement('span');\n\t\t\tbadge.className = 'messenger-launcher-badge';\n\t\t\tbadge.textContent =\n\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\tthis.element.querySelector('.messenger-launcher-btn').appendChild(badge);\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * NavigationTabs - Bottom navigation for messenger\n */\nexport class NavigationTabs {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-nav';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange' || type === 'unreadCountChange') {\n\t\t\t\tthis._updateActiveTab();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_getTabs() {\n\t\tconst tabs = [\n\t\t\t{ id: 'home', label: 'Home', icon: this._getHomeIcon() },\n\t\t\t{\n\t\t\t\tid: 'messages',\n\t\t\t\tlabel: 'Messages',\n\t\t\t\ticon: this._getMessagesIcon(),\n\t\t\t\tbadge: this.state.unreadCount,\n\t\t\t},\n\t\t];\n\n\t\tif (this.state.enableHelp) {\n\t\t\ttabs.push({ id: 'help', label: 'Help', icon: this._getHelpIcon() });\n\t\t}\n\n\t\tif (this.state.enableChangelog) {\n\t\t\ttabs.push({\n\t\t\t\tid: 'changelog',\n\t\t\t\tlabel: 'Changelog',\n\t\t\t\ticon: this._getChangelogIcon(),\n\t\t\t});\n\t\t}\n\n\t\treturn tabs;\n\t}\n\n\t_updateContent() {\n\t\tconst tabs = this._getTabs();\n\t\tconst tabsHtml = tabs\n\t\t\t.map((tab) => {\n\t\t\t\tconst isActive = this.state.currentView === tab.id;\n\t\t\t\tconst badgeHtml =\n\t\t\t\t\ttab.badge && tab.badge > 0\n\t\t\t\t\t\t? `<span class=\"messenger-nav-badge\">${tab.badge > 9 ? '9+' : tab.badge}</span>`\n\t\t\t\t\t\t: '';\n\n\t\t\t\treturn `\n\t\t\t\t<button class=\"messenger-nav-tab ${isActive ? 'active' : ''}\" data-tab=\"${tab.id}\">\n\t\t\t\t\t<span class=\"messenger-nav-icon\">${tab.icon}</span>\n\t\t\t\t\t<span class=\"messenger-nav-label\">${tab.label}</span>\n\t\t\t\t\t${badgeHtml}\n\t\t\t\t</button>\n\t\t\t`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\tthis.element.innerHTML = tabsHtml;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element.addEventListener('click', (e) => {\n\t\t\tconst tab = e.target.closest('.messenger-nav-tab');\n\t\t\tif (tab) {\n\t\t\t\tconst tabId = tab.dataset.tab;\n\t\t\t\tthis.state.setView(tabId);\n\t\t\t}\n\t\t});\n\t}\n\n\t_updateActiveTab() {\n\t\tconst tabs = this.element.querySelectorAll('.messenger-nav-tab');\n\t\ttabs.forEach((tab) => {\n\t\t\tconst isActive = tab.dataset.tab === this.state.currentView;\n\t\t\ttab.classList.toggle('active', isActive);\n\n\t\t\t// Update badge if messages tab\n\t\t\tif (tab.dataset.tab === 'messages') {\n\t\t\t\tconst existingBadge = tab.querySelector('.messenger-nav-badge');\n\t\t\t\tif (existingBadge) existingBadge.remove();\n\n\t\t\t\tif (this.state.unreadCount > 0) {\n\t\t\t\t\tconst badge = document.createElement('span');\n\t\t\t\t\tbadge.className = 'messenger-nav-badge';\n\t\t\t\t\tbadge.textContent =\n\t\t\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\t\t\ttab.appendChild(badge);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t_getHomeIcon() {\n\t\treturn `<i class=\"ph-duotone ph-house-simple\" style=\"font-size: 24px;\"></i>`;\n\t}\n\n\t_getMessagesIcon() {\n\t\treturn `<i class=\"ph-duotone ph-chat\" style=\"font-size: 24px;\"></i>`;\n\t}\n\n\t_getHelpIcon() {\n\t\treturn `<i class=\"ph-duotone ph-question\" style=\"font-size: 24px;\"></i>`;\n\t}\n\n\t_getChangelogIcon() {\n\t\treturn `<i class=\"ph-duotone ph-megaphone\" style=\"font-size: 24px;\"></i>`;\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * MessengerPanel - Main panel container for messenger\n */\nimport { NavigationTabs } from './NavigationTabs.js';\n\nexport class MessengerPanel {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || 'dark',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis.navigationTabs = null;\n\t\tthis.currentViewComponent = null;\n\t\tthis.viewRegistry = {};\n\t\tthis._unsubscribe = null;\n\t}\n\n\t/**\n\t * Register view components\n\t */\n\tregisterView(name, ViewClass) {\n\t\tthis.viewRegistry[name] = ViewClass;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `messenger-panel messenger-panel-${this.options.position} theme-${this.options.theme}`;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-panel-content\">\n\t\t\t\t<div class=\"messenger-panel-views\"></div>\n\t\t\t\t<div class=\"messenger-panel-nav\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\t// Render navigation tabs\n\t\tthis.navigationTabs = new NavigationTabs(this.state, this.options);\n\t\tconst navContainer = this.element.querySelector('.messenger-panel-nav');\n\t\tnavContainer.appendChild(this.navigationTabs.render());\n\n\t\t// Render initial view\n\t\tthis._renderCurrentView();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange') {\n\t\t\t\tthis._renderCurrentView();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_renderCurrentView() {\n\t\tconst viewsContainer = this.element.querySelector('.messenger-panel-views');\n\n\t\t// Destroy current view if exists\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\n\t\t// Clear container\n\t\tviewsContainer.innerHTML = '';\n\n\t\t// Get view class\n\t\tconst ViewClass = this.viewRegistry[this.state.currentView];\n\t\tif (ViewClass) {\n\t\t\tthis.currentViewComponent = new ViewClass(this.state, this.options);\n\t\t\tviewsContainer.appendChild(this.currentViewComponent.render());\n\t\t} else {\n\t\t\tviewsContainer.innerHTML = `<div class=\"messenger-view-placeholder\">View not found: ${this.state.currentView}</div>`;\n\t\t}\n\t}\n\n\t/**\n\t * Show the panel with animation\n\t */\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t\t// Trigger animation\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.element.classList.add('open');\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Hide the panel with animation\n\t */\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.classList.remove('open');\n\t\t\t// Wait for animation to complete\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (this.element) {\n\t\t\t\t\tthis.element.style.display = 'none';\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t}\n\t}\n\n\t/**\n\t * Set panel header content (used by views)\n\t */\n\tsetHeader(headerContent) {\n\t\tconst header = this.element.querySelector('.messenger-panel-header');\n\t\tif (header) {\n\t\t\theader.innerHTML = headerContent;\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.navigationTabs) {\n\t\t\tthis.navigationTabs.destroy();\n\t\t}\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * ChangelogView - Changelog and announcements\n */\nexport class ChangelogView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-changelog-view';\n\n\t\tthis._updateContent();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'changelogUpdate') {\n\t\t\t\tthis._updateChangelogList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst avatarsHtml = this._renderTeamAvatars();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-changelog-header\">\n\t\t\t\t<h2>Changelog</h2>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-changelog-subheader\">\n\t\t\t\t<span class=\"messenger-changelog-latest\">Latest</span>\n\t\t\t\t<div class=\"messenger-changelog-team\">\n\t\t\t\t\t<span>From ${this.state.teamName}</span>\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-changelog-body\">\n\t\t\t\t<div class=\"messenger-changelog-list\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateChangelogList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateChangelogList() {\n\t\tconst changelogContainer = this.element.querySelector(\n\t\t\t'.messenger-changelog-list'\n\t\t);\n\t\tconst changelogItems = this.state.changelogItems;\n\n\t\tif (changelogItems.length === 0) {\n\t\t\tchangelogContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tchangelogContainer.innerHTML = changelogItems\n\t\t\t.map((item) => this._renderChangelogCard(item))\n\t\t\t.join('');\n\n\t\t// Attach click events\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_renderChangelogCard(item) {\n\t\tconst tagsHtml =\n\t\t\titem.tags && item.tags.length > 0\n\t\t\t\t? `<div class=\"messenger-changelog-tags\">\n\t\t\t\t${item.tags.map((tag) => `<span class=\"messenger-changelog-tag\">${tag}</span>`).join('')}\n\t\t\t</div>`\n\t\t\t\t: '';\n\n\t\tconst dateStr = this._formatDate(item.publishedAt || item.date);\n\n\t\treturn `\n\t\t\t<div class=\"messenger-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"messenger-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"messenger-changelog-content\">\n\t\t\t\t\t${tagsHtml}\n\t\t\t\t\t<h3 class=\"messenger-changelog-title\">${item.title}</h3>\n\t\t\t\t\t${item.description ? `<p class=\"messenger-changelog-description\">${this._truncateText(item.description, 100)}</p>` : ''}\n\t\t\t\t\t<div class=\"messenger-changelog-meta\">\n\t\t\t\t\t\t<span class=\"messenger-changelog-date\">${dateStr}</span>\n\t\t\t\t\t\t<i class=\"ph ph-caret-right messenger-changelog-arrow\" style=\"font-size: 16px;\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack messenger-avatar-stack-tiny\">\n\t\t\t\t\t<div class=\"messenger-avatar messenger-avatar-tiny\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759'];\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-tiny\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${2 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-tiny\" style=\"background: ${colors[i % colors.length]}; z-index: ${2 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack messenger-avatar-stack-tiny\">${avatarItems}</div>`;\n\t}\n\n\t_renderEmptyState() {\n\t\treturn `\n\t\t\t<div class=\"messenger-changelog-empty\">\n\t\t\t\t<div class=\"messenger-changelog-empty-icon\">\n\t\t\t\t\t<i class=\"ph ph-megaphone\" style=\"font-size: 48px;\"></i>\n\t\t\t\t</div>\n\t\t\t\t<h3>No changelog yet</h3>\n\t\t\t\t<p>Check back later for updates</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t\tyear: 'numeric',\n\t\t});\n\t}\n\n\t_truncateText(text, maxLength) {\n\t\tif (!text) return '';\n\t\tif (text.length <= maxLength) return text;\n\t\treturn text.substring(0, maxLength).trim() + '...';\n\t}\n\n\t_attachEvents() {\n\t\t// Close button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_attachChangelogEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-changelog-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst changelogId = card.dataset.changelogId;\n\t\t\t\t\tconst changelogItem = this.state.changelogItems.find(\n\t\t\t\t\t\t(n) => n.id === changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (changelogItem && changelogItem.url) {\n\t\t\t\t\t\twindow.open(changelogItem.url, '_blank');\n\t\t\t\t\t} else if (this.options.onChangelogClick) {\n\t\t\t\t\t\tthis.options.onChangelogClick(changelogItem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * ChatView - Individual conversation chat\n */\nexport class ChatView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-chat-view';\n\n\t\tthis._updateContent();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (\n\t\t\t\ttype === 'messageAdded' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._appendMessage(data.message);\n\t\t\t\tthis._scrollToBottom();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversation = this.state.getActiveConversation();\n\t\tconst messages = this.state.getActiveMessages();\n\n\t\tconst messagesHtml =\n\t\t\tmessages.length === 0\n\t\t\t\t? this._renderEmptyState()\n\t\t\t\t: messages.map((msg) => this._renderMessage(msg)).join('');\n\n\t\tconst avatarHtml = this._renderConversationAvatar(conversation);\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-chat-header\">\n\t\t\t\t<button class=\"messenger-back-btn\" aria-label=\"Back\">\n\t\t\t\t\t<i class=\"ph ph-caret-left\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"messenger-chat-header-info\">\n\t\t\t\t\t${avatarHtml}\n\t\t\t\t\t<span class=\"messenger-chat-title\">${conversation?.title || 'Chat with team'}</span>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-chat-messages\">\n\t\t\t\t${messagesHtml}\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-chat-compose\">\n\t\t\t\t<div class=\"messenger-compose-input-wrapper\">\n\t\t\t\t\t<textarea class=\"messenger-compose-input\" placeholder=\"Write a message...\" rows=\"1\"></textarea>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"messenger-compose-send\" aria-label=\"Send\" disabled>\n\t\t\t\t\t<i class=\"ph ph-paper-plane-tilt\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t\tthis._scrollToBottom();\n\t}\n\n\t_renderEmptyState() {\n\t\tconst avatarHtml = this._renderTeamAvatars();\n\t\treturn `\n\t\t\t<div class=\"messenger-chat-empty\">\n\t\t\t\t<div class=\"messenger-chat-empty-avatars\">${avatarHtml}</div>\n\t\t\t\t<h3>Start the conversation</h3>\n\t\t\t\t<p>Send us a message and we'll get back to you as soon as possible.</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessage(message) {\n\t\tconst isOwn = message.isOwn;\n\t\tconst messageClass = isOwn\n\t\t\t? 'messenger-message-own'\n\t\t\t: 'messenger-message-received';\n\t\tconst timeStr = this._formatMessageTime(message.timestamp);\n\n\t\tif (isOwn) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-message ${messageClass}\">\n\t\t\t\t\t<div class=\"messenger-message-bubble\">\n\t\t\t\t\t\t<div class=\"messenger-message-content\">${this._formatMessageContent(message.content)}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarHtml = this._renderSenderAvatar(message.sender);\n\t\treturn `\n\t\t\t<div class=\"messenger-message ${messageClass}\">\n\t\t\t\t<div class=\"messenger-message-avatar\">${avatarHtml}</div>\n\t\t\t\t<div class=\"messenger-message-wrapper\">\n\t\t\t\t\t<div class=\"messenger-message-sender\">${message.sender?.name || 'Support'}</div>\n\t\t\t\t\t<div class=\"messenger-message-bubble\">\n\t\t\t\t\t\t<div class=\"messenger-message-content\">${this._formatMessageContent(message.content)}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderSenderAvatar(sender) {\n\t\tif (sender?.avatarUrl) {\n\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-small\" src=\"${sender.avatarUrl}\" alt=\"${sender.name}\" />`;\n\t\t}\n\t\tconst initial = (sender?.name || 'S').charAt(0).toUpperCase();\n\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">${initial}</div>`;\n\t}\n\n\t_renderConversationAvatar(conversation) {\n\t\tif (!conversation?.participants?.length) {\n\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">S</div>`;\n\t\t}\n\t\tconst p = conversation.participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-small\" src=\"${p.avatarUrl}\" alt=\"${p.name}\" />`;\n\t\t}\n\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">${(p.name || 'S').charAt(0).toUpperCase()}</div>`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${3 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar\" style=\"background: ${colors[i % colors.length]}; z-index: ${3 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_formatMessageTime(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\treturn date.toLocaleTimeString('en-US', {\n\t\t\thour: 'numeric',\n\t\t\tminute: '2-digit',\n\t\t\thour12: true,\n\t\t});\n\t}\n\n\t_formatMessageContent(content) {\n\t\tif (!content) return '';\n\t\t// Basic HTML escaping and line breaks\n\t\treturn content\n\t\t\t.replace(/&/g, '&')\n\t\t\t.replace(/</g, '<')\n\t\t\t.replace(/>/g, '>')\n\t\t\t.replace(/\\n/g, '<br>');\n\t}\n\n\t_appendMessage(message) {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tconst emptyState = messagesContainer.querySelector('.messenger-chat-empty');\n\t\tif (emptyState) {\n\t\t\temptyState.remove();\n\t\t}\n\n\t\tconst messageHtml = this._renderMessage(message);\n\t\tconst tempDiv = document.createElement('div');\n\t\ttempDiv.innerHTML = messageHtml;\n\t\tmessagesContainer.appendChild(tempDiv.firstElementChild);\n\t}\n\n\t_scrollToBottom() {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tmessagesContainer.scrollTop = messagesContainer.scrollHeight;\n\t\t\t}, 50);\n\t\t}\n\t}\n\n\t_attachEvents() {\n\t\t// Back button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-back-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('messages');\n\t\t\t});\n\n\t\t// Close button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Compose input\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.messenger-compose-send');\n\n\t\tinput.addEventListener('input', () => {\n\t\t\t// Auto-resize textarea\n\t\t\tinput.style.height = 'auto';\n\t\t\tinput.style.height = Math.min(input.scrollHeight, 120) + 'px';\n\n\t\t\t// Enable/disable send button\n\t\t\tsendBtn.disabled = !input.value.trim();\n\t\t});\n\n\t\tinput.addEventListener('keydown', (e) => {\n\t\t\tif (e.key === 'Enter' && !e.shiftKey) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._sendMessage();\n\t\t\t}\n\t\t});\n\n\t\tsendBtn.addEventListener('click', () => {\n\t\t\tthis._sendMessage();\n\t\t});\n\t}\n\n\t_sendMessage() {\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst content = input.value.trim();\n\n\t\tif (!content) return;\n\n\t\t// Add message to state\n\t\tconst message = {\n\t\t\tid: 'msg_' + Date.now(),\n\t\t\tcontent: content,\n\t\t\tisOwn: true,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tthis.state.addMessage(this.state.activeConversationId, message);\n\n\t\t// Clear input\n\t\tinput.value = '';\n\t\tinput.style.height = 'auto';\n\t\tthis.element.querySelector('.messenger-compose-send').disabled = true;\n\n\t\t// Emit event for API integration\n\t\tif (this.options.onSendMessage) {\n\t\t\tthis.options.onSendMessage(this.state.activeConversationId, message);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * ConversationsView - Message thread list\n */\nexport class ConversationsView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-conversations-view';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'conversationAdded' ||\n\t\t\t\ttype === 'conversationRead'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversations = this.state.conversations;\n\t\tconst avatarsHtml = this._renderAvatarStack();\n\n\t\tlet conversationsHtml;\n\t\tif (conversations.length === 0) {\n\t\t\tconversationsHtml = `\n\t\t\t\t<div class=\"messenger-conversations-empty\">\n\t\t\t\t\t<div class=\"messenger-conversations-empty-icon\">\n\t\t\t\t\t\t<i class=\"ph ph-chat\" style=\"font-size: 48px;\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No conversations yet</h3>\n\t\t\t\t\t<p>Start a new conversation with our team</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t} else {\n\t\t\tconversationsHtml = `\n\t\t\t\t<div class=\"messenger-conversations-list\">\n\t\t\t\t\t${conversations.map((conv) => this._renderConversationItem(conv)).join('')}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-conversations-header\">\n\t\t\t\t<h2>Messages</h2>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-conversations-body\">\n\t\t\t\t${conversationsHtml}\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-conversations-footer\">\n\t\t\t\t<button class=\"messenger-new-message-btn\">\n\t\t\t\t\t<div class=\"messenger-new-message-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t<span>Send us a message</span>\n\t\t\t\t\t<i class=\"ph ph-arrow-right\" style=\"font-size: 16px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderConversationItem(conversation) {\n\t\tconst unreadClass = conversation.unread > 0 ? 'unread' : '';\n\t\tconst timeAgo = this._formatTimeAgo(conversation.lastMessageTime);\n\t\tconst avatarsHtml = this._renderConversationAvatars(\n\t\t\tconversation.participants\n\t\t);\n\n\t\treturn `\n\t\t\t<div class=\"messenger-conversation-item ${unreadClass}\" data-conversation-id=\"${conversation.id}\">\n\t\t\t\t<div class=\"messenger-conversation-avatars\">\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-conversation-content\">\n\t\t\t\t\t<div class=\"messenger-conversation-header\">\n\t\t\t\t\t\t<span class=\"messenger-conversation-title\">${conversation.title || 'Chat with team'}</span>\n\t\t\t\t\t\t<span class=\"messenger-conversation-time\">${timeAgo}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-conversation-preview\">\n\t\t\t\t\t\t${conversation.unread > 0 ? '<span class=\"messenger-unread-dot\"></span>' : ''}\n\t\t\t\t\t\t<span class=\"messenger-conversation-message\">${this._truncateMessage(conversation.lastMessage)}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderConversationAvatars(participants) {\n\t\tif (!participants || participants.length === 0) {\n\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-medium\" style=\"background: #5856d6;\">S</div>`;\n\t\t}\n\n\t\tconst p = participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-medium\" src=\"${p.avatarUrl}\" alt=\"${p.name}\" />`;\n\t\t}\n\t\treturn `<div class=\"messenger-avatar messenger-avatar-medium\" style=\"background: ${this._getAvatarColor(0)};\">${(p.name || 'S').charAt(0).toUpperCase()}</div>`;\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack messenger-avatar-stack-small\">\n\t\t\t\t\t<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-small\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${2 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: ${this._getAvatarColor(i)}; z-index: ${2 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack messenger-avatar-stack-small\">${avatarItems}</div>`;\n\t}\n\n\t_getAvatarColor(index) {\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\treturn colors[index % colors.length];\n\t}\n\n\t_formatTimeAgo(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst now = new Date();\n\t\tconst diffMs = now - date;\n\t\tconst diffMins = Math.floor(diffMs / 60000);\n\t\tconst diffHours = Math.floor(diffMs / 3600000);\n\t\tconst diffDays = Math.floor(diffMs / 86400000);\n\n\t\tif (diffMins < 1) return 'now';\n\t\tif (diffMins < 60) return `${diffMins}m`;\n\t\tif (diffHours < 24) return `${diffHours}h`;\n\t\tif (diffDays < 7) return `${diffDays}d`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_truncateMessage(message) {\n\t\tif (!message) return 'No messages yet';\n\t\tconst maxLength = 50;\n\t\tif (message.length <= maxLength) return message;\n\t\treturn message.substring(0, maxLength) + '...';\n\t}\n\n\t_attachEvents() {\n\t\t// Close button\n\t\tconst closeBtn = this.element.querySelector('.messenger-close-btn');\n\t\tif (closeBtn) {\n\t\t\tcloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\t// Conversation items\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-conversation-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst convId = item.dataset.conversationId;\n\t\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\t\tthis.state.markAsRead(convId);\n\t\t\t\t\tthis.state.setView('chat');\n\t\t\t\t});\n\t\t\t});\n\n\t\t// New message button\n\t\tconst newMsgBtn = this.element.querySelector('.messenger-new-message-btn');\n\t\tif (newMsgBtn) {\n\t\t\tnewMsgBtn.addEventListener('click', () => {\n\t\t\t\tthis._startNewConversation();\n\t\t\t});\n\t\t}\n\t}\n\n\t_startNewConversation() {\n\t\t// Create a new conversation and navigate to chat\n\t\tconst newConv = {\n\t\t\tid: 'conv_' + Date.now(),\n\t\t\ttitle: 'New conversation',\n\t\t\tparticipants: [],\n\t\t\tlastMessage: null,\n\t\t\tlastMessageTime: new Date().toISOString(),\n\t\t\tunread: 0,\n\t\t};\n\t\tthis.state.addConversation(newConv);\n\t\tthis.state.setActiveConversation(newConv.id);\n\t\tthis.state.setView('chat');\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * HelpView - Help collections browse with Intercom-style design\n */\nexport class HelpView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-help-view';\n\n\t\tthis._updateContent();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'helpArticlesUpdate' || type === 'helpSearchChange') {\n\t\t\t\tthis._updateCollectionsList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst searchQuery = this.state.helpSearchQuery || '';\n\t\tconst collections = this.state.helpArticles || [];\n\t\tconst collectionCount = collections.length;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-help-header\">\n\t\t\t\t<h2>Help</h2>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-help-search\">\n\t\t\t\t<div class=\"messenger-help-search-wrapper\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclass=\"messenger-help-search-input\"\n\t\t\t\t\t\tplaceholder=\"Search for help\"\n\t\t\t\t\t\tvalue=\"${searchQuery}\"\n\t\t\t\t\t/>\n\t\t\t\t\t<i class=\"ph ph-magnifying-glass messenger-help-search-icon\" style=\"font-size: 18px;\"></i>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-help-body\">\n\t\t\t\t<div class=\"messenger-help-collections-header\">\n\t\t\t\t\t${collectionCount} collections\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-help-collections\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateCollectionsList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateCollectionsList() {\n\t\tconst collectionsContainer = this.element.querySelector(\n\t\t\t'.messenger-help-collections'\n\t\t);\n\t\tconst collections = this.state.helpArticles || [];\n\t\tconst searchQuery = (this.state.helpSearchQuery || '').toLowerCase();\n\n\t\t// Filter collections by search\n\t\tconst filteredCollections = searchQuery\n\t\t\t? collections.filter(\n\t\t\t\t\t(c) =>\n\t\t\t\t\t\tc.title.toLowerCase().includes(searchQuery) ||\n\t\t\t\t\t\t(c.description && c.description.toLowerCase().includes(searchQuery))\n\t\t\t\t)\n\t\t\t: collections;\n\n\t\t// Update collection count\n\t\tconst headerEl = this.element.querySelector(\n\t\t\t'.messenger-help-collections-header'\n\t\t);\n\t\tif (headerEl) {\n\t\t\theaderEl.textContent = `${filteredCollections.length} collections`;\n\t\t}\n\n\t\tif (filteredCollections.length === 0) {\n\t\t\tcollectionsContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tcollectionsContainer.innerHTML = filteredCollections\n\t\t\t.map((collection) => this._renderCollectionItem(collection))\n\t\t\t.join('');\n\n\t\t// Attach click events\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_renderCollectionItem(collection) {\n\t\tconst articleCount = collection.articleCount || 0;\n\t\treturn `\n\t\t\t<div class=\"messenger-help-collection\" data-collection-id=\"${collection.id}\">\n\t\t\t\t<div class=\"messenger-help-collection-content\">\n\t\t\t\t\t<h3 class=\"messenger-help-collection-title\">${collection.title}</h3>\n\t\t\t\t\t<p class=\"messenger-help-collection-desc\">${collection.description || ''}</p>\n\t\t\t\t\t<span class=\"messenger-help-collection-count\">${articleCount} articles</span>\n\t\t\t\t</div>\n\t\t\t\t<i class=\"ph ph-caret-right messenger-help-collection-arrow\" style=\"font-size: 20px;\"></i>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderEmptyState() {\n\t\tconst isSearching = this.state.helpSearchQuery;\n\n\t\tif (isSearching) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-help-empty\">\n\t\t\t\t\t<div class=\"messenger-help-empty-icon\">\n\t\t\t\t\t\t<i class=\"ph ph-magnifying-glass\" style=\"font-size: 48px;\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No results found</h3>\n\t\t\t\t\t<p>Try a different search term</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"messenger-help-empty\">\n\t\t\t\t<div class=\"messenger-help-empty-icon\">\n\t\t\t\t\t<i class=\"ph ph-question\" style=\"font-size: 48px;\"></i>\n\t\t\t\t</div>\n\t\t\t\t<h3>Help collections</h3>\n\t\t\t\t<p>No collections available yet</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\t// Close button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Search input\n\t\tconst searchInput = this.element.querySelector(\n\t\t\t'.messenger-help-search-input'\n\t\t);\n\t\tlet searchTimeout;\n\t\tsearchInput.addEventListener('input', (e) => {\n\t\t\tclearTimeout(searchTimeout);\n\t\t\tsearchTimeout = setTimeout(() => {\n\t\t\t\tthis.state.setHelpSearchQuery(e.target.value);\n\t\t\t}, 300);\n\t\t});\n\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_attachCollectionEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-help-collection')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst collectionId = item.dataset.collectionId;\n\t\t\t\t\tconst collection = this.state.helpArticles.find(\n\t\t\t\t\t\t(c) => c.id === collectionId\n\t\t\t\t\t);\n\t\t\t\t\tif (collection && collection.url) {\n\t\t\t\t\t\twindow.open(collection.url, '_blank');\n\t\t\t\t\t} else if (this.options.onArticleClick) {\n\t\t\t\t\t\tthis.options.onArticleClick(collection);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * HomeView - Welcome screen with team info and quick actions\n */\nexport class HomeView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-home-view';\n\n\t\tthis._updateContent();\n\n\t\t// Subscribe to state changes to re-render when data loads\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'homeChangelogUpdate' || type === 'conversationsUpdate') {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst avatarsHtml = this._renderAvatarStack();\n\t\tconst recentChangelogHtml = this._renderRecentChangelog();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-home-header\">\n\t\t\t\t<div class=\"messenger-home-header-top\">\n\t\t\t\t\t<div class=\"messenger-home-logo\">\n\t\t\t\t\t\t${this.options.logoUrl ? `<img src=\"${this.options.logoUrl}\" alt=\"${this.state.teamName}\" />` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-home-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-home-welcome\">\n\t\t\t\t\t<span class=\"messenger-home-greeting\">Hello there.</span>\n\t\t\t\t\t<span class=\"messenger-home-question\">${this.state.welcomeMessage}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-home-body\">\n\t\t\t\t<button class=\"messenger-home-message-btn\">\n\t\t\t\t\t<span>Send us a message</span>\n\t\t\t\t\t<i class=\"ph ph-arrow-right\" style=\"font-size: 16px;\"></i>\n\t\t\t\t</button>\n\n\t\t\t\t${this._renderFeaturedCard()}\n\n\t\t\t\t${recentChangelogHtml}\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\t// Default avatars with initials\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${3 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar\" style=\"background: ${this._getAvatarColor(i)}; z-index: ${3 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_getAvatarColor(index) {\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\treturn colors[index % colors.length];\n\t}\n\n\t_renderFeaturedCard() {\n\t\t// Only show if there's featured content configured\n\t\tif (!this.options.featuredContent) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst { title, description, imageUrl, action } =\n\t\t\tthis.options.featuredContent;\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-featured\">\n\t\t\t\t${imageUrl ? `<img src=\"${imageUrl}\" alt=\"${title}\" class=\"messenger-home-featured-image\" onerror=\"this.style.display='none';\" />` : ''}\n\t\t\t\t<div class=\"messenger-home-featured-content\">\n\t\t\t\t\t<h3>${title}</h3>\n\t\t\t\t\t<p>${description}</p>\n\t\t\t\t</div>\n\t\t\t\t${action ? `<button class=\"messenger-home-featured-btn\" data-action=\"${action.type}\" data-value=\"${action.value}\">${action.label}</button>` : ''}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderRecentChangelog() {\n\t\t// Show recent changelog preview as cards with images\n\t\tconst changelogItems = this.state.homeChangelogItems;\n\t\tif (changelogItems.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst changelogHtml = changelogItems\n\t\t\t.map(\n\t\t\t\t(item) => `\n\t\t\t<div class=\"messenger-home-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"messenger-home-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t\t${item.coverText ? `<span class=\"messenger-home-changelog-cover-text\">${item.coverText}</span>` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"messenger-home-changelog-card-content\">\n\t\t\t\t\t<h4 class=\"messenger-home-changelog-card-title\">${item.title}</h4>\n\t\t\t\t\t<p class=\"messenger-home-changelog-card-desc\">${item.description || ''}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-changelog-section\">\n\t\t\t\t${changelogHtml}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\tconst now = new Date();\n\t\tconst diffDays = Math.floor((now - date) / (1000 * 60 * 60 * 24));\n\n\t\tif (diffDays === 0) return 'Today';\n\t\tif (diffDays === 1) return 'Yesterday';\n\t\tif (diffDays < 7) return `${diffDays}d ago`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_attachEvents() {\n\t\t// Close button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Send message button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-home-message-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('messages');\n\t\t\t});\n\n\t\t// Changelog items\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-home-changelog-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\t// Navigate to changelog view with specific item selected\n\t\t\t\t\tthis.state.setView('changelog');\n\t\t\t\t});\n\t\t\t});\n\n\t\t// See all changelog\n\t\tconst seeAllBtn = this.element.querySelector(\n\t\t\t'.messenger-home-changelog-all'\n\t\t);\n\t\tif (seeAllBtn) {\n\t\t\tseeAllBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('changelog');\n\t\t\t});\n\t\t}\n\n\t\t// Featured card action\n\t\tconst featuredBtn = this.element.querySelector(\n\t\t\t'.messenger-home-featured-btn'\n\t\t);\n\t\tif (featuredBtn) {\n\t\t\tfeaturedBtn.addEventListener('click', () => {\n\t\t\t\tconst action = featuredBtn.dataset.action;\n\t\t\t\tconst value = featuredBtn.dataset.value;\n\t\t\t\tif (action === 'url') {\n\t\t\t\t\twindow.open(value, '_blank');\n\t\t\t\t} else if (action === 'view') {\n\t\t\t\t\tthis.state.setView(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * MessengerWidget - Full-featured Messenger/Chat widget\n */\nimport { BaseWidget } from './BaseWidget.js';\nimport { MessengerState } from './messenger/MessengerState.js';\nimport { MessengerLauncher } from './messenger/components/MessengerLauncher.js';\nimport { MessengerPanel } from './messenger/components/MessengerPanel.js';\nimport { ChangelogView } from './messenger/views/ChangelogView.js';\nimport { ChatView } from './messenger/views/ChatView.js';\nimport { ConversationsView } from './messenger/views/ConversationsView.js';\nimport { HelpView } from './messenger/views/HelpView.js';\nimport { HomeView } from './messenger/views/HomeView.js';\n\nexport class MessengerWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'messenger' });\n\n\t\tthis.messengerOptions = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || 'light',\n\t\t\tteamName: options.teamName || 'Support',\n\t\t\tteamAvatars: options.teamAvatars || [],\n\t\t\twelcomeMessage: options.welcomeMessage || 'How can we help?',\n\t\t\tenableHelp: options.enableHelp !== false,\n\t\t\tenableChangelog: options.enableChangelog !== false,\n\t\t\tlogoUrl: options.logoUrl || 'https://feedback-sdk.product7.io/p7.png',\n\t\t\tfeaturedContent: options.featuredContent || null,\n\t\t\tprimaryColor: options.primaryColor || '#1c1c1e',\n\t\t\t// Callbacks\n\t\t\tonSendMessage: options.onSendMessage || null,\n\t\t\tonArticleClick: options.onArticleClick || null,\n\t\t\tonChangelogClick: options.onChangelogClick || null,\n\t\t};\n\n\t\t// Create state\n\t\tthis.messengerState = new MessengerState({\n\t\t\tteamName: this.messengerOptions.teamName,\n\t\t\tteamAvatars: this.messengerOptions.teamAvatars,\n\t\t\twelcomeMessage: this.messengerOptions.welcomeMessage,\n\t\t\tenableHelp: this.messengerOptions.enableHelp,\n\t\t\tenableChangelog: this.messengerOptions.enableChangelog,\n\t\t\tuserContext: this.sdk?.apiService?.getUserContext() || null,\n\t\t});\n\n\t\tthis.launcher = null;\n\t\tthis.panel = null;\n\n\t\t// Bind methods\n\t\tthis._handleOpenChange = this._handleOpenChange.bind(this);\n\t}\n\n\t_render() {\n\t\t// Create container\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = `messenger-widget theme-${this.messengerOptions.theme}`;\n\t\tcontainer.style.zIndex = '999999';\n\n\t\t// Create launcher\n\t\tthis.launcher = new MessengerLauncher(this.messengerState, {\n\t\t\tposition: this.messengerOptions.position,\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t});\n\t\tcontainer.appendChild(this.launcher.render());\n\n\t\t// Create panel\n\t\tthis.panel = new MessengerPanel(this.messengerState, {\n\t\t\tposition: this.messengerOptions.position,\n\t\t\ttheme: this.messengerOptions.theme,\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t\tlogoUrl: this.messengerOptions.logoUrl,\n\t\t\tfeaturedContent: this.messengerOptions.featuredContent,\n\t\t\tonSendMessage:\n\t\t\t\tthis.messengerOptions.onSendMessage ||\n\t\t\t\tthis._handleSendMessage.bind(this),\n\t\t\tonArticleClick: this.messengerOptions.onArticleClick,\n\t\t\tonChangelogClick: this.messengerOptions.onChangelogClick,\n\t\t});\n\n\t\t// Register views\n\t\tthis.panel.registerView('home', HomeView);\n\t\tthis.panel.registerView('messages', ConversationsView);\n\t\tthis.panel.registerView('chat', ChatView);\n\t\tthis.panel.registerView('help', HelpView);\n\t\tthis.panel.registerView('changelog', ChangelogView);\n\n\t\tcontainer.appendChild(this.panel.render());\n\t\tthis.panel.hide();\n\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\t// Subscribe to state changes\n\t\tthis._stateUnsubscribe = this.messengerState.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._handleOpenChange(data.isOpen);\n\t\t\t}\n\t\t});\n\t}\n\n\t_handleOpenChange(isOpen) {\n\t\tif (isOpen) {\n\t\t\tthis.panel.show();\n\t\t\tthis.sdk.eventBus.emit('messenger:opened', { widget: this });\n\t\t} else {\n\t\t\tthis.panel.hide();\n\t\t\tthis.messengerState.reset();\n\t\t\tthis.sdk.eventBus.emit('messenger:closed', { widget: this });\n\t\t}\n\t}\n\n\tasync _handleSendMessage(conversationId, message) {\n\t\t// Default message handler - can be overridden\n\t\tthis.sdk.eventBus.emit('messenger:messageSent', {\n\t\t\twidget: this,\n\t\t\tconversationId,\n\t\t\tmessage,\n\t\t});\n\n\t\t// In mock mode, simulate a response\n\t\tif (this.apiService?.mock) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst response = {\n\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\tcontent: \"Thanks for your message! We'll get back to you soon.\",\n\t\t\t\t\tisOwn: false,\n\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\tsender: {\n\t\t\t\t\t\tname: 'Support Team',\n\t\t\t\t\t\tavatarUrl: null,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tthis.messengerState.addMessage(conversationId, response);\n\t\t\t}, 1500);\n\t\t}\n\t}\n\n\t/**\n\t * Open the messenger panel\n\t */\n\topen() {\n\t\tthis.messengerState.setOpen(true);\n\t}\n\n\t/**\n\t * Close the messenger panel\n\t */\n\tclose() {\n\t\tthis.messengerState.setOpen(false);\n\t}\n\n\t/**\n\t * Toggle the messenger panel\n\t */\n\ttoggle() {\n\t\tthis.messengerState.setOpen(!this.messengerState.isOpen);\n\t}\n\n\t/**\n\t * Navigate to a specific view\n\t */\n\tnavigateTo(view) {\n\t\tthis.messengerState.setView(view);\n\t\tif (!this.messengerState.isOpen) {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\t/**\n\t * Set conversations\n\t */\n\tsetConversations(conversations) {\n\t\tthis.messengerState.setConversations(conversations);\n\t}\n\n\t/**\n\t * Add a message to a conversation\n\t */\n\taddMessage(conversationId, message) {\n\t\tthis.messengerState.addMessage(conversationId, message);\n\t}\n\n\t/**\n\t * Set help articles\n\t */\n\tsetHelpArticles(articles) {\n\t\tthis.messengerState.setHelpArticles(articles);\n\t}\n\n\t/**\n\t * Set home changelog items\n\t */\n\tsetHomeChangelogItems(items) {\n\t\tthis.messengerState.setHomeChangelogItems(items);\n\t}\n\n\t/**\n\t * Set changelog items\n\t */\n\tsetChangelogItems(items) {\n\t\tthis.messengerState.setChangelogItems(items);\n\t}\n\n\t/**\n\t * Update unread count (for external updates)\n\t */\n\tsetUnreadCount(count) {\n\t\tthis.messengerState.unreadCount = count;\n\t\tthis.messengerState._notify('unreadCountChange', { count });\n\t}\n\n\t/**\n\t * Get current state\n\t */\n\tgetState() {\n\t\treturn {\n\t\t\tisOpen: this.messengerState.isOpen,\n\t\t\tcurrentView: this.messengerState.currentView,\n\t\t\tunreadCount: this.messengerState.unreadCount,\n\t\t\tconversations: this.messengerState.conversations,\n\t\t};\n\t}\n\n\t/**\n\t * Load initial data (mock or API)\n\t */\n\tasync loadInitialData() {\n\t\t// Load conversations\n\t\ttry {\n\t\t\tconst conversations = await this._fetchConversations();\n\t\t\tthis.messengerState.setConversations(conversations);\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to load conversations:', error);\n\t\t}\n\n\t\t// Load help articles if enabled\n\t\tif (this.messengerOptions.enableHelp) {\n\t\t\ttry {\n\t\t\t\tconst articles = await this._fetchHelpArticles();\n\t\t\t\tthis.messengerState.setHelpArticles(articles);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[MessengerWidget] Failed to load help articles:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Load changelog if enabled\n\t\tif (this.messengerOptions.enableChangelog) {\n\t\t\ttry {\n\t\t\t\tconst { homeItems, changelogItems } = await this._fetchChangelog();\n\t\t\t\tthis.messengerState.setHomeChangelogItems(homeItems);\n\t\t\t\tthis.messengerState.setChangelogItems(changelogItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[MessengerWidget] Failed to load changelog:', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync _fetchConversations() {\n\t\t// Mock data for now\n\t\tif (this.apiService?.mock) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'conv_1',\n\t\t\t\t\ttitle: 'Chat with Sarah',\n\t\t\t\t\tparticipants: [{ name: 'Sarah', avatarUrl: null }],\n\t\t\t\t\tlastMessage: \"Sarah: Hi 👋 I'm Sarah. How can I help today?\",\n\t\t\t\t\tlastMessageTime: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\t\t\t\tunread: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'conv_2',\n\t\t\t\t\ttitle: 'Chat with Tom',\n\t\t\t\t\tparticipants: [{ name: 'Tom', avatarUrl: null }],\n\t\t\t\t\tlastMessage: 'Tom: The feature will be available next week.',\n\t\t\t\t\tlastMessageTime: new Date(\n\t\t\t\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000\n\t\t\t\t\t).toISOString(),\n\t\t\t\t\tunread: 0,\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\t// TODO: Implement API call\n\t\treturn [];\n\t}\n\n\tasync _fetchHelpArticles() {\n\t\t// Mock data for collections\n\t\tif (this.apiService?.mock) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_1',\n\t\t\t\t\ttitle: 'Product Overview',\n\t\t\t\t\tdescription: 'See how your AI-first customer service solution works.',\n\t\t\t\t\tarticleCount: 24,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_2',\n\t\t\t\t\ttitle: 'Getting Started',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Everything you need to know to get started with Product7.',\n\t\t\t\t\tarticleCount: 30,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_3',\n\t\t\t\t\ttitle: 'AI Agent',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Resolving customer questions instantly and accurately—from live chat to email.',\n\t\t\t\t\tarticleCount: 82,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_4',\n\t\t\t\t\ttitle: 'Channels',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Enabling the channels you use to communicate with customers, all from the Inbox.',\n\t\t\t\t\tarticleCount: 45,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_5',\n\t\t\t\t\ttitle: 'Billing & Payments',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Manage your subscription, invoices, and payment methods.',\n\t\t\t\t\tarticleCount: 12,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\t// TODO: Implement API call\n\t\treturn [];\n\t}\n\n\tasync _fetchChangelog() {\n\t\t// Mock data for now - simulating changelog API response\n\t\tif (this.apiService?.mock) {\n\t\t\treturn {\n\t\t\t\thomeItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_5',\n\t\t\t\t\t\ttitle: 'New integrations available',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Connect with more tools you love and streamline your workflow.',\n\t\t\t\t\t\ttags: ['Integration'],\n\t\t\t\t\t\tcoverImage: 'https://feedback-sdk.product7.io/700x400__5_.png',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 14 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_2',\n\t\t\t\t\t\ttitle: 'A new era of Insights has arrived',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'We announced Fin Insights, a groundbreaking, AI-powered product that gives you complete visibility into every customer conversation.',\n\t\t\t\t\t\ttags: ['New feature', 'AI'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/Intercom_Messenger__1_.jpg',\n\t\t\t\t\t\tcoverText: 'Watch our major product launch on-demand',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 5 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_1',\n\t\t\t\t\t\ttitle: 'The 2025 Customer Service Transformation Report',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Learn how AI has transformed customer service from the ground up—rewriting its economics and reshaping expectations.',\n\t\t\t\t\t\ttags: ['Report'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/Main_Report_Email_Header.png',\n\t\t\t\t\t\tcoverText: 'Customer service trends as we know them are dead.',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 2 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchangelogItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_4',\n\t\t\t\t\t\ttitle: 'Enhanced conversation analytics',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Get deeper insights into your customer conversations with our new analytics dashboard.',\n\t\t\t\t\t\ttags: ['Analytics'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/cgangelog-Frame%202087334450.jpg',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 10 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_3',\n\t\t\t\t\t\ttitle: 'Escalation guidance for complex issues',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'New AI-powered escalation guidance helps your team handle complex customer issues more effectively.',\n\t\t\t\t\t\ttags: ['New feature', 'AI'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/cgangelog-image-escalation-guidance-event@2x.png',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 7 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\t// TODO: Implement API call for changelogs\n\t\treturn { homeItems: [], changelogItems: [] };\n\t}\n\n\tonMount() {\n\t\t// Load initial data after mounting\n\t\tthis.loadInitialData();\n\t}\n\n\tonDestroy() {\n\t\tif (this._stateUnsubscribe) {\n\t\t\tthis._stateUnsubscribe();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.launcher) {\n\t\t\tthis.launcher.destroy();\n\t\t}\n\t\tif (this.panel) {\n\t\t\tthis.panel.destroy();\n\t\t}\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class SurveyWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'survey' });\n\n\t\tthis.surveyOptions = {\n\t\t\tsurveyId: options.surveyId || null, // Backend survey ID for API calls\n\t\t\tsurveyType: options.surveyType || 'nps', // 'nps', 'csat', 'ces', 'custom'\n\t\t\tposition: options.position || 'bottom-right', // 'bottom-right', 'bottom-left', 'center', 'bottom'\n\t\t\ttitle: options.title || null,\n\t\t\tdescription: options.description || null,\n\t\t\tlowLabel: options.lowLabel || null,\n\t\t\thighLabel: options.highLabel || null,\n\t\t\tcustomQuestions: options.customQuestions || [],\n\t\t\ttheme: options.theme || 'light',\n\t\t\tonSubmit: options.onSubmit || null,\n\t\t\tonDismiss: options.onDismiss || null,\n\t\t};\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\t_render() {\n\t\t// Survey widget doesn't render a trigger button, it's shown programmatically\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'feedback-survey-container';\n\t\tcontainer.style.display = 'none';\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\t// Events are attached when survey is shown\n\t}\n\n\tshow() {\n\t\tthis._renderSurvey();\n\t\tthis.surveyState.isVisible = true;\n\t\tthis.sdk.eventBus.emit('survey:shown', {\n\t\t\twidget: this,\n\t\t\ttype: this.surveyOptions.surveyType,\n\t\t});\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tthis._closeSurvey();\n\t\treturn this;\n\t}\n\n\t_renderSurvey() {\n\t\t// Remove any existing survey\n\t\tthis._closeSurvey();\n\n\t\tconst config = this._getSurveyConfig();\n\t\tconst positionStyles = this._getPositionStyles();\n\t\tconst themeStyles =\n\t\t\tthis.surveyOptions.theme === 'dark'\n\t\t\t\t? 'background: #1a1a1a; color: #fff;'\n\t\t\t\t: 'background: #fff; color: #1d1d1f;';\n\n\t\t// Create backdrop for center position\n\t\tif (this.surveyOptions.position === 'center') {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'feedback-survey-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t\tthis.backdropElement.addEventListener('click', () =>\n\t\t\t\tthis._handleDismiss()\n\t\t\t);\n\t\t}\n\n\t\tthis.surveyElement = document.createElement('div');\n\t\tthis.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position} theme-${this.surveyOptions.theme}`;\n\t\tthis.surveyElement.style.cssText = `position: fixed; ${positionStyles} z-index: 10000; ${themeStyles} border-radius: 16px; box-shadow: 0 20px 60px rgba(0,0,0,0.3); padding: 24px; min-width: 320px; max-width: 400px; font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;`;\n\n\t\tthis.surveyElement.innerHTML = `\n\t\t\t<button class=\"feedback-survey-close\" style=\"position: absolute; top: 12px; right: 12px; background: none; border: none; font-size: 20px; cursor: pointer; color: ${this.surveyOptions.theme === 'dark' ? '#888' : '#86868b'}; line-height: 1;\">×</button>\n\t\t\t<h3 class=\"feedback-survey-title\" style=\"margin: 0 0 8px 0; font-size: 18px; font-weight: 600; padding-right: 24px;\">${config.title}</h3>\n\t\t\t<p class=\"feedback-survey-description\" style=\"color: ${this.surveyOptions.theme === 'dark' ? '#aaa' : '#86868b'}; margin: 0 0 20px 0; font-size: 14px;\">${config.description}</p>\n\t\t\t<div class=\"feedback-survey-content\">${config.html}</div>\n\t\t\t<div class=\"feedback-survey-feedback\" style=\"margin-top: 16px;\">\n\t\t\t\t<textarea class=\"feedback-survey-textarea\" placeholder=\"Any additional feedback? (optional)\" style=\"width: 100%; padding: 12px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#333' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; resize: none; height: 80px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; font-family: inherit; box-sizing: border-box;\"></textarea>\n\t\t\t</div>\n\t\t\t<button class=\"feedback-survey-submit\" style=\"width: 100%; margin-top: 12px; padding: 12px; background: #007aff; color: white; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; font-family: inherit;\">Submit</button>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.surveyElement);\n\t\tthis._attachSurveyEvents();\n\n\t\t// Animate in\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.surveyElement.style.opacity = '1';\n\t\t\tthis.surveyElement.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(1)'\n\t\t\t\t\t: 'translateY(0)';\n\t\t});\n\t}\n\n\t_getSurveyConfig() {\n\t\tconst configs = {\n\t\t\tnps: {\n\t\t\t\ttitle:\n\t\t\t\t\tthis.surveyOptions.title || 'How likely are you to recommend us?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'On a scale of 0-10, how likely are you to recommend our product to a friend or colleague?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-nps\" style=\"display: flex; justify-content: space-between; gap: 4px;\">\n\t\t\t\t\t\t${[...Array(11).keys()]\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(n) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-nps-btn\" data-score=\"${n}\" style=\"width: 28px; height: 36px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 6px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa'}; cursor: pointer; font-size: 12px; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; transition: all 0.15s;\">${n}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"display: flex; justify-content: space-between; margin-top: 8px; font-size: 11px; color: ${this.surveyOptions.theme === 'dark' ? '#888' : '#86868b'};\">\n\t\t\t\t\t\t<span>${this.surveyOptions.lowLabel || 'Not likely'}</span>\n\t\t\t\t\t\t<span>${this.surveyOptions.highLabel || 'Very likely'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcsat: {\n\t\t\t\ttitle: this.surveyOptions.title || 'How satisfied are you?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'How would you rate your overall satisfaction with our product?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-csat\" style=\"display: flex; justify-content: center; gap: 16px;\">\n\t\t\t\t\t\t${['😞', '😕', '😐', '🙂', '😄']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(emoji, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-csat-btn\" data-score=\"${i + 1}\" style=\"background: none; border: none; cursor: pointer; font-size: 36px; transition: transform 0.15s; padding: 8px;\">${emoji}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"display: flex; justify-content: space-between; margin-top: 8px; font-size: 11px; color: ${this.surveyOptions.theme === 'dark' ? '#888' : '#86868b'};\">\n\t\t\t\t\t\t<span>${this.surveyOptions.lowLabel || 'Very dissatisfied'}</span>\n\t\t\t\t\t\t<span>${this.surveyOptions.highLabel || 'Very satisfied'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tces: {\n\t\t\t\ttitle: this.surveyOptions.title || 'How easy was it?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'How easy was it to accomplish your task today?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-ces\" style=\"display: flex; justify-content: space-between; gap: 8px;\">\n\t\t\t\t\t\t${['Very Difficult', 'Difficult', 'Neutral', 'Easy', 'Very Easy']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(label, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-ces-btn\" data-score=\"${i + 1}\" style=\"flex: 1; padding: 12px 8px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa'}; cursor: pointer; font-size: 11px; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; transition: all 0.15s;\">${label}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcustom: {\n\t\t\t\ttitle: this.surveyOptions.title || 'Quick Feedback',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'Help us improve by answering a few questions.',\n\t\t\t\thtml: this._renderCustomQuestions(),\n\t\t\t},\n\t\t};\n\n\t\treturn configs[this.surveyOptions.surveyType] || configs.nps;\n\t}\n\n\t_renderCustomQuestions() {\n\t\tif (\n\t\t\t!this.surveyOptions.customQuestions ||\n\t\t\tthis.surveyOptions.customQuestions.length === 0\n\t\t) {\n\t\t\t// Default custom questions\n\t\t\treturn `\n\t\t\t\t<div style=\"margin-bottom: 16px;\">\n\t\t\t\t\t<label style=\"display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500;\">What feature do you use most?</label>\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"feature\" style=\"width: 100%; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'};\">\n\t\t\t\t\t\t<option value=\"\">Select a feature</option>\n\t\t\t\t\t\t<option value=\"feedback\">Feedback Collection</option>\n\t\t\t\t\t\t<option value=\"surveys\">Surveys</option>\n\t\t\t\t\t\t<option value=\"analytics\">Analytics</option>\n\t\t\t\t\t\t<option value=\"integrations\">Integrations</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<label style=\"display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500;\">How often do you use it?</label>\n\t\t\t\t\t<div class=\"feedback-survey-frequency\" style=\"display: flex; gap: 8px;\">\n\t\t\t\t\t\t${['Daily', 'Weekly', 'Monthly', 'Rarely']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(freq) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-freq-btn\" data-freq=\"${freq}\" style=\"flex: 1; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa'}; cursor: pointer; font-size: 12px; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; transition: all 0.15s;\">${freq}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.surveyOptions.customQuestions\n\t\t\t.map(\n\t\t\t\t(q, index) => `\n\t\t\t<div style=\"margin-bottom: 16px;\">\n\t\t\t\t<label style=\"display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500;\">${q.label}</label>\n\t\t\t\t${this._renderQuestionInput(q, index)}\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\t}\n\n\t_renderQuestionInput(question, index) {\n\t\tswitch (question.type) {\n\t\t\tcase 'select':\n\t\t\t\treturn `\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"${question.id || index}\" style=\"width: 100%; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'};\">\n\t\t\t\t\t\t<option value=\"\">${question.placeholder || 'Select an option'}</option>\n\t\t\t\t\t\t${question.options.map((opt) => `<option value=\"${opt.value}\">${opt.label}</option>`).join('')}\n\t\t\t\t\t</select>\n\t\t\t\t`;\n\t\t\tcase 'text':\n\t\t\t\treturn `\n\t\t\t\t\t<input type=\"text\" class=\"feedback-survey-input\" data-question=\"${question.id || index}\" placeholder=\"${question.placeholder || ''}\" style=\"width: 100%; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; box-sizing: border-box;\">\n\t\t\t\t`;\n\t\t\tdefault:\n\t\t\t\treturn '';\n\t\t}\n\t}\n\n\t_getPositionStyles() {\n\t\tconst positions = {\n\t\t\t'bottom-right':\n\t\t\t\t'bottom: 24px; right: 24px; opacity: 0; transform: translateY(20px); transition: all 0.3s ease;',\n\t\t\t'bottom-left':\n\t\t\t\t'bottom: 24px; left: 24px; opacity: 0; transform: translateY(20px); transition: all 0.3s ease;',\n\t\t\tcenter:\n\t\t\t\t'top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.95); opacity: 0; transition: all 0.3s ease;',\n\t\t\tbottom:\n\t\t\t\t'bottom: 0; left: 0; right: 0; border-radius: 16px 16px 0 0; max-width: none; opacity: 0; transform: translateY(20px); transition: all 0.3s ease;',\n\t\t};\n\t\treturn positions[this.surveyOptions.position] || positions['bottom-right'];\n\t}\n\n\t_attachSurveyEvents() {\n\t\tif (!this.surveyElement) return;\n\n\t\t// Close button\n\t\tconst closeBtn = this.surveyElement.querySelector('.feedback-survey-close');\n\t\tcloseBtn.addEventListener('click', () => this._handleDismiss());\n\n\t\t// Submit button\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tsubmitBtn.addEventListener('click', () => this._handleSubmit());\n\n\t\t// Feedback textarea\n\t\tconst textarea = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-textarea'\n\t\t);\n\t\ttextarea.addEventListener('input', (e) => {\n\t\t\tthis.surveyState.feedback = e.target.value;\n\t\t});\n\n\t\t// Survey type specific events\n\t\tthis._attachTypeSpecificEvents();\n\n\t\t// Escape key\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis._handleDismiss();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\t_attachTypeSpecificEvents() {\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\tif (type === 'nps') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectNPS(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbtn.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'csat') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCSAT(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\tbtn.style.transform = 'scale(1.1)';\n\t\t\t\t\t});\n\t\t\t\t\tbtn.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.transform = 'scale(1)';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'ces') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCES(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbtn.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'custom') {\n\t\t\t// Frequency buttons\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectFrequency(btn.dataset.freq)\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t// Select inputs\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-select')\n\t\t\t\t.forEach((select) => {\n\t\t\t\t\tselect.addEventListener('change', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[select.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t// Text inputs\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-input')\n\t\t\t\t.forEach((input) => {\n\t\t\t\t\tinput.addEventListener('input', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[input.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_selectNPS(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tif (btnScore === score) {\n\t\t\t\t\tbtn.style.background = '#007aff';\n\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\tbtn.style.color = '#fff';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.style.background =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa';\n\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\tbtn.style.color =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f';\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_selectCSAT(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tbtn.style.transform = btnScore === score ? 'scale(1.2)' : 'scale(1)';\n\t\t\t});\n\t}\n\n\t_selectCES(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tif (btnScore === score) {\n\t\t\t\t\tbtn.style.background = '#007aff';\n\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\tbtn.style.color = '#fff';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.style.background =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa';\n\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\tbtn.style.color =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f';\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_selectFrequency(freq) {\n\t\tthis.surveyState.customAnswers.frequency = freq;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tif (btn.dataset.freq === freq) {\n\t\t\t\t\tbtn.style.background = '#007aff';\n\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\tbtn.style.color = '#fff';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.style.background =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa';\n\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\tbtn.style.color =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f';\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tasync _handleSubmit() {\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\t// Validate\n\t\tif (\n\t\t\t(type === 'nps' || type === 'csat' || type === 'ces') &&\n\t\t\tthis.surveyState.score === null\n\t\t) {\n\t\t\tthis._showError('Please select a rating');\n\t\t\treturn;\n\t\t}\n\n\t\tconst responseData = {\n\t\t\trating: this.surveyState.score,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\tanswers: this.surveyState.customAnswers,\n\t\t};\n\n\t\tconst response = {\n\t\t\ttype: type,\n\t\t\tscore: this.surveyState.score,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\tcustomAnswers: this.surveyState.customAnswers,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\t// Call onSubmit callback if provided\n\t\tif (this.surveyOptions.onSubmit) {\n\t\t\tthis.surveyOptions.onSubmit(response);\n\t\t}\n\n\t\t// Submit to API\n\t\ttry {\n\t\t\tconst surveyId =\n\t\t\t\tthis.surveyOptions.surveyId || `local_${type}_${Date.now()}`;\n\t\t\tawait this.apiService.submitSurveyResponse(surveyId, responseData);\n\t\t} catch (error) {\n\t\t\tconsole.error('[SurveyWidget] Failed to submit survey:', error);\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('survey:submitted', { widget: this, response });\n\n\t\tthis._closeSurvey();\n\t\tthis._showSuccessNotification();\n\t}\n\n\tasync _handleDismiss() {\n\t\t// Call dismiss API if survey has a backend ID\n\t\tif (this.surveyOptions.surveyId) {\n\t\t\ttry {\n\t\t\t\tawait this.apiService.dismissSurvey(this.surveyOptions.surveyId);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[SurveyWidget] Failed to dismiss survey:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.surveyOptions.onDismiss) {\n\t\t\tthis.surveyOptions.onDismiss();\n\t\t}\n\t\tthis.sdk.eventBus.emit('survey:dismissed', { widget: this });\n\t\tthis._closeSurvey();\n\t}\n\n\t_showError(message) {\n\t\t// Simple error display - could be enhanced\n\t\tconst existing = this.surveyElement.querySelector('.feedback-survey-error');\n\t\tif (existing) existing.remove();\n\n\t\tconst error = document.createElement('div');\n\t\terror.className = 'feedback-survey-error';\n\t\terror.style.cssText =\n\t\t\t'color: #ef4444; font-size: 13px; margin-top: 8px; text-align: center;';\n\t\terror.textContent = message;\n\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tsubmitBtn.parentNode.insertBefore(error, submitBtn);\n\n\t\tsetTimeout(() => error.remove(), 3000);\n\t}\n\n\t_showSuccessNotification() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'feedback-survey-success';\n\t\tnotification.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\ttop: 24px;\n\t\t\tright: 24px;\n\t\t\tbackground: #10b981;\n\t\t\tcolor: white;\n\t\t\tpadding: 16px 24px;\n\t\t\tborder-radius: 12px;\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: 500;\n\t\t\tz-index: 10001;\n\t\t\tbox-shadow: 0 10px 40px rgba(0,0,0,0.2);\n\t\t\tfont-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n\t\t`;\n\t\tnotification.innerHTML = `\n\t\t\t<div style=\"display: flex; align-items: center; gap: 8px;\">\n\t\t\t\t<span style=\"font-size: 18px;\">✓</span>\n\t\t\t\t<span>Thank you for your feedback!</span>\n\t\t\t</div>\n\t\t`;\n\t\tdocument.body.appendChild(notification);\n\n\t\tsetTimeout(() => {\n\t\t\tnotification.style.opacity = '0';\n\t\t\tnotification.style.transition = 'opacity 0.3s ease';\n\t\t\tsetTimeout(() => notification.remove(), 300);\n\t\t}, 3000);\n\t}\n\n\t_closeSurvey() {\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t\tthis._escapeHandler = null;\n\t\t}\n\n\t\t// Capture references to avoid race conditions with setTimeout\n\t\tconst surveyEl = this.surveyElement;\n\t\tconst backdropEl = this.backdropElement;\n\n\t\tif (surveyEl) {\n\t\t\tsurveyEl.style.opacity = '0';\n\t\t\tsurveyEl.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(0.95)'\n\t\t\t\t\t: 'translateY(20px)';\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (surveyEl && surveyEl.parentNode) {\n\t\t\t\t\tsurveyEl.parentNode.removeChild(surveyEl);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tthis.surveyElement = null;\n\t\t}\n\n\t\tif (backdropEl) {\n\t\t\tbackdropEl.style.opacity = '0';\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (backdropEl && backdropEl.parentNode) {\n\t\t\t\t\tbackdropEl.parentNode.removeChild(backdropEl);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tthis.backdropElement = null;\n\t\t}\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\tdestroy() {\n\t\tthis._closeSurvey();\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class TabWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'tab' });\n\t}\n\n\t_render() {\n\t\tconst tab = document.createElement('div');\n\t\ttab.className = `feedback-widget feedback-widget-tab theme-${this.options.theme} position-${this.options.position}`;\n\t\ttab.innerHTML = `\n <div class=\"feedback-tab-trigger\">\n <span class=\"feedback-tab-text\">Feedback</span>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(tab.style, this.options.customStyles);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\t_attachEvents() {\n\t\tconst tab = this.element.querySelector('.feedback-tab-trigger');\n\t\ttab.addEventListener('click', this.openModal);\n\n\t\ttab.addEventListener('mouseenter', () => {\n\t\t\tif (!this.state.isSubmitting) {\n\t\t\t\ttab.style.transform = this._getHoverTransform();\n\t\t\t}\n\t\t});\n\n\t\ttab.addEventListener('mouseleave', () => {\n\t\t\ttab.style.transform = 'none';\n\t\t});\n\t}\n\n\t_getHoverTransform() {\n\t\tconst position = this.options.position;\n\t\tif (position.includes('right')) {\n\t\t\treturn 'translateX(-5px)';\n\t\t} else if (position.includes('left')) {\n\t\t\treturn 'translateX(5px)';\n\t\t}\n\t\treturn 'none';\n\t}\n\n\tupdateText(text) {\n\t\tconst textElement = this.element?.querySelector('.feedback-tab-text');\n\t\tif (textElement) {\n\t\t\ttextElement.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { SDKError } from '../utils/errors.js';\nimport { ButtonWidget } from './ButtonWidget.js';\nimport { InlineWidget } from './InlineWidget.js';\nimport { MessengerWidget } from './MessengerWidget.js';\nimport { SurveyWidget } from './SurveyWidget.js';\nimport { TabWidget } from './TabWidget.js';\n\nexport class WidgetFactory {\n\tstatic widgets = new Map([\n\t\t['button', ButtonWidget],\n\t\t['tab', TabWidget],\n\t\t['inline', InlineWidget],\n\t\t['survey', SurveyWidget],\n\t\t['messenger', MessengerWidget],\n\t]);\n\n\tstatic register(type, WidgetClass) {\n\t\tif (typeof type !== 'string' || !type.trim()) {\n\t\t\tthrow new SDKError('Widget type must be a non-empty string');\n\t\t}\n\n\t\tif (typeof WidgetClass !== 'function') {\n\t\t\tthrow new SDKError('Widget class must be a constructor function');\n\t\t}\n\n\t\tthis.widgets.set(type, WidgetClass);\n\t}\n\n\tstatic create(type, options = {}) {\n\t\tconst WidgetClass = this.widgets.get(type);\n\n\t\tif (!WidgetClass) {\n\t\t\tconst availableTypes = Array.from(this.widgets.keys()).join(', ');\n\t\t\tthrow new SDKError(\n\t\t\t\t`Unknown widget type: ${type}. Available types: ${availableTypes}`\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\treturn new WidgetClass(options);\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to create widget of type '${type}': ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getAvailableTypes() {\n\t\treturn Array.from(this.widgets.keys());\n\t}\n\n\tstatic isTypeRegistered(type) {\n\t\treturn this.widgets.has(type);\n\t}\n\n\tstatic unregister(type) {\n\t\treturn this.widgets.delete(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.widgets.clear();\n\t}\n\n\tstatic getWidgetClass(type) {\n\t\treturn this.widgets.get(type);\n\t}\n}\n","import { ConfigError, SDKError } from '../utils/errors.js';\nimport { deepMerge, generateId } from '../utils/helpers.js';\nimport { WidgetFactory } from '../widgets/WidgetFactory.js';\nimport { APIService } from './APIService.js';\nimport { EventBus } from './EventBus.js';\n\nexport class FeedbackSDK {\n\tconstructor(config = {}) {\n\t\tthis.config = this._validateAndMergeConfig(config);\n\t\tthis.initialized = false;\n\t\tthis.widgets = new Map();\n\t\tthis.eventBus = new EventBus();\n\n\t\tthis.apiService = new APIService({\n\t\t\tapiUrl: this.config.apiUrl,\n\t\t\tworkspace: this.config.workspace,\n\t\t\tuserContext: this.config.userContext,\n\t\t\tmock: this.config.mock,\n\t\t\tenv: this.config.env,\n\t\t});\n\n\t\tthis._bindMethods();\n\t}\n\n\tasync init() {\n\t\tif (this.initialized) {\n\t\t\treturn { alreadyInitialized: true };\n\t\t}\n\n\t\ttry {\n\t\t\tconst initData = await this.apiService.init(this.config.userContext);\n\n\t\t\t// Merge backend config as base, local config overrides\n\t\t\tif (initData.config) {\n\t\t\t\tthis.config = deepMerge(initData.config, this.config);\n\t\t\t}\n\n\t\t\tthis.initialized = true;\n\t\t\tthis.eventBus.emit('sdk:initialized', {\n\t\t\t\tconfig: this.config,\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinitialized: true,\n\t\t\t\tconfig: initData.config || {},\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to initialize SDK: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateWidget(type = 'button', options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before creating widgets. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst widgetId = generateId('widget');\n\t\tconst widgetOptions = {\n\t\t\tid: widgetId,\n\t\t\tsdk: this,\n\t\t\tapiService: this.apiService,\n\t\t\t...this.config,\n\t\t\t...options,\n\t\t};\n\n\t\ttry {\n\t\t\tconst widget = WidgetFactory.create(type, widgetOptions);\n\t\t\tthis.widgets.set(widgetId, widget);\n\t\t\tthis.eventBus.emit('widget:created', { widget, type });\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(`Failed to create widget: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetWidget(id) {\n\t\treturn this.widgets.get(id);\n\t}\n\n\t/**\n\t * Fetch active surveys from the backend\n\t * @param {Object} context - Optional context for targeting\n\t * @param {string} context.page - Current page/route\n\t * @param {string} context.event - Event trigger name\n\t * @returns {Promise<Array>} Array of active survey configurations\n\t */\n\tasync getActiveSurveys(context = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getActiveSurveys(context);\n\t\t\treturn result.data || [];\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to fetch active surveys: ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Show a survey by its backend ID\n\t * Fetches survey configuration from the backend and displays it\n\t * @param {string} surveyId - The backend survey ID\n\t * @param {Object} options - Additional display options\n\t * @param {string} options.position - Position override\n\t * @param {string} options.theme - Theme override\n\t * @param {Function} options.onSubmit - Callback when survey is submitted\n\t * @param {Function} options.onDismiss - Callback when survey is dismissed\n\t * @returns {Promise<SurveyWidget>} The survey widget instance\n\t */\n\tasync showSurveyById(surveyId, options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\t// Fetch active surveys to find the one with matching ID\n\t\tconst surveys = await this.getActiveSurveys();\n\t\tconst surveyConfig = surveys.find((s) => s.id === surveyId);\n\n\t\tif (!surveyConfig) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Survey with ID '${surveyId}' not found or not active`\n\t\t\t);\n\t\t}\n\n\t\treturn this.showSurvey({\n\t\t\tsurveyId: surveyConfig.id,\n\t\t\tsurveyType: surveyConfig.type,\n\t\t\ttitle: surveyConfig.title,\n\t\t\tdescription: surveyConfig.description,\n\t\t\tlowLabel: surveyConfig.low_label,\n\t\t\thighLabel: surveyConfig.high_label,\n\t\t\tcustomQuestions: surveyConfig.questions,\n\t\t\t...options,\n\t\t});\n\t}\n\n\t/**\n\t * Show a survey widget (local/manual mode)\n\t * For backend-driven surveys, use showSurveyById() instead\n\t * @param {Object} options - Survey options\n\t * @param {string} options.surveyId - Backend survey ID (for API tracking)\n\t * @param {string} options.surveyType - Type of survey: 'nps', 'csat', 'ces', 'custom'\n\t * @param {string} options.position - Position: 'bottom-right', 'bottom-left', 'center', 'bottom'\n\t * @param {string} options.theme - Theme: 'light', 'dark'\n\t * @param {string} options.title - Custom title\n\t * @param {string} options.description - Custom description\n\t * @param {string} options.lowLabel - Low end label\n\t * @param {string} options.highLabel - High end label\n\t * @param {Function} options.onSubmit - Callback when survey is submitted\n\t * @param {Function} options.onDismiss - Callback when survey is dismissed\n\t * @returns {SurveyWidget} The survey widget instance\n\t */\n\tshowSurvey(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst surveyWidget = this.createWidget('survey', {\n\t\t\tsurveyId: options.surveyId,\n\t\t\tsurveyType: options.surveyType || options.type || 'nps',\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || this.config.theme || 'light',\n\t\t\ttitle: options.title,\n\t\t\tdescription: options.description,\n\t\t\tlowLabel: options.lowLabel,\n\t\t\thighLabel: options.highLabel,\n\t\t\tcustomQuestions: options.customQuestions,\n\t\t\tonSubmit: options.onSubmit,\n\t\t\tonDismiss: options.onDismiss,\n\t\t});\n\n\t\tsurveyWidget.mount();\n\t\tsurveyWidget.show();\n\n\t\treturn surveyWidget;\n\t}\n\n\tgetAllWidgets() {\n\t\treturn Array.from(this.widgets.values());\n\t}\n\n\tdestroyWidget(id) {\n\t\tconst widget = this.widgets.get(id);\n\t\tif (widget) {\n\t\t\twidget.destroy();\n\t\t\tthis.widgets.delete(id);\n\t\t\tthis.eventBus.emit('widget:removed', { widgetId: id });\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tdestroyAllWidgets() {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.destroy();\n\t\t}\n\t\tthis.widgets.clear();\n\t\tthis.eventBus.emit('widgets:cleared');\n\t}\n\n\tupdateConfig(newConfig) {\n\t\tconst oldConfig = { ...this.config };\n\t\tthis.config = this._validateAndMergeConfig(newConfig, this.config);\n\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.handleConfigUpdate(this.config);\n\t\t}\n\n\t\tthis.eventBus.emit('config:updated', {\n\t\t\toldConfig,\n\t\t\tnewConfig: this.config,\n\t\t});\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.config.userContext = userContext;\n\t\tif (this.apiService) {\n\t\t\tthis.apiService.setUserContext(userContext);\n\t\t}\n\t\tthis.eventBus.emit('user:updated', { userContext });\n\t}\n\n\tgetUserContext() {\n\t\treturn (\n\t\t\tthis.config.userContext ||\n\t\t\t(this.apiService ? this.apiService.getUserContext() : null)\n\t\t);\n\t}\n\n\tasync reinitialize(newUserContext = null) {\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\n\t\tif (newUserContext) {\n\t\t\tthis.setUserContext(newUserContext);\n\t\t}\n\n\t\treturn this.init();\n\t}\n\n\ton(event, callback) {\n\t\tthis.eventBus.on(event, callback);\n\t\treturn this;\n\t}\n\n\toff(event, callback) {\n\t\tthis.eventBus.off(event, callback);\n\t\treturn this;\n\t}\n\n\tonce(event, callback) {\n\t\tthis.eventBus.once(event, callback);\n\t\treturn this;\n\t}\n\n\temit(event, data) {\n\t\tthis.eventBus.emit(event, data);\n\t\treturn this;\n\t}\n\n\tdestroy() {\n\t\tthis.destroyAllWidgets();\n\t\tthis.eventBus.removeAllListeners();\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.eventBus.emit('sdk:destroyed');\n\t}\n\n\t_validateAndMergeConfig(newConfig, existingConfig = {}) {\n\t\tconst defaultConfig = {\n\t\t\tapiUrl: null,\n\t\t\tworkspace: null,\n\t\t\tuserContext: null,\n\t\t\tposition: 'bottom-right',\n\t\t\ttheme: 'light',\n\t\t\tboardId: 'general',\n\t\t\tautoShow: true,\n\t\t\tdebug: false,\n\t\t\tmock: false,\n\t\t\tenv: 'production', // 'production' or 'staging'\n\t\t};\n\n\t\tconst mergedConfig = deepMerge(\n\t\t\tdeepMerge(defaultConfig, existingConfig),\n\t\t\tnewConfig\n\t\t);\n\n\t\tif (!mergedConfig.workspace) {\n\t\t\tthrow new ConfigError('Missing required configuration: workspace');\n\t\t}\n\n\t\tif (mergedConfig.userContext) {\n\t\t\tthis._validateUserContext(mergedConfig.userContext);\n\t\t}\n\n\t\treturn mergedConfig;\n\t}\n\n\t_validateUserContext(userContext) {\n\t\tif (!userContext.user_id && !userContext.email) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t'User context must include at least user_id or email'\n\t\t\t);\n\t\t}\n\n\t\tconst validStructure = {\n\t\t\tuser_id: 'string',\n\t\t\temail: 'string',\n\t\t\tname: 'string',\n\t\t\tcustom_fields: 'object',\n\t\t\tcompany: 'object',\n\t\t};\n\n\t\tfor (const [key, expectedType] of Object.entries(validStructure)) {\n\t\t\tif (userContext[key] && typeof userContext[key] !== expectedType) {\n\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t`User context field '${key}' must be of type '${expectedType}'`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t_bindMethods() {\n\t\tthis.createWidget = this.createWidget.bind(this);\n\t\tthis.destroyWidget = this.destroyWidget.bind(this);\n\t\tthis.updateConfig = this.updateConfig.bind(this);\n\t}\n\n\tstatic create(config) {\n\t\treturn new FeedbackSDK(config);\n\t}\n\n\tstatic async createAndInit(config) {\n\t\tconst sdk = new FeedbackSDK(config);\n\t\tawait sdk.init();\n\t\treturn sdk;\n\t}\n\n\tstatic extractUserContextFromAuth(authData) {\n\t\tif (!authData) return null;\n\n\t\treturn {\n\t\t\tuser_id: authData.sub || authData.id || authData.user_id,\n\t\t\temail: authData.email,\n\t\t\tname: authData.name || authData.display_name || authData.full_name,\n\t\t\tcustom_fields: {\n\t\t\t\trole: authData.role,\n\t\t\t\tplan: authData.plan || authData.subscription?.plan,\n\t\t\t\t...(authData.custom_fields || {}),\n\t\t\t},\n\t\t\tcompany:\n\t\t\t\tauthData.company || authData.organization\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tid: authData.company?.id || authData.organization?.id,\n\t\t\t\t\t\t\tname: authData.company?.name || authData.organization?.name,\n\t\t\t\t\t\t\tmonthly_spend: authData.company?.monthly_spend,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t};\n\t}\n}\n","export const MESSENGER_STYLES = `\n/* ========================================\n Messenger Widget - Intercom-style Dark Theme\n ======================================== */\n\n.messenger-widget {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.messenger-widget *,\n.messenger-widget *::before,\n.messenger-widget *::after {\n box-sizing: border-box;\n}\n\n/* ========================================\n Launcher Button\n ======================================== */\n\n.messenger-launcher {\n position: fixed;\n z-index: 999999;\n}\n\n.messenger-launcher-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.messenger-launcher-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.messenger-launcher-btn {\n width: 60px;\n height: 60px;\n border-radius: 50%;\n border: none;\n background: #1c1c1e;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n}\n\n.messenger-launcher-btn:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.4);\n}\n\n.messenger-launcher-btn:active {\n transform: scale(0.95);\n}\n\n.messenger-launcher-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.2s ease, transform 0.2s ease;\n}\n\n.messenger-launcher-open .messenger-launcher-icon-chat {\n opacity: 0;\n transform: rotate(-90deg);\n}\n\n.messenger-launcher-open .messenger-launcher-icon-close {\n opacity: 1;\n transform: rotate(0deg);\n}\n\n.messenger-launcher-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n background: #ef4444;\n color: white;\n font-size: 11px;\n font-weight: 600;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n border: 2px solid white;\n}\n\n/* ========================================\n Panel Container\n ======================================== */\n\n.messenger-panel {\n position: fixed;\n z-index: 999998;\n width: 400px;\n height: 680px;\n max-height: calc(100vh - 100px);\n display: none;\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.messenger-panel.open {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n\n.messenger-panel-bottom-right {\n bottom: 90px;\n right: 20px;\n}\n\n.messenger-panel-bottom-left {\n bottom: 90px;\n left: 20px;\n}\n\n.messenger-panel-content {\n background: #1c1c1e;\n height: 100%;\n border-radius: 16px;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);\n}\n\n/* Light theme */\n.messenger-panel.theme-light .messenger-panel-content {\n background: #ffffff;\n}\n\n/* ========================================\n Views Container\n ======================================== */\n\n.messenger-panel-views {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.messenger-view {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* ========================================\n Common Components\n ======================================== */\n\n/* Close Button */\n.messenger-close-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.6);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.messenger-close-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.theme-light .messenger-close-btn {\n color: #86868b;\n}\n\n.theme-light .messenger-close-btn:hover {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n/* Back Button */\n.messenger-back-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.6);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.messenger-back-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n/* Avatar Stack */\n.messenger-avatar-stack {\n display: flex;\n align-items: center;\n}\n\n.messenger-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 2px solid #1c1c1e;\n background: #5856d6;\n color: white;\n font-size: 13px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: -8px;\n object-fit: cover;\n}\n\n.messenger-avatar:first-child {\n margin-left: 0;\n}\n\n.messenger-avatar-small {\n width: 28px;\n height: 28px;\n font-size: 11px;\n}\n\n.messenger-avatar-medium {\n width: 40px;\n height: 40px;\n font-size: 15px;\n font-weight: 600;\n}\n\n.messenger-avatar-tiny {\n width: 20px;\n height: 20px;\n font-size: 9px;\n border-width: 1.5px;\n margin-left: -6px;\n}\n\n.messenger-avatar-tiny:first-child {\n margin-left: 0;\n}\n\n.theme-light .messenger-avatar {\n border-color: #ffffff;\n}\n\n/* ========================================\n Home View\n ======================================== */\n\n.messenger-home-view {\n background: linear-gradient(180deg, #2c2c2e 0%, #1c1c1e 40%);\n}\n\n.messenger-home-header {\n padding: 20px;\n background: linear-gradient(180deg, rgba(88, 86, 214, 0.2) 0%, transparent 100%);\n}\n\n.messenger-home-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.messenger-home-logo {\n width: 32px;\n height: 32px;\n}\n\n.messenger-home-logo img {\n width: 100%;\n height: 100%;\n border-radius: 8px;\n object-fit: cover;\n}\n\n.messenger-home-logo-default {\n width: 32px;\n height: 32px;\n background: linear-gradient(135deg, #5856d6, #007aff);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n}\n\n.messenger-home-avatars {\n flex: 1;\n display: flex;\n justify-content: flex-end;\n margin-right: 12px;\n}\n\n.messenger-home-welcome {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.messenger-home-greeting {\n font-size: 15px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-home-question {\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-home-body {\n flex: 1;\n padding: 20px;\n overflow-y: auto;\n}\n\n.messenger-home-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: #2c2c2e;\n border: none;\n border-radius: 24px;\n color: white;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n margin-bottom: 20px;\n}\n\n.messenger-home-message-btn:hover {\n background: #3c3c3e;\n transform: translateX(4px);\n}\n\n.messenger-home-message-btn svg {\n opacity: 0.6;\n}\n\n/* Featured Card */\n.messenger-home-featured {\n background: #2c2c2e;\n border-radius: 12px;\n overflow: hidden;\n margin-bottom: 20px;\n}\n\n.messenger-home-featured-image {\n width: 100%;\n height: 120px;\n object-fit: cover;\n}\n\n.messenger-home-featured-content {\n padding: 16px;\n}\n\n.messenger-home-featured-content h3 {\n margin: 0 0 8px;\n font-size: 16px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-home-featured-content p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.6);\n}\n\n/* Changelog Section in Home */\n.messenger-home-changelog-section {\n margin-top: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.messenger-home-changelog-card {\n background: #2c2c2e;\n border-radius: 16px;\n overflow: hidden;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-home-changelog-card:hover {\n background: #3c3c3e;\n transform: translateY(-2px);\n}\n\n.messenger-home-changelog-cover {\n width: 100%;\n height: 140px;\n overflow: hidden;\n position: relative;\n border-radius: 12px;\n margin: 12px 12px 0 12px;\n padding-bottom: 12px;\n width: calc(100% - 24px);\n}\n\n.messenger-home-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 12px;\n}\n\n.messenger-home-changelog-cover-text {\n position: absolute;\n bottom: 12px;\n left: 12px;\n right: 12px;\n color: #ffffff;\n font-size: 14px;\n font-weight: 600;\n text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);\n line-height: 1.3;\n}\n\n.messenger-home-changelog-card-content {\n padding: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-home-changelog-card-title {\n margin: 0 0 8px 0;\n font-size: 14px;\n font-weight: 600;\n color: #ffffff;\n line-height: 1.3;\n}\n\n.messenger-home-changelog-card-desc {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* ========================================\n Conversations View\n ======================================== */\n\n.messenger-conversations-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-conversations-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-conversations-body {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n\n.messenger-conversations-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-conversations-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-conversations-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-conversations-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-conversation-item {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n border-radius: 12px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.messenger-conversation-item:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-conversation-avatars {\n flex-shrink: 0;\n padding-top: 2px;\n}\n\n.messenger-conversation-content {\n flex: 1;\n min-width: 0;\n}\n\n.messenger-conversation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 4px;\n gap: 12px;\n}\n\n.messenger-conversation-title {\n font-size: 15px;\n font-weight: 400;\n color: #ffffff;\n line-height: 1.3;\n}\n\n.messenger-conversation-time {\n font-size: 13px;\n color: rgba(255, 255, 255, 0.5);\n flex-shrink: 0;\n}\n\n.messenger-conversation-preview {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.messenger-unread-dot {\n width: 8px;\n height: 8px;\n background: #ef4444;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.messenger-conversation-message {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.4;\n}\n\n.messenger-conversation-item.unread .messenger-conversation-title {\n font-weight: 400;\n color: #ffffff;\n}\n\n.messenger-conversation-item.unread .messenger-conversation-message {\n color: rgba(255, 255, 255, 0.9);\n}\n\n.messenger-conversations-footer {\n padding: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-new-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background: #2c2c2e;\n border: none;\n border-radius: 24px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-new-message-btn:hover {\n background: #3c3c3e;\n}\n\n.messenger-new-message-btn span {\n flex: 1;\n text-align: left;\n}\n\n.messenger-new-message-btn svg {\n opacity: 0.6;\n}\n\n/* ========================================\n Chat View\n ======================================== */\n\n.messenger-chat-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-chat-header-info {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.messenger-chat-title {\n font-size: 16px;\n font-weight: 500;\n color: white;\n}\n\n.messenger-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.messenger-chat-empty {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-chat-empty-avatars {\n margin-bottom: 16px;\n}\n\n.messenger-chat-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-chat-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n max-width: 240px;\n}\n\n/* Messages */\n.messenger-message {\n display: flex;\n gap: 8px;\n max-width: 85%;\n}\n\n.messenger-message-own {\n align-self: flex-end;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.messenger-message-received {\n align-self: flex-start;\n}\n\n.messenger-message-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.messenger-message-sender {\n font-size: 12px;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 4px;\n margin-left: 12px;\n}\n\n.messenger-message-bubble {\n padding: 12px 16px;\n border-radius: 18px;\n word-wrap: break-word;\n}\n\n.messenger-message-own .messenger-message-bubble {\n background: #007aff;\n color: white;\n border-bottom-right-radius: 4px;\n}\n\n.messenger-message-received .messenger-message-bubble {\n background: #2c2c2e;\n color: white;\n border-bottom-left-radius: 4px;\n}\n\n.messenger-message-content {\n font-size: 15px;\n line-height: 1.4;\n}\n\n.messenger-message-time {\n font-size: 11px;\n color: rgba(255, 255, 255, 0.4);\n margin-top: 4px;\n padding: 0 4px;\n}\n\n.messenger-message-avatar {\n flex-shrink: 0;\n margin-top: auto;\n}\n\n/* Compose Area */\n.messenger-chat-compose {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-compose-input-wrapper {\n flex: 1;\n background: #2c2c2e;\n border-radius: 20px;\n padding: 8px 16px;\n}\n\n.messenger-compose-input {\n width: 100%;\n background: transparent;\n border: none;\n outline: none;\n color: white;\n font-size: 15px;\n line-height: 1.4;\n resize: none;\n max-height: 120px;\n font-family: inherit;\n}\n\n.messenger-compose-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-compose-send {\n width: 40px;\n height: 40px;\n background: #007aff;\n border: none;\n border-radius: 50%;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.messenger-compose-send:hover:not(:disabled) {\n background: #0066d6;\n transform: scale(1.05);\n}\n\n.messenger-compose-send:disabled {\n background: #3c3c3e;\n color: rgba(255, 255, 255, 0.3);\n cursor: not-allowed;\n}\n\n/* ========================================\n Help View\n ======================================== */\n\n.messenger-help-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n position: relative;\n}\n\n.messenger-help-header h2 {\n margin: 0;\n font-size: 17px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-header .messenger-close-btn {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.messenger-help-search {\n padding: 0 16px 16px;\n}\n\n.messenger-help-search-wrapper {\n display: flex;\n align-items: center;\n background: #2c2c2e;\n border-radius: 12px;\n padding: 14px 16px;\n position: relative;\n}\n\n.messenger-help-search-icon {\n position: absolute;\n right: 16px;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-search-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n color: white;\n font-size: 16px;\n font-family: inherit;\n padding-right: 32px;\n}\n\n.messenger-help-search-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-help-collections-header {\n font-size: 17px;\n font-weight: 600;\n color: white;\n padding: 12px 16px 8px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-help-collections {\n padding: 0;\n}\n\n.messenger-help-collection {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-help-collection:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-help-collection-content {\n flex: 1;\n min-width: 0;\n}\n\n.messenger-help-collection-title {\n margin: 0 0 2px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-collection-desc {\n margin: 0 0 2px;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.3;\n}\n\n.messenger-help-collection-count {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-collection-arrow {\n color: rgba(255, 255, 255, 0.3);\n flex-shrink: 0;\n margin-left: 12px;\n}\n\n.messenger-help-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-help-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-help-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n/* ========================================\n Changelog View\n ======================================== */\n\n.messenger-changelog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-changelog-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-changelog-subheader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-changelog-latest {\n font-size: 12px;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.5);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.messenger-changelog-team {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: rgba(255, 255, 255, 0.6);\n}\n\n.messenger-changelog-body {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n.messenger-changelog-card {\n background: #2c2c2e;\n border-radius: 12px;\n overflow: hidden;\n margin-bottom: 12px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-changelog-card:hover {\n background: #3c3c3e;\n transform: translateY(-2px);\n}\n\n.messenger-changelog-cover {\n height: 120px;\n overflow: hidden;\n}\n\n.messenger-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.messenger-changelog-content {\n padding: 16px;\n}\n\n.messenger-changelog-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.messenger-changelog-tag {\n font-size: 11px;\n font-weight: 600;\n color: white;\n background: rgba(88, 86, 214, 0.3);\n padding: 4px 10px;\n border-radius: 12px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.messenger-changelog-title {\n margin: 0 0 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n line-height: 1.3;\n}\n\n.messenger-changelog-description {\n margin: 0 0 12px;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 1.4;\n}\n\n.messenger-changelog-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.messenger-changelog-date {\n font-size: 12px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-changelog-arrow {\n color: rgba(255, 255, 255, 0.3);\n}\n\n.messenger-changelog-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-changelog-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-changelog-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-changelog-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n/* ========================================\n Navigation Tabs\n ======================================== */\n\n.messenger-panel-nav {\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-nav {\n display: flex;\n padding: 8px 12px;\n gap: 4px;\n}\n\n.messenger-nav-tab {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 8px 4px;\n background: none;\n border: none;\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s ease;\n position: relative;\n}\n\n.messenger-nav-tab:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-nav-icon {\n color: rgba(255, 255, 255, 0.5);\n transition: color 0.2s ease;\n}\n\n.messenger-nav-home-icon {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.messenger-nav-home-icon > i:first-child {\n position: relative;\n}\n\n.messenger-nav-home-icon > i:last-child {\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n transition: color 0.2s ease, filter 0.2s ease;\n}\n\n.messenger-nav-tab:hover .messenger-nav-home-icon > i:last-child {\n color: #ffd700;\n filter: drop-shadow(0 0 4px #ffd700);\n}\n\n.messenger-nav-label {\n font-size: 14px;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.5);\n transition: color 0.2s ease;\n}\n\n.messenger-nav-tab.active .messenger-nav-icon {\n color: white;\n}\n\n.messenger-nav-tab.active .messenger-nav-label {\n color: white;\n font-weight: 400;\n}\n\n.messenger-nav-badge {\n position: absolute;\n top: 4px;\n right: calc(50% - 16px);\n min-width: 16px;\n height: 16px;\n background: #ef4444;\n color: white;\n font-size: 10px;\n font-weight: 600;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n\n/* ========================================\n Light Theme Overrides\n ======================================== */\n\n/* Panel */\n.theme-light .messenger-panel-content {\n background: #ffffff;\n}\n\n/* Home View */\n.theme-light .messenger-home-view {\n background: linear-gradient(180deg, #f5f5f7 0%, #ffffff 40%);\n}\n\n.theme-light .messenger-home-header {\n background: linear-gradient(180deg, rgba(88, 86, 214, 0.1) 0%, transparent 100%);\n}\n\n.theme-light .messenger-home-greeting {\n color: #86868b;\n}\n\n.theme-light .messenger-home-question {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-message-btn {\n background: #f5f5f7;\n color: #1d1d1f;\n border: 1px solid #e0e0e0;\n}\n\n.theme-light .messenger-home-message-btn:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-home-message-btn svg,\n.theme-light .messenger-home-message-btn i {\n color: #86868b;\n}\n\n.theme-light .messenger-home-featured {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-home-featured-content h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-featured-content p {\n color: #86868b;\n}\n\n.theme-light .messenger-home-changelog-card {\n background: #f5f5f7;\n border: 1px solid #e0e0e0;\n}\n\n.theme-light .messenger-home-changelog-card-content {\n border-top-color: #e0e0e0;\n}\n\n.theme-light .messenger-home-changelog-card:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-home-changelog-card-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-changelog-card-desc {\n color: #6e6e73;\n}\n\n/* Close/Back buttons */\n.theme-light .messenger-close-btn,\n.theme-light .messenger-back-btn {\n color: #86868b;\n}\n\n.theme-light .messenger-close-btn:hover,\n.theme-light .messenger-back-btn:hover {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n/* Avatar */\n.theme-light .messenger-avatar {\n border-color: #ffffff;\n}\n\n/* Conversations View */\n.theme-light .messenger-conversations-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-header,\n.theme-light .messenger-help-header,\n.theme-light .messenger-changelog-header,\n.theme-light .messenger-chat-header {\n background: #ffffff;\n border-bottom-color: #e5e5e7;\n}\n\n.theme-light .messenger-conversations-header h2,\n.theme-light .messenger-help-header h2,\n.theme-light .messenger-changelog-header h2 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-conversations-body {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-footer {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-empty-icon,\n.theme-light .messenger-chat-empty-avatars,\n.theme-light .messenger-help-empty-icon,\n.theme-light .messenger-changelog-empty-icon {\n color: #c7c7cc;\n}\n\n.theme-light .messenger-conversations-empty h3,\n.theme-light .messenger-chat-empty h3,\n.theme-light .messenger-help-empty h3,\n.theme-light .messenger-changelog-empty h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-conversations-empty p,\n.theme-light .messenger-chat-empty p,\n.theme-light .messenger-help-empty p,\n.theme-light .messenger-changelog-empty p {\n color: #86868b;\n}\n\n.theme-light .messenger-conversation-item:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.theme-light .messenger-conversation-title {\n color: #1d1d1f !important;\n}\n\n.theme-light .messenger-conversation-item.unread .messenger-conversation-title {\n color: #1d1d1f !important;\n font-weight: 400;\n}\n\n.theme-light .messenger-conversation-time {\n color: #86868b !important;\n}\n\n.theme-light .messenger-conversation-message {\n color: #6e6e73 !important;\n}\n\n.theme-light .messenger-conversation-item.unread .messenger-conversation-message {\n color: #3a3a3c !important;\n}\n\n.theme-light .messenger-chat-title,\n.theme-light .messenger-help-article-title,\n.theme-light .messenger-changelog-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-article-desc,\n.theme-light .messenger-changelog-description {\n color: #86868b;\n}\n\n.theme-light .messenger-conversations-footer {\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-new-message-btn {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-new-message-btn:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-new-message-btn svg,\n.theme-light .messenger-new-message-btn i {\n color: #86868b;\n}\n\n/* Chat View */\n.theme-light .messenger-chat-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-header {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-chat-messages {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-empty h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-chat-empty p {\n color: #86868b;\n}\n\n.theme-light .messenger-message-sender {\n color: #86868b;\n}\n\n.theme-light .messenger-message-received .messenger-message-bubble {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-message-own .messenger-message-bubble {\n background: #007aff;\n color: #ffffff;\n}\n\n.theme-light .messenger-message-time {\n color: #86868b;\n}\n\n.theme-light .messenger-chat-compose {\n background: #ffffff;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-compose-input-wrapper {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-compose-input {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-compose-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-compose-send:disabled {\n background: #e5e5e7;\n color: #c7c7cc;\n}\n\n/* Help View */\n.theme-light .messenger-help-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-body {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-search {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-search-wrapper {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-help-search-icon {\n color: #86868b;\n}\n\n.theme-light .messenger-help-search-input {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-search-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-help-collections-header {\n color: #1d1d1f;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-help-collection {\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-help-collection:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.theme-light .messenger-help-collection-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-collection-desc {\n color: #6e6e73;\n}\n\n.theme-light .messenger-help-collection-count {\n color: #86868b;\n}\n\n.theme-light .messenger-help-collection-arrow {\n color: #c7c7cc;\n}\n\n/* Changelog View */\n.theme-light .messenger-changelog-subheader {\n border-bottom-color: #e5e5e7;\n}\n\n.theme-light .messenger-changelog-latest {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-team {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-card {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-changelog-card:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-changelog-tag {\n background: rgba(0, 122, 255, 0.15);\n color: #007aff;\n}\n\n.theme-light .messenger-changelog-date {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-arrow {\n color: #c7c7cc;\n}\n\n/* Navigation */\n.theme-light .messenger-panel-nav {\n background: #ffffff;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-nav-icon {\n color: #86868b;\n}\n\n.theme-light .messenger-nav-label {\n color: #86868b;\n}\n\n.theme-light .messenger-nav-tab:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.theme-light .messenger-nav-tab.active .messenger-nav-icon,\n.theme-light .messenger-nav-tab.active .messenger-nav-label {\n color: #007aff;\n}\n\n/* ========================================\n Responsive Design\n ======================================== */\n\n@media (max-width: 480px) {\n .messenger-panel {\n width: 100%;\n height: 100%;\n max-height: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n border-radius: 0;\n }\n\n .messenger-panel-content {\n border-radius: 0;\n }\n\n .messenger-launcher {\n bottom: 16px;\n right: 16px;\n }\n\n .messenger-launcher-bottom-left {\n left: 16px;\n }\n}\n\n/* ========================================\n Animations\n ======================================== */\n\n@keyframes messenger-slide-up {\n from {\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes messenger-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .messenger-launcher-btn,\n .messenger-panel,\n .messenger-nav-tab,\n .messenger-conversation-item,\n .messenger-help-article,\n .messenger-changelog-card {\n transition: none;\n }\n}\n`;\n","export const CSS_STYLES = `\n.feedback-widget {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 14px;\n line-height: 1.4;\n z-index: 999999;\n box-sizing: border-box;\n}\n\n.feedback-widget *,\n.feedback-widget *::before,\n.feedback-widget *::after {\n box-sizing: border-box;\n}\n\n.feedback-widget-button {\n position: fixed;\n z-index: 999999;\n}\n\n.feedback-widget-button.position-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.feedback-widget-button.position-top-right {\n top: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-top-left {\n top: 20px;\n left: 20px;\n}\n\n.feedback-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n height: 48px;\n overflow: visible;\n border-radius: 9999px;\n border: none;\n padding: 12px 20px;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.3s ease;\n color: white;\n background: #155EEF;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n width: fit-content;\n}\n\n.feedback-trigger-btn:hover:not(:disabled) {\n transform: translateY(-2px);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);\n}\n\n.feedback-trigger-btn:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.feedback-trigger-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-icon {\n flex-shrink: 0;\n}\n\n.feedback-minimize-icon,\n.feedback-expand-icon {\n position: absolute;\n top: -6px;\n right: -6px;\n width: 24px;\n height: 24px;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border-radius: 50%;\n opacity: 0;\n transition: opacity 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.feedback-minimize-icon svg,\n.feedback-expand-icon svg {\n width: 16px;\n height: 16px;\n display: block;\n fill: #155EEF;\n}\n\n/* Show minimize icon on hover when expanded */\n.feedback-widget-button:not(.minimized) .feedback-trigger-btn:hover .feedback-minimize-icon {\n opacity: 1;\n}\n\n/* Minimized state - just icon */\n.feedback-widget-button.minimized .feedback-trigger-btn {\n padding: 12px;\n width: 48px;\n height: 48px;\n justify-content: center;\n}\n\n.feedback-widget-button.minimized .feedback-text {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-minimize-icon {\n display: none;\n}\n\n/* Show expand icon on hover when minimized */\n.feedback-widget-button.minimized .feedback-trigger-btn:hover .feedback-expand-icon {\n opacity: 1;\n}\n\n/* Side Panel Styles */\n.feedback-panel {\n position: fixed;\n bottom: 80px;\n right: 24px;\n width: 420px;\n max-height: 500px;\n z-index: 1000000;\n transform: translateX(calc(100% + 24px));\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n font-family: inherit;\n}\n\n.feedback-panel.open {\n transform: translateX(0);\n}\n\n.feedback-panel-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.1);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n z-index: 999999;\n}\n\n.feedback-panel-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.feedback-panel-content {\n background: white;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-radius: 16px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), \n 0 10px 10px -5px rgba(0, 0, 0, 0.04),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.feedback-panel.theme-dark .feedback-panel-content {\n background: #1F2937;\n color: white;\n}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 24px;\n border-bottom: 1px solid #E5E7EB;\n flex-shrink: 0;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header {\n border-bottom-color: #374151;\n}\n\n.feedback-panel-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header h3 {\n color: white;\n}\n\n.feedback-panel-close {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #6B7280;\n padding: 4px;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.feedback-panel-close:hover {\n background: #F3F4F6;\n color: #111827;\n}\n\n.feedback-panel-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close {\n color: #9CA3AF;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close:hover {\n background: #374151;\n color: white;\n}\n\n.feedback-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.feedback-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.feedback-form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.feedback-form-group:last-child {\n margin-bottom: 0;\n}\n\n.feedback-form-group label {\n font-size: 14px;\n font-weight: 500;\n line-height: 1.25;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-form-group label {\n color: #D1D5DB;\n}\n\n.feedback-form-group input {\n height: 44px;\n width: 100%;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group input::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group input:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);\n}\n\n.feedback-form-group input:focus-visible {\n outline: none;\n}\n\n.feedback-form-group textarea {\n min-height: 200px;\n width: 100%;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group textarea::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group textarea:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);\n}\n\n.feedback-form-group textarea:focus-visible {\n outline: none;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input,\n.feedback-panel.theme-dark .feedback-form-group textarea {\n background: #374151;\n border-color: #4B5563;\n color: white;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input::placeholder,\n.feedback-panel.theme-dark .feedback-form-group textarea::placeholder {\n color: #6B7280;\n}\n\n.feedback-btn {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 8px;\n border: none;\n height: 44px;\n padding: 10px 18px;\n font-size: 15px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.feedback-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.feedback-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-btn-submit {\n background: #155EEF;\n color: white;\n width: 100%;\n}\n\n.feedback-btn-submit:hover:not(:disabled) {\n background: #4338ca;\n}\n\n.feedback-btn-submit:active:not(:disabled) {\n background: #3730a3;\n}\n\n.feedback-btn-cancel {\n background: transparent;\n color: #6B7280;\n border: 1px solid #D1D5DB;\n}\n\n.feedback-btn-cancel:hover:not(:disabled) {\n background: #F9FAFB;\n border-color: #9CA3AF;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel {\n color: #D1D5DB;\n border-color: #4B5563;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel:hover:not(:disabled) {\n background: #374151;\n}\n\n.feedback-form-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: auto;\n padding-top: 24px;\n}\n\n.feedback-error {\n color: #DC2626;\n font-size: 14px;\n font-weight: 400;\n margin-top: 8px;\n padding: 12px;\n background: #FEE2E2;\n border: 1px solid #FECACA;\n border-radius: 8px;\n display: none;\n}\n\n.feedback-error.show {\n display: block;\n}\n\n.feedback-panel.theme-dark .feedback-error {\n background: #7F1D1D;\n border-color: #991B1B;\n color: #FCA5A5;\n}\n\n.feedback-success-notification {\n position: fixed;\n top: 24px;\n right: 24px;\n z-index: 1000002;\n background: white;\n border: 1px solid #D1FAE5;\n border-radius: 12px;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 320px;\n}\n\n.feedback-success-content {\n display: flex;\n align-items: center;\n padding: 16px 20px;\n gap: 12px;\n}\n\n.feedback-success-icon {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: #10B981;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.feedback-success-content span {\n color: #065F46;\n font-weight: 500;\n font-size: 14px;\n flex: 1;\n}\n\n.feedback-success-close {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n border-radius: 4px;\n flex-shrink: 0;\n}\n\n.feedback-success-close:hover {\n background: #F3F4F6;\n color: #374151;\n}\n\n.feedback-success-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n@keyframes slideInRight {\n from {\n transform: translateX(400px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.feedback-panel-backdrop {\n animation: fadeIn 0.3s ease;\n}\n\n@media (max-width: 768px) {\n .feedback-panel {\n width: 100%;\n top: auto;\n bottom: 0;\n right: 0;\n left: 0;\n height: 85vh;\n max-height: 85vh;\n transform: translateY(100%);\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel.open {\n transform: translateY(0);\n }\n \n .feedback-panel-content {\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel-header {\n padding: 20px;\n position: relative;\n }\n \n .feedback-panel-header::before {\n content: '';\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n width: 40px;\n height: 4px;\n background: #D1D5DB;\n border-radius: 2px;\n }\n \n .feedback-panel.theme-dark .feedback-panel-header::before {\n background: #4B5563;\n }\n \n .feedback-panel-body {\n padding: 20px;\n }\n \n .feedback-form-group textarea {\n min-height: 150px;\n }\n \n .feedback-widget-button {\n bottom: 16px;\n right: 16px;\n }\n \n .feedback-widget-button.position-bottom-left {\n left: 16px;\n }\n \n .feedback-success-notification {\n top: 16px;\n right: 16px;\n left: 16px;\n min-width: auto;\n }\n \n .feedback-minimize-icon,\n .feedback-expand-icon {\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n }\n \n .feedback-minimize-icon svg,\n .feedback-expand-icon svg {\n width: 14px;\n height: 14px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .feedback-trigger-btn,\n .feedback-btn,\n .feedback-panel,\n .feedback-panel-backdrop,\n .feedback-success-notification,\n .feedback-minimize-icon,\n .feedback-expand-icon {\n transition: none;\n animation: none;\n }\n}\n\n@media print {\n .feedback-widget,\n .feedback-panel,\n .feedback-panel-backdrop,\n .feedback-success-notification {\n display: none !important;\n }\n}\n`;","import { APIService } from './core/APIService.js';\nimport { EventBus } from './core/EventBus.js';\nimport { FeedbackSDK } from './core/FeedbackSDK.js';\nimport { MESSENGER_STYLES } from './styles/messengerStyles.js';\nimport { CSS_STYLES } from './styles/styles.js';\nimport {\n\tAPIError,\n\tConfigError,\n\tSDKError,\n\tValidationError,\n\tWidgetError,\n} from './utils/errors.js';\nimport * as helpers from './utils/helpers.js';\nimport { BaseWidget } from './widgets/BaseWidget.js';\nimport { ButtonWidget } from './widgets/ButtonWidget.js';\nimport { InlineWidget } from './widgets/InlineWidget.js';\nimport { MessengerWidget } from './widgets/MessengerWidget.js';\nimport { SurveyWidget } from './widgets/SurveyWidget.js';\nimport { TabWidget } from './widgets/TabWidget.js';\nimport { WidgetFactory } from './widgets/WidgetFactory.js';\n\nfunction injectStyles() {\n\tif (\n\t\ttypeof document !== 'undefined' &&\n\t\t!document.querySelector('#feedback-sdk-styles')\n\t) {\n\t\tconst style = document.createElement('style');\n\t\tstyle.id = 'feedback-sdk-styles';\n\t\tstyle.textContent = CSS_STYLES + MESSENGER_STYLES;\n\t\tdocument.head.appendChild(style);\n\t}\n}\n\nfunction autoInit() {\n\tif (typeof window !== 'undefined' && window.FeedbackSDKConfig) {\n\t\tinjectStyles();\n\n\t\tconst config = { ...window.FeedbackSDKConfig };\n\t\tconst sdk = new FeedbackSDK(config);\n\n\t\tsdk\n\t\t\t.init()\n\t\t\t.then((initData) => {\n\t\t\t\twindow.FeedbackSDK.instance = sdk;\n\n\t\t\t\tif (window.FeedbackSDKConfig.autoCreate) {\n\t\t\t\t\tconst widgets = Array.isArray(window.FeedbackSDKConfig.autoCreate)\n\t\t\t\t\t\t? window.FeedbackSDKConfig.autoCreate\n\t\t\t\t\t\t: [window.FeedbackSDKConfig.autoCreate];\n\n\t\t\t\t\twidgets.forEach((widgetConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst widget = sdk.createWidget(\n\t\t\t\t\t\t\t\twidgetConfig.type || 'button',\n\t\t\t\t\t\t\t\twidgetConfig\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\twidget.mount(widgetConfig.container);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[FeedbackSDK] Failed to create widget:', error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKReady', {\n\t\t\t\t\t\tdetail: { sdk, config, initData },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error('[FeedbackSDK] Auto-initialization failed:', error);\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKError', {\n\t\t\t\t\t\tdetail: { error, config, phase: 'initialization' },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n\nfunction handleDOMReady() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.readyState === 'loading') {\n\t\t\tdocument.addEventListener('DOMContentLoaded', autoInit);\n\t\t} else {\n\t\t\tsetTimeout(autoInit, 0);\n\t\t}\n\t}\n}\n\nconst FeedbackSDKExport = {\n\tFeedbackSDK,\n\tBaseWidget,\n\tButtonWidget,\n\tTabWidget,\n\tInlineWidget,\n\tSurveyWidget,\n\tMessengerWidget,\n\tWidgetFactory,\n\tEventBus,\n\tAPIService,\n\tSDKError,\n\tAPIError,\n\tWidgetError,\n\tConfigError,\n\tValidationError,\n\thelpers,\n\tcreate: (config) => {\n\t\tinjectStyles();\n\t\treturn new FeedbackSDK(config);\n\t},\n\tversion: '1.0.0',\n\tinstance: null,\n\n\tisReady: () => Boolean(FeedbackSDKExport.instance),\n\tgetInstance: () => FeedbackSDKExport.instance,\n\n\tsetUserContext: (userContext) => {\n\t\tif (FeedbackSDKExport.instance) {\n\t\t\tFeedbackSDKExport.instance.setUserContext(userContext);\n\t\t} else {\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.FeedbackSDKUserContext = userContext;\n\t\t\t}\n\t\t}\n\t},\n\n\tinitWithUser: async (config, userContext) => {\n\t\tinjectStyles();\n\t\tconst fullConfig = { ...config, userContext };\n\t\tconst sdk = new FeedbackSDK(fullConfig);\n\t\tawait sdk.init();\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.FeedbackSDK.instance = sdk;\n\t\t}\n\n\t\treturn sdk;\n\t},\n\n\tonReady: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\tif (FeedbackSDKExport.isReady()) {\n\t\t\t\tcallback(FeedbackSDKExport.instance);\n\t\t\t} else {\n\t\t\t\twindow.addEventListener(\n\t\t\t\t\t'FeedbackSDKReady',\n\t\t\t\t\t(event) => {\n\t\t\t\t\t\tcallback(event.detail.sdk, event.detail);\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\n\tonError: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener('FeedbackSDKError', (event) => {\n\t\t\t\tcallback(event.detail.error, event.detail);\n\t\t\t});\n\t\t}\n\t},\n\n\textractUserContext: FeedbackSDK.extractUserContextFromAuth,\n};\n\nif (typeof window !== 'undefined') {\n\twindow.FeedbackSDK = FeedbackSDKExport;\n\thandleDOMReady();\n}\n\nexport default FeedbackSDKExport;\n\nexport {\n\tAPIError,\n\tAPIService,\n\tBaseWidget,\n\tButtonWidget,\n\tConfigError,\n\tEventBus,\n\tFeedbackSDK,\n\thelpers,\n\tInlineWidget,\n\tMessengerWidget,\n\tSDKError,\n\tSurveyWidget,\n\tTabWidget,\n\tValidationError,\n\tWidgetError,\n\tWidgetFactory,\n};\n"],"names":[],"mappings":"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E,QAAQ,CAAC,OAAO,EAAE,aAAa;CACrD;CACA,OAAO,SAAS;CAChB,GAAG;CACH,CAAC;CACD;;CCzXO,MAAM,gBAAgB,GAAG;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCxnDM,MAAM,UAAU,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCrmBD,SAAS,YAAY,GAAG;CACxB,CAAC;CACD,EAAE,OAAO,QAAQ,KAAK,WAAW;CACjC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB;CAChD,GAAG;CACH,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;CAC/C,EAAE,KAAK,CAAC,EAAE,GAAG,qBAAqB;CAClC,EAAE,KAAK,CAAC,WAAW,GAAG,UAAU,GAAG,gBAAgB;CACnD,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;CAClC,CAAC;CACD;;CAEA,SAAS,QAAQ,GAAG;CACpB,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,iBAAiB,EAAE;CAChE,EAAE,YAAY,EAAE;;CAEhB,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,iBAAiB,EAAE;CAChD,EAAE,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC;;CAErC,EAAE;CACF,IAAI,IAAI;CACR,IAAI,IAAI,CAAC,CAAC,QAAQ,KAA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"}
|
|
1
|
+
{"version":3,"file":"feedback-sdk.js","sources":["../src/utils/errors.js","../src/core/APIService.js","../src/core/EventBus.js","../src/utils/helpers.js","../src/widgets/BaseWidget.js","../src/widgets/ButtonWidget.js","../src/widgets/InlineWidget.js","../src/widgets/messenger/MessengerState.js","../src/widgets/messenger/components/MessengerLauncher.js","../src/widgets/messenger/components/NavigationTabs.js","../src/widgets/messenger/components/MessengerPanel.js","../src/widgets/messenger/views/ChangelogView.js","../src/widgets/messenger/views/ChatView.js","../src/widgets/messenger/views/ConversationsView.js","../src/widgets/messenger/views/HelpView.js","../src/widgets/messenger/views/HomeView.js","../src/widgets/MessengerWidget.js","../src/widgets/SurveyWidget.js","../src/widgets/TabWidget.js","../src/widgets/WidgetFactory.js","../src/core/FeedbackSDK.js","../src/styles/messengerStyles.js","../src/styles/styles.js","../src/index.js"],"sourcesContent":["export class SDKError extends Error {\n\tconstructor(message, cause) {\n\t\tsuper(message);\n\t\tthis.name = 'SDKError';\n\t\tthis.cause = cause;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, SDKError);\n\t\t}\n\t}\n}\n\nexport class APIError extends Error {\n\tconstructor(status, message, response) {\n\t\tsuper(message);\n\t\tthis.name = 'APIError';\n\t\tthis.status = status;\n\t\tthis.response = response;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, APIError);\n\t\t}\n\t}\n\n\tisNetworkError() {\n\t\treturn this.status === 0;\n\t}\n\n\tisClientError() {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\tisServerError() {\n\t\treturn this.status >= 500 && this.status < 600;\n\t}\n}\n\nexport class WidgetError extends Error {\n\tconstructor(message, widgetType, widgetId) {\n\t\tsuper(message);\n\t\tthis.name = 'WidgetError';\n\t\tthis.widgetType = widgetType;\n\t\tthis.widgetId = widgetId;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, WidgetError);\n\t\t}\n\t}\n}\n\nexport class ConfigError extends Error {\n\tconstructor(message, configKey) {\n\t\tsuper(message);\n\t\tthis.name = 'ConfigError';\n\t\tthis.configKey = configKey;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ConfigError);\n\t\t}\n\t}\n}\n\nexport class ValidationError extends Error {\n\tconstructor(message, field, value) {\n\t\tsuper(message);\n\t\tthis.name = 'ValidationError';\n\t\tthis.field = field;\n\t\tthis.value = value;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ValidationError);\n\t\t}\n\t}\n}\n\nexport class ErrorHandler {\n\tconstructor(debug = false) {\n\t\tthis.debug = debug;\n\t}\n\n\thandle(error, context = '') {\n\t\tconst errorInfo = {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tcontext,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tif (error instanceof APIError) {\n\t\t\terrorInfo.status = error.status;\n\t\t\terrorInfo.type = 'api';\n\t\t} else if (error instanceof WidgetError) {\n\t\t\terrorInfo.widgetType = error.widgetType;\n\t\t\terrorInfo.widgetId = error.widgetId;\n\t\t\terrorInfo.type = 'widget';\n\t\t} else if (error instanceof ConfigError) {\n\t\t\terrorInfo.configKey = error.configKey;\n\t\t\terrorInfo.type = 'config';\n\t\t} else if (error instanceof ValidationError) {\n\t\t\terrorInfo.field = error.field;\n\t\t\terrorInfo.value = error.value;\n\t\t\terrorInfo.type = 'validation';\n\t\t} else {\n\t\t\terrorInfo.type = 'unknown';\n\t\t}\n\n\t\tif (this.debug) {\n\t\t\tconsole.error('[FeedbackSDK Error]', errorInfo, error);\n\t\t} else {\n\t\t\tconsole.error('[FeedbackSDK Error]', error.message);\n\t\t}\n\n\t\treturn errorInfo;\n\t}\n\n\tgetUserMessage(error) {\n\t\tif (error instanceof APIError) {\n\t\t\tif (error.isNetworkError()) {\n\t\t\t\treturn 'Network error. Please check your connection and try again.';\n\t\t\t} else if (error.isClientError()) {\n\t\t\t\treturn 'Invalid request. Please check your input and try again.';\n\t\t\t} else if (error.isServerError()) {\n\t\t\t\treturn 'Server error. Please try again later.';\n\t\t\t}\n\t\t\treturn 'Failed to submit feedback. Please try again.';\n\t\t}\n\n\t\tif (error instanceof ValidationError) {\n\t\t\treturn `Please check your ${error.field}: ${error.message}`;\n\t\t}\n\n\t\tif (error instanceof ConfigError) {\n\t\t\treturn 'Configuration error. Please check your SDK setup.';\n\t\t}\n\n\t\tif (error instanceof WidgetError) {\n\t\t\treturn 'Widget error. Please try refreshing the page.';\n\t\t}\n\n\t\treturn 'An unexpected error occurred. Please try again.';\n\t}\n}\n","import { APIError } from '../utils/errors.js';\n\nconst MOCK_CONFIG = {\n\tprimaryColor: '#21244A',\n\tbackgroundColor: '#ffffff',\n\ttextColor: '#1F2937',\n\tboardId: 'feature-requests',\n\tsize: 'medium',\n\tdisplayMode: 'modal',\n};\n\n// Mock surveys for development\nconst MOCK_SURVEYS = [\n\t{\n\t\tid: 'mock_nps_survey',\n\t\ttype: 'nps',\n\t\ttitle: 'How likely are you to recommend us?',\n\t\tdescription: 'Your feedback helps us improve',\n\t\tlow_label: 'Not likely',\n\t\thigh_label: 'Very likely',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n\t{\n\t\tid: 'mock_csat_survey',\n\t\ttype: 'csat',\n\t\ttitle: 'How satisfied are you?',\n\t\tdescription: 'Rate your experience with our product',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n\t{\n\t\tid: 'mock_ces_survey',\n\t\ttype: 'ces',\n\t\ttitle: 'How easy was it?',\n\t\tdescription: 'Rate the ease of completing your task',\n\t\tlow_label: 'Very difficult',\n\t\thigh_label: 'Very easy',\n\t\ttrigger: 'manual',\n\t\tstatus: 'active',\n\t},\n];\n\n// Environment URLs\nconst ENV_URLS = {\n\tproduction: {\n\t\tbase: 'https://api.product7.io/api/v1',\n\t\twithWorkspace: (workspace) => `https://${workspace}.api.product7.io/api/v1`,\n\t},\n\tstaging: {\n\t\tbase: 'https://staging.api.product7.io/api/v1',\n\t\twithWorkspace: (workspace) =>\n\t\t\t`https://${workspace}.staging.api.product7.io/api/v1`,\n\t},\n};\n\nexport class APIService {\n\tconstructor(config = {}) {\n\t\tthis.workspace = config.workspace;\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.userContext = config.userContext || null;\n\t\tthis.mock = config.mock || false;\n\t\tthis.env = config.env || 'production';\n\n\t\tif (config.apiUrl) {\n\t\t\tthis.baseURL = config.apiUrl;\n\t\t} else {\n\t\t\tconst envConfig = ENV_URLS[this.env] || ENV_URLS.production;\n\t\t\tthis.baseURL = this.workspace\n\t\t\t\t? envConfig.withWorkspace(this.workspace)\n\t\t\t\t: envConfig.base;\n\t\t}\n\n\t\tthis._loadStoredSession();\n\t}\n\n\tasync init(userContext = null) {\n\t\tif (userContext) {\n\t\t\tthis.userContext = userContext;\n\t\t}\n\n\t\tif (this.isSessionValid()) {\n\t\t\treturn { sessionToken: this.sessionToken };\n\t\t}\n\n\t\tif (!this.userContext || !this.workspace) {\n\t\t\tconst error = `Missing ${!this.workspace ? 'workspace' : 'user context'} for initialization`;\n\t\t\tthrow new APIError(400, error);\n\t\t}\n\n\t\t// Mock mode - return fake session\n\t\tif (this.mock) {\n\t\t\tthis.sessionToken = 'mock_session_' + Date.now();\n\t\t\tthis.sessionExpiry = new Date(Date.now() + 3600 * 1000);\n\t\t\tthis._storeSession();\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: MOCK_CONFIG,\n\t\t\t\texpiresIn: 3600,\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\tworkspace: this.workspace,\n\t\t\tuser: this.userContext,\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/init', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tthis.sessionToken = response.session_token;\n\t\t\tthis.sessionExpiry = new Date(Date.now() + response.expires_in * 1000);\n\t\t\tthis._storeSession();\n\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: response.config || {},\n\t\t\t\texpiresIn: response.expires_in,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to initialize widget: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tasync submitFeedback(feedbackData) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\t// Mock mode - simulate success\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 500));\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_post_' + Date.now(),\n\t\t\t\t\ttitle: feedbackData.title,\n\t\t\t\t\tcontent: feedbackData.content,\n\t\t\t\t},\n\t\t\t\tmessage: 'Feedback submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\tboard:\n\t\t\t\tfeedbackData.board_id || feedbackData.board || feedbackData.boardId,\n\t\t\ttitle: feedbackData.title,\n\t\t\tcontent: feedbackData.content,\n\t\t\tattachments: feedbackData.attachments || [],\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/feedback', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.submitFeedback(feedbackData);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to submit feedback: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Get active surveys for the current user/context\n\t * @param {Object} context - Optional context overrides for targeting\n\t * @param {string} context.url - Override current URL\n\t * @param {Object} context.userProperties - Additional user properties\n\t * @returns {Promise<Array>} Array of active surveys matching targeting rules\n\t */\n\tasync getActiveSurveys(context = {}) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\t// Mock mode - return mock surveys\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 200));\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: MOCK_SURVEYS,\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst queryParams = new URLSearchParams();\n\n\t\t\t// Auto-detect current URL or use provided override\n\t\t\tconst currentUrl =\n\t\t\t\tcontext.url ||\n\t\t\t\t(typeof window !== 'undefined' ? window.location.href : '');\n\t\t\tif (currentUrl) {\n\t\t\t\tqueryParams.append('url', currentUrl);\n\t\t\t}\n\n\t\t\t// Auto-detect device info\n\t\t\tconst deviceInfo = this._getDeviceInfo();\n\t\t\tif (deviceInfo.device) queryParams.append('device', deviceInfo.device);\n\t\t\tif (deviceInfo.browser) queryParams.append('browser', deviceInfo.browser);\n\t\t\tif (deviceInfo.os) queryParams.append('os', deviceInfo.os);\n\n\t\t\t// Add user properties if provided\n\t\t\tif (context.userProperties) {\n\t\t\t\tqueryParams.append(\n\t\t\t\t\t'user_properties',\n\t\t\t\t\tJSON.stringify(context.userProperties)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst endpoint = `/widget/surveys/active${queryParams.toString() ? '?' + queryParams.toString() : ''}`;\n\n\t\t\tconst response = await this._makeRequest(endpoint, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: {\n\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.getActiveSurveys(context);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to get active surveys: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Auto-detect device, browser, and OS info\n\t * @returns {Object} Device info object\n\t */\n\t_getDeviceInfo() {\n\t\tif (typeof navigator === 'undefined') {\n\t\t\treturn { device: null, browser: null, os: null };\n\t\t}\n\n\t\tconst ua = navigator.userAgent;\n\n\t\t// Detect device type\n\t\tlet device = 'desktop';\n\t\tif (/Mobi|Android/i.test(ua)) {\n\t\t\tdevice = /Tablet|iPad/i.test(ua) ? 'tablet' : 'mobile';\n\t\t}\n\n\t\t// Detect browser\n\t\tlet browser = 'unknown';\n\t\tif (ua.includes('Firefox')) browser = 'firefox';\n\t\telse if (ua.includes('Edg')) browser = 'edge';\n\t\telse if (ua.includes('Chrome')) browser = 'chrome';\n\t\telse if (ua.includes('Safari')) browser = 'safari';\n\t\telse if (ua.includes('Opera') || ua.includes('OPR')) browser = 'opera';\n\n\t\t// Detect OS\n\t\tlet os = 'unknown';\n\t\tif (ua.includes('Windows')) os = 'windows';\n\t\telse if (ua.includes('Mac')) os = 'macos';\n\t\telse if (ua.includes('Linux')) os = 'linux';\n\t\telse if (ua.includes('Android')) os = 'android';\n\t\telse if (ua.includes('iPhone') || ua.includes('iPad')) os = 'ios';\n\n\t\treturn { device, browser, os };\n\t}\n\n\t/**\n\t * Submit a survey response\n\t * @param {string} surveyId - The survey ID\n\t * @param {Object} responseData - The survey response data\n\t * @param {number|string} responseData.rating - The rating/score value\n\t * @param {string} responseData.feedback - Optional text feedback\n\t * @param {Object} responseData.answers - For custom surveys, key-value pairs\n\t * @returns {Promise<Object>} Submission result\n\t */\n\tasync submitSurveyResponse(surveyId, responseData) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tif (!surveyId) {\n\t\t\tthrow new APIError(400, 'Survey ID is required');\n\t\t}\n\n\t\t// Mock mode - simulate success\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 300));\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tid: 'mock_response_' + Date.now(),\n\t\t\t\t\tsurvey_id: surveyId,\n\t\t\t\t\t...responseData,\n\t\t\t\t},\n\t\t\t\tmessage: 'Survey response submitted successfully!',\n\t\t\t};\n\t\t}\n\n\t\tconst payload = {\n\t\t\trating: responseData.rating,\n\t\t\tfeedback: responseData.feedback || '',\n\t\t\tanswers: responseData.answers || {},\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/responses`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.submitSurveyResponse(surveyId, responseData);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to submit survey response: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Dismiss a survey (mark as seen but not completed)\n\t * @param {string} surveyId - The survey ID to dismiss\n\t * @returns {Promise<Object>} Dismissal result\n\t */\n\tasync dismissSurvey(surveyId) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tif (!surveyId) {\n\t\t\tthrow new APIError(400, 'Survey ID is required');\n\t\t}\n\n\t\t// Mock mode - simulate success\n\t\tif (this.mock) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100));\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tmessage: 'Survey dismissed successfully',\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest(\n\t\t\t\t`/widget/surveys/${surveyId}/dismiss`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.dismissSurvey(surveyId);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to dismiss survey: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tisSessionValid() {\n\t\treturn (\n\t\t\tthis.sessionToken && this.sessionExpiry && new Date() < this.sessionExpiry\n\t\t);\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.userContext = userContext;\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.setItem(\n\t\t\t\t'feedbackSDK_userContext',\n\t\t\t\tJSON.stringify(userContext)\n\t\t\t);\n\t\t}\n\t}\n\n\tgetUserContext() {\n\t\treturn this.userContext;\n\t}\n\n\tclearSession() {\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.removeItem('feedbackSDK_session');\n\t\t\tlocalStorage.removeItem('feedbackSDK_userContext');\n\t\t}\n\t}\n\n\t_storeSession() {\n\t\tif (typeof localStorage === 'undefined') return;\n\n\t\ttry {\n\t\t\tconst sessionData = {\n\t\t\t\ttoken: this.sessionToken,\n\t\t\t\texpiry: this.sessionExpiry.toISOString(),\n\t\t\t\tworkspace: this.workspace,\n\t\t\t};\n\t\t\tlocalStorage.setItem('feedbackSDK_session', JSON.stringify(sessionData));\n\t\t} catch (error) {\n\t\t\t// Silently fail if localStorage is not available\n\t\t}\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('feedbackSDK_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage =\n\t\t\t\t\t\tresponseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n}\n","export class EventBus {\n\tconstructor() {\n\t\tthis.events = new Map();\n\t}\n\n\ton(event, callback) {\n\t\tif (!this.events.has(event)) {\n\t\t\tthis.events.set(event, []);\n\t\t}\n\t\tthis.events.get(event).push(callback);\n\n\t\treturn () => this.off(event, callback);\n\t}\n\n\toff(event, callback) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index > -1) {\n\t\t\t\tcallbacks.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\temit(event, data) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tcallbacks.forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[FeedbackSDK] Event callback error:', error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tonce(event, callback) {\n\t\tconst unsubscribe = this.on(event, (data) => {\n\t\t\tcallback(data);\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn unsubscribe;\n\t}\n\n\tclear() {\n\t\tthis.events.clear();\n\t}\n\n\tgetListenerCount(event) {\n\t\tconst callbacks = this.events.get(event);\n\t\treturn callbacks ? callbacks.length : 0;\n\t}\n}\n","export function generateId(prefix = 'feedback') {\n\tconst timestamp = Date.now();\n\tconst random = Math.random().toString(36).substring(2, 9);\n\treturn `${prefix}_${timestamp}_${random}`;\n}\n\nexport function deepMerge(target, source) {\n\tconst result = { ...target };\n\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tif (\n\t\t\t\tsource[key] &&\n\t\t\t\ttypeof source[key] === 'object' &&\n\t\t\t\t!Array.isArray(source[key])\n\t\t\t) {\n\t\t\t\tresult[key] = deepMerge(target[key] || {}, source[key]);\n\t\t\t} else {\n\t\t\t\tresult[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function debounce(func, wait) {\n\tlet timeout;\n\treturn function executedFunction(...args) {\n\t\tconst later = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tfunc(...args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport function throttle(func, limit) {\n\tlet lastFunc;\n\tlet lastRan;\n\treturn function (...args) {\n\t\tif (!lastRan) {\n\t\t\tfunc(...args);\n\t\t\tlastRan = Date.now();\n\t\t} else {\n\t\t\tclearTimeout(lastFunc);\n\t\t\tlastFunc = setTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tif (Date.now() - lastRan >= limit) {\n\t\t\t\t\t\tfunc(...args);\n\t\t\t\t\t\tlastRan = Date.now();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlimit - (Date.now() - lastRan)\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport function isValidEmail(email) {\n\tif (!email || typeof email !== 'string') return false;\n\n\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\treturn emailRegex.test(email.trim());\n}\n\nexport function sanitizeHTML(str) {\n\tif (!str || typeof str !== 'string') return '';\n\n\tconst div = document.createElement('div');\n\tdiv.textContent = str;\n\treturn div.innerHTML;\n}\n\nexport function getCSSProperty(element, property, fallback = '') {\n\tif (!element || !property) return fallback;\n\n\ttry {\n\t\tconst style = window.getComputedStyle(element);\n\t\treturn style.getPropertyValue(property) || fallback;\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function isInViewport(element) {\n\tif (!element) return false;\n\n\tconst rect = element.getBoundingClientRect();\n\treturn (\n\t\trect.top >= 0 &&\n\t\trect.left >= 0 &&\n\t\trect.bottom <=\n\t\t\t(window.innerHeight || document.documentElement.clientHeight) &&\n\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t);\n}\n\nexport function scrollToElement(element, options = {}) {\n\tif (!element) return;\n\n\tconst defaultOptions = {\n\t\tbehavior: 'smooth',\n\t\tblock: 'center',\n\t\tinline: 'nearest',\n\t};\n\n\telement.scrollIntoView({ ...defaultOptions, ...options });\n}\n\nexport function getBrowserInfo() {\n\tconst userAgent = navigator.userAgent;\n\tconst platform = navigator.platform;\n\n\treturn {\n\t\tuserAgent,\n\t\tplatform,\n\t\tlanguage: navigator.language || navigator.userLanguage,\n\t\tcookieEnabled: navigator.cookieEnabled,\n\t\tscreenResolution: `${screen.width}x${screen.height}`,\n\t\twindowSize: `${window.innerWidth}x${window.innerHeight}`,\n\t\ttimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\t};\n}\n\nexport function formatFileSize(bytes) {\n\tif (bytes === 0) return '0 Bytes';\n\n\tconst k = 1024;\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function safeJsonParse(str, fallback = null) {\n\ttry {\n\t\treturn JSON.parse(str);\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function escapeRegex(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport function getNestedProperty(obj, path, defaultValue = undefined) {\n\tif (!obj || !path) return defaultValue;\n\n\tconst keys = path.split('.');\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (current === null || current === undefined || !(key in current)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\treturn current;\n}\n\nexport function setNestedProperty(obj, path, value) {\n\tif (!obj || !path) return obj;\n\n\tconst keys = path.split('.');\n\tconst lastKey = keys.pop();\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (!(key in current) || typeof current[key] !== 'object') {\n\t\t\tcurrent[key] = {};\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\tcurrent[lastKey] = value;\n\treturn obj;\n}\n\nexport function isBrowser() {\n\treturn typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nexport function isMobile() {\n\tif (!isBrowser()) return false;\n\n\treturn (\n\t\t/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n\t\t\tnavigator.userAgent\n\t\t) || window.innerWidth <= 768\n\t);\n}\n\nexport function getCurrentTimestamp() {\n\treturn new Date().toISOString();\n}\n\nexport function validateConfig(config, required = []) {\n\tconst missing = [];\n\n\tfor (const key of required) {\n\t\tif (!config[key]) {\n\t\t\tmissing.push(key);\n\t\t}\n\t}\n\n\tif (missing.length > 0) {\n\t\tthrow new Error(`Missing required configuration: ${missing.join(', ')}`);\n\t}\n\n\treturn true;\n}\n","export class BaseWidget {\n\tconstructor(options = {}) {\n\t\tthis.id = options.id;\n\t\tthis.sdk = options.sdk;\n\t\tthis.apiService = options.apiService;\n\t\tthis.type = options.type || 'base';\n\n\t\tthis.options = {\n\t\t\tcontainer: null,\n\t\t\tposition: this.sdk.config.position,\n\t\t\tboardId: this.sdk.config.boardId,\n\t\t\tdisplayMode: options.displayMode || 'panel',\n\t\t\tsize: options.size || 'medium',\n\t\t\tprimaryColor: options.primaryColor || '#21244A',\n\t\t\tbackgroundColor: options.backgroundColor || '#ffffff',\n\t\t\ttextColor: options.textColor || '#1F2937',\n\t\t\tautoShow: false,\n\t\t\tshowBackdrop: true,\n\t\t\tcustomStyles: {},\n\t\t\t...options,\n\t\t};\n\n\t\tthis.element = null;\n\t\tthis.panelElement = null;\n\t\tthis.backdropElement = null;\n\t\tthis.mounted = false;\n\t\tthis.destroyed = false;\n\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tisLoading: false,\n\t\t\tisSubmitting: false,\n\t\t\ttitle: '',\n\t\t\tcontent: '',\n\t\t\temail: '',\n\t\t\tattachments: [],\n\t\t\terrors: {},\n\t\t};\n\n\t\tthis._bindMethods();\n\t}\n\n\tmount(container) {\n\t\tif (this.mounted || this.destroyed) return this;\n\n\t\tif (typeof container === 'string') {\n\t\t\tcontainer = document.querySelector(container);\n\t\t}\n\n\t\tif (!container) {\n\t\t\tcontainer = document.body;\n\t\t}\n\n\t\tthis.container = container;\n\t\tthis.element = this._render();\n\t\tthis.container.appendChild(this.element);\n\n\t\tthis.mounted = true;\n\t\tthis._attachEvents();\n\t\tthis.onMount();\n\n\t\tif (this.options.autoShow) {\n\t\t\tthis.show();\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('widget:mounted', { widget: this });\n\t\treturn this;\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\topenPanel() {\n\t\tthis.state.isOpen = true;\n\n\t\tif (this.options.displayMode === 'modal') {\n\t\t\tthis._showLoadingModal();\n\t\t\t// Simulate loading delay then show form\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._hideLoadingModal();\n\t\t\t\tthis._renderPanel();\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tif (this.panelElement) {\n\t\t\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t\t\t}\n\t\t\t\t\tif (this.backdropElement) {\n\t\t\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, 600);\n\t\t} else {\n\t\t\tthis._renderPanel();\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (this.panelElement) {\n\t\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t\t}\n\t\t\t\tif (this.backdropElement) {\n\t\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_showLoadingModal() {\n\t\tthis.state.isLoading = true;\n\n\t\t// Create backdrop\n\t\tthis.backdropElement = document.createElement('div');\n\t\tthis.backdropElement.className = 'feedback-panel-backdrop';\n\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t// Create loading modal\n\t\tthis.loadingElement = document.createElement('div');\n\t\tthis.loadingElement.className = `feedback-loading-modal theme-${this.options.theme}`;\n\t\tthis.loadingElement.innerHTML = `\n\t\t\t<div class=\"feedback-loading-spinner\"></div>\n\t\t`;\n\t\tdocument.body.appendChild(this.loadingElement);\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.backdropElement.classList.add('show');\n\t\t\tthis.loadingElement.classList.add('show');\n\t\t});\n\t}\n\n\t_hideLoadingModal() {\n\t\tthis.state.isLoading = false;\n\t\tif (this.loadingElement) {\n\t\t\tthis.loadingElement.remove();\n\t\t\tthis.loadingElement = null;\n\t\t}\n\t}\n\n\tclosePanel() {\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.panelElement && this.panelElement.parentNode) {\n\t\t\t\tthis.panelElement.parentNode.removeChild(this.panelElement);\n\t\t\t\tthis.panelElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t\tthis._resetForm();\n\t\t}, 300);\n\t}\n\n\tasync submitFeedback() {\n\t\tif (this.state.isSubmitting) return;\n\n\t\tthis._hideError();\n\n\t\ttry {\n\t\t\tthis.state.isSubmitting = true;\n\t\t\tthis._updateSubmitButton();\n\n\t\t\tconst payload = {\n\t\t\t\ttitle: this.state.title || 'Feedback',\n\t\t\t\tcontent: this.state.content,\n\t\t\t\temail: this.state.email,\n\t\t\t\tboard_id: this.options.boardId,\n\t\t\t\tattachments: this.state.attachments,\n\t\t\t};\n\n\t\t\tif (!this.state.content.trim()) {\n\t\t\t\tthis._showError('Please enter your feedback message.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = await this.apiService.submitFeedback(payload);\n\n\t\t\tthis._showSuccessMessage();\n\t\t\tthis.closePanel();\n\n\t\t\tthis.sdk.eventBus.emit('feedback:submitted', {\n\t\t\t\twidget: this,\n\t\t\t\tfeedback: response,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis._showError('Failed to submit feedback. Please try again.');\n\t\t\tthis.sdk.eventBus.emit('feedback:error', { widget: this, error });\n\t\t} finally {\n\t\t\tthis.state.isSubmitting = false;\n\t\t\tthis._updateSubmitButton();\n\t\t}\n\t}\n\n\thandleConfigUpdate(newConfig) {\n\t\tthis.options.theme = newConfig.theme;\n\t\tif (this.element) {\n\t\t\tthis._updateTheme();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.destroyed) return;\n\n\t\tthis.onDestroy();\n\t\tthis.closePanel();\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.destroyed = true;\n\t\tthis.mounted = false;\n\t\tthis.sdk.eventBus.emit('widget:destroyed', { widget: this });\n\t}\n\n\tonMount() {}\n\tonDestroy() {}\n\n\t_render() {\n\t\tthrow new Error('_render() must be implemented by concrete widget');\n\t}\n\n\t_attachEvents() {\n\t\t// Override in concrete widgets\n\t}\n\n\t_bindMethods() {\n\t\tthis.openPanel = this.openPanel.bind(this);\n\t\tthis.closePanel = this.closePanel.bind(this);\n\t\tthis.submitFeedback = this.submitFeedback.bind(this);\n\t}\n\n\t_renderPanel() {\n\t\tif (this.panelElement) return;\n\n\t\tif (this.options.showBackdrop && !this.backdropElement) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'feedback-panel-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t\tthis.backdropElement.addEventListener('click', this.closePanel);\n\t\t}\n\n\t\tconst modeClass =\n\t\t\tthis.options.displayMode === 'modal'\n\t\t\t\t? 'feedback-modal'\n\t\t\t\t: 'feedback-panel';\n\t\tconst sizeClass = `size-${this.options.size}`;\n\t\tthis.panelElement = document.createElement('div');\n\t\tthis.panelElement.className = `${modeClass} ${sizeClass}`;\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--primary-color',\n\t\t\tthis.options.primaryColor\n\t\t);\n\t\tthis.panelElement.style.setProperty(\n\t\t\t'--bg-color',\n\t\t\tthis.options.backgroundColor\n\t\t);\n\t\tthis.panelElement.style.setProperty('--text-color', this.options.textColor);\n\t\tthis.panelElement.innerHTML = this._getPanelHTML();\n\n\t\tdocument.body.appendChild(this.panelElement);\n\t\tthis._attachPanelEvents();\n\n\t\tconst firstInput = this.panelElement.querySelector('input, textarea');\n\t\tif (firstInput) {\n\t\t\tsetTimeout(() => firstInput.focus(), 350);\n\t\t}\n\t}\n\n\t_getPanelHTML() {\n\t\treturn `\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-header\">\n <h3>Send Feedback</h3>\n <button class=\"feedback-panel-close\" type=\"button\" aria-label=\"Close\">×</button>\n </div>\n <div class=\"feedback-panel-body\">\n <form class=\"feedback-form\">\n <div class=\"feedback-form-group\">\n <label for=\"feedback-title-${this.id}\">Title (optional)</label>\n <input \n type=\"text\" \n id=\"feedback-title-${this.id}\" \n name=\"title\" \n placeholder=\"Brief description of your feedback\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <label for=\"feedback-content-${this.id}\">Message *</label>\n <textarea \n id=\"feedback-content-${this.id}\" \n name=\"content\" \n placeholder=\"Tell us what you think...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-error\" role=\"alert\"></div>\n <div class=\"feedback-form-actions\">\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n ${this.state.isSubmitting ? 'Sending...' : 'Send Feedback'}\n </button>\n </div>\n </form>\n </div>\n </div>\n `;\n\t}\n\n\t_attachPanelEvents() {\n\t\tconst panel = this.panelElement;\n\n\t\tpanel\n\t\t\t.querySelector('.feedback-panel-close')\n\t\t\t.addEventListener('click', this.closePanel);\n\n\t\tconst form = panel.querySelector('.feedback-form');\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('input[name=\"title\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.title = e.target.value;\n\t\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tconst handleEscape = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closePanel();\n\t\t\t\tdocument.removeEventListener('keydown', handleEscape);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', handleEscape);\n\t}\n\n\t_updateSubmitButton() {\n\t\tif (this.panelElement) {\n\t\t\tconst submitBtn = this.panelElement.querySelector('.feedback-btn-submit');\n\t\t\tif (submitBtn) {\n\t\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t\t? 'Sending...'\n\t\t\t\t\t: 'Send Feedback';\n\t\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t\t}\n\t\t}\n\t}\n\n\t_showError(message) {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.textContent = message;\n\t\t\t\terrorElement.classList.add('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_hideError() {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.classList.remove('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'feedback-success-notification';\n\t\tnotification.innerHTML = `\n <div class=\"feedback-success-content\">\n <div class=\"feedback-success-icon\">✓</div>\n <span>Feedback submitted successfully!</span>\n <button class=\"feedback-success-close\" aria-label=\"Close\">×</button>\n </div>\n `;\n\n\t\tdocument.body.appendChild(notification);\n\n\t\tconst closeBtn = notification.querySelector('.feedback-success-close');\n\t\tconst closeNotification = () => {\n\t\t\tif (notification.parentNode) {\n\t\t\t\tnotification.style.opacity = '0';\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (notification.parentNode) {\n\t\t\t\t\t\tnotification.parentNode.removeChild(notification);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t};\n\n\t\tcloseBtn.addEventListener('click', closeNotification);\n\n\t\tsetTimeout(closeNotification, 4000);\n\t}\n\n\t_resetForm() {\n\t\tthis.state.title = '';\n\t\tthis.state.content = '';\n\t\tthis.state.email = '';\n\t\tthis.state.errors = {};\n\t}\n\n\t_updateTheme() {\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.className = this.panelElement.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t}\n\n\topenModal() {\n\t\tthis.openPanel();\n\t}\n\n\tcloseModal() {\n\t\tthis.closePanel();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class ButtonWidget extends BaseWidget {\n constructor(options) {\n super({ ...options, type: 'button' });\n this.isMinimized = false;\n }\n\n render() {\n const button = document.createElement('div');\n button.className = `feedback-widget feedback-widget-button theme-${this.options.theme} position-${this.options.position}`;\n button.innerHTML = `\n <button class=\"feedback-trigger-btn\" type=\"button\">\n <svg class=\"feedback-icon\" width=\"20\" height=\"20\" viewBox=\"0 0 256 256\" fill=\"currentColor\">\n <path d=\"M216,80H184V48a16,16,0,0,0-16-16H40A16,16,0,0,0,24,48V176a8,8,0,0,0,13,6.22L72,154V184a16,16,0,0,0,16,16h93.59L219,230.22a8,8,0,0,0,5,1.78,8,8,0,0,0,8-8V96A16,16,0,0,0,216,80ZM66.55,137.78,40,159.25V48H168v88H71.58A8,8,0,0,0,66.55,137.78ZM216,207.25l-26.55-21.47a8,8,0,0,0-5-1.78H88V152h80a16,16,0,0,0,16-16V96h32Z\"/>\n </svg>\n <span class=\"feedback-text\">Feedback</span>\n \n <div class=\"feedback-minimize-icon\">\n <svg viewBox=\"0 0 256 256\">\n <path d=\"M213.66,53.66,163.31,104H192a8,8,0,0,1,0,16H144a8,8,0,0,1-8-8V64a8,8,0,0,1,16,0V92.69l50.34-50.35a8,8,0,0,1,11.32,11.32ZM112,136H64a8,8,0,0,0,0,16H92.69L42.34,202.34a8,8,0,0,0,11.32,11.32L104,163.31V192a8,8,0,0,0,16,0V144A8,8,0,0,0,112,136Z\"/>\n </svg>\n </div>\n \n <div class=\"feedback-expand-icon\">\n <svg viewBox=\"0 0 256 256\">\n <path d=\"M112,40V64.69L61.66,14.34A8,8,0,0,0,50.34,25.66L100.69,76H72a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V36A8,8,0,0,0,112,40Zm131.06,70.61a8,8,0,0,0-8.72,1.73L184,162.69V136a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8h48a8,8,0,0,0,0-16H195.31l50.35-50.34A8,8,0,0,0,243.06,110.61Z\"/>\n </svg>\n </div>\n </button>\n `;\n\n if (this.options.customStyles) {\n Object.assign(button.style, this.options.customStyles);\n }\n\n return button;\n }\n\n attachEvents() {\n const button = this.element.querySelector('.feedback-trigger-btn');\n const minimizeIcon = this.element.querySelector('.feedback-minimize-icon');\n const expandIcon = this.element.querySelector('.feedback-expand-icon');\n\n // Add click handlers directly to the icons\n minimizeIcon.addEventListener('click', (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.minimize();\n });\n\n expandIcon.addEventListener('click', (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.restore();\n });\n\n // Main button click handler\n button.addEventListener('click', (e) => {\n // Check if the click originated from an icon\n if (e.target.closest('.feedback-minimize-icon') || \n e.target.closest('.feedback-expand-icon')) {\n return; // Let the icon handlers deal with it\n }\n \n if (!this.isMinimized) {\n this.openPanel();\n }\n });\n\n button.addEventListener('mouseenter', () => {\n if (!this.state.isSubmitting && !this.isMinimized) {\n button.style.transform = 'translateY(-2px)';\n }\n });\n\n button.addEventListener('mouseleave', () => {\n if (!this.isMinimized) {\n button.style.transform = 'translateY(0)';\n }\n });\n }\n\n minimize() {\n this.isMinimized = true;\n this.element.classList.add('minimized');\n }\n\n restore() {\n this.isMinimized = false;\n this.element.classList.remove('minimized');\n }\n\n mount(container) {\n super.mount(container);\n }\n\n updateText(text) {\n const textEl = this.element?.querySelector('.feedback-text');\n if (textEl) {\n textEl.textContent = text;\n }\n }\n\n updatePosition(position) {\n this.options.position = position;\n if (this.element) {\n this.element.className = this.element.className.replace(\n /position-\\w+-\\w+/,\n `position-${position}`\n );\n }\n }\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class InlineWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'inline' });\n\t}\n\n\t_render() {\n\t\tconst widget = document.createElement('div');\n\t\twidget.className = `feedback-widget feedback-widget-inline theme-${this.options.theme}`;\n\t\twidget.innerHTML = `\n <div class=\"feedback-inline-content\">\n <h3>Send us your feedback</h3>\n <form class=\"feedback-inline-form\">\n <div class=\"feedback-form-group\">\n <input \n type=\"text\" \n name=\"title\" \n placeholder=\"Title (optional)\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <textarea \n name=\"content\" \n placeholder=\"Your feedback...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-form-group\">\n <input \n type=\"email\" \n name=\"email\" \n placeholder=\"Email (optional)\"\n value=\"${this.state.email}\"\n />\n </div>\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n Send Feedback\n </button>\n <div class=\"feedback-error\" style=\"display: none;\"></div>\n </form>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(widget.style, this.options.customStyles);\n\t\t}\n\n\t\treturn widget;\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.feedback-inline-form');\n\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tform.querySelector('input[name=\"title\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.title = e.target.value;\n\t\t});\n\n\t\tform\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tform.querySelector('input[name=\"email\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.email = e.target.value;\n\t\t});\n\t}\n\n\topenModal() {\n\t\tconst textarea = this.element.querySelector('textarea[name=\"content\"]');\n\t\tif (textarea) {\n\t\t\ttextarea.focus();\n\t\t}\n\t}\n\n\tcloseModal() {\n\t\t// Inline widget doesn't use modal\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst widget = this.element.querySelector('.feedback-inline-content');\n\t\tconst originalContent = widget.innerHTML;\n\n\t\twidget.innerHTML = `\n <div class=\"feedback-success\">\n <div class=\"feedback-success-icon\">✓</div>\n <h3>Thank you!</h3>\n <p>Your feedback has been submitted successfully.</p>\n <button class=\"feedback-btn feedback-btn-reset\">Send Another</button>\n </div>\n `;\n\n\t\tconst resetBtn = widget.querySelector('.feedback-btn-reset');\n\t\tresetBtn.addEventListener('click', () => {\n\t\t\twidget.innerHTML = originalContent;\n\t\t\tthis._attachEvents();\n\t\t\tthis._resetForm();\n\t\t});\n\t}\n\n\t_showError(message) {\n\t\tconst errorElement = this.element.querySelector('.feedback-error');\n\t\tif (errorElement) {\n\t\t\terrorElement.textContent = message;\n\t\t\terrorElement.style.display = 'block';\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (errorElement) {\n\t\t\t\t\terrorElement.style.display = 'none';\n\t\t\t\t}\n\t\t\t}, 5000);\n\t\t}\n\t}\n\n\t_updateSubmitButton() {\n\t\tconst submitBtn = this.element.querySelector('.feedback-btn-submit');\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t? 'Sending...'\n\t\t\t\t: 'Send Feedback';\n\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t}\n\t}\n\n\tupdateTitle(title) {\n\t\tconst titleElement = this.element?.querySelector('h3');\n\t\tif (titleElement) {\n\t\t\ttitleElement.textContent = title;\n\t\t}\n\t}\n\n\tsetPlaceholder(field, placeholder) {\n\t\tconst input = this.element?.querySelector(`[name=\"${field}\"]`);\n\t\tif (input) {\n\t\t\tinput.placeholder = placeholder;\n\t\t}\n\t}\n}\n","/**\n * MessengerState - State management for the Messenger widget\n */\nexport class MessengerState {\n\tconstructor(options = {}) {\n\t\tthis.currentView = 'home'; // 'home', 'messages', 'chat', 'help', 'changelog'\n\t\tthis.isOpen = false;\n\t\tthis.unreadCount = 0;\n\t\tthis.activeConversationId = null;\n\n\t\t// Conversations\n\t\tthis.conversations = [];\n\t\tthis.messages = {}; // { conversationId: [messages] }\n\n\t\t// Help articles\n\t\tthis.helpArticles = [];\n\t\tthis.helpSearchQuery = '';\n\n\t\t// Changelog\n\t\tthis.homeChangelogItems = [];\n\t\tthis.changelogItems = [];\n\n\t\t// Team info\n\t\tthis.teamName = options.teamName || 'Support';\n\t\tthis.teamAvatars = options.teamAvatars || [];\n\t\tthis.welcomeMessage = options.welcomeMessage || 'How can we help?';\n\n\t\t// User info\n\t\tthis.userContext = options.userContext || null;\n\n\t\t// Feature flags\n\t\tthis.enableHelp = options.enableHelp !== false;\n\t\tthis.enableChangelog = options.enableChangelog !== false;\n\n\t\t// Listeners\n\t\tthis._listeners = new Set();\n\t}\n\n\t/**\n\t * Subscribe to state changes\n\t */\n\tsubscribe(callback) {\n\t\tthis._listeners.add(callback);\n\t\treturn () => this._listeners.delete(callback);\n\t}\n\n\t/**\n\t * Notify all listeners of state change\n\t */\n\t_notify(changeType, data) {\n\t\tthis._listeners.forEach((cb) => cb(changeType, data, this));\n\t}\n\n\t/**\n\t * Set current view\n\t */\n\tsetView(view) {\n\t\tconst previousView = this.currentView;\n\t\tthis.currentView = view;\n\t\tthis._notify('viewChange', { previousView, currentView: view });\n\t}\n\n\t/**\n\t * Toggle panel open/closed\n\t */\n\tsetOpen(isOpen) {\n\t\tthis.isOpen = isOpen;\n\t\tthis._notify('openChange', { isOpen });\n\t}\n\n\t/**\n\t * Set active conversation for chat view\n\t */\n\tsetActiveConversation(conversationId) {\n\t\tthis.activeConversationId = conversationId;\n\t\tthis._notify('conversationChange', { conversationId });\n\t}\n\n\t/**\n\t * Update conversations list\n\t */\n\tsetConversations(conversations) {\n\t\tthis.conversations = conversations;\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationsUpdate', { conversations });\n\t}\n\n\t/**\n\t * Add a new conversation\n\t */\n\taddConversation(conversation) {\n\t\tthis.conversations.unshift(conversation);\n\t\tthis._updateUnreadCount();\n\t\tthis._notify('conversationAdded', { conversation });\n\t}\n\n\t/**\n\t * Update messages for a conversation\n\t */\n\tsetMessages(conversationId, messages) {\n\t\tthis.messages[conversationId] = messages;\n\t\tthis._notify('messagesUpdate', { conversationId, messages });\n\t}\n\n\t/**\n\t * Add a message to a conversation\n\t */\n\taddMessage(conversationId, message) {\n\t\tif (!this.messages[conversationId]) {\n\t\t\tthis.messages[conversationId] = [];\n\t\t}\n\t\tthis.messages[conversationId].push(message);\n\n\t\t// Update conversation preview\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv) {\n\t\t\tconv.lastMessage = message.content;\n\t\t\tconv.lastMessageTime = message.timestamp;\n\t\t\tif (!message.isOwn) {\n\t\t\t\tconv.unread = (conv.unread || 0) + 1;\n\t\t\t\tthis._updateUnreadCount();\n\t\t\t}\n\t\t}\n\n\t\tthis._notify('messageAdded', { conversationId, message });\n\t}\n\n\t/**\n\t * Mark conversation as read\n\t */\n\tmarkAsRead(conversationId) {\n\t\tconst conv = this.conversations.find((c) => c.id === conversationId);\n\t\tif (conv && conv.unread > 0) {\n\t\t\tconv.unread = 0;\n\t\t\tthis._updateUnreadCount();\n\t\t\tthis._notify('conversationRead', { conversationId });\n\t\t}\n\t}\n\n\t/**\n\t * Update unread count\n\t */\n\t_updateUnreadCount() {\n\t\tthis.unreadCount = this.conversations.reduce(\n\t\t\t(sum, c) => sum + (c.unread || 0),\n\t\t\t0\n\t\t);\n\t\tthis._notify('unreadCountChange', { count: this.unreadCount });\n\t}\n\n\t/**\n\t * Set help articles\n\t */\n\tsetHelpArticles(articles) {\n\t\tthis.helpArticles = articles;\n\t\tthis._notify('helpArticlesUpdate', { articles });\n\t}\n\n\t/**\n\t * Set help search query\n\t */\n\tsetHelpSearchQuery(query) {\n\t\tthis.helpSearchQuery = query;\n\t\tthis._notify('helpSearchChange', { query });\n\t}\n\n\t/**\n\t * Set home changelog items\n\t */\n\tsetHomeChangelogItems(items) {\n\t\tthis.homeChangelogItems = items;\n\t\tthis._notify('homeChangelogUpdate', { items });\n\t}\n\n\t/**\n\t * Set changelog items\n\t */\n\tsetChangelogItems(items) {\n\t\tthis.changelogItems = items;\n\t\tthis._notify('changelogUpdate', { items });\n\t}\n\n\t/**\n\t * Get current conversation\n\t */\n\tgetActiveConversation() {\n\t\treturn this.conversations.find((c) => c.id === this.activeConversationId);\n\t}\n\n\t/**\n\t * Get messages for active conversation\n\t */\n\tgetActiveMessages() {\n\t\treturn this.messages[this.activeConversationId] || [];\n\t}\n\n\t/**\n\t * Get filtered help articles\n\t */\n\tgetFilteredHelpArticles() {\n\t\tif (!this.helpSearchQuery) {\n\t\t\treturn this.helpArticles;\n\t\t}\n\t\tconst query = this.helpSearchQuery.toLowerCase();\n\t\treturn this.helpArticles.filter(\n\t\t\t(article) =>\n\t\t\t\tarticle.title.toLowerCase().includes(query) ||\n\t\t\t\t(article.description &&\n\t\t\t\t\tarticle.description.toLowerCase().includes(query))\n\t\t);\n\t}\n\n\t/**\n\t * Reset state\n\t */\n\treset() {\n\t\tthis.currentView = 'home';\n\t\tthis.activeConversationId = null;\n\t\tthis.helpSearchQuery = '';\n\t\tthis._notify('reset', {});\n\t}\n}\n","/**\n * MessengerLauncher - Floating trigger button for messenger\n */\nexport class MessengerLauncher {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\tprimaryColor: options.primaryColor || '#1c1c1e',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `messenger-launcher messenger-launcher-${this.options.position}`;\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._updateIcon();\n\t\t\t}\n\t\t\tif (type === 'unreadCountChange') {\n\t\t\t\tthis._updateBadge();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst badgeHtml =\n\t\t\tthis.state.unreadCount > 0\n\t\t\t\t? `<span class=\"messenger-launcher-badge\">${this.state.unreadCount > 9 ? '9+' : this.state.unreadCount}</span>`\n\t\t\t\t: '';\n\n\t\tthis.element.innerHTML = `\n\t\t\t<button class=\"messenger-launcher-btn\" aria-label=\"Open messenger\" style=\"background: ${this.options.primaryColor};\">\n\t\t\t\t<span class=\"messenger-launcher-icon messenger-launcher-icon-chat\">\n\t\t\t\t\t<i class=\"ph ph-chat-circle-dots\" style=\"font-size: 24px;\"></i>\n\t\t\t\t</span>\n\t\t\t\t<span class=\"messenger-launcher-icon messenger-launcher-icon-close\" style=\"display: none;\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 24px;\"></i>\n\t\t\t\t</span>\n\t\t\t\t${badgeHtml}\n\t\t\t</button>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element\n\t\t\t.querySelector('.messenger-launcher-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(!this.state.isOpen);\n\t\t\t});\n\t}\n\n\t_updateIcon() {\n\t\tconst chatIcon = this.element.querySelector(\n\t\t\t'.messenger-launcher-icon-chat'\n\t\t);\n\t\tconst closeIcon = this.element.querySelector(\n\t\t\t'.messenger-launcher-icon-close'\n\t\t);\n\n\t\tif (this.state.isOpen) {\n\t\t\tchatIcon.style.display = 'none';\n\t\t\tcloseIcon.style.display = 'flex';\n\t\t\tthis.element.classList.add('messenger-launcher-open');\n\t\t} else {\n\t\t\tchatIcon.style.display = 'flex';\n\t\t\tcloseIcon.style.display = 'none';\n\t\t\tthis.element.classList.remove('messenger-launcher-open');\n\t\t}\n\t}\n\n\t_updateBadge() {\n\t\tconst existingBadge = this.element.querySelector(\n\t\t\t'.messenger-launcher-badge'\n\t\t);\n\t\tif (existingBadge) {\n\t\t\texistingBadge.remove();\n\t\t}\n\n\t\tif (this.state.unreadCount > 0 && !this.state.isOpen) {\n\t\t\tconst badge = document.createElement('span');\n\t\t\tbadge.className = 'messenger-launcher-badge';\n\t\t\tbadge.textContent =\n\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\tthis.element.querySelector('.messenger-launcher-btn').appendChild(badge);\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * NavigationTabs - Bottom navigation for messenger\n */\nexport class NavigationTabs {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-nav';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange' || type === 'unreadCountChange') {\n\t\t\t\tthis._updateActiveTab();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_getTabs() {\n\t\tconst tabs = [\n\t\t\t{ id: 'home', label: 'Home', icon: this._getHomeIcon() },\n\t\t\t{\n\t\t\t\tid: 'messages',\n\t\t\t\tlabel: 'Messages',\n\t\t\t\ticon: this._getMessagesIcon(),\n\t\t\t\tbadge: this.state.unreadCount,\n\t\t\t},\n\t\t];\n\n\t\tif (this.state.enableHelp) {\n\t\t\ttabs.push({ id: 'help', label: 'Help', icon: this._getHelpIcon() });\n\t\t}\n\n\t\tif (this.state.enableChangelog) {\n\t\t\ttabs.push({\n\t\t\t\tid: 'changelog',\n\t\t\t\tlabel: 'Changelog',\n\t\t\t\ticon: this._getChangelogIcon(),\n\t\t\t});\n\t\t}\n\n\t\treturn tabs;\n\t}\n\n\t_updateContent() {\n\t\tconst tabs = this._getTabs();\n\t\tconst tabsHtml = tabs\n\t\t\t.map((tab) => {\n\t\t\t\tconst isActive = this.state.currentView === tab.id;\n\t\t\t\tconst badgeHtml =\n\t\t\t\t\ttab.badge && tab.badge > 0\n\t\t\t\t\t\t? `<span class=\"messenger-nav-badge\">${tab.badge > 9 ? '9+' : tab.badge}</span>`\n\t\t\t\t\t\t: '';\n\n\t\t\t\treturn `\n\t\t\t\t<button class=\"messenger-nav-tab ${isActive ? 'active' : ''}\" data-tab=\"${tab.id}\">\n\t\t\t\t\t<span class=\"messenger-nav-icon\">${tab.icon}</span>\n\t\t\t\t\t<span class=\"messenger-nav-label\">${tab.label}</span>\n\t\t\t\t\t${badgeHtml}\n\t\t\t\t</button>\n\t\t\t`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\tthis.element.innerHTML = tabsHtml;\n\t}\n\n\t_attachEvents() {\n\t\tthis.element.addEventListener('click', (e) => {\n\t\t\tconst tab = e.target.closest('.messenger-nav-tab');\n\t\t\tif (tab) {\n\t\t\t\tconst tabId = tab.dataset.tab;\n\t\t\t\tthis.state.setView(tabId);\n\t\t\t}\n\t\t});\n\t}\n\n\t_updateActiveTab() {\n\t\tconst tabs = this.element.querySelectorAll('.messenger-nav-tab');\n\t\ttabs.forEach((tab) => {\n\t\t\tconst isActive = tab.dataset.tab === this.state.currentView;\n\t\t\ttab.classList.toggle('active', isActive);\n\n\t\t\t// Update badge if messages tab\n\t\t\tif (tab.dataset.tab === 'messages') {\n\t\t\t\tconst existingBadge = tab.querySelector('.messenger-nav-badge');\n\t\t\t\tif (existingBadge) existingBadge.remove();\n\n\t\t\t\tif (this.state.unreadCount > 0) {\n\t\t\t\t\tconst badge = document.createElement('span');\n\t\t\t\t\tbadge.className = 'messenger-nav-badge';\n\t\t\t\t\tbadge.textContent =\n\t\t\t\t\t\tthis.state.unreadCount > 9 ? '9+' : this.state.unreadCount;\n\t\t\t\t\ttab.appendChild(badge);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t_getHomeIcon() {\n\t\treturn `<i class=\"ph-duotone ph-house-simple\" style=\"font-size: 24px;\"></i>`;\n\t}\n\n\t_getMessagesIcon() {\n\t\treturn `<i class=\"ph-duotone ph-chat\" style=\"font-size: 24px;\"></i>`;\n\t}\n\n\t_getHelpIcon() {\n\t\treturn `<i class=\"ph-duotone ph-question\" style=\"font-size: 24px;\"></i>`;\n\t}\n\n\t_getChangelogIcon() {\n\t\treturn `<i class=\"ph-duotone ph-megaphone\" style=\"font-size: 24px;\"></i>`;\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * MessengerPanel - Main panel container for messenger\n */\nimport { NavigationTabs } from './NavigationTabs.js';\n\nexport class MessengerPanel {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || 'dark',\n\t\t\t...options,\n\t\t};\n\t\tthis.element = null;\n\t\tthis.navigationTabs = null;\n\t\tthis.currentViewComponent = null;\n\t\tthis.viewRegistry = {};\n\t\tthis._unsubscribe = null;\n\t}\n\n\t/**\n\t * Register view components\n\t */\n\tregisterView(name, ViewClass) {\n\t\tthis.viewRegistry[name] = ViewClass;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = `messenger-panel messenger-panel-${this.options.position} theme-${this.options.theme}`;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-panel-content\">\n\t\t\t\t<div class=\"messenger-panel-views\"></div>\n\t\t\t\t<div class=\"messenger-panel-nav\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\t// Render navigation tabs\n\t\tthis.navigationTabs = new NavigationTabs(this.state, this.options);\n\t\tconst navContainer = this.element.querySelector('.messenger-panel-nav');\n\t\tnavContainer.appendChild(this.navigationTabs.render());\n\n\t\t// Render initial view\n\t\tthis._renderCurrentView();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'viewChange') {\n\t\t\t\tthis._renderCurrentView();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_renderCurrentView() {\n\t\tconst viewsContainer = this.element.querySelector('.messenger-panel-views');\n\n\t\t// Destroy current view if exists\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\n\t\t// Clear container\n\t\tviewsContainer.innerHTML = '';\n\n\t\t// Get view class\n\t\tconst ViewClass = this.viewRegistry[this.state.currentView];\n\t\tif (ViewClass) {\n\t\t\tthis.currentViewComponent = new ViewClass(this.state, this.options);\n\t\t\tviewsContainer.appendChild(this.currentViewComponent.render());\n\t\t} else {\n\t\t\tviewsContainer.innerHTML = `<div class=\"messenger-view-placeholder\">View not found: ${this.state.currentView}</div>`;\n\t\t}\n\t}\n\n\t/**\n\t * Show the panel with animation\n\t */\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t\t// Trigger animation\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.element.classList.add('open');\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Hide the panel with animation\n\t */\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.classList.remove('open');\n\t\t\t// Wait for animation to complete\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (this.element) {\n\t\t\t\t\tthis.element.style.display = 'none';\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t}\n\t}\n\n\t/**\n\t * Set panel header content (used by views)\n\t */\n\tsetHeader(headerContent) {\n\t\tconst header = this.element.querySelector('.messenger-panel-header');\n\t\tif (header) {\n\t\t\theader.innerHTML = headerContent;\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.navigationTabs) {\n\t\t\tthis.navigationTabs.destroy();\n\t\t}\n\t\tif (this.currentViewComponent && this.currentViewComponent.destroy) {\n\t\t\tthis.currentViewComponent.destroy();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * ChangelogView - Changelog and announcements\n */\nexport class ChangelogView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-changelog-view';\n\n\t\tthis._updateContent();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'changelogUpdate') {\n\t\t\t\tthis._updateChangelogList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst avatarsHtml = this._renderTeamAvatars();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-changelog-header\">\n\t\t\t\t<h2>Changelog</h2>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-changelog-subheader\">\n\t\t\t\t<span class=\"messenger-changelog-latest\">Latest</span>\n\t\t\t\t<div class=\"messenger-changelog-team\">\n\t\t\t\t\t<span>From ${this.state.teamName}</span>\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-changelog-body\">\n\t\t\t\t<div class=\"messenger-changelog-list\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateChangelogList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateChangelogList() {\n\t\tconst changelogContainer = this.element.querySelector(\n\t\t\t'.messenger-changelog-list'\n\t\t);\n\t\tconst changelogItems = this.state.changelogItems;\n\n\t\tif (changelogItems.length === 0) {\n\t\t\tchangelogContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tchangelogContainer.innerHTML = changelogItems\n\t\t\t.map((item) => this._renderChangelogCard(item))\n\t\t\t.join('');\n\n\t\t// Attach click events\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_renderChangelogCard(item) {\n\t\tconst tagsHtml =\n\t\t\titem.tags && item.tags.length > 0\n\t\t\t\t? `<div class=\"messenger-changelog-tags\">\n\t\t\t\t${item.tags.map((tag) => `<span class=\"messenger-changelog-tag\">${tag}</span>`).join('')}\n\t\t\t</div>`\n\t\t\t\t: '';\n\n\t\tconst dateStr = this._formatDate(item.publishedAt || item.date);\n\n\t\treturn `\n\t\t\t<div class=\"messenger-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"messenger-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"messenger-changelog-content\">\n\t\t\t\t\t${tagsHtml}\n\t\t\t\t\t<h3 class=\"messenger-changelog-title\">${item.title}</h3>\n\t\t\t\t\t${item.description ? `<p class=\"messenger-changelog-description\">${this._truncateText(item.description, 100)}</p>` : ''}\n\t\t\t\t\t<div class=\"messenger-changelog-meta\">\n\t\t\t\t\t\t<span class=\"messenger-changelog-date\">${dateStr}</span>\n\t\t\t\t\t\t<i class=\"ph ph-caret-right messenger-changelog-arrow\" style=\"font-size: 16px;\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack messenger-avatar-stack-tiny\">\n\t\t\t\t\t<div class=\"messenger-avatar messenger-avatar-tiny\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759'];\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-tiny\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${2 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-tiny\" style=\"background: ${colors[i % colors.length]}; z-index: ${2 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack messenger-avatar-stack-tiny\">${avatarItems}</div>`;\n\t}\n\n\t_renderEmptyState() {\n\t\treturn `\n\t\t\t<div class=\"messenger-changelog-empty\">\n\t\t\t\t<div class=\"messenger-changelog-empty-icon\">\n\t\t\t\t\t<i class=\"ph ph-megaphone\" style=\"font-size: 48px;\"></i>\n\t\t\t\t</div>\n\t\t\t\t<h3>No changelog yet</h3>\n\t\t\t\t<p>Check back later for updates</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t\tyear: 'numeric',\n\t\t});\n\t}\n\n\t_truncateText(text, maxLength) {\n\t\tif (!text) return '';\n\t\tif (text.length <= maxLength) return text;\n\t\treturn text.substring(0, maxLength).trim() + '...';\n\t}\n\n\t_attachEvents() {\n\t\t// Close button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\tthis._attachChangelogEvents();\n\t}\n\n\t_attachChangelogEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-changelog-card')\n\t\t\t.forEach((card) => {\n\t\t\t\tcard.addEventListener('click', () => {\n\t\t\t\t\tconst changelogId = card.dataset.changelogId;\n\t\t\t\t\tconst changelogItem = this.state.changelogItems.find(\n\t\t\t\t\t\t(n) => n.id === changelogId\n\t\t\t\t\t);\n\t\t\t\t\tif (changelogItem && changelogItem.url) {\n\t\t\t\t\t\twindow.open(changelogItem.url, '_blank');\n\t\t\t\t\t} else if (this.options.onChangelogClick) {\n\t\t\t\t\t\tthis.options.onChangelogClick(changelogItem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * ChatView - Individual conversation chat\n */\nexport class ChatView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-chat-view';\n\n\t\tthis._updateContent();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type, data) => {\n\t\t\tif (\n\t\t\t\ttype === 'messageAdded' &&\n\t\t\t\tdata.conversationId === this.state.activeConversationId\n\t\t\t) {\n\t\t\t\tthis._appendMessage(data.message);\n\t\t\t\tthis._scrollToBottom();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversation = this.state.getActiveConversation();\n\t\tconst messages = this.state.getActiveMessages();\n\n\t\tconst messagesHtml =\n\t\t\tmessages.length === 0\n\t\t\t\t? this._renderEmptyState()\n\t\t\t\t: messages.map((msg) => this._renderMessage(msg)).join('');\n\n\t\tconst avatarHtml = this._renderConversationAvatar(conversation);\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-chat-header\">\n\t\t\t\t<button class=\"messenger-back-btn\" aria-label=\"Back\">\n\t\t\t\t\t<i class=\"ph ph-caret-left\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t\t<div class=\"messenger-chat-header-info\">\n\t\t\t\t\t${avatarHtml}\n\t\t\t\t\t<span class=\"messenger-chat-title\">${conversation?.title || 'Chat with team'}</span>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-chat-messages\">\n\t\t\t\t${messagesHtml}\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-chat-compose\">\n\t\t\t\t<div class=\"messenger-compose-input-wrapper\">\n\t\t\t\t\t<textarea class=\"messenger-compose-input\" placeholder=\"Write a message...\" rows=\"1\"></textarea>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"messenger-compose-send\" aria-label=\"Send\" disabled>\n\t\t\t\t\t<i class=\"ph ph-paper-plane-tilt\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t\tthis._scrollToBottom();\n\t}\n\n\t_renderEmptyState() {\n\t\tconst avatarHtml = this._renderTeamAvatars();\n\t\treturn `\n\t\t\t<div class=\"messenger-chat-empty\">\n\t\t\t\t<div class=\"messenger-chat-empty-avatars\">${avatarHtml}</div>\n\t\t\t\t<h3>Start the conversation</h3>\n\t\t\t\t<p>Send us a message and we'll get back to you as soon as possible.</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderMessage(message) {\n\t\tconst isOwn = message.isOwn;\n\t\tconst messageClass = isOwn\n\t\t\t? 'messenger-message-own'\n\t\t\t: 'messenger-message-received';\n\t\tconst timeStr = this._formatMessageTime(message.timestamp);\n\n\t\tif (isOwn) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-message ${messageClass}\">\n\t\t\t\t\t<div class=\"messenger-message-bubble\">\n\t\t\t\t\t\t<div class=\"messenger-message-content\">${this._formatMessageContent(message.content)}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarHtml = this._renderSenderAvatar(message.sender);\n\t\treturn `\n\t\t\t<div class=\"messenger-message ${messageClass}\">\n\t\t\t\t<div class=\"messenger-message-avatar\">${avatarHtml}</div>\n\t\t\t\t<div class=\"messenger-message-wrapper\">\n\t\t\t\t\t<div class=\"messenger-message-sender\">${message.sender?.name || 'Support'}</div>\n\t\t\t\t\t<div class=\"messenger-message-bubble\">\n\t\t\t\t\t\t<div class=\"messenger-message-content\">${this._formatMessageContent(message.content)}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-message-time\">${timeStr}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderSenderAvatar(sender) {\n\t\tif (sender?.avatarUrl) {\n\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-small\" src=\"${sender.avatarUrl}\" alt=\"${sender.name}\" />`;\n\t\t}\n\t\tconst initial = (sender?.name || 'S').charAt(0).toUpperCase();\n\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">${initial}</div>`;\n\t}\n\n\t_renderConversationAvatar(conversation) {\n\t\tif (!conversation?.participants?.length) {\n\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">S</div>`;\n\t\t}\n\t\tconst p = conversation.participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-small\" src=\"${p.avatarUrl}\" alt=\"${p.name}\" />`;\n\t\t}\n\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">${(p.name || 'S').charAt(0).toUpperCase()}</div>`;\n\t}\n\n\t_renderTeamAvatars() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${3 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar\" style=\"background: ${colors[i % colors.length]}; z-index: ${3 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_formatMessageTime(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\treturn date.toLocaleTimeString('en-US', {\n\t\t\thour: 'numeric',\n\t\t\tminute: '2-digit',\n\t\t\thour12: true,\n\t\t});\n\t}\n\n\t_formatMessageContent(content) {\n\t\tif (!content) return '';\n\t\t// Basic HTML escaping and line breaks\n\t\treturn content\n\t\t\t.replace(/&/g, '&')\n\t\t\t.replace(/</g, '<')\n\t\t\t.replace(/>/g, '>')\n\t\t\t.replace(/\\n/g, '<br>');\n\t}\n\n\t_appendMessage(message) {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tconst emptyState = messagesContainer.querySelector('.messenger-chat-empty');\n\t\tif (emptyState) {\n\t\t\temptyState.remove();\n\t\t}\n\n\t\tconst messageHtml = this._renderMessage(message);\n\t\tconst tempDiv = document.createElement('div');\n\t\ttempDiv.innerHTML = messageHtml;\n\t\tmessagesContainer.appendChild(tempDiv.firstElementChild);\n\t}\n\n\t_scrollToBottom() {\n\t\tconst messagesContainer = this.element.querySelector(\n\t\t\t'.messenger-chat-messages'\n\t\t);\n\t\tif (messagesContainer) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tmessagesContainer.scrollTop = messagesContainer.scrollHeight;\n\t\t\t}, 50);\n\t\t}\n\t}\n\n\t_attachEvents() {\n\t\t// Back button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-back-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('messages');\n\t\t\t});\n\n\t\t// Close button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Compose input\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst sendBtn = this.element.querySelector('.messenger-compose-send');\n\n\t\tinput.addEventListener('input', () => {\n\t\t\t// Auto-resize textarea\n\t\t\tinput.style.height = 'auto';\n\t\t\tinput.style.height = Math.min(input.scrollHeight, 120) + 'px';\n\n\t\t\t// Enable/disable send button\n\t\t\tsendBtn.disabled = !input.value.trim();\n\t\t});\n\n\t\tinput.addEventListener('keydown', (e) => {\n\t\t\tif (e.key === 'Enter' && !e.shiftKey) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._sendMessage();\n\t\t\t}\n\t\t});\n\n\t\tsendBtn.addEventListener('click', () => {\n\t\t\tthis._sendMessage();\n\t\t});\n\t}\n\n\t_sendMessage() {\n\t\tconst input = this.element.querySelector('.messenger-compose-input');\n\t\tconst content = input.value.trim();\n\n\t\tif (!content) return;\n\n\t\t// Add message to state\n\t\tconst message = {\n\t\t\tid: 'msg_' + Date.now(),\n\t\t\tcontent: content,\n\t\t\tisOwn: true,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tthis.state.addMessage(this.state.activeConversationId, message);\n\n\t\t// Clear input\n\t\tinput.value = '';\n\t\tinput.style.height = 'auto';\n\t\tthis.element.querySelector('.messenger-compose-send').disabled = true;\n\n\t\t// Emit event for API integration\n\t\tif (this.options.onSendMessage) {\n\t\t\tthis.options.onSendMessage(this.state.activeConversationId, message);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * ConversationsView - Message thread list\n */\nexport class ConversationsView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-conversations-view';\n\n\t\tthis._updateContent();\n\t\tthis._attachEvents();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (\n\t\t\t\ttype === 'conversationsUpdate' ||\n\t\t\t\ttype === 'conversationAdded' ||\n\t\t\t\ttype === 'conversationRead'\n\t\t\t) {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst conversations = this.state.conversations;\n\t\tconst avatarsHtml = this._renderAvatarStack();\n\n\t\tlet conversationsHtml;\n\t\tif (conversations.length === 0) {\n\t\t\tconversationsHtml = `\n\t\t\t\t<div class=\"messenger-conversations-empty\">\n\t\t\t\t\t<div class=\"messenger-conversations-empty-icon\">\n\t\t\t\t\t\t<i class=\"ph ph-chat\" style=\"font-size: 48px;\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No conversations yet</h3>\n\t\t\t\t\t<p>Start a new conversation with our team</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t} else {\n\t\t\tconversationsHtml = `\n\t\t\t\t<div class=\"messenger-conversations-list\">\n\t\t\t\t\t${conversations.map((conv) => this._renderConversationItem(conv)).join('')}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-conversations-header\">\n\t\t\t\t<h2>Messages</h2>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-conversations-body\">\n\t\t\t\t${conversationsHtml}\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-conversations-footer\">\n\t\t\t\t<button class=\"messenger-new-message-btn\">\n\t\t\t\t\t<div class=\"messenger-new-message-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t<span>Send us a message</span>\n\t\t\t\t\t<i class=\"ph ph-arrow-right\" style=\"font-size: 16px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderConversationItem(conversation) {\n\t\tconst unreadClass = conversation.unread > 0 ? 'unread' : '';\n\t\tconst timeAgo = this._formatTimeAgo(conversation.lastMessageTime);\n\t\tconst avatarsHtml = this._renderConversationAvatars(\n\t\t\tconversation.participants\n\t\t);\n\n\t\treturn `\n\t\t\t<div class=\"messenger-conversation-item ${unreadClass}\" data-conversation-id=\"${conversation.id}\">\n\t\t\t\t<div class=\"messenger-conversation-avatars\">\n\t\t\t\t\t${avatarsHtml}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-conversation-content\">\n\t\t\t\t\t<div class=\"messenger-conversation-header\">\n\t\t\t\t\t\t<span class=\"messenger-conversation-title\">${conversation.title || 'Chat with team'}</span>\n\t\t\t\t\t\t<span class=\"messenger-conversation-time\">${timeAgo}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-conversation-preview\">\n\t\t\t\t\t\t${conversation.unread > 0 ? '<span class=\"messenger-unread-dot\"></span>' : ''}\n\t\t\t\t\t\t<span class=\"messenger-conversation-message\">${this._truncateMessage(conversation.lastMessage)}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderConversationAvatars(participants) {\n\t\tif (!participants || participants.length === 0) {\n\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-medium\" style=\"background: #5856d6;\">S</div>`;\n\t\t}\n\n\t\tconst p = participants[0];\n\t\tif (p.avatarUrl) {\n\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-medium\" src=\"${p.avatarUrl}\" alt=\"${p.name}\" />`;\n\t\t}\n\t\treturn `<div class=\"messenger-avatar messenger-avatar-medium\" style=\"background: ${this._getAvatarColor(0)};\">${(p.name || 'S').charAt(0).toUpperCase()}</div>`;\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack messenger-avatar-stack-small\">\n\t\t\t\t\t<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 2)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar messenger-avatar-small\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${2 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar messenger-avatar-small\" style=\"background: ${this._getAvatarColor(i)}; z-index: ${2 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack messenger-avatar-stack-small\">${avatarItems}</div>`;\n\t}\n\n\t_getAvatarColor(index) {\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\treturn colors[index % colors.length];\n\t}\n\n\t_formatTimeAgo(timestamp) {\n\t\tif (!timestamp) return '';\n\t\tconst date = new Date(timestamp);\n\t\tconst now = new Date();\n\t\tconst diffMs = now - date;\n\t\tconst diffMins = Math.floor(diffMs / 60000);\n\t\tconst diffHours = Math.floor(diffMs / 3600000);\n\t\tconst diffDays = Math.floor(diffMs / 86400000);\n\n\t\tif (diffMins < 1) return 'now';\n\t\tif (diffMins < 60) return `${diffMins}m`;\n\t\tif (diffHours < 24) return `${diffHours}h`;\n\t\tif (diffDays < 7) return `${diffDays}d`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_truncateMessage(message) {\n\t\tif (!message) return 'No messages yet';\n\t\tconst maxLength = 50;\n\t\tif (message.length <= maxLength) return message;\n\t\treturn message.substring(0, maxLength) + '...';\n\t}\n\n\t_attachEvents() {\n\t\t// Close button\n\t\tconst closeBtn = this.element.querySelector('.messenger-close-btn');\n\t\tif (closeBtn) {\n\t\t\tcloseBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\t\t}\n\n\t\t// Conversation items\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-conversation-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst convId = item.dataset.conversationId;\n\t\t\t\t\tthis.state.setActiveConversation(convId);\n\t\t\t\t\tthis.state.markAsRead(convId);\n\t\t\t\t\tthis.state.setView('chat');\n\t\t\t\t});\n\t\t\t});\n\n\t\t// New message button\n\t\tconst newMsgBtn = this.element.querySelector('.messenger-new-message-btn');\n\t\tif (newMsgBtn) {\n\t\t\tnewMsgBtn.addEventListener('click', () => {\n\t\t\t\tthis._startNewConversation();\n\t\t\t});\n\t\t}\n\t}\n\n\t_startNewConversation() {\n\t\t// Create a new conversation and navigate to chat\n\t\tconst newConv = {\n\t\t\tid: 'conv_' + Date.now(),\n\t\t\ttitle: 'New conversation',\n\t\t\tparticipants: [],\n\t\t\tlastMessage: null,\n\t\t\tlastMessageTime: new Date().toISOString(),\n\t\t\tunread: 0,\n\t\t};\n\t\tthis.state.addConversation(newConv);\n\t\tthis.state.setActiveConversation(newConv.id);\n\t\tthis.state.setView('chat');\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * HelpView - Help collections browse with Intercom-style design\n */\nexport class HelpView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-help-view';\n\n\t\tthis._updateContent();\n\n\t\t// Subscribe to state changes\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'helpArticlesUpdate' || type === 'helpSearchChange') {\n\t\t\t\tthis._updateCollectionsList();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst searchQuery = this.state.helpSearchQuery || '';\n\t\tconst collections = this.state.helpArticles || [];\n\t\tconst collectionCount = collections.length;\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-help-header\">\n\t\t\t\t<h2>Help</h2>\n\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-help-search\">\n\t\t\t\t<div class=\"messenger-help-search-wrapper\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclass=\"messenger-help-search-input\"\n\t\t\t\t\t\tplaceholder=\"Search for help\"\n\t\t\t\t\t\tvalue=\"${searchQuery}\"\n\t\t\t\t\t/>\n\t\t\t\t\t<i class=\"ph ph-magnifying-glass messenger-help-search-icon\" style=\"font-size: 18px;\"></i>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-help-body\">\n\t\t\t\t<div class=\"messenger-help-collections-header\">\n\t\t\t\t\t${collectionCount} collections\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-help-collections\"></div>\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._updateCollectionsList();\n\t\tthis._attachEvents();\n\t}\n\n\t_updateCollectionsList() {\n\t\tconst collectionsContainer = this.element.querySelector(\n\t\t\t'.messenger-help-collections'\n\t\t);\n\t\tconst collections = this.state.helpArticles || [];\n\t\tconst searchQuery = (this.state.helpSearchQuery || '').toLowerCase();\n\n\t\t// Filter collections by search\n\t\tconst filteredCollections = searchQuery\n\t\t\t? collections.filter(\n\t\t\t\t\t(c) =>\n\t\t\t\t\t\tc.title.toLowerCase().includes(searchQuery) ||\n\t\t\t\t\t\t(c.description && c.description.toLowerCase().includes(searchQuery))\n\t\t\t\t)\n\t\t\t: collections;\n\n\t\t// Update collection count\n\t\tconst headerEl = this.element.querySelector(\n\t\t\t'.messenger-help-collections-header'\n\t\t);\n\t\tif (headerEl) {\n\t\t\theaderEl.textContent = `${filteredCollections.length} collections`;\n\t\t}\n\n\t\tif (filteredCollections.length === 0) {\n\t\t\tcollectionsContainer.innerHTML = this._renderEmptyState();\n\t\t\treturn;\n\t\t}\n\n\t\tcollectionsContainer.innerHTML = filteredCollections\n\t\t\t.map((collection) => this._renderCollectionItem(collection))\n\t\t\t.join('');\n\n\t\t// Attach click events\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_renderCollectionItem(collection) {\n\t\tconst articleCount = collection.articleCount || 0;\n\t\treturn `\n\t\t\t<div class=\"messenger-help-collection\" data-collection-id=\"${collection.id}\">\n\t\t\t\t<div class=\"messenger-help-collection-content\">\n\t\t\t\t\t<h3 class=\"messenger-help-collection-title\">${collection.title}</h3>\n\t\t\t\t\t<p class=\"messenger-help-collection-desc\">${collection.description || ''}</p>\n\t\t\t\t\t<span class=\"messenger-help-collection-count\">${articleCount} articles</span>\n\t\t\t\t</div>\n\t\t\t\t<i class=\"ph ph-caret-right messenger-help-collection-arrow\" style=\"font-size: 20px;\"></i>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderEmptyState() {\n\t\tconst isSearching = this.state.helpSearchQuery;\n\n\t\tif (isSearching) {\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-help-empty\">\n\t\t\t\t\t<div class=\"messenger-help-empty-icon\">\n\t\t\t\t\t\t<i class=\"ph ph-magnifying-glass\" style=\"font-size: 48px;\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>No results found</h3>\n\t\t\t\t\t<p>Try a different search term</p>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn `\n\t\t\t<div class=\"messenger-help-empty\">\n\t\t\t\t<div class=\"messenger-help-empty-icon\">\n\t\t\t\t\t<i class=\"ph ph-question\" style=\"font-size: 48px;\"></i>\n\t\t\t\t</div>\n\t\t\t\t<h3>Help collections</h3>\n\t\t\t\t<p>No collections available yet</p>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_attachEvents() {\n\t\t// Close button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Search input\n\t\tconst searchInput = this.element.querySelector(\n\t\t\t'.messenger-help-search-input'\n\t\t);\n\t\tlet searchTimeout;\n\t\tsearchInput.addEventListener('input', (e) => {\n\t\t\tclearTimeout(searchTimeout);\n\t\t\tsearchTimeout = setTimeout(() => {\n\t\t\t\tthis.state.setHelpSearchQuery(e.target.value);\n\t\t\t}, 300);\n\t\t});\n\n\t\tthis._attachCollectionEvents();\n\t}\n\n\t_attachCollectionEvents() {\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-help-collection')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\tconst collectionId = item.dataset.collectionId;\n\t\t\t\t\tconst collection = this.state.helpArticles.find(\n\t\t\t\t\t\t(c) => c.id === collectionId\n\t\t\t\t\t);\n\t\t\t\t\tif (collection && collection.url) {\n\t\t\t\t\t\twindow.open(collection.url, '_blank');\n\t\t\t\t\t} else if (this.options.onArticleClick) {\n\t\t\t\t\t\tthis.options.onArticleClick(collection);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * HomeView - Welcome screen with team info and quick actions\n */\nexport class HomeView {\n\tconstructor(state, options = {}) {\n\t\tthis.state = state;\n\t\tthis.options = options;\n\t\tthis.element = null;\n\t\tthis._unsubscribe = null;\n\t}\n\n\trender() {\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'messenger-view messenger-home-view';\n\n\t\tthis._updateContent();\n\n\t\t// Subscribe to state changes to re-render when data loads\n\t\tthis._unsubscribe = this.state.subscribe((type) => {\n\t\t\tif (type === 'homeChangelogUpdate' || type === 'conversationsUpdate') {\n\t\t\t\tthis._updateContent();\n\t\t\t}\n\t\t});\n\n\t\treturn this.element;\n\t}\n\n\t_updateContent() {\n\t\tconst avatarsHtml = this._renderAvatarStack();\n\t\tconst recentChangelogHtml = this._renderRecentChangelog();\n\n\t\tthis.element.innerHTML = `\n\t\t\t<div class=\"messenger-home-header\">\n\t\t\t\t<div class=\"messenger-home-header-top\">\n\t\t\t\t\t<div class=\"messenger-home-logo\">\n\t\t\t\t\t\t${this.options.logoUrl ? `<img src=\"${this.options.logoUrl}\" alt=\"${this.state.teamName}\" />` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"messenger-home-avatars\">${avatarsHtml}</div>\n\t\t\t\t\t<button class=\"messenger-close-btn\" aria-label=\"Close\">\n\t\t\t\t\t\t<i class=\"ph ph-x\" style=\"font-size: 20px;\"></i>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"messenger-home-welcome\">\n\t\t\t\t\t<span class=\"messenger-home-greeting\">Hello there.</span>\n\t\t\t\t\t<span class=\"messenger-home-question\">${this.state.welcomeMessage}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"messenger-home-body\">\n\t\t\t\t<button class=\"messenger-home-message-btn\">\n\t\t\t\t\t<span>Send us a message</span>\n\t\t\t\t\t<i class=\"ph ph-arrow-right\" style=\"font-size: 16px;\"></i>\n\t\t\t\t</button>\n\n\t\t\t\t${this._renderFeaturedCard()}\n\n\t\t\t\t${recentChangelogHtml}\n\t\t\t</div>\n\t\t`;\n\n\t\tthis._attachEvents();\n\t}\n\n\t_renderAvatarStack() {\n\t\tconst avatars = this.state.teamAvatars;\n\t\tif (!avatars || avatars.length === 0) {\n\t\t\t// Default avatars with initials\n\t\t\treturn `\n\t\t\t\t<div class=\"messenger-avatar-stack\">\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #5856d6;\">S</div>\n\t\t\t\t\t<div class=\"messenger-avatar\" style=\"background: #007aff;\">T</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tconst avatarItems = avatars\n\t\t\t.slice(0, 3)\n\t\t\t.map((avatar, i) => {\n\t\t\t\tif (typeof avatar === 'string' && avatar.startsWith('http')) {\n\t\t\t\t\treturn `<img class=\"messenger-avatar\" src=\"${avatar}\" alt=\"Team member\" style=\"z-index: ${3 - i};\" />`;\n\t\t\t\t}\n\t\t\t\treturn `<div class=\"messenger-avatar\" style=\"background: ${this._getAvatarColor(i)}; z-index: ${3 - i};\">${avatar.charAt(0).toUpperCase()}</div>`;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn `<div class=\"messenger-avatar-stack\">${avatarItems}</div>`;\n\t}\n\n\t_getAvatarColor(index) {\n\t\tconst colors = ['#5856d6', '#007aff', '#34c759', '#ff9500', '#ff3b30'];\n\t\treturn colors[index % colors.length];\n\t}\n\n\t_renderFeaturedCard() {\n\t\t// Only show if there's featured content configured\n\t\tif (!this.options.featuredContent) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst { title, description, imageUrl, action } =\n\t\t\tthis.options.featuredContent;\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-featured\">\n\t\t\t\t${imageUrl ? `<img src=\"${imageUrl}\" alt=\"${title}\" class=\"messenger-home-featured-image\" onerror=\"this.style.display='none';\" />` : ''}\n\t\t\t\t<div class=\"messenger-home-featured-content\">\n\t\t\t\t\t<h3>${title}</h3>\n\t\t\t\t\t<p>${description}</p>\n\t\t\t\t</div>\n\t\t\t\t${action ? `<button class=\"messenger-home-featured-btn\" data-action=\"${action.type}\" data-value=\"${action.value}\">${action.label}</button>` : ''}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_renderRecentChangelog() {\n\t\t// Show recent changelog preview as cards with images\n\t\tconst changelogItems = this.state.homeChangelogItems;\n\t\tif (changelogItems.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst changelogHtml = changelogItems\n\t\t\t.map(\n\t\t\t\t(item) => `\n\t\t\t<div class=\"messenger-home-changelog-card\" data-changelog-id=\"${item.id}\">\n\t\t\t\t${\n\t\t\t\t\titem.coverImage\n\t\t\t\t\t\t? `\n\t\t\t\t\t<div class=\"messenger-home-changelog-cover\">\n\t\t\t\t\t\t<img src=\"${item.coverImage}\" alt=\"${item.title}\" onerror=\"this.style.display='none';\" />\n\t\t\t\t\t\t${item.coverText ? `<span class=\"messenger-home-changelog-cover-text\">${item.coverText}</span>` : ''}\n\t\t\t\t\t</div>\n\t\t\t\t`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t<div class=\"messenger-home-changelog-card-content\">\n\t\t\t\t\t<h4 class=\"messenger-home-changelog-card-title\">${item.title}</h4>\n\t\t\t\t\t<p class=\"messenger-home-changelog-card-desc\">${item.description || ''}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\n\t\treturn `\n\t\t\t<div class=\"messenger-home-changelog-section\">\n\t\t\t\t${changelogHtml}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t_formatDate(dateString) {\n\t\tif (!dateString) return '';\n\t\tconst date = new Date(dateString);\n\t\tconst now = new Date();\n\t\tconst diffDays = Math.floor((now - date) / (1000 * 60 * 60 * 24));\n\n\t\tif (diffDays === 0) return 'Today';\n\t\tif (diffDays === 1) return 'Yesterday';\n\t\tif (diffDays < 7) return `${diffDays}d ago`;\n\t\treturn date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });\n\t}\n\n\t_attachEvents() {\n\t\t// Close button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-close-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setOpen(false);\n\t\t\t});\n\n\t\t// Send message button\n\t\tthis.element\n\t\t\t.querySelector('.messenger-home-message-btn')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('messages');\n\t\t\t});\n\n\t\t// Changelog items\n\t\tthis.element\n\t\t\t.querySelectorAll('.messenger-home-changelog-item')\n\t\t\t.forEach((item) => {\n\t\t\t\titem.addEventListener('click', () => {\n\t\t\t\t\t// Navigate to changelog view with specific item selected\n\t\t\t\t\tthis.state.setView('changelog');\n\t\t\t\t});\n\t\t\t});\n\n\t\t// See all changelog\n\t\tconst seeAllBtn = this.element.querySelector(\n\t\t\t'.messenger-home-changelog-all'\n\t\t);\n\t\tif (seeAllBtn) {\n\t\t\tseeAllBtn.addEventListener('click', () => {\n\t\t\t\tthis.state.setView('changelog');\n\t\t\t});\n\t\t}\n\n\t\t// Featured card action\n\t\tconst featuredBtn = this.element.querySelector(\n\t\t\t'.messenger-home-featured-btn'\n\t\t);\n\t\tif (featuredBtn) {\n\t\t\tfeaturedBtn.addEventListener('click', () => {\n\t\t\t\tconst action = featuredBtn.dataset.action;\n\t\t\t\tconst value = featuredBtn.dataset.value;\n\t\t\t\tif (action === 'url') {\n\t\t\t\t\twindow.open(value, '_blank');\n\t\t\t\t} else if (action === 'view') {\n\t\t\t\t\tthis.state.setView(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this._unsubscribe) {\n\t\t\tthis._unsubscribe();\n\t\t}\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n}\n","/**\n * MessengerWidget - Full-featured Messenger/Chat widget\n */\nimport { BaseWidget } from './BaseWidget.js';\nimport { MessengerState } from './messenger/MessengerState.js';\nimport { MessengerLauncher } from './messenger/components/MessengerLauncher.js';\nimport { MessengerPanel } from './messenger/components/MessengerPanel.js';\nimport { ChangelogView } from './messenger/views/ChangelogView.js';\nimport { ChatView } from './messenger/views/ChatView.js';\nimport { ConversationsView } from './messenger/views/ConversationsView.js';\nimport { HelpView } from './messenger/views/HelpView.js';\nimport { HomeView } from './messenger/views/HomeView.js';\n\nexport class MessengerWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'messenger' });\n\n\t\tthis.messengerOptions = {\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || 'light',\n\t\t\tteamName: options.teamName || 'Support',\n\t\t\tteamAvatars: options.teamAvatars || [],\n\t\t\twelcomeMessage: options.welcomeMessage || 'How can we help?',\n\t\t\tenableHelp: options.enableHelp !== false,\n\t\t\tenableChangelog: options.enableChangelog !== false,\n\t\t\tlogoUrl: options.logoUrl || 'https://feedback-sdk.product7.io/p7.png',\n\t\t\tfeaturedContent: options.featuredContent || null,\n\t\t\tprimaryColor: options.primaryColor || '#1c1c1e',\n\t\t\t// Callbacks\n\t\t\tonSendMessage: options.onSendMessage || null,\n\t\t\tonArticleClick: options.onArticleClick || null,\n\t\t\tonChangelogClick: options.onChangelogClick || null,\n\t\t};\n\n\t\t// Create state\n\t\tthis.messengerState = new MessengerState({\n\t\t\tteamName: this.messengerOptions.teamName,\n\t\t\tteamAvatars: this.messengerOptions.teamAvatars,\n\t\t\twelcomeMessage: this.messengerOptions.welcomeMessage,\n\t\t\tenableHelp: this.messengerOptions.enableHelp,\n\t\t\tenableChangelog: this.messengerOptions.enableChangelog,\n\t\t\tuserContext: this.sdk?.apiService?.getUserContext() || null,\n\t\t});\n\n\t\tthis.launcher = null;\n\t\tthis.panel = null;\n\n\t\t// Bind methods\n\t\tthis._handleOpenChange = this._handleOpenChange.bind(this);\n\t}\n\n\t_render() {\n\t\t// Create container\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = `messenger-widget theme-${this.messengerOptions.theme}`;\n\t\tcontainer.style.zIndex = '999999';\n\n\t\t// Create launcher\n\t\tthis.launcher = new MessengerLauncher(this.messengerState, {\n\t\t\tposition: this.messengerOptions.position,\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t});\n\t\tcontainer.appendChild(this.launcher.render());\n\n\t\t// Create panel\n\t\tthis.panel = new MessengerPanel(this.messengerState, {\n\t\t\tposition: this.messengerOptions.position,\n\t\t\ttheme: this.messengerOptions.theme,\n\t\t\tprimaryColor: this.messengerOptions.primaryColor,\n\t\t\tlogoUrl: this.messengerOptions.logoUrl,\n\t\t\tfeaturedContent: this.messengerOptions.featuredContent,\n\t\t\tonSendMessage:\n\t\t\t\tthis.messengerOptions.onSendMessage ||\n\t\t\t\tthis._handleSendMessage.bind(this),\n\t\t\tonArticleClick: this.messengerOptions.onArticleClick,\n\t\t\tonChangelogClick: this.messengerOptions.onChangelogClick,\n\t\t});\n\n\t\t// Register views\n\t\tthis.panel.registerView('home', HomeView);\n\t\tthis.panel.registerView('messages', ConversationsView);\n\t\tthis.panel.registerView('chat', ChatView);\n\t\tthis.panel.registerView('help', HelpView);\n\t\tthis.panel.registerView('changelog', ChangelogView);\n\n\t\tcontainer.appendChild(this.panel.render());\n\t\tthis.panel.hide();\n\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\t// Subscribe to state changes\n\t\tthis._stateUnsubscribe = this.messengerState.subscribe((type, data) => {\n\t\t\tif (type === 'openChange') {\n\t\t\t\tthis._handleOpenChange(data.isOpen);\n\t\t\t}\n\t\t});\n\t}\n\n\t_handleOpenChange(isOpen) {\n\t\tif (isOpen) {\n\t\t\tthis.panel.show();\n\t\t\tthis.sdk.eventBus.emit('messenger:opened', { widget: this });\n\t\t} else {\n\t\t\tthis.panel.hide();\n\t\t\tthis.messengerState.reset();\n\t\t\tthis.sdk.eventBus.emit('messenger:closed', { widget: this });\n\t\t}\n\t}\n\n\tasync _handleSendMessage(conversationId, message) {\n\t\t// Default message handler - can be overridden\n\t\tthis.sdk.eventBus.emit('messenger:messageSent', {\n\t\t\twidget: this,\n\t\t\tconversationId,\n\t\t\tmessage,\n\t\t});\n\n\t\t// In mock mode, simulate a response\n\t\tif (this.apiService?.mock) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst response = {\n\t\t\t\t\tid: 'msg_' + Date.now(),\n\t\t\t\t\tcontent: \"Thanks for your message! We'll get back to you soon.\",\n\t\t\t\t\tisOwn: false,\n\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\tsender: {\n\t\t\t\t\t\tname: 'Support Team',\n\t\t\t\t\t\tavatarUrl: null,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tthis.messengerState.addMessage(conversationId, response);\n\t\t\t}, 1500);\n\t\t}\n\t}\n\n\t/**\n\t * Open the messenger panel\n\t */\n\topen() {\n\t\tthis.messengerState.setOpen(true);\n\t}\n\n\t/**\n\t * Close the messenger panel\n\t */\n\tclose() {\n\t\tthis.messengerState.setOpen(false);\n\t}\n\n\t/**\n\t * Toggle the messenger panel\n\t */\n\ttoggle() {\n\t\tthis.messengerState.setOpen(!this.messengerState.isOpen);\n\t}\n\n\t/**\n\t * Navigate to a specific view\n\t */\n\tnavigateTo(view) {\n\t\tthis.messengerState.setView(view);\n\t\tif (!this.messengerState.isOpen) {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\t/**\n\t * Set conversations\n\t */\n\tsetConversations(conversations) {\n\t\tthis.messengerState.setConversations(conversations);\n\t}\n\n\t/**\n\t * Add a message to a conversation\n\t */\n\taddMessage(conversationId, message) {\n\t\tthis.messengerState.addMessage(conversationId, message);\n\t}\n\n\t/**\n\t * Set help articles\n\t */\n\tsetHelpArticles(articles) {\n\t\tthis.messengerState.setHelpArticles(articles);\n\t}\n\n\t/**\n\t * Set home changelog items\n\t */\n\tsetHomeChangelogItems(items) {\n\t\tthis.messengerState.setHomeChangelogItems(items);\n\t}\n\n\t/**\n\t * Set changelog items\n\t */\n\tsetChangelogItems(items) {\n\t\tthis.messengerState.setChangelogItems(items);\n\t}\n\n\t/**\n\t * Update unread count (for external updates)\n\t */\n\tsetUnreadCount(count) {\n\t\tthis.messengerState.unreadCount = count;\n\t\tthis.messengerState._notify('unreadCountChange', { count });\n\t}\n\n\t/**\n\t * Get current state\n\t */\n\tgetState() {\n\t\treturn {\n\t\t\tisOpen: this.messengerState.isOpen,\n\t\t\tcurrentView: this.messengerState.currentView,\n\t\t\tunreadCount: this.messengerState.unreadCount,\n\t\t\tconversations: this.messengerState.conversations,\n\t\t};\n\t}\n\n\t/**\n\t * Load initial data (mock or API)\n\t */\n\tasync loadInitialData() {\n\t\t// Load conversations\n\t\ttry {\n\t\t\tconst conversations = await this._fetchConversations();\n\t\t\tthis.messengerState.setConversations(conversations);\n\t\t} catch (error) {\n\t\t\tconsole.error('[MessengerWidget] Failed to load conversations:', error);\n\t\t}\n\n\t\t// Load help articles if enabled\n\t\tif (this.messengerOptions.enableHelp) {\n\t\t\ttry {\n\t\t\t\tconst articles = await this._fetchHelpArticles();\n\t\t\t\tthis.messengerState.setHelpArticles(articles);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[MessengerWidget] Failed to load help articles:', error);\n\t\t\t}\n\t\t}\n\n\t\t// Load changelog if enabled\n\t\tif (this.messengerOptions.enableChangelog) {\n\t\t\ttry {\n\t\t\t\tconst { homeItems, changelogItems } = await this._fetchChangelog();\n\t\t\t\tthis.messengerState.setHomeChangelogItems(homeItems);\n\t\t\t\tthis.messengerState.setChangelogItems(changelogItems);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[MessengerWidget] Failed to load changelog:', error);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync _fetchConversations() {\n\t\t// Mock data for now\n\t\tif (this.apiService?.mock) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'conv_1',\n\t\t\t\t\ttitle: 'Chat with Sarah',\n\t\t\t\t\tparticipants: [{ name: 'Sarah', avatarUrl: null }],\n\t\t\t\t\tlastMessage: \"Sarah: Hi 👋 I'm Sarah. How can I help today?\",\n\t\t\t\t\tlastMessageTime: new Date(Date.now() - 49 * 60 * 1000).toISOString(),\n\t\t\t\t\tunread: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'conv_2',\n\t\t\t\t\ttitle: 'Chat with Tom',\n\t\t\t\t\tparticipants: [{ name: 'Tom', avatarUrl: null }],\n\t\t\t\t\tlastMessage: 'Tom: The feature will be available next week.',\n\t\t\t\t\tlastMessageTime: new Date(\n\t\t\t\t\t\tDate.now() - 6 * 24 * 60 * 60 * 1000\n\t\t\t\t\t).toISOString(),\n\t\t\t\t\tunread: 0,\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\t// TODO: Implement API call\n\t\treturn [];\n\t}\n\n\tasync _fetchHelpArticles() {\n\t\t// Mock data for collections\n\t\tif (this.apiService?.mock) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_1',\n\t\t\t\t\ttitle: 'Product Overview',\n\t\t\t\t\tdescription: 'See how your AI-first customer service solution works.',\n\t\t\t\t\tarticleCount: 24,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_2',\n\t\t\t\t\ttitle: 'Getting Started',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Everything you need to know to get started with Product7.',\n\t\t\t\t\tarticleCount: 30,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_3',\n\t\t\t\t\ttitle: 'AI Agent',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Resolving customer questions instantly and accurately—from live chat to email.',\n\t\t\t\t\tarticleCount: 82,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_4',\n\t\t\t\t\ttitle: 'Channels',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Enabling the channels you use to communicate with customers, all from the Inbox.',\n\t\t\t\t\tarticleCount: 45,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'collection_5',\n\t\t\t\t\ttitle: 'Billing & Payments',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Manage your subscription, invoices, and payment methods.',\n\t\t\t\t\tarticleCount: 12,\n\t\t\t\t\turl: '#',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\t// TODO: Implement API call\n\t\treturn [];\n\t}\n\n\tasync _fetchChangelog() {\n\t\t// Mock data for now - simulating changelog API response\n\t\tif (this.apiService?.mock) {\n\t\t\treturn {\n\t\t\t\thomeItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_5',\n\t\t\t\t\t\ttitle: 'New integrations available',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Connect with more tools you love and streamline your workflow.',\n\t\t\t\t\t\ttags: ['Integration'],\n\t\t\t\t\t\tcoverImage: 'https://feedback-sdk.product7.io/700x400__5_.png',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 14 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_2',\n\t\t\t\t\t\ttitle: 'A new era of Insights has arrived',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'We announced Fin Insights, a groundbreaking, AI-powered product that gives you complete visibility into every customer conversation.',\n\t\t\t\t\t\ttags: ['New feature', 'AI'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/Intercom_Messenger__1_.jpg',\n\t\t\t\t\t\tcoverText: 'Watch our major product launch on-demand',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 5 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_1',\n\t\t\t\t\t\ttitle: 'The 2025 Customer Service Transformation Report',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Learn how AI has transformed customer service from the ground up—rewriting its economics and reshaping expectations.',\n\t\t\t\t\t\ttags: ['Report'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/Main_Report_Email_Header.png',\n\t\t\t\t\t\tcoverText: 'Customer service trends as we know them are dead.',\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 2 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchangelogItems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_4',\n\t\t\t\t\t\ttitle: 'Enhanced conversation analytics',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Get deeper insights into your customer conversations with our new analytics dashboard.',\n\t\t\t\t\t\ttags: ['Analytics'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/cgangelog-Frame%202087334450.jpg',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 10 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'changelog_3',\n\t\t\t\t\t\ttitle: 'Escalation guidance for complex issues',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'New AI-powered escalation guidance helps your team handle complex customer issues more effectively.',\n\t\t\t\t\t\ttags: ['New feature', 'AI'],\n\t\t\t\t\t\tcoverImage:\n\t\t\t\t\t\t\t'https://feedback-sdk.product7.io/cgangelog-image-escalation-guidance-event@2x.png',\n\t\t\t\t\t\tcoverText: null,\n\t\t\t\t\t\tpublishedAt: new Date(\n\t\t\t\t\t\t\tDate.now() - 7 * 24 * 60 * 60 * 1000\n\t\t\t\t\t\t).toISOString(),\n\t\t\t\t\t\turl: '#',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\t// TODO: Implement API call for changelogs\n\t\treturn { homeItems: [], changelogItems: [] };\n\t}\n\n\tonMount() {\n\t\t// Load initial data after mounting\n\t\tthis.loadInitialData();\n\t}\n\n\tonDestroy() {\n\t\tif (this._stateUnsubscribe) {\n\t\t\tthis._stateUnsubscribe();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.launcher) {\n\t\t\tthis.launcher.destroy();\n\t\t}\n\t\tif (this.panel) {\n\t\t\tthis.panel.destroy();\n\t\t}\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class SurveyWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'survey' });\n\n\t\tthis.surveyOptions = {\n\t\t\tsurveyId: options.surveyId || null, // Backend survey ID for API calls\n\t\t\tsurveyType: options.surveyType || 'nps', // 'nps', 'csat', 'ces', 'custom'\n\t\t\tposition: options.position || 'bottom-right', // 'bottom-right', 'bottom-left', 'center', 'bottom'\n\t\t\ttitle: options.title || null,\n\t\t\tdescription: options.description || null,\n\t\t\tlowLabel: options.lowLabel || null,\n\t\t\thighLabel: options.highLabel || null,\n\t\t\tcustomQuestions: options.customQuestions || [],\n\t\t\ttheme: options.theme || 'light',\n\t\t\tonSubmit: options.onSubmit || null,\n\t\t\tonDismiss: options.onDismiss || null,\n\t\t};\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\t_render() {\n\t\t// Survey widget doesn't render a trigger button, it's shown programmatically\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'feedback-survey-container';\n\t\tcontainer.style.display = 'none';\n\t\treturn container;\n\t}\n\n\t_attachEvents() {\n\t\t// Events are attached when survey is shown\n\t}\n\n\tshow() {\n\t\tthis._renderSurvey();\n\t\tthis.surveyState.isVisible = true;\n\t\tthis.sdk.eventBus.emit('survey:shown', {\n\t\t\twidget: this,\n\t\t\ttype: this.surveyOptions.surveyType,\n\t\t});\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tthis._closeSurvey();\n\t\treturn this;\n\t}\n\n\t_renderSurvey() {\n\t\t// Remove any existing survey\n\t\tthis._closeSurvey();\n\n\t\tconst config = this._getSurveyConfig();\n\t\tconst positionStyles = this._getPositionStyles();\n\t\tconst themeStyles =\n\t\t\tthis.surveyOptions.theme === 'dark'\n\t\t\t\t? 'background: #1a1a1a; color: #fff;'\n\t\t\t\t: 'background: #fff; color: #1d1d1f;';\n\n\t\t// Create backdrop for center position\n\t\tif (this.surveyOptions.position === 'center') {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'feedback-survey-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\t\t\tthis.backdropElement.addEventListener('click', () =>\n\t\t\t\tthis._handleDismiss()\n\t\t\t);\n\t\t}\n\n\t\tthis.surveyElement = document.createElement('div');\n\t\tthis.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position} theme-${this.surveyOptions.theme}`;\n\t\tthis.surveyElement.style.cssText = `position: fixed; ${positionStyles} z-index: 10000; ${themeStyles} border-radius: 16px; box-shadow: 0 20px 60px rgba(0,0,0,0.3); padding: 24px; min-width: 320px; max-width: 400px; font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;`;\n\n\t\tthis.surveyElement.innerHTML = `\n\t\t\t<button class=\"feedback-survey-close\" style=\"position: absolute; top: 12px; right: 12px; background: none; border: none; font-size: 20px; cursor: pointer; color: ${this.surveyOptions.theme === 'dark' ? '#888' : '#86868b'}; line-height: 1;\">×</button>\n\t\t\t<h3 class=\"feedback-survey-title\" style=\"margin: 0 0 8px 0; font-size: 18px; font-weight: 600; padding-right: 24px;\">${config.title}</h3>\n\t\t\t<p class=\"feedback-survey-description\" style=\"color: ${this.surveyOptions.theme === 'dark' ? '#aaa' : '#86868b'}; margin: 0 0 20px 0; font-size: 14px;\">${config.description}</p>\n\t\t\t<div class=\"feedback-survey-content\">${config.html}</div>\n\t\t\t<div class=\"feedback-survey-feedback\" style=\"margin-top: 16px;\">\n\t\t\t\t<textarea class=\"feedback-survey-textarea\" placeholder=\"Any additional feedback? (optional)\" style=\"width: 100%; padding: 12px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#333' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; resize: none; height: 80px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; font-family: inherit; box-sizing: border-box;\"></textarea>\n\t\t\t</div>\n\t\t\t<button class=\"feedback-survey-submit\" style=\"width: 100%; margin-top: 12px; padding: 12px; background: #007aff; color: white; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; font-family: inherit;\">Submit</button>\n\t\t`;\n\n\t\tdocument.body.appendChild(this.surveyElement);\n\t\tthis._attachSurveyEvents();\n\n\t\t// Animate in\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.surveyElement.style.opacity = '1';\n\t\t\tthis.surveyElement.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(1)'\n\t\t\t\t\t: 'translateY(0)';\n\t\t});\n\t}\n\n\t_getSurveyConfig() {\n\t\tconst configs = {\n\t\t\tnps: {\n\t\t\t\ttitle:\n\t\t\t\t\tthis.surveyOptions.title || 'How likely are you to recommend us?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'On a scale of 0-10, how likely are you to recommend our product to a friend or colleague?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-nps\" style=\"display: flex; justify-content: space-between; gap: 4px;\">\n\t\t\t\t\t\t${[...Array(11).keys()]\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(n) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-nps-btn\" data-score=\"${n}\" style=\"width: 28px; height: 36px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 6px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa'}; cursor: pointer; font-size: 12px; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; transition: all 0.15s;\">${n}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"display: flex; justify-content: space-between; margin-top: 8px; font-size: 11px; color: ${this.surveyOptions.theme === 'dark' ? '#888' : '#86868b'};\">\n\t\t\t\t\t\t<span>${this.surveyOptions.lowLabel || 'Not likely'}</span>\n\t\t\t\t\t\t<span>${this.surveyOptions.highLabel || 'Very likely'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcsat: {\n\t\t\t\ttitle: this.surveyOptions.title || 'How satisfied are you?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'How would you rate your overall satisfaction with our product?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-csat\" style=\"display: flex; justify-content: center; gap: 16px;\">\n\t\t\t\t\t\t${['😞', '😕', '😐', '🙂', '😄']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(emoji, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-csat-btn\" data-score=\"${i + 1}\" style=\"background: none; border: none; cursor: pointer; font-size: 36px; transition: transform 0.15s; padding: 8px;\">${emoji}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"display: flex; justify-content: space-between; margin-top: 8px; font-size: 11px; color: ${this.surveyOptions.theme === 'dark' ? '#888' : '#86868b'};\">\n\t\t\t\t\t\t<span>${this.surveyOptions.lowLabel || 'Very dissatisfied'}</span>\n\t\t\t\t\t\t<span>${this.surveyOptions.highLabel || 'Very satisfied'}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tces: {\n\t\t\t\ttitle: this.surveyOptions.title || 'How easy was it?',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'How easy was it to accomplish your task today?',\n\t\t\t\thtml: `\n\t\t\t\t\t<div class=\"feedback-survey-ces\" style=\"display: flex; justify-content: space-between; gap: 8px;\">\n\t\t\t\t\t\t${['Very Difficult', 'Difficult', 'Neutral', 'Easy', 'Very Easy']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(label, i) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-ces-btn\" data-score=\"${i + 1}\" style=\"flex: 1; padding: 12px 8px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa'}; cursor: pointer; font-size: 11px; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; transition: all 0.15s;\">${label}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t},\n\t\t\tcustom: {\n\t\t\t\ttitle: this.surveyOptions.title || 'Quick Feedback',\n\t\t\t\tdescription:\n\t\t\t\t\tthis.surveyOptions.description ||\n\t\t\t\t\t'Help us improve by answering a few questions.',\n\t\t\t\thtml: this._renderCustomQuestions(),\n\t\t\t},\n\t\t};\n\n\t\treturn configs[this.surveyOptions.surveyType] || configs.nps;\n\t}\n\n\t_renderCustomQuestions() {\n\t\tif (\n\t\t\t!this.surveyOptions.customQuestions ||\n\t\t\tthis.surveyOptions.customQuestions.length === 0\n\t\t) {\n\t\t\t// Default custom questions\n\t\t\treturn `\n\t\t\t\t<div style=\"margin-bottom: 16px;\">\n\t\t\t\t\t<label style=\"display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500;\">What feature do you use most?</label>\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"feature\" style=\"width: 100%; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'};\">\n\t\t\t\t\t\t<option value=\"\">Select a feature</option>\n\t\t\t\t\t\t<option value=\"feedback\">Feedback Collection</option>\n\t\t\t\t\t\t<option value=\"surveys\">Surveys</option>\n\t\t\t\t\t\t<option value=\"analytics\">Analytics</option>\n\t\t\t\t\t\t<option value=\"integrations\">Integrations</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<label style=\"display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500;\">How often do you use it?</label>\n\t\t\t\t\t<div class=\"feedback-survey-frequency\" style=\"display: flex; gap: 8px;\">\n\t\t\t\t\t\t${['Daily', 'Weekly', 'Monthly', 'Rarely']\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(freq) => `\n\t\t\t\t\t\t\t<button class=\"feedback-survey-freq-btn\" data-freq=\"${freq}\" style=\"flex: 1; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa'}; cursor: pointer; font-size: 12px; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; transition: all 0.15s;\">${freq}</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.surveyOptions.customQuestions\n\t\t\t.map(\n\t\t\t\t(q, index) => `\n\t\t\t<div style=\"margin-bottom: 16px;\">\n\t\t\t\t<label style=\"display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500;\">${q.label}</label>\n\t\t\t\t${this._renderQuestionInput(q, index)}\n\t\t\t</div>\n\t\t`\n\t\t\t)\n\t\t\t.join('');\n\t}\n\n\t_renderQuestionInput(question, index) {\n\t\tswitch (question.type) {\n\t\t\tcase 'select':\n\t\t\t\treturn `\n\t\t\t\t\t<select class=\"feedback-survey-select\" data-question=\"${question.id || index}\" style=\"width: 100%; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'};\">\n\t\t\t\t\t\t<option value=\"\">${question.placeholder || 'Select an option'}</option>\n\t\t\t\t\t\t${question.options.map((opt) => `<option value=\"${opt.value}\">${opt.label}</option>`).join('')}\n\t\t\t\t\t</select>\n\t\t\t\t`;\n\t\t\tcase 'text':\n\t\t\t\treturn `\n\t\t\t\t\t<input type=\"text\" class=\"feedback-survey-input\" data-question=\"${question.id || index}\" placeholder=\"${question.placeholder || ''}\" style=\"width: 100%; padding: 10px; border: 1px solid ${this.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7'}; border-radius: 8px; font-size: 14px; background: ${this.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#fff'}; color: ${this.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f'}; box-sizing: border-box;\">\n\t\t\t\t`;\n\t\t\tdefault:\n\t\t\t\treturn '';\n\t\t}\n\t}\n\n\t_getPositionStyles() {\n\t\tconst positions = {\n\t\t\t'bottom-right':\n\t\t\t\t'bottom: 24px; right: 24px; opacity: 0; transform: translateY(20px); transition: all 0.3s ease;',\n\t\t\t'bottom-left':\n\t\t\t\t'bottom: 24px; left: 24px; opacity: 0; transform: translateY(20px); transition: all 0.3s ease;',\n\t\t\tcenter:\n\t\t\t\t'top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.95); opacity: 0; transition: all 0.3s ease;',\n\t\t\tbottom:\n\t\t\t\t'bottom: 0; left: 0; right: 0; border-radius: 16px 16px 0 0; max-width: none; opacity: 0; transform: translateY(20px); transition: all 0.3s ease;',\n\t\t};\n\t\treturn positions[this.surveyOptions.position] || positions['bottom-right'];\n\t}\n\n\t_attachSurveyEvents() {\n\t\tif (!this.surveyElement) return;\n\n\t\t// Close button\n\t\tconst closeBtn = this.surveyElement.querySelector('.feedback-survey-close');\n\t\tcloseBtn.addEventListener('click', () => this._handleDismiss());\n\n\t\t// Submit button\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tsubmitBtn.addEventListener('click', () => this._handleSubmit());\n\n\t\t// Feedback textarea\n\t\tconst textarea = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-textarea'\n\t\t);\n\t\ttextarea.addEventListener('input', (e) => {\n\t\t\tthis.surveyState.feedback = e.target.value;\n\t\t});\n\n\t\t// Survey type specific events\n\t\tthis._attachTypeSpecificEvents();\n\n\t\t// Escape key\n\t\tthis._escapeHandler = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis._handleDismiss();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', this._escapeHandler);\n\t}\n\n\t_attachTypeSpecificEvents() {\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\tif (type === 'nps') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectNPS(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbtn.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'csat') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCSAT(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\tbtn.style.transform = 'scale(1.1)';\n\t\t\t\t\t});\n\t\t\t\t\tbtn.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.transform = 'scale(1)';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'ces') {\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectCES(parseInt(btn.dataset.score))\n\t\t\t\t\t);\n\t\t\t\t\tbtn.addEventListener('mouseenter', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbtn.addEventListener('mouseleave', () => {\n\t\t\t\t\t\tif (this.surveyState.score !== parseInt(btn.dataset.score)) {\n\t\t\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (type === 'custom') {\n\t\t\t// Frequency buttons\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t\t.forEach((btn) => {\n\t\t\t\t\tbtn.addEventListener('click', () =>\n\t\t\t\t\t\tthis._selectFrequency(btn.dataset.freq)\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t// Select inputs\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-select')\n\t\t\t\t.forEach((select) => {\n\t\t\t\t\tselect.addEventListener('change', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[select.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t// Text inputs\n\t\t\tthis.surveyElement\n\t\t\t\t.querySelectorAll('.feedback-survey-input')\n\t\t\t\t.forEach((input) => {\n\t\t\t\t\tinput.addEventListener('input', (e) => {\n\t\t\t\t\t\tthis.surveyState.customAnswers[input.dataset.question] =\n\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_selectNPS(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-nps-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tif (btnScore === score) {\n\t\t\t\t\tbtn.style.background = '#007aff';\n\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\tbtn.style.color = '#fff';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.style.background =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa';\n\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\tbtn.style.color =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f';\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_selectCSAT(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-csat-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tbtn.style.transform = btnScore === score ? 'scale(1.2)' : 'scale(1)';\n\t\t\t});\n\t}\n\n\t_selectCES(score) {\n\t\tthis.surveyState.score = score;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-ces-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tconst btnScore = parseInt(btn.dataset.score);\n\t\t\t\tif (btnScore === score) {\n\t\t\t\t\tbtn.style.background = '#007aff';\n\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\tbtn.style.color = '#fff';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.style.background =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa';\n\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\tbtn.style.color =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f';\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t_selectFrequency(freq) {\n\t\tthis.surveyState.customAnswers.frequency = freq;\n\t\tthis.surveyElement\n\t\t\t.querySelectorAll('.feedback-survey-freq-btn')\n\t\t\t.forEach((btn) => {\n\t\t\t\tif (btn.dataset.freq === freq) {\n\t\t\t\t\tbtn.style.background = '#007aff';\n\t\t\t\t\tbtn.style.borderColor = '#007aff';\n\t\t\t\t\tbtn.style.color = '#fff';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.style.background =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#2a2a2a' : '#f8f9fa';\n\t\t\t\t\tbtn.style.borderColor =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#444' : '#d2d2d7';\n\t\t\t\t\tbtn.style.color =\n\t\t\t\t\t\tthis.surveyOptions.theme === 'dark' ? '#fff' : '#1d1d1f';\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tasync _handleSubmit() {\n\t\tconst type = this.surveyOptions.surveyType;\n\n\t\t// Validate\n\t\tif (\n\t\t\t(type === 'nps' || type === 'csat' || type === 'ces') &&\n\t\t\tthis.surveyState.score === null\n\t\t) {\n\t\t\tthis._showError('Please select a rating');\n\t\t\treturn;\n\t\t}\n\n\t\tconst responseData = {\n\t\t\trating: this.surveyState.score,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\tanswers: this.surveyState.customAnswers,\n\t\t};\n\n\t\tconst response = {\n\t\t\ttype: type,\n\t\t\tscore: this.surveyState.score,\n\t\t\tfeedback: this.surveyState.feedback,\n\t\t\tcustomAnswers: this.surveyState.customAnswers,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\t// Call onSubmit callback if provided\n\t\tif (this.surveyOptions.onSubmit) {\n\t\t\tthis.surveyOptions.onSubmit(response);\n\t\t}\n\n\t\t// Submit to API\n\t\ttry {\n\t\t\tconst surveyId =\n\t\t\t\tthis.surveyOptions.surveyId || `local_${type}_${Date.now()}`;\n\t\t\tawait this.apiService.submitSurveyResponse(surveyId, responseData);\n\t\t} catch (error) {\n\t\t\tconsole.error('[SurveyWidget] Failed to submit survey:', error);\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('survey:submitted', { widget: this, response });\n\n\t\tthis._closeSurvey();\n\t\tthis._showSuccessNotification();\n\t}\n\n\tasync _handleDismiss() {\n\t\t// Call dismiss API if survey has a backend ID\n\t\tif (this.surveyOptions.surveyId) {\n\t\t\ttry {\n\t\t\t\tawait this.apiService.dismissSurvey(this.surveyOptions.surveyId);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[SurveyWidget] Failed to dismiss survey:', error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.surveyOptions.onDismiss) {\n\t\t\tthis.surveyOptions.onDismiss();\n\t\t}\n\t\tthis.sdk.eventBus.emit('survey:dismissed', { widget: this });\n\t\tthis._closeSurvey();\n\t}\n\n\t_showError(message) {\n\t\t// Simple error display - could be enhanced\n\t\tconst existing = this.surveyElement.querySelector('.feedback-survey-error');\n\t\tif (existing) existing.remove();\n\n\t\tconst error = document.createElement('div');\n\t\terror.className = 'feedback-survey-error';\n\t\terror.style.cssText =\n\t\t\t'color: #ef4444; font-size: 13px; margin-top: 8px; text-align: center;';\n\t\terror.textContent = message;\n\n\t\tconst submitBtn = this.surveyElement.querySelector(\n\t\t\t'.feedback-survey-submit'\n\t\t);\n\t\tsubmitBtn.parentNode.insertBefore(error, submitBtn);\n\n\t\tsetTimeout(() => error.remove(), 3000);\n\t}\n\n\t_showSuccessNotification() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'feedback-survey-success';\n\t\tnotification.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\ttop: 24px;\n\t\t\tright: 24px;\n\t\t\tbackground: #10b981;\n\t\t\tcolor: white;\n\t\t\tpadding: 16px 24px;\n\t\t\tborder-radius: 12px;\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: 500;\n\t\t\tz-index: 10001;\n\t\t\tbox-shadow: 0 10px 40px rgba(0,0,0,0.2);\n\t\t\tfont-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n\t\t`;\n\t\tnotification.innerHTML = `\n\t\t\t<div style=\"display: flex; align-items: center; gap: 8px;\">\n\t\t\t\t<span style=\"font-size: 18px;\">✓</span>\n\t\t\t\t<span>Thank you for your feedback!</span>\n\t\t\t</div>\n\t\t`;\n\t\tdocument.body.appendChild(notification);\n\n\t\tsetTimeout(() => {\n\t\t\tnotification.style.opacity = '0';\n\t\t\tnotification.style.transition = 'opacity 0.3s ease';\n\t\t\tsetTimeout(() => notification.remove(), 300);\n\t\t}, 3000);\n\t}\n\n\t_closeSurvey() {\n\t\tif (this._escapeHandler) {\n\t\t\tdocument.removeEventListener('keydown', this._escapeHandler);\n\t\t\tthis._escapeHandler = null;\n\t\t}\n\n\t\t// Capture references to avoid race conditions with setTimeout\n\t\tconst surveyEl = this.surveyElement;\n\t\tconst backdropEl = this.backdropElement;\n\n\t\tif (surveyEl) {\n\t\t\tsurveyEl.style.opacity = '0';\n\t\t\tsurveyEl.style.transform =\n\t\t\t\tthis.surveyOptions.position === 'center'\n\t\t\t\t\t? 'translate(-50%, -50%) scale(0.95)'\n\t\t\t\t\t: 'translateY(20px)';\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (surveyEl && surveyEl.parentNode) {\n\t\t\t\t\tsurveyEl.parentNode.removeChild(surveyEl);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tthis.surveyElement = null;\n\t\t}\n\n\t\tif (backdropEl) {\n\t\t\tbackdropEl.style.opacity = '0';\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (backdropEl && backdropEl.parentNode) {\n\t\t\t\t\tbackdropEl.parentNode.removeChild(backdropEl);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tthis.backdropElement = null;\n\t\t}\n\n\t\tthis.surveyState = {\n\t\t\tscore: null,\n\t\t\tfeedback: '',\n\t\t\tcustomAnswers: {},\n\t\t\tisVisible: false,\n\t\t};\n\t}\n\n\tdestroy() {\n\t\tthis._closeSurvey();\n\t\tsuper.destroy();\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class TabWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'tab' });\n\t}\n\n\t_render() {\n\t\tconst tab = document.createElement('div');\n\t\ttab.className = `feedback-widget feedback-widget-tab theme-${this.options.theme} position-${this.options.position}`;\n\t\ttab.innerHTML = `\n <div class=\"feedback-tab-trigger\">\n <span class=\"feedback-tab-text\">Feedback</span>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(tab.style, this.options.customStyles);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\t_attachEvents() {\n\t\tconst tab = this.element.querySelector('.feedback-tab-trigger');\n\t\ttab.addEventListener('click', this.openModal);\n\n\t\ttab.addEventListener('mouseenter', () => {\n\t\t\tif (!this.state.isSubmitting) {\n\t\t\t\ttab.style.transform = this._getHoverTransform();\n\t\t\t}\n\t\t});\n\n\t\ttab.addEventListener('mouseleave', () => {\n\t\t\ttab.style.transform = 'none';\n\t\t});\n\t}\n\n\t_getHoverTransform() {\n\t\tconst position = this.options.position;\n\t\tif (position.includes('right')) {\n\t\t\treturn 'translateX(-5px)';\n\t\t} else if (position.includes('left')) {\n\t\t\treturn 'translateX(5px)';\n\t\t}\n\t\treturn 'none';\n\t}\n\n\tupdateText(text) {\n\t\tconst textElement = this.element?.querySelector('.feedback-tab-text');\n\t\tif (textElement) {\n\t\t\ttextElement.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { SDKError } from '../utils/errors.js';\nimport { ButtonWidget } from './ButtonWidget.js';\nimport { InlineWidget } from './InlineWidget.js';\nimport { MessengerWidget } from './MessengerWidget.js';\nimport { SurveyWidget } from './SurveyWidget.js';\nimport { TabWidget } from './TabWidget.js';\n\nexport class WidgetFactory {\n\tstatic widgets = new Map([\n\t\t['button', ButtonWidget],\n\t\t['tab', TabWidget],\n\t\t['inline', InlineWidget],\n\t\t['survey', SurveyWidget],\n\t\t['messenger', MessengerWidget],\n\t]);\n\n\tstatic register(type, WidgetClass) {\n\t\tif (typeof type !== 'string' || !type.trim()) {\n\t\t\tthrow new SDKError('Widget type must be a non-empty string');\n\t\t}\n\n\t\tif (typeof WidgetClass !== 'function') {\n\t\t\tthrow new SDKError('Widget class must be a constructor function');\n\t\t}\n\n\t\tthis.widgets.set(type, WidgetClass);\n\t}\n\n\tstatic create(type, options = {}) {\n\t\tconst WidgetClass = this.widgets.get(type);\n\n\t\tif (!WidgetClass) {\n\t\t\tconst availableTypes = Array.from(this.widgets.keys()).join(', ');\n\t\t\tthrow new SDKError(\n\t\t\t\t`Unknown widget type: ${type}. Available types: ${availableTypes}`\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\treturn new WidgetClass(options);\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to create widget of type '${type}': ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getAvailableTypes() {\n\t\treturn Array.from(this.widgets.keys());\n\t}\n\n\tstatic isTypeRegistered(type) {\n\t\treturn this.widgets.has(type);\n\t}\n\n\tstatic unregister(type) {\n\t\treturn this.widgets.delete(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.widgets.clear();\n\t}\n\n\tstatic getWidgetClass(type) {\n\t\treturn this.widgets.get(type);\n\t}\n}\n","import { ConfigError, SDKError } from '../utils/errors.js';\nimport { deepMerge, generateId } from '../utils/helpers.js';\nimport { WidgetFactory } from '../widgets/WidgetFactory.js';\nimport { APIService } from './APIService.js';\nimport { EventBus } from './EventBus.js';\n\nexport class FeedbackSDK {\n\tconstructor(config = {}) {\n\t\tthis.config = this._validateAndMergeConfig(config);\n\t\tthis.initialized = false;\n\t\tthis.widgets = new Map();\n\t\tthis.eventBus = new EventBus();\n\n\t\tthis.apiService = new APIService({\n\t\t\tapiUrl: this.config.apiUrl,\n\t\t\tworkspace: this.config.workspace,\n\t\t\tuserContext: this.config.userContext,\n\t\t\tmock: this.config.mock,\n\t\t\tenv: this.config.env,\n\t\t});\n\n\t\tthis._bindMethods();\n\t}\n\n\tasync init() {\n\t\tif (this.initialized) {\n\t\t\treturn { alreadyInitialized: true };\n\t\t}\n\n\t\ttry {\n\t\t\tconst initData = await this.apiService.init(this.config.userContext);\n\n\t\t\t// Merge backend config as base, local config overrides\n\t\t\tif (initData.config) {\n\t\t\t\tthis.config = deepMerge(initData.config, this.config);\n\t\t\t}\n\n\t\t\tthis.initialized = true;\n\t\t\tthis.eventBus.emit('sdk:initialized', {\n\t\t\t\tconfig: this.config,\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinitialized: true,\n\t\t\t\tconfig: initData.config || {},\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to initialize SDK: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateWidget(type = 'button', options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before creating widgets. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst widgetId = generateId('widget');\n\t\tconst widgetOptions = {\n\t\t\tid: widgetId,\n\t\t\tsdk: this,\n\t\t\tapiService: this.apiService,\n\t\t\t...this.config,\n\t\t\t...options,\n\t\t};\n\n\t\ttry {\n\t\t\tconst widget = WidgetFactory.create(type, widgetOptions);\n\t\t\tthis.widgets.set(widgetId, widget);\n\t\t\tthis.eventBus.emit('widget:created', { widget, type });\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(`Failed to create widget: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetWidget(id) {\n\t\treturn this.widgets.get(id);\n\t}\n\n\t/**\n\t * Fetch active surveys from the backend\n\t * @param {Object} context - Optional context for targeting\n\t * @param {string} context.page - Current page/route\n\t * @param {string} context.event - Event trigger name\n\t * @returns {Promise<Array>} Array of active survey configurations\n\t */\n\tasync getActiveSurveys(context = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before fetching surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await this.apiService.getActiveSurveys(context);\n\t\t\treturn result.data || [];\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to fetch active surveys: ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Show a survey by its backend ID\n\t * Fetches survey configuration from the backend and displays it\n\t * @param {string} surveyId - The backend survey ID\n\t * @param {Object} options - Additional display options\n\t * @param {string} options.position - Position override\n\t * @param {string} options.theme - Theme override\n\t * @param {Function} options.onSubmit - Callback when survey is submitted\n\t * @param {Function} options.onDismiss - Callback when survey is dismissed\n\t * @returns {Promise<SurveyWidget>} The survey widget instance\n\t */\n\tasync showSurveyById(surveyId, options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\t// Fetch active surveys to find the one with matching ID\n\t\tconst surveys = await this.getActiveSurveys();\n\t\tconst surveyConfig = surveys.find((s) => s.id === surveyId);\n\n\t\tif (!surveyConfig) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Survey with ID '${surveyId}' not found or not active`\n\t\t\t);\n\t\t}\n\n\t\treturn this.showSurvey({\n\t\t\tsurveyId: surveyConfig.id,\n\t\t\tsurveyType: surveyConfig.type,\n\t\t\ttitle: surveyConfig.title,\n\t\t\tdescription: surveyConfig.description,\n\t\t\tlowLabel: surveyConfig.low_label,\n\t\t\thighLabel: surveyConfig.high_label,\n\t\t\tcustomQuestions: surveyConfig.questions,\n\t\t\t...options,\n\t\t});\n\t}\n\n\t/**\n\t * Show a survey widget (local/manual mode)\n\t * For backend-driven surveys, use showSurveyById() instead\n\t * @param {Object} options - Survey options\n\t * @param {string} options.surveyId - Backend survey ID (for API tracking)\n\t * @param {string} options.surveyType - Type of survey: 'nps', 'csat', 'ces', 'custom'\n\t * @param {string} options.position - Position: 'bottom-right', 'bottom-left', 'center', 'bottom'\n\t * @param {string} options.theme - Theme: 'light', 'dark'\n\t * @param {string} options.title - Custom title\n\t * @param {string} options.description - Custom description\n\t * @param {string} options.lowLabel - Low end label\n\t * @param {string} options.highLabel - High end label\n\t * @param {Function} options.onSubmit - Callback when survey is submitted\n\t * @param {Function} options.onDismiss - Callback when survey is dismissed\n\t * @returns {SurveyWidget} The survey widget instance\n\t */\n\tshowSurvey(options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError(\n\t\t\t\t'SDK must be initialized before showing surveys. Call init() first.'\n\t\t\t);\n\t\t}\n\n\t\tconst surveyWidget = this.createWidget('survey', {\n\t\t\tsurveyId: options.surveyId,\n\t\t\tsurveyType: options.surveyType || options.type || 'nps',\n\t\t\tposition: options.position || 'bottom-right',\n\t\t\ttheme: options.theme || this.config.theme || 'light',\n\t\t\ttitle: options.title,\n\t\t\tdescription: options.description,\n\t\t\tlowLabel: options.lowLabel,\n\t\t\thighLabel: options.highLabel,\n\t\t\tcustomQuestions: options.customQuestions,\n\t\t\tonSubmit: options.onSubmit,\n\t\t\tonDismiss: options.onDismiss,\n\t\t});\n\n\t\tsurveyWidget.mount();\n\t\tsurveyWidget.show();\n\n\t\treturn surveyWidget;\n\t}\n\n\tgetAllWidgets() {\n\t\treturn Array.from(this.widgets.values());\n\t}\n\n\tdestroyWidget(id) {\n\t\tconst widget = this.widgets.get(id);\n\t\tif (widget) {\n\t\t\twidget.destroy();\n\t\t\tthis.widgets.delete(id);\n\t\t\tthis.eventBus.emit('widget:removed', { widgetId: id });\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tdestroyAllWidgets() {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.destroy();\n\t\t}\n\t\tthis.widgets.clear();\n\t\tthis.eventBus.emit('widgets:cleared');\n\t}\n\n\tupdateConfig(newConfig) {\n\t\tconst oldConfig = { ...this.config };\n\t\tthis.config = this._validateAndMergeConfig(newConfig, this.config);\n\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.handleConfigUpdate(this.config);\n\t\t}\n\n\t\tthis.eventBus.emit('config:updated', {\n\t\t\toldConfig,\n\t\t\tnewConfig: this.config,\n\t\t});\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.config.userContext = userContext;\n\t\tif (this.apiService) {\n\t\t\tthis.apiService.setUserContext(userContext);\n\t\t}\n\t\tthis.eventBus.emit('user:updated', { userContext });\n\t}\n\n\tgetUserContext() {\n\t\treturn (\n\t\t\tthis.config.userContext ||\n\t\t\t(this.apiService ? this.apiService.getUserContext() : null)\n\t\t);\n\t}\n\n\tasync reinitialize(newUserContext = null) {\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\n\t\tif (newUserContext) {\n\t\t\tthis.setUserContext(newUserContext);\n\t\t}\n\n\t\treturn this.init();\n\t}\n\n\ton(event, callback) {\n\t\tthis.eventBus.on(event, callback);\n\t\treturn this;\n\t}\n\n\toff(event, callback) {\n\t\tthis.eventBus.off(event, callback);\n\t\treturn this;\n\t}\n\n\tonce(event, callback) {\n\t\tthis.eventBus.once(event, callback);\n\t\treturn this;\n\t}\n\n\temit(event, data) {\n\t\tthis.eventBus.emit(event, data);\n\t\treturn this;\n\t}\n\n\tdestroy() {\n\t\tthis.destroyAllWidgets();\n\t\tthis.eventBus.removeAllListeners();\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.eventBus.emit('sdk:destroyed');\n\t}\n\n\t_validateAndMergeConfig(newConfig, existingConfig = {}) {\n\t\tconst defaultConfig = {\n\t\t\tapiUrl: null,\n\t\t\tworkspace: null,\n\t\t\tuserContext: null,\n\t\t\tposition: 'bottom-right',\n\t\t\ttheme: 'light',\n\t\t\tboardId: 'general',\n\t\t\tautoShow: true,\n\t\t\tdebug: false,\n\t\t\tmock: false,\n\t\t\tenv: 'production', // 'production' or 'staging'\n\t\t};\n\n\t\tconst mergedConfig = deepMerge(\n\t\t\tdeepMerge(defaultConfig, existingConfig),\n\t\t\tnewConfig\n\t\t);\n\n\t\tif (!mergedConfig.workspace) {\n\t\t\tthrow new ConfigError('Missing required configuration: workspace');\n\t\t}\n\n\t\tif (mergedConfig.userContext) {\n\t\t\tthis._validateUserContext(mergedConfig.userContext);\n\t\t}\n\n\t\treturn mergedConfig;\n\t}\n\n\t_validateUserContext(userContext) {\n\t\tif (!userContext.user_id && !userContext.email) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t'User context must include at least user_id or email'\n\t\t\t);\n\t\t}\n\n\t\tconst validStructure = {\n\t\t\tuser_id: 'string',\n\t\t\temail: 'string',\n\t\t\tname: 'string',\n\t\t\tcustom_fields: 'object',\n\t\t\tcompany: 'object',\n\t\t};\n\n\t\tfor (const [key, expectedType] of Object.entries(validStructure)) {\n\t\t\tif (userContext[key] && typeof userContext[key] !== expectedType) {\n\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t`User context field '${key}' must be of type '${expectedType}'`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t_bindMethods() {\n\t\tthis.createWidget = this.createWidget.bind(this);\n\t\tthis.destroyWidget = this.destroyWidget.bind(this);\n\t\tthis.updateConfig = this.updateConfig.bind(this);\n\t}\n\n\tstatic create(config) {\n\t\treturn new FeedbackSDK(config);\n\t}\n\n\tstatic async createAndInit(config) {\n\t\tconst sdk = new FeedbackSDK(config);\n\t\tawait sdk.init();\n\t\treturn sdk;\n\t}\n\n\tstatic extractUserContextFromAuth(authData) {\n\t\tif (!authData) return null;\n\n\t\treturn {\n\t\t\tuser_id: authData.sub || authData.id || authData.user_id,\n\t\t\temail: authData.email,\n\t\t\tname: authData.name || authData.display_name || authData.full_name,\n\t\t\tcustom_fields: {\n\t\t\t\trole: authData.role,\n\t\t\t\tplan: authData.plan || authData.subscription?.plan,\n\t\t\t\t...(authData.custom_fields || {}),\n\t\t\t},\n\t\t\tcompany:\n\t\t\t\tauthData.company || authData.organization\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tid: authData.company?.id || authData.organization?.id,\n\t\t\t\t\t\t\tname: authData.company?.name || authData.organization?.name,\n\t\t\t\t\t\t\tmonthly_spend: authData.company?.monthly_spend,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t};\n\t}\n}\n","export const MESSENGER_STYLES = `\n/* ========================================\n Messenger Widget - Intercom-style Dark Theme\n ======================================== */\n\n.messenger-widget {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.messenger-widget *,\n.messenger-widget *::before,\n.messenger-widget *::after {\n box-sizing: border-box;\n}\n\n/* ========================================\n Launcher Button\n ======================================== */\n\n.messenger-launcher {\n position: fixed;\n z-index: 999999;\n}\n\n.messenger-launcher-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.messenger-launcher-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.messenger-launcher-btn {\n width: 60px;\n height: 60px;\n border-radius: 50%;\n border: none;\n background: #1c1c1e;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n}\n\n.messenger-launcher-btn:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.4);\n}\n\n.messenger-launcher-btn:active {\n transform: scale(0.95);\n}\n\n.messenger-launcher-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.2s ease, transform 0.2s ease;\n}\n\n.messenger-launcher-open .messenger-launcher-icon-chat {\n opacity: 0;\n transform: rotate(-90deg);\n}\n\n.messenger-launcher-open .messenger-launcher-icon-close {\n opacity: 1;\n transform: rotate(0deg);\n}\n\n.messenger-launcher-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n background: #ef4444;\n color: white;\n font-size: 11px;\n font-weight: 600;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n border: 2px solid white;\n}\n\n/* ========================================\n Panel Container\n ======================================== */\n\n.messenger-panel {\n position: fixed;\n z-index: 999998;\n width: 400px;\n height: 680px;\n max-height: calc(100vh - 100px);\n display: none;\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.messenger-panel.open {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n\n.messenger-panel-bottom-right {\n bottom: 90px;\n right: 20px;\n}\n\n.messenger-panel-bottom-left {\n bottom: 90px;\n left: 20px;\n}\n\n.messenger-panel-content {\n background: #1c1c1e;\n height: 100%;\n border-radius: 16px;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);\n}\n\n/* Light theme */\n.messenger-panel.theme-light .messenger-panel-content {\n background: #ffffff;\n}\n\n/* ========================================\n Views Container\n ======================================== */\n\n.messenger-panel-views {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.messenger-view {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* ========================================\n Common Components\n ======================================== */\n\n/* Close Button */\n.messenger-close-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.6);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.messenger-close-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.theme-light .messenger-close-btn {\n color: #86868b;\n}\n\n.theme-light .messenger-close-btn:hover {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n/* Back Button */\n.messenger-back-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.6);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.messenger-back-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n/* Avatar Stack */\n.messenger-avatar-stack {\n display: flex;\n align-items: center;\n}\n\n.messenger-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 2px solid #1c1c1e;\n background: #5856d6;\n color: white;\n font-size: 13px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: -8px;\n object-fit: cover;\n}\n\n.messenger-avatar:first-child {\n margin-left: 0;\n}\n\n.messenger-avatar-small {\n width: 28px;\n height: 28px;\n font-size: 11px;\n}\n\n.messenger-avatar-medium {\n width: 40px;\n height: 40px;\n font-size: 15px;\n font-weight: 600;\n}\n\n.messenger-avatar-tiny {\n width: 20px;\n height: 20px;\n font-size: 9px;\n border-width: 1.5px;\n margin-left: -6px;\n}\n\n.messenger-avatar-tiny:first-child {\n margin-left: 0;\n}\n\n.theme-light .messenger-avatar {\n border-color: #ffffff;\n}\n\n/* ========================================\n Home View\n ======================================== */\n\n.messenger-home-view {\n background: linear-gradient(180deg, #2c2c2e 0%, #1c1c1e 40%);\n}\n\n.messenger-home-header {\n padding: 20px;\n background: linear-gradient(180deg, rgba(88, 86, 214, 0.2) 0%, transparent 100%);\n}\n\n.messenger-home-header-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.messenger-home-logo {\n width: 32px;\n height: 32px;\n}\n\n.messenger-home-logo img {\n width: 100%;\n height: 100%;\n border-radius: 8px;\n object-fit: cover;\n}\n\n.messenger-home-logo-default {\n width: 32px;\n height: 32px;\n background: linear-gradient(135deg, #5856d6, #007aff);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n}\n\n.messenger-home-avatars {\n flex: 1;\n display: flex;\n justify-content: flex-end;\n margin-right: 12px;\n}\n\n.messenger-home-welcome {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.messenger-home-greeting {\n font-size: 15px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-home-question {\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-home-body {\n flex: 1;\n padding: 20px;\n overflow-y: auto;\n}\n\n.messenger-home-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: #2c2c2e;\n border: none;\n border-radius: 24px;\n color: white;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n margin-bottom: 20px;\n}\n\n.messenger-home-message-btn:hover {\n background: #3c3c3e;\n transform: translateX(4px);\n}\n\n.messenger-home-message-btn svg {\n opacity: 0.6;\n}\n\n/* Featured Card */\n.messenger-home-featured {\n background: #2c2c2e;\n border-radius: 12px;\n overflow: hidden;\n margin-bottom: 20px;\n}\n\n.messenger-home-featured-image {\n width: 100%;\n height: 120px;\n object-fit: cover;\n}\n\n.messenger-home-featured-content {\n padding: 16px;\n}\n\n.messenger-home-featured-content h3 {\n margin: 0 0 8px;\n font-size: 16px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-home-featured-content p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.6);\n}\n\n/* Changelog Section in Home */\n.messenger-home-changelog-section {\n margin-top: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.messenger-home-changelog-card {\n background: #2c2c2e;\n border-radius: 16px;\n overflow: hidden;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-home-changelog-card:hover {\n background: #3c3c3e;\n transform: translateY(-2px);\n}\n\n.messenger-home-changelog-cover {\n width: 100%;\n height: 140px;\n overflow: hidden;\n position: relative;\n border-radius: 12px;\n margin: 12px 12px 0 12px;\n padding-bottom: 12px;\n width: calc(100% - 24px);\n}\n\n.messenger-home-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 12px;\n}\n\n.messenger-home-changelog-cover-text {\n position: absolute;\n bottom: 12px;\n left: 12px;\n right: 12px;\n color: #ffffff;\n font-size: 14px;\n font-weight: 600;\n text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);\n line-height: 1.3;\n}\n\n.messenger-home-changelog-card-content {\n padding: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-home-changelog-card-title {\n margin: 0 0 8px 0;\n font-size: 14px;\n font-weight: 600;\n color: #ffffff;\n line-height: 1.3;\n}\n\n.messenger-home-changelog-card-desc {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* ========================================\n Conversations View\n ======================================== */\n\n.messenger-conversations-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-conversations-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-conversations-body {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n\n.messenger-conversations-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-conversations-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-conversations-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-conversations-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-conversation-item {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n border-radius: 12px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.messenger-conversation-item:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-conversation-avatars {\n flex-shrink: 0;\n padding-top: 2px;\n}\n\n.messenger-conversation-content {\n flex: 1;\n min-width: 0;\n}\n\n.messenger-conversation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 4px;\n gap: 12px;\n}\n\n.messenger-conversation-title {\n font-size: 15px;\n font-weight: 400;\n color: #ffffff;\n line-height: 1.3;\n}\n\n.messenger-conversation-time {\n font-size: 13px;\n color: rgba(255, 255, 255, 0.5);\n flex-shrink: 0;\n}\n\n.messenger-conversation-preview {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.messenger-unread-dot {\n width: 8px;\n height: 8px;\n background: #ef4444;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.messenger-conversation-message {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.4;\n}\n\n.messenger-conversation-item.unread .messenger-conversation-title {\n font-weight: 400;\n color: #ffffff;\n}\n\n.messenger-conversation-item.unread .messenger-conversation-message {\n color: rgba(255, 255, 255, 0.9);\n}\n\n.messenger-conversations-footer {\n padding: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-new-message-btn {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background: #2c2c2e;\n border: none;\n border-radius: 24px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-new-message-btn:hover {\n background: #3c3c3e;\n}\n\n.messenger-new-message-btn span {\n flex: 1;\n text-align: left;\n}\n\n.messenger-new-message-btn svg {\n opacity: 0.6;\n}\n\n/* ========================================\n Chat View\n ======================================== */\n\n.messenger-chat-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-chat-header-info {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.messenger-chat-title {\n font-size: 16px;\n font-weight: 500;\n color: white;\n}\n\n.messenger-chat-messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.messenger-chat-empty {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-chat-empty-avatars {\n margin-bottom: 16px;\n}\n\n.messenger-chat-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-chat-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n max-width: 240px;\n}\n\n/* Messages */\n.messenger-message {\n display: flex;\n gap: 8px;\n max-width: 85%;\n}\n\n.messenger-message-own {\n align-self: flex-end;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.messenger-message-received {\n align-self: flex-start;\n}\n\n.messenger-message-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.messenger-message-sender {\n font-size: 12px;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 4px;\n margin-left: 12px;\n}\n\n.messenger-message-bubble {\n padding: 12px 16px;\n border-radius: 18px;\n word-wrap: break-word;\n}\n\n.messenger-message-own .messenger-message-bubble {\n background: #007aff;\n color: white;\n border-bottom-right-radius: 4px;\n}\n\n.messenger-message-received .messenger-message-bubble {\n background: #2c2c2e;\n color: white;\n border-bottom-left-radius: 4px;\n}\n\n.messenger-message-content {\n font-size: 15px;\n line-height: 1.4;\n}\n\n.messenger-message-time {\n font-size: 11px;\n color: rgba(255, 255, 255, 0.4);\n margin-top: 4px;\n padding: 0 4px;\n}\n\n.messenger-message-avatar {\n flex-shrink: 0;\n margin-top: auto;\n}\n\n/* Compose Area */\n.messenger-chat-compose {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-compose-input-wrapper {\n flex: 1;\n background: #2c2c2e;\n border-radius: 20px;\n padding: 8px 16px;\n}\n\n.messenger-compose-input {\n width: 100%;\n background: transparent;\n border: none;\n outline: none;\n color: white;\n font-size: 15px;\n line-height: 1.4;\n resize: none;\n max-height: 120px;\n font-family: inherit;\n}\n\n.messenger-compose-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-compose-send {\n width: 40px;\n height: 40px;\n background: #007aff;\n border: none;\n border-radius: 50%;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.messenger-compose-send:hover:not(:disabled) {\n background: #0066d6;\n transform: scale(1.05);\n}\n\n.messenger-compose-send:disabled {\n background: #3c3c3e;\n color: rgba(255, 255, 255, 0.3);\n cursor: not-allowed;\n}\n\n/* ========================================\n Help View\n ======================================== */\n\n.messenger-help-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n position: relative;\n}\n\n.messenger-help-header h2 {\n margin: 0;\n font-size: 17px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-header .messenger-close-btn {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.messenger-help-search {\n padding: 0 16px 16px;\n}\n\n.messenger-help-search-wrapper {\n display: flex;\n align-items: center;\n background: #2c2c2e;\n border-radius: 12px;\n padding: 14px 16px;\n position: relative;\n}\n\n.messenger-help-search-icon {\n position: absolute;\n right: 16px;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-search-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n color: white;\n font-size: 16px;\n font-family: inherit;\n padding-right: 32px;\n}\n\n.messenger-help-search-input::placeholder {\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-body {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.messenger-help-collections-header {\n font-size: 17px;\n font-weight: 600;\n color: white;\n padding: 12px 16px 8px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-help-collections {\n padding: 0;\n}\n\n.messenger-help-collection {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-help-collection:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-help-collection-content {\n flex: 1;\n min-width: 0;\n}\n\n.messenger-help-collection-title {\n margin: 0 0 2px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-collection-desc {\n margin: 0 0 2px;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n line-height: 1.3;\n}\n\n.messenger-help-collection-count {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.4);\n}\n\n.messenger-help-collection-arrow {\n color: rgba(255, 255, 255, 0.3);\n flex-shrink: 0;\n margin-left: 12px;\n}\n\n.messenger-help-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-help-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-help-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-help-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n/* ========================================\n Changelog View\n ======================================== */\n\n.messenger-changelog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-changelog-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-changelog-subheader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.messenger-changelog-latest {\n font-size: 12px;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.5);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.messenger-changelog-team {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: rgba(255, 255, 255, 0.6);\n}\n\n.messenger-changelog-body {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n\n.messenger-changelog-card {\n background: #2c2c2e;\n border-radius: 12px;\n overflow: hidden;\n margin-bottom: 12px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.messenger-changelog-card:hover {\n background: #3c3c3e;\n transform: translateY(-2px);\n}\n\n.messenger-changelog-cover {\n height: 120px;\n overflow: hidden;\n}\n\n.messenger-changelog-cover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.messenger-changelog-content {\n padding: 16px;\n}\n\n.messenger-changelog-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.messenger-changelog-tag {\n font-size: 11px;\n font-weight: 600;\n color: white;\n background: rgba(88, 86, 214, 0.3);\n padding: 4px 10px;\n border-radius: 12px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.messenger-changelog-title {\n margin: 0 0 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n line-height: 1.3;\n}\n\n.messenger-changelog-description {\n margin: 0 0 12px;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.6);\n line-height: 1.4;\n}\n\n.messenger-changelog-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.messenger-changelog-date {\n font-size: 12px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n.messenger-changelog-arrow {\n color: rgba(255, 255, 255, 0.3);\n}\n\n.messenger-changelog-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n padding: 40px;\n}\n\n.messenger-changelog-empty-icon {\n color: rgba(255, 255, 255, 0.3);\n margin-bottom: 16px;\n}\n\n.messenger-changelog-empty h3 {\n margin: 0 0 8px;\n font-size: 18px;\n font-weight: 600;\n color: white;\n}\n\n.messenger-changelog-empty p {\n margin: 0;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.5);\n}\n\n/* ========================================\n Navigation Tabs\n ======================================== */\n\n.messenger-panel-nav {\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n background: #1c1c1e;\n}\n\n.messenger-nav {\n display: flex;\n padding: 8px 12px;\n gap: 4px;\n}\n\n.messenger-nav-tab {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 8px 4px;\n background: none;\n border: none;\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s ease;\n position: relative;\n}\n\n.messenger-nav-tab:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.messenger-nav-icon {\n color: rgba(255, 255, 255, 0.5);\n transition: color 0.2s ease;\n}\n\n.messenger-nav-home-icon {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.messenger-nav-home-icon > i:first-child {\n position: relative;\n}\n\n.messenger-nav-home-icon > i:last-child {\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n transition: color 0.2s ease, filter 0.2s ease;\n}\n\n.messenger-nav-tab:hover .messenger-nav-home-icon > i:last-child {\n color: #ffd700;\n filter: drop-shadow(0 0 4px #ffd700);\n}\n\n.messenger-nav-label {\n font-size: 14px;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.5);\n transition: color 0.2s ease;\n}\n\n.messenger-nav-tab.active .messenger-nav-icon {\n color: white;\n}\n\n.messenger-nav-tab.active .messenger-nav-label {\n color: white;\n font-weight: 400;\n}\n\n.messenger-nav-badge {\n position: absolute;\n top: 4px;\n right: calc(50% - 16px);\n min-width: 16px;\n height: 16px;\n background: #ef4444;\n color: white;\n font-size: 10px;\n font-weight: 600;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n\n/* ========================================\n Light Theme Overrides\n ======================================== */\n\n/* Panel */\n.theme-light .messenger-panel-content {\n background: #ffffff;\n}\n\n/* Home View */\n.theme-light .messenger-home-view {\n background: linear-gradient(180deg, #f5f5f7 0%, #ffffff 40%);\n}\n\n.theme-light .messenger-home-header {\n background: linear-gradient(180deg, rgba(88, 86, 214, 0.1) 0%, transparent 100%);\n}\n\n.theme-light .messenger-home-greeting {\n color: #86868b;\n}\n\n.theme-light .messenger-home-question {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-message-btn {\n background: #f5f5f7;\n color: #1d1d1f;\n border: 1px solid #e0e0e0;\n}\n\n.theme-light .messenger-home-message-btn:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-home-message-btn svg,\n.theme-light .messenger-home-message-btn i {\n color: #86868b;\n}\n\n.theme-light .messenger-home-featured {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-home-featured-content h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-featured-content p {\n color: #86868b;\n}\n\n.theme-light .messenger-home-changelog-card {\n background: #f5f5f7;\n border: 1px solid #e0e0e0;\n}\n\n.theme-light .messenger-home-changelog-card-content {\n border-top-color: #e0e0e0;\n}\n\n.theme-light .messenger-home-changelog-card:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-home-changelog-card-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-home-changelog-card-desc {\n color: #6e6e73;\n}\n\n/* Close/Back buttons */\n.theme-light .messenger-close-btn,\n.theme-light .messenger-back-btn {\n color: #86868b;\n}\n\n.theme-light .messenger-close-btn:hover,\n.theme-light .messenger-back-btn:hover {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n/* Avatar */\n.theme-light .messenger-avatar {\n border-color: #ffffff;\n}\n\n/* Conversations View */\n.theme-light .messenger-conversations-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-header,\n.theme-light .messenger-help-header,\n.theme-light .messenger-changelog-header,\n.theme-light .messenger-chat-header {\n background: #ffffff;\n border-bottom-color: #e5e5e7;\n}\n\n.theme-light .messenger-conversations-header h2,\n.theme-light .messenger-help-header h2,\n.theme-light .messenger-changelog-header h2 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-conversations-body {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-footer {\n background: #ffffff;\n}\n\n.theme-light .messenger-conversations-empty-icon,\n.theme-light .messenger-chat-empty-avatars,\n.theme-light .messenger-help-empty-icon,\n.theme-light .messenger-changelog-empty-icon {\n color: #c7c7cc;\n}\n\n.theme-light .messenger-conversations-empty h3,\n.theme-light .messenger-chat-empty h3,\n.theme-light .messenger-help-empty h3,\n.theme-light .messenger-changelog-empty h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-conversations-empty p,\n.theme-light .messenger-chat-empty p,\n.theme-light .messenger-help-empty p,\n.theme-light .messenger-changelog-empty p {\n color: #86868b;\n}\n\n.theme-light .messenger-conversation-item:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.theme-light .messenger-conversation-title {\n color: #1d1d1f !important;\n}\n\n.theme-light .messenger-conversation-item.unread .messenger-conversation-title {\n color: #1d1d1f !important;\n font-weight: 400;\n}\n\n.theme-light .messenger-conversation-time {\n color: #86868b !important;\n}\n\n.theme-light .messenger-conversation-message {\n color: #6e6e73 !important;\n}\n\n.theme-light .messenger-conversation-item.unread .messenger-conversation-message {\n color: #3a3a3c !important;\n}\n\n.theme-light .messenger-chat-title,\n.theme-light .messenger-help-article-title,\n.theme-light .messenger-changelog-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-article-desc,\n.theme-light .messenger-changelog-description {\n color: #86868b;\n}\n\n.theme-light .messenger-conversations-footer {\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-new-message-btn {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-new-message-btn:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-new-message-btn svg,\n.theme-light .messenger-new-message-btn i {\n color: #86868b;\n}\n\n/* Chat View */\n.theme-light .messenger-chat-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-header {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-chat-messages {\n background: #ffffff;\n}\n\n.theme-light .messenger-chat-empty h3 {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-chat-empty p {\n color: #86868b;\n}\n\n.theme-light .messenger-message-sender {\n color: #86868b;\n}\n\n.theme-light .messenger-message-received .messenger-message-bubble {\n background: #f5f5f7;\n color: #1d1d1f;\n}\n\n.theme-light .messenger-message-own .messenger-message-bubble {\n background: #007aff;\n color: #ffffff;\n}\n\n.theme-light .messenger-message-time {\n color: #86868b;\n}\n\n.theme-light .messenger-chat-compose {\n background: #ffffff;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-compose-input-wrapper {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-compose-input {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-compose-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-compose-send:disabled {\n background: #e5e5e7;\n color: #c7c7cc;\n}\n\n/* Help View */\n.theme-light .messenger-help-view {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-body {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-search {\n background: #ffffff;\n}\n\n.theme-light .messenger-help-search-wrapper {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-help-search-icon {\n color: #86868b;\n}\n\n.theme-light .messenger-help-search-input {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-search-input::placeholder {\n color: #86868b;\n}\n\n.theme-light .messenger-help-collections-header {\n color: #1d1d1f;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-help-collection {\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-help-collection:hover {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.theme-light .messenger-help-collection-title {\n color: #1d1d1f;\n}\n\n.theme-light .messenger-help-collection-desc {\n color: #6e6e73;\n}\n\n.theme-light .messenger-help-collection-count {\n color: #86868b;\n}\n\n.theme-light .messenger-help-collection-arrow {\n color: #c7c7cc;\n}\n\n/* Changelog View */\n.theme-light .messenger-changelog-subheader {\n border-bottom-color: #e5e5e7;\n}\n\n.theme-light .messenger-changelog-latest {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-team {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-card {\n background: #f5f5f7;\n}\n\n.theme-light .messenger-changelog-card:hover {\n background: #e8e8ed;\n}\n\n.theme-light .messenger-changelog-tag {\n background: rgba(0, 122, 255, 0.15);\n color: #007aff;\n}\n\n.theme-light .messenger-changelog-date {\n color: #86868b;\n}\n\n.theme-light .messenger-changelog-arrow {\n color: #c7c7cc;\n}\n\n/* Navigation */\n.theme-light .messenger-panel-nav {\n background: #ffffff;\n border-top-color: #e5e5e7;\n}\n\n.theme-light .messenger-nav-icon {\n color: #86868b;\n}\n\n.theme-light .messenger-nav-label {\n color: #86868b;\n}\n\n.theme-light .messenger-nav-tab:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.theme-light .messenger-nav-tab.active .messenger-nav-icon,\n.theme-light .messenger-nav-tab.active .messenger-nav-label {\n color: #007aff;\n}\n\n/* ========================================\n Responsive Design\n ======================================== */\n\n@media (max-width: 480px) {\n .messenger-panel {\n width: 100%;\n height: 100%;\n max-height: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n border-radius: 0;\n }\n\n .messenger-panel-content {\n border-radius: 0;\n }\n\n .messenger-launcher {\n bottom: 16px;\n right: 16px;\n }\n\n .messenger-launcher-bottom-left {\n left: 16px;\n }\n}\n\n/* ========================================\n Animations\n ======================================== */\n\n@keyframes messenger-slide-up {\n from {\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes messenger-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .messenger-launcher-btn,\n .messenger-panel,\n .messenger-nav-tab,\n .messenger-conversation-item,\n .messenger-help-article,\n .messenger-changelog-card {\n transition: none;\n }\n}\n`;\n","export const CSS_STYLES = `\n.feedback-widget {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 14px;\n line-height: 1.4;\n z-index: 999999;\n box-sizing: border-box;\n}\n\n.feedback-widget *,\n.feedback-widget *::before,\n.feedback-widget *::after {\n box-sizing: border-box;\n}\n\n.feedback-widget-button {\n position: fixed;\n z-index: 999999;\n}\n\n.feedback-widget-button.position-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.feedback-widget-button.position-top-right {\n top: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-top-left {\n top: 20px;\n left: 20px;\n}\n\n.feedback-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n height: 48px;\n overflow: visible;\n border-radius: 9999px;\n border: none;\n padding: 12px 20px;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.3s ease;\n color: white;\n background: #155EEF;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n width: fit-content;\n}\n\n.feedback-trigger-btn:hover:not(:disabled) {\n transform: translateY(-2px);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);\n}\n\n.feedback-trigger-btn:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.feedback-trigger-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-icon {\n flex-shrink: 0;\n}\n\n.feedback-minimize-icon,\n.feedback-expand-icon {\n position: absolute;\n top: -6px;\n right: -6px;\n width: 24px;\n height: 24px;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border-radius: 50%;\n opacity: 0;\n transition: opacity 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.feedback-minimize-icon svg,\n.feedback-expand-icon svg {\n width: 16px;\n height: 16px;\n display: block;\n fill: #155EEF;\n}\n\n/* Show minimize icon on hover when expanded */\n.feedback-widget-button:not(.minimized) .feedback-trigger-btn:hover .feedback-minimize-icon {\n opacity: 1;\n}\n\n/* Minimized state - just icon */\n.feedback-widget-button.minimized .feedback-trigger-btn {\n padding: 12px;\n width: 48px;\n height: 48px;\n justify-content: center;\n}\n\n.feedback-widget-button.minimized .feedback-text {\n display: none;\n}\n\n.feedback-widget-button.minimized .feedback-minimize-icon {\n display: none;\n}\n\n/* Show expand icon on hover when minimized */\n.feedback-widget-button.minimized .feedback-trigger-btn:hover .feedback-expand-icon {\n opacity: 1;\n}\n\n/* Side Panel Styles */\n.feedback-panel {\n position: fixed;\n bottom: 80px;\n right: 24px;\n width: 420px;\n max-height: 500px;\n z-index: 1000000;\n transform: translateX(calc(100% + 24px));\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n font-family: inherit;\n}\n\n.feedback-panel.open {\n transform: translateX(0);\n}\n\n.feedback-panel-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.1);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n z-index: 999999;\n}\n\n.feedback-panel-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.feedback-panel-content {\n background: white;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-radius: 16px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), \n 0 10px 10px -5px rgba(0, 0, 0, 0.04),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.feedback-panel.theme-dark .feedback-panel-content {\n background: #1F2937;\n color: white;\n}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 24px;\n border-bottom: 1px solid #E5E7EB;\n flex-shrink: 0;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header {\n border-bottom-color: #374151;\n}\n\n.feedback-panel-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header h3 {\n color: white;\n}\n\n.feedback-panel-close {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #6B7280;\n padding: 4px;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.feedback-panel-close:hover {\n background: #F3F4F6;\n color: #111827;\n}\n\n.feedback-panel-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close {\n color: #9CA3AF;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close:hover {\n background: #374151;\n color: white;\n}\n\n.feedback-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.feedback-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.feedback-form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.feedback-form-group:last-child {\n margin-bottom: 0;\n}\n\n.feedback-form-group label {\n font-size: 14px;\n font-weight: 500;\n line-height: 1.25;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-form-group label {\n color: #D1D5DB;\n}\n\n.feedback-form-group input {\n height: 44px;\n width: 100%;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group input::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group input:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);\n}\n\n.feedback-form-group input:focus-visible {\n outline: none;\n}\n\n.feedback-form-group textarea {\n min-height: 200px;\n width: 100%;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group textarea::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group textarea:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);\n}\n\n.feedback-form-group textarea:focus-visible {\n outline: none;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input,\n.feedback-panel.theme-dark .feedback-form-group textarea {\n background: #374151;\n border-color: #4B5563;\n color: white;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input::placeholder,\n.feedback-panel.theme-dark .feedback-form-group textarea::placeholder {\n color: #6B7280;\n}\n\n.feedback-btn {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 8px;\n border: none;\n height: 44px;\n padding: 10px 18px;\n font-size: 15px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.feedback-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.feedback-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-btn-submit {\n background: #155EEF;\n color: white;\n width: 100%;\n}\n\n.feedback-btn-submit:hover:not(:disabled) {\n background: #4338ca;\n}\n\n.feedback-btn-submit:active:not(:disabled) {\n background: #3730a3;\n}\n\n.feedback-btn-cancel {\n background: transparent;\n color: #6B7280;\n border: 1px solid #D1D5DB;\n}\n\n.feedback-btn-cancel:hover:not(:disabled) {\n background: #F9FAFB;\n border-color: #9CA3AF;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel {\n color: #D1D5DB;\n border-color: #4B5563;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel:hover:not(:disabled) {\n background: #374151;\n}\n\n.feedback-form-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: auto;\n padding-top: 24px;\n}\n\n.feedback-error {\n color: #DC2626;\n font-size: 14px;\n font-weight: 400;\n margin-top: 8px;\n padding: 12px;\n background: #FEE2E2;\n border: 1px solid #FECACA;\n border-radius: 8px;\n display: none;\n}\n\n.feedback-error.show {\n display: block;\n}\n\n.feedback-panel.theme-dark .feedback-error {\n background: #7F1D1D;\n border-color: #991B1B;\n color: #FCA5A5;\n}\n\n.feedback-success-notification {\n position: fixed;\n top: 24px;\n right: 24px;\n z-index: 1000002;\n background: white;\n border: 1px solid #D1FAE5;\n border-radius: 12px;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 320px;\n}\n\n.feedback-success-content {\n display: flex;\n align-items: center;\n padding: 16px 20px;\n gap: 12px;\n}\n\n.feedback-success-icon {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: #10B981;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.feedback-success-content span {\n color: #065F46;\n font-weight: 500;\n font-size: 14px;\n flex: 1;\n}\n\n.feedback-success-close {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n border-radius: 4px;\n flex-shrink: 0;\n}\n\n.feedback-success-close:hover {\n background: #F3F4F6;\n color: #374151;\n}\n\n.feedback-success-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n@keyframes slideInRight {\n from {\n transform: translateX(400px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.feedback-panel-backdrop {\n animation: fadeIn 0.3s ease;\n}\n\n@media (max-width: 768px) {\n .feedback-panel {\n width: 100%;\n top: auto;\n bottom: 0;\n right: 0;\n left: 0;\n height: 85vh;\n max-height: 85vh;\n transform: translateY(100%);\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel.open {\n transform: translateY(0);\n }\n \n .feedback-panel-content {\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel-header {\n padding: 20px;\n position: relative;\n }\n \n .feedback-panel-header::before {\n content: '';\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n width: 40px;\n height: 4px;\n background: #D1D5DB;\n border-radius: 2px;\n }\n \n .feedback-panel.theme-dark .feedback-panel-header::before {\n background: #4B5563;\n }\n \n .feedback-panel-body {\n padding: 20px;\n }\n \n .feedback-form-group textarea {\n min-height: 150px;\n }\n \n .feedback-widget-button {\n bottom: 16px;\n right: 16px;\n }\n \n .feedback-widget-button.position-bottom-left {\n left: 16px;\n }\n \n .feedback-success-notification {\n top: 16px;\n right: 16px;\n left: 16px;\n min-width: auto;\n }\n \n .feedback-minimize-icon,\n .feedback-expand-icon {\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n }\n \n .feedback-minimize-icon svg,\n .feedback-expand-icon svg {\n width: 14px;\n height: 14px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .feedback-trigger-btn,\n .feedback-btn,\n .feedback-panel,\n .feedback-panel-backdrop,\n .feedback-success-notification,\n .feedback-minimize-icon,\n .feedback-expand-icon {\n transition: none;\n animation: none;\n }\n}\n\n@media print {\n .feedback-widget,\n .feedback-panel,\n .feedback-panel-backdrop,\n .feedback-success-notification {\n display: none !important;\n }\n}\n`;","import { APIService } from './core/APIService.js';\nimport { EventBus } from './core/EventBus.js';\nimport { FeedbackSDK } from './core/FeedbackSDK.js';\nimport { MESSENGER_STYLES } from './styles/messengerStyles.js';\nimport { CSS_STYLES } from './styles/styles.js';\nimport {\n\tAPIError,\n\tConfigError,\n\tSDKError,\n\tValidationError,\n\tWidgetError,\n} from './utils/errors.js';\nimport * as helpers from './utils/helpers.js';\nimport { BaseWidget } from './widgets/BaseWidget.js';\nimport { ButtonWidget } from './widgets/ButtonWidget.js';\nimport { InlineWidget } from './widgets/InlineWidget.js';\nimport { MessengerWidget } from './widgets/MessengerWidget.js';\nimport { SurveyWidget } from './widgets/SurveyWidget.js';\nimport { TabWidget } from './widgets/TabWidget.js';\nimport { WidgetFactory } from './widgets/WidgetFactory.js';\n\nfunction injectStyles() {\n\tif (\n\t\ttypeof document !== 'undefined' &&\n\t\t!document.querySelector('#feedback-sdk-styles')\n\t) {\n\t\tconst style = document.createElement('style');\n\t\tstyle.id = 'feedback-sdk-styles';\n\t\tstyle.textContent = CSS_STYLES + MESSENGER_STYLES;\n\t\tdocument.head.appendChild(style);\n\t}\n}\n\nfunction autoInit() {\n\tif (typeof window !== 'undefined' && window.FeedbackSDKConfig) {\n\t\tinjectStyles();\n\n\t\tconst config = { ...window.FeedbackSDKConfig };\n\t\tconst sdk = new FeedbackSDK(config);\n\n\t\tsdk\n\t\t\t.init()\n\t\t\t.then((initData) => {\n\t\t\t\twindow.FeedbackSDK.instance = sdk;\n\n\t\t\t\tif (window.FeedbackSDKConfig.autoCreate) {\n\t\t\t\t\tconst widgets = Array.isArray(window.FeedbackSDKConfig.autoCreate)\n\t\t\t\t\t\t? window.FeedbackSDKConfig.autoCreate\n\t\t\t\t\t\t: [window.FeedbackSDKConfig.autoCreate];\n\n\t\t\t\t\twidgets.forEach((widgetConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst widget = sdk.createWidget(\n\t\t\t\t\t\t\t\twidgetConfig.type || 'button',\n\t\t\t\t\t\t\t\twidgetConfig\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\twidget.mount(widgetConfig.container);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[FeedbackSDK] Failed to create widget:', error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKReady', {\n\t\t\t\t\t\tdetail: { sdk, config, initData },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error('[FeedbackSDK] Auto-initialization failed:', error);\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKError', {\n\t\t\t\t\t\tdetail: { error, config, phase: 'initialization' },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n\nfunction handleDOMReady() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.readyState === 'loading') {\n\t\t\tdocument.addEventListener('DOMContentLoaded', autoInit);\n\t\t} else {\n\t\t\tsetTimeout(autoInit, 0);\n\t\t}\n\t}\n}\n\nconst FeedbackSDKExport = {\n\tFeedbackSDK,\n\tBaseWidget,\n\tButtonWidget,\n\tTabWidget,\n\tInlineWidget,\n\tSurveyWidget,\n\tMessengerWidget,\n\tWidgetFactory,\n\tEventBus,\n\tAPIService,\n\tSDKError,\n\tAPIError,\n\tWidgetError,\n\tConfigError,\n\tValidationError,\n\thelpers,\n\tcreate: (config) => {\n\t\tinjectStyles();\n\t\treturn new FeedbackSDK(config);\n\t},\n\tversion: '1.0.0',\n\tinstance: null,\n\n\tisReady: () => Boolean(FeedbackSDKExport.instance),\n\tgetInstance: () => FeedbackSDKExport.instance,\n\n\tsetUserContext: (userContext) => {\n\t\tif (FeedbackSDKExport.instance) {\n\t\t\tFeedbackSDKExport.instance.setUserContext(userContext);\n\t\t} else {\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.FeedbackSDKUserContext = userContext;\n\t\t\t}\n\t\t}\n\t},\n\n\tinitWithUser: async (config, userContext) => {\n\t\tinjectStyles();\n\t\tconst fullConfig = { ...config, userContext };\n\t\tconst sdk = new FeedbackSDK(fullConfig);\n\t\tawait sdk.init();\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.FeedbackSDK.instance = sdk;\n\t\t}\n\n\t\treturn sdk;\n\t},\n\n\tonReady: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\tif (FeedbackSDKExport.isReady()) {\n\t\t\t\tcallback(FeedbackSDKExport.instance);\n\t\t\t} else {\n\t\t\t\twindow.addEventListener(\n\t\t\t\t\t'FeedbackSDKReady',\n\t\t\t\t\t(event) => {\n\t\t\t\t\t\tcallback(event.detail.sdk, event.detail);\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\n\tonError: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener('FeedbackSDKError', (event) => {\n\t\t\t\tcallback(event.detail.error, event.detail);\n\t\t\t});\n\t\t}\n\t},\n\n\textractUserContext: FeedbackSDK.extractUserContextFromAuth,\n};\n\nif (typeof window !== 'undefined') {\n\twindow.FeedbackSDK = FeedbackSDKExport;\n\thandleDOMReady();\n}\n\nexport default FeedbackSDKExport;\n\nexport {\n\tAPIError,\n\tAPIService,\n\tBaseWidget,\n\tButtonWidget,\n\tConfigError,\n\tEventBus,\n\tFeedbackSDK,\n\thelpers,\n\tInlineWidget,\n\tMessengerWidget,\n\tSDKError,\n\tSurveyWidget,\n\tTabWidget,\n\tValidationError,\n\tWidgetError,\n\tWidgetFactory,\n};\n"],"names":[],"mappings":";;;;;;CAAO,MAAM,QAAQ,SAAS,KAAK,CAAC;CACpC,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;CAC7B,EAAE,KAAK,CAAC,OAAO,CAAC;CAChB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU;CACxB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;;CAEpB,EAAE,IAAI,KAAK,CAAC,iBAAiB,EAAE;CAC/B,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;CAC1C,EAAE;CACF,CAAC;CACD;;CAEO,MAAM,QAAQ,SAAS,KAAK,CAAC;CACpC,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;CACxC,EAAE,KAAK,CAAC,OAAO,CAAC;CAChB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU;CACxB,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM;CACtB,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ;;CAE1B,EAAE,IAAI,KAAK,CAAC,iBAAiB,EAAE;CAC/B,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;CAC1C,EAAE;CACF,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC;CAC1B,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB,EAAE,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;CAChD,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB,EAAE,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;CAChD,CAAC;CACD;;CAEO,MAAM,WAAW,SAAS,KAAK,CAAC;CACvC,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE;CAC5C,EAAE,KAAK,CAAC,OAAO,CAAC;CAChB,EAAE,IAAI,CAAC,IAAI,GAAG,aAAa;CAC3B,EAAE,IAAI,CAAC,UAAU,GAAG,UAAU;CAC9B,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ;;CAE1B,EAAE,IAAI,KAAK,CAAC,iBAAiB,EAAE;CAC/B,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC;CAC7C,EAAE;CACF,CAAC;CACD;;CAEO,MAAM,WAAW,SAAS,KAAK,CAAC;CACvC,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;CACjC,EAAE,KAAK,CAAC,OAAO,CAAC;CAChB,EAAE,IAAI,CAAC,IAAI,GAAG,aAAa;CAC3B,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS;;CAE5B,EAAE,IAAI,KAAK,CAAC,iBAAiB,EAAE;CAC/B,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC;CAC7C,EAAE;CACF,CAAC;CACD;;CAEO,MAAM,eAAe,SAAS,KAAK,CAAC;CAC3C,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;CACpC,EAAE,KAAK,CAAC,OAAO,CAAC;CAChB,EAAE,IAAI,CAAC,IAAI,GAAG,iBAAiB;CAC/B,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;CACpB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;;CAEpB,EAAE,IAAI,KAAK,CAAC,iBAAiB,EAAE;CAC/B,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC;CACjD,EAAE;CACF,CAAC;CACD;;CCvEA,MAAM,WAAW,GAAG;CACpB,CAAC,YAAY,EAAE,SAAS;CACxB,CAAC,eAAe,EAAE,SAAS;CAC3B,CAAC,SAAS,EAAE,SAAS;CACrB,CAAC,OAAO,EAAE,kBAAkB;CAC5B,CAAC,IAAI,EAAE,QAAQ;CACf,CAAC,WAAW,EAAE,OAAO;CACrB,CAAC;;CAED;CACA,MAAM,YAAY,GAAG;CACrB,CAAC;CACD,EAAE,EAAE,EAAE,iBAAiB;CACvB,EAAE,IAAI,EAAE,KAAK;CACb,EAAE,KAAK,EAAE,qCAAqC;CAC9C,EAAE,WAAW,EAAE,gCAAgC;CAC/C,EAAE,SAAS,EAAE,YAAY;CACzB,EAAE,UAAU,EAAE,aAAa;CAC3B,EAAE,OAAO,EAAE,QAAQ;CACnB,EAAE,MAAM,EAAE,QAAQ;CAClB,EAAE;CACF,CAAC;CACD,EAAE,EAAE,EAAE,kBAAkB;CACxB,EAAE,IAAI,EAAE,MAAM;CACd,EAAE,KAAK,EAAE,wBAAwB;CACjC,EAAE,WAAW,EAAE,uCAAuC;CACtD,EAAE,OAAO,EAAE,QAAQ;CACnB,EAAE,MAAM,EAAE,QAAQ;CAClB,EAAE;CACF,CAAC;CACD,EAAE,EAAE,EAAE,iBAAiB;CACvB,EAAE,IAAI,EAAE,KAAK;CACb,EAAE,KAAK,EAAE,kBAAkB;CAC3B,EAAE,WAAW,EAAE,uCAAuC;CACtD,EAAE,SAAS,EAAE,gBAAgB;CAC7B,EAAE,UAAU,EAAE,WAAW;CACzB,EAAE,OAAO,EAAE,QAAQ;CACnB,EAAE,MAAM,EAAE,QAAQ;CAClB,EAAE;CACF,CAAC;;CAED;CACA,MAAM,QAAQ,GAAG;CACjB,CAAC,UAAU,EAAE;CACb,EAAE,IAAI,EAAE,gCAAgC;CACxC,EAAE,aAAa,EAAE,CAAC,SAAS,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,uBAAuB,CAAC;CAC7E,EAAE;CACF,CAAC,OAAO,EAAE;CACV,EAAE,IAAI,EAAE,wCAAwC;CAChD,EAAE,aAAa,EAAE,CAAC,SAAS;CAC3B,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,+BAA+B,CAAC;CACxD,EAAE;CACF,CAAC;;CAEM,MAAM,UAAU,CAAC;CACxB,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;CAC1B,EAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;CACnC,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI;CAC3B,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI;CAC/C,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK;CAClC,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,YAAY;;CAEvC,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE;CACrB,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM;CAC/B,EAAE,CAAC,MAAM;CACT,GAAG,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU;CAC9D,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACvB,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS;CAC5C,MAAM,SAAS,CAAC,IAAI;CACpB,EAAE;;CAEF,EAAE,IAAI,CAAC,kBAAkB,EAAE;CAC3B,CAAC;;CAED,CAAC,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE;CAChC,EAAE,IAAI,WAAW,EAAE;CACnB,GAAG,IAAI,CAAC,WAAW,GAAG,WAAW;CACjC,EAAE;;CAEF,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;CAC7B,GAAG,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;CAC7C,EAAE;;CAEF,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;CAC5C,GAAG,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC,mBAAmB,CAAC;CAC/F,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;CACjC,EAAE;;CAEF;CACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;CACjB,GAAG,IAAI,CAAC,YAAY,GAAG,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE;CACnD,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1D,GAAG,IAAI,CAAC,aAAa,EAAE;CACvB,GAAG,OAAO;CACV,IAAI,YAAY,EAAE,IAAI,CAAC,YAAY;CACnC,IAAI,MAAM,EAAE,WAAW;CACvB,IAAI,SAAS,EAAE,IAAI;CACnB,IAAI;CACJ,EAAE;;CAEF,EAAE,MAAM,OAAO,GAAG;CAClB,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS;CAC5B,GAAG,IAAI,EAAE,IAAI,CAAC,WAAW;CACzB,GAAG;;CAEH,EAAE,IAAI;CACN,GAAG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;CAC5D,IAAI,MAAM,EAAE,MAAM;CAClB,IAAI,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;CACjC,IAAI,OAAO,EAAE;CACb,KAAK,cAAc,EAAE,kBAAkB;CACvC,KAAK;CACL,IAAI,CAAC;;CAEL,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa;CAC7C,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;CACzE,GAAG,IAAI,CAAC,aAAa,EAAE;;CAEvB,GAAG,OAAO;CACV,IAAI,YAAY,EAAE,IAAI,CAAC,YAAY;CACnC,IAAI,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;CACjC,IAAI,SAAS,EAAE,QAAQ,CAAC,UAAU;CAClC,IAAI;CACJ,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;CACvB,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACnD,IAAI,KAAK,CAAC;CACV,IAAI;CACJ,EAAE;CACF,CAAC;;CAED,CAAC,MAAM,cAAc,CAAC,YAAY,EAAE;CACpC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;CAC9B,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;CACpB,EAAE;;CAEF,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;CAC1B,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,kCAAkC,CAAC;CAC9D,EAAE;;CAEF;CACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;CACjB,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;CAC3D,GAAG,OAAO;CACV,IAAI,OAAO,EAAE,IAAI;CACjB,IAAI,IAAI,EAAE;CACV,KAAK,EAAE,EAAE,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE;CAClC,KAAK,KAAK,EAAE,YAAY,CAAC,KAAK;CAC9B,KAAK,OAAO,EAAE,YAAY,CAAC,OAAO;CAClC,KAAK;CACL,IAAI,OAAO,EAAE,kCAAkC;CAC/C,IAAI;CACJ,EAAE;;CAEF,EAAE,MAAM,OAAO,GAAG;CAClB,GAAG,KAAK;CACR,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO;CACvE,GAAG,KAAK,EAAE,YAAY,CAAC,KAAK;CAC5B,GAAG,OAAO,EAAE,YAAY,CAAC,OAAO;CAChC,GAAG,WAAW,EAAE,YAAY,CAAC,WAAW,IAAI,EAAE;CAC9C,GAAG;;CAEH,EAAE,IAAI;CACN,GAAG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE;CAChE,IAAI,MAAM,EAAE,MAAM;CAClB,IAAI,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;CACjC,IAAI,OAAO,EAAE;CACb,KAAK,cAAc,EAAE,kBAAkB;CACvC,KAAK,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;CACjD,KAAK;CACL,IAAI,CAAC;;CAEL,GAAG,OAAO,QAAQ;CAClB,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;CAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;CAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI;CAC7B,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE;CACrB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;CAC5C,GAAG;;CAEH,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;CACvB,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACjD,IAAI,KAAK,CAAC;CACV,IAAI;CACJ,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,MAAM,gBAAgB,CAAC,OAAO,GAAG,EAAE,EAAE;CACtC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;CAC9B,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;CACpB,EAAE;;CAEF,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;CAC1B,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,kCAAkC,CAAC;CAC9D,EAAE;;CAEF;CACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;CACjB,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;CAC3D,GAAG,OAAO;CACV,IAAI,OAAO,EAAE,IAAI;CACjB,IAAI,IAAI,EAAE,YAAY;CACtB,IAAI;CACJ,EAAE;;CAEF,EAAE,IAAI;CACN,GAAG,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;;CAE5C;CACA,GAAG,MAAM,UAAU;CACnB,IAAI,OAAO,CAAC,GAAG;CACf,KAAK,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;CAC/D,GAAG,IAAI,UAAU,EAAE;CACnB,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;CACzC,GAAG;;CAEH;CACA,GAAG,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;CAC3C,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC;CACzE,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC;CAC5E,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;;CAE7D;CACA,GAAG,IAAI,OAAO,CAAC,cAAc,EAAE;CAC/B,IAAI,WAAW,CAAC,MAAM;CACtB,KAAK,iBAAiB;CACtB,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc;CAC1C,KAAK;CACL,GAAG;;CAEH,GAAG,MAAM,QAAQ,GAAG,CAAC,sBAAsB,EAAE,WAAW,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;;CAEzG,GAAG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;CACtD,IAAI,MAAM,EAAE,KAAK;CACjB,IAAI,OAAO,EAAE;CACb,KAAK,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;CACjD,KAAK;CACL,IAAI,CAAC;;CAEL,GAAG,OAAO,QAAQ;CAClB,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;CAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;CAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI;CAC7B,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE;CACrB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;CACzC,GAAG;;CAEH,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;CACvB,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACpD,IAAI,KAAK,CAAC;CACV,IAAI;CACJ,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA;CACA,CAAC,cAAc,GAAG;CAClB,EAAE,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;CACxC,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE;CACnD,EAAE;;CAEF,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS;;CAEhC;CACA,EAAE,IAAI,MAAM,GAAG,SAAS;CACxB,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;CAChC,GAAG,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,QAAQ;CACzD,EAAE;;CAEF;CACA,EAAE,IAAI,OAAO,GAAG,SAAS;CACzB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS;CACjD,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM;CAC/C,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ;CACpD,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ;CACpD,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO;;CAExE;CACA,EAAE,IAAI,EAAE,GAAG,SAAS;CACpB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,SAAS;CAC5C,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,OAAO;CAC3C,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO;CAC7C,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,SAAS;CACjD,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,KAAK;;CAEnE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;CAChC,CAAC;;CAED;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,MAAM,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE;CACpD,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;CAC9B,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;CACpB,EAAE;;CAEF,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;CAC1B,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,kCAAkC,CAAC;CAC9D,EAAE;;CAEF,EAAE,IAAI,CAAC,QAAQ,EAAE;CACjB,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,uBAAuB,CAAC;CACnD,EAAE;;CAEF;CACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;CACjB,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;CAC3D,GAAG,OAAO;CACV,IAAI,OAAO,EAAE,IAAI;CACjB,IAAI,IAAI,EAAE;CACV,KAAK,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE;CACtC,KAAK,SAAS,EAAE,QAAQ;CACxB,KAAK,GAAG,YAAY;CACpB,KAAK;CACL,IAAI,OAAO,EAAE,yCAAyC;CACtD,IAAI;CACJ,EAAE;;CAEF,EAAE,MAAM,OAAO,GAAG;CAClB,GAAG,MAAM,EAAE,YAAY,CAAC,MAAM;CAC9B,GAAG,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,EAAE;CACxC,GAAG,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,EAAE;CACtC,GAAG;;CAEH,EAAE,IAAI;CACN,GAAG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY;CAC3C,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CAAC;CAC3C,IAAI;CACJ,KAAK,MAAM,EAAE,MAAM;CACnB,KAAK,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;CAClC,KAAK,OAAO,EAAE;CACd,MAAM,cAAc,EAAE,kBAAkB;CACxC,MAAM,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;CAClD,MAAM;CACN;CACA,IAAI;;CAEJ,GAAG,OAAO,QAAQ;CAClB,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;CAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;CAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI;CAC7B,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE;CACrB,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC;CAC5D,GAAG;;CAEH,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;CACvB,IAAI,CAAC,kCAAkC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACxD,IAAI,KAAK,CAAC;CACV,IAAI;CACJ,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA;CACA;CACA,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE;CAC/B,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;CAC9B,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;CACpB,EAAE;;CAEF,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;CAC1B,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,kCAAkC,CAAC;CAC9D,EAAE;;CAEF,EAAE,IAAI,CAAC,QAAQ,EAAE;CACjB,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,uBAAuB,CAAC;CACnD,EAAE;;CAEF;CACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;CACjB,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;CAC3D,GAAG,OAAO;CACV,IAAI,OAAO,EAAE,IAAI;CACjB,IAAI,OAAO,EAAE,+BAA+B;CAC5C,IAAI;CACJ,EAAE;;CAEF,EAAE,IAAI;CACN,GAAG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY;CAC3C,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC;CACzC,IAAI;CACJ,KAAK,MAAM,EAAE,MAAM;CACnB,KAAK,OAAO,EAAE;CACd,MAAM,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;CAClD,MAAM;CACN;CACA,IAAI;;CAEJ,GAAG,OAAO,QAAQ;CAClB,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;CAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;CAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI;CAC7B,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE;CACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;CACvC,GAAG;;CAEH,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;CACvB,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CAChD,IAAI,KAAK,CAAC;CACV,IAAI;CACJ,EAAE;CACF,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE;CACF,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC;CAChE;CACA,CAAC;;CAED,CAAC,cAAc,CAAC,WAAW,EAAE;CAC7B,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW;CAChC,EAAE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;CAC3C,GAAG,YAAY,CAAC,OAAO;CACvB,IAAI,yBAAyB;CAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW;CAC9B,IAAI;CACJ,EAAE;CACF,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE,OAAO,IAAI,CAAC,WAAW;CACzB,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI;CAC3B,EAAE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;CAC3C,GAAG,YAAY,CAAC,UAAU,CAAC,qBAAqB,CAAC;CACjD,GAAG,YAAY,CAAC,UAAU,CAAC,yBAAyB,CAAC;CACrD,EAAE;CACF,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB,EAAE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;;CAE3C,EAAE,IAAI;CACN,GAAG,MAAM,WAAW,GAAG;CACvB,IAAI,KAAK,EAAE,IAAI,CAAC,YAAY;CAC5B,IAAI,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;CAC5C,IAAI,SAAS,EAAE,IAAI,CAAC,SAAS;CAC7B,IAAI;CACJ,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CAC3E,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB;CACA,EAAE;CACF,CAAC;;CAED,CAAC,kBAAkB,GAAG;CACtB,EAAE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,OAAO,KAAK;;CAEvD,EAAE,IAAI;CACN,GAAG,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC;CAC7D,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK;;CAE5B,GAAG,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;CACzC,GAAG,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK;CACxC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;;CAEpD,GAAG,OAAO,IAAI,CAAC,cAAc,EAAE;CAC/B,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,OAAO,KAAK;CACf,EAAE;CACF,CAAC;;CAED,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;CAC5C,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;;CAE1C,EAAE,IAAI;CACN,GAAG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;;CAE7C,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;CACrB,IAAI,IAAI,YAAY,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAChD,IAAI,IAAI,YAAY,GAAG,IAAI;;CAE3B,IAAI,IAAI;CACR,KAAK,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;CACzC,KAAK,YAAY;CACjB,MAAM,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY;CAChE,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;CAChB,KAAK,YAAY,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,YAAY;CAC3D,IAAI;;CAEJ,IAAI,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC;CACnE,GAAG;;CAEH,GAAG,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;CAC3D,GAAG,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;CAChE,IAAI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;CAChC,GAAG;;CAEH,GAAG,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;CAC/B,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,IAAI,KAAK,YAAY,QAAQ,EAAE;CAClC,IAAI,MAAM,KAAK;CACf,GAAG;CACH,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;CAC7C,EAAE;CACF,CAAC;CACD;;CC/gBO,MAAM,QAAQ,CAAC;CACtB,CAAC,WAAW,GAAG;CACf,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE;CACzB,CAAC;;CAED,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE;CACrB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;CAC/B,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;CAC7B,EAAE;CACF,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;;CAEvC,EAAE,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;CACxC,CAAC;;CAED,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE;CACtB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;CAC1C,EAAE,IAAI,SAAS,EAAE;CACjB,GAAG,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;CAC5C,GAAG,IAAI,KAAK,GAAG,EAAE,EAAE;CACnB,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;CAC9B,GAAG;CACH,EAAE;CACF,CAAC;;CAED,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;CACnB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;CAC1C,EAAE,IAAI,SAAS,EAAE;CACjB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;CACnC,IAAI,IAAI;CACR,KAAK,QAAQ,CAAC,IAAI,CAAC;CACnB,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;CACpB,KAAK,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC;CAChE,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC;;CAED,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;CACvB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;CAC/C,GAAG,QAAQ,CAAC,IAAI,CAAC;CACjB,GAAG,WAAW,EAAE;CAChB,EAAE,CAAC,CAAC;CACJ,EAAE,OAAO,WAAW;CACpB,CAAC;;CAED,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;CACrB,CAAC;;CAED,CAAC,gBAAgB,CAAC,KAAK,EAAE;CACzB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;CAC1C,EAAE,OAAO,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;CACzC,CAAC;CACD;;CCrDO,SAAS,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE;CAChD,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;CAC7B,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1D,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CAC1C;;CAEO,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE;CAC1C,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;;CAE7B,CAAC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;CAC3B,EAAE,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;CAClC,GAAG;CACH,IAAI,MAAM,CAAC,GAAG,CAAC;CACf,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;CACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;CAC9B,KAAK;CACL,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;CAC3D,GAAG,CAAC,MAAM;CACV,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;CAC7B,GAAG;CACH,EAAE;CACF,CAAC;;CAED,CAAC,OAAO,MAAM;CACd;;CAEO,SAAS,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE;CACrC,CAAC,IAAI,OAAO;CACZ,CAAC,OAAO,SAAS,gBAAgB,CAAC,GAAG,IAAI,EAAE;CAC3C,EAAE,MAAM,KAAK,GAAG,MAAM;CACtB,GAAG,YAAY,CAAC,OAAO,CAAC;CACxB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;CAChB,EAAE,CAAC;CACH,EAAE,YAAY,CAAC,OAAO,CAAC;CACvB,EAAE,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;CACnC,CAAC,CAAC;CACF;;CAEO,SAAS,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;CACtC,CAAC,IAAI,QAAQ;CACb,CAAC,IAAI,OAAO;CACZ,CAAC,OAAO,UAAU,GAAG,IAAI,EAAE;CAC3B,EAAE,IAAI,CAAC,OAAO,EAAE;CAChB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;CAChB,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;CACvB,EAAE,CAAC,MAAM;CACT,GAAG,YAAY,CAAC,QAAQ,CAAC;CACzB,GAAG,QAAQ,GAAG,UAAU;CACxB,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,KAAK,EAAE;CACxC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;CACnB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;CAC1B,KAAK;CACL,IAAI,CAAC;CACL,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;CACjC,IAAI;CACJ,EAAE;CACF,CAAC,CAAC;CACF;;CAEO,SAAS,YAAY,CAAC,KAAK,EAAE;CACpC,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAO,KAAK;;CAEtD,CAAC,MAAM,UAAU,GAAG,4BAA4B;CAChD,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;CACrC;;CAEO,SAAS,YAAY,CAAC,GAAG,EAAE;CAClC,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,OAAO,EAAE;;CAE/C,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC1C,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG;CACtB,CAAC,OAAO,GAAG,CAAC,SAAS;CACrB;;CAEO,SAAS,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,EAAE,EAAE;CACjE,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,QAAQ;;CAE3C,CAAC,IAAI;CACL,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;CAChD,EAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,QAAQ;CACrD,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;CACjB,EAAE,OAAO,QAAQ;CACjB,CAAC;CACD;;CAEO,SAAS,YAAY,CAAC,OAAO,EAAE;CACtC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,KAAK;;CAE3B,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;CAC7C,CAAC;CACD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;CACf,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;CAChB,EAAE,IAAI,CAAC,MAAM;CACb,IAAI,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;CAChE,EAAE,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW;CAC1E;CACA;;CAEO,SAAS,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;CACvD,CAAC,IAAI,CAAC,OAAO,EAAE;;CAEf,CAAC,MAAM,cAAc,GAAG;CACxB,EAAE,QAAQ,EAAE,QAAQ;CACpB,EAAE,KAAK,EAAE,QAAQ;CACjB,EAAE,MAAM,EAAE,SAAS;CACnB,EAAE;;CAEF,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;CAC1D;;CAEO,SAAS,cAAc,GAAG;CACjC,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS;CACtC,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ;;CAEpC,CAAC,OAAO;CACR,EAAE,SAAS;CACX,EAAE,QAAQ;CACV,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY;CACxD,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa;CACxC,EAAE,gBAAgB,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CACtD,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;CAC1D,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;CAC5D,EAAE;CACF;;CAEO,SAAS,cAAc,CAAC,KAAK,EAAE;CACtC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,SAAS;;CAElC,CAAC,MAAM,CAAC,GAAG,IAAI;CACf,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;CAC1C,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;CAEpD,CAAC,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;CACxE;;CAEO,SAAS,KAAK,CAAC,EAAE,EAAE;CAC1B,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;CACzD;;CAEO,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,EAAE;CACpD,CAAC,IAAI;CACL,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;CACxB,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;CACjB,EAAE,OAAO,QAAQ;CACjB,CAAC;CACD;;CAEO,SAAS,WAAW,CAAC,MAAM,EAAE;CACpC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACrD;;CAEO,SAAS,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE;CACvE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,YAAY;;CAEvC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;CAC7B,CAAC,IAAI,OAAO,GAAG,GAAG;;CAElB,CAAC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;CACzB,EAAE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE;CACtE,GAAG,OAAO,YAAY;CACtB,EAAE;CACF,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;CACxB,CAAC;;CAED,CAAC,OAAO,OAAO;CACf;;CAEO,SAAS,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;CACpD,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG;;CAE9B,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;CAC7B,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;CAC3B,CAAC,IAAI,OAAO,GAAG,GAAG;;CAElB,CAAC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;CACzB,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;CAC7D,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;CACpB,EAAE;CACF,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;CACxB,CAAC;;CAED,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK;CACzB,CAAC,OAAO,GAAG;CACX;;CAEO,SAAS,SAAS,GAAG;CAC5B,CAAC,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;CACxE;;CAEO,SAAS,QAAQ,GAAG;CAC3B,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,KAAK;;CAE/B,CAAC;CACD,EAAE,gEAAgE,CAAC,IAAI;CACvE,GAAG,SAAS,CAAC;CACb,GAAG,IAAI,MAAM,CAAC,UAAU,IAAI;CAC5B;CACA;;CAEO,SAAS,mBAAmB,GAAG;CACtC,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CAChC;;CAEO,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;CACtD,CAAC,MAAM,OAAO,GAAG,EAAE;;CAEnB,CAAC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;CAC7B,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;CACpB,EAAE;CACF,CAAC;;CAED,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;CACzB,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC1E,CAAC;;CAED,CAAC,OAAO,IAAI;CACZ;;;;;;;;;;;;;;;;;;;;;;;;;;CC1NO,MAAM,UAAU,CAAC;CACxB,CAAC,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;CAC3B,EAAE,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE;CACtB,EAAE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;CACxB,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;CACtC,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM;;CAEpC,EAAE,IAAI,CAAC,OAAO,GAAG;CACjB,GAAG,SAAS,EAAE,IAAI;CAClB,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ;CACrC,GAAG,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;CACnC,GAAG,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO;CAC9C,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;CACjC,GAAG,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,SAAS;CAClD,GAAG,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,SAAS;CACxD,GAAG,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;CAC5C,GAAG,QAAQ,EAAE,KAAK;CAClB,GAAG,YAAY,EAAE,IAAI;CACrB,GAAG,YAAY,EAAE,EAAE;CACnB,GAAG,GAAG,OAAO;CACb,GAAG;;CAEH,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI;CAC7B,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;CACtB,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK;;CAExB,EAAE,IAAI,CAAC,KAAK,GAAG;CACf,GAAG,MAAM,EAAE,KAAK;CAChB,GAAG,SAAS,EAAE,KAAK;CACnB,GAAG,YAAY,EAAE,KAAK;CACtB,GAAG,KAAK,EAAE,EAAE;CACZ,GAAG,OAAO,EAAE,EAAE;CACd,GAAG,KAAK,EAAE,EAAE;CACZ,GAAG,WAAW,EAAE,EAAE;CAClB,GAAG,MAAM,EAAE,EAAE;CACb,GAAG;;CAEH,EAAE,IAAI,CAAC,YAAY,EAAE;CACrB,CAAC;;CAED,CAAC,KAAK,CAAC,SAAS,EAAE;CAClB,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI;;CAEjD,EAAE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;CACrC,GAAG,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;CAChD,EAAE;;CAEF,EAAE,IAAI,CAAC,SAAS,EAAE;CAClB,GAAG,SAAS,GAAG,QAAQ,CAAC,IAAI;CAC5B,EAAE;;CAEF,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS;CAC5B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;CAC/B,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;CAE1C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,aAAa,EAAE;CACtB,EAAE,IAAI,CAAC,OAAO,EAAE;;CAEhB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;CAC7B,GAAG,IAAI,CAAC,IAAI,EAAE;CACd,EAAE;;CAEF,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CAC5D,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;CACvC,EAAE;CACF,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;CACtC,EAAE;CACF,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,SAAS,GAAG;CACb,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI;;CAE1B,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,OAAO,EAAE;CAC5C,GAAG,IAAI,CAAC,iBAAiB,EAAE;CAC3B;CACA,GAAG,UAAU,CAAC,MAAM;CACpB,IAAI,IAAI,CAAC,iBAAiB,EAAE;CAC5B,IAAI,IAAI,CAAC,YAAY,EAAE;CACvB,IAAI,qBAAqB,CAAC,MAAM;CAChC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;CAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;CAC7C,KAAK;CACL,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;CAC/B,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;CAChD,KAAK;CACL,IAAI,CAAC,CAAC;CACN,GAAG,CAAC,EAAE,GAAG,CAAC;CACV,EAAE,CAAC,MAAM;CACT,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,GAAG,qBAAqB,CAAC,MAAM;CAC/B,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;CAC3B,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;CAC5C,IAAI;CACJ,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;CAC9B,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;CAC/C,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC;;CAED,CAAC,iBAAiB,GAAG;CACrB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI;;CAE7B;CACA,EAAE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACtD,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,yBAAyB;CAC5D,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;;CAEjD;CACA,EAAE,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACrD,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACtF,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG;AAClC;AACA,EAAE,CAAC;CACH,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;;CAEhD,EAAE,qBAAqB,CAAC,MAAM;CAC9B,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;CAC7C,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;CAC5C,EAAE,CAAC,CAAC;CACJ,CAAC;;CAED,CAAC,iBAAiB,GAAG;CACrB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK;CAC9B,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;CAC/B,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI;CAC7B,EAAE;CACF,CAAC;;CAED,CAAC,UAAU,GAAG;CACd,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;CAC7C,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;CAC5B,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;CAChD,EAAE;;CAEF,EAAE,UAAU,CAAC,MAAM;CACnB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;CAC5B,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;CAC1D,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;CAC/D,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;CAC5B,GAAG;CACH,GAAG,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;CAChE,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;CACrE,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI;CAC/B,GAAG;CACH,GAAG,IAAI,CAAC,UAAU,EAAE;CACpB,EAAE,CAAC,EAAE,GAAG,CAAC;CACT,CAAC;;CAED,CAAC,MAAM,cAAc,GAAG;CACxB,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;;CAE/B,EAAE,IAAI,CAAC,UAAU,EAAE;;CAEnB,EAAE,IAAI;CACN,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI;CACjC,GAAG,IAAI,CAAC,mBAAmB,EAAE;;CAE7B,GAAG,MAAM,OAAO,GAAG;CACnB,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,UAAU;CACzC,IAAI,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;CAC/B,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;CAC3B,IAAI,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;CAClC,IAAI,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;CACvC,IAAI;;CAEJ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;CACnC,IAAI,IAAI,CAAC,UAAU,CAAC,qCAAqC,CAAC;CAC1D,IAAI;CACJ,GAAG;;CAEH,GAAG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC;;CAEjE,GAAG,IAAI,CAAC,mBAAmB,EAAE;CAC7B,GAAG,IAAI,CAAC,UAAU,EAAE;;CAEpB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE;CAChD,IAAI,MAAM,EAAE,IAAI;CAChB,IAAI,QAAQ,EAAE,QAAQ;CACtB,IAAI,CAAC;CACL,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,IAAI,CAAC,UAAU,CAAC,8CAA8C,CAAC;CAClE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;CACpE,EAAE,CAAC,SAAS;CACZ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;CAClC,GAAG,IAAI,CAAC,mBAAmB,EAAE;CAC7B,EAAE;CACF,CAAC;;CAED,CAAC,kBAAkB,CAAC,SAAS,EAAE;CAC/B,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK;CACtC,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE;CACF,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;;CAEtB,EAAE,IAAI,CAAC,SAAS,EAAE;CAClB,EAAE,IAAI,CAAC,UAAU,EAAE;;CAEnB,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;CAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,EAAE;;CAEF,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI;CACvB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;CACtB,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CAC9D,CAAC;;CAED,CAAC,OAAO,GAAG,CAAC;CACZ,CAAC,SAAS,GAAG,CAAC;;CAEd,CAAC,OAAO,GAAG;CACX,EAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;CACrE,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB;CACA,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;CAC5C,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;CAC9C,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;CACtD,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;;CAEzB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;CAC1D,GAAG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACvD,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,yBAAyB;CAC7D,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;;CAElD,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;CAClE,EAAE;;CAEF,EAAE,MAAM,SAAS;CACjB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK;CAChC,MAAM;CACN,MAAM,gBAAgB;CACtB,EAAE,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,EAAE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACnD,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;CAC3D,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW;CACrC,GAAG,iBAAiB;CACpB,GAAG,IAAI,CAAC,OAAO,CAAC;CAChB,GAAG;CACH,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW;CACrC,GAAG,YAAY;CACf,GAAG,IAAI,CAAC,OAAO,CAAC;CAChB,GAAG;CACH,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;CAC7E,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;;CAEpD,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;CAC9C,EAAE,IAAI,CAAC,kBAAkB,EAAE;;CAE3B,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAAC;CACvE,EAAE,IAAI,UAAU,EAAE;CAClB,GAAG,UAAU,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC;CAC5C,EAAE;CACF,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB,EAAE,OAAO;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,EAAE,IAAI,CAAC,EAAE,CAAC;AACnD;AACA;AACA,mCAAmC,EAAE,IAAI,CAAC,EAAE,CAAC;AAC7C;AACA;AACA,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC1C;AACA;AACA;AACA,2CAA2C,EAAE,IAAI,CAAC,EAAE,CAAC;AACrD;AACA,qCAAqC,EAAE,IAAI,CAAC,EAAE,CAAC;AAC/C;AACA;AACA;AACA,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACpC;AACA;AACA;AACA;AACA,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,GAAG,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;CACL,CAAC;;CAED,CAAC,kBAAkB,GAAG;CACtB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY;;CAEjC,EAAE;CACF,IAAI,aAAa,CAAC,uBAAuB;CACzC,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;;CAE9C,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;CACpD,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK;CACzC,GAAG,CAAC,CAAC,cAAc,EAAE;CACrB,GAAG,IAAI,CAAC,cAAc,EAAE;CACxB,EAAE,CAAC,CAAC;;CAEJ,EAAE;CACF,IAAI,aAAa,CAAC,qBAAqB;CACvC,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CACrC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;CACrC,GAAG,CAAC,CAAC;;CAEL,EAAE;CACF,IAAI,aAAa,CAAC,0BAA0B;CAC5C,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CACrC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;CACvC,GAAG,CAAC,CAAC;;CAEL,EAAE,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK;CAC9B,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;CAC3B,IAAI,IAAI,CAAC,UAAU,EAAE;CACrB,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;CACzD,GAAG;CACH,EAAE,CAAC;CACH,EAAE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;CACpD,CAAC;;CAED,CAAC,mBAAmB,GAAG;CACvB,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,sBAAsB,CAAC;CAC5E,GAAG,IAAI,SAAS,EAAE;CAClB,IAAI,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;CACvC,OAAO;CACP,OAAO,eAAe;CACtB,IAAI,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY;CAChD,GAAG;CACH,EAAE;CACF,CAAC;;CAED,CAAC,UAAU,CAAC,OAAO,EAAE;CACrB,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAAC;CAC1E,GAAG,IAAI,YAAY,EAAE;CACrB,IAAI,YAAY,CAAC,WAAW,GAAG,OAAO;CACtC,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;CACtC,GAAG;CACH,EAAE;CACF,CAAC;;CAED,CAAC,UAAU,GAAG;CACd,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAAC;CAC1E,GAAG,IAAI,YAAY,EAAE;CACrB,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;CACzC,GAAG;CACH,EAAE;CACF,CAAC;;CAED,CAAC,mBAAmB,GAAG;CACvB,EAAE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACpD,EAAE,YAAY,CAAC,SAAS,GAAG,+BAA+B;CAC1D,EAAE,YAAY,CAAC,SAAS,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;;CAEL,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;;CAEzC,EAAE,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,yBAAyB,CAAC;CACxE,EAAE,MAAM,iBAAiB,GAAG,MAAM;CAClC,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE;CAChC,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;CACpC,IAAI,UAAU,CAAC,MAAM;CACrB,KAAK,IAAI,YAAY,CAAC,UAAU,EAAE;CAClC,MAAM,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC;CACvD,KAAK;CACL,IAAI,CAAC,EAAE,GAAG,CAAC;CACX,GAAG;CACH,EAAE,CAAC;;CAEH,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC;;CAEvD,EAAE,UAAU,CAAC,iBAAiB,EAAE,IAAI,CAAC;CACrC,CAAC;;CAED,CAAC,UAAU,GAAG;CACd,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;CACvB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;CACzB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;CACvB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;CACxB,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO;CAC1D,IAAI,WAAW;CACf,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;CAChC,IAAI;CACJ,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO;CACpE,IAAI,WAAW;CACf,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;CAChC,IAAI;CACJ,EAAE;CACF,CAAC;;CAED,CAAC,SAAS,GAAG;CACb,EAAE,IAAI,CAAC,SAAS,EAAE;CAClB,CAAC;;CAED,CAAC,UAAU,GAAG;CACd,EAAE,IAAI,CAAC,UAAU,EAAE;CACnB,CAAC;CACD;;CC7bO,MAAM,YAAY,SAAS,UAAU,CAAC;CAC7C,IAAI,WAAW,CAAC,OAAO,EAAE;CACzB,QAAQ,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;CAC7C,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;CAChC,IAAI;;CAEJ,IAAI,MAAM,GAAG;CACb,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACpD,QAAQ,MAAM,CAAC,SAAS,GAAG,CAAC,6CAA6C,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CACjI,QAAQ,MAAM,CAAC,SAAS,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;;CAEL,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;CACvC,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;CAClE,QAAQ;;CAER,QAAQ,OAAO,MAAM;CACrB,IAAI;;CAEJ,IAAI,YAAY,GAAG;CACnB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC;CAC1E,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC;CAClF,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC;;CAE9E;CACA,QAAQ,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CACtD,YAAY,CAAC,CAAC,eAAe,EAAE;CAC/B,YAAY,CAAC,CAAC,cAAc,EAAE;CAC9B,YAAY,IAAI,CAAC,QAAQ,EAAE;CAC3B,QAAQ,CAAC,CAAC;;CAEV,QAAQ,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CACpD,YAAY,CAAC,CAAC,eAAe,EAAE;CAC/B,YAAY,CAAC,CAAC,cAAc,EAAE;CAC9B,YAAY,IAAI,CAAC,OAAO,EAAE;CAC1B,QAAQ,CAAC,CAAC;;CAEV;CACA,QAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CAChD;CACA,YAAY,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;CAC3D,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE;CAC3D,gBAAgB,OAAO;CACvB,YAAY;CACZ;CACA,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;CACnC,gBAAgB,IAAI,CAAC,SAAS,EAAE;CAChC,YAAY;CACZ,QAAQ,CAAC,CAAC;;CAEV,QAAQ,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CACpD,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;CAC/D,gBAAgB,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB;CAC3D,YAAY;CACZ,QAAQ,CAAC,CAAC;;CAEV,QAAQ,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CACpD,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;CACnC,gBAAgB,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,eAAe;CACxD,YAAY;CACZ,QAAQ,CAAC,CAAC;CACV,IAAI;;CAEJ,IAAI,QAAQ,GAAG;CACf,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;CAC/B,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;CAC/C,IAAI;;CAEJ,IAAI,OAAO,GAAG;CACd,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;CAChC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;CAClD,IAAI;;CAEJ,IAAI,KAAK,CAAC,SAAS,EAAE;CACrB,QAAQ,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;CAC9B,IAAI;;CAEJ,IAAI,UAAU,CAAC,IAAI,EAAE;CACrB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC;CACpE,QAAQ,IAAI,MAAM,EAAE;CACpB,YAAY,MAAM,CAAC,WAAW,GAAG,IAAI;CACrC,QAAQ;CACR,IAAI;;CAEJ,IAAI,cAAc,CAAC,QAAQ,EAAE;CAC7B,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ;CACxC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;CAC1B,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO;CACnE,gBAAgB,kBAAkB;CAClC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC;CACrC,aAAa;CACb,QAAQ;CACR,IAAI;CACJ;;CC/GO,MAAM,YAAY,SAAS,UAAU,CAAC;CAC7C,CAAC,WAAW,CAAC,OAAO,EAAE;CACtB,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;CACvC,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC9C,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,6CAA6C,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACzF,EAAE,MAAM,CAAC,SAAS,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;;CAEL,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;CACjC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;CACzD,EAAE;;CAEF,EAAE,OAAO,MAAM;CACf,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC;;CAElE,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK;CACzC,GAAG,CAAC,CAAC,cAAc,EAAE;CACrB,GAAG,IAAI,CAAC,cAAc,EAAE;CACxB,EAAE,CAAC,CAAC;;CAEJ,EAAE,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CAC7E,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;CACpC,EAAE,CAAC,CAAC;;CAEJ,EAAE;CACF,IAAI,aAAa,CAAC,0BAA0B;CAC5C,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CACrC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;CACvC,GAAG,CAAC,CAAC;;CAEL,EAAE,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CAC7E,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;CACpC,EAAE,CAAC,CAAC;CACJ,CAAC;;CAED,CAAC,SAAS,GAAG;CACb,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC;CACzE,EAAE,IAAI,QAAQ,EAAE;CAChB,GAAG,QAAQ,CAAC,KAAK,EAAE;CACnB,EAAE;CACF,CAAC;;CAED,CAAC,UAAU,GAAG;CACd;CACA,CAAC;;CAED,CAAC,mBAAmB,GAAG;CACvB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC;CACvE,EAAE,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS;;CAE1C,EAAE,MAAM,CAAC,SAAS,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;;CAEL,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC;CAC9D,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CAC3C,GAAG,MAAM,CAAC,SAAS,GAAG,eAAe;CACrC,GAAG,IAAI,CAAC,aAAa,EAAE;CACvB,GAAG,IAAI,CAAC,UAAU,EAAE;CACpB,EAAE,CAAC,CAAC;CACJ,CAAC;;CAED,CAAC,UAAU,CAAC,OAAO,EAAE;CACrB,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC;CACpE,EAAE,IAAI,YAAY,EAAE;CACpB,GAAG,YAAY,CAAC,WAAW,GAAG,OAAO;CACrC,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;;CAEvC,GAAG,UAAU,CAAC,MAAM;CACpB,IAAI,IAAI,YAAY,EAAE;CACtB,KAAK,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;CACxC,IAAI;CACJ,GAAG,CAAC,EAAE,IAAI,CAAC;CACX,EAAE;CACF,CAAC;;CAED,CAAC,mBAAmB,GAAG;CACvB,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC;CACtE,EAAE,IAAI,SAAS,EAAE;CACjB,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;CACtC,MAAM;CACN,MAAM,eAAe;CACrB,GAAG,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY;CAC/C,EAAE;CACF,CAAC;;CAED,CAAC,WAAW,CAAC,KAAK,EAAE;CACpB,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC;CACxD,EAAE,IAAI,YAAY,EAAE;CACpB,GAAG,YAAY,CAAC,WAAW,GAAG,KAAK;CACnC,EAAE;CACF,CAAC;;CAED,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE;CACpC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;CAChE,EAAE,IAAI,KAAK,EAAE;CACb,GAAG,KAAK,CAAC,WAAW,GAAG,WAAW;CAClC,EAAE;CACF,CAAC;CACD;;CChJA;CACA;CACA;CACO,MAAM,cAAc,CAAC;CAC5B,CAAC,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;CAC3B,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;CAC5B,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK;CACrB,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC;CACtB,EAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI;;CAElC;CACA,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE;CACzB,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;;CAErB;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE;CACxB,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE;;CAE3B;CACA,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE;CAC9B,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE;;CAE1B;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS;CAC/C,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE;CAC9C,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,kBAAkB;;CAEpE;CACA,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI;;CAEhD;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK;CAChD,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,KAAK,KAAK;;CAE1D;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;CAC7B,CAAC;;CAED;CACA;CACA;CACA,CAAC,SAAS,CAAC,QAAQ,EAAE;CACrB,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;CAC/B,EAAE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;CAC/C,CAAC;;CAED;CACA;CACA;CACA,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE;CAC3B,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC7D,CAAC;;CAED;CACA;CACA;CACA,CAAC,OAAO,CAAC,IAAI,EAAE;CACf,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW;CACvC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;CACzB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;CACjE,CAAC;;CAED;CACA;CACA;CACA,CAAC,OAAO,CAAC,MAAM,EAAE;CACjB,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM;CACtB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC;CACxC,CAAC;;CAED;CACA;CACA;CACA,CAAC,qBAAqB,CAAC,cAAc,EAAE;CACvC,EAAE,IAAI,CAAC,oBAAoB,GAAG,cAAc;CAC5C,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,cAAc,EAAE,CAAC;CACxD,CAAC;;CAED;CACA;CACA;CACA,CAAC,gBAAgB,CAAC,aAAa,EAAE;CACjC,EAAE,IAAI,CAAC,aAAa,GAAG,aAAa;CACpC,EAAE,IAAI,CAAC,kBAAkB,EAAE;CAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE,CAAC;CACxD,CAAC;;CAED;CACA;CACA;CACA,CAAC,eAAe,CAAC,YAAY,EAAE;CAC/B,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;CAC1C,EAAE,IAAI,CAAC,kBAAkB,EAAE;CAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE,CAAC;CACrD,CAAC;;CAED;CACA;CACA;CACA,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,EAAE;CACvC,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,QAAQ;CAC1C,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;CAC9D,CAAC;;CAED;CACA;CACA;CACA,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,EAAE;CACrC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;CACtC,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE;CACrC,EAAE;CACF,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;CAE7C;CACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC;CACtE,EAAE,IAAI,IAAI,EAAE;CACZ,GAAG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO;CACrC,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS;CAC3C,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;CACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC;CACxC,IAAI,IAAI,CAAC,kBAAkB,EAAE;CAC7B,GAAG;CACH,EAAE;;CAEF,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;CAC3D,CAAC;;CAED;CACA;CACA;CACA,CAAC,UAAU,CAAC,cAAc,EAAE;CAC5B,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC;CACtE,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;CAC/B,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;CAClB,GAAG,IAAI,CAAC,kBAAkB,EAAE;CAC5B,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,cAAc,EAAE,CAAC;CACvD,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA,CAAC,kBAAkB,GAAG;CACtB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM;CAC9C,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;CACpC,GAAG;CACH,GAAG;CACH,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;CAChE,CAAC;;CAED;CACA;CACA;CACA,CAAC,eAAe,CAAC,QAAQ,EAAE;CAC3B,EAAE,IAAI,CAAC,YAAY,GAAG,QAAQ;CAC9B,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CAAC;CAClD,CAAC;;CAED;CACA;CACA;CACA,CAAC,kBAAkB,CAAC,KAAK,EAAE;CAC3B,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK;CAC9B,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC;CAC7C,CAAC;;CAED;CACA;CACA;CACA,CAAC,qBAAqB,CAAC,KAAK,EAAE;CAC9B,EAAE,IAAI,CAAC,kBAAkB,GAAG,KAAK;CACjC,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC;CAChD,CAAC;;CAED;CACA;CACA;CACA,CAAC,iBAAiB,CAAC,KAAK,EAAE;CAC1B,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK;CAC7B,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC;CAC5C,CAAC;;CAED;CACA;CACA;CACA,CAAC,qBAAqB,GAAG;CACzB,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,oBAAoB,CAAC;CAC3E,CAAC;;CAED;CACA;CACA;CACA,CAAC,iBAAiB,GAAG;CACrB,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE;CACvD,CAAC;;CAED;CACA;CACA;CACA,CAAC,uBAAuB,GAAG;CAC3B,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;CAC7B,GAAG,OAAO,IAAI,CAAC,YAAY;CAC3B,EAAE;CACF,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;CAClD,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM;CACjC,GAAG,CAAC,OAAO;CACX,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;CAC/C,KAAK,OAAO,CAAC,WAAW;CACxB,KAAK,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;CACtD,GAAG;CACH,CAAC;;CAED;CACA;CACA;CACA,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM;CAC3B,EAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI;CAClC,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE;CAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;CAC3B,CAAC;CACD;;CC7NA;CACA;CACA;CACO,MAAM,iBAAiB,CAAC;CAC/B,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;CAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;CACpB,EAAE,IAAI,CAAC,OAAO,GAAG;CACjB,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,cAAc;CAC/C,GAAG,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,SAAS;CAClD,GAAG,GAAG,OAAO;CACb,GAAG;CACH,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,CAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC9C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;;CAE3F,EAAE,IAAI,CAAC,cAAc,EAAE;CACvB,EAAE,IAAI,CAAC,aAAa,EAAE;;CAEtB;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;CAC3D,GAAG,IAAI,IAAI,KAAK,YAAY,EAAE;CAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;CACtB,GAAG;CACH,GAAG,IAAI,IAAI,KAAK,mBAAmB,EAAE;CACrC,IAAI,IAAI,CAAC,YAAY,EAAE;CACvB,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,OAAO,IAAI,CAAC,OAAO;CACrB,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE,MAAM,SAAS;CACjB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG;CAC5B,MAAM,CAAC,uCAAuC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO;CAClH,MAAM,EAAE;;CAER,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG;AAC3B,yFAAyF,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACrH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,SAAS;AACf;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB,EAAE,IAAI,CAAC;CACP,IAAI,aAAa,CAAC,yBAAyB;CAC3C,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;CAC1C,GAAG,CAAC,CAAC;CACL,CAAC;;CAED,CAAC,WAAW,GAAG;CACf,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CAC7C,GAAG;CACH,GAAG;CACH,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CAC9C,GAAG;CACH,GAAG;;CAEH,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;CACzB,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;CAClC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;CACnC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC;CACxD,EAAE,CAAC,MAAM;CACT,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;CAClC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;CACnC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,yBAAyB,CAAC;CAC3D,EAAE;CACF,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CAClD,GAAG;CACH,GAAG;CACH,EAAE,IAAI,aAAa,EAAE;CACrB,GAAG,aAAa,CAAC,MAAM,EAAE;CACzB,EAAE;;CAEF,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;CACxD,GAAG,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;CAC/C,GAAG,KAAK,CAAC,SAAS,GAAG,0BAA0B;CAC/C,GAAG,KAAK,CAAC,WAAW;CACpB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW;CAC9D,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;CAC3E,EAAE;CACF,CAAC;;CAED,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;CACvC,EAAE;CACF,CAAC;;CAED,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;CACtC,EAAE;CACF,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;CAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,EAAE;CACF,CAAC;CACD;;CCtHA;CACA;CACA;CACO,MAAM,cAAc,CAAC;CAC5B,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;CAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;CACpB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO;CACxB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,CAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC9C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,eAAe;;CAE1C,EAAE,IAAI,CAAC,cAAc,EAAE;CACvB,EAAE,IAAI,CAAC,aAAa,EAAE;;CAEtB;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;CACrD,GAAG,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,mBAAmB,EAAE;CAC9D,IAAI,IAAI,CAAC,gBAAgB,EAAE;CAC3B,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,OAAO,IAAI,CAAC,OAAO;CACrB,CAAC;;CAED,CAAC,QAAQ,GAAG;CACZ,EAAE,MAAM,IAAI,GAAG;CACf,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE;CAC3D,GAAG;CACH,IAAI,EAAE,EAAE,UAAU;CAClB,IAAI,KAAK,EAAE,UAAU;CACrB,IAAI,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE;CACjC,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;CACjC,IAAI;CACJ,GAAG;;CAEH,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;CAC7B,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;CACtE,EAAE;;CAEF,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;CAClC,GAAG,IAAI,CAAC,IAAI,CAAC;CACb,IAAI,EAAE,EAAE,WAAW;CACnB,IAAI,KAAK,EAAE,WAAW;CACtB,IAAI,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE;CAClC,IAAI,CAAC;CACL,EAAE;;CAEF,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;CAC9B,EAAE,MAAM,QAAQ,GAAG;CACnB,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK;CACjB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,GAAG,CAAC,EAAE;CACtD,IAAI,MAAM,SAAS;CACnB,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,GAAG;CAC9B,QAAQ,CAAC,kCAAkC,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO;CACrF,QAAQ,EAAE;;CAEV,IAAI,OAAO;AACX,qCAAqC,EAAE,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;AACrF,sCAAsC,EAAE,GAAG,CAAC,IAAI,CAAC;AACjD,uCAAuC,EAAE,GAAG,CAAC,KAAK,CAAC;AACnD,KAAK,EAAE,SAAS;AAChB;AACA,GAAG,CAAC;CACJ,GAAG,CAAC;CACJ,IAAI,IAAI,CAAC,EAAE,CAAC;;CAEZ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,QAAQ;CACnC,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CAChD,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;CACrD,GAAG,IAAI,GAAG,EAAE;CACZ,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG;CACjC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;CAC7B,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC;;CAED,CAAC,gBAAgB,GAAG;CACpB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;CAClE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;CACxB,GAAG,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW;CAC9D,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC;;CAE3C;CACA,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE;CACvC,IAAI,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC;CACnE,IAAI,IAAI,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE;;CAE7C,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE;CACpC,KAAK,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;CACjD,KAAK,KAAK,CAAC,SAAS,GAAG,qBAAqB;CAC5C,KAAK,KAAK,CAAC,WAAW;CACtB,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW;CAChE,KAAK,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;CAC3B,IAAI;CACJ,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,OAAO,CAAC,mEAAmE,CAAC;CAC9E,CAAC;;CAED,CAAC,gBAAgB,GAAG;CACpB,EAAE,OAAO,CAAC,2DAA2D,CAAC;CACtE,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,OAAO,CAAC,+DAA+D,CAAC;CAC1E,CAAC;;CAED,CAAC,iBAAiB,GAAG;CACrB,EAAE,OAAO,CAAC,gEAAgE,CAAC;CAC3E,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;CAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,EAAE;CACF,CAAC;CACD;;CCrIA;CACA;CACA;;CAGO,MAAM,cAAc,CAAC;CAC5B,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;CAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;CACpB,EAAE,IAAI,CAAC,OAAO,GAAG;CACjB,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,cAAc;CAC/C,GAAG,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM;CACjC,GAAG,GAAG,OAAO;CACb,GAAG;CACH,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;CAC5B,EAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI;CAClC,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE;CACxB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,CAAC;;CAED;CACA;CACA;CACA,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE;CAC/B,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,SAAS;CACrC,CAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC9C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;CAEjH,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG;AAC3B;AACA;AACA;AACA;AACA,EAAE,CAAC;;CAEH;CACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;CACpE,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC;CACzE,EAAE,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;;CAExD;CACA,EAAE,IAAI,CAAC,kBAAkB,EAAE;;CAE3B;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;CACrD,GAAG,IAAI,IAAI,KAAK,YAAY,EAAE;CAC9B,IAAI,IAAI,CAAC,kBAAkB,EAAE;CAC7B,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,OAAO,IAAI,CAAC,OAAO;CACrB,CAAC;;CAED,CAAC,kBAAkB,GAAG;CACtB,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,wBAAwB,CAAC;;CAE7E;CACA,EAAE,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;CACtE,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;CACtC,EAAE;;CAEF;CACA,EAAE,cAAc,CAAC,SAAS,GAAG,EAAE;;CAE/B;CACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;CAC7D,EAAE,IAAI,SAAS,EAAE;CACjB,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;CACtE,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;CACjE,EAAE,CAAC,MAAM;CACT,GAAG,cAAc,CAAC,SAAS,GAAG,CAAC,wDAAwD,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;CACvH,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;CACvC;CACA,GAAG,qBAAqB,CAAC,MAAM;CAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;CACtC,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;CACxC;CACA,GAAG,UAAU,CAAC,MAAM;CACpB,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;CACtB,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;CACxC,IAAI;CACJ,GAAG,CAAC,EAAE,GAAG,CAAC;CACV,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA,CAAC,SAAS,CAAC,aAAa,EAAE;CAC1B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC;CACtE,EAAE,IAAI,MAAM,EAAE;CACd,GAAG,MAAM,CAAC,SAAS,GAAG,aAAa;CACnC,EAAE;CACF,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;CAChC,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;CACtE,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;CACtC,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;CAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,EAAE;CACF,CAAC;CACD;;CCjIA;CACA;CACA;CACO,MAAM,aAAa,CAAC;CAC3B,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;CAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;CACpB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO;CACxB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,CAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC9C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,yCAAyC;;CAEpE,EAAE,IAAI,CAAC,cAAc,EAAE;;CAEvB;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;CACrD,GAAG,IAAI,IAAI,KAAK,iBAAiB,EAAE;CACnC,IAAI,IAAI,CAAC,oBAAoB,EAAE;CAC/B,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,OAAO,IAAI,CAAC,OAAO;CACrB,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;;CAE/C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtC,KAAK,EAAE,WAAW;AAClB;AACA;;AAEA;AACA;AACA;AACA,EAAE,CAAC;;CAEH,EAAE,IAAI,CAAC,oBAAoB,EAAE;CAC7B,EAAE,IAAI,CAAC,aAAa,EAAE;CACtB,CAAC;;CAED,CAAC,oBAAoB,GAAG;CACxB,EAAE,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CACvD,GAAG;CACH,GAAG;CACH,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc;;CAElD,EAAE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;CACnC,GAAG,kBAAkB,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE;CAC1D,GAAG;CACH,EAAE;;CAEF,EAAE,kBAAkB,CAAC,SAAS,GAAG;CACjC,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;CACjD,IAAI,IAAI,CAAC,EAAE,CAAC;;CAEZ;CACA,EAAE,IAAI,CAAC,sBAAsB,EAAE;CAC/B,CAAC;;CAED,CAAC,oBAAoB,CAAC,IAAI,EAAE;CAC5B,EAAE,MAAM,QAAQ;CAChB,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG;CACnC,MAAM,CAAC;AACP,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5F,SAAS;CACT,MAAM,EAAE;;CAER,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;;CAEjE,EAAE,OAAO;AACT,4DAA4D,EAAE,IAAI,CAAC,EAAE,CAAC;AACtE,IAAI;AACJ,KAAK,IAAI,CAAC;AACV,QAAQ;AACR;AACA,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;AACtD;AACA,IAAI;AACJ,QAAQ;AACR;AACA;AACA,KAAK,EAAE,QAAQ;AACf,2CAA2C,EAAE,IAAI,CAAC,KAAK,CAAC;AACxD,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,2CAA2C,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AAC5H;AACA,6CAA6C,EAAE,OAAO,CAAC;AACvD;AACA;AACA;AACA;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,kBAAkB,GAAG;CACtB,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW;CACxC,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;CACxC,GAAG,OAAO;AACV;AACA;AACA;AACA,GAAG,CAAC;CACJ,EAAE;;CAEF,EAAE,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;CAClD,EAAE,MAAM,WAAW,GAAG;CACtB,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;CACd,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;CACvB,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;CACjE,KAAK,OAAO,CAAC,yDAAyD,EAAE,MAAM,CAAC,oCAAoC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;CACjI,IAAI;CACJ,IAAI,OAAO,CAAC,uEAAuE,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;CAC7K,GAAG,CAAC;CACJ,IAAI,IAAI,CAAC,EAAE,CAAC;;CAEZ,EAAE,OAAO,CAAC,gEAAgE,EAAE,WAAW,CAAC,MAAM,CAAC;CAC/F,CAAC;;CAED,CAAC,iBAAiB,GAAG;CACrB,EAAE,OAAO;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,WAAW,CAAC,UAAU,EAAE;CACzB,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;CAC5B,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;CACnC,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;CAC1C,GAAG,KAAK,EAAE,OAAO;CACjB,GAAG,GAAG,EAAE,SAAS;CACjB,GAAG,IAAI,EAAE,SAAS;CAClB,GAAG,CAAC;CACJ,CAAC;;CAED,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE;CAChC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;CACtB,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,OAAO,IAAI;CAC3C,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;CACpD,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB;CACA,EAAE,IAAI,CAAC;CACP,IAAI,aAAa,CAAC,sBAAsB;CACxC,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;CAC7B,GAAG,CAAC,CAAC;;CAEL,EAAE,IAAI,CAAC,sBAAsB,EAAE;CAC/B,CAAC;;CAED,CAAC,sBAAsB,GAAG;CAC1B,EAAE,IAAI,CAAC;CACP,IAAI,gBAAgB,CAAC,2BAA2B;CAChD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK;CACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACzC,KAAK,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;CACjD,KAAK,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI;CACzD,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK;CACtB,MAAM;CACN,KAAK,IAAI,aAAa,IAAI,aAAa,CAAC,GAAG,EAAE;CAC7C,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;CAC9C,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;CAC/C,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC;CAClD,KAAK;CACL,IAAI,CAAC,CAAC;CACN,GAAG,CAAC,CAAC;CACL,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;CAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,EAAE;CACF,CAAC;CACD;;CCrMA;CACA;CACA;CACO,MAAM,QAAQ,CAAC;CACtB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;CAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;CACpB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO;CACxB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,CAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC9C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,oCAAoC;;CAE/D,EAAE,IAAI,CAAC,cAAc,EAAE;;CAEvB;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;CAC3D,GAAG;CACH,IAAI,IAAI,KAAK,cAAc;CAC3B,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC;CACvC,KAAK;CACL,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;CACrC,IAAI,IAAI,CAAC,eAAe,EAAE;CAC1B,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,OAAO,IAAI,CAAC,OAAO;CACrB,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE;CACzD,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;;CAEjD,EAAE,MAAM,YAAY;CACpB,GAAG,QAAQ,CAAC,MAAM,KAAK;CACvB,MAAM,IAAI,CAAC,iBAAiB;CAC5B,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;CAE9D,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC;;CAEjE,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,UAAU;AACjB,wCAAwC,EAAE,YAAY,EAAE,KAAK,IAAI,gBAAgB,CAAC;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,EAAE,YAAY;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;;CAEH,EAAE,IAAI,CAAC,aAAa,EAAE;CACtB,EAAE,IAAI,CAAC,eAAe,EAAE;CACxB,CAAC;;CAED,CAAC,iBAAiB,GAAG;CACrB,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE;CAC9C,EAAE,OAAO;AACT;AACA,8CAA8C,EAAE,UAAU,CAAC;AAC3D;AACA;AACA;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,cAAc,CAAC,OAAO,EAAE;CACzB,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;CAC7B,EAAE,MAAM,YAAY,GAAG;CACvB,KAAK;CACL,KAAK,4BAA4B;CACjC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC;;CAE5D,EAAE,IAAI,KAAK,EAAE;CACb,GAAG,OAAO;AACV,kCAAkC,EAAE,YAAY,CAAC;AACjD;AACA,6CAA6C,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3F;AACA,yCAAyC,EAAE,OAAO,CAAC;AACnD;AACA,GAAG,CAAC;CACJ,EAAE;;CAEF,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;CAC7D,EAAE,OAAO;AACT,iCAAiC,EAAE,YAAY,CAAC;AAChD,0CAA0C,EAAE,UAAU,CAAC;AACvD;AACA,2CAA2C,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,SAAS,CAAC;AAC/E;AACA,6CAA6C,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3F;AACA,yCAAyC,EAAE,OAAO,CAAC;AACnD;AACA;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,mBAAmB,CAAC,MAAM,EAAE;CAC7B,EAAE,IAAI,MAAM,EAAE,SAAS,EAAE;CACzB,GAAG,OAAO,CAAC,0DAA0D,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;CAClH,EAAE;CACF,EAAE,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;CAC/D,EAAE,OAAO,CAAC,kFAAkF,EAAE,OAAO,CAAC,MAAM,CAAC;CAC7G,CAAC;;CAED,CAAC,yBAAyB,CAAC,YAAY,EAAE;CACzC,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE;CAC3C,GAAG,OAAO,CAAC,yFAAyF,CAAC;CACrG,EAAE;CACF,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;CACxC,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE;CACnB,GAAG,OAAO,CAAC,0DAA0D,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACxG,EAAE;CACF,EAAE,OAAO,CAAC,kFAAkF,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;CAC7I,CAAC;;CAED,CAAC,kBAAkB,GAAG;CACtB,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW;CACxC,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;CACxC,GAAG,OAAO;AACV;AACA;AACA;AACA;AACA,GAAG,CAAC;CACJ,EAAE;;CAEF,EAAE,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;CACxE,EAAE,MAAM,WAAW,GAAG;CACtB,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;CACd,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;CACvB,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;CACjE,KAAK,OAAO,CAAC,mCAAmC,EAAE,MAAM,CAAC,oCAAoC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;CAC3G,IAAI;CACJ,IAAI,OAAO,CAAC,iDAAiD,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;CACvJ,GAAG,CAAC;CACJ,IAAI,IAAI,CAAC,EAAE,CAAC;;CAEZ,EAAE,OAAO,CAAC,oCAAoC,EAAE,WAAW,CAAC,MAAM,CAAC;CACnE,CAAC;;CAED,CAAC,kBAAkB,CAAC,SAAS,EAAE;CAC/B,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;CAC3B,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;CAClC,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;CAC1C,GAAG,IAAI,EAAE,SAAS;CAClB,GAAG,MAAM,EAAE,SAAS;CACpB,GAAG,MAAM,EAAE,IAAI;CACf,GAAG,CAAC;CACJ,CAAC;;CAED,CAAC,qBAAqB,CAAC,OAAO,EAAE;CAChC,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;CACzB;CACA,EAAE,OAAO;CACT,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO;CACzB,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM;CACxB,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM;CACxB,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B,CAAC;;CAED,CAAC,cAAc,CAAC,OAAO,EAAE;CACzB,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CACtD,GAAG;CACH,GAAG;CACH,EAAE,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,CAAC,uBAAuB,CAAC;CAC7E,EAAE,IAAI,UAAU,EAAE;CAClB,GAAG,UAAU,CAAC,MAAM,EAAE;CACtB,EAAE;;CAEF,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;CAClD,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC/C,EAAE,OAAO,CAAC,SAAS,GAAG,WAAW;CACjC,EAAE,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC;CAC1D,CAAC;;CAED,CAAC,eAAe,GAAG;CACnB,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CACtD,GAAG;CACH,GAAG;CACH,EAAE,IAAI,iBAAiB,EAAE;CACzB,GAAG,UAAU,CAAC,MAAM;CACpB,IAAI,iBAAiB,CAAC,SAAS,GAAG,iBAAiB,CAAC,YAAY;CAChE,GAAG,CAAC,EAAE,EAAE,CAAC;CACT,EAAE;CACF,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB;CACA,EAAE,IAAI,CAAC;CACP,IAAI,aAAa,CAAC,qBAAqB;CACvC,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;CAClC,GAAG,CAAC,CAAC;;CAEL;CACA,EAAE,IAAI,CAAC;CACP,IAAI,aAAa,CAAC,sBAAsB;CACxC,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;CAC7B,GAAG,CAAC,CAAC;;CAEL;CACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC;CACtE,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC;;CAEvE,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACxC;CACA,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;CAC9B,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,IAAI;;CAEhE;CACA,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;CACzC,EAAE,CAAC,CAAC;;CAEJ,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK;CAC3C,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;CACzC,IAAI,CAAC,CAAC,cAAc,EAAE;CACtB,IAAI,IAAI,CAAC,YAAY,EAAE;CACvB,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CAC1C,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE,CAAC,CAAC;CACJ,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC;CACtE,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;;CAEpC,EAAE,IAAI,CAAC,OAAO,EAAE;;CAEhB;CACA,EAAE,MAAM,OAAO,GAAG;CAClB,GAAG,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;CAC1B,GAAG,OAAO,EAAE,OAAO;CACnB,GAAG,KAAK,EAAE,IAAI;CACd,GAAG,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CACtC,GAAG;;CAEH,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC;;CAEjE;CACA,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE;CAClB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;CAC7B,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,QAAQ,GAAG,IAAI;;CAEvE;CACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;CAClC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACvE,EAAE;CACF,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;CAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,EAAE;CACF,CAAC;CACD;;CC3RA;CACA;CACA;CACO,MAAM,iBAAiB,CAAC;CAC/B,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;CAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;CACpB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO;CACxB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,CAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC9C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,6CAA6C;;CAExE,EAAE,IAAI,CAAC,cAAc,EAAE;CACvB,EAAE,IAAI,CAAC,aAAa,EAAE;;CAEtB;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;CACrD,GAAG;CACH,IAAI,IAAI,KAAK,qBAAqB;CAClC,IAAI,IAAI,KAAK,mBAAmB;CAChC,IAAI,IAAI,KAAK;CACb,KAAK;CACL,IAAI,IAAI,CAAC,cAAc,EAAE;CACzB,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,OAAO,IAAI,CAAC,OAAO;CACrB,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;CAChD,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;;CAE/C,EAAE,IAAI,iBAAiB;CACvB,EAAE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;CAClC,GAAG,iBAAiB,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;CACJ,EAAE,CAAC,MAAM;CACT,GAAG,iBAAiB,GAAG;AACvB;AACA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/E;AACA,GAAG,CAAC;CACJ,EAAE;;CAEF,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,EAAE,iBAAiB;AACvB;;AAEA;AACA;AACA,gDAAgD,EAAE,WAAW,CAAC;AAC9D;AACA;AACA;AACA;AACA,EAAE,CAAC;;CAEH,EAAE,IAAI,CAAC,aAAa,EAAE;CACtB,CAAC;;CAED,CAAC,uBAAuB,CAAC,YAAY,EAAE;CACvC,EAAE,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,EAAE;CAC7D,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,eAAe,CAAC;CACnE,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B;CACrD,GAAG,YAAY,CAAC;CAChB,GAAG;;CAEH,EAAE,OAAO;AACT,2CAA2C,EAAE,WAAW,CAAC,wBAAwB,EAAE,YAAY,CAAC,EAAE,CAAC;AACnG;AACA,KAAK,EAAE,WAAW;AAClB;AACA;AACA;AACA,iDAAiD,EAAE,YAAY,CAAC,KAAK,IAAI,gBAAgB,CAAC;AAC1F,gDAAgD,EAAE,OAAO,CAAC;AAC1D;AACA;AACA,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,4CAA4C,GAAG,EAAE;AACnF,mDAAmD,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACrG;AACA;AACA;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,0BAA0B,CAAC,YAAY,EAAE;CAC1C,EAAE,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;CAClD,GAAG,OAAO,CAAC,0FAA0F,CAAC;CACtG,EAAE;;CAEF,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;CAC3B,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE;CACnB,GAAG,OAAO,CAAC,2DAA2D,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACzG,EAAE;CACF,EAAE,OAAO,CAAC,yEAAyE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;CACjK,CAAC;;CAED,CAAC,kBAAkB,GAAG;CACtB,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW;CACxC,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;CACxC,GAAG,OAAO;AACV;AACA;AACA;AACA;AACA,GAAG,CAAC;CACJ,EAAE;;CAEF,EAAE,MAAM,WAAW,GAAG;CACtB,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;CACd,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;CACvB,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;CACjE,KAAK,OAAO,CAAC,0DAA0D,EAAE,MAAM,CAAC,oCAAoC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;CAClI,IAAI;CACJ,IAAI,OAAO,CAAC,wEAAwE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;CAC5K,GAAG,CAAC;CACJ,IAAI,IAAI,CAAC,EAAE,CAAC;;CAEZ,EAAE,OAAO,CAAC,iEAAiE,EAAE,WAAW,CAAC,MAAM,CAAC;CAChG,CAAC;;CAED,CAAC,eAAe,CAAC,KAAK,EAAE;CACxB,EAAE,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;CACxE,EAAE,OAAO,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;CACtC,CAAC;;CAED,CAAC,cAAc,CAAC,SAAS,EAAE;CAC3B,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;CAC3B,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;CAClC,EAAE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;CACxB,EAAE,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI;CAC3B,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;CAC7C,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;CAChD,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;;CAEhD,EAAE,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,KAAK;CAChC,EAAE,IAAI,QAAQ,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC1C,EAAE,IAAI,SAAS,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;CAC5C,EAAE,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;CACzC,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;CAC7E,CAAC;;CAED,CAAC,gBAAgB,CAAC,OAAO,EAAE;CAC3B,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,iBAAiB;CACxC,EAAE,MAAM,SAAS,GAAG,EAAE;CACtB,EAAE,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE,OAAO,OAAO;CACjD,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK;CAChD,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB;CACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC;CACrE,EAAE,IAAI,QAAQ,EAAE;CAChB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;CAC7B,GAAG,CAAC,CAAC;CACL,EAAE;;CAEF;CACA,EAAE,IAAI,CAAC;CACP,IAAI,gBAAgB,CAAC,8BAA8B;CACnD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK;CACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACzC,KAAK,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;CAC/C,KAAK,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC;CAC7C,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;CAClC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;CAC/B,IAAI,CAAC,CAAC;CACN,GAAG,CAAC,CAAC;;CAEL;CACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,4BAA4B,CAAC;CAC5E,EAAE,IAAI,SAAS,EAAE;CACjB,GAAG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CAC7C,IAAI,IAAI,CAAC,qBAAqB,EAAE;CAChC,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC;;CAED,CAAC,qBAAqB,GAAG;CACzB;CACA,EAAE,MAAM,OAAO,GAAG;CAClB,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;CAC3B,GAAG,KAAK,EAAE,kBAAkB;CAC5B,GAAG,YAAY,EAAE,EAAE;CACnB,GAAG,WAAW,EAAE,IAAI;CACpB,GAAG,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CAC5C,GAAG,MAAM,EAAE,CAAC;CACZ,GAAG;CACH,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC;CACrC,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9C,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;CAC5B,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;CAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,EAAE;CACF,CAAC;CACD;;CC9NA;CACA;CACA;CACO,MAAM,QAAQ,CAAC;CACtB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;CAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;CACpB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO;CACxB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,CAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC9C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,oCAAoC;;CAE/D,EAAE,IAAI,CAAC,cAAc,EAAE;;CAEvB;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;CACrD,GAAG,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,kBAAkB,EAAE;CACrE,IAAI,IAAI,CAAC,sBAAsB,EAAE;CACjC,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,OAAO,IAAI,CAAC,OAAO;CACrB,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE;CACtD,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE;CACnD,EAAE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM;;CAE5C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE,WAAW,CAAC;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK,EAAE,eAAe,CAAC;AACvB;AACA;AACA;AACA,EAAE,CAAC;;CAEH,EAAE,IAAI,CAAC,sBAAsB,EAAE;CAC/B,EAAE,IAAI,CAAC,aAAa,EAAE;CACtB,CAAC;;CAED,CAAC,sBAAsB,GAAG;CAC1B,EAAE,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CACzD,GAAG;CACH,GAAG;CACH,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE;CACnD,EAAE,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,EAAE,WAAW,EAAE;;CAEtE;CACA,EAAE,MAAM,mBAAmB,GAAG;CAC9B,KAAK,WAAW,CAAC,MAAM;CACvB,KAAK,CAAC,CAAC;CACP,MAAM,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;CACjD,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;CACzE;CACA,KAAK,WAAW;;CAEhB;CACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CAC7C,GAAG;CACH,GAAG;CACH,EAAE,IAAI,QAAQ,EAAE;CAChB,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC;CACrE,EAAE;;CAEF,EAAE,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;CACxC,GAAG,oBAAoB,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE;CAC5D,GAAG;CACH,EAAE;;CAEF,EAAE,oBAAoB,CAAC,SAAS,GAAG;CACnC,IAAI,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;CAC9D,IAAI,IAAI,CAAC,EAAE,CAAC;;CAEZ;CACA,EAAE,IAAI,CAAC,uBAAuB,EAAE;CAChC,CAAC;;CAED,CAAC,qBAAqB,CAAC,UAAU,EAAE;CACnC,EAAE,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,CAAC;CACnD,EAAE,OAAO;AACT,8DAA8D,EAAE,UAAU,CAAC,EAAE,CAAC;AAC9E;AACA,iDAAiD,EAAE,UAAU,CAAC,KAAK,CAAC;AACpE,+CAA+C,EAAE,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;AAC9E,mDAAmD,EAAE,YAAY,CAAC;AAClE;AACA;AACA;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,iBAAiB,GAAG;CACrB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe;;CAEhD,EAAE,IAAI,WAAW,EAAE;CACnB,GAAG,OAAO;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;CACJ,EAAE;;CAEF,EAAE,OAAO;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB;CACA,EAAE,IAAI,CAAC;CACP,IAAI,aAAa,CAAC,sBAAsB;CACxC,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;CAC7B,GAAG,CAAC,CAAC;;CAEL;CACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CAChD,GAAG;CACH,GAAG;CACH,EAAE,IAAI,aAAa;CACnB,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CAC/C,GAAG,YAAY,CAAC,aAAa,CAAC;CAC9B,GAAG,aAAa,GAAG,UAAU,CAAC,MAAM;CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;CACjD,GAAG,CAAC,EAAE,GAAG,CAAC;CACV,EAAE,CAAC,CAAC;;CAEJ,EAAE,IAAI,CAAC,uBAAuB,EAAE;CAChC,CAAC;;CAED,CAAC,uBAAuB,GAAG;CAC3B,EAAE,IAAI,CAAC;CACP,IAAI,gBAAgB,CAAC,4BAA4B;CACjD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK;CACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACzC,KAAK,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;CACnD,KAAK,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI;CACpD,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK;CACtB,MAAM;CACN,KAAK,IAAI,UAAU,IAAI,UAAU,CAAC,GAAG,EAAE;CACvC,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;CAC3C,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;CAC7C,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC;CAC7C,KAAK;CACL,IAAI,CAAC,CAAC;CACN,GAAG,CAAC,CAAC;CACL,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;CAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,EAAE;CACF,CAAC;CACD;;CC9LA;CACA;CACA;CACO,MAAM,QAAQ,CAAC;CACtB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;CAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;CACpB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO;CACxB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;CACrB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI;CAC1B,CAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC9C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,oCAAoC;;CAE/D,EAAE,IAAI,CAAC,cAAc,EAAE;;CAEvB;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;CACrD,GAAG,IAAI,IAAI,KAAK,qBAAqB,IAAI,IAAI,KAAK,qBAAqB,EAAE;CACzE,IAAI,IAAI,CAAC,cAAc,EAAE;CACzB,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,OAAO,IAAI,CAAC,OAAO;CACrB,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;CAC/C,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE;;CAE3D,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG;AAC3B;AACA;AACA;AACA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;AACxG;AACA,yCAAyC,EAAE,WAAW,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;AACvE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE;;AAEhC,IAAI,EAAE,mBAAmB;AACzB;AACA,EAAE,CAAC;;CAEH,EAAE,IAAI,CAAC,aAAa,EAAE;CACtB,CAAC;;CAED,CAAC,kBAAkB,GAAG;CACtB,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW;CACxC,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;CACxC;CACA,GAAG,OAAO;AACV;AACA;AACA;AACA;AACA,GAAG,CAAC;CACJ,EAAE;;CAEF,EAAE,MAAM,WAAW,GAAG;CACtB,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;CACd,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;CACvB,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;CACjE,KAAK,OAAO,CAAC,mCAAmC,EAAE,MAAM,CAAC,oCAAoC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;CAC3G,IAAI;CACJ,IAAI,OAAO,CAAC,iDAAiD,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;CACrJ,GAAG,CAAC;CACJ,IAAI,IAAI,CAAC,EAAE,CAAC;;CAEZ,EAAE,OAAO,CAAC,oCAAoC,EAAE,WAAW,CAAC,MAAM,CAAC;CACnE,CAAC;;CAED,CAAC,eAAe,CAAC,KAAK,EAAE;CACxB,EAAE,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;CACxE,EAAE,OAAO,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;CACtC,CAAC;;CAED,CAAC,mBAAmB,GAAG;CACvB;CACA,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;CACrC,GAAG,OAAO,EAAE;CACZ,EAAE;;CAEF,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;CAChD,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe;;CAE/B,EAAE,OAAO;AACT;AACA,IAAI,EAAE,QAAQ,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,+EAA+E,CAAC,GAAG,EAAE;AAC3I;AACA,SAAS,EAAE,KAAK,CAAC;AACjB,QAAQ,EAAE,WAAW,CAAC;AACtB;AACA,IAAI,EAAE,MAAM,GAAG,CAAC,yDAAyD,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;AACpJ;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,sBAAsB,GAAG;CAC1B;CACA,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB;CACtD,EAAE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;CACnC,GAAG,OAAO,EAAE;CACZ,EAAE;;CAEF,EAAE,MAAM,aAAa,GAAG;CACxB,IAAI,GAAG;CACP,IAAI,CAAC,IAAI,KAAK;AACd,iEAAiE,EAAE,IAAI,CAAC,EAAE,CAAC;AAC3E,IAAI;AACJ,KAAK,IAAI,CAAC;AACV,QAAQ;AACR;AACA,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;AACtD,MAAM,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,kDAAkD,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1G;AACA,IAAI;AACJ,QAAQ;AACR;AACA;AACA,qDAAqD,EAAE,IAAI,CAAC,KAAK,CAAC;AAClE,mDAAmD,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;AAC5E;AACA;AACA,EAAE;CACF;CACA,IAAI,IAAI,CAAC,EAAE,CAAC;;CAEZ,EAAE,OAAO;AACT;AACA,IAAI,EAAE,aAAa;AACnB;AACA,EAAE,CAAC;CACH,CAAC;;CAED,CAAC,WAAW,CAAC,UAAU,EAAE;CACzB,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;CAC5B,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;CACnC,EAAE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;CACxB,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;;CAEnE,EAAE,IAAI,QAAQ,KAAK,CAAC,EAAE,OAAO,OAAO;CACpC,EAAE,IAAI,QAAQ,KAAK,CAAC,EAAE,OAAO,WAAW;CACxC,EAAE,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;CAC7C,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;CAC7E,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB;CACA,EAAE,IAAI,CAAC;CACP,IAAI,aAAa,CAAC,sBAAsB;CACxC,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;CAC7B,GAAG,CAAC,CAAC;;CAEL;CACA,EAAE,IAAI,CAAC;CACP,IAAI,aAAa,CAAC,6BAA6B;CAC/C,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;CAClC,GAAG,CAAC,CAAC;;CAEL;CACA,EAAE,IAAI,CAAC;CACP,IAAI,gBAAgB,CAAC,gCAAgC;CACrD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK;CACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CACzC;CACA,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;CACpC,IAAI,CAAC,CAAC;CACN,GAAG,CAAC,CAAC;;CAEL;CACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CAC9C,GAAG;CACH,GAAG;CACH,EAAE,IAAI,SAAS,EAAE;CACjB,GAAG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;CACnC,GAAG,CAAC,CAAC;CACL,EAAE;;CAEF;CACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;CAChD,GAAG;CACH,GAAG;CACH,EAAE,IAAI,WAAW,EAAE;CACnB,GAAG,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;CAC/C,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM;CAC7C,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK;CAC3C,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;CAC1B,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;CACjC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE;CAClC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;CAC9B,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,IAAI,CAAC,YAAY,EAAE;CACtB,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;CAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;CACpD,EAAE;CACF,CAAC;CACD;;CC/NA;CACA;CACA;;CAWO,MAAM,eAAe,SAAS,UAAU,CAAC;CAChD,CAAC,WAAW,CAAC,OAAO,EAAE;CACtB,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;;CAE1C,EAAE,IAAI,CAAC,gBAAgB,GAAG;CAC1B,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,cAAc;CAC/C,GAAG,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO;CAClC,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;CAC1C,GAAG,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;CACzC,GAAG,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,kBAAkB;CAC/D,GAAG,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,KAAK;CAC3C,GAAG,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,KAAK;CACrD,GAAG,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,yCAAyC;CACxE,GAAG,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;CACnD,GAAG,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,SAAS;CAClD;CACA,GAAG,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;CAC/C,GAAG,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI;CACjD,GAAG,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI;CACrD,GAAG;;CAEH;CACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;CAC3C,GAAG,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;CAC3C,GAAG,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW;CACjD,GAAG,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc;CACvD,GAAG,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU;CAC/C,GAAG,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe;CACzD,GAAG,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,IAAI;CAC9D,GAAG,CAAC;;CAEJ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI;CACtB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;;CAEnB;CACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;CAC5D,CAAC;;CAED,CAAC,OAAO,GAAG;CACX;CACA,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACjD,EAAE,SAAS,CAAC,SAAS,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;CAC/E,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ;;CAEnC;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE;CAC7D,GAAG,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;CAC3C,GAAG,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY;CACnD,GAAG,CAAC;CACJ,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;;CAE/C;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE;CACvD,GAAG,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;CAC3C,GAAG,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;CACrC,GAAG,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY;CACnD,GAAG,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;CACzC,GAAG,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe;CACzD,GAAG,aAAa;CAChB,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa;CACvC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;CACtC,GAAG,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc;CACvD,GAAG,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;CAC3D,GAAG,CAAC;;CAEJ;CACA,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;CAC3C,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,iBAAiB,CAAC;CACxD,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;CAC3C,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;CAC3C,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC;;CAErD,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;CAC5C,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;CAEnB,EAAE,OAAO,SAAS;CAClB,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB;CACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;CACzE,GAAG,IAAI,IAAI,KAAK,YAAY,EAAE;CAC9B,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;CACvC,GAAG;CACH,EAAE,CAAC,CAAC;CACJ,CAAC;;CAED,CAAC,iBAAiB,CAAC,MAAM,EAAE;CAC3B,EAAE,IAAI,MAAM,EAAE;CACd,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;CACpB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CAC/D,EAAE,CAAC,MAAM;CACT,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;CACpB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;CAC9B,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CAC/D,EAAE;CACF,CAAC;;CAED,CAAC,MAAM,kBAAkB,CAAC,cAAc,EAAE,OAAO,EAAE;CACnD;CACA,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE;CAClD,GAAG,MAAM,EAAE,IAAI;CACf,GAAG,cAAc;CACjB,GAAG,OAAO;CACV,GAAG,CAAC;;CAEJ;CACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;CAC7B,GAAG,UAAU,CAAC,MAAM;CACpB,IAAI,MAAM,QAAQ,GAAG;CACrB,KAAK,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;CAC5B,KAAK,OAAO,EAAE,sDAAsD;CACpE,KAAK,KAAK,EAAE,KAAK;CACjB,KAAK,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CACxC,KAAK,MAAM,EAAE;CACb,MAAM,IAAI,EAAE,cAAc;CAC1B,MAAM,SAAS,EAAE,IAAI;CACrB,MAAM;CACN,KAAK;CACL,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC;CAC5D,GAAG,CAAC,EAAE,IAAI,CAAC;CACX,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC;;CAED;CACA;CACA;CACA,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC;CACpC,CAAC;;CAED;CACA;CACA;CACA,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;CAC1D,CAAC;;CAED;CACA;CACA;CACA,CAAC,UAAU,CAAC,IAAI,EAAE;CAClB,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;CACnC,GAAG,IAAI,CAAC,IAAI,EAAE;CACd,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA,CAAC,gBAAgB,CAAC,aAAa,EAAE;CACjC,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC;CACrD,CAAC;;CAED;CACA;CACA;CACA,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,EAAE;CACrC,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC;CACzD,CAAC;;CAED;CACA;CACA;CACA,CAAC,eAAe,CAAC,QAAQ,EAAE;CAC3B,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC;CAC/C,CAAC;;CAED;CACA;CACA;CACA,CAAC,qBAAqB,CAAC,KAAK,EAAE;CAC9B,EAAE,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,KAAK,CAAC;CAClD,CAAC;;CAED;CACA;CACA;CACA,CAAC,iBAAiB,CAAC,KAAK,EAAE;CAC1B,EAAE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC;CAC9C,CAAC;;CAED;CACA;CACA;CACA,CAAC,cAAc,CAAC,KAAK,EAAE;CACvB,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,KAAK;CACzC,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC;CAC7D,CAAC;;CAED;CACA;CACA;CACA,CAAC,QAAQ,GAAG;CACZ,EAAE,OAAO;CACT,GAAG,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;CACrC,GAAG,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW;CAC/C,GAAG,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW;CAC/C,GAAG,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa;CACnD,GAAG;CACH,CAAC;;CAED;CACA;CACA;CACA,CAAC,MAAM,eAAe,GAAG;CACzB;CACA,EAAE,IAAI;CACN,GAAG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE;CACzD,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC;CACtD,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC;CAC1E,EAAE;;CAEF;CACA,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;CACxC,GAAG,IAAI;CACP,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;CACpD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC;CACjD,GAAG,CAAC,CAAC,OAAO,KAAK,EAAE;CACnB,IAAI,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC;CAC3E,GAAG;CACH,EAAE;;CAEF;CACA,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;CAC7C,GAAG,IAAI;CACP,IAAI,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE;CACtE,IAAI,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,CAAC;CACxD,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC;CACzD,GAAG,CAAC,CAAC,OAAO,KAAK,EAAE;CACnB,IAAI,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC;CACvE,GAAG;CACH,EAAE;CACF,CAAC;;CAED,CAAC,MAAM,mBAAmB,GAAG;CAC7B;CACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;CAC7B,GAAG,OAAO;CACV,IAAI;CACJ,KAAK,EAAE,EAAE,QAAQ;CACjB,KAAK,KAAK,EAAE,iBAAiB;CAC7B,KAAK,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;CACvD,KAAK,WAAW,EAAE,+CAA+C;CACjE,KAAK,eAAe,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;CACzE,KAAK,MAAM,EAAE,CAAC;CACd,KAAK;CACL,IAAI;CACJ,KAAK,EAAE,EAAE,QAAQ;CACjB,KAAK,KAAK,EAAE,eAAe;CAC3B,KAAK,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;CACrD,KAAK,WAAW,EAAE,+CAA+C;CACjE,KAAK,eAAe,EAAE,IAAI,IAAI;CAC9B,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACtC,MAAM,CAAC,WAAW,EAAE;CACpB,KAAK,MAAM,EAAE,CAAC;CACd,KAAK;CACL,IAAI;CACJ,EAAE;;CAEF;CACA,EAAE,OAAO,EAAE;CACX,CAAC;;CAED,CAAC,MAAM,kBAAkB,GAAG;CAC5B;CACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;CAC7B,GAAG,OAAO;CACV,IAAI;CACJ,KAAK,EAAE,EAAE,cAAc;CACvB,KAAK,KAAK,EAAE,kBAAkB;CAC9B,KAAK,WAAW,EAAE,wDAAwD;CAC1E,KAAK,YAAY,EAAE,EAAE;CACrB,KAAK,GAAG,EAAE,GAAG;CACb,KAAK;CACL,IAAI;CACJ,KAAK,EAAE,EAAE,cAAc;CACvB,KAAK,KAAK,EAAE,iBAAiB;CAC7B,KAAK,WAAW;CAChB,MAAM,2DAA2D;CACjE,KAAK,YAAY,EAAE,EAAE;CACrB,KAAK,GAAG,EAAE,GAAG;CACb,KAAK;CACL,IAAI;CACJ,KAAK,EAAE,EAAE,cAAc;CACvB,KAAK,KAAK,EAAE,UAAU;CACtB,KAAK,WAAW;CAChB,MAAM,gFAAgF;CACtF,KAAK,YAAY,EAAE,EAAE;CACrB,KAAK,GAAG,EAAE,GAAG;CACb,KAAK;CACL,IAAI;CACJ,KAAK,EAAE,EAAE,cAAc;CACvB,KAAK,KAAK,EAAE,UAAU;CACtB,KAAK,WAAW;CAChB,MAAM,kFAAkF;CACxF,KAAK,YAAY,EAAE,EAAE;CACrB,KAAK,GAAG,EAAE,GAAG;CACb,KAAK;CACL,IAAI;CACJ,KAAK,EAAE,EAAE,cAAc;CACvB,KAAK,KAAK,EAAE,oBAAoB;CAChC,KAAK,WAAW;CAChB,MAAM,0DAA0D;CAChE,KAAK,YAAY,EAAE,EAAE;CACrB,KAAK,GAAG,EAAE,GAAG;CACb,KAAK;CACL,IAAI;CACJ,EAAE;;CAEF;CACA,EAAE,OAAO,EAAE;CACX,CAAC;;CAED,CAAC,MAAM,eAAe,GAAG;CACzB;CACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;CAC7B,GAAG,OAAO;CACV,IAAI,SAAS,EAAE;CACf,KAAK;CACL,MAAM,EAAE,EAAE,aAAa;CACvB,MAAM,KAAK,EAAE,4BAA4B;CACzC,MAAM,WAAW;CACjB,OAAO,gEAAgE;CACvE,MAAM,IAAI,EAAE,CAAC,aAAa,CAAC;CAC3B,MAAM,UAAU,EAAE,kDAAkD;CACpE,MAAM,SAAS,EAAE,IAAI;CACrB,MAAM,WAAW,EAAE,IAAI,IAAI;CAC3B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACxC,OAAO,CAAC,WAAW,EAAE;CACrB,MAAM,GAAG,EAAE,GAAG;CACd,MAAM;CACN,KAAK;CACL,MAAM,EAAE,EAAE,aAAa;CACvB,MAAM,KAAK,EAAE,mCAAmC;CAChD,MAAM,WAAW;CACjB,OAAO,sIAAsI;CAC7I,MAAM,IAAI,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC;CACjC,MAAM,UAAU;CAChB,OAAO,6DAA6D;CACpE,MAAM,SAAS,EAAE,0CAA0C;CAC3D,MAAM,WAAW,EAAE,IAAI,IAAI;CAC3B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACvC,OAAO,CAAC,WAAW,EAAE;CACrB,MAAM,GAAG,EAAE,GAAG;CACd,MAAM;CACN,KAAK;CACL,MAAM,EAAE,EAAE,aAAa;CACvB,MAAM,KAAK,EAAE,iDAAiD;CAC9D,MAAM,WAAW;CACjB,OAAO,sHAAsH;CAC7H,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC;CACtB,MAAM,UAAU;CAChB,OAAO,+DAA+D;CACtE,MAAM,SAAS,EAAE,mDAAmD;CACpE,MAAM,WAAW,EAAE,IAAI,IAAI;CAC3B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACvC,OAAO,CAAC,WAAW,EAAE;CACrB,MAAM,GAAG,EAAE,GAAG;CACd,MAAM;CACN,KAAK;CACL,IAAI,cAAc,EAAE;CACpB,KAAK;CACL,MAAM,EAAE,EAAE,aAAa;CACvB,MAAM,KAAK,EAAE,iCAAiC;CAC9C,MAAM,WAAW;CACjB,OAAO,wFAAwF;CAC/F,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC;CACzB,MAAM,UAAU;CAChB,OAAO,mEAAmE;CAC1E,MAAM,SAAS,EAAE,IAAI;CACrB,MAAM,WAAW,EAAE,IAAI,IAAI;CAC3B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACxC,OAAO,CAAC,WAAW,EAAE;CACrB,MAAM,GAAG,EAAE,GAAG;CACd,MAAM;CACN,KAAK;CACL,MAAM,EAAE,EAAE,aAAa;CACvB,MAAM,KAAK,EAAE,wCAAwC;CACrD,MAAM,WAAW;CACjB,OAAO,qGAAqG;CAC5G,MAAM,IAAI,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC;CACjC,MAAM,UAAU;CAChB,OAAO,mFAAmF;CAC1F,MAAM,SAAS,EAAE,IAAI;CACrB,MAAM,WAAW,EAAE,IAAI,IAAI;CAC3B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACvC,OAAO,CAAC,WAAW,EAAE;CACrB,MAAM,GAAG,EAAE,GAAG;CACd,MAAM;CACN,KAAK;CACL,IAAI;CACJ,EAAE;;CAEF;CACA,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;CAC9C,CAAC;;CAED,CAAC,OAAO,GAAG;CACX;CACA,EAAE,IAAI,CAAC,eAAe,EAAE;CACxB,CAAC;;CAED,CAAC,SAAS,GAAG;CACb,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;CAC9B,GAAG,IAAI,CAAC,iBAAiB,EAAE;CAC3B,EAAE;CACF,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;CACrB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;CAC1B,EAAE;CACF,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;CAClB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;CACvB,EAAE;CACF,EAAE,KAAK,CAAC,OAAO,EAAE;CACjB,CAAC;CACD;;CCtbO,MAAM,YAAY,SAAS,UAAU,CAAC;CAC7C,CAAC,WAAW,CAAC,OAAO,EAAE;CACtB,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;CAEvC,EAAE,IAAI,CAAC,aAAa,GAAG;CACvB,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;CACrC,GAAG,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;CAC1C,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,cAAc;CAC/C,GAAG,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;CAC/B,GAAG,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;CAC3C,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;CACrC,GAAG,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;CACvC,GAAG,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;CACjD,GAAG,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO;CAClC,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;CACrC,GAAG,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;CACvC,GAAG;;CAEH,EAAE,IAAI,CAAC,WAAW,GAAG;CACrB,GAAG,KAAK,EAAE,IAAI;CACd,GAAG,QAAQ,EAAE,EAAE;CACf,GAAG,aAAa,EAAE,EAAE;CACpB,GAAG,SAAS,EAAE,KAAK;CACnB,GAAG;CACH,CAAC;;CAED,CAAC,OAAO,GAAG;CACX;CACA,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACjD,EAAE,SAAS,CAAC,SAAS,GAAG,2BAA2B;CACnD,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;CAClC,EAAE,OAAO,SAAS;CAClB,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB;CACA,CAAC;;CAED,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,CAAC,aAAa,EAAE;CACtB,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI;CACnC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE;CACzC,GAAG,MAAM,EAAE,IAAI;CACf,GAAG,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;CACtC,GAAG,CAAC;CACJ,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,CAAC,YAAY,EAAE;CACrB,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB;CACA,EAAE,IAAI,CAAC,YAAY,EAAE;;CAErB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;CACxC,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE;CAClD,EAAE,MAAM,WAAW;CACnB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK;CAChC,MAAM;CACN,MAAM,mCAAmC;;CAEzC;CACA,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,QAAQ,EAAE;CAChD,GAAG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACvD,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,0BAA0B;CAC9D,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;CAClD,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE;CAClD,IAAI,IAAI,CAAC,cAAc;CACvB,IAAI;CACJ,EAAE;;CAEF,EAAE,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACpD,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;CACnI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,EAAE,WAAW,CAAC,sLAAsL,CAAC;;CAE9R,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG;AACjC,qKAAqK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAChO,wHAAwH,EAAE,MAAM,CAAC,KAAK,CAAC;AACvI,wDAAwD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,wCAAwC,EAAE,MAAM,CAAC,WAAW,CAAC;AAChL,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC;AACtD;AACA,sJAAsJ,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,+EAA+E,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAC/Z;AACA;AACA,EAAE,CAAC;;CAEH,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;CAC/C,EAAE,IAAI,CAAC,mBAAmB,EAAE;;CAE5B;CACA,EAAE,qBAAqB,CAAC,MAAM;CAC9B,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;CACzC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS;CACrC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK;CACpC,OAAO;CACP,OAAO,eAAe;CACtB,EAAE,CAAC,CAAC;CACJ,CAAC;;CAED,CAAC,gBAAgB,GAAG;CACpB,EAAE,MAAM,OAAO,GAAG;CAClB,GAAG,GAAG,EAAE;CACR,IAAI,KAAK;CACT,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,qCAAqC;CACtE,IAAI,WAAW;CACf,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW;CACnC,KAAK,2FAA2F;CAChG,IAAI,IAAI,EAAE;AACV;AACA,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAC5B,QAAQ,GAAG;AACX,QAAQ,CAAC,CAAC,KAAK;AACf,2DAA2D,EAAE,CAAC,CAAC,sDAAsD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,kCAAkC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC,2CAA2C,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,0BAA0B,EAAE,CAAC,CAAC;AACpZ,MAAM;AACN;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC;AAChB;AACA,yGAAyG,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AACpK,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,YAAY,CAAC;AAC1D,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC;AAC5D;AACA,IAAI,CAAC;CACL,IAAI;CACJ,GAAG,IAAI,EAAE;CACT,IAAI,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,wBAAwB;CAC/D,IAAI,WAAW;CACf,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW;CACnC,KAAK,gEAAgE;CACrE,IAAI,IAAI,EAAE;AACV;AACA,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACrC,QAAQ,GAAG;AACX,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK;AACtB,4DAA4D,EAAE,CAAC,GAAG,CAAC,CAAC,uHAAuH,EAAE,KAAK,CAAC;AACnM,MAAM;AACN;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC;AAChB;AACA,yGAAyG,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AACpK,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,mBAAmB,CAAC;AACjE,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,gBAAgB,CAAC;AAC/D;AACA,IAAI,CAAC;CACL,IAAI;CACJ,GAAG,GAAG,EAAE;CACR,IAAI,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,kBAAkB;CACzD,IAAI,WAAW;CACf,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW;CACnC,KAAK,gDAAgD;CACrD,IAAI,IAAI,EAAE;AACV;AACA,MAAM,EAAE,CAAC,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;AACtE,QAAQ,GAAG;AACX,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK;AACtB,2DAA2D,EAAE,CAAC,GAAG,CAAC,CAAC,uDAAuD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,kCAAkC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC,2CAA2C,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,0BAA0B,EAAE,KAAK,CAAC;AAC7Z,MAAM;AACN;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC;AAChB;AACA,IAAI,CAAC;CACL,IAAI;CACJ,GAAG,MAAM,EAAE;CACX,IAAI,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,gBAAgB;CACvD,IAAI,WAAW;CACf,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW;CACnC,KAAK,+CAA+C;CACpD,IAAI,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE;CACvC,IAAI;CACJ,GAAG;;CAEH,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG;CAC9D,CAAC;;CAED,CAAC,sBAAsB,GAAG;CAC1B,EAAE;CACF,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe;CACtC,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,KAAK;CACjD,IAAI;CACJ;CACA,GAAG,OAAO;AACV;AACA;AACA,yHAAyH,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,mDAAmD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AACtW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;AAC/C,QAAQ,GAAG;AACX,QAAQ,CAAC,IAAI,KAAK;AAClB,2DAA2D,EAAE,IAAI,CAAC,mDAAmD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,kCAAkC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC,2CAA2C,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,0BAA0B,EAAE,IAAI,CAAC;AACvZ,MAAM;AACN;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC;AAChB;AACA;AACA,GAAG,CAAC;CACJ,EAAE;;CAEF,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC;CAC5B,IAAI,GAAG;CACP,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK;AAClB;AACA,0FAA0F,EAAE,CAAC,CAAC,KAAK,CAAC;AACpG,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC;AACzC;AACA,EAAE;CACF;CACA,IAAI,IAAI,CAAC,EAAE,CAAC;CACZ,CAAC;;CAED,CAAC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,EAAE;CACvC,EAAE,QAAQ,QAAQ,CAAC,IAAI;CACvB,GAAG,KAAK,QAAQ;CAChB,IAAI,OAAO;AACX,2DAA2D,EAAE,QAAQ,CAAC,EAAE,IAAI,KAAK,CAAC,uDAAuD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,mDAAmD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AACtX,uBAAuB,EAAE,QAAQ,CAAC,WAAW,IAAI,kBAAkB,CAAC;AACpE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACpG;AACA,IAAI,CAAC;CACL,GAAG,KAAK,MAAM;CACd,IAAI,OAAO;AACX,qEAAqE,EAAE,QAAQ,CAAC,EAAE,IAAI,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,uDAAuD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,mDAAmD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAC5a,IAAI,CAAC;CACL,GAAG;CACH,IAAI,OAAO,EAAE;CACb;CACA,CAAC;;CAED,CAAC,kBAAkB,GAAG;CACtB,EAAE,MAAM,SAAS,GAAG;CACpB,GAAG,cAAc;CACjB,IAAI,gGAAgG;CACpG,GAAG,aAAa;CAChB,IAAI,+FAA+F;CACnG,GAAG,MAAM;CACT,IAAI,2GAA2G;CAC/G,GAAG,MAAM;CACT,IAAI,kJAAkJ;CACtJ,GAAG;CACH,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC;CAC5E,CAAC;;CAED,CAAC,mBAAmB,GAAG;CACvB,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;CAE3B;CACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC;CAC7E,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;CAEjE;CACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa;CACpD,GAAG;CACH,GAAG;CACH,EAAE,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;;CAEjE;CACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa;CACnD,GAAG;CACH,GAAG;CACH,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CAC5C,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;CAC7C,EAAE,CAAC,CAAC;;CAEJ;CACA,EAAE,IAAI,CAAC,yBAAyB,EAAE;;CAElC;CACA,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK;CAC/B,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;CAC3B,IAAI,IAAI,CAAC,cAAc,EAAE;CACzB,GAAG;CACH,EAAE,CAAC;CACH,EAAE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;CAC3D,CAAC;;CAED,CAAC,yBAAyB,GAAG;CAC7B,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU;;CAE5C,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;CACtB,GAAG,IAAI,CAAC;CACR,KAAK,gBAAgB,CAAC,0BAA0B;CAChD,KAAK,OAAO,CAAC,CAAC,GAAG,KAAK;CACtB,KAAK,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE;CACnC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;CACjD,MAAM;CACN,KAAK,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CAC9C,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CAClE,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;CACxC,MAAM;CACN,KAAK,CAAC,CAAC;CACP,KAAK,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CAC9C,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CAClE,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW;CAC5B,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;CAChE,MAAM;CACN,KAAK,CAAC,CAAC;CACP,IAAI,CAAC,CAAC;CACN,EAAE;;CAEF,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE;CACvB,GAAG,IAAI,CAAC;CACR,KAAK,gBAAgB,CAAC,2BAA2B;CACjD,KAAK,OAAO,CAAC,CAAC,GAAG,KAAK;CACtB,KAAK,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE;CACnC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;CAClD,MAAM;CACN,KAAK,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CAC9C,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY;CACxC,KAAK,CAAC,CAAC;CACP,KAAK,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CAC9C,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CAClE,OAAO,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU;CACvC,MAAM;CACN,KAAK,CAAC,CAAC;CACP,IAAI,CAAC,CAAC;CACN,EAAE;;CAEF,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;CACtB,GAAG,IAAI,CAAC;CACR,KAAK,gBAAgB,CAAC,0BAA0B;CAChD,KAAK,OAAO,CAAC,CAAC,GAAG,KAAK;CACtB,KAAK,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE;CACnC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;CACjD,MAAM;CACN,KAAK,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CAC9C,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CAClE,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;CACxC,MAAM;CACN,KAAK,CAAC,CAAC;CACP,KAAK,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CAC9C,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CAClE,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW;CAC5B,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;CAChE,MAAM;CACN,KAAK,CAAC,CAAC;CACP,IAAI,CAAC,CAAC;CACN,EAAE;;CAEF,EAAE,IAAI,IAAI,KAAK,QAAQ,EAAE;CACzB;CACA,GAAG,IAAI,CAAC;CACR,KAAK,gBAAgB,CAAC,2BAA2B;CACjD,KAAK,OAAO,CAAC,CAAC,GAAG,KAAK;CACtB,KAAK,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE;CACnC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;CAC5C,MAAM;CACN,IAAI,CAAC,CAAC;;CAEN;CACA,GAAG,IAAI,CAAC;CACR,KAAK,gBAAgB,CAAC,yBAAyB;CAC/C,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK;CACzB,KAAK,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK;CAC9C,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;CAC7D,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK;CACrB,KAAK,CAAC,CAAC;CACP,IAAI,CAAC,CAAC;;CAEN;CACA,GAAG,IAAI,CAAC;CACR,KAAK,gBAAgB,CAAC,wBAAwB;CAC9C,KAAK,OAAO,CAAC,CAAC,KAAK,KAAK;CACxB,KAAK,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;CAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;CAC5D,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK;CACrB,KAAK,CAAC,CAAC;CACP,IAAI,CAAC,CAAC;CACN,EAAE;CACF,CAAC;;CAED,CAAC,UAAU,CAAC,KAAK,EAAE;CACnB,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK;CAChC,EAAE,IAAI,CAAC;CACP,IAAI,gBAAgB,CAAC,0BAA0B;CAC/C,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK;CACrB,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;CAChD,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE;CAC5B,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;CACrC,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;CACtC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;CAC7B,IAAI,CAAC,MAAM;CACX,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU;CACzB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS;CACjE,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW;CAC1B,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;CAC9D,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK;CACpB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;CAC9D,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,CAAC;;CAED,CAAC,WAAW,CAAC,KAAK,EAAE;CACpB,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK;CAChC,EAAE,IAAI,CAAC;CACP,IAAI,gBAAgB,CAAC,2BAA2B;CAChD,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK;CACrB,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,KAAK,KAAK,GAAG,YAAY,GAAG,UAAU;CACxE,GAAG,CAAC,CAAC;CACL,CAAC;;CAED,CAAC,UAAU,CAAC,KAAK,EAAE;CACnB,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK;CAChC,EAAE,IAAI,CAAC;CACP,IAAI,gBAAgB,CAAC,0BAA0B;CAC/C,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK;CACrB,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;CAChD,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE;CAC5B,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;CACrC,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;CACtC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;CAC7B,IAAI,CAAC,MAAM;CACX,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU;CACzB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS;CACjE,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW;CAC1B,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;CAC9D,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK;CACpB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;CAC9D,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,CAAC;;CAED,CAAC,gBAAgB,CAAC,IAAI,EAAE;CACxB,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI;CACjD,EAAE,IAAI,CAAC;CACP,IAAI,gBAAgB,CAAC,2BAA2B;CAChD,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK;CACrB,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;CACnC,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;CACrC,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;CACtC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;CAC7B,IAAI,CAAC,MAAM;CACX,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU;CACzB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS;CACjE,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW;CAC1B,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;CAC9D,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK;CACpB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;CAC9D,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,CAAC;;CAED,CAAC,MAAM,aAAa,GAAG;CACvB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU;;CAE5C;CACA,EAAE;CACF,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK;CACvD,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK;CAC9B,IAAI;CACJ,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;CAC5C,GAAG;CACH,EAAE;;CAEF,EAAE,MAAM,YAAY,GAAG;CACvB,GAAG,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;CACjC,GAAG,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;CACtC,GAAG,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa;CAC1C,GAAG;;CAEH,EAAE,MAAM,QAAQ,GAAG;CACnB,GAAG,IAAI,EAAE,IAAI;CACb,GAAG,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;CAChC,GAAG,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;CACtC,GAAG,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa;CAChD,GAAG,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CACtC,GAAG;;CAEH;CACA,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;CACnC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;CACxC,EAAE;;CAEF;CACA,EAAE,IAAI;CACN,GAAG,MAAM,QAAQ;CACjB,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;CAChE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC;CACrE,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC;CAClE,EAAE;;CAEF,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;CAExE,EAAE,IAAI,CAAC,YAAY,EAAE;CACrB,EAAE,IAAI,CAAC,wBAAwB,EAAE;CACjC,CAAC;;CAED,CAAC,MAAM,cAAc,GAAG;CACxB;CACA,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;CACnC,GAAG,IAAI;CACP,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;CACpE,GAAG,CAAC,CAAC,OAAO,KAAK,EAAE;CACnB,IAAI,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC;CACpE,GAAG;CACH,EAAE;;CAEF,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;CACpC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;CACjC,EAAE;CACF,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CAC9D,EAAE,IAAI,CAAC,YAAY,EAAE;CACrB,CAAC;;CAED,CAAC,UAAU,CAAC,OAAO,EAAE;CACrB;CACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC;CAC7E,EAAE,IAAI,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE;;CAEjC,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC7C,EAAE,KAAK,CAAC,SAAS,GAAG,uBAAuB;CAC3C,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;CACrB,GAAG,uEAAuE;CAC1E,EAAE,KAAK,CAAC,WAAW,GAAG,OAAO;;CAE7B,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa;CACpD,GAAG;CACH,GAAG;CACH,EAAE,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;;CAErD,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;CACxC,CAAC;;CAED,CAAC,wBAAwB,GAAG;CAC5B,EAAE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CACpD,EAAE,YAAY,CAAC,SAAS,GAAG,yBAAyB;CACpD,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;CACH,EAAE,YAAY,CAAC,SAAS,GAAG;AAC3B;AACA;AACA;AACA;AACA,EAAE,CAAC;CACH,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;;CAEzC,EAAE,UAAU,CAAC,MAAM;CACnB,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;CACnC,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,mBAAmB;CACtD,GAAG,UAAU,CAAC,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;CAC/C,EAAE,CAAC,EAAE,IAAI,CAAC;CACV,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;CAC3B,GAAG,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;CAC/D,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI;CAC7B,EAAE;;CAEF;CACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;CACrC,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe;;CAEzC,EAAE,IAAI,QAAQ,EAAE;CAChB,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;CAC/B,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS;CAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK;CACpC,OAAO;CACP,OAAO,kBAAkB;CACzB,GAAG,UAAU,CAAC,MAAM;CACpB,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE;CACzC,KAAK,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC;CAC9C,IAAI;CACJ,GAAG,CAAC,EAAE,GAAG,CAAC;CACV,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI;CAC5B,EAAE;;CAEF,EAAE,IAAI,UAAU,EAAE;CAClB,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;CACjC,GAAG,UAAU,CAAC,MAAM;CACpB,IAAI,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE;CAC7C,KAAK,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC;CAClD,IAAI;CACJ,GAAG,CAAC,EAAE,GAAG,CAAC;CACV,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI;CAC9B,EAAE;;CAEF,EAAE,IAAI,CAAC,WAAW,GAAG;CACrB,GAAG,KAAK,EAAE,IAAI;CACd,GAAG,QAAQ,EAAE,EAAE;CACf,GAAG,aAAa,EAAE,EAAE;CACpB,GAAG,SAAS,EAAE,KAAK;CACnB,GAAG;CACH,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,CAAC,YAAY,EAAE;CACrB,EAAE,KAAK,CAAC,OAAO,EAAE;CACjB,CAAC;CACD;;CCpmBO,MAAM,SAAS,SAAS,UAAU,CAAC;CAC1C,CAAC,WAAW,CAAC,OAAO,EAAE;CACtB,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;CACpC,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;CAC3C,EAAE,GAAG,CAAC,SAAS,GAAG,CAAC,0CAA0C,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CACrH,EAAE,GAAG,CAAC,SAAS,GAAG;AAClB;AACA;AACA;AACA,IAAI,CAAC;;CAEL,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;CACjC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;CACtD,EAAE;;CAEF,EAAE,OAAO,GAAG;CACZ,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC;CACjE,EAAE,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;;CAE/C,EAAE,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CAC3C,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;CACjC,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE;CACnD,GAAG;CACH,EAAE,CAAC,CAAC;;CAEJ,EAAE,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;CAC3C,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM;CAC/B,EAAE,CAAC,CAAC;CACJ,CAAC;;CAED,CAAC,kBAAkB,GAAG;CACtB,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;CACxC,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;CAClC,GAAG,OAAO,kBAAkB;CAC5B,EAAE,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxC,GAAG,OAAO,iBAAiB;CAC3B,EAAE;CACF,EAAE,OAAO,MAAM;CACf,CAAC;;CAED,CAAC,UAAU,CAAC,IAAI,EAAE;CAClB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC;CACvE,EAAE,IAAI,WAAW,EAAE;CACnB,GAAG,WAAW,CAAC,WAAW,GAAG,IAAI;CACjC,EAAE;CACF,CAAC;;CAED,CAAC,cAAc,CAAC,QAAQ,EAAE;CAC1B,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ;CAClC,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO;CAC1D,IAAI,kBAAkB;CACtB,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;CACzB,IAAI;CACJ,EAAE;CACF,CAAC;CACD;;CCzDO,MAAM,aAAa,CAAC;CAC3B,CAAC,OAAO,OAAO,GAAG,IAAI,GAAG,CAAC;CAC1B,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;CAC1B,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;CACpB,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;CAC1B,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;CAC1B,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC;CAChC,EAAE,CAAC;;CAEH,CAAC,OAAO,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE;CACpC,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;CAChD,GAAG,MAAM,IAAI,QAAQ,CAAC,wCAAwC,CAAC;CAC/D,EAAE;;CAEF,EAAE,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;CACzC,GAAG,MAAM,IAAI,QAAQ,CAAC,6CAA6C,CAAC;CACpE,EAAE;;CAEF,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;CACrC,CAAC;;CAED,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;CACnC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;CAE5C,EAAE,IAAI,CAAC,WAAW,EAAE;CACpB,GAAG,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACpE,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC;CACrE,IAAI;CACJ,EAAE;;CAEF,EAAE,IAAI;CACN,GAAG,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;CAClC,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI,CAAC,iCAAiC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACjE,IAAI;CACJ,IAAI;CACJ,EAAE;CACF,CAAC;;CAED,CAAC,OAAO,iBAAiB,GAAG;CAC5B,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;CACxC,CAAC;;CAED,CAAC,OAAO,gBAAgB,CAAC,IAAI,EAAE;CAC/B,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;CAC/B,CAAC;;CAED,CAAC,OAAO,UAAU,CAAC,IAAI,EAAE;CACzB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;CAClC,CAAC;;CAED,CAAC,OAAO,KAAK,GAAG;CAChB,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;CACtB,CAAC;;CAED,CAAC,OAAO,cAAc,CAAC,IAAI,EAAE;CAC7B,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;CAC/B,CAAC;CACD;;CC7DO,MAAM,WAAW,CAAC;CACzB,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;CAC1B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;CACpD,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK;CAC1B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE;CAC1B,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE;;CAEhC,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC;CACnC,GAAG,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;CAC7B,GAAG,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;CACnC,GAAG,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;CACvC,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;CACzB,GAAG,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;CACvB,GAAG,CAAC;;CAEJ,EAAE,IAAI,CAAC,YAAY,EAAE;CACrB,CAAC;;CAED,CAAC,MAAM,IAAI,GAAG;CACd,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;CACxB,GAAG,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE;CACtC,EAAE;;CAEF,EAAE,IAAI;CACN,GAAG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;;CAEvE;CACA,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE;CACxB,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACzD,GAAG;;CAEH,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI;CAC1B,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE;CACzC,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM;CACvB,IAAI,YAAY,EAAE,QAAQ,CAAC,YAAY;CACvC,IAAI,CAAC;;CAEL,GAAG,OAAO;CACV,IAAI,WAAW,EAAE,IAAI;CACrB,IAAI,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;CACjC,IAAI,YAAY,EAAE,QAAQ,CAAC,YAAY;CACvC,IAAI,SAAS,EAAE,QAAQ,CAAC,SAAS;CACjC,IAAI;CACJ,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC;CAC7C,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,0BAA0B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC;CAC1E,EAAE;CACF,CAAC;;CAED,CAAC,YAAY,CAAC,IAAI,GAAG,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;CAC7C,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;CACzB,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI;CACJ,IAAI;CACJ,EAAE;;CAEF,EAAE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;CACvC,EAAE,MAAM,aAAa,GAAG;CACxB,GAAG,EAAE,EAAE,QAAQ;CACf,GAAG,GAAG,EAAE,IAAI;CACZ,GAAG,UAAU,EAAE,IAAI,CAAC,UAAU;CAC9B,GAAG,GAAG,IAAI,CAAC,MAAM;CACjB,GAAG,GAAG,OAAO;CACb,GAAG;;CAEH,EAAE,IAAI;CACN,GAAG,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;CAC3D,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;CACrC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CACzD,GAAG,OAAO,MAAM;CAChB,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC;CACzE,EAAE;CACF,CAAC;;CAED,CAAC,SAAS,CAAC,EAAE,EAAE;CACf,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;CAC7B,CAAC;;CAED;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,MAAM,gBAAgB,CAAC,OAAO,GAAG,EAAE,EAAE;CACtC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;CACzB,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI;CACJ,IAAI;CACJ,EAAE;;CAEF,EAAE,IAAI;CACN,GAAG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC;CACjE,GAAG,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE;CAC3B,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;CAClB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC;CAC7C,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACtD,IAAI;CACJ,IAAI;CACJ,EAAE;CACF,CAAC;;CAED;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;CAC9C,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;CACzB,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI;CACJ,IAAI;CACJ,EAAE;;CAEF;CACA,EAAE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE;CAC/C,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;;CAE7D,EAAE,IAAI,CAAC,YAAY,EAAE;CACrB,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,yBAAyB;CACzD,IAAI;CACJ,EAAE;;CAEF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC;CACzB,GAAG,QAAQ,EAAE,YAAY,CAAC,EAAE;CAC5B,GAAG,UAAU,EAAE,YAAY,CAAC,IAAI;CAChC,GAAG,KAAK,EAAE,YAAY,CAAC,KAAK;CAC5B,GAAG,WAAW,EAAE,YAAY,CAAC,WAAW;CACxC,GAAG,QAAQ,EAAE,YAAY,CAAC,SAAS;CACnC,GAAG,SAAS,EAAE,YAAY,CAAC,UAAU;CACrC,GAAG,eAAe,EAAE,YAAY,CAAC,SAAS;CAC1C,GAAG,GAAG,OAAO;CACb,GAAG,CAAC;CACJ,CAAC;;CAED;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,EAAE;CAC1B,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;CACzB,GAAG,MAAM,IAAI,QAAQ;CACrB,IAAI;CACJ,IAAI;CACJ,EAAE;;CAEF,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;CACnD,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC7B,GAAG,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK;CAC1D,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,cAAc;CAC/C,GAAG,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO;CACvD,GAAG,KAAK,EAAE,OAAO,CAAC,KAAK;CACvB,GAAG,WAAW,EAAE,OAAO,CAAC,WAAW;CACnC,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC7B,GAAG,SAAS,EAAE,OAAO,CAAC,SAAS;CAC/B,GAAG,eAAe,EAAE,OAAO,CAAC,eAAe;CAC3C,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC7B,GAAG,SAAS,EAAE,OAAO,CAAC,SAAS;CAC/B,GAAG,CAAC;;CAEJ,EAAE,YAAY,CAAC,KAAK,EAAE;CACtB,EAAE,YAAY,CAAC,IAAI,EAAE;;CAErB,EAAE,OAAO,YAAY;CACrB,CAAC;;CAED,CAAC,aAAa,GAAG;CACjB,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;CAC1C,CAAC;;CAED,CAAC,aAAa,CAAC,EAAE,EAAE;CACnB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;CACrC,EAAE,IAAI,MAAM,EAAE;CACd,GAAG,MAAM,CAAC,OAAO,EAAE;CACnB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;CAC1B,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;CACzD,GAAG,OAAO,IAAI;CACd,EAAE;CACF,EAAE,OAAO,KAAK;CACd,CAAC;;CAED,CAAC,iBAAiB,GAAG;CACrB,EAAE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;CAC9C,GAAG,MAAM,CAAC,OAAO,EAAE;CACnB,EAAE;CACF,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;CACtB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;CACvC,CAAC;;CAED,CAAC,YAAY,CAAC,SAAS,EAAE;CACzB,EAAE,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;CACtC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;;CAEpE,EAAE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;CAC9C,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;CACzC,EAAE;;CAEF,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE;CACvC,GAAG,SAAS;CACZ,GAAG,SAAS,EAAE,IAAI,CAAC,MAAM;CACzB,GAAG,CAAC;CACJ,CAAC;;CAED,CAAC,cAAc,CAAC,WAAW,EAAE;CAC7B,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW;CACvC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;CACvB,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC;CAC9C,EAAE;CACF,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC;CACrD,CAAC;;CAED,CAAC,cAAc,GAAG;CAClB,EAAE;CACF,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;CAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,IAAI;CAC7D;CACA,CAAC;;CAED,CAAC,MAAM,YAAY,CAAC,cAAc,GAAG,IAAI,EAAE;CAC3C,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;CAChC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK;;CAE1B,EAAE,IAAI,cAAc,EAAE;CACtB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;CACtC,EAAE;;CAEF,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE;CACpB,CAAC;;CAED,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE;CACrB,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;CACnC,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE;CACtB,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;CACpC,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;CACvB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;CACrC,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;CACnB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;CACjC,EAAE,OAAO,IAAI;CACb,CAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,CAAC,iBAAiB,EAAE;CAC1B,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;CACpC,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;CAChC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK;CAC1B,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;CACrC,CAAC;;CAED,CAAC,uBAAuB,CAAC,SAAS,EAAE,cAAc,GAAG,EAAE,EAAE;CACzD,EAAE,MAAM,aAAa,GAAG;CACxB,GAAG,MAAM,EAAE,IAAI;CACf,GAAG,SAAS,EAAE,IAAI;CAClB,GAAG,WAAW,EAAE,IAAI;CACpB,GAAG,QAAQ,EAAE,cAAc;CAC3B,GAAG,KAAK,EAAE,OAAO;CACjB,GAAG,OAAO,EAAE,SAAS;CACrB,GAAG,QAAQ,EAAE,IAAI;CACjB,GAAG,KAAK,EAAE,KAAK;CACf,GAAG,IAAI,EAAE,KAAK;CACd,GAAG,GAAG,EAAE,YAAY;CACpB,GAAG;;CAEH,EAAE,MAAM,YAAY,GAAG,SAAS;CAChC,GAAG,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;CAC3C,GAAG;CACH,GAAG;;CAEH,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;CAC/B,GAAG,MAAM,IAAI,WAAW,CAAC,2CAA2C,CAAC;CACrE,EAAE;;CAEF,EAAE,IAAI,YAAY,CAAC,WAAW,EAAE;CAChC,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,WAAW,CAAC;CACtD,EAAE;;CAEF,EAAE,OAAO,YAAY;CACrB,CAAC;;CAED,CAAC,oBAAoB,CAAC,WAAW,EAAE;CACnC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;CAClD,GAAG,MAAM,IAAI,WAAW;CACxB,IAAI;CACJ,IAAI;CACJ,EAAE;;CAEF,EAAE,MAAM,cAAc,GAAG;CACzB,GAAG,OAAO,EAAE,QAAQ;CACpB,GAAG,KAAK,EAAE,QAAQ;CAClB,GAAG,IAAI,EAAE,QAAQ;CACjB,GAAG,aAAa,EAAE,QAAQ;CAC1B,GAAG,OAAO,EAAE,QAAQ;CACpB,GAAG;;CAEH,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;CACpE,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE;CACrE,IAAI,MAAM,IAAI,WAAW;CACzB,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;CACnE,KAAK;CACL,GAAG;CACH,EAAE;CACF,CAAC;;CAED,CAAC,YAAY,GAAG;CAChB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;CAClD,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;CACpD,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;CAClD,CAAC;;CAED,CAAC,OAAO,MAAM,CAAC,MAAM,EAAE;CACvB,EAAE,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC;CAChC,CAAC;;CAED,CAAC,aAAa,aAAa,CAAC,MAAM,EAAE;CACpC,EAAE,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC;CACrC,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE;CAClB,EAAE,OAAO,GAAG;CACZ,CAAC;;CAED,CAAC,OAAO,0BAA0B,CAAC,QAAQ,EAAE;CAC7C,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI;;CAE5B,EAAE,OAAO;CACT,GAAG,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO;CAC3D,GAAG,KAAK,EAAE,QAAQ,CAAC,KAAK;CACxB,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,SAAS;CACrE,GAAG,aAAa,EAAE;CAClB,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI;CACvB,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,IAAI;CACtD,IAAI,IAAI,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;CACrC,IAAI;CACJ,GAAG,OAAO;CACV,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC;CACjC,OAAO;CACP,OAAO,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE;CAC5D,OAAO,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,IAAI;CAClE,OAAO,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,aAAa;CACrD;CACA,OAAO,SAAS;CAChB,GAAG;CACH,CAAC;CACD;;CCzXO,MAAM,gBAAgB,GAAG;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCxnDM,MAAM,UAAU,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CCrmBD,SAAS,YAAY,GAAG;CACxB,CAAC;CACD,EAAE,OAAO,QAAQ,KAAK,WAAW;CACjC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB;CAChD,GAAG;CACH,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;CAC/C,EAAE,KAAK,CAAC,EAAE,GAAG,qBAAqB;CAClC,EAAE,KAAK,CAAC,WAAW,GAAG,UAAU,GAAG,gBAAgB;CACnD,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;CAClC,CAAC;CACD;;CAEA,SAAS,QAAQ,GAAG;CACpB,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,iBAAiB,EAAE;CAChE,EAAE,YAA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"}
|