@fairfox/polly 0.15.0 → 0.15.4

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.
@@ -50,7 +50,7 @@
50
50
  "// Architecture analysis - main orchestrator\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n ArchitectureAnalysis,\n ContextInfo,\n ManifestInfo,\n ProjectConfig,\n} from \"../types/architecture\";\nimport type { MessageHandler } from \"../types/core\";\nimport { extractADRs } from \"./adr\";\nimport { ContextAnalyzer } from \"./contexts\";\nimport { FlowAnalyzer } from \"./flows\";\nimport { HandlerExtractor } from \"./handlers\";\nimport { IntegrationAnalyzer } from \"./integrations\";\nimport { ManifestParser } from \"./manifest\";\n\nexport interface ArchitectureAnalysisOptions {\n /** Path to tsconfig.json */\n tsConfigPath: string;\n\n /** Project root directory */\n projectRoot: string;\n\n /** Optional: Override detected contexts */\n contexts?: string[];\n\n /** Optional: Use generic project detection (non-extension) */\n useProjectDetector?: boolean;\n}\n\n/**\n * Comprehensive architecture analyzer\n */\nexport class ArchitectureAnalyzer {\n private options: ArchitectureAnalysisOptions;\n\n constructor(options: ArchitectureAnalysisOptions) {\n this.options = options;\n }\n\n /**\n * Perform complete architecture analysis\n */\n async analyze(): Promise<ArchitectureAnalysis> {\n // 1. Initialize system info and entry points\n const { manifest, projectConfig, entryPoints, systemInfo } = await this.initializeSystemInfo();\n\n // 2. Extract message handlers\n const handlerExtractor = new HandlerExtractor(this.options.tsConfigPath);\n const { handlers } = handlerExtractor.extractHandlers();\n\n // 3. Analyze each context\n const contexts = this.analyzeContexts(entryPoints, handlers);\n\n // 4. Analyze message flows\n const flowAnalyzer = new FlowAnalyzer(this.options.tsConfigPath, handlers);\n const messageFlows = flowAnalyzer.analyzeFlows();\n\n // 5. Analyze external integrations\n const integrationAnalyzer = new IntegrationAnalyzer(this.options.tsConfigPath);\n const integrations = integrationAnalyzer.analyzeIntegrations();\n\n // 6. Merge external API calls into context info\n this.mergeExternalAPIsIntoContexts(contexts, integrations);\n\n // 7. Extract ADRs (Architecture Decision Records)\n const adrs = extractADRs(this.options.projectRoot);\n\n // 8. Extract repository info\n const repository = this.extractRepositoryInfo();\n\n return {\n projectRoot: this.options.projectRoot,\n system: systemInfo,\n ...(manifest ? { manifest } : {}),\n ...(projectConfig ? { projectConfig } : {}),\n contexts,\n messageFlows,\n integrations,\n ...(adrs.adrs.length > 0 ? { adrs } : {}),\n ...(repository ? { repository } : {}),\n };\n }\n\n /**\n * Initialize system information and entry points\n */\n private async initializeSystemInfo(): Promise<{\n manifest?: ManifestInfo;\n projectConfig?: ProjectConfig;\n entryPoints: Record<string, string>;\n systemInfo: { name: string; version: string; description?: string };\n }> {\n const manifestParser = new ManifestParser(this.options.projectRoot, true);\n\n if (manifestParser.hasManifest() && !this.options.useProjectDetector) {\n // Parse manifest.json (Chrome extension)\n const manifest = manifestParser.parse();\n const entryPoints = manifestParser.getContextEntryPoints();\n\n return {\n manifest,\n entryPoints,\n systemInfo: {\n name: manifest.name,\n version: manifest.version,\n ...(manifest.description ? { description: manifest.description } : {}),\n },\n };\n }\n\n // Use project detector for generic projects\n const { detectProjectConfig } = await import(\"./project-detector\");\n const projectConfig = detectProjectConfig(this.options.projectRoot);\n\n return {\n projectConfig,\n entryPoints: projectConfig.entryPoints,\n systemInfo: {\n name: projectConfig.metadata?.name || \"Unknown Project\",\n version: projectConfig.metadata?.version || \"0.0.0\",\n ...(projectConfig.metadata?.description\n ? { description: projectConfig.metadata.description }\n : {}),\n },\n };\n }\n\n /**\n * Analyze all contexts from entry points\n */\n private analyzeContexts(\n entryPoints: Record<string, string>,\n handlers: MessageHandler[]\n ): Record<string, ContextInfo> {\n const contextAnalyzer = new ContextAnalyzer(this.options.tsConfigPath);\n const contexts: Record<string, ContextInfo> = {};\n\n for (const [contextType, entryPoint] of Object.entries(entryPoints)) {\n try {\n const contextInfo = contextAnalyzer.analyzeContext(contextType, entryPoint, handlers);\n contexts[contextType] = contextInfo;\n } catch (error) {\n // Skip contexts that fail to analyze\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Failed to analyze context ${contextType}: ${error}`);\n }\n }\n }\n\n return contexts;\n }\n\n /**\n * Merge external API calls into their respective contexts\n */\n private mergeExternalAPIsIntoContexts(\n contexts: Record<string, ContextInfo>,\n integrations: ExternalIntegration[]\n ): void {\n for (const integration of integrations) {\n if (integration.calls) {\n for (const call of integration.calls) {\n // Find which context this call belongs to\n for (const [contextType, contextInfo] of Object.entries(contexts)) {\n if (call.location.file.includes(`/${contextType}/`)) {\n contextInfo.externalAPIs.push(call);\n break;\n }\n }\n }\n }\n }\n }\n\n /**\n * Extract repository information from package.json\n */\n private extractRepositoryInfo(): ArchitectureAnalysis[\"repository\"] {\n const packageJsonPath = path.join(this.options.projectRoot, \"package.json\");\n\n if (!fs.existsSync(packageJsonPath)) {\n return undefined;\n }\n\n try {\n const content = fs.readFileSync(packageJsonPath, \"utf-8\");\n const packageJson = JSON.parse(content);\n\n if (packageJson.repository) {\n if (typeof packageJson.repository === \"string\") {\n return {\n url: packageJson.repository,\n type: \"git\",\n };\n }\n\n return {\n url: packageJson.repository.url || packageJson.repository,\n type: packageJson.repository.type || \"git\",\n };\n }\n } catch (error) {\n // Skip if package.json is malformed or unreadable\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Failed to extract repository info from package.json: ${error}`);\n }\n }\n\n return undefined;\n }\n}\n\n/**\n * Convenience function to analyze architecture\n */\nexport async function analyzeArchitecture(\n options: ArchitectureAnalysisOptions\n): Promise<ArchitectureAnalysis> {\n const analyzer = new ArchitectureAnalyzer(options);\n return analyzer.analyze();\n}\n\n// Fix: Import ExternalIntegration type\nimport type { ExternalIntegration } from \"../types/architecture\";\n",
51
51
  "// Context analysis - analyze individual execution contexts\n\nimport {\n type ArrowFunction,\n type ClassDeclaration,\n type FunctionDeclaration,\n type FunctionExpression,\n Node,\n Project,\n type SourceFile,\n} from \"ts-morph\";\nimport type { ComponentInfo, ContextInfo } from \"../types/architecture\";\nimport type { MessageHandler } from \"../types/core\";\n\nexport class ContextAnalyzer {\n private project: Project;\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n }\n\n /**\n * Analyze a specific context given its entry point\n */\n analyzeContext(contextType: string, entryPoint: string, handlers: MessageHandler[]): ContextInfo {\n const sourceFile = this.project.getSourceFile(entryPoint);\n\n if (!sourceFile) {\n throw new Error(`Could not find source file: ${entryPoint}`);\n }\n\n // Extract Chrome API usage\n const chromeAPIs = this.extractChromeAPIs(sourceFile);\n\n // Extract dependencies\n const dependencies = this.extractDependencies(sourceFile);\n\n // Extract JSDoc description\n const description = this.extractDescription(sourceFile);\n\n // Extract components (for UI contexts)\n const components = this.isUIContext(contextType)\n ? this.extractComponents(sourceFile)\n : undefined;\n\n // Filter handlers for this context\n const contextHandlers = handlers.filter((h) => h.node === contextType);\n\n return {\n type: contextType,\n entryPoint,\n handlers: contextHandlers,\n chromeAPIs,\n externalAPIs: [], // Will be filled by integration analyzer\n ...(components ? { components } : {}),\n dependencies,\n ...(description ? { description } : {}),\n };\n }\n\n /**\n * Extract Chrome API usage from source file\n */\n private extractChromeAPIs(sourceFile: SourceFile): string[] {\n const apis = new Set<string>();\n\n sourceFile.forEachDescendant((node: Node) => {\n if (Node.isPropertyAccessExpression(node)) {\n const text = node.getText();\n this.detectAPIPattern(text, apis);\n }\n });\n\n return Array.from(apis).sort();\n }\n\n /**\n * Detect and extract API from text using various patterns\n */\n private detectAPIPattern(text: string, apis: Set<string>): void {\n // Match chrome.* API calls\n if (text.startsWith(\"chrome.\")) {\n const api = this.extractAPIFromPrefix(text, \"chrome\");\n if (api) apis.add(api);\n return;\n }\n\n // Match browser.* for Firefox compatibility\n if (text.startsWith(\"browser.\")) {\n const api = this.extractAPIFromPrefix(text, \"browser\");\n if (api) apis.add(api);\n return;\n }\n\n // Match bus.adapters.* pattern (framework abstraction)\n if (text.includes(\"bus.adapters.\")) {\n const api = this.extractAPIFromBusAdapter(text);\n if (api) apis.add(api);\n }\n }\n\n /**\n * Extract API namespace from chrome.* or browser.* prefix\n */\n private extractAPIFromPrefix(text: string, prefix: string): string | null {\n const pattern = new RegExp(`^${prefix}\\\\.([^.(]+(?:\\\\.[^.(]+)?)`);\n const match = text.match(pattern);\n return match?.[1] || null;\n }\n\n /**\n * Extract API from bus.adapters.* pattern\n */\n private extractAPIFromBusAdapter(text: string): string | null {\n const match = text.match(/bus\\.adapters\\.([^.(]+)/);\n return match?.[1] || null;\n }\n\n /**\n * Extract import dependencies\n */\n private extractDependencies(sourceFile: SourceFile): string[] {\n const deps: string[] = [];\n\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const moduleSpecifier = importDecl.getModuleSpecifierValue();\n deps.push(moduleSpecifier);\n }\n\n return deps;\n }\n\n /**\n * Extract JSDoc description from file\n */\n private extractDescription(sourceFile: SourceFile): string | undefined {\n // Look for file-level JSDoc comment\n const firstStatement = sourceFile.getStatements()[0];\n if (!firstStatement) return undefined;\n\n const leadingComments = firstStatement.getLeadingCommentRanges();\n if (leadingComments.length === 0) return undefined;\n\n const firstComment = leadingComments[0];\n if (!firstComment) return undefined;\n\n const comment = firstComment.getText();\n\n // Extract description from JSDoc\n const descMatch = comment.match(/@description\\s+(.+?)(?:\\n|$)/s);\n if (descMatch?.[1]) {\n return descMatch[1].trim();\n }\n\n // Or just take the first line of the comment\n const lines = comment\n .split(\"\\n\")\n .map((l: string) => l.replace(/^[\\s*]+/, \"\").trim())\n .filter((l: string) => l && !l.startsWith(\"@\"));\n\n return lines[0] || undefined;\n }\n\n /**\n * Extract React/Preact components from source file\n */\n private extractComponents(sourceFile: SourceFile): ComponentInfo[] {\n const components: ComponentInfo[] = [];\n\n sourceFile.forEachDescendant((node: Node) => {\n this.extractFunctionComponent(node, sourceFile, components);\n this.extractArrowFunctionComponent(node, sourceFile, components);\n this.extractClassComponent(node, sourceFile, components);\n });\n\n return components;\n }\n\n /**\n * Extract function component from node if applicable\n */\n private extractFunctionComponent(\n node: Node,\n sourceFile: SourceFile,\n components: ComponentInfo[]\n ): void {\n if (!Node.isFunctionDeclaration(node)) return;\n\n const name = node.getName();\n if (!name || !this.looksLikeComponent(name, node)) return;\n\n const description = this.extractJSDocDescription(node);\n components.push({\n name,\n type: \"function\",\n filePath: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n props: this.extractProps(node),\n ...(description ? { description } : {}),\n });\n }\n\n /**\n * Extract arrow function component from node if applicable\n */\n private extractArrowFunctionComponent(\n node: Node,\n sourceFile: SourceFile,\n components: ComponentInfo[]\n ): void {\n if (!Node.isVariableDeclaration(node)) return;\n\n const name = node.getName();\n const initializer = node.getInitializer();\n\n if (!name || !initializer) return;\n if (!Node.isArrowFunction(initializer) && !Node.isFunctionExpression(initializer)) return;\n if (!this.looksLikeComponent(name, initializer)) return;\n\n const description = this.extractJSDocDescription(node);\n components.push({\n name,\n type: \"function\",\n filePath: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n props: this.extractProps(initializer),\n ...(description ? { description } : {}),\n });\n }\n\n /**\n * Extract class component from node if applicable\n */\n private extractClassComponent(\n node: Node,\n sourceFile: SourceFile,\n components: ComponentInfo[]\n ): void {\n if (!Node.isClassDeclaration(node)) return;\n\n const name = node.getName();\n if (!name || !this.looksLikeClassComponent(node)) return;\n\n const description = this.extractJSDocDescription(node);\n components.push({\n name,\n type: \"class\",\n filePath: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n props: this.extractPropsFromClass(node),\n ...(description ? { description } : {}),\n });\n }\n\n /**\n * Check if a function looks like a React/Preact component\n */\n private looksLikeComponent(\n name: string,\n node: FunctionDeclaration | ArrowFunction | FunctionExpression\n ): boolean {\n // Component names should start with uppercase\n if (!/^[A-Z]/.test(name)) return false;\n\n // Check if it returns JSX\n const body = node.getBody();\n if (!body) return false;\n\n let hasJSX = false;\n\n if (Node.isBlock(body)) {\n body.forEachDescendant((child: Node) => {\n if (Node.isJsxElement(child) || Node.isJsxSelfClosingElement(child)) {\n hasJSX = true;\n }\n });\n } else if (Node.isJsxElement(body) || Node.isJsxSelfClosingElement(body)) {\n // Arrow function with implicit return\n hasJSX = true;\n }\n\n return hasJSX;\n }\n\n /**\n * Check if a class looks like a React component\n */\n private looksLikeClassComponent(node: ClassDeclaration): boolean {\n const extendedTypes = node.getExtends();\n if (!extendedTypes) return false;\n\n const extendsText = extendedTypes.getText();\n return /Component|PureComponent/.test(extendsText);\n }\n\n /**\n * Extract props from function component\n */\n private extractProps(node: FunctionDeclaration | ArrowFunction | FunctionExpression): string[] {\n const params = node.getParameters();\n if (params.length === 0) return [];\n\n const propsParam = params[0];\n if (!propsParam) return [];\n\n const type = propsParam.getType();\n\n const props: string[] = [];\n for (const prop of type.getProperties()) {\n props.push(prop.getName());\n }\n\n return props;\n }\n\n /**\n * Extract props from class component\n */\n private extractPropsFromClass(node: ClassDeclaration): string[] {\n const extendedTypes = node.getExtends();\n if (!extendedTypes) return [];\n\n const typeArgs = extendedTypes.getType().getTypeArguments();\n if (typeArgs.length === 0) return [];\n\n const propsType = typeArgs[0];\n if (!propsType) return [];\n\n const props: string[] = [];\n\n for (const prop of propsType.getProperties()) {\n props.push(prop.getName());\n }\n\n return props;\n }\n\n /**\n * Extract JSDoc description from node\n */\n private extractJSDocDescription(node: Node): string | undefined {\n if (!Node.isJSDocable(node)) return undefined;\n\n const jsDocs = node.getJsDocs();\n if (jsDocs.length === 0) return undefined;\n\n const firstDoc = jsDocs[0];\n if (!firstDoc) return undefined;\n\n const description = firstDoc.getDescription().trim();\n return description || undefined;\n }\n\n /**\n * Check if context is a UI context\n */\n private isUIContext(contextType: string): boolean {\n return [\"popup\", \"options\", \"devtools\"].includes(contextType);\n }\n}\n",
52
52
  "// Message flow analysis - trace messages between contexts\n\nimport { type CallExpression, Node, Project } from \"ts-morph\";\nimport type { MessageFlow, MessageStep } from \"../types/architecture\";\nimport type { MessageHandler } from \"../types/core\";\n\nexport class FlowAnalyzer {\n private project: Project;\n private handlers: MessageHandler[];\n\n constructor(tsConfigPath: string, handlers: MessageHandler[]) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n this.handlers = handlers;\n }\n\n /**\n * Analyze message flows between contexts\n */\n analyzeFlows(): MessageFlow[] {\n const flows: MessageFlow[] = [];\n\n // Group handlers by message type\n const handlersByType = new Map<string, MessageHandler[]>();\n for (const handler of this.handlers) {\n if (!handlersByType.has(handler.messageType)) {\n handlersByType.set(handler.messageType, []);\n }\n handlersByType.get(handler.messageType)?.push(handler);\n }\n\n // For each message type, trace the flow\n for (const [messageType, handlers] of handlersByType) {\n // Find senders\n const senders = this.findMessageSenders(messageType);\n\n // For each sender, create a flow\n for (const sender of senders) {\n const recipients = handlers.map((h) => h.node);\n\n // Build sequence of steps\n const sequence = this.buildSequence(messageType, sender, handlers);\n\n // Extract flow metadata\n const flowMetadata = this.extractFlowMetadata(sender.file, sender.line);\n\n flows.push({\n messageType,\n from: sender.context,\n to: recipients,\n ...(flowMetadata.trigger ? { trigger: flowMetadata.trigger } : {}),\n ...(flowMetadata.flowName ? { flowName: flowMetadata.flowName } : {}),\n ...(flowMetadata.description ? { description: flowMetadata.description } : {}),\n sequence,\n });\n }\n }\n\n return flows;\n }\n\n /**\n * Find all places where a message is sent\n * Supports: .send(), .emit(), postMessage(), ws.send(), broadcast(), etc.\n */\n private findMessageSenders(messageType: string): Array<{\n context: string;\n file: string;\n line: number;\n }> {\n const senders: Array<{ context: string; file: string; line: number }> = [];\n\n for (const sourceFile of this.project.getSourceFiles()) {\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n sourceFile.forEachDescendant((node) => {\n this.processMessageSender(node, messageType, context, filePath, senders);\n });\n }\n\n return senders;\n }\n\n /**\n * Process a node that might be a message sender\n */\n private processMessageSender(\n node: Node,\n messageType: string,\n context: string,\n filePath: string,\n senders: Array<{ context: string; file: string; line: number }>\n ): void {\n if (!Node.isCallExpression(node)) {\n return;\n }\n\n const expression = node.getExpression();\n\n if (Node.isPropertyAccessExpression(expression)) {\n this.processPropertyAccessSender(node, expression, messageType, context, filePath, senders);\n } else if (Node.isIdentifier(expression)) {\n this.processIdentifierSender(node, expression, messageType, context, filePath, senders);\n }\n }\n\n /**\n * Process property access sender (.send(), .emit(), etc.)\n */\n private processPropertyAccessSender(\n node: CallExpression,\n expression: Node,\n messageType: string,\n context: string,\n filePath: string,\n senders: Array<{ context: string; file: string; line: number }>\n ): void {\n if (!Node.isPropertyAccessExpression(expression)) {\n return;\n }\n\n const methodName = expression.getName();\n\n if (!this.isMessageSendMethod(methodName)) {\n return;\n }\n\n const args = node.getArguments();\n if (args.length === 0) {\n return;\n }\n\n const firstArg = args[0];\n if (!firstArg) return;\n\n const msgType = this.extractMessageTypeFromArg(firstArg);\n if (msgType === messageType) {\n senders.push({\n context,\n file: filePath,\n line: node.getStartLineNumber(),\n });\n }\n }\n\n /**\n * Process identifier sender (postMessage())\n */\n private processIdentifierSender(\n node: CallExpression,\n expression: Node,\n messageType: string,\n context: string,\n filePath: string,\n senders: Array<{ context: string; file: string; line: number }>\n ): void {\n if (!Node.isIdentifier(expression)) {\n return;\n }\n\n if (expression.getText() !== \"postMessage\") {\n return;\n }\n\n const args = node.getArguments();\n if (args.length === 0) {\n return;\n }\n\n const firstArg = args[0];\n if (!firstArg) return;\n\n const msgType = this.extractMessageTypeFromArg(firstArg);\n if (msgType === messageType) {\n senders.push({\n context,\n file: filePath,\n line: node.getStartLineNumber(),\n });\n }\n }\n\n /**\n * Check if method name is a message sending method\n */\n private isMessageSendMethod(methodName: string): boolean {\n return (\n methodName === \"send\" ||\n methodName === \"emit\" ||\n methodName === \"postMessage\" ||\n methodName === \"broadcast\"\n );\n }\n\n /**\n * Build sequence of steps for a message flow\n */\n private buildSequence(\n messageType: string,\n sender: { context: string; file: string; line: number },\n handlers: MessageHandler[]\n ): MessageStep[] {\n const steps: MessageStep[] = [];\n let stepNumber = 1;\n\n // Step 1: Send message\n steps.push({\n step: stepNumber++,\n action: `${sender.context}.send(${messageType})`,\n context: sender.context,\n location: {\n file: sender.file,\n line: sender.line,\n },\n });\n\n // Step 2+: Handle in each recipient context\n for (const handler of handlers) {\n steps.push({\n step: stepNumber++,\n action: `${handler.node}.handle(${messageType})`,\n context: handler.node,\n location: handler.location,\n });\n\n // Add substeps for any messages sent by this handler\n const subsends = this.findMessagesInHandler(handler);\n for (const subsend of subsends) {\n steps.push({\n step: stepNumber++,\n action: `${handler.node}.send(${subsend.messageType})`,\n context: handler.node,\n location: subsend.location,\n });\n }\n }\n\n return steps;\n }\n\n /**\n * Find messages sent within a handler\n */\n private findMessagesInHandler(handler: MessageHandler): Array<{\n messageType: string;\n location: { file: string; line: number };\n }> {\n const sends: Array<{ messageType: string; location: { file: string; line: number } }> = [];\n\n const sourceFile = this.project.getSourceFile(handler.location.file);\n if (!sourceFile) return sends;\n\n const targetLine = handler.location.line;\n\n sourceFile.forEachDescendant((node) => {\n this.processSendCall(node, targetLine, handler.location.file, sends);\n });\n\n return sends;\n }\n\n /**\n * Process a node that might be a send/emit call\n */\n private processSendCall(\n node: Node,\n targetLine: number,\n filePath: string,\n sends: Array<{ messageType: string; location: { file: string; line: number } }>\n ): void {\n if (!Node.isCallExpression(node)) {\n return;\n }\n\n const line = node.getStartLineNumber();\n if (!this.isNearLine(line, targetLine)) {\n return;\n }\n\n const expression = node.getExpression();\n if (!this.isSendOrEmitCall(expression)) {\n return;\n }\n\n const args = node.getArguments();\n if (args.length === 0) {\n return;\n }\n\n const firstArg = args[0];\n if (!firstArg) return;\n\n const messageType = this.extractMessageTypeFromArg(firstArg);\n if (messageType) {\n sends.push({\n messageType,\n location: { file: filePath, line },\n });\n }\n }\n\n /**\n * Check if line is near target line\n */\n private isNearLine(line: number, targetLine: number): boolean {\n return Math.abs(line - targetLine) < 20;\n }\n\n /**\n * Check if expression is a send or emit call\n */\n private isSendOrEmitCall(expression: Node): boolean {\n if (!Node.isPropertyAccessExpression(expression)) {\n return false;\n }\n\n const methodName = expression.getName();\n return methodName === \"send\" || methodName === \"emit\";\n }\n\n /**\n * Extract message type from send/emit argument\n */\n private extractMessageTypeFromArg(arg: Node): string | undefined {\n if (Node.isStringLiteral(arg)) {\n return arg.getLiteralValue();\n }\n\n if (Node.isObjectLiteralExpression(arg)) {\n return this.extractMessageTypeFromObject(arg);\n }\n\n return undefined;\n }\n\n /**\n * Extract message type from object literal\n */\n private extractMessageTypeFromObject(obj: Node): string | undefined {\n if (!Node.isObjectLiteralExpression(obj)) {\n return undefined;\n }\n\n const typeProperty = obj.getProperty(\"type\");\n if (!typeProperty || !Node.isPropertyAssignment(typeProperty)) {\n return undefined;\n }\n\n const initializer = typeProperty.getInitializer();\n if (!initializer || !Node.isStringLiteral(initializer)) {\n return undefined;\n }\n\n return initializer.getLiteralValue();\n }\n\n /**\n * Extract flow metadata from JSDoc annotations\n */\n private extractFlowMetadata(\n filePath: string,\n lineNumber: number\n ): {\n trigger?: string;\n flowName?: string;\n description?: string;\n } {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) return {};\n\n // Find the node at this line\n let targetNode: Node | null = null;\n\n sourceFile.forEachDescendant((node) => {\n if (node.getStartLineNumber() === lineNumber) {\n targetNode = node;\n }\n });\n\n if (!targetNode) return {};\n\n // Look for JSDoc comments - use type guard to check if node supports JSDoc\n // biome-ignore lint/suspicious/noExplicitAny: Type guard for dynamic JSDoc support\n const nodeAny = targetNode as any;\n if (!(\"getJsDocs\" in nodeAny) || typeof nodeAny.getJsDocs !== \"function\") {\n return {};\n }\n\n const jsDocs = nodeAny.getJsDocs();\n if (jsDocs.length === 0) return {};\n\n const firstDoc = jsDocs[0];\n if (!firstDoc) return {};\n\n const comment = firstDoc.getText();\n\n // Extract @flow annotation\n const flowMatch = comment.match(/@flow\\s+([^\\s]+)/);\n const flowName = flowMatch ? flowMatch[1] : undefined;\n\n // Extract @trigger annotation\n const triggerMatch = comment.match(/@trigger\\s+(.+?)(?:\\n|$)/);\n const trigger = triggerMatch ? triggerMatch[1].trim() : undefined;\n\n // Extract @description\n const descMatch = comment.match(/@description\\s+(.+?)(?:\\n|$)/s);\n const description = descMatch ? descMatch[1].trim() : undefined;\n\n return { trigger, flowName, description };\n }\n\n /**\n * Infer context from file path\n */\n private inferContext(filePath: string): string {\n const path = filePath.toLowerCase();\n\n // Define context patterns to check\n const contextPatterns: Array<{ context: string; patterns: string[] }> = [\n { context: \"background\", patterns: [\"/background/\", \"\\\\background\\\\\"] },\n { context: \"content\", patterns: [\"/content/\", \"\\\\content\\\\\"] },\n { context: \"popup\", patterns: [\"/popup/\", \"\\\\popup\\\\\"] },\n { context: \"devtools\", patterns: [\"/devtools/\", \"\\\\devtools\\\\\"] },\n { context: \"options\", patterns: [\"/options/\", \"\\\\options\\\\\"] },\n { context: \"offscreen\", patterns: [\"/offscreen/\", \"\\\\offscreen\\\\\"] },\n { context: \"server\", patterns: [\"/server/\", \"\\\\server\\\\\", \"/server.\"] },\n { context: \"client\", patterns: [\"/client/\", \"\\\\client\\\\\", \"/client.\"] },\n { context: \"worker\", patterns: [\"/worker/\", \"\\\\worker\\\\\", \"service-worker\"] },\n ];\n\n for (const { context, patterns } of contextPatterns) {\n if (patterns.some((pattern) => path.includes(pattern))) {\n return context;\n }\n }\n\n return \"unknown\";\n }\n}\n",
53
- "// Handler extraction from TypeScript code\n// Extracts message handlers and their state mutations\n\nimport {\n type ArrowFunction,\n type CallExpression,\n type FunctionDeclaration,\n type FunctionExpression,\n type Identifier,\n type IfStatement,\n Node,\n type ObjectLiteralExpression,\n Project,\n type PropertyAccessExpression,\n type SourceFile,\n type Statement,\n type SwitchStatement,\n SyntaxKind,\n type VariableDeclaration,\n} from \"ts-morph\";\nimport type {\n ComponentRelationship,\n MessageHandler,\n StateAssignment,\n StateConstraint,\n VerificationCondition,\n VerifiedStateInfo,\n} from \"../types\";\nimport { RelationshipExtractor } from \"./relationships\";\n\nexport interface HandlerAnalysis {\n handlers: MessageHandler[];\n messageTypes: Set<string>;\n stateConstraints: StateConstraint[];\n verifiedStates: VerifiedStateInfo[];\n}\n\nexport class HandlerExtractor {\n private project: Project;\n private typeGuardCache: WeakMap<SourceFile, Map<string, string>>;\n private relationshipExtractor: RelationshipExtractor;\n private analyzedFiles: Set<string>; // Track files we've already analyzed\n private packageRoot: string; // Package directory (contains package.json)\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n this.typeGuardCache = new WeakMap();\n this.relationshipExtractor = new RelationshipExtractor();\n this.analyzedFiles = new Set<string>();\n // Find package root by looking for package.json from tsconfig location\n this.packageRoot = this.findPackageRoot(tsConfigPath);\n }\n\n /**\n * Find the nearest package.json directory from tsconfig location\n * This defines the package boundary - we only analyze files within this package\n */\n private findPackageRoot(tsConfigPath: string): string {\n let dir = tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n // Walk up until we find package.json\n while (dir.length > 1) {\n try {\n const packageJsonPath = `${dir}/package.json`;\n const file = Bun.file(packageJsonPath);\n if (file.size > 0) {\n // Found package.json\n return dir;\n }\n } catch {\n // Keep looking\n }\n const parentDir = dir.substring(0, dir.lastIndexOf(\"/\"));\n if (parentDir === dir) break; // Reached root\n dir = parentDir;\n }\n // Fallback: use tsconfig directory\n return tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n }\n\n /**\n * Extract all message handlers from the codebase\n *\n * Uses transitive import following to discover all reachable code:\n * 1. Start with source files from tsconfig that are within the package\n * 2. Follow imports recursively (within package boundary)\n * 3. Cache analyzed files to avoid re-processing\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Handler extraction requires analyzing multiple patterns and file boundaries\n extractHandlers(): HandlerAnalysis {\n const handlers: MessageHandler[] = [];\n const messageTypes = new Set<string>();\n const invalidMessageTypes = new Set<string>();\n const stateConstraints: StateConstraint[] = [];\n const verifiedStates: VerifiedStateInfo[] = [];\n\n // Find all source files from tsconfig as potential entry points\n const allSourceFiles = this.project.getSourceFiles();\n // Filter to only files within the package boundary\n const entryPoints = allSourceFiles.filter((f) => this.isWithinPackage(f.getFilePath()));\n\n this.debugLogSourceFiles(allSourceFiles, entryPoints);\n\n // Analyze each entry point and follow its imports transitively\n for (const entryPoint of entryPoints) {\n this.analyzeFileAndImports(\n entryPoint,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints,\n verifiedStates\n );\n }\n\n // Issue #27: Second pass - find functions that modify verified states\n if (verifiedStates.length > 0) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found ${verifiedStates.length} verified state(s), scanning for mutating functions...`\n );\n }\n\n for (const filePath of this.analyzedFiles) {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n\n const mutatingHandlers = this.findStateMutatingFunctions(sourceFile, verifiedStates);\n\n for (const handler of mutatingHandlers) {\n // Avoid duplicates - check if handler already exists for this message type\n const exists = handlers.some(\n (h) =>\n h.messageType === handler.messageType && h.location.file === handler.location.file\n );\n\n if (!exists) {\n handlers.push(handler);\n if (this.isValidTLAIdentifier(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n }\n }\n\n this.debugLogExtractionResults(handlers.length, invalidMessageTypes.size);\n this.debugLogAnalysisStats(allSourceFiles.length, entryPoints.length);\n\n return {\n handlers,\n messageTypes,\n stateConstraints,\n verifiedStates,\n };\n }\n\n /**\n * Analyze a file and recursively follow its imports\n *\n * This implements the Knip pattern: follow imports transitively\n * to discover all reachable code, including files outside src/\n * that are imported from analyzed files.\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Import following requires conditional logic for package boundaries, caching, and recursion\n private analyzeFileAndImports(\n sourceFile: SourceFile,\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>,\n stateConstraints: StateConstraint[],\n verifiedStates: VerifiedStateInfo[]\n ): void {\n const filePath = sourceFile.getFilePath();\n\n // Skip if already analyzed\n if (this.analyzedFiles.has(filePath)) {\n return;\n }\n\n // Mark as analyzed\n this.analyzedFiles.add(filePath);\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Analyzing: ${filePath}`);\n }\n\n // Extract handlers from this file\n const fileHandlers = this.extractFromFile(sourceFile);\n handlers.push(...fileHandlers);\n this.categorizeHandlerMessageTypes(fileHandlers, messageTypes, invalidMessageTypes);\n\n // Extract state constraints from this file\n const fileConstraints = this.extractStateConstraintsFromFile(sourceFile);\n stateConstraints.push(...fileConstraints);\n\n // Issue #27: Extract verified states from this file\n const fileVerifiedStates = this.extractVerifiedStatesFromFile(sourceFile);\n verifiedStates.push(...fileVerifiedStates);\n\n // Follow imports to discover more files (within package boundary only)\n const importDeclarations = sourceFile.getImportDeclarations();\n for (const importDecl of importDeclarations) {\n const importedFile = importDecl.getModuleSpecifierSourceFile();\n\n if (importedFile) {\n const importedPath = importedFile.getFilePath();\n\n // Only follow imports within the same package\n // This excludes:\n // - node_modules (other packages)\n // - Framework code in monorepo parent (other packages)\n // But includes:\n // - All files in this package (src/, specs/, tests/, etc.)\n if (!this.isWithinPackage(importedPath)) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Skipping external import: ${importedPath}`);\n }\n continue;\n }\n\n // Recursively analyze imported file\n this.analyzeFileAndImports(\n importedFile,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints,\n verifiedStates\n );\n } else if (process.env[\"POLLY_DEBUG\"]) {\n // Log unresolved imports for debugging\n const specifier = importDecl.getModuleSpecifierValue();\n if (!specifier.startsWith(\"node:\") && !this.isNodeModuleImport(specifier)) {\n console.log(`[DEBUG] Could not resolve import: ${specifier} in ${filePath}`);\n }\n }\n }\n }\n\n /**\n * Check if a file path is within the package boundary\n */\n private isWithinPackage(filePath: string): boolean {\n // Must be under package root\n if (!filePath.startsWith(this.packageRoot)) {\n return false;\n }\n // Must not be in node_modules\n if (filePath.includes(\"/node_modules/\")) {\n return false;\n }\n return true;\n }\n\n /**\n * Check if an import specifier is a node_modules import\n */\n private isNodeModuleImport(specifier: string): boolean {\n // Relative imports start with . or ..\n // Absolute/node_modules imports don't\n return !specifier.startsWith(\".\") && !specifier.startsWith(\"/\");\n }\n\n private debugLogAnalysisStats(totalSourceFiles: number, entryPointCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Analysis Statistics:`);\n console.log(`[DEBUG] Package root: ${this.packageRoot}`);\n console.log(`[DEBUG] Source files from tsconfig: ${totalSourceFiles}`);\n console.log(`[DEBUG] Entry points (in package): ${entryPointCount}`);\n console.log(`[DEBUG] Files analyzed (including imports): ${this.analyzedFiles.size}`);\n console.log(\n `[DEBUG] Additional files discovered: ${this.analyzedFiles.size - entryPointCount}`\n );\n }\n\n private debugLogSourceFiles(allSourceFiles: SourceFile[], entryPoints: SourceFile[]): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Loaded ${allSourceFiles.length} source files from tsconfig`);\n console.log(`[DEBUG] Filtered to ${entryPoints.length} entry points within package`);\n if (entryPoints.length <= 20) {\n for (const sf of entryPoints) {\n console.log(`[DEBUG] - ${sf.getFilePath()}`);\n }\n }\n }\n\n private categorizeHandlerMessageTypes(\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>\n ): void {\n for (const handler of handlers) {\n if (this.isValidTLAIdentifier(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n\n private debugLogExtractionResults(handlerCount: number, invalidCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Total handlers extracted: ${handlerCount}`);\n if (invalidCount > 0) {\n console.log(`[DEBUG] Filtered ${invalidCount} invalid message type(s) from handlers`);\n }\n }\n\n /**\n * Check if a string is a valid TLA+ identifier\n * TLA+ identifiers must:\n * - Start with a letter (a-zA-Z)\n * - Contain only letters, digits, and underscores\n * - Not be empty\n */\n private isValidTLAIdentifier(s: string): boolean {\n if (!s || s.length === 0) {\n return false;\n }\n // TLA+ identifiers: start with letter, contain only alphanumeric + underscore\n return /^[a-zA-Z][a-zA-Z0-9_]*$/.test(s);\n }\n\n /**\n * Extract handlers from a single source file\n */\n private extractFromFile(sourceFile: SourceFile): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n sourceFile.forEachDescendant((node) => {\n this.processNodeForHandlers(node, context, filePath, handlers);\n });\n\n return handlers;\n }\n\n /**\n * Process a single node to find handler patterns\n */\n private processNodeForHandlers(\n node: Node,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n if (Node.isCallExpression(node)) {\n this.processCallExpressionHandler(node, context, filePath, handlers);\n }\n\n if (Node.isSwitchStatement(node)) {\n const switchHandlers = this.extractSwitchCaseHandlers(node, context, filePath);\n handlers.push(...switchHandlers);\n }\n\n if (Node.isVariableDeclaration(node)) {\n const mapHandlers = this.extractHandlerMapPattern(node, context, filePath);\n handlers.push(...mapHandlers);\n }\n\n if (Node.isIfStatement(node) && !this.isElseIfStatement(node)) {\n const typeGuardHandlers = this.extractTypeGuardHandlers(node, context, filePath);\n handlers.push(...typeGuardHandlers);\n }\n }\n\n /**\n * Process call expression to find .on() or .addEventListener() handlers\n */\n private processCallExpressionHandler(\n node: CallExpression,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n const expression = node.getExpression();\n\n if (Node.isPropertyAccessExpression(expression)) {\n const methodName = expression.getName();\n\n if (methodName === \"on\" || methodName === \"addEventListener\") {\n const handler = this.extractHandler(node, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n }\n }\n\n /**\n * Check if a node is an else-if statement\n */\n private isElseIfStatement(node: Node): boolean {\n const parent = node.getParent();\n return parent !== undefined && Node.isIfStatement(parent);\n }\n\n /**\n * Extract handler details from a .on() call expression\n */\n private extractHandler(\n callExpr: CallExpression,\n context: string,\n filePath: string\n ): MessageHandler | null {\n const args = callExpr.getArguments();\n\n if (args.length < 2) {\n return null;\n }\n\n // First argument should be the message type (string literal)\n const messageTypeArg = args[0];\n let messageType: string | null = null;\n\n if (Node.isStringLiteral(messageTypeArg)) {\n messageType = messageTypeArg.getLiteralValue();\n } else if (Node.isTemplateExpression(messageTypeArg)) {\n // Handle template literals if needed\n messageType = messageTypeArg.getText().replace(/[`'\"]/g, \"\");\n }\n\n if (!messageType) {\n return null;\n }\n\n // Second argument is the handler function\n const handlerArg = args[1];\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Parse the handler function for state assignments and verification conditions\n let actualHandler: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n actualHandler = handlerArg;\n } else if (Node.isIdentifier(handlerArg)) {\n // Resolve function reference (e.g., bus.on('query', handleQuery))\n actualHandler = this.resolveFunctionReference(handlerArg);\n }\n\n if (actualHandler) {\n this.extractAssignments(actualHandler, assignments);\n this.extractVerificationConditions(actualHandler, preconditions, postconditions);\n\n // Check for async mutations (potential race conditions)\n if (Node.isArrowFunction(actualHandler) || Node.isFunctionExpression(actualHandler)) {\n this.checkAsyncMutations(actualHandler, messageType);\n }\n }\n\n const line = callExpr.getStartLineNumber();\n\n // Extract relationships from handler code\n const sourceFile = callExpr.getSourceFile();\n const handlerName = `${messageType}_handler`;\n let relationships: ComponentRelationship[] | undefined;\n\n if (actualHandler) {\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n actualHandler,\n sourceFile,\n handlerName\n );\n if (detectedRelationships.length > 0) {\n relationships = detectedRelationships;\n }\n }\n\n return {\n messageType,\n node: context, // Renamed from 'context' to 'node' for generalization\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line,\n },\n relationships,\n };\n }\n\n /**\n * Extract state assignments from a handler function\n * Handles:\n * - Simple assignments: state.field = value\n * - Compound operators: state.count += 1\n * - Unary operators: state.count++, state.count--, ++state.count, --state.count\n * - Array mutations: state.items.push(item)\n * - Array indexing: state.items[0] = value\n */\n private extractAssignments(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\n assignments: StateAssignment[]\n ): void {\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.extractBinaryExpressionAssignment(node, assignments);\n }\n\n if (Node.isCallExpression(node)) {\n this.extractArrayMutationAssignment(node, assignments);\n }\n\n if (Node.isPostfixUnaryExpression(node) || Node.isPrefixUnaryExpression(node)) {\n this.extractUnaryExpressionAssignment(node, assignments);\n }\n });\n }\n\n /**\n * Extract assignments from binary expressions (=, +=, -=, etc.)\n */\n private extractBinaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n\n if (operator === \"=\") {\n this.extractSimpleOrElementAccessAssignment(node, assignments);\n } else if ([\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) {\n this.extractCompoundAssignment(node, assignments);\n }\n }\n\n /**\n * Extract simple or element access assignments (state.field = value or state.items[0] = value)\n */\n private extractSimpleOrElementAccessAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n this.extractPropertyAccessAssignment(left, right, assignments);\n } else if (Node.isElementAccessExpression(left)) {\n this.extractElementAccessAssignment(left, right, assignments);\n }\n }\n\n /**\n * Extract property access assignment (state.field = value or someState.value.field = value)\n */\n private extractPropertyAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const fieldPath = this.getPropertyPath(left);\n\n // Pattern 1: state.field = value (original pattern)\n if (fieldPath.startsWith(\"state.\")) {\n const field = fieldPath.substring(6);\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field, value });\n }\n return;\n }\n\n // Pattern 2: someState.value.field = value (signal pattern)\n const valueMatch = fieldPath.match(/\\.value\\.(.+)$/);\n if (valueMatch?.[1]) {\n const field = valueMatch[1];\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field, value });\n }\n return;\n }\n\n // Pattern 3: someState.value = { object literal } (signal replacement)\n if (fieldPath.endsWith(\".value\") && Node.isObjectLiteralExpression(right)) {\n this.extractObjectLiteralAssignments(right, assignments);\n }\n }\n\n /**\n * Extract assignments from object literal properties\n * Used for: someState.value = { field1: value1, field2: value2 }\n */\n private extractObjectLiteralAssignments(\n objectLiteral: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isObjectLiteralExpression(objectLiteral)) return;\n\n for (const prop of objectLiteral.getProperties()) {\n // Handle regular property assignments: { field: value }\n if (Node.isPropertyAssignment(prop)) {\n const name = prop.getName();\n const initializer = prop.getInitializer();\n\n if (!name || !initializer) continue;\n\n const value = this.extractValue(initializer);\n if (value !== undefined) {\n assignments.push({ field: name, value });\n }\n }\n\n // Handle shorthand properties: { field }\n if (Node.isShorthandPropertyAssignment(prop)) {\n const name = prop.getName();\n // For shorthand, we can't extract the value statically\n // but we know the field is being set\n assignments.push({ field: name, value: \"@\" }); // Use @ as placeholder\n }\n }\n }\n\n /**\n * Extract element access assignment (state.items[index] = value)\n */\n private extractElementAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isElementAccessExpression(left)) return;\n\n const expr = left.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const fieldPath = this.getPropertyPath(expr);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (!field) return;\n const indexExpr = left.getArgumentExpression();\n const index = indexExpr ? indexExpr.getText() : \"0\";\n const value = this.extractValue(right);\n\n if (value !== undefined) {\n const tlaIndex = this.isNumericLiteral(index)\n ? (Number.parseInt(index, 10) + 1).toString()\n : `${index} + 1`;\n assignments.push({\n field: `${field}[${tlaIndex}]`,\n value,\n });\n }\n }\n\n /**\n * Check if field path is a state mutation pattern and extract field name\n * Supports: state.field, someState.value.field\n * Returns: field name or null if not a state pattern\n */\n private extractFieldFromStatePath(fieldPath: string): string | null {\n // Pattern 1: state.field\n if (fieldPath.startsWith(\"state.\")) {\n return fieldPath.substring(6);\n }\n\n // Pattern 2: someState.value.field\n const valueMatch = fieldPath.match(/\\.value\\.(.+)$/);\n if (valueMatch?.[1]) {\n return valueMatch[1];\n }\n\n return null;\n }\n\n /**\n * Extract compound assignments (+=, -=, *=, /=, %=)\n */\n private extractCompoundAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n const fieldPath = this.getPropertyPath(left);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n const rightValue = right.getText();\n const tlaOp = operator.slice(0, -1); // Remove '=' suffix\n assignments.push({\n field,\n value: `@ ${tlaOp} ${rightValue}`,\n });\n }\n }\n }\n\n /**\n * Get operator text from unary expression token\n */\n private getUnaryOperatorText(operator: unknown): string | null {\n if (typeof operator === \"number\") {\n // It's a SyntaxKind enum value\n if (operator === SyntaxKind.PlusPlusToken) return \"++\";\n if (operator === SyntaxKind.MinusMinusToken) return \"--\";\n return null;\n }\n if (operator && typeof operator === \"object\" && \"getText\" in operator) {\n // It's a Node with getText method\n return (operator as { getText(): string }).getText();\n }\n return null;\n }\n\n /**\n * Extract unary expression assignments (++, --)\n */\n private extractUnaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isPostfixUnaryExpression(node) && !Node.isPrefixUnaryExpression(node)) return;\n\n const operator = node.getOperatorToken();\n const operatorText = this.getUnaryOperatorText(operator);\n\n // Only handle ++ and --\n if (operatorText !== \"++\" && operatorText !== \"--\") return;\n\n const operand = node.getOperand();\n if (!Node.isPropertyAccessExpression(operand)) return;\n\n const fieldPath = this.getPropertyPath(operand);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n // Translate ++ to @ + 1 and -- to @ - 1\n const value = operatorText === \"++\" ? \"@ + 1\" : \"@ - 1\";\n assignments.push({ field, value });\n }\n }\n\n /**\n * Extract array mutation assignments (push, pop, shift, unshift, splice)\n */\n private extractArrayMutationAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (Node.isPropertyAccessExpression(object)) {\n const fieldPath = this.getPropertyPath(object);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n const args = node.getArguments().map((arg) => arg.getText());\n const tlaValue = this.translateArrayMethod(methodName, args, fieldPath);\n\n if (tlaValue) {\n assignments.push({ field, value: tlaValue });\n }\n }\n }\n }\n\n /**\n * Translate array mutation methods to TLA+ operators\n */\n private translateArrayMethod(\n methodName: string,\n args: string[],\n fieldPath: string\n ): string | null {\n switch (methodName) {\n case \"push\":\n return args.length === 1 ? `Append(@, ${args[0]})` : null;\n\n case \"pop\":\n return \"SubSeq(@, 1, Len(@)-1)\";\n\n case \"shift\":\n return \"Tail(@)\";\n\n case \"unshift\":\n return args.length === 1 ? `<<${args[0]}>> \\\\o @` : null;\n\n case \"splice\":\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Warning: splice() mutation on ${fieldPath} not fully translated`);\n }\n return null;\n\n default:\n return null;\n }\n }\n\n /**\n * Check for async mutations that could cause race conditions\n * Warns when async handlers have state mutations after await expressions\n */\n private checkAsyncMutations(\n funcNode: ArrowFunction | FunctionExpression,\n messageType: string\n ): void {\n // Check if function is async\n const isAsync =\n funcNode.hasModifier?.(SyntaxKind.AsyncKeyword) ||\n funcNode.getModifiers?.()?.some((m: Node) => m.getKind() === SyntaxKind.AsyncKeyword);\n\n if (!isAsync) {\n return; // Not async, no race conditions possible\n }\n\n // Find all await expressions\n const awaitExpressions: Node[] = [];\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isAwaitExpression(node)) {\n awaitExpressions.push(node);\n }\n });\n\n if (awaitExpressions.length === 0) {\n return; // No awaits, no interleaving possible\n }\n\n // Find all state mutations\n const mutations: Array<{ field: string; line: number; afterAwait: boolean }> = [];\n const body = funcNode.getBody();\n\n if (!body) {\n return;\n }\n\n const firstAwait = awaitExpressions[0];\n if (!firstAwait) return;\n\n // Get position of first await\n const firstAwaitPos = firstAwait.getStart();\n\n // Track mutations and whether they occur after await\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.checkBinaryExpressionMutation(node, firstAwaitPos, mutations);\n }\n\n if (Node.isCallExpression(node)) {\n this.checkCallExpressionMutation(node, firstAwaitPos, mutations);\n }\n });\n\n // Filter to mutations after await\n const mutationsAfterAwait = mutations.filter((m) => m.afterAwait);\n\n if (mutationsAfterAwait.length > 0 && process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Warning: Async handler for '${messageType}' has ${mutationsAfterAwait.length} state mutation(s) after await`\n );\n console.log(\n \"[DEBUG] This may cause race conditions if multiple messages are processed concurrently\"\n );\n console.log(\n `[DEBUG] Mutations: ${mutationsAfterAwait.map((m) => `${m.field} (line ${m.line})`).join(\", \")}`\n );\n }\n }\n\n /**\n * Extract verification conditions (requires/ensures) from a handler function\n */\n private extractVerificationConditions(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n const body = funcNode.getBody();\n const statements = Node.isBlock(body) ? body.getStatements() : body ? [body] : [];\n\n for (const statement of statements) {\n this.processStatementForConditions(statement, preconditions, postconditions);\n }\n }\n\n /**\n * Process a statement to extract verification conditions\n */\n private processStatementForConditions(\n statement: Node | Statement,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n if (!Node.isExpressionStatement(statement)) return;\n\n const expr = statement.getExpression();\n if (!Node.isCallExpression(expr)) return;\n\n const callee = expr.getExpression();\n if (!Node.isIdentifier(callee)) return;\n\n const functionName = callee.getText();\n\n if (functionName === \"requires\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n preconditions.push(condition);\n }\n } else if (functionName === \"ensures\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n postconditions.push(condition);\n }\n }\n }\n\n /**\n * Extract condition from a requires() or ensures() call\n */\n private extractCondition(callExpr: CallExpression): VerificationCondition | null {\n const args = callExpr.getArguments();\n\n if (args.length === 0) {\n return null;\n }\n\n // First argument is the condition expression\n const conditionArg = args[0];\n if (!conditionArg) return null;\n\n const expression = conditionArg.getText();\n\n // Second argument (optional) is the message\n let message: string | undefined;\n if (args.length >= 2 && Node.isStringLiteral(args[1])) {\n message = args[1].getLiteralValue();\n }\n\n const line = callExpr.getStartLineNumber();\n const column = callExpr.getStartLinePos();\n\n return {\n expression,\n message,\n location: {\n line,\n column,\n },\n };\n }\n\n /**\n * Get the full property access path (e.g., \"state.user.loggedIn\")\n */\n private getPropertyPath(node: PropertyAccessExpression | Node): string {\n const parts: string[] = [];\n\n let current = node;\n while (Node.isPropertyAccessExpression(current)) {\n parts.unshift(current.getName());\n current = current.getExpression();\n }\n\n // Add the base identifier\n if (Node.isIdentifier(current)) {\n parts.unshift(current.getText());\n }\n\n return parts.join(\".\");\n }\n\n /**\n * Extract a literal value from an expression\n */\n private extractValue(node: Node): string | boolean | number | null | undefined {\n if (Node.isStringLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (Node.isNumericLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (node.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n\n if (node.getKind() === SyntaxKind.FalseKeyword) {\n return false;\n }\n\n if (node.getKind() === SyntaxKind.NullKeyword) {\n return null;\n }\n\n // For complex expressions, return undefined (can't extract)\n return undefined;\n }\n\n /**\n * Check if a string represents a numeric literal\n */\n private isNumericLiteral(str: string): boolean {\n return /^\\d+$/.test(str);\n }\n\n /**\n * Extract handlers from switch/case message router patterns\n * Detects: switch(message.type) { case 'EVENT': handler(); }\n */\n private extractSwitchCaseHandlers(\n switchNode: SwitchStatement,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n // Check if switching on message.type or similar\n const expression = switchNode.getExpression();\n const expressionText = expression.getText();\n\n // Look for patterns like: message.type, data.type, msg.type, event.type\n if (!/\\.(type|kind|event|action)/.test(expressionText)) {\n return handlers;\n }\n\n // Extract handlers from each case clause\n const caseClauses = switchNode.getClauses();\n for (const clause of caseClauses) {\n if (Node.isCaseClause(clause)) {\n const caseExpr = clause.getExpression();\n\n // Extract message type from case expression\n let messageType: string | null = null;\n if (Node.isStringLiteral(caseExpr)) {\n messageType = caseExpr.getLiteralValue();\n }\n\n if (messageType) {\n const line = clause.getStartLineNumber();\n\n handlers.push({\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n });\n }\n }\n }\n } catch (_error) {\n // Skip malformed switch statements\n }\n\n return handlers;\n }\n\n /**\n * Extract handlers from handler map patterns\n * Detects: const handlers = { 'EVENT': handlerFn, ... }\n */\n private extractHandlerMapPattern(\n varDecl: VariableDeclaration,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const initializer = varDecl.getInitializer();\n if (!initializer) {\n return handlers;\n }\n\n // Get the object literal - either direct or from defineHandlers() call\n const objectLiteral = this.getHandlerMapObject(initializer, varDecl);\n if (!objectLiteral) {\n return handlers;\n }\n\n // Extract handlers from object properties\n const properties = objectLiteral.getProperties();\n for (const prop of properties) {\n const handler = this.extractHandlerFromProperty(prop, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n } catch (_error) {\n // Skip malformed object literals\n }\n\n return handlers;\n }\n\n /**\n * Extract the object literal from a handler map.\n * Only processes direct object literals with handler-like variable names.\n */\n private getHandlerMapObject(\n initializer: Node,\n varDecl: VariableDeclaration\n ): ObjectLiteralExpression | null {\n // Only process direct object literals\n if (Node.isObjectLiteralExpression(initializer)) {\n if (this.isHandlerMapName(varDecl.getName())) {\n return initializer;\n }\n }\n return null;\n }\n\n /**\n * Check if variable name suggests it's a handler map\n */\n private isHandlerMapName(varName: string): boolean {\n return /(handler|listener|callback|event)s?/.test(varName.toLowerCase());\n }\n\n /**\n * Extract handler from a property assignment in a handler map\n */\n private extractHandlerFromProperty(\n prop: Node,\n context: string,\n filePath: string\n ): MessageHandler | null {\n if (!Node.isPropertyAssignment(prop)) {\n return null;\n }\n\n const nameNode = prop.getNameNode();\n const messageType = this.getMessageTypeFromPropertyName(nameNode);\n\n if (!messageType) {\n return null;\n }\n\n const value = prop.getInitializer();\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Extract from the handler function\n if (value) {\n // Case 1: Inline arrow function or function expression\n if (Node.isArrowFunction(value) || Node.isFunctionExpression(value)) {\n this.extractAssignments(value, assignments);\n this.extractVerificationConditions(value, preconditions, postconditions);\n }\n // Case 2: Function reference (e.g., handleQuery)\n else if (Node.isIdentifier(value)) {\n const referencedFunction = this.resolveFunctionReference(value);\n if (referencedFunction) {\n this.extractAssignments(referencedFunction, assignments);\n this.extractVerificationConditions(referencedFunction, preconditions, postconditions);\n }\n }\n }\n\n const line = prop.getStartLineNumber();\n return {\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: { file: filePath, line },\n };\n }\n\n /**\n * Extract message type from property name node\n */\n private getMessageTypeFromPropertyName(nameNode: Node): string | null {\n if (Node.isStringLiteral(nameNode)) {\n return nameNode.getLiteralValue();\n }\n if (Node.isIdentifier(nameNode)) {\n return nameNode.getText();\n }\n return null;\n }\n\n /**\n * Resolve a function reference to its declaration or expression.\n * Handles both named function declarations and variable-assigned functions.\n *\n * @param identifier - The identifier node referencing the function\n * @returns The resolved function node, or null if not found\n */\n private resolveFunctionReference(\n identifier: Node\n ): FunctionDeclaration | ArrowFunction | FunctionExpression | null {\n if (!Node.isIdentifier(identifier)) {\n return null;\n }\n\n try {\n const definitions = identifier.getDefinitionNodes();\n\n for (const def of definitions) {\n // Direct function declaration\n if (Node.isFunctionDeclaration(def)) {\n return def;\n }\n\n // Variable declaration with function initializer\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (\n initializer &&\n (Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer))\n ) {\n return initializer;\n }\n }\n }\n } catch (_error) {\n // Failed to resolve - return null\n }\n\n return null;\n }\n\n /**\n * Extract handlers from type guard if/else-if patterns\n * Detects: if (isQueryMessage(msg)) { handleQuery(msg); }\n */\n private extractTypeGuardHandlers(\n ifNode: Node,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const sourceFile = ifNode.getSourceFile();\n const typeGuards = this.getOrComputeTypeGuards(sourceFile);\n\n this.debugLogTypeGuards(sourceFile, typeGuards);\n this.processIfElseChain(ifNode as IfStatement, typeGuards, context, filePath, handlers);\n } catch (error) {\n this.debugLogError(error);\n }\n\n return handlers;\n }\n\n /**\n * Get cached type guards or compute if not cached\n */\n private getOrComputeTypeGuards(sourceFile: SourceFile): Map<string, string> {\n let typeGuards = this.typeGuardCache.get(sourceFile);\n if (!typeGuards) {\n typeGuards = this.findTypePredicateFunctions(sourceFile);\n this.typeGuardCache.set(sourceFile, typeGuards);\n }\n return typeGuards;\n }\n\n /**\n * Debug log type guards found in source file\n */\n private debugLogTypeGuards(sourceFile: SourceFile, typeGuards: Map<string, string>): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] File: ${sourceFile.getBaseName()}`);\n console.log(`[DEBUG] Local type guards found: ${typeGuards.size}`);\n\n if (typeGuards.size > 0) {\n for (const [name, type] of typeGuards.entries()) {\n console.log(`[DEBUG] - ${name} → ${type}`);\n }\n }\n }\n\n /**\n * Process if-else-if chain to extract handlers\n */\n private processIfElseChain(\n currentIf: IfStatement,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n let ifStatement = currentIf;\n while (ifStatement) {\n const handler = this.extractHandlerFromIfClause(ifStatement, typeGuards, context, filePath);\n\n if (handler) {\n handlers.push(handler);\n this.debugLogFoundHandler(handler);\n }\n\n // Check for else-if\n const elseStatement = ifStatement.getElseStatement();\n if (elseStatement && Node.isIfStatement(elseStatement)) {\n ifStatement = elseStatement;\n } else {\n break;\n }\n }\n }\n\n /**\n * Debug log found handler\n */\n private debugLogFoundHandler(handler: MessageHandler): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found handler: ${handler.messageType} at line ${handler.location.line}`);\n }\n }\n\n /**\n * Debug log error\n */\n private debugLogError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error in extractTypeGuardHandlers: ${error}`);\n }\n }\n\n /**\n * Extract handler from a single if clause\n */\n private extractHandlerFromIfClause(\n ifNode: Node,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string\n ): MessageHandler | null {\n try {\n const ifStmt = ifNode as IfStatement;\n const condition = ifStmt.getExpression();\n\n if (!Node.isCallExpression(condition)) {\n return null;\n }\n\n const funcExpr = condition.getExpression();\n const funcName = Node.isIdentifier(funcExpr) ? funcExpr.getText() : undefined;\n\n this.debugLogProcessingFunction(funcName);\n\n const messageType = this.resolveMessageType(funcExpr, funcName, typeGuards);\n if (!messageType) {\n this.debugLogUnresolvedMessageType(funcName);\n return null;\n }\n\n const line = ifStmt.getStartLineNumber();\n const relationships = this.extractRelationshipsFromIfBlock(ifStmt, messageType);\n\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n relationships,\n };\n } catch (_error) {\n return null;\n }\n }\n\n /**\n * Debug log processing function\n */\n private debugLogProcessingFunction(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Processing if condition with function: ${funcName}`);\n }\n }\n\n /**\n * Debug log unresolved message type\n */\n private debugLogUnresolvedMessageType(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Could not resolve message type for: ${funcName}`);\n }\n }\n\n /**\n * Resolve message type from function expression\n */\n private resolveMessageType(\n funcExpr: Node,\n funcName: string | undefined,\n typeGuards: Map<string, string>\n ): string | undefined {\n if (funcName && typeGuards.has(funcName)) {\n const guardType = typeGuards.get(funcName);\n if (guardType) {\n this.debugLogFoundInLocalTypeGuards(funcName, guardType);\n return guardType;\n }\n }\n\n if (Node.isIdentifier(funcExpr)) {\n this.debugLogTryingImportResolution(funcName);\n return this.resolveImportedTypeGuard(funcExpr) ?? undefined;\n }\n\n return undefined;\n }\n\n /**\n * Debug log found in local type guards\n */\n private debugLogFoundInLocalTypeGuards(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found in local type guards: ${funcName} → ${messageType}`);\n }\n }\n\n /**\n * Debug log trying import resolution\n */\n private debugLogTryingImportResolution(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Not found locally, trying import resolution for: ${funcName}`);\n }\n }\n\n /**\n * Extract relationships from if block\n */\n private extractRelationshipsFromIfBlock(\n ifStmt: IfStatement,\n messageType: string\n ): ComponentRelationship[] | undefined {\n const thenStatement = ifStmt.getThenStatement();\n if (!thenStatement) {\n return undefined;\n }\n\n const sourceFile = ifStmt.getSourceFile();\n const handlerName = `${messageType}_handler`;\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n thenStatement,\n sourceFile,\n handlerName\n );\n\n return detectedRelationships.length > 0 ? detectedRelationships : undefined;\n }\n\n /**\n * Find all type predicate functions in a source file\n * Returns a map of function name → message type\n * Uses AST-based detection for consistency with imported type guard resolution\n */\n private findTypePredicateFunctions(sourceFile: SourceFile): Map<string, string> {\n const typeGuards = new Map<string, string>();\n\n sourceFile.forEachDescendant((node) => {\n this.processTypePredicate(node, typeGuards);\n });\n\n return typeGuards;\n }\n\n /**\n * Process a node that might be a type predicate function\n */\n private processTypePredicate(node: Node, typeGuards: Map<string, string>): void {\n if (!this.isFunctionNode(node)) {\n return;\n }\n\n const returnTypeNode = node.getReturnTypeNode();\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return;\n }\n\n const functionName = this.extractFunctionName(node);\n if (!functionName) {\n return;\n }\n\n const messageType = this.extractMessageTypeFromTypePredicateFunction(node, returnTypeNode);\n if (messageType) {\n typeGuards.set(functionName, messageType);\n }\n }\n\n /**\n * Extract function name from function node\n */\n private extractFunctionName(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | undefined {\n if (Node.isFunctionDeclaration(node)) {\n return node.getName();\n }\n\n if (Node.isFunctionExpression(node) || Node.isArrowFunction(node)) {\n return this.extractFunctionNameFromVariable(node);\n }\n\n return undefined;\n }\n\n /**\n * Extract function name from variable declaration\n */\n private extractFunctionNameFromVariable(\n node: FunctionExpression | ArrowFunction\n ): string | undefined {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return undefined;\n }\n\n /**\n * Extract message type from type predicate function\n */\n private extractMessageTypeFromTypePredicateFunction(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node\n ): string | null {\n if (!Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n // Try to get type node if method exists\n if (\"getTypeNode\" in returnTypeNode && typeof returnTypeNode.getTypeNode === \"function\") {\n const typeNode = returnTypeNode.getTypeNode();\n\n if (typeNode) {\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n if (messageType) {\n return messageType;\n }\n }\n }\n\n return this.extractMessageTypeFromFunctionBodyText(node);\n }\n\n /**\n * Extract message type from function body text\n */\n private extractMessageTypeFromFunctionBodyText(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | null {\n const body = node.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n return typeValueMatch[1] ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolve type guard from imported function\n * Uses ts-morph symbol resolution to find definition across files\n * Checks AST structure, not resolved types (which can lose type predicate info)\n */\n private resolveImportedTypeGuard(identifier: Identifier): string | null {\n try {\n const funcName = identifier.getText();\n const definitions = identifier.getDefinitionNodes();\n\n if (definitions.length === 0) {\n this.debugLogNoDefinitions(funcName);\n return null;\n }\n\n for (const def of definitions) {\n const messageType = this.tryExtractTypeGuardFromDefinition(def, funcName);\n if (messageType) {\n return messageType;\n }\n }\n } catch (error) {\n this.debugLogResolutionError(error);\n }\n\n return null;\n }\n\n /**\n * Try to extract type guard from a single function definition\n */\n private tryExtractTypeGuardFromDefinition(def: Node, funcName: string): string | null {\n if (!this.isFunctionNode(def)) {\n return null;\n }\n\n const returnTypeNode = def.getReturnTypeNode();\n this.debugLogReturnTypeInfo(funcName, def, returnTypeNode);\n\n const typePredicateResult = this.extractFromTypePredicate(returnTypeNode, funcName);\n if (typePredicateResult) {\n return typePredicateResult;\n }\n\n return this.extractFromFunctionBody(def, funcName);\n }\n\n /**\n * Check if node is a function type\n */\n private isFunctionNode(\n node: Node\n ): node is FunctionDeclaration | FunctionExpression | ArrowFunction {\n return (\n Node.isFunctionDeclaration(node) ||\n Node.isFunctionExpression(node) ||\n Node.isArrowFunction(node)\n );\n }\n\n /**\n * Extract message type from type predicate node\n */\n private extractFromTypePredicate(\n returnTypeNode: Node | undefined,\n funcName: string\n ): string | null {\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n const typeNode = returnTypeNode.getTypeNode();\n if (!typeNode) {\n return null;\n }\n\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n\n if (messageType) {\n this.debugLogTypePredicateResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Extract message type from function body\n */\n private extractFromFunctionBody(\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n funcName: string\n ): string | null {\n const body = def.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n const messageType = typeValueMatch[1] ?? null;\n this.debugLogBodyResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Debug: Log no definitions found\n */\n private debugLogNoDefinitions(funcName: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] No definitions found for imported function: ${funcName}`);\n }\n }\n\n /**\n * Debug: Log return type info\n */\n private debugLogReturnTypeInfo(\n funcName: string,\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node | undefined\n ): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n const returnType = def.getReturnType().getText();\n console.log(`[DEBUG] Function ${funcName} return type (resolved): ${returnType}`);\n console.log(`[DEBUG] Has return type node: ${!!returnTypeNode}`);\n console.log(\n `[DEBUG] Is type predicate node: ${returnTypeNode && Node.isTypePredicate(returnTypeNode)}`\n );\n }\n }\n\n /**\n * Debug: Log type predicate resolution\n */\n private debugLogTypePredicateResolution(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from AST type predicate)`);\n }\n }\n\n /**\n * Debug: Log body resolution\n */\n private debugLogBodyResolution(funcName: string, messageType: string | null): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from body)`);\n }\n }\n\n /**\n * Debug: Log resolution error\n */\n private debugLogResolutionError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error resolving imported type guard: ${error}`);\n }\n }\n\n /**\n * Extract message type from TypeScript type name\n * Examples:\n * QueryMessage → query\n * CommandMessage → command\n * SubscribeMessage → subscribe\n */\n private extractMessageTypeFromTypeName(typeName: string): string {\n // Remove common suffixes and convert to lowercase\n const messageType = typeName\n .replace(/Message$/, \"\")\n .replace(/Event$/, \"\")\n .replace(/Request$/, \"\")\n .replace(/Command$/, \"\")\n .replace(/Query$/, \"\")\n .toLowerCase();\n\n return messageType;\n }\n\n /**\n * Infer the context (background, content, popup, etc.) from file path\n */\n private inferContext(filePath: string): string {\n const path = filePath.toLowerCase();\n\n // Check contexts in priority order\n return (\n this.inferElectronContext(path) ||\n this.inferWorkerContext(path) ||\n this.inferServerAppContext(path) ||\n this.inferChromeExtensionContext(path) ||\n \"unknown\"\n );\n }\n\n /**\n * Infer Electron context (main, renderer, preload)\n */\n private inferElectronContext(path: string): string | null {\n if (\n path.includes(\"main.ts\") ||\n path.includes(\"main.js\") ||\n path.includes(\"/main/\") ||\n path.includes(\"\\\\main\\\\\")\n ) {\n return \"main\";\n }\n\n if (\n path.includes(\"/renderer/\") ||\n path.includes(\"\\\\renderer\\\\\") ||\n path.includes(\"renderer.ts\") ||\n path.includes(\"renderer.js\")\n ) {\n return \"renderer\";\n }\n\n if (path.includes(\"preload.ts\") || path.includes(\"preload.js\")) {\n return \"preload\";\n }\n\n return null;\n }\n\n /**\n * Infer Worker/PWA context\n */\n private inferWorkerContext(path: string): string | null {\n if (path.includes(\"service-worker\") || path.includes(\"sw.ts\") || path.includes(\"sw.js\")) {\n return \"worker\";\n }\n\n if (path.includes(\"/worker/\") || path.includes(\"\\\\worker\\\\\")) {\n return \"worker\";\n }\n\n return null;\n }\n\n /**\n * Infer WebSocket/server app context\n */\n private inferServerAppContext(path: string): string | null {\n if (\n path.includes(\"/server/\") ||\n path.includes(\"\\\\server\\\\\") ||\n path.includes(\"/server.\") ||\n path.includes(\"server.ts\") ||\n path.includes(\"server.js\")\n ) {\n return \"server\";\n }\n\n if (path.includes(\"/client/\") || path.includes(\"\\\\client\\\\\") || path.includes(\"/client.\")) {\n return \"client\";\n }\n\n return null;\n }\n\n /**\n * Infer Chrome extension context\n */\n private inferChromeExtensionContext(path: string): string | null {\n if (path.includes(\"/background/\") || path.includes(\"\\\\background\\\\\")) {\n return \"background\";\n }\n\n if (path.includes(\"/content/\") || path.includes(\"\\\\content\\\\\")) {\n return \"content\";\n }\n\n if (path.includes(\"/popup/\") || path.includes(\"\\\\popup\\\\\")) {\n return \"popup\";\n }\n\n if (path.includes(\"/devtools/\") || path.includes(\"\\\\devtools\\\\\")) {\n return \"devtools\";\n }\n\n if (path.includes(\"/options/\") || path.includes(\"\\\\options\\\\\")) {\n return \"options\";\n }\n\n if (path.includes(\"/offscreen/\") || path.includes(\"\\\\offscreen\\\\\")) {\n return \"offscreen\";\n }\n\n return null;\n }\n\n /**\n * Check binary expression for state mutations\n */\n private checkBinaryExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\" && ![\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left) && !Node.isElementAccessExpression(left)) return;\n\n const fieldPath = Node.isPropertyAccessExpression(left)\n ? this.getPropertyPath(left)\n : this.getPropertyPath(left.getExpression());\n\n const field = this.extractFieldFromStatePath(fieldPath);\n if (field) {\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Check call expression for array mutation methods\n */\n private checkCallExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (!Node.isPropertyAccessExpression(object)) return;\n\n const fieldPath = this.getPropertyPath(object);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field && [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].includes(methodName)) {\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Extract state-level constraints from a source file\n */\n private extractStateConstraintsFromFile(sourceFile: SourceFile): StateConstraint[] {\n const constraints: StateConstraint[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n const nodeConstraints = this.recognizeStateConstraint(node, filePath);\n constraints.push(...nodeConstraints);\n });\n\n return constraints;\n }\n\n /**\n * Recognize a $constraints() call and extract constraint definitions\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Parser logic requires nested conditionals\n private recognizeStateConstraint(node: Node, filePath: string): StateConstraint[] {\n if (!Node.isCallExpression(node)) {\n return [];\n }\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) {\n return [];\n }\n\n const functionName = expression.getText();\n if (functionName !== \"$constraints\") {\n return [];\n }\n\n // Get arguments: $constraints(field, constraintsObject)\n const args = node.getArguments();\n if (args.length < 2) {\n return [];\n }\n\n // First argument is the state field name\n const fieldArg = args[0];\n if (!Node.isStringLiteral(fieldArg)) {\n return [];\n }\n const field = fieldArg.getLiteralValue();\n\n // Second argument is the constraints object\n const constraintsArg = args[1];\n if (!Node.isObjectLiteralExpression(constraintsArg)) {\n return [];\n }\n\n // Extract each message type constraint\n const results: StateConstraint[] = [];\n for (const property of constraintsArg.getProperties()) {\n if (!Node.isPropertyAssignment(property)) {\n continue;\n }\n\n const messageType = property.getName();\n const initializer = property.getInitializer();\n if (!initializer || !Node.isObjectLiteralExpression(initializer)) {\n continue;\n }\n\n // Extract requires, ensures, and message from the constraint object\n let requires: string | undefined;\n let ensures: string | undefined;\n let message: string | undefined;\n\n for (const constraintProp of initializer.getProperties()) {\n if (!Node.isPropertyAssignment(constraintProp)) {\n continue;\n }\n\n const propName = constraintProp.getName();\n const propValue = constraintProp.getInitializer();\n if (!propValue) {\n continue;\n }\n\n if (propName === \"requires\" && Node.isStringLiteral(propValue)) {\n requires = propValue.getLiteralValue();\n } else if (propName === \"ensures\" && Node.isStringLiteral(propValue)) {\n ensures = propValue.getLiteralValue();\n } else if (propName === \"message\" && Node.isStringLiteral(propValue)) {\n message = propValue.getLiteralValue();\n }\n }\n\n results.push({\n field,\n messageType,\n requires,\n ensures,\n message,\n location: {\n file: filePath,\n line: property.getStartLineNumber(),\n },\n });\n }\n\n return results;\n }\n\n // ═══════════════════════════════════════════════════════════════════\n // Verified State Discovery (Issue #27)\n // ═══════════════════════════════════════════════════════════════════\n\n /**\n * Extract $sharedState declarations with { verify: true } from a source file\n *\n * Finds patterns like:\n * const authState = $sharedState('auth', initialState, { verify: true })\n * export const settings = $syncedState('settings', defaults, { verify: true })\n */\n extractVerifiedStatesFromFile(sourceFile: SourceFile): VerifiedStateInfo[] {\n const verifiedStates: VerifiedStateInfo[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) return;\n\n const stateInfo = this.recognizeVerifiedStateCall(node, filePath);\n if (stateInfo) {\n verifiedStates.push(stateInfo);\n }\n });\n\n return verifiedStates;\n }\n\n /**\n * Recognize a $sharedState/$syncedState/$persistedState call with verify: true\n */\n private recognizeVerifiedStateCall(node: Node, filePath: string): VerifiedStateInfo | null {\n if (!Node.isCallExpression(node)) return null;\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) return null;\n\n const funcName = expression.getText();\n // Match state primitives that support verification\n if (![\"$sharedState\", \"$syncedState\", \"$persistedState\"].includes(funcName)) {\n return null;\n }\n\n const args = node.getArguments();\n if (args.length < 2) return null;\n\n // Check for { verify: true } in options (3rd argument)\n const optionsArg = args[2];\n if (!optionsArg || !this.hasVerifyTrue(optionsArg)) return null;\n\n // Extract state key (1st argument)\n const keyArg = args[0];\n if (!keyArg || !Node.isStringLiteral(keyArg)) return null;\n const key = keyArg.getLiteralValue();\n\n // Get variable name from parent declaration\n const variableName = this.getVariableNameFromParent(node) || key;\n\n // Extract field names from initial value (2nd argument)\n const initialValueArg = args[1];\n const fields = initialValueArg ? this.extractFieldNames(initialValueArg) : [];\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found verified state: ${variableName} (key: \"${key}\") with fields: [${fields.join(\", \")}]`\n );\n }\n\n return {\n key,\n variableName,\n filePath,\n line: node.getStartLineNumber(),\n fields,\n };\n }\n\n /**\n * Check if an options object contains verify: true\n */\n private hasVerifyTrue(optionsNode: Node): boolean {\n if (!Node.isObjectLiteralExpression(optionsNode)) return false;\n\n for (const prop of optionsNode.getProperties()) {\n if (!Node.isPropertyAssignment(prop)) continue;\n\n const name = prop.getName();\n if (name !== \"verify\") continue;\n\n const initializer = prop.getInitializer();\n if (initializer && initializer.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Get variable name from parent VariableDeclaration\n */\n private getVariableNameFromParent(node: Node): string | null {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return null;\n }\n\n /**\n * Extract field names from an initial value expression\n * Handles object literals and identifier references\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Field extraction requires traversing nested object structures\n private extractFieldNames(node: Node): string[] {\n const fields: string[] = [];\n\n if (Node.isObjectLiteralExpression(node)) {\n for (const prop of node.getProperties()) {\n if (Node.isPropertyAssignment(prop) || Node.isShorthandPropertyAssignment(prop)) {\n fields.push(prop.getName());\n }\n }\n } else if (Node.isIdentifier(node)) {\n // Try to resolve the identifier to its declaration\n const definitions = node.getDefinitionNodes();\n for (const def of definitions) {\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (initializer && Node.isObjectLiteralExpression(initializer)) {\n return this.extractFieldNames(initializer);\n }\n }\n }\n }\n\n return fields;\n }\n\n /**\n * Find exported functions that modify verified state signals\n *\n * Looks for patterns:\n * - authState.value = { ... }\n * - authState.value.field = value\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: State mutation detection requires complex AST pattern matching\n findStateMutatingFunctions(\n sourceFile: SourceFile,\n verifiedStates: VerifiedStateInfo[]\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const stateVarNames = new Set(verifiedStates.map((s) => s.variableName));\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n // Find all exported functions\n for (const func of sourceFile.getFunctions()) {\n if (!func.isExported()) continue;\n\n const funcName = func.getName();\n if (!funcName) continue;\n\n // Check if function modifies any verified state\n const assignments = this.findStateMutationsInFunction(func, stateVarNames);\n if (assignments.length === 0) continue;\n\n // Extract requires/ensures\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n this.extractVerificationConditions(func, preconditions, postconditions);\n\n // Generate message type from function name\n const messageType = this.functionNameToMessageType(funcName);\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found state-mutating function: ${funcName} → ${messageType} ` +\n `(${assignments.length} assignments, ${preconditions.length} preconditions, ${postconditions.length} postconditions)`\n );\n }\n\n handlers.push({\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: func.getStartLineNumber(),\n },\n });\n }\n\n // Also check exported variable declarations with arrow functions\n for (const varStmt of sourceFile.getVariableStatements()) {\n if (!varStmt.isExported()) continue;\n\n for (const decl of varStmt.getDeclarations()) {\n const initializer = decl.getInitializer();\n if (!initializer) continue;\n if (!Node.isArrowFunction(initializer) && !Node.isFunctionExpression(initializer)) continue;\n\n const funcName = decl.getName();\n if (!funcName) continue;\n\n const assignments = this.findStateMutationsInFunction(initializer, stateVarNames);\n if (assignments.length === 0) continue;\n\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n this.extractVerificationConditions(initializer, preconditions, postconditions);\n\n const messageType = this.functionNameToMessageType(funcName);\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found state-mutating arrow function: ${funcName} → ${messageType}`);\n }\n\n handlers.push({\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: decl.getStartLineNumber(),\n },\n });\n }\n }\n\n return handlers;\n }\n\n /**\n * Find state mutations within a function that target verified state signals\n */\n private findStateMutationsInFunction(\n func: FunctionDeclaration | ArrowFunction | FunctionExpression,\n stateVarNames: Set<string>\n ): StateAssignment[] {\n const mutations: StateAssignment[] = [];\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: AST traversal for state mutations requires multiple pattern checks\n func.forEachDescendant((node) => {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\") return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const path = this.getPropertyPath(left);\n\n // Check for patterns:\n // 1. authState.value = { ... } (full replacement)\n // 2. authState.value.field = value (field update)\n for (const varName of stateVarNames) {\n // Pattern 1: Full state replacement\n if (path === `${varName}.value`) {\n const right = node.getRight();\n if (Node.isObjectLiteralExpression(right)) {\n this.extractObjectLiteralAssignments(right, mutations);\n }\n break;\n }\n\n // Pattern 2: Field update\n const fieldPrefix = `${varName}.value.`;\n if (path.startsWith(fieldPrefix)) {\n const field = path.substring(fieldPrefix.length);\n const value = this.extractValue(node.getRight());\n mutations.push({ field, value: value ?? \"@\" });\n break;\n }\n }\n });\n\n return mutations;\n }\n\n /**\n * Convert function name to message type\n * Examples:\n * handleAuthSuccess → AuthSuccess\n * handleLogout → Logout\n * setUserProfile → SetUserProfile\n */\n private functionNameToMessageType(funcName: string): string {\n // Remove common handler prefixes\n let name = funcName\n .replace(/^handle/, \"\")\n .replace(/^on/, \"\")\n .replace(/^set/, \"Set\")\n .replace(/^update/, \"Update\")\n .replace(/^do/, \"\");\n\n // Ensure first letter is uppercase\n if (name.length > 0) {\n name = name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n return name || funcName;\n }\n}\n\nexport function extractHandlers(tsConfigPath: string): HandlerAnalysis {\n const extractor = new HandlerExtractor(tsConfigPath);\n return extractor.extractHandlers();\n}\n",
53
+ "// Handler extraction from TypeScript code\n// Extracts message handlers and their state mutations\n//\n// ═══════════════════════════════════════════════════════════════════════════════\n// STATE ASSIGNMENT EXTRACTION - SUPPORTED PATTERNS\n// ═══════════════════════════════════════════════════════════════════════════════\n//\n// The following patterns are extracted and converted to TLA+ state transitions:\n//\n// OBJECTS:\n// ✓ state.field = value → direct assignment\n// ✓ signal.value.field = value → signal nested field\n// ✓ signal.value = { field: value } → object literal\n// ✓ signal.value = { ...signal.value, f } → spread update (extracts changed fields)\n//\n// ARRAYS:\n// ✓ [...arr, item] → Append(@, payload)\n// ✓ [item, ...arr] → <<payload>> \\o @\n// ✓ arr.filter(...) → SelectSeq(@, LAMBDA t: TRUE)\n// ✓ arr.map(...) → [i \\in DOMAIN @ |-> @[i]]\n// ✓ arr.slice(...) → SubSeq(@, 1, Len(@))\n// ✓ arr.concat(...) → @ \\o <<payload>>\n// ✓ arr.reverse() → [i \\in DOMAIN @ |-> @[Len(@) - i + 1]]\n//\n// SETS:\n// ✓ new Set([...set, item]) → @ \\union {payload}\n// ✓ new Set([...set].filter(...)) → @ \\ {payload}\n// ✓ new Set() → {}\n//\n// MAPS:\n// ✓ new Map([...map, [k, v]]) → [@ EXCEPT ![payload.key] = payload.value]\n// ✓ new Map([...map].filter(...)) → [k \\in DOMAIN @ \\ {payload.key} |-> @[k]]\n// ✓ new Map() → <<>>\n//\n// ═══════════════════════════════════════════════════════════════════════════════\n// UNSUPPORTED PATTERNS (will emit warnings)\n// ═══════════════════════════════════════════════════════════════════════════════\n//\n// MUTATING METHODS (modify in place, don't return new value):\n// ✗ arr.push(), arr.pop(), arr.shift(), arr.unshift(), arr.splice()\n// ✗ arr.sort() with in-place mutation\n// ✗ set.add(), set.delete(), set.clear()\n// ✗ map.set(), map.delete(), map.clear()\n//\n// QUERY METHODS (return non-collection values):\n// ✗ arr.find(), arr.findIndex(), arr.reduce()\n// ✗ arr.some(), arr.every(), arr.includes(), arr.indexOf()\n// ✗ set.has(), map.has(), map.get()\n//\n// COMPLEX EXPRESSIONS:\n// ✗ Ternary expressions in assignments\n// ✗ Function calls as values (except supported collection methods)\n// ✗ Computed property names\n// ✗ Dynamic field names\n// ✗ Nested object updates beyond first level\n// ✗ Object.assign(), Object.keys(), Object.values(), Object.entries()\n//\n// To request support for additional patterns, please open an issue at:\n// https://github.com/anthropics/polly/issues\n// ═══════════════════════════════════════════════════════════════════════════════\n\nimport {\n type ArrowFunction,\n type CallExpression,\n type FunctionDeclaration,\n type FunctionExpression,\n type Identifier,\n type IfStatement,\n Node,\n type ObjectLiteralExpression,\n Project,\n type PropertyAccessExpression,\n type SourceFile,\n type Statement,\n type SwitchStatement,\n SyntaxKind,\n type VariableDeclaration,\n} from \"ts-morph\";\nimport type {\n ComponentRelationship,\n MessageHandler,\n StateAssignment,\n StateConstraint,\n VerificationCondition,\n VerifiedStateInfo,\n} from \"../types\";\nimport { RelationshipExtractor } from \"./relationships\";\n\nexport interface ExtractionWarning {\n type: \"unsupported_pattern\";\n pattern: string;\n location: string;\n suggestion: string;\n}\n\nexport interface HandlerAnalysis {\n handlers: MessageHandler[];\n messageTypes: Set<string>;\n stateConstraints: StateConstraint[];\n verifiedStates: VerifiedStateInfo[];\n warnings: ExtractionWarning[];\n}\n\nexport class HandlerExtractor {\n private project: Project;\n private typeGuardCache: WeakMap<SourceFile, Map<string, string>>;\n private relationshipExtractor: RelationshipExtractor;\n private analyzedFiles: Set<string>; // Track files we've already analyzed\n private packageRoot: string; // Package directory (contains package.json)\n private warnings: ExtractionWarning[]; // Warnings for unsupported patterns\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n this.typeGuardCache = new WeakMap();\n this.relationshipExtractor = new RelationshipExtractor();\n this.analyzedFiles = new Set<string>();\n this.warnings = [];\n // Find package root by looking for package.json from tsconfig location\n this.packageRoot = this.findPackageRoot(tsConfigPath);\n }\n\n /**\n * Emit a warning for an unsupported pattern\n */\n private warnUnsupportedPattern(pattern: string, location: string, suggestion: string): void {\n // Deduplicate warnings by pattern + location\n const exists = this.warnings.some((w) => w.pattern === pattern && w.location === location);\n if (!exists) {\n this.warnings.push({\n type: \"unsupported_pattern\",\n pattern,\n location,\n suggestion,\n });\n }\n }\n\n /**\n * Get a location string for a node\n */\n private getNodeLocation(node: Node): string {\n const sourceFile = node.getSourceFile();\n const lineAndCol = sourceFile.getLineAndColumnAtPos(node.getStart());\n const filePath = sourceFile.getFilePath();\n const relativePath = filePath.startsWith(this.packageRoot)\n ? filePath.substring(this.packageRoot.length + 1)\n : filePath;\n return `${relativePath}:${lineAndCol.line}`;\n }\n\n /**\n * Find the nearest package.json directory from tsconfig location\n * This defines the package boundary - we only analyze files within this package\n */\n private findPackageRoot(tsConfigPath: string): string {\n let dir = tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n // Walk up until we find package.json\n while (dir.length > 1) {\n try {\n const packageJsonPath = `${dir}/package.json`;\n const file = Bun.file(packageJsonPath);\n if (file.size > 0) {\n // Found package.json\n return dir;\n }\n } catch {\n // Keep looking\n }\n const parentDir = dir.substring(0, dir.lastIndexOf(\"/\"));\n if (parentDir === dir) break; // Reached root\n dir = parentDir;\n }\n // Fallback: use tsconfig directory\n return tsConfigPath.substring(0, tsConfigPath.lastIndexOf(\"/\"));\n }\n\n /**\n * Extract all message handlers from the codebase\n *\n * Uses transitive import following to discover all reachable code:\n * 1. Start with source files from tsconfig that are within the package\n * 2. Follow imports recursively (within package boundary)\n * 3. Cache analyzed files to avoid re-processing\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Handler extraction requires analyzing multiple patterns and file boundaries\n extractHandlers(): HandlerAnalysis {\n const handlers: MessageHandler[] = [];\n const messageTypes = new Set<string>();\n const invalidMessageTypes = new Set<string>();\n const stateConstraints: StateConstraint[] = [];\n const verifiedStates: VerifiedStateInfo[] = [];\n this.warnings = []; // Clear warnings from previous runs\n\n // Find all source files from tsconfig as potential entry points\n const allSourceFiles = this.project.getSourceFiles();\n // Filter to only files within the package boundary\n const entryPoints = allSourceFiles.filter((f) => this.isWithinPackage(f.getFilePath()));\n\n this.debugLogSourceFiles(allSourceFiles, entryPoints);\n\n // Analyze each entry point and follow its imports transitively\n for (const entryPoint of entryPoints) {\n this.analyzeFileAndImports(\n entryPoint,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints,\n verifiedStates\n );\n }\n\n // Issue #27: Second pass - find functions that modify verified states\n if (verifiedStates.length > 0) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found ${verifiedStates.length} verified state(s), scanning for mutating functions...`\n );\n }\n\n for (const filePath of this.analyzedFiles) {\n const sourceFile = this.project.getSourceFile(filePath);\n if (!sourceFile) continue;\n\n const mutatingHandlers = this.findStateMutatingFunctions(sourceFile, verifiedStates);\n\n for (const handler of mutatingHandlers) {\n // Avoid duplicates - check if handler already exists for this message type\n const exists = handlers.some(\n (h) =>\n h.messageType === handler.messageType && h.location.file === handler.location.file\n );\n\n if (!exists) {\n handlers.push(handler);\n if (this.isValidTLAIdentifier(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n }\n }\n\n this.debugLogExtractionResults(handlers.length, invalidMessageTypes.size);\n this.debugLogAnalysisStats(allSourceFiles.length, entryPoints.length);\n\n return {\n handlers,\n messageTypes,\n stateConstraints,\n verifiedStates,\n warnings: this.warnings,\n };\n }\n\n /**\n * Analyze a file and recursively follow its imports\n *\n * This implements the Knip pattern: follow imports transitively\n * to discover all reachable code, including files outside src/\n * that are imported from analyzed files.\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Import following requires conditional logic for package boundaries, caching, and recursion\n private analyzeFileAndImports(\n sourceFile: SourceFile,\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>,\n stateConstraints: StateConstraint[],\n verifiedStates: VerifiedStateInfo[]\n ): void {\n const filePath = sourceFile.getFilePath();\n\n // Skip if already analyzed\n if (this.analyzedFiles.has(filePath)) {\n return;\n }\n\n // Mark as analyzed\n this.analyzedFiles.add(filePath);\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Analyzing: ${filePath}`);\n }\n\n // Extract handlers from this file\n const fileHandlers = this.extractFromFile(sourceFile);\n handlers.push(...fileHandlers);\n this.categorizeHandlerMessageTypes(fileHandlers, messageTypes, invalidMessageTypes);\n\n // Extract state constraints from this file\n const fileConstraints = this.extractStateConstraintsFromFile(sourceFile);\n stateConstraints.push(...fileConstraints);\n\n // Issue #27: Extract verified states from this file\n const fileVerifiedStates = this.extractVerifiedStatesFromFile(sourceFile);\n verifiedStates.push(...fileVerifiedStates);\n\n // Follow imports to discover more files (within package boundary only)\n const importDeclarations = sourceFile.getImportDeclarations();\n for (const importDecl of importDeclarations) {\n const importedFile = importDecl.getModuleSpecifierSourceFile();\n\n if (importedFile) {\n const importedPath = importedFile.getFilePath();\n\n // Only follow imports within the same package\n // This excludes:\n // - node_modules (other packages)\n // - Framework code in monorepo parent (other packages)\n // But includes:\n // - All files in this package (src/, specs/, tests/, etc.)\n if (!this.isWithinPackage(importedPath)) {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Skipping external import: ${importedPath}`);\n }\n continue;\n }\n\n // Recursively analyze imported file\n this.analyzeFileAndImports(\n importedFile,\n handlers,\n messageTypes,\n invalidMessageTypes,\n stateConstraints,\n verifiedStates\n );\n } else if (process.env[\"POLLY_DEBUG\"]) {\n // Log unresolved imports for debugging\n const specifier = importDecl.getModuleSpecifierValue();\n if (!specifier.startsWith(\"node:\") && !this.isNodeModuleImport(specifier)) {\n console.log(`[DEBUG] Could not resolve import: ${specifier} in ${filePath}`);\n }\n }\n }\n }\n\n /**\n * Check if a file path is within the package boundary\n */\n private isWithinPackage(filePath: string): boolean {\n // Must be under package root\n if (!filePath.startsWith(this.packageRoot)) {\n return false;\n }\n // Must not be in node_modules\n if (filePath.includes(\"/node_modules/\")) {\n return false;\n }\n return true;\n }\n\n /**\n * Check if an import specifier is a node_modules import\n */\n private isNodeModuleImport(specifier: string): boolean {\n // Relative imports start with . or ..\n // Absolute/node_modules imports don't\n return !specifier.startsWith(\".\") && !specifier.startsWith(\"/\");\n }\n\n private debugLogAnalysisStats(totalSourceFiles: number, entryPointCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Analysis Statistics:`);\n console.log(`[DEBUG] Package root: ${this.packageRoot}`);\n console.log(`[DEBUG] Source files from tsconfig: ${totalSourceFiles}`);\n console.log(`[DEBUG] Entry points (in package): ${entryPointCount}`);\n console.log(`[DEBUG] Files analyzed (including imports): ${this.analyzedFiles.size}`);\n console.log(\n `[DEBUG] Additional files discovered: ${this.analyzedFiles.size - entryPointCount}`\n );\n }\n\n private debugLogSourceFiles(allSourceFiles: SourceFile[], entryPoints: SourceFile[]): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Loaded ${allSourceFiles.length} source files from tsconfig`);\n console.log(`[DEBUG] Filtered to ${entryPoints.length} entry points within package`);\n if (entryPoints.length <= 20) {\n for (const sf of entryPoints) {\n console.log(`[DEBUG] - ${sf.getFilePath()}`);\n }\n }\n }\n\n private categorizeHandlerMessageTypes(\n handlers: MessageHandler[],\n messageTypes: Set<string>,\n invalidMessageTypes: Set<string>\n ): void {\n for (const handler of handlers) {\n if (this.isValidTLAIdentifier(handler.messageType)) {\n messageTypes.add(handler.messageType);\n } else {\n invalidMessageTypes.add(handler.messageType);\n }\n }\n }\n\n private debugLogExtractionResults(handlerCount: number, invalidCount: number): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] Total handlers extracted: ${handlerCount}`);\n if (invalidCount > 0) {\n console.log(`[DEBUG] Filtered ${invalidCount} invalid message type(s) from handlers`);\n }\n }\n\n /**\n * Check if a string is a valid TLA+ identifier\n * TLA+ identifiers must:\n * - Start with a letter (a-zA-Z)\n * - Contain only letters, digits, and underscores\n * - Not be empty\n */\n private isValidTLAIdentifier(s: string): boolean {\n if (!s || s.length === 0) {\n return false;\n }\n // TLA+ identifiers: start with letter, contain only alphanumeric + underscore\n return /^[a-zA-Z][a-zA-Z0-9_]*$/.test(s);\n }\n\n /**\n * Extract handlers from a single source file\n */\n private extractFromFile(sourceFile: SourceFile): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n sourceFile.forEachDescendant((node) => {\n this.processNodeForHandlers(node, context, filePath, handlers);\n });\n\n return handlers;\n }\n\n /**\n * Process a single node to find handler patterns\n */\n private processNodeForHandlers(\n node: Node,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n if (Node.isCallExpression(node)) {\n this.processCallExpressionHandler(node, context, filePath, handlers);\n }\n\n if (Node.isSwitchStatement(node)) {\n const switchHandlers = this.extractSwitchCaseHandlers(node, context, filePath);\n handlers.push(...switchHandlers);\n }\n\n if (Node.isVariableDeclaration(node)) {\n const mapHandlers = this.extractHandlerMapPattern(node, context, filePath);\n handlers.push(...mapHandlers);\n }\n\n if (Node.isIfStatement(node) && !this.isElseIfStatement(node)) {\n const typeGuardHandlers = this.extractTypeGuardHandlers(node, context, filePath);\n handlers.push(...typeGuardHandlers);\n }\n }\n\n /**\n * Process call expression to find .on() or .addEventListener() handlers\n */\n private processCallExpressionHandler(\n node: CallExpression,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n const expression = node.getExpression();\n\n if (Node.isPropertyAccessExpression(expression)) {\n const methodName = expression.getName();\n\n if (methodName === \"on\" || methodName === \"addEventListener\") {\n const handler = this.extractHandler(node, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n }\n }\n\n /**\n * Check if a node is an else-if statement\n */\n private isElseIfStatement(node: Node): boolean {\n const parent = node.getParent();\n return parent !== undefined && Node.isIfStatement(parent);\n }\n\n /**\n * Extract handler details from a .on() call expression\n */\n private extractHandler(\n callExpr: CallExpression,\n context: string,\n filePath: string\n ): MessageHandler | null {\n const args = callExpr.getArguments();\n\n if (args.length < 2) {\n return null;\n }\n\n // First argument should be the message type (string literal)\n const messageTypeArg = args[0];\n let messageType: string | null = null;\n\n if (Node.isStringLiteral(messageTypeArg)) {\n messageType = messageTypeArg.getLiteralValue();\n } else if (Node.isTemplateExpression(messageTypeArg)) {\n // Handle template literals if needed\n messageType = messageTypeArg.getText().replace(/[`'\"]/g, \"\");\n }\n\n if (!messageType) {\n return null;\n }\n\n // Second argument is the handler function\n const handlerArg = args[1];\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Parse the handler function for state assignments and verification conditions\n let actualHandler: ArrowFunction | FunctionExpression | FunctionDeclaration | null = null;\n\n if (Node.isArrowFunction(handlerArg) || Node.isFunctionExpression(handlerArg)) {\n actualHandler = handlerArg;\n } else if (Node.isIdentifier(handlerArg)) {\n // Resolve function reference (e.g., bus.on('query', handleQuery))\n actualHandler = this.resolveFunctionReference(handlerArg);\n }\n\n if (actualHandler) {\n this.extractAssignments(actualHandler, assignments);\n this.extractVerificationConditions(actualHandler, preconditions, postconditions);\n\n // Check for async mutations (potential race conditions)\n if (Node.isArrowFunction(actualHandler) || Node.isFunctionExpression(actualHandler)) {\n this.checkAsyncMutations(actualHandler, messageType);\n }\n }\n\n const line = callExpr.getStartLineNumber();\n\n // Extract relationships from handler code\n const sourceFile = callExpr.getSourceFile();\n const handlerName = `${messageType}_handler`;\n let relationships: ComponentRelationship[] | undefined;\n\n if (actualHandler) {\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n actualHandler,\n sourceFile,\n handlerName\n );\n if (detectedRelationships.length > 0) {\n relationships = detectedRelationships;\n }\n }\n\n return {\n messageType,\n node: context, // Renamed from 'context' to 'node' for generalization\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line,\n },\n relationships,\n };\n }\n\n /**\n * Extract state assignments from a handler function\n * Handles:\n * - Simple assignments: state.field = value\n * - Compound operators: state.count += 1\n * - Unary operators: state.count++, state.count--, ++state.count, --state.count\n * - Array mutations: state.items.push(item)\n * - Array indexing: state.items[0] = value\n */\n private extractAssignments(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\n assignments: StateAssignment[]\n ): void {\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.extractBinaryExpressionAssignment(node, assignments);\n }\n\n if (Node.isCallExpression(node)) {\n this.extractArrayMutationAssignment(node, assignments);\n }\n\n if (Node.isPostfixUnaryExpression(node) || Node.isPrefixUnaryExpression(node)) {\n this.extractUnaryExpressionAssignment(node, assignments);\n }\n });\n }\n\n /**\n * Extract assignments from binary expressions (=, +=, -=, etc.)\n */\n private extractBinaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n\n if (operator === \"=\") {\n this.extractSimpleOrElementAccessAssignment(node, assignments);\n } else if ([\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) {\n this.extractCompoundAssignment(node, assignments);\n }\n }\n\n /**\n * Extract simple or element access assignments (state.field = value or state.items[0] = value)\n */\n private extractSimpleOrElementAccessAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n this.extractPropertyAccessAssignment(left, right, assignments);\n } else if (Node.isElementAccessExpression(left)) {\n this.extractElementAccessAssignment(left, right, assignments);\n }\n }\n\n /**\n * Extract property access assignment (state.field = value or someState.value.field = value)\n */\n private extractPropertyAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const fieldPath = this.getPropertyPath(left);\n\n // Try each pattern in order\n if (this.tryExtractStateFieldPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalNestedFieldPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalObjectPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalArrayPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSignalMethodPattern(fieldPath, right, assignments)) return;\n if (this.tryExtractSetConstructorPattern(fieldPath, right, assignments)) return;\n this.tryExtractMapConstructorPattern(fieldPath, right, assignments);\n }\n\n /** Pattern 1: state.field = value */\n private tryExtractStateFieldPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.startsWith(\"state.\")) return false;\n const field = fieldPath.substring(6);\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field, value });\n }\n return true;\n }\n\n /** Pattern 2: someState.value.field = value (signal pattern with nested field) */\n private tryExtractSignalNestedFieldPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n const valueFieldMatch = fieldPath.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\\.value\\.(.+)$/);\n if (!valueFieldMatch?.[1] || !valueFieldMatch?.[2]) return false;\n const signalName = valueFieldMatch[1];\n const fieldName = valueFieldMatch[2];\n const value = this.extractValue(right);\n if (value !== undefined) {\n assignments.push({ field: `${signalName}_${fieldName}`, value });\n }\n return true;\n }\n\n /** Pattern 3: someState.value = { object literal } (signal replacement or spread update) */\n private tryExtractSignalObjectPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isObjectLiteralExpression(right)) return false;\n const signalName = fieldPath.slice(0, -6);\n if (this.isSpreadUpdatePattern(right, fieldPath)) {\n this.extractSpreadUpdateAssignments(right, assignments, signalName);\n } else {\n this.extractObjectLiteralAssignments(right, assignments, signalName);\n }\n return true;\n }\n\n /** Check if object literal is a spread update pattern: { ...existing, field: value } */\n private isSpreadUpdatePattern(\n objectLiteral: import(\"ts-morph\").ObjectLiteralExpression,\n fieldPath: string\n ): boolean {\n const properties = objectLiteral.getProperties();\n if (properties.length === 0) return false;\n const firstProp = properties[0];\n if (!firstProp || !Node.isSpreadAssignment(firstProp)) return false;\n const spreadExpr = firstProp.getExpression();\n if (!spreadExpr) return false;\n return this.getPropertyPath(spreadExpr) === fieldPath;\n }\n\n /** Pattern 4: someState.value = [...someState.value, item] (array spread) */\n private tryExtractSignalArrayPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isArrayLiteralExpression(right)) return false;\n const signalName = fieldPath.slice(0, -6);\n const arrayAssignment = this.extractArraySpreadOperation(right, fieldPath, signalName);\n if (arrayAssignment) {\n assignments.push(arrayAssignment);\n }\n return true;\n }\n\n /** Pattern 5: someState.value = someState.value.filter(...) or .map(...) (array methods) */\n private tryExtractSignalMethodPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isCallExpression(right)) return false;\n const signalName = fieldPath.slice(0, -6);\n\n // Check for and warn about Set/Map direct method calls that mutate\n this.checkForMutatingCollectionMethods(right);\n\n const methodAssignment = this.extractArrayMethodOperation(right, fieldPath, signalName);\n if (methodAssignment) {\n assignments.push(methodAssignment);\n }\n return true;\n }\n\n /** Check for mutating Set/Map methods and emit warnings */\n private checkForMutatingCollectionMethods(callExpr: import(\"ts-morph\").CallExpression): void {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n\n // Check for Set mutating methods\n const setMethods = [\"add\", \"delete\", \"clear\"];\n if (setMethods.includes(methodName)) {\n // Try to determine if this is a Set operation by checking the source expression\n const sourceText = sourceExpr.getText();\n if (sourceText.includes(\"Set\") || this.looksLikeSetOrMap(sourceExpr, \"Set\")) {\n this.warnUnsupportedPattern(\n `set.${methodName}()`,\n this.getNodeLocation(callExpr),\n `Set.${methodName}() mutates in place. Use: new Set([...set, item]) for add, new Set([...set].filter(...)) for delete.`\n );\n }\n }\n\n // Check for Map mutating methods\n const mapMethods = [\"set\", \"delete\", \"clear\"];\n if (mapMethods.includes(methodName)) {\n const sourceText = sourceExpr.getText();\n if (sourceText.includes(\"Map\") || this.looksLikeSetOrMap(sourceExpr, \"Map\")) {\n this.warnUnsupportedPattern(\n `map.${methodName}()`,\n this.getNodeLocation(callExpr),\n `Map.${methodName}() mutates in place. Use: new Map([...map, [key, value]]) for set, new Map([...map].filter(...)) for delete.`\n );\n }\n }\n }\n\n /** Heuristic check if an expression might be a Set or Map */\n private looksLikeSetOrMap(expr: Node, collectionType: \"Set\" | \"Map\"): boolean {\n const text = expr.getText().toLowerCase();\n return text.includes(collectionType.toLowerCase());\n }\n\n /** Pattern 6: someState.value = new Set([...someState.value, item]) (Set operations) */\n private tryExtractSetConstructorPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isNewExpression(right)) return false;\n const constructorExpr = right.getExpression();\n if (!Node.isIdentifier(constructorExpr) || constructorExpr.getText() !== \"Set\") return false;\n\n const signalName = fieldPath.slice(0, -6);\n const setAssignment = this.extractSetOperation(right, fieldPath, signalName);\n if (setAssignment) {\n assignments.push(setAssignment);\n }\n return true;\n }\n\n /** Pattern 7: someState.value = new Map([...someState.value, [key, val]]) (Map operations) */\n private tryExtractMapConstructorPattern(\n fieldPath: string,\n right: Node,\n assignments: StateAssignment[]\n ): boolean {\n if (!fieldPath.endsWith(\".value\") || !Node.isNewExpression(right)) return false;\n const constructorExpr = right.getExpression();\n if (!Node.isIdentifier(constructorExpr) || constructorExpr.getText() !== \"Map\") return false;\n\n const signalName = fieldPath.slice(0, -6);\n const mapAssignment = this.extractMapOperation(right, fieldPath, signalName);\n if (mapAssignment) {\n assignments.push(mapAssignment);\n }\n return true;\n }\n\n /** Extract Set operations from new Set(...) constructor */\n private extractSetOperation(\n newExpr: import(\"ts-morph\").NewExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const args = newExpr.getArguments();\n\n // new Set() - clear operation\n if (args.length === 0) {\n return { field: signalName, value: \"{}\" };\n }\n\n const firstArg = args[0];\n if (!firstArg) return null;\n\n // new Set([...set.value, item]) - add operation\n if (Node.isArrayLiteralExpression(firstArg)) {\n return this.extractSetArrayOperation(firstArg, fieldPath, signalName);\n }\n\n // new Set([...set.value].filter(...)) - delete operation via method chain\n if (Node.isCallExpression(firstArg)) {\n return this.extractSetMethodChainOperation(firstArg, fieldPath, signalName);\n }\n\n return null;\n }\n\n /** Extract Set operation from array literal: new Set([...set.value, item]) */\n private extractSetArrayOperation(\n arrayLiteral: import(\"ts-morph\").ArrayLiteralExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const elements = arrayLiteral.getElements();\n if (elements.length < 1) return null;\n\n const firstElement = elements[0];\n const lastElement = elements[elements.length - 1];\n\n // Check for add: new Set([...set.value, item])\n if (firstElement && Node.isSpreadElement(firstElement)) {\n const spreadExpr = firstElement.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Add operation: @ \\union {payload}\n return { field: signalName, value: \"@ \\\\union {payload}\" };\n }\n }\n\n // Check for add at beginning: new Set([item, ...set.value])\n if (lastElement && Node.isSpreadElement(lastElement)) {\n const spreadExpr = lastElement.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n return { field: signalName, value: \"{payload} \\\\union @\" };\n }\n }\n\n return null;\n }\n\n /** Extract Set operation from method chain: new Set([...set.value].filter(...)) */\n private extractSetMethodChainOperation(\n callExpr: import(\"ts-morph\").CallExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return null;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n\n // Check for [...set.value].filter(...) pattern\n if (methodName === \"filter\" && Node.isArrayLiteralExpression(sourceExpr)) {\n const elements = sourceExpr.getElements();\n if (elements.length === 1) {\n const spreadEl = elements[0];\n if (spreadEl && Node.isSpreadElement(spreadEl)) {\n const spreadExpr = spreadEl.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Delete operation: @ \\ {payload}\n return { field: signalName, value: \"@ \\\\ {payload}\" };\n }\n }\n }\n }\n\n return null;\n }\n\n /** Extract Map operations from new Map(...) constructor */\n private extractMapOperation(\n newExpr: import(\"ts-morph\").NewExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const args = newExpr.getArguments();\n\n // new Map() - clear operation\n if (args.length === 0) {\n return { field: signalName, value: \"<<>>\" }; // Empty function in TLA+\n }\n\n const firstArg = args[0];\n if (!firstArg) return null;\n\n // new Map([...map.value, [key, value]]) - set operation\n if (Node.isArrayLiteralExpression(firstArg)) {\n return this.extractMapArrayOperation(firstArg, fieldPath, signalName);\n }\n\n // new Map([...map.value].filter(...)) - delete operation via method chain\n if (Node.isCallExpression(firstArg)) {\n return this.extractMapMethodChainOperation(firstArg, fieldPath, signalName);\n }\n\n return null;\n }\n\n /** Extract Map operation from array literal: new Map([...map.value, [key, val]]) */\n private extractMapArrayOperation(\n arrayLiteral: import(\"ts-morph\").ArrayLiteralExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const elements = arrayLiteral.getElements();\n if (elements.length < 1) return null;\n\n const firstElement = elements[0];\n\n // Check for set: new Map([...map.value, [key, value]])\n if (firstElement && Node.isSpreadElement(firstElement)) {\n const spreadExpr = firstElement.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Set operation: [@ EXCEPT ![payload.key] = payload.value]\n return { field: signalName, value: \"[@ EXCEPT ![payload.key] = payload.value]\" };\n }\n }\n\n return null;\n }\n\n /** Extract Map operation from method chain: new Map([...map.value].filter(...)) */\n private extractMapMethodChainOperation(\n callExpr: import(\"ts-morph\").CallExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return null;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n\n // Check for [...map.value].filter(...) pattern\n if (methodName === \"filter\" && Node.isArrayLiteralExpression(sourceExpr)) {\n const elements = sourceExpr.getElements();\n if (elements.length === 1) {\n const spreadEl = elements[0];\n if (spreadEl && Node.isSpreadElement(spreadEl)) {\n const spreadExpr = spreadEl.getExpression();\n if (spreadExpr && this.getPropertyPath(spreadExpr) === fieldPath) {\n // Delete operation: restrict domain\n return { field: signalName, value: \"[k \\\\in DOMAIN @ \\\\ {payload.key} |-> @[k]]\" };\n }\n }\n }\n }\n\n return null;\n }\n\n /**\n * Extract array method operations: arr.filter(...), arr.map(...)\n */\n private extractArrayMethodOperation(\n callExpr: import(\"ts-morph\").CallExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const expression = callExpr.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) return null;\n\n const methodName = expression.getName();\n const sourceExpr = expression.getExpression();\n const sourcePath = this.getPropertyPath(sourceExpr);\n\n // Check if source matches target (e.g., todos.value = todos.value.filter(...))\n if (sourcePath !== fieldPath) return null;\n\n switch (methodName) {\n case \"filter\":\n // Abstract filter - we can't parse the predicate, so model as non-deterministic removal\n return { field: signalName, value: \"SelectSeq(@, LAMBDA t: TRUE)\" };\n\n case \"map\":\n // Abstract map - model as identity transformation (elements may change)\n return { field: signalName, value: \"[i \\\\in DOMAIN @ |-> @[i]]\" };\n\n case \"slice\":\n // Slice returns a subsequence\n return { field: signalName, value: \"SubSeq(@, 1, Len(@))\" };\n\n case \"concat\":\n // Concat appends another sequence\n return { field: signalName, value: \"@ \\\\o <<payload>>\" };\n\n case \"reverse\":\n // Reverse the sequence\n return { field: signalName, value: \"[i \\\\in DOMAIN @ |-> @[Len(@) - i + 1]]\" };\n\n default:\n // Warn about unsupported array methods\n this.warnUnsupportedArrayMethod(methodName, callExpr);\n return null;\n }\n }\n\n /** Warn about unsupported array methods */\n private warnUnsupportedArrayMethod(methodName: string, node: Node): void {\n const mutatingMethods = [\n \"push\",\n \"pop\",\n \"shift\",\n \"unshift\",\n \"splice\",\n \"sort\",\n \"fill\",\n \"copyWithin\",\n ];\n const queryMethods = [\n \"find\",\n \"findIndex\",\n \"reduce\",\n \"reduceRight\",\n \"some\",\n \"every\",\n \"includes\",\n \"indexOf\",\n \"lastIndexOf\",\n ];\n const otherMethods = [\"flat\", \"flatMap\", \"join\", \"toString\", \"toLocaleString\"];\n\n if (mutatingMethods.includes(methodName)) {\n this.warnUnsupportedPattern(\n `array.${methodName}()`,\n this.getNodeLocation(node),\n `'${methodName}' mutates in place. Use spread syntax: [...arr, item] for append, arr.filter() for removal.`\n );\n } else if (queryMethods.includes(methodName)) {\n this.warnUnsupportedPattern(\n `array.${methodName}()`,\n this.getNodeLocation(node),\n `'${methodName}' returns a single value, not a new array. State assignment won't be extracted.`\n );\n } else if (otherMethods.includes(methodName)) {\n this.warnUnsupportedPattern(\n `array.${methodName}()`,\n this.getNodeLocation(node),\n `'${methodName}' is not supported for state extraction. Consider using map/filter instead.`\n );\n }\n }\n\n /**\n * Extract assignments from spread update pattern: { ...existing, field: value }\n * Only extracts the explicitly set properties, not the spread\n */\n private extractSpreadUpdateAssignments(\n objectLiteral: import(\"ts-morph\").ObjectLiteralExpression,\n assignments: StateAssignment[],\n signalName: string\n ): void {\n for (const prop of objectLiteral.getProperties()) {\n // Skip spread assignments (they preserve existing values)\n if (Node.isSpreadAssignment(prop)) continue;\n\n // Extract regular property assignments\n this.extractPropertyAssignment(prop, assignments, signalName);\n }\n }\n\n /**\n * Extract array spread operations: [...arr, item] or [item, ...arr]\n */\n private extractArraySpreadOperation(\n arrayLiteral: import(\"ts-morph\").ArrayLiteralExpression,\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const elements = arrayLiteral.getElements();\n if (elements.length < 1) return null;\n\n // Try append pattern first, then prepend\n return (\n this.tryExtractAppendOperation(elements, fieldPath, signalName) ??\n this.tryExtractPrependOperation(elements, fieldPath, signalName)\n );\n }\n\n /** Extract append operation: [...arr, item] or [...arr, item1, item2] */\n private tryExtractAppendOperation(\n elements: Node[],\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n const firstElement = elements[0];\n if (!firstElement || !Node.isSpreadElement(firstElement)) return null;\n\n const spreadExpr = firstElement.getExpression();\n if (!spreadExpr || this.getPropertyPath(spreadExpr) !== fieldPath) return null;\n\n if (elements.length === 2) {\n return { field: signalName, value: \"Append(@, payload)\" };\n }\n const placeholders = Array(elements.length - 1)\n .fill(\"payload\")\n .join(\", \");\n return { field: signalName, value: `@ \\\\o <<${placeholders}>>` };\n }\n\n /** Extract prepend operation: [item, ...arr] or [item1, item2, ...arr] */\n private tryExtractPrependOperation(\n elements: Node[],\n fieldPath: string,\n signalName: string\n ): StateAssignment | null {\n if (elements.length < 2) return null;\n\n const lastElement = elements[elements.length - 1];\n if (!lastElement || !Node.isSpreadElement(lastElement)) return null;\n\n const spreadExpr = lastElement.getExpression();\n if (!spreadExpr || this.getPropertyPath(spreadExpr) !== fieldPath) return null;\n\n if (elements.length === 2) {\n return { field: signalName, value: \"<<payload>> \\\\o @\" };\n }\n const placeholders = Array(elements.length - 1)\n .fill(\"payload\")\n .join(\", \");\n return { field: signalName, value: `<<${placeholders}>> \\\\o @` };\n }\n\n /**\n * Extract assignments from object literal properties\n * Used for: someState.value = { field1: value1, field2: value2 }\n * @param signalName - Optional signal name prefix (e.g., \"user\" for user.value = {...})\n */\n private extractObjectLiteralAssignments(\n objectLiteral: Node,\n assignments: StateAssignment[],\n signalName?: string\n ): void {\n if (!Node.isObjectLiteralExpression(objectLiteral)) return;\n\n for (const prop of objectLiteral.getProperties()) {\n this.extractPropertyAssignment(prop, assignments, signalName);\n }\n }\n\n /**\n * Extract a single property assignment from an object literal property\n */\n private extractPropertyAssignment(\n prop: Node,\n assignments: StateAssignment[],\n signalName?: string\n ): void {\n // Handle regular property assignments: { field: value }\n if (Node.isPropertyAssignment(prop)) {\n const name = prop.getName();\n const initializer = prop.getInitializer();\n if (!name || !initializer) return;\n\n const value = this.extractValue(initializer);\n if (value === undefined) return;\n\n // Prefix field name with signal name if provided (e.g., user_loggedIn)\n const field = signalName ? `${signalName}_${name}` : name;\n assignments.push({ field, value });\n return;\n }\n\n // Handle shorthand properties: { field }\n if (Node.isShorthandPropertyAssignment(prop)) {\n const name = prop.getName();\n // For shorthand, we can't extract the value statically\n // but we know the field is being set\n const field = signalName ? `${signalName}_${name}` : name;\n assignments.push({ field, value: \"@\" }); // Use @ as placeholder\n }\n }\n\n /**\n * Extract element access assignment (state.items[index] = value)\n */\n private extractElementAccessAssignment(\n left: Node,\n right: Node,\n assignments: StateAssignment[]\n ): void {\n if (!Node.isElementAccessExpression(left)) return;\n\n const expr = left.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const fieldPath = this.getPropertyPath(expr);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (!field) return;\n const indexExpr = left.getArgumentExpression();\n const index = indexExpr ? indexExpr.getText() : \"0\";\n const value = this.extractValue(right);\n\n if (value !== undefined) {\n const tlaIndex = this.isNumericLiteral(index)\n ? (Number.parseInt(index, 10) + 1).toString()\n : `${index} + 1`;\n assignments.push({\n field: `${field}[${tlaIndex}]`,\n value,\n });\n }\n }\n\n /**\n * Check if field path is a state mutation pattern and extract field name\n * Supports: state.field, someState.value.field\n * Returns: field name or null if not a state pattern\n */\n private extractFieldFromStatePath(fieldPath: string): string | null {\n // Pattern 1: state.field\n if (fieldPath.startsWith(\"state.\")) {\n return fieldPath.substring(6);\n }\n\n // Pattern 2: someState.value.field\n const valueMatch = fieldPath.match(/\\.value\\.(.+)$/);\n if (valueMatch?.[1]) {\n return valueMatch[1];\n }\n\n return null;\n }\n\n /**\n * Extract compound assignments (+=, -=, *=, /=, %=)\n */\n private extractCompoundAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n const left = node.getLeft();\n const right = node.getRight();\n\n if (Node.isPropertyAccessExpression(left)) {\n const fieldPath = this.getPropertyPath(left);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n const rightValue = right.getText();\n const tlaOp = operator.slice(0, -1); // Remove '=' suffix\n assignments.push({\n field,\n value: `@ ${tlaOp} ${rightValue}`,\n });\n }\n }\n }\n\n /**\n * Get operator text from unary expression token\n */\n private getUnaryOperatorText(operator: unknown): string | null {\n if (typeof operator === \"number\") {\n // It's a SyntaxKind enum value\n if (operator === SyntaxKind.PlusPlusToken) return \"++\";\n if (operator === SyntaxKind.MinusMinusToken) return \"--\";\n return null;\n }\n if (operator && typeof operator === \"object\" && \"getText\" in operator) {\n // It's a Node with getText method\n return (operator as { getText(): string }).getText();\n }\n return null;\n }\n\n /**\n * Extract unary expression assignments (++, --)\n */\n private extractUnaryExpressionAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isPostfixUnaryExpression(node) && !Node.isPrefixUnaryExpression(node)) return;\n\n const operator = node.getOperatorToken();\n const operatorText = this.getUnaryOperatorText(operator);\n\n // Only handle ++ and --\n if (operatorText !== \"++\" && operatorText !== \"--\") return;\n\n const operand = node.getOperand();\n if (!Node.isPropertyAccessExpression(operand)) return;\n\n const fieldPath = this.getPropertyPath(operand);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n // Translate ++ to @ + 1 and -- to @ - 1\n const value = operatorText === \"++\" ? \"@ + 1\" : \"@ - 1\";\n assignments.push({ field, value });\n }\n }\n\n /**\n * Extract array mutation assignments (push, pop, shift, unshift, splice)\n */\n private extractArrayMutationAssignment(node: Node, assignments: StateAssignment[]): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (Node.isPropertyAccessExpression(object)) {\n const fieldPath = this.getPropertyPath(object);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field) {\n const args = node.getArguments().map((arg) => arg.getText());\n const tlaValue = this.translateArrayMethod(methodName, args, fieldPath);\n\n if (tlaValue) {\n assignments.push({ field, value: tlaValue });\n }\n }\n }\n }\n\n /**\n * Translate array mutation methods to TLA+ operators\n */\n private translateArrayMethod(\n methodName: string,\n args: string[],\n fieldPath: string\n ): string | null {\n switch (methodName) {\n case \"push\":\n return args.length === 1 ? `Append(@, ${args[0]})` : null;\n\n case \"pop\":\n return \"SubSeq(@, 1, Len(@)-1)\";\n\n case \"shift\":\n return \"Tail(@)\";\n\n case \"unshift\":\n return args.length === 1 ? `<<${args[0]}>> \\\\o @` : null;\n\n case \"splice\":\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Warning: splice() mutation on ${fieldPath} not fully translated`);\n }\n return null;\n\n default:\n return null;\n }\n }\n\n /**\n * Check for async mutations that could cause race conditions\n * Warns when async handlers have state mutations after await expressions\n */\n private checkAsyncMutations(\n funcNode: ArrowFunction | FunctionExpression,\n messageType: string\n ): void {\n // Check if function is async\n const isAsync =\n funcNode.hasModifier?.(SyntaxKind.AsyncKeyword) ||\n funcNode.getModifiers?.()?.some((m: Node) => m.getKind() === SyntaxKind.AsyncKeyword);\n\n if (!isAsync) {\n return; // Not async, no race conditions possible\n }\n\n // Find all await expressions\n const awaitExpressions: Node[] = [];\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isAwaitExpression(node)) {\n awaitExpressions.push(node);\n }\n });\n\n if (awaitExpressions.length === 0) {\n return; // No awaits, no interleaving possible\n }\n\n // Find all state mutations\n const mutations: Array<{ field: string; line: number; afterAwait: boolean }> = [];\n const body = funcNode.getBody();\n\n if (!body) {\n return;\n }\n\n const firstAwait = awaitExpressions[0];\n if (!firstAwait) return;\n\n // Get position of first await\n const firstAwaitPos = firstAwait.getStart();\n\n // Track mutations and whether they occur after await\n funcNode.forEachDescendant((node: Node) => {\n if (Node.isBinaryExpression(node)) {\n this.checkBinaryExpressionMutation(node, firstAwaitPos, mutations);\n }\n\n if (Node.isCallExpression(node)) {\n this.checkCallExpressionMutation(node, firstAwaitPos, mutations);\n }\n });\n\n // Filter to mutations after await\n const mutationsAfterAwait = mutations.filter((m) => m.afterAwait);\n\n if (mutationsAfterAwait.length > 0 && process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Warning: Async handler for '${messageType}' has ${mutationsAfterAwait.length} state mutation(s) after await`\n );\n console.log(\n \"[DEBUG] This may cause race conditions if multiple messages are processed concurrently\"\n );\n console.log(\n `[DEBUG] Mutations: ${mutationsAfterAwait.map((m) => `${m.field} (line ${m.line})`).join(\", \")}`\n );\n }\n }\n\n /**\n * Extract verification conditions (requires/ensures) from a handler function\n */\n private extractVerificationConditions(\n funcNode: ArrowFunction | FunctionExpression | FunctionDeclaration,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n const body = funcNode.getBody();\n const statements = Node.isBlock(body) ? body.getStatements() : body ? [body] : [];\n\n for (const statement of statements) {\n this.processStatementForConditions(statement, preconditions, postconditions);\n }\n }\n\n /**\n * Process a statement to extract verification conditions\n */\n private processStatementForConditions(\n statement: Node | Statement,\n preconditions: VerificationCondition[],\n postconditions: VerificationCondition[]\n ): void {\n if (!Node.isExpressionStatement(statement)) return;\n\n const expr = statement.getExpression();\n if (!Node.isCallExpression(expr)) return;\n\n const callee = expr.getExpression();\n if (!Node.isIdentifier(callee)) return;\n\n const functionName = callee.getText();\n\n if (functionName === \"requires\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n preconditions.push(condition);\n }\n } else if (functionName === \"ensures\") {\n const condition = this.extractCondition(expr);\n if (condition) {\n postconditions.push(condition);\n }\n }\n }\n\n /**\n * Extract condition from a requires() or ensures() call\n */\n private extractCondition(callExpr: CallExpression): VerificationCondition | null {\n const args = callExpr.getArguments();\n\n if (args.length === 0) {\n return null;\n }\n\n // First argument is the condition expression\n const conditionArg = args[0];\n if (!conditionArg) return null;\n\n const expression = conditionArg.getText();\n\n // Second argument (optional) is the message\n let message: string | undefined;\n if (args.length >= 2 && Node.isStringLiteral(args[1])) {\n message = args[1].getLiteralValue();\n }\n\n const line = callExpr.getStartLineNumber();\n const column = callExpr.getStartLinePos();\n\n return {\n expression,\n message,\n location: {\n line,\n column,\n },\n };\n }\n\n /**\n * Get the full property access path (e.g., \"state.user.loggedIn\")\n */\n private getPropertyPath(node: PropertyAccessExpression | Node): string {\n const parts: string[] = [];\n\n let current = node;\n while (Node.isPropertyAccessExpression(current)) {\n parts.unshift(current.getName());\n current = current.getExpression();\n }\n\n // Add the base identifier\n if (Node.isIdentifier(current)) {\n parts.unshift(current.getText());\n }\n\n return parts.join(\".\");\n }\n\n /**\n * Extract a literal value from an expression\n */\n private extractValue(node: Node): string | boolean | number | null | undefined {\n if (Node.isStringLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (Node.isNumericLiteral(node)) {\n return node.getLiteralValue();\n }\n\n if (node.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n\n if (node.getKind() === SyntaxKind.FalseKeyword) {\n return false;\n }\n\n if (node.getKind() === SyntaxKind.NullKeyword) {\n return null;\n }\n\n // For complex expressions, return undefined (can't extract)\n return undefined;\n }\n\n /**\n * Check if a string represents a numeric literal\n */\n private isNumericLiteral(str: string): boolean {\n return /^\\d+$/.test(str);\n }\n\n /**\n * Extract handlers from switch/case message router patterns\n * Detects: switch(message.type) { case 'EVENT': handler(); }\n */\n private extractSwitchCaseHandlers(\n switchNode: SwitchStatement,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n // Check if switching on message.type or similar\n const expression = switchNode.getExpression();\n const expressionText = expression.getText();\n\n // Look for patterns like: message.type, data.type, msg.type, event.type\n if (!/\\.(type|kind|event|action)/.test(expressionText)) {\n return handlers;\n }\n\n // Extract handlers from each case clause\n const caseClauses = switchNode.getClauses();\n for (const clause of caseClauses) {\n if (Node.isCaseClause(clause)) {\n const caseExpr = clause.getExpression();\n\n // Extract message type from case expression\n let messageType: string | null = null;\n if (Node.isStringLiteral(caseExpr)) {\n messageType = caseExpr.getLiteralValue();\n }\n\n if (messageType) {\n const line = clause.getStartLineNumber();\n\n handlers.push({\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n });\n }\n }\n }\n } catch (_error) {\n // Skip malformed switch statements\n }\n\n return handlers;\n }\n\n /**\n * Extract handlers from handler map patterns\n * Detects: const handlers = { 'EVENT': handlerFn, ... }\n */\n private extractHandlerMapPattern(\n varDecl: VariableDeclaration,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const initializer = varDecl.getInitializer();\n if (!initializer) {\n return handlers;\n }\n\n // Get the object literal - either direct or from defineHandlers() call\n const objectLiteral = this.getHandlerMapObject(initializer, varDecl);\n if (!objectLiteral) {\n return handlers;\n }\n\n // Extract handlers from object properties\n const properties = objectLiteral.getProperties();\n for (const prop of properties) {\n const handler = this.extractHandlerFromProperty(prop, context, filePath);\n if (handler) {\n handlers.push(handler);\n }\n }\n } catch (_error) {\n // Skip malformed object literals\n }\n\n return handlers;\n }\n\n /**\n * Extract the object literal from a handler map.\n * Only processes direct object literals with handler-like variable names.\n */\n private getHandlerMapObject(\n initializer: Node,\n varDecl: VariableDeclaration\n ): ObjectLiteralExpression | null {\n // Only process direct object literals\n if (Node.isObjectLiteralExpression(initializer)) {\n if (this.isHandlerMapName(varDecl.getName())) {\n return initializer;\n }\n }\n return null;\n }\n\n /**\n * Check if variable name suggests it's a handler map\n */\n private isHandlerMapName(varName: string): boolean {\n return /(handler|listener|callback|event)s?/.test(varName.toLowerCase());\n }\n\n /**\n * Extract handler from a property assignment in a handler map\n */\n private extractHandlerFromProperty(\n prop: Node,\n context: string,\n filePath: string\n ): MessageHandler | null {\n if (!Node.isPropertyAssignment(prop)) {\n return null;\n }\n\n const nameNode = prop.getNameNode();\n const messageType = this.getMessageTypeFromPropertyName(nameNode);\n\n if (!messageType) {\n return null;\n }\n\n const value = prop.getInitializer();\n const assignments: StateAssignment[] = [];\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n\n // Extract from the handler function\n if (value) {\n // Case 1: Inline arrow function or function expression\n if (Node.isArrowFunction(value) || Node.isFunctionExpression(value)) {\n this.extractAssignments(value, assignments);\n this.extractVerificationConditions(value, preconditions, postconditions);\n }\n // Case 2: Function reference (e.g., handleQuery)\n else if (Node.isIdentifier(value)) {\n const referencedFunction = this.resolveFunctionReference(value);\n if (referencedFunction) {\n this.extractAssignments(referencedFunction, assignments);\n this.extractVerificationConditions(referencedFunction, preconditions, postconditions);\n }\n }\n }\n\n const line = prop.getStartLineNumber();\n return {\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: { file: filePath, line },\n };\n }\n\n /**\n * Extract message type from property name node\n */\n private getMessageTypeFromPropertyName(nameNode: Node): string | null {\n if (Node.isStringLiteral(nameNode)) {\n return nameNode.getLiteralValue();\n }\n if (Node.isIdentifier(nameNode)) {\n return nameNode.getText();\n }\n return null;\n }\n\n /**\n * Resolve a function reference to its declaration or expression.\n * Handles both named function declarations and variable-assigned functions.\n *\n * @param identifier - The identifier node referencing the function\n * @returns The resolved function node, or null if not found\n */\n private resolveFunctionReference(\n identifier: Node\n ): FunctionDeclaration | ArrowFunction | FunctionExpression | null {\n if (!Node.isIdentifier(identifier)) {\n return null;\n }\n\n try {\n const definitions = identifier.getDefinitionNodes();\n\n for (const def of definitions) {\n // Direct function declaration\n if (Node.isFunctionDeclaration(def)) {\n return def;\n }\n\n // Variable declaration with function initializer\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (\n initializer &&\n (Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer))\n ) {\n return initializer;\n }\n }\n }\n } catch (_error) {\n // Failed to resolve - return null\n }\n\n return null;\n }\n\n /**\n * Extract handlers from type guard if/else-if patterns\n * Detects: if (isQueryMessage(msg)) { handleQuery(msg); }\n */\n private extractTypeGuardHandlers(\n ifNode: Node,\n context: string,\n filePath: string\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n\n try {\n const sourceFile = ifNode.getSourceFile();\n const typeGuards = this.getOrComputeTypeGuards(sourceFile);\n\n this.debugLogTypeGuards(sourceFile, typeGuards);\n this.processIfElseChain(ifNode as IfStatement, typeGuards, context, filePath, handlers);\n } catch (error) {\n this.debugLogError(error);\n }\n\n return handlers;\n }\n\n /**\n * Get cached type guards or compute if not cached\n */\n private getOrComputeTypeGuards(sourceFile: SourceFile): Map<string, string> {\n let typeGuards = this.typeGuardCache.get(sourceFile);\n if (!typeGuards) {\n typeGuards = this.findTypePredicateFunctions(sourceFile);\n this.typeGuardCache.set(sourceFile, typeGuards);\n }\n return typeGuards;\n }\n\n /**\n * Debug log type guards found in source file\n */\n private debugLogTypeGuards(sourceFile: SourceFile, typeGuards: Map<string, string>): void {\n if (!process.env[\"POLLY_DEBUG\"]) return;\n\n console.log(`[DEBUG] File: ${sourceFile.getBaseName()}`);\n console.log(`[DEBUG] Local type guards found: ${typeGuards.size}`);\n\n if (typeGuards.size > 0) {\n for (const [name, type] of typeGuards.entries()) {\n console.log(`[DEBUG] - ${name} → ${type}`);\n }\n }\n }\n\n /**\n * Process if-else-if chain to extract handlers\n */\n private processIfElseChain(\n currentIf: IfStatement,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string,\n handlers: MessageHandler[]\n ): void {\n let ifStatement = currentIf;\n while (ifStatement) {\n const handler = this.extractHandlerFromIfClause(ifStatement, typeGuards, context, filePath);\n\n if (handler) {\n handlers.push(handler);\n this.debugLogFoundHandler(handler);\n }\n\n // Check for else-if\n const elseStatement = ifStatement.getElseStatement();\n if (elseStatement && Node.isIfStatement(elseStatement)) {\n ifStatement = elseStatement;\n } else {\n break;\n }\n }\n }\n\n /**\n * Debug log found handler\n */\n private debugLogFoundHandler(handler: MessageHandler): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found handler: ${handler.messageType} at line ${handler.location.line}`);\n }\n }\n\n /**\n * Debug log error\n */\n private debugLogError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error in extractTypeGuardHandlers: ${error}`);\n }\n }\n\n /**\n * Extract handler from a single if clause\n */\n private extractHandlerFromIfClause(\n ifNode: Node,\n typeGuards: Map<string, string>,\n context: string,\n filePath: string\n ): MessageHandler | null {\n try {\n const ifStmt = ifNode as IfStatement;\n const condition = ifStmt.getExpression();\n\n if (!Node.isCallExpression(condition)) {\n return null;\n }\n\n const funcExpr = condition.getExpression();\n const funcName = Node.isIdentifier(funcExpr) ? funcExpr.getText() : undefined;\n\n this.debugLogProcessingFunction(funcName);\n\n const messageType = this.resolveMessageType(funcExpr, funcName, typeGuards);\n if (!messageType) {\n this.debugLogUnresolvedMessageType(funcName);\n return null;\n }\n\n const line = ifStmt.getStartLineNumber();\n const relationships = this.extractRelationshipsFromIfBlock(ifStmt, messageType);\n\n return {\n messageType,\n node: context,\n assignments: [],\n preconditions: [],\n postconditions: [],\n location: { file: filePath, line },\n relationships,\n };\n } catch (_error) {\n return null;\n }\n }\n\n /**\n * Debug log processing function\n */\n private debugLogProcessingFunction(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Processing if condition with function: ${funcName}`);\n }\n }\n\n /**\n * Debug log unresolved message type\n */\n private debugLogUnresolvedMessageType(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"] && funcName) {\n console.log(`[DEBUG] Could not resolve message type for: ${funcName}`);\n }\n }\n\n /**\n * Resolve message type from function expression\n */\n private resolveMessageType(\n funcExpr: Node,\n funcName: string | undefined,\n typeGuards: Map<string, string>\n ): string | undefined {\n if (funcName && typeGuards.has(funcName)) {\n const guardType = typeGuards.get(funcName);\n if (guardType) {\n this.debugLogFoundInLocalTypeGuards(funcName, guardType);\n return guardType;\n }\n }\n\n if (Node.isIdentifier(funcExpr)) {\n this.debugLogTryingImportResolution(funcName);\n return this.resolveImportedTypeGuard(funcExpr) ?? undefined;\n }\n\n return undefined;\n }\n\n /**\n * Debug log found in local type guards\n */\n private debugLogFoundInLocalTypeGuards(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found in local type guards: ${funcName} → ${messageType}`);\n }\n }\n\n /**\n * Debug log trying import resolution\n */\n private debugLogTryingImportResolution(funcName: string | undefined): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Not found locally, trying import resolution for: ${funcName}`);\n }\n }\n\n /**\n * Extract relationships from if block\n */\n private extractRelationshipsFromIfBlock(\n ifStmt: IfStatement,\n messageType: string\n ): ComponentRelationship[] | undefined {\n const thenStatement = ifStmt.getThenStatement();\n if (!thenStatement) {\n return undefined;\n }\n\n const sourceFile = ifStmt.getSourceFile();\n const handlerName = `${messageType}_handler`;\n const detectedRelationships = this.relationshipExtractor.extractFromHandler(\n thenStatement,\n sourceFile,\n handlerName\n );\n\n return detectedRelationships.length > 0 ? detectedRelationships : undefined;\n }\n\n /**\n * Find all type predicate functions in a source file\n * Returns a map of function name → message type\n * Uses AST-based detection for consistency with imported type guard resolution\n */\n private findTypePredicateFunctions(sourceFile: SourceFile): Map<string, string> {\n const typeGuards = new Map<string, string>();\n\n sourceFile.forEachDescendant((node) => {\n this.processTypePredicate(node, typeGuards);\n });\n\n return typeGuards;\n }\n\n /**\n * Process a node that might be a type predicate function\n */\n private processTypePredicate(node: Node, typeGuards: Map<string, string>): void {\n if (!this.isFunctionNode(node)) {\n return;\n }\n\n const returnTypeNode = node.getReturnTypeNode();\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return;\n }\n\n const functionName = this.extractFunctionName(node);\n if (!functionName) {\n return;\n }\n\n const messageType = this.extractMessageTypeFromTypePredicateFunction(node, returnTypeNode);\n if (messageType) {\n typeGuards.set(functionName, messageType);\n }\n }\n\n /**\n * Extract function name from function node\n */\n private extractFunctionName(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | undefined {\n if (Node.isFunctionDeclaration(node)) {\n return node.getName();\n }\n\n if (Node.isFunctionExpression(node) || Node.isArrowFunction(node)) {\n return this.extractFunctionNameFromVariable(node);\n }\n\n return undefined;\n }\n\n /**\n * Extract function name from variable declaration\n */\n private extractFunctionNameFromVariable(\n node: FunctionExpression | ArrowFunction\n ): string | undefined {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return undefined;\n }\n\n /**\n * Extract message type from type predicate function\n */\n private extractMessageTypeFromTypePredicateFunction(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node\n ): string | null {\n if (!Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n // Try to get type node if method exists\n if (\"getTypeNode\" in returnTypeNode && typeof returnTypeNode.getTypeNode === \"function\") {\n const typeNode = returnTypeNode.getTypeNode();\n\n if (typeNode) {\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n if (messageType) {\n return messageType;\n }\n }\n }\n\n return this.extractMessageTypeFromFunctionBodyText(node);\n }\n\n /**\n * Extract message type from function body text\n */\n private extractMessageTypeFromFunctionBodyText(\n node: FunctionDeclaration | FunctionExpression | ArrowFunction\n ): string | null {\n const body = node.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n return typeValueMatch[1] ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolve type guard from imported function\n * Uses ts-morph symbol resolution to find definition across files\n * Checks AST structure, not resolved types (which can lose type predicate info)\n */\n private resolveImportedTypeGuard(identifier: Identifier): string | null {\n try {\n const funcName = identifier.getText();\n const definitions = identifier.getDefinitionNodes();\n\n if (definitions.length === 0) {\n this.debugLogNoDefinitions(funcName);\n return null;\n }\n\n for (const def of definitions) {\n const messageType = this.tryExtractTypeGuardFromDefinition(def, funcName);\n if (messageType) {\n return messageType;\n }\n }\n } catch (error) {\n this.debugLogResolutionError(error);\n }\n\n return null;\n }\n\n /**\n * Try to extract type guard from a single function definition\n */\n private tryExtractTypeGuardFromDefinition(def: Node, funcName: string): string | null {\n if (!this.isFunctionNode(def)) {\n return null;\n }\n\n const returnTypeNode = def.getReturnTypeNode();\n this.debugLogReturnTypeInfo(funcName, def, returnTypeNode);\n\n const typePredicateResult = this.extractFromTypePredicate(returnTypeNode, funcName);\n if (typePredicateResult) {\n return typePredicateResult;\n }\n\n return this.extractFromFunctionBody(def, funcName);\n }\n\n /**\n * Check if node is a function type\n */\n private isFunctionNode(\n node: Node\n ): node is FunctionDeclaration | FunctionExpression | ArrowFunction {\n return (\n Node.isFunctionDeclaration(node) ||\n Node.isFunctionExpression(node) ||\n Node.isArrowFunction(node)\n );\n }\n\n /**\n * Extract message type from type predicate node\n */\n private extractFromTypePredicate(\n returnTypeNode: Node | undefined,\n funcName: string\n ): string | null {\n if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode)) {\n return null;\n }\n\n const typeNode = returnTypeNode.getTypeNode();\n if (!typeNode) {\n return null;\n }\n\n const typeName = typeNode.getText();\n const messageType = this.extractMessageTypeFromTypeName(typeName);\n\n if (messageType) {\n this.debugLogTypePredicateResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Extract message type from function body\n */\n private extractFromFunctionBody(\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n funcName: string\n ): string | null {\n const body = def.getBody();\n if (!body) {\n return null;\n }\n\n const bodyText = body.getText();\n const typeValueMatch = bodyText.match(/\\.type\\s*===?\\s*['\"](\\w+)['\"]/);\n\n if (typeValueMatch) {\n const messageType = typeValueMatch[1] ?? null;\n this.debugLogBodyResolution(funcName, messageType);\n return messageType;\n }\n\n return null;\n }\n\n /**\n * Debug: Log no definitions found\n */\n private debugLogNoDefinitions(funcName: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] No definitions found for imported function: ${funcName}`);\n }\n }\n\n /**\n * Debug: Log return type info\n */\n private debugLogReturnTypeInfo(\n funcName: string,\n def: FunctionDeclaration | FunctionExpression | ArrowFunction,\n returnTypeNode: Node | undefined\n ): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n const returnType = def.getReturnType().getText();\n console.log(`[DEBUG] Function ${funcName} return type (resolved): ${returnType}`);\n console.log(`[DEBUG] Has return type node: ${!!returnTypeNode}`);\n console.log(\n `[DEBUG] Is type predicate node: ${returnTypeNode && Node.isTypePredicate(returnTypeNode)}`\n );\n }\n }\n\n /**\n * Debug: Log type predicate resolution\n */\n private debugLogTypePredicateResolution(funcName: string, messageType: string): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from AST type predicate)`);\n }\n }\n\n /**\n * Debug: Log body resolution\n */\n private debugLogBodyResolution(funcName: string, messageType: string | null): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Resolved ${funcName} → ${messageType} (from body)`);\n }\n }\n\n /**\n * Debug: Log resolution error\n */\n private debugLogResolutionError(error: unknown): void {\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Error resolving imported type guard: ${error}`);\n }\n }\n\n /**\n * Extract message type from TypeScript type name\n * Examples:\n * QueryMessage → query\n * CommandMessage → command\n * SubscribeMessage → subscribe\n */\n private extractMessageTypeFromTypeName(typeName: string): string {\n // Remove common suffixes and convert to lowercase\n const messageType = typeName\n .replace(/Message$/, \"\")\n .replace(/Event$/, \"\")\n .replace(/Request$/, \"\")\n .replace(/Command$/, \"\")\n .replace(/Query$/, \"\")\n .toLowerCase();\n\n return messageType;\n }\n\n /**\n * Infer the context (background, content, popup, etc.) from file path\n */\n private inferContext(filePath: string): string {\n const path = filePath.toLowerCase();\n\n // Check contexts in priority order\n return (\n this.inferElectronContext(path) ||\n this.inferWorkerContext(path) ||\n this.inferServerAppContext(path) ||\n this.inferChromeExtensionContext(path) ||\n \"unknown\"\n );\n }\n\n /**\n * Infer Electron context (main, renderer, preload)\n */\n private inferElectronContext(path: string): string | null {\n if (\n path.includes(\"main.ts\") ||\n path.includes(\"main.js\") ||\n path.includes(\"/main/\") ||\n path.includes(\"\\\\main\\\\\")\n ) {\n return \"main\";\n }\n\n if (\n path.includes(\"/renderer/\") ||\n path.includes(\"\\\\renderer\\\\\") ||\n path.includes(\"renderer.ts\") ||\n path.includes(\"renderer.js\")\n ) {\n return \"renderer\";\n }\n\n if (path.includes(\"preload.ts\") || path.includes(\"preload.js\")) {\n return \"preload\";\n }\n\n return null;\n }\n\n /**\n * Infer Worker/PWA context\n */\n private inferWorkerContext(path: string): string | null {\n if (path.includes(\"service-worker\") || path.includes(\"sw.ts\") || path.includes(\"sw.js\")) {\n return \"worker\";\n }\n\n if (path.includes(\"/worker/\") || path.includes(\"\\\\worker\\\\\")) {\n return \"worker\";\n }\n\n return null;\n }\n\n /**\n * Infer WebSocket/server app context\n */\n private inferServerAppContext(path: string): string | null {\n if (\n path.includes(\"/server/\") ||\n path.includes(\"\\\\server\\\\\") ||\n path.includes(\"/server.\") ||\n path.includes(\"server.ts\") ||\n path.includes(\"server.js\")\n ) {\n return \"server\";\n }\n\n if (path.includes(\"/client/\") || path.includes(\"\\\\client\\\\\") || path.includes(\"/client.\")) {\n return \"client\";\n }\n\n return null;\n }\n\n /**\n * Infer Chrome extension context\n */\n private inferChromeExtensionContext(path: string): string | null {\n if (path.includes(\"/background/\") || path.includes(\"\\\\background\\\\\")) {\n return \"background\";\n }\n\n if (path.includes(\"/content/\") || path.includes(\"\\\\content\\\\\")) {\n return \"content\";\n }\n\n if (path.includes(\"/popup/\") || path.includes(\"\\\\popup\\\\\")) {\n return \"popup\";\n }\n\n if (path.includes(\"/devtools/\") || path.includes(\"\\\\devtools\\\\\")) {\n return \"devtools\";\n }\n\n if (path.includes(\"/options/\") || path.includes(\"\\\\options\\\\\")) {\n return \"options\";\n }\n\n if (path.includes(\"/offscreen/\") || path.includes(\"\\\\offscreen\\\\\")) {\n return \"offscreen\";\n }\n\n return null;\n }\n\n /**\n * Check binary expression for state mutations\n */\n private checkBinaryExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\" && ![\"+=\", \"-=\", \"*=\", \"/=\", \"%=\"].includes(operator)) return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left) && !Node.isElementAccessExpression(left)) return;\n\n const fieldPath = Node.isPropertyAccessExpression(left)\n ? this.getPropertyPath(left)\n : this.getPropertyPath(left.getExpression());\n\n const field = this.extractFieldFromStatePath(fieldPath);\n if (field) {\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Check call expression for array mutation methods\n */\n private checkCallExpressionMutation(\n node: Node,\n firstAwaitPos: number,\n mutations: Array<{ field: string; line: number; afterAwait: boolean }>\n ): void {\n if (!Node.isCallExpression(node)) return;\n\n const expr = node.getExpression();\n if (!Node.isPropertyAccessExpression(expr)) return;\n\n const methodName = expr.getName();\n const object = expr.getExpression();\n\n if (!Node.isPropertyAccessExpression(object)) return;\n\n const fieldPath = this.getPropertyPath(object);\n const field = this.extractFieldFromStatePath(fieldPath);\n\n if (field && [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].includes(methodName)) {\n const line = node.getStartLineNumber();\n const afterAwait = node.getStart() > firstAwaitPos;\n mutations.push({ field, line, afterAwait });\n }\n }\n\n /**\n * Extract state-level constraints from a source file\n */\n private extractStateConstraintsFromFile(sourceFile: SourceFile): StateConstraint[] {\n const constraints: StateConstraint[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n const nodeConstraints = this.recognizeStateConstraint(node, filePath);\n constraints.push(...nodeConstraints);\n });\n\n return constraints;\n }\n\n /**\n * Recognize a $constraints() call and extract constraint definitions\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Parser logic requires nested conditionals\n private recognizeStateConstraint(node: Node, filePath: string): StateConstraint[] {\n if (!Node.isCallExpression(node)) {\n return [];\n }\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) {\n return [];\n }\n\n const functionName = expression.getText();\n if (functionName !== \"$constraints\") {\n return [];\n }\n\n // Get arguments: $constraints(field, constraintsObject)\n const args = node.getArguments();\n if (args.length < 2) {\n return [];\n }\n\n // First argument is the state field name\n const fieldArg = args[0];\n if (!Node.isStringLiteral(fieldArg)) {\n return [];\n }\n const field = fieldArg.getLiteralValue();\n\n // Second argument is the constraints object\n const constraintsArg = args[1];\n if (!Node.isObjectLiteralExpression(constraintsArg)) {\n return [];\n }\n\n // Extract each message type constraint\n const results: StateConstraint[] = [];\n for (const property of constraintsArg.getProperties()) {\n if (!Node.isPropertyAssignment(property)) {\n continue;\n }\n\n const messageType = property.getName();\n const initializer = property.getInitializer();\n if (!initializer || !Node.isObjectLiteralExpression(initializer)) {\n continue;\n }\n\n // Extract requires, ensures, and message from the constraint object\n let requires: string | undefined;\n let ensures: string | undefined;\n let message: string | undefined;\n\n for (const constraintProp of initializer.getProperties()) {\n if (!Node.isPropertyAssignment(constraintProp)) {\n continue;\n }\n\n const propName = constraintProp.getName();\n const propValue = constraintProp.getInitializer();\n if (!propValue) {\n continue;\n }\n\n if (propName === \"requires\" && Node.isStringLiteral(propValue)) {\n requires = propValue.getLiteralValue();\n } else if (propName === \"ensures\" && Node.isStringLiteral(propValue)) {\n ensures = propValue.getLiteralValue();\n } else if (propName === \"message\" && Node.isStringLiteral(propValue)) {\n message = propValue.getLiteralValue();\n }\n }\n\n results.push({\n field,\n messageType,\n requires,\n ensures,\n message,\n location: {\n file: filePath,\n line: property.getStartLineNumber(),\n },\n });\n }\n\n return results;\n }\n\n // ═══════════════════════════════════════════════════════════════════\n // Verified State Discovery (Issue #27)\n // ═══════════════════════════════════════════════════════════════════\n\n /**\n * Extract $sharedState declarations with { verify: true } from a source file\n *\n * Finds patterns like:\n * const authState = $sharedState('auth', initialState, { verify: true })\n * export const settings = $syncedState('settings', defaults, { verify: true })\n */\n extractVerifiedStatesFromFile(sourceFile: SourceFile): VerifiedStateInfo[] {\n const verifiedStates: VerifiedStateInfo[] = [];\n const filePath = sourceFile.getFilePath();\n\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) return;\n\n const stateInfo = this.recognizeVerifiedStateCall(node, filePath);\n if (stateInfo) {\n verifiedStates.push(stateInfo);\n }\n });\n\n return verifiedStates;\n }\n\n /**\n * Recognize a $sharedState/$syncedState/$persistedState call with verify: true\n */\n private recognizeVerifiedStateCall(node: Node, filePath: string): VerifiedStateInfo | null {\n if (!Node.isCallExpression(node)) return null;\n\n const expression = node.getExpression();\n if (!Node.isIdentifier(expression)) return null;\n\n const funcName = expression.getText();\n // Match state primitives that support verification\n if (![\"$sharedState\", \"$syncedState\", \"$persistedState\"].includes(funcName)) {\n return null;\n }\n\n const args = node.getArguments();\n if (args.length < 2) return null;\n\n // Check for { verify: true } in options (3rd argument)\n const optionsArg = args[2];\n if (!optionsArg || !this.hasVerifyTrue(optionsArg)) return null;\n\n // Extract state key (1st argument)\n const keyArg = args[0];\n if (!keyArg || !Node.isStringLiteral(keyArg)) return null;\n const key = keyArg.getLiteralValue();\n\n // Get variable name from parent declaration\n const variableName = this.getVariableNameFromParent(node) || key;\n\n // Extract field names from initial value (2nd argument)\n const initialValueArg = args[1];\n const fields = initialValueArg ? this.extractFieldNames(initialValueArg) : [];\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found verified state: ${variableName} (key: \"${key}\") with fields: [${fields.join(\", \")}]`\n );\n }\n\n return {\n key,\n variableName,\n filePath,\n line: node.getStartLineNumber(),\n fields,\n };\n }\n\n /**\n * Check if an options object contains verify: true\n */\n private hasVerifyTrue(optionsNode: Node): boolean {\n if (!Node.isObjectLiteralExpression(optionsNode)) return false;\n\n for (const prop of optionsNode.getProperties()) {\n if (!Node.isPropertyAssignment(prop)) continue;\n\n const name = prop.getName();\n if (name !== \"verify\") continue;\n\n const initializer = prop.getInitializer();\n if (initializer && initializer.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Get variable name from parent VariableDeclaration\n */\n private getVariableNameFromParent(node: Node): string | null {\n const parent = node.getParent();\n if (Node.isVariableDeclaration(parent)) {\n return parent.getName();\n }\n return null;\n }\n\n /**\n * Extract field names from an initial value expression\n * Handles object literals and identifier references\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Field extraction requires traversing nested object structures\n private extractFieldNames(node: Node): string[] {\n const fields: string[] = [];\n\n if (Node.isObjectLiteralExpression(node)) {\n for (const prop of node.getProperties()) {\n if (Node.isPropertyAssignment(prop) || Node.isShorthandPropertyAssignment(prop)) {\n fields.push(prop.getName());\n }\n }\n } else if (Node.isIdentifier(node)) {\n // Try to resolve the identifier to its declaration\n const definitions = node.getDefinitionNodes();\n for (const def of definitions) {\n if (Node.isVariableDeclaration(def)) {\n const initializer = def.getInitializer();\n if (initializer && Node.isObjectLiteralExpression(initializer)) {\n return this.extractFieldNames(initializer);\n }\n }\n }\n }\n\n return fields;\n }\n\n /**\n * Find exported functions that modify verified state signals\n *\n * Looks for patterns:\n * - authState.value = { ... }\n * - authState.value.field = value\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: State mutation detection requires complex AST pattern matching\n findStateMutatingFunctions(\n sourceFile: SourceFile,\n verifiedStates: VerifiedStateInfo[]\n ): MessageHandler[] {\n const handlers: MessageHandler[] = [];\n const stateVarNames = new Set(verifiedStates.map((s) => s.variableName));\n const filePath = sourceFile.getFilePath();\n const context = this.inferContext(filePath);\n\n // Find all exported functions\n for (const func of sourceFile.getFunctions()) {\n if (!func.isExported()) continue;\n\n const funcName = func.getName();\n if (!funcName) continue;\n\n // Check if function modifies any verified state\n const assignments = this.findStateMutationsInFunction(func, stateVarNames);\n if (assignments.length === 0) continue;\n\n // Extract requires/ensures\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n this.extractVerificationConditions(func, preconditions, postconditions);\n\n // Generate message type from function name\n const messageType = this.functionNameToMessageType(funcName);\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(\n `[DEBUG] Found state-mutating function: ${funcName} → ${messageType} ` +\n `(${assignments.length} assignments, ${preconditions.length} preconditions, ${postconditions.length} postconditions)`\n );\n }\n\n handlers.push({\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: func.getStartLineNumber(),\n },\n });\n }\n\n // Also check exported variable declarations with arrow functions\n for (const varStmt of sourceFile.getVariableStatements()) {\n if (!varStmt.isExported()) continue;\n\n for (const decl of varStmt.getDeclarations()) {\n const initializer = decl.getInitializer();\n if (!initializer) continue;\n if (!Node.isArrowFunction(initializer) && !Node.isFunctionExpression(initializer)) continue;\n\n const funcName = decl.getName();\n if (!funcName) continue;\n\n const assignments = this.findStateMutationsInFunction(initializer, stateVarNames);\n if (assignments.length === 0) continue;\n\n const preconditions: VerificationCondition[] = [];\n const postconditions: VerificationCondition[] = [];\n this.extractVerificationConditions(initializer, preconditions, postconditions);\n\n const messageType = this.functionNameToMessageType(funcName);\n\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Found state-mutating arrow function: ${funcName} → ${messageType}`);\n }\n\n handlers.push({\n messageType,\n node: context,\n assignments,\n preconditions,\n postconditions,\n location: {\n file: filePath,\n line: decl.getStartLineNumber(),\n },\n });\n }\n }\n\n return handlers;\n }\n\n /**\n * Find state mutations within a function that target verified state signals\n */\n private findStateMutationsInFunction(\n func: FunctionDeclaration | ArrowFunction | FunctionExpression,\n stateVarNames: Set<string>\n ): StateAssignment[] {\n const mutations: StateAssignment[] = [];\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: AST traversal for state mutations requires multiple pattern checks\n func.forEachDescendant((node) => {\n if (!Node.isBinaryExpression(node)) return;\n\n const operator = node.getOperatorToken().getText();\n if (operator !== \"=\") return;\n\n const left = node.getLeft();\n if (!Node.isPropertyAccessExpression(left)) return;\n\n const path = this.getPropertyPath(left);\n\n // Check for patterns:\n // 1. authState.value = { ... } (full replacement)\n // 2. authState.value.field = value (field update)\n for (const varName of stateVarNames) {\n // Pattern 1: Full state replacement\n // e.g., authState.value = { loggedIn: true } → authState_loggedIn = true\n if (path === `${varName}.value`) {\n const right = node.getRight();\n if (Node.isObjectLiteralExpression(right)) {\n this.extractObjectLiteralAssignments(right, mutations, varName);\n }\n break;\n }\n\n // Pattern 2: Field update\n // e.g., authState.value.loggedIn = true → authState_loggedIn = true\n const fieldPrefix = `${varName}.value.`;\n if (path.startsWith(fieldPrefix)) {\n const fieldName = path.substring(fieldPrefix.length);\n const value = this.extractValue(node.getRight());\n mutations.push({ field: `${varName}_${fieldName}`, value: value ?? \"@\" });\n break;\n }\n }\n });\n\n return mutations;\n }\n\n /**\n * Convert function name to message type\n * Examples:\n * handleAuthSuccess → AuthSuccess\n * handleLogout → Logout\n * setUserProfile → SetUserProfile\n */\n private functionNameToMessageType(funcName: string): string {\n // Remove common handler prefixes\n let name = funcName\n .replace(/^handle/, \"\")\n .replace(/^on/, \"\")\n .replace(/^set/, \"Set\")\n .replace(/^update/, \"Update\")\n .replace(/^do/, \"\");\n\n // Ensure first letter is uppercase\n if (name.length > 0) {\n name = name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n return name || funcName;\n }\n}\n\nexport function extractHandlers(tsConfigPath: string): HandlerAnalysis {\n const extractor = new HandlerExtractor(tsConfigPath);\n return extractor.extractHandlers();\n}\n",
54
54
  "// Component relationship extraction from TypeScript code\n// Detects function calls, imports, and dependencies between components\n\nimport {\n type ArrowFunction,\n type CallExpression,\n type FunctionDeclaration,\n type FunctionExpression,\n type Identifier,\n Node,\n type SourceFile,\n} from \"ts-morph\";\n\n/**\n * Represents a relationship between components detected from code analysis\n */\nexport interface DetectedRelationship {\n /** Source component (handler, service, etc.) */\n from: string;\n /** Target component being called/used */\n to: string;\n /** Description of the relationship */\n description: string;\n /** Technology/method used (e.g., \"Function Call\", \"Import\", \"SQL\", \"HTTP\") */\n technology?: string;\n /** Confidence level of this detection */\n confidence: \"high\" | \"medium\" | \"low\";\n /** Evidence supporting this detection */\n evidence: string[];\n}\n\n/**\n * Extracts component relationships from handler code\n */\nexport class RelationshipExtractor {\n /**\n * Extract relationships from a function/handler body\n */\n extractFromHandler(\n handlerNode: Node,\n sourceFile: SourceFile,\n handlerName: string\n ): DetectedRelationship[] {\n const relationships: DetectedRelationship[] = [];\n const visited = new Set<string>(); // Prevent infinite recursion\n\n this.extractFromNode(handlerNode, sourceFile, handlerName, relationships, visited);\n\n return this.deduplicateRelationships(relationships);\n }\n\n /**\n * Recursively extract relationships from a node and follow function calls\n */\n private extractFromNode(\n node: Node,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n node.forEachDescendant((descendant) => {\n this.processDescendantNode(descendant, sourceFile, handlerName, relationships, visited);\n });\n }\n\n /**\n * Process a single descendant node for relationship extraction\n */\n private processDescendantNode(\n descendant: Node,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n if (Node.isCallExpression(descendant)) {\n this.processCallExpression(descendant, sourceFile, handlerName, relationships, visited);\n }\n\n if (Node.isAwaitExpression(descendant)) {\n const rel = this.extractFromDatabaseCall(descendant, handlerName);\n if (rel) {\n relationships.push(rel);\n }\n }\n\n if (Node.isCallExpression(descendant) && descendant.getExpression().getText() === \"fetch\") {\n const rel = this.extractFromFetchCall(descendant, handlerName);\n if (rel) {\n relationships.push(rel);\n }\n }\n }\n\n /**\n * Process a call expression for relationship extraction\n */\n private processCallExpression(\n callExpr: CallExpression,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n const expr = callExpr.getExpression();\n\n if (Node.isIdentifier(expr)) {\n this.processIdentifierCall(expr, sourceFile, handlerName, relationships, visited);\n return;\n }\n\n if (Node.isPropertyAccessExpression(expr)) {\n const rel = this.extractFromPropertyAccess(expr, handlerName);\n if (rel) {\n relationships.push(rel);\n return;\n }\n }\n\n const rel = this.extractFromFunctionCall(callExpr, handlerName, sourceFile);\n if (rel) {\n relationships.push(rel);\n }\n }\n\n /**\n * Process an identifier call (local or imported function)\n */\n private processIdentifierCall(\n identifier: Identifier,\n sourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n const functionName = identifier.getText();\n const resolved = this.resolveFunctionDeclaration(functionName, sourceFile);\n\n if (resolved && !visited.has(functionName)) {\n this.followFunctionCall(\n functionName,\n resolved.functionDecl,\n resolved.sourceFile,\n handlerName,\n relationships,\n visited\n );\n return;\n }\n\n if (!resolved) {\n this.tryAddServiceCallRelationship(functionName, handlerName, relationships);\n }\n }\n\n /**\n * Resolve function declaration from name\n */\n private resolveFunctionDeclaration(\n functionName: string,\n sourceFile: SourceFile\n ): {\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression;\n sourceFile: SourceFile;\n } | null {\n let functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression | undefined =\n sourceFile.getFunction(functionName);\n let targetSourceFile = sourceFile;\n\n if (!functionDecl) {\n const resolved = this.resolveImportedFunction(functionName, sourceFile);\n if (resolved) {\n functionDecl = resolved.functionDecl;\n targetSourceFile = resolved.sourceFile;\n }\n }\n\n if (!functionDecl) {\n return null;\n }\n\n return { functionDecl, sourceFile: targetSourceFile };\n }\n\n /**\n * Follow a function call recursively\n */\n private followFunctionCall(\n functionName: string,\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression,\n targetSourceFile: SourceFile,\n handlerName: string,\n relationships: DetectedRelationship[],\n visited: Set<string>\n ): void {\n visited.add(functionName);\n\n const body = functionDecl.getBody();\n if (body) {\n this.extractFromNode(body, targetSourceFile, handlerName, relationships, visited);\n }\n }\n\n /**\n * Try to add a service call relationship based on function name\n */\n private tryAddServiceCallRelationship(\n functionName: string,\n handlerName: string,\n relationships: DetectedRelationship[]\n ): void {\n const componentFromName = this.inferComponentFromFunctionName(functionName);\n if (componentFromName) {\n relationships.push({\n from: this.toComponentId(handlerName),\n to: componentFromName,\n description: `Calls ${functionName}()`,\n technology: \"Function Call\",\n confidence: \"medium\",\n evidence: [`Function call: ${functionName}`],\n });\n }\n }\n\n /**\n * Extract relationship from a function call\n */\n private extractFromFunctionCall(\n callExpr: CallExpression,\n handlerName: string,\n sourceFile: SourceFile\n ): DetectedRelationship | null {\n const expr = callExpr.getExpression();\n const exprText = expr.getText();\n\n // Skip common utility functions and built-ins\n const skipList = [\n \"console.\",\n \"JSON.\",\n \"Math.\",\n \"Object.\",\n \"Array.\",\n \"String.\",\n \"Number.\",\n \"Date.\",\n \"Promise.\",\n \"setTimeout\",\n \"setInterval\",\n \"clearTimeout\",\n \"clearInterval\",\n ];\n\n if (skipList.some((skip) => exprText.startsWith(skip))) {\n return null;\n }\n\n // Extract function name\n let functionName = exprText;\n let targetComponent: string | null = null;\n\n // Handle property access (e.g., db.getConnection() -> db_client)\n if (Node.isPropertyAccessExpression(expr)) {\n const objectExpr = expr.getExpression();\n const objectName = objectExpr.getText();\n const methodName = expr.getName();\n\n // Map common patterns to component names\n targetComponent = this.inferComponentFromCall(objectName);\n\n if (!targetComponent) {\n return null;\n }\n\n functionName = methodName;\n } else {\n // Direct function call - try to resolve from imports\n targetComponent = this.resolveComponentFromImport(exprText, sourceFile);\n\n if (!targetComponent) {\n return null;\n }\n }\n\n return {\n from: this.toComponentId(handlerName),\n to: targetComponent,\n description: `Calls ${functionName}()`,\n technology: \"Function Call\",\n confidence: \"high\",\n evidence: [`Function call: ${exprText}`],\n };\n }\n\n /**\n * Extract relationship from property access chain\n * Handles both simple (obj.method) and nested (obj.prop.method) patterns\n */\n private extractFromPropertyAccess(\n propAccess: Node,\n handlerName: string\n ): DetectedRelationship | null {\n if (!Node.isPropertyAccessExpression(propAccess)) {\n return null;\n }\n\n const fullChain = propAccess.getText();\n const methodName = propAccess.getName();\n\n // Extract the root object from potentially nested property access\n // e.g., repositories.users.create -> repositories\n let rootObject = propAccess.getExpression();\n while (Node.isPropertyAccessExpression(rootObject)) {\n rootObject = rootObject.getExpression();\n }\n\n const objectName = rootObject.getText();\n\n // Map object name to component name\n const targetComponent = this.inferComponentFromCall(objectName);\n\n if (!targetComponent) {\n return null;\n }\n\n return {\n from: this.toComponentId(handlerName),\n to: targetComponent,\n description: `Calls ${methodName}()`,\n technology: \"Function Call\",\n confidence: \"high\",\n evidence: [`Property access: ${fullChain}`],\n };\n }\n\n /**\n * Extract relationship from database call\n */\n private extractFromDatabaseCall(\n awaitExpr: Node,\n handlerName: string\n ): DetectedRelationship | null {\n if (!Node.isAwaitExpression(awaitExpr)) {\n return null;\n }\n\n const innerExpr = awaitExpr.getExpression();\n if (!Node.isCallExpression(innerExpr)) {\n return null;\n }\n\n const callExpr = innerExpr.getExpression().getText();\n\n // Detect database patterns\n if (\n callExpr.includes(\"db.query\") ||\n callExpr.includes(\"db.execute\") ||\n callExpr.includes(\"db.select\") ||\n callExpr.includes(\"db.insert\") ||\n callExpr.includes(\"db.update\") ||\n callExpr.includes(\"db.delete\")\n ) {\n const operation = this.inferDatabaseOperation(callExpr);\n\n return {\n from: this.toComponentId(handlerName),\n to: \"database\",\n description: operation,\n technology: \"SQL\",\n confidence: \"high\",\n evidence: [`Database call: ${callExpr}`],\n };\n }\n\n return null;\n }\n\n /**\n * Extract relationship from fetch/HTTP call\n */\n private extractFromFetchCall(\n callExpr: CallExpression,\n handlerName: string\n ): DetectedRelationship | null {\n const args = callExpr.getArguments();\n if (args.length === 0 || !args[0]) {\n return null;\n }\n\n const urlArg = args[0].getText();\n\n // Try to extract API name from URL\n let apiName = \"external_api\";\n if (urlArg.includes(\"openai\")) {\n apiName = \"openai_api\";\n } else if (urlArg.includes(\"anthropic\")) {\n apiName = \"anthropic_api\";\n }\n\n return {\n from: this.toComponentId(handlerName),\n to: apiName,\n description: \"Calls external API\",\n technology: \"HTTP/REST\",\n confidence: \"high\",\n evidence: [`fetch() call to: ${urlArg}`],\n };\n }\n\n /**\n * Infer component name from object.method pattern\n */\n private inferComponentFromCall(objectName: string): string | null {\n const mappings: Record<string, string> = {\n db: \"db_client\",\n database: \"database\",\n repos: \"repositories\",\n repository: \"repositories\",\n repositories: \"repositories\",\n cache: \"cache\",\n storage: \"storage\",\n ai: \"ai_service\",\n auth: \"auth_service\",\n authservice: \"auth_service\",\n user: \"user_service\",\n userservice: \"user_service\",\n logger: \"logger\",\n queue: \"queue_service\",\n };\n\n const normalized = objectName.toLowerCase();\n return mappings[normalized] || null;\n }\n\n /**\n * Infer component name from function name patterns\n * Detects patterns like getDatabase(), createRepositories(), etc.\n */\n private inferComponentFromFunctionName(functionName: string): string | null {\n const normalized = functionName.toLowerCase();\n\n // Pattern 1: getXxx() or createXxx()\n if (normalized.startsWith(\"get\") || normalized.startsWith(\"create\")) {\n const prefixLength = normalized.startsWith(\"get\") ? 3 : 6;\n const suffix = functionName.substring(prefixLength);\n return this.matchComponentPattern(suffix);\n }\n\n // Pattern 2: initXxx() or setupXxx()\n if (normalized.startsWith(\"init\") || normalized.startsWith(\"setup\")) {\n const prefixLength = normalized.startsWith(\"init\") ? 4 : 5;\n const suffix = functionName.substring(prefixLength);\n return this.matchInitPattern(suffix);\n }\n\n return null;\n }\n\n /**\n * Match component patterns for get/create functions\n */\n private matchComponentPattern(suffix: string): string | null {\n const suffixLower = suffix.toLowerCase();\n\n const componentPatterns = [\n {\n patterns: [\"database\", \"db\", \"dbconnection\", \"connection\"],\n component: \"db_client\",\n },\n {\n patterns: [\"repositories\", \"repos\", \"repository\"],\n component: \"repositories\",\n },\n {\n patterns: [\"cache\"],\n component: \"cache\",\n },\n {\n patterns: [\"storage\"],\n component: \"storage\",\n },\n {\n patterns: [\"ai\", \"llm\"],\n component: \"ai_service\",\n },\n {\n patterns: [\"logger\"],\n component: \"logger\",\n },\n ];\n\n for (const { patterns, component } of componentPatterns) {\n if (patterns.some((pattern) => suffixLower.includes(pattern) || suffixLower === pattern)) {\n return component;\n }\n }\n\n // Service patterns (special case with extraction)\n if (suffixLower.includes(\"service\")) {\n const serviceMatch = suffix.match(/^(.+?)Service/i);\n if (serviceMatch) {\n return this.toComponentId(`${serviceMatch[1]}_service`);\n }\n return \"service\";\n }\n\n return null;\n }\n\n /**\n * Match patterns for init/setup functions\n */\n private matchInitPattern(suffix: string): string | null {\n const suffixLower = suffix.toLowerCase();\n\n if (suffixLower.includes(\"database\") || suffixLower === \"db\") {\n return \"db_client\";\n }\n if (suffixLower.includes(\"cache\")) {\n return \"cache\";\n }\n\n return null;\n }\n\n /**\n * Resolve component from import statement\n */\n private resolveComponentFromImport(functionName: string, sourceFile: SourceFile): string | null {\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const namedImports = importDecl.getNamedImports();\n\n for (const namedImport of namedImports) {\n if (namedImport.getName() === functionName) {\n const modulePath = importDecl.getModuleSpecifierValue();\n const component = this.inferComponentFromModulePath(modulePath);\n if (component) return component;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Infer component from module path\n */\n private inferComponentFromModulePath(modulePath: string): string | null {\n if (modulePath.includes(\"/db/\") || modulePath.includes(\"/database/\")) {\n return \"db_client\";\n }\n if (modulePath.includes(\"/repos\") || modulePath.includes(\"/repositories\")) {\n return \"repositories\";\n }\n if (modulePath.includes(\"/service\") || modulePath.includes(\"/services\")) {\n const match = modulePath.match(/\\/([^/]+)\\.ts$/);\n if (match?.[1]) {\n return this.toComponentId(match[1]);\n }\n }\n return null;\n }\n\n /**\n * Resolve imported function to its declaration in another file\n * This enables cross-file relationship detection for architectures where\n * handlers are separated from routing logic\n */\n private resolveImportedFunction(\n functionName: string,\n sourceFile: SourceFile\n ): {\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression;\n sourceFile: SourceFile;\n } | null {\n try {\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const namedImports = importDecl.getNamedImports();\n\n for (const namedImport of namedImports) {\n if (namedImport.getName() === functionName) {\n const moduleSpecifier = importDecl.getModuleSpecifierSourceFile();\n if (!moduleSpecifier) continue;\n\n const result = this.findFunctionInModule(functionName, moduleSpecifier);\n if (result) return result;\n }\n }\n }\n } catch (_error) {\n // Silently fail on resolution errors (e.g., missing files, parse errors)\n // This ensures the extractor is resilient to incomplete projects\n return null;\n }\n\n return null;\n }\n\n /**\n * Find function declaration or arrow function in a module\n */\n private findFunctionInModule(\n functionName: string,\n moduleSpecifier: SourceFile\n ): {\n functionDecl: FunctionDeclaration | ArrowFunction | FunctionExpression;\n sourceFile: SourceFile;\n } | null {\n // Find the function in the imported file\n const functionDecl = moduleSpecifier.getFunction(functionName);\n if (functionDecl) {\n return {\n functionDecl,\n sourceFile: moduleSpecifier,\n };\n }\n\n // Also check for exported arrow functions or const declarations\n const variableDecl = moduleSpecifier.getVariableDeclaration(functionName);\n if (variableDecl) {\n const initializer = variableDecl.getInitializer();\n if (\n initializer &&\n (Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer))\n ) {\n return {\n functionDecl: initializer,\n sourceFile: moduleSpecifier,\n };\n }\n }\n\n return null;\n }\n\n /**\n * Infer database operation type\n */\n private inferDatabaseOperation(callExpr: string): string {\n if (callExpr.includes(\"query\") || callExpr.includes(\"select\")) {\n return \"Reads from database\";\n }\n if (\n callExpr.includes(\"execute\") ||\n callExpr.includes(\"insert\") ||\n callExpr.includes(\"update\") ||\n callExpr.includes(\"delete\")\n ) {\n return \"Writes to database\";\n }\n return \"Accesses database\";\n }\n\n /**\n * Convert name to component ID format\n */\n private toComponentId(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"_\")\n .replace(/^_|_$/g, \"\");\n }\n\n /**\n * Remove duplicate relationships\n */\n private deduplicateRelationships(relationships: DetectedRelationship[]): DetectedRelationship[] {\n const seen = new Set<string>();\n const unique: DetectedRelationship[] = [];\n\n for (const rel of relationships) {\n const key = `${rel.from}->${rel.to}`;\n if (!seen.has(key)) {\n seen.add(key);\n unique.push(rel);\n }\n }\n\n return unique;\n }\n}\n",
55
55
  "// External integration detection - find external APIs, services, etc.\n\nimport { Node, Project, type SourceFile } from \"ts-morph\";\nimport type { ExternalIntegration } from \"../types/architecture\";\n\nexport class IntegrationAnalyzer {\n private project: Project;\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n }\n\n /**\n * Analyze external integrations in the codebase\n */\n analyzeIntegrations(): ExternalIntegration[] {\n const integrations = new Map<string, ExternalIntegration>();\n\n // Find all fetch() calls\n const fetchCalls = this.findFetchCalls();\n for (const call of fetchCalls) {\n this.addOrMergeIntegration(integrations, this.createAPIIntegration(call));\n }\n\n // Find WebSocket connections\n const websockets = this.findWebSockets();\n for (const ws of websockets) {\n this.addOrMergeIntegration(integrations, this.createWebSocketIntegration(ws));\n }\n\n // Find external script imports\n const externalScripts = this.findExternalScripts();\n for (const script of externalScripts) {\n this.addOrMergeIntegration(integrations, script);\n }\n\n return Array.from(integrations.values());\n }\n\n /**\n * Find all fetch() API calls\n */\n private findFetchCalls(): Array<{\n url: string;\n method: string;\n file: string;\n line: number;\n description?: string;\n }> {\n const calls: Array<{\n url: string;\n method: string;\n file: string;\n line: number;\n description?: string;\n }> = [];\n\n for (const sourceFile of this.project.getSourceFiles()) {\n sourceFile.forEachDescendant((node) => {\n this.processFetchCall(node, sourceFile, calls);\n });\n }\n\n return calls;\n }\n\n /**\n * Process a node that might be a fetch call\n */\n private processFetchCall(\n node: Node,\n sourceFile: SourceFile,\n calls: Array<{\n url: string;\n method: string;\n file: string;\n line: number;\n description?: string;\n }>\n ): void {\n if (!Node.isCallExpression(node)) {\n return;\n }\n\n const expression = node.getExpression();\n if (!this.isFetchCall(expression)) {\n return;\n }\n\n const args = node.getArguments();\n if (args.length === 0) {\n return;\n }\n\n const firstArg = args[0];\n if (!firstArg) return;\n\n const url = this.extractURLFromArg(firstArg);\n if (!url) {\n return;\n }\n\n const method = this.extractMethodFromOptions(args);\n const description = this.extractJSDocDescription(node);\n\n calls.push({\n url,\n method,\n file: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n description,\n });\n }\n\n /**\n * Check if expression is a fetch call\n */\n private isFetchCall(expression: Node): boolean {\n return Node.isIdentifier(expression) && expression.getText() === \"fetch\";\n }\n\n /**\n * Extract URL from fetch argument\n */\n private extractURLFromArg(urlArg: Node): string | null {\n if (Node.isStringLiteral(urlArg)) {\n return urlArg.getLiteralValue();\n }\n\n if (Node.isTemplateExpression(urlArg)) {\n return this.extractBaseURL(urlArg.getText());\n }\n\n return null;\n }\n\n /**\n * Extract HTTP method from fetch options\n */\n private extractMethodFromOptions(args: Node[]): string {\n const defaultMethod = \"GET\";\n\n if (args.length <= 1) {\n return defaultMethod;\n }\n\n const optionsArg = args[1];\n if (!Node.isObjectLiteralExpression(optionsArg)) {\n return defaultMethod;\n }\n\n const methodProp = optionsArg.getProperty(\"method\");\n if (!methodProp || !Node.isPropertyAssignment(methodProp)) {\n return defaultMethod;\n }\n\n const initializer = methodProp.getInitializer();\n if (!initializer || !Node.isStringLiteral(initializer)) {\n return defaultMethod;\n }\n\n return initializer.getLiteralValue().toUpperCase();\n }\n\n /**\n * Find WebSocket connections\n */\n private findWebSockets(): Array<{\n url: string;\n file: string;\n line: number;\n description?: string;\n }> {\n const websockets: Array<{\n url: string;\n file: string;\n line: number;\n description?: string;\n }> = [];\n\n for (const sourceFile of this.project.getSourceFiles()) {\n sourceFile.forEachDescendant((node) => {\n if (Node.isNewExpression(node)) {\n const expression = node.getExpression();\n\n // Check for new WebSocket()\n if (Node.isIdentifier(expression) && expression.getText() === \"WebSocket\") {\n const args = node.getArguments();\n if (args.length > 0 && Node.isStringLiteral(args[0])) {\n const url = args[0].getLiteralValue();\n const description = this.extractJSDocDescription(node);\n\n websockets.push({\n url,\n file: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n description,\n });\n }\n }\n }\n });\n }\n\n return websockets;\n }\n\n /**\n * Find external script dependencies (from imports)\n */\n private findExternalScripts(): ExternalIntegration[] {\n const scripts: ExternalIntegration[] = [];\n const seen = new Set<string>();\n\n for (const sourceFile of this.project.getSourceFiles()) {\n this.extractExternalImportsFromFile(sourceFile, scripts, seen);\n }\n\n return scripts;\n }\n\n /**\n * Extract external imports from a single file\n */\n private extractExternalImportsFromFile(\n sourceFile: SourceFile,\n scripts: ExternalIntegration[],\n seen: Set<string>\n ): void {\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const moduleSpecifier = importDecl.getModuleSpecifierValue();\n\n if (this.isExternalImport(moduleSpecifier)) {\n const packageName = this.extractPackageName(moduleSpecifier);\n\n if (packageName && !seen.has(packageName)) {\n seen.add(packageName);\n scripts.push(this.createExternalScriptIntegration(packageName, sourceFile));\n }\n }\n }\n }\n\n /**\n * Check if import is external (not relative)\n */\n private isExternalImport(moduleSpecifier: string): boolean {\n return !moduleSpecifier.startsWith(\".\") && !moduleSpecifier.startsWith(\"/\");\n }\n\n /**\n * Extract package name from module specifier\n */\n private extractPackageName(moduleSpecifier: string): string | undefined {\n // Handle scoped packages (@org/package)\n if (moduleSpecifier.startsWith(\"@\")) {\n return moduleSpecifier.split(\"/\").slice(0, 2).join(\"/\");\n }\n // Handle regular packages\n return moduleSpecifier.split(\"/\")[0];\n }\n\n /**\n * Create external script integration object\n */\n private createExternalScriptIntegration(\n packageName: string,\n sourceFile: SourceFile\n ): ExternalIntegration {\n return {\n type: \"external-script\",\n name: packageName,\n technology: \"npm package\",\n usedIn: [sourceFile.getFilePath()],\n description: `External dependency: ${packageName}`,\n };\n }\n\n /**\n * Create API integration from fetch call\n */\n private createAPIIntegration(call: {\n url: string;\n method: string;\n file: string;\n line: number;\n description?: string;\n }): ExternalIntegration {\n // Extract base URL\n const baseURL = this.extractBaseURL(call.url);\n\n // Infer name from URL\n const name = this.inferAPIName(baseURL);\n\n return {\n type: \"api\",\n name,\n technology: \"REST API\",\n url: baseURL,\n usedIn: [call.file],\n description: call.description || `External API: ${name}`,\n calls: [\n {\n method: call.method,\n endpoint: call.url,\n location: {\n file: call.file,\n line: call.line,\n },\n description: call.description,\n },\n ],\n };\n }\n\n /**\n * Create WebSocket integration\n */\n private createWebSocketIntegration(ws: {\n url: string;\n file: string;\n line: number;\n description?: string;\n }): ExternalIntegration {\n const name = this.inferAPIName(ws.url);\n\n return {\n type: \"websocket\",\n name,\n technology: \"WebSocket\",\n url: ws.url,\n usedIn: [ws.file],\n description: ws.description || `WebSocket connection: ${name}`,\n };\n }\n\n /**\n * Extract base URL from full URL or template\n */\n private extractBaseURL(url: string): string {\n // Remove template parts\n let cleanUrl = url.replace(/\\$\\{[^}]+\\}/g, \"\");\n cleanUrl = cleanUrl.replace(/`/g, \"\");\n\n try {\n const parsed = new URL(cleanUrl);\n return `${parsed.protocol}//${parsed.host}`;\n } catch {\n // If parsing fails, try to extract domain\n const match = cleanUrl.match(/https?:\\/\\/([^/]+)/);\n return match ? match[0] : cleanUrl;\n }\n }\n\n /**\n * Infer API name from URL\n */\n private inferAPIName(url: string): string {\n try {\n const parsed = new URL(url);\n const hostname = parsed.hostname;\n\n // Remove www. prefix\n const cleanHost = hostname.replace(/^www\\./, \"\");\n\n // Take first part of domain\n const parts = cleanHost.split(\".\");\n if (parts.length > 0 && parts[0]) {\n // Capitalize first letter\n return `${parts[0].charAt(0).toUpperCase() + parts[0].slice(1)} API`;\n }\n } catch {\n // Fallback\n }\n\n return \"External API\";\n }\n\n /**\n * Add or merge integration into map\n */\n private addOrMergeIntegration(\n map: Map<string, ExternalIntegration>,\n integration: ExternalIntegration\n ): void {\n const key = `${integration.type}:${integration.name}`;\n\n if (map.has(key)) {\n const existing = map.get(key);\n if (!existing) return;\n\n // Merge usedIn\n existing.usedIn = [...new Set([...existing.usedIn, ...integration.usedIn])];\n\n // Merge calls\n if (integration.calls && existing.calls) {\n existing.calls.push(...integration.calls);\n } else if (integration.calls) {\n existing.calls = integration.calls;\n }\n } else {\n map.set(key, integration);\n }\n }\n\n /**\n * Extract JSDoc description from node\n */\n private extractJSDocDescription(node: Node): string | undefined {\n if (!Node.isJSDocable(node)) return undefined;\n\n const jsDocs = node.getJsDocs();\n if (jsDocs.length === 0) return undefined;\n\n const firstDoc = jsDocs[0];\n if (!firstDoc) return undefined;\n\n const comment = firstDoc.getDescription().trim();\n return comment || undefined;\n }\n}\n",
56
56
  "// Manifest.json parser for Chrome extensions\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ManifestInfo } from \"../types/architecture\";\n\n/**\n * Parse manifest.json and extract context information\n */\nexport class ManifestParser {\n private manifestPath: string;\n private manifestData: Record<string, unknown> | null;\n private baseDir: string;\n\n constructor(projectRoot: string, optional = false) {\n this.baseDir = projectRoot;\n this.manifestPath = path.join(projectRoot, \"manifest.json\");\n\n if (!fs.existsSync(this.manifestPath)) {\n if (optional) {\n this.manifestData = null;\n return;\n }\n throw new Error(`manifest.json not found at ${this.manifestPath}`);\n }\n\n try {\n const content = fs.readFileSync(this.manifestPath, \"utf-8\");\n this.manifestData = JSON.parse(content);\n } catch (error) {\n throw new Error(`Failed to parse manifest.json: ${error}`);\n }\n }\n\n /**\n * Check if manifest.json exists and was loaded\n */\n hasManifest(): boolean {\n return this.manifestData !== null;\n }\n\n /**\n * Parse manifest and extract all information\n */\n parse(): ManifestInfo {\n if (!this.manifestData) {\n throw new Error(\n \"Cannot parse manifest: manifest.json not loaded. Use hasManifest() to check availability.\"\n );\n }\n\n const manifest = this.manifestData;\n\n return {\n name: (manifest[\"name\"] as string) || \"Unknown Extension\",\n version: (manifest[\"version\"] as string) || \"0.0.0\",\n description: manifest[\"description\"] as string | undefined,\n manifestVersion: (manifest[\"manifest_version\"] as number) || 2,\n background: this.parseBackground(),\n contentScripts: this.parseContentScripts(),\n popup: this.parsePopup(),\n options: this.parseOptions(),\n devtools: this.parseDevtools(),\n permissions: (manifest[\"permissions\"] as string[]) || [],\n hostPermissions: (manifest[\"host_permissions\"] as string[]) || [],\n };\n }\n\n /**\n * Get context entry points from manifest\n */\n getContextEntryPoints(): Record<string, string> {\n if (!this.manifestData) {\n return {};\n }\n\n const entryPoints: Record<string, string> = {};\n\n this.addBackgroundEntryPoint(entryPoints);\n this.addContentScriptEntryPoint(entryPoints);\n this.addPopupEntryPoint(entryPoints);\n this.addOptionsEntryPoint(entryPoints);\n this.addDevtoolsEntryPoint(entryPoints);\n\n return entryPoints;\n }\n\n private addBackgroundEntryPoint(entryPoints: Record<string, string>): void {\n const background = this.parseBackground();\n if (!background) return;\n\n const entryFile = background.files[0];\n if (entryFile) {\n entryPoints[\"background\"] = this.findSourceFile(entryFile);\n }\n }\n\n private addContentScriptEntryPoint(entryPoints: Record<string, string>): void {\n const contentScripts = this.parseContentScripts();\n if (!contentScripts || contentScripts.length === 0) return;\n\n const firstScript = contentScripts[0]?.js[0];\n if (firstScript) {\n entryPoints[\"content\"] = this.findSourceFile(firstScript);\n }\n }\n\n private addPopupEntryPoint(entryPoints: Record<string, string>): void {\n const popup = this.parsePopup();\n if (!popup) return;\n\n const htmlPath = path.join(this.baseDir, popup.html);\n const jsPath = this.findAssociatedJS(htmlPath);\n if (jsPath) {\n entryPoints[\"popup\"] = jsPath;\n }\n }\n\n private addOptionsEntryPoint(entryPoints: Record<string, string>): void {\n const options = this.parseOptions();\n if (!options) return;\n\n const htmlPath = path.join(this.baseDir, options.page);\n const jsPath = this.findAssociatedJS(htmlPath);\n if (jsPath) {\n entryPoints[\"options\"] = jsPath;\n }\n }\n\n private addDevtoolsEntryPoint(entryPoints: Record<string, string>): void {\n const devtools = this.parseDevtools();\n if (!devtools) return;\n\n const htmlPath = path.join(this.baseDir, devtools.page);\n const jsPath = this.findAssociatedJS(htmlPath);\n if (jsPath) {\n entryPoints[\"devtools\"] = jsPath;\n }\n }\n\n /**\n * Parse background configuration\n */\n private parseBackground(): ManifestInfo[\"background\"] {\n if (!this.manifestData) return undefined;\n\n const bg = this.manifestData[\"background\"] as Record<string, unknown> | undefined;\n if (!bg) return undefined;\n\n // Manifest V3 - service worker\n if (bg[\"service_worker\"]) {\n return {\n type: \"service_worker\",\n files: [bg[\"service_worker\"] as string],\n };\n }\n\n // Manifest V2 - scripts\n if (bg[\"scripts\"]) {\n return {\n type: \"script\",\n files: bg[\"scripts\"] as string[],\n };\n }\n\n // Manifest V2 - page\n if (bg[\"page\"]) {\n return {\n type: \"script\",\n files: [bg[\"page\"] as string],\n };\n }\n\n return undefined;\n }\n\n /**\n * Parse content scripts configuration\n */\n private parseContentScripts(): ManifestInfo[\"contentScripts\"] {\n if (!this.manifestData) return undefined;\n\n const cs = this.manifestData[\"content_scripts\"];\n if (!cs || !Array.isArray(cs)) return undefined;\n\n return cs.map((script: Record<string, unknown>) => ({\n matches: (script[\"matches\"] as string[]) || [],\n js: (script[\"js\"] as string[]) || [],\n css: script[\"css\"] as string[] | undefined,\n }));\n }\n\n /**\n * Parse popup configuration\n */\n private parsePopup(): ManifestInfo[\"popup\"] {\n if (!this.manifestData) return undefined;\n\n const action =\n (this.manifestData[\"action\"] as Record<string, unknown> | undefined) ||\n (this.manifestData[\"browser_action\"] as Record<string, unknown> | undefined);\n if (!action) return undefined;\n\n if (action[\"default_popup\"]) {\n return {\n html: action[\"default_popup\"] as string,\n default: true,\n };\n }\n\n return undefined;\n }\n\n /**\n * Parse options configuration\n */\n private parseOptions(): ManifestInfo[\"options\"] {\n if (!this.manifestData) return undefined;\n\n const options = this.manifestData[\"options_ui\"] || this.manifestData[\"options_page\"];\n if (!options) return undefined;\n\n if (typeof options === \"string\") {\n return {\n page: options,\n openInTab: false,\n };\n }\n\n const optionsObj = options as Record<string, unknown>;\n return {\n page: optionsObj[\"page\"] as string,\n openInTab: optionsObj[\"open_in_tab\"] as boolean,\n };\n }\n\n /**\n * Parse devtools configuration\n */\n private parseDevtools(): ManifestInfo[\"devtools\"] {\n if (!this.manifestData) return undefined;\n\n const devtools = this.manifestData[\"devtools_page\"];\n if (!devtools) return undefined;\n\n return {\n page: devtools as string,\n };\n }\n\n /**\n * Find source file from manifest reference\n * Tries multiple locations: exact path, src/ directory, .ts extension\n */\n private findSourceFile(manifestPath: string): string {\n const candidates = [\n // Exact path from manifest\n path.join(this.baseDir, manifestPath),\n // Same path with .ts extension\n path.join(this.baseDir, manifestPath.replace(/\\.js$/, \".ts\")),\n // In src/ directory\n path.join(this.baseDir, \"src\", manifestPath),\n path.join(this.baseDir, \"src\", manifestPath.replace(/\\.js$/, \".ts\")),\n // In src/ with .tsx extension\n path.join(this.baseDir, \"src\", manifestPath.replace(/\\.js$/, \".tsx\")),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n // Fallback to manifest path (will error later if not found)\n return path.join(this.baseDir, manifestPath);\n }\n\n /**\n * Find associated JavaScript/TypeScript file for an HTML file\n */\n private findAssociatedJS(htmlPath: string): string | null {\n if (!fs.existsSync(htmlPath)) {\n return null;\n }\n\n // Read HTML and look for script tags\n const html = fs.readFileSync(htmlPath, \"utf-8\");\n const scriptMatch = html.match(/<script[^>]+src=[\"']([^\"']+)[\"']/i);\n\n if (scriptMatch?.[1]) {\n const scriptPath = scriptMatch[1];\n const fullPath = path.resolve(path.dirname(htmlPath), scriptPath);\n\n // Try with and without .js/.ts extension\n if (fs.existsSync(fullPath)) return fullPath;\n if (fs.existsSync(fullPath.replace(/\\.js$/, \".ts\"))) {\n return fullPath.replace(/\\.js$/, \".ts\");\n }\n if (fs.existsSync(fullPath.replace(/\\.js$/, \".tsx\"))) {\n return fullPath.replace(/\\.js$/, \".tsx\");\n }\n }\n\n // Fallback: look for convention-based files\n const baseName = path.basename(htmlPath, \".html\");\n const dir = path.dirname(htmlPath);\n\n const candidates = [\n path.join(dir, `${baseName}.ts`),\n path.join(dir, `${baseName}.tsx`),\n path.join(dir, `${baseName}.js`),\n path.join(dir, \"index.ts\"),\n path.join(dir, \"index.tsx\"),\n path.join(dir, \"index.js\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n }\n}\n\n/**\n * Parse manifest.json and extract information\n */\nexport function parseManifest(projectRoot: string): ManifestInfo {\n const parser = new ManifestParser(projectRoot);\n return parser.parse();\n}\n\n/**\n * Get context entry points from manifest.json\n */\nexport function getContextEntryPoints(projectRoot: string): Record<string, string> {\n const parser = new ManifestParser(projectRoot);\n return parser.getContextEntryPoints();\n}\n",
@@ -62,7 +62,7 @@
62
62
  "// System prompt generator for Claude-powered teaching\n\nimport type { ContextInfo, MessageFlow } from \"../../analysis/src/types/architecture.ts\";\nimport type { TeachingContext } from \"./context-builder.ts\";\n\n/**\n * Generate teaching system prompt with project context\n */\nexport function generateTeachingPrompt(context: TeachingContext): string {\n const contexts = Object.entries(context.project.architecture.contexts) as [string, ContextInfo][];\n const allHandlers = contexts.flatMap(([_, ctx]) => ctx.handlers || []);\n const messageFlows = context.project.architecture.messageFlows || [];\n\n return `You are an expert instructor teaching a developer about their Polly project and formal verification.\n\n# Communication Style\n\n- Direct and precise language\n- No emojis or decorative elements\n- No florid language or superlatives\n- Classic style: clear and simple as truth\n- Academic rigor without unnecessary ornamentation\n- Act like an Oxford university professor\n\n# Your Project Context\n\n${generateProjectSection(context, contexts, allHandlers, messageFlows)}\n\n${generateVerificationSection(context)}\n\n# Your Role\n\n1. **Understand their project**: Use the architecture analysis to explain their specific codebase\n2. **Teach Polly concepts**: Explain how Polly's analysis, verification, and visualization work\n3. **Explain formal verification**: Teach TLA+ and verification concepts using their actual code as examples\n4. **Debug and optimize**: Help interpret verification results and suggest improvements\n5. **Answer questions directly**: Address their specific questions with precise technical answers\n\n# Key Areas You Can Help With\n\n- **Architecture**: How contexts, handlers, and message flows work in their project\n- **Translation**: How TypeScript code becomes TLA+ specifications\n- **Verification**: What properties are being verified and what they mean\n- **State-Level Constraints**: Using $constraints() to declare verification constraints alongside state\n- **Verified State Discovery**: Using \\`{ verify: true }\\` on $sharedState to enable automatic handler discovery\n- **Performance**: How to optimize verification speed and state space exploration\n- **Debugging**: Interpreting counterexamples and fixing violations\n- **Configuration**: Understanding maxInFlight, bounds, and other verification parameters\n- **Universal State Management**: Using the same state code in Chrome extensions, web apps, and Node.js\n- **Elysia Integration**: Using Polly with Elysia/Bun servers for full-stack distributed systems verification\n- **Testing & Adapters**: Using mock adapters for testing and verification in Node.js environments\n\n# Important Notes\n\n- Always reference specific code from their project when explaining concepts\n- If asked about verification performance, consider the verification config and results\n- Provide actionable suggestions, not just general advice\n- If you don't know something specific about their project, say so clearly\n- **State-Level Constraints**: Explain that $constraints() allows declaring verification constraints alongside state:\n - Constraints are automatically wired as preconditions in generated TLA+ handlers\n - Example: \\`$constraints(\"loggedIn\", { USER_LOGOUT: { requires: \"state.loggedIn === true\" } })\\`\n - This eliminates duplication and creates a single source of truth for state invariants\n - Parser extracts constraints and adds them to all relevant message handlers automatically\n - **File Organization**: Constraints can be organized in separate files (e.g., specs/constraints.ts)\n - **Transitive Discovery**: The analyzer uses transitive import following to discover constraints\n - Files outside src/ are automatically found if imported from handler files\n - This enables clean separation of verification code from runtime code\n- **Verified State Discovery**: When \\`{ verify: true }\\` is set on $sharedState/$syncedState/$persistedState:\n - The analyzer automatically discovers exported functions that modify that state signal\n - Functions with \\`requires()\\` and \\`ensures()\\` annotations get those extracted as pre/postconditions\n - State assignments like \\`authState.value = { ... }\\` or \\`authState.value.field = x\\` are detected\n - Message types are derived from function names: \\`handleAuthSuccess\\` → \\`AuthSuccess\\`\n - This enables verification for applications that don't use \\`messageBus.on()\\` handlers\n - Ideal for: multi-tab PWAs, WebSocket apps, reactive effect-driven architectures\n - Example:\n \\`\\`\\`typescript\n export const authState = $sharedState('auth', { isAuthenticated: false }, { verify: true });\n\n export function handleLogin(): void {\n requires(!authState.value.isAuthenticated);\n authState.value = { ...authState.value, isAuthenticated: true };\n ensures(authState.value.isAuthenticated);\n }\n \\`\\`\\`\n\n# Verification Parameters Explained\n\nWhen explaining verification configuration, help users understand what each parameter controls:\n\n**maxDepth**: Maximum number of **sequential** message deliveries to check\n- Depth 4 = check sequences up to 4 messages delivered one after another\n- Depth 8 = check sequences up to 8 messages delivered one after another\n- Question to ask: \"What's the longest sequence of messages that could expose a bug in my app?\"\n- Most authentication/state machine bugs appear in shallow sequences (depth 2-4)\n\n**maxInFlight**: Maximum number of **concurrent** messages in the system at once\n- 2 = check scenarios with up to 2 messages pending simultaneously\n- 3 = check scenarios with up to 3 messages pending simultaneously\n- Question: \"How many concurrent messages can actually happen in my app?\"\n- Consider different bounds per message type (auth should be 1, queries could be higher)\n\n**maxTabs**: Number of concurrent contexts (tabs, workers, etc.)\n- Question: \"How many concurrent contexts do I need to verify for race conditions?\"\n- Most single-tab apps only need 1; multi-tab/worker apps need 2+\n\n**Practical Guidance**:\n- Start conservative: maxDepth: 3-4, maxInFlight: 2, maxTabs: 1\n- Use timeouts (5-10 minutes) to prevent runaway verification\n- Don't arbitrarily exclude message types to speed up verification - tune the bounds instead\n- If verification takes hours, bounds are likely too high for regular development workflows\n\n# Elysia/Bun Integration\n\nPolly now provides first-class support for Elysia (Bun-first web framework) with Eden type-safe client generation:\n\n## Server-Side Middleware (\\`@fairfox/polly/elysia\\`)\n\nThe \\`polly()\\` middleware adds distributed systems semantics to Elysia apps:\n\n**Key Features:**\n- **State Management**: Define client and server state signals\n- **Client Effects**: Specify what should happen on the client after server operations\n- **Authorization**: Route-level authorization rules\n- **Offline Behavior**: Configure optimistic updates and queueing\n- **WebSocket Broadcast**: Real-time updates to connected clients\n- **TLA+ Generation**: Automatic formal specification generation from routes + config\n\n**Example:**\n\\`\\`\\`typescript\nimport { Elysia, t } from 'elysia';\nimport { polly } from '@fairfox/polly/elysia';\nimport { $syncedState, $serverState } from '@fairfox/polly';\n\nconst app = new Elysia()\n .use(polly({\n state: {\n client: {\n todos: $syncedState('todos', []),\n user: $syncedState('user', null),\n },\n server: {\n db: $serverState('db', db),\n },\n },\n effects: {\n 'POST /todos': {\n client: ({ result, state }) => {\n state.client.todos.value = [...state.client.todos.value, result];\n },\n broadcast: true, // Send to all connected clients\n },\n },\n authorization: {\n 'POST /todos': ({ state }) => state.client.user.value !== null,\n },\n offline: {\n 'POST /todos': {\n queue: true,\n optimistic: (body) => ({ id: -Date.now(), ...body }),\n merge: 'replace', // 'replace' | custom merge function\n conflictResolution: 'last-write-wins', // 'last-write-wins' | 'server-wins' | custom function\n },\n },\n }))\n .post('/todos', handler, { body: t.Object({ text: t.String() }) });\n\\`\\`\\`\n\n**Route Pattern Matching:**\n- Exact: \\`'POST /todos'\\`\n- Params: \\`'GET /todos/:id'\\`\n- Wildcard: \\`'/todos/*'\\`\n\n**Production Behavior:**\n- In development: Adds metadata to responses for hot-reload and debugging\n- In production: Pass-through (minimal overhead) - client effects are bundled at build time\n- Authorization and broadcasts work in both modes\n\n**Offline Behavior Configuration:**\n\nThe \\`offline\\` config enables Progressive Web App capabilities:\n\n\\`\\`\\`typescript\noffline: {\n 'POST /todos': {\n queue: true, // Queue request when offline\n optimistic: (body) => TResult, // Immediate UI update with predicted result\n merge: 'replace' | mergeFn, // How to merge optimistic with server result\n conflictResolution: 'last-write-wins' | 'server-wins' | resolveFn,\n },\n}\n\\`\\`\\`\n\n**Merge Strategies:**\n- \\`'replace'\\`: Replace optimistic result with server result (default)\n- \\`(optimistic, server) => TResult\\`: Custom merge logic\n\n**Conflict Resolution** (when multiple devices edit offline):\n- \\`'last-write-wins'\\`: Lamport clock determines winner\n- \\`'server-wins'\\`: Server state always takes precedence\n- \\`(client, server) => TResult\\`: Custom conflict resolution\n\n## Client-Side Wrapper (\\`@fairfox/polly/client\\`)\n\nEnhances Eden treaty client with Polly features:\n\n**Example:**\n\\`\\`\\`typescript\nimport { createPollyClient } from '@fairfox/polly/client';\nimport { $syncedState } from '@fairfox/polly';\nimport type { app } from './server';\n\nconst clientState = {\n todos: $syncedState('todos', []),\n user: $syncedState('user', null),\n};\n\nexport const api = createPollyClient<typeof app>('http://localhost:3000', {\n state: clientState,\n websocket: true, // Enable real-time updates\n});\n\n// Use it (types are automatically inferred from server!)\nawait api.todos.post({ text: 'Buy milk' });\n\n// Access Polly features\nconsole.log(api.$polly.state.isOnline.value); // true/false\nconsole.log(api.$polly.state.queuedRequests.value); // Queued requests\napi.$polly.sync(); // Manually sync queued requests\n\\`\\`\\`\n\n**Key Features:**\n- Offline queueing with automatic retry\n- WebSocket connection for real-time updates\n- Lamport clock synchronization\n- Type inference from server via Eden\n\n## Why This Matters for Distributed Systems\n\nSPAs/PWAs are distributed systems facing classic problems:\n- **CAP theorem**: Must choose consistency vs availability during partitions\n- **Network unreliability**: The first fallacy of distributed computing\n- **Cache invalidation**: \"One of the two hard things in computer science\"\n- **Eventual consistency**: State sync across client/server\n- **Conflict resolution**: When multiple devices edit offline\n\nThe Elysia integration addresses this by:\n1. Making distributed concerns explicit (offline, authorization, effects)\n2. Leveraging Eden for zero-duplication type safety\n3. Supporting verification via TLA+ generation from middleware config\n4. Providing WebSocket broadcast for real-time consistency\n\n## Architecture Pattern\n\n\\`\\`\\`\nBrowser (Client)\n ├── Eden Treaty Client (types from Elysia)\n ├── Polly Wrapper (offline, sync, WebSocket)\n └── Client State ($syncedState)\n │\n │ HTTP / WebSocket\n │\nServer (Elysia + Bun)\n ├── Elysia Routes (normal routes)\n ├── Polly Middleware (effects, auth, broadcast)\n └── Server State ($serverState)\n\\`\\`\\`\n\n## Best Practices\n\n1. **Separate Elysia is the contract** - Don't define types twice. Elysia routes define the API, Eden generates client types.\n2. **Effects describe client behavior** - Keep effects pure and deterministic.\n3. **Authorization at route level** - Centralize security rules in middleware config.\n4. **Queue selectively** - Only queue idempotent operations when offline.\n5. **Broadcast with filters** - Use broadcastFilter to target specific clients.\n6. **Generate TLA+ for verification** - Enable tlaGeneration in dev to verify distributed properties.\n\n# Testing & Adapters\n\n## The Adapter Pattern\n\nPolly uses an **adapter pattern** to abstract Chrome extension APIs, enabling testing in Node.js environments and solving the \"chrome is not defined\" issue during verification.\n\n### Core Adapter Types\n\nAll extension API access goes through adapters defined in \\`ExtensionAdapters\\`:\n- \\`runtime\\` - Message passing, extension lifecycle\n- \\`storage\\` - Persistent storage (local, sync, session)\n- \\`tabs\\` - Tab management and queries\n- \\`window\\` - Window management\n- \\`offscreen\\` - Offscreen documents\n- \\`contextMenus\\` - Context menu registration\n- \\`fetch\\` - HTTP requests\n- \\`logger\\` - Logging infrastructure\n\n### Why This Matters for Verification\n\n**Problem**: Chrome extensions use \\`chrome.*\\` APIs that don't exist in Node.js. When Polly's verification runs in Node.js/Docker, importing files that access \\`chrome.*\\` fails with \"chrome is not defined\".\n\n**Solution**: Pass mock adapters to MessageBus/context creators, allowing verification code to import and analyze handler files without Chrome runtime.\n\n## Using Mock Adapters\n\n### In Tests\n\n\\`\\`\\`typescript\nimport { createMockAdapters } from '@fairfox/polly/test';\n\nconst adapters = createMockAdapters();\nconst bus = new MessageBus('background', adapters);\n\\`\\`\\`\n\n### With createBackground()\n\n\\`\\`\\`typescript\nimport { createBackground } from '@fairfox/polly/background';\nimport { createMockAdapters } from '@fairfox/polly/test';\n\n// Production (Chrome extension)\nconst bus = createBackground(); // Uses real Chrome adapters\n\n// Testing/Verification (Node.js)\nconst bus = createBackground(createMockAdapters()); // Uses mocks\n\\`\\`\\`\n\n### With createContext()\n\n\\`\\`\\`typescript\nimport { createContext } from '@fairfox/polly';\nimport { createMockAdapters } from '@fairfox/polly/test';\n\n// Production\nconst bus = createContext('popup', {\n async onInit(bus) {\n // Setup handlers\n }\n});\n\n// Testing/Verification\nconst bus = createContext('popup', {\n adapters: createMockAdapters(),\n waitForDOM: false,\n async onInit(bus) {\n // Setup handlers\n }\n});\n\\`\\`\\`\n\n## Solving GitHub Issue #25: \"chrome is not defined\"\n\n**Issue**: Handler extraction fails during verification when background scripts use \\`createBackground()\\` because it tries to access \\`chrome.*\\` APIs at module load time.\n\n**Root Cause**: \\`createBackground()\\` internally calls \\`createChromeAdapters()\\` which instantiates adapter classes that immediately access \\`chrome.runtime\\`, \\`chrome.storage\\`, etc.\n\n**Solution (Implemented)**:\n1. \\`createBackground()\\` now accepts optional \\`adapters\\` parameter\n2. \\`createContext()\\` now accepts \\`adapters\\` in config\n3. Both pass adapters to \\`getMessageBus()\\`, bypassing Chrome API access\n\n**Verification Setup Pattern**:\n\n\\`\\`\\`typescript\n// specs/verification.config.ts\nimport { defineVerification } from '@fairfox/polly/verify';\nimport { createMockAdapters } from '@fairfox/polly/test';\n\n// Import state (works - no chrome needed)\nimport '../packages/api/src/state.ts';\n\n// Import handlers with mock adapters\nimport { createBackground } from '@fairfox/polly/background';\nconst adapters = createMockAdapters();\n\n// This file sets up handlers for extraction\nimport '../packages/api/src/bus.ts'; // Now works!\n\nexport default defineVerification({\n // ... verification config\n});\n\\`\\`\\`\n\n**Alternative**: Create verification-specific handler registration file:\n\n\\`\\`\\`typescript\n// packages/api/specs/handlers-verify.ts\nimport { createBackground } from '@fairfox/polly/background';\nimport { createMockAdapters } from '@fairfox/polly/test';\nimport { connectionState } from '../src/state';\n\nconst bus = createBackground(createMockAdapters());\n\nbus.on('authenticate', async ({ message, wsId }) => {\n connectionState.value = {\n ...connectionState.value,\n authenticated: true,\n user: { userId: 1, auth0Id: 'auth0|123', handle: 'user' },\n };\n return { type: 'ack', success: true };\n});\n\n// Import this in verification.config.ts instead of runtime bus.ts\n\\`\\`\\`\n\n## Best Practices\n\n1. **Always accept adapters in factory functions** - Makes code testable\n2. **Use mock adapters in tests** - Don't require Chrome runtime for unit tests\n3. **Separate verification handler setup** - Keep runtime and verification concerns separate if needed\n4. **Document adapter requirements** - Help users understand when mocks are needed\n\n## API Consistency\n\nAll context creation functions now follow the adapter pattern:\n- \\`createBackground(adapters?)\\` ✓\n- \\`createContext(context, { adapters?, ... })\\` ✓\n- \\`getMessageBus(context, adapters?)\\` ✓\n- \\`new MessageBus(context, adapters?)\\` ✓\n\n# Universal State Management\n\nPolly's state primitives (\\`$sharedState\\`, \\`$syncedState\\`, \\`$persistedState\\`, \\`$state\\`) now work universally across Chrome extensions, web applications/PWAs, and Node.js environments using an **adapter pattern**.\n\n## The Adapter System\n\nState management is decoupled into two independent concerns via adapters:\n\n1. **Storage Adapter** - Where state persists (chrome.storage, IndexedDB, or in-memory)\n2. **Sync Adapter** - How state synchronizes across contexts (chrome.runtime, BroadcastChannel, or NoOp)\n\n## Automatic Environment Detection\n\nThe framework automatically detects the environment and selects appropriate adapters:\n\n| Environment | Storage | Sync Transport | Use Case |\n|------------|---------|----------------|----------|\n| **Chrome Extension** | \\`chrome.storage.local\\` | \\`chrome.runtime\\` messaging | Multi-context extensions |\n| **Web App / PWA** | IndexedDB | BroadcastChannel | Multi-tab web applications |\n| **Single-Tab Web App** | IndexedDB | None (NoOp) | Single-tab applications |\n| **Node.js / Testing** | In-memory Map | None (NoOp) | Verification & unit tests |\n\n**Example:**\n\\`\\`\\`typescript\n// Same code works everywhere!\nimport { $sharedState } from '@fairfox/polly/state';\n\nconst settings = $sharedState('settings', { theme: 'dark' });\n\n// In Chrome extension:\n// → Uses chrome.storage.local + chrome.runtime messaging\n// In web app:\n// → Uses IndexedDB + BroadcastChannel\n// In Node.js test:\n// → Uses in-memory Map + NoOp sync\n\\`\\`\\`\n\n## Why BroadcastChannel for Web Apps?\n\n**Architecture Decision**: BroadcastChannel was chosen over SharedWorker for web app sync because:\n- Simpler API with no lifecycle management complexity\n- Decentralized (aligns with local-first/offline-first architecture)\n- Better browser support (especially Safari and mobile)\n- Perfect for message-passing with Lamport clock conflict resolution\n- No single point of failure\n\nSharedWorker could be added as an optional adapter in the future for use cases requiring:\n- Central coordination point for complex multi-tab workflows\n- Shared WebSocket connections (one connection for all tabs)\n- Heavy computation done once and shared across tabs\n- Persistent background work when tabs are closed\n\nSee \\`src/shared/lib/sync-adapter.ts\\` for detailed architectural rationale.\n\n## Available Adapters\n\n### Storage Adapters\n- \\`ChromeStorageAdapter\\` - Uses \\`chrome.storage.local\\` (auto-detected in extensions)\n- \\`IndexedDBAdapter\\` - Uses IndexedDB (auto-detected in web apps)\n- \\`MemoryStorageAdapter\\` - Uses in-memory Map (auto-detected in Node.js)\n\n### Sync Adapters\n- \\`ChromeRuntimeSyncAdapter\\` - Uses \\`chrome.runtime.sendMessage\\` (auto-detected in extensions)\n- \\`BroadcastChannelSyncAdapter\\` - Uses BroadcastChannel API (auto-detected in web apps)\n- \\`NoOpSyncAdapter\\` - No synchronization (auto-detected for single-context scenarios)\n\n## Custom Adapters\n\nUsers can provide custom adapters for specialized scenarios:\n\n\\`\\`\\`typescript\nimport { $sharedState } from '@fairfox/polly/state';\nimport { IndexedDBAdapter, BroadcastChannelSyncAdapter } from '@fairfox/polly/adapters';\n\nconst settings = $sharedState('settings', defaultSettings, {\n storage: new IndexedDBAdapter('custom-db-name'),\n sync: new BroadcastChannelSyncAdapter('custom-channel'),\n});\n\\`\\`\\`\n\n## Key Features\n\n- **Write once, run anywhere**: Same state code works in extensions, web apps, and Node.js\n- **Environment-optimized**: Uses the best available APIs for each platform\n- **No conditional logic**: Framework handles detection and selection\n- **Testable**: Mock adapters enable testing without Chrome APIs\n- **Extensible**: Custom adapters for specialized use cases\n\n## Common Use Cases\n\n### Multi-Tab Web Application\n\\`\\`\\`typescript\n// State automatically syncs across tabs using BroadcastChannel\nconst todos = $sharedState('todos', []);\n\\`\\`\\`\n\n### Chrome Extension\n\\`\\`\\`typescript\n// State syncs across extension contexts using chrome.runtime\nconst settings = $sharedState('settings', { theme: 'dark' });\n\\`\\`\\`\n\n### Single-Tab Web App (PWA)\n\\`\\`\\`typescript\n// State persists to IndexedDB but doesn't sync (no other tabs)\nconst user = $sharedState('user', null, {\n sync: new NoOpSyncAdapter() // Explicitly disable sync\n});\n\\`\\`\\`\n\n### Node.js Testing\n\\`\\`\\`typescript\n// State uses in-memory storage, no persistence or sync\nconst mockState = $sharedState('test-state', defaultValue);\n\\`\\`\\`\n\n## Migration from Chrome-Only\n\nExisting Chrome extension code requires **no changes** - the framework is backward compatible. Web apps can now use the same primitives that previously only worked in extensions.\n\nBegin by understanding their question and providing a clear, precise answer based on their project context.`;\n}\n\nfunction generateProjectSection(\n context: TeachingContext,\n contexts: [string, ContextInfo][],\n handlers: unknown[],\n flows: MessageFlow[]\n): string {\n const section = `## Architecture Overview\n\n${context.project.summary}\n\n### Contexts\n\n${contexts\n .map(([name, ctx]) => {\n const handlerList = ctx.handlers || [];\n const stateVars = Object.keys(ctx.state?.variables || {});\n return `**${name}**\n- Entry point: ${ctx.entryPoint}\n- Handlers: ${handlerList.length}\n- State variables: ${stateVars.join(\", \") || \"none\"}`;\n })\n .join(\"\\n\\n\")}\n\n### Message Flows\n\n${\n flows.length > 0\n ? flows\n .map((flow: MessageFlow) => {\n return `- ${flow.from} → ${flow.to}: ${flow.messageType}`;\n })\n .join(\"\\n\")\n : \"No message flows detected.\"\n}\n\n### Handlers\n\nTotal handlers: ${handlers.length}\n\n${\n handlers.length > 0\n ? `Example handlers from the project:\n${handlers\n .slice(0, 3)\n .map((h: { name: string; file: string; location?: { line: number } }) => {\n return `- ${h.name} (${h.file}:${h.location?.line || \"?\"})`;\n })\n .join(\"\\n\")}`\n : \"\"\n}`;\n\n return section;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Comprehensive verification status formatting requires many branches\nfunction generateVerificationSection(context: TeachingContext): string {\n if (!context.verification) {\n return `## Verification Status\n\nNo verification has been configured yet. To set up verification:\n1. Run \\`polly verify --setup\\`\n2. Review and configure \\`specs/verification.config.ts\\`\n3. Run \\`polly verify\\` to start verification`;\n }\n\n let section = \"## Verification\\n\\n\";\n\n if (context.verification.config) {\n section += \"### Configuration\\n\\n\";\n section += \"A verification configuration exists at `specs/verification.config.ts`.\\n\";\n\n // Try to extract key config details\n const config = context.verification.config as {\n messages?: { maxInFlight?: number; maxTabs?: number };\n bounds?: { maxInFlight?: number };\n preset?: string;\n verification?: { timeout?: number; workers?: number };\n };\n\n if (config.messages || config.bounds) {\n section += \"\\nKey bounds:\\n\";\n const maxInFlight = config.messages?.maxInFlight || config.bounds?.maxInFlight;\n if (maxInFlight !== undefined) {\n section += `- maxInFlight: ${maxInFlight}\\n`;\n }\n if (config.messages?.maxTabs !== undefined) {\n section += `- maxTabs: ${config.messages.maxTabs}\\n`;\n }\n }\n\n if (config.preset) {\n section += `\\nPreset: ${config.preset}\\n`;\n }\n\n if (config.verification) {\n section += \"\\nVerification settings:\\n\";\n if (config.verification.timeout !== undefined) {\n section += `- Timeout: ${config.verification.timeout === 0 ? \"unlimited\" : `${config.verification.timeout}s`}\\n`;\n }\n if (config.verification.workers !== undefined) {\n section += `- Workers: ${config.verification.workers}\\n`;\n }\n }\n }\n\n if (context.verification.lastResults) {\n const results = context.verification.lastResults;\n section += \"\\n### Last Verification Results\\n\\n\";\n\n if (results.timestamp) {\n section += `Run at: ${results.timestamp.toLocaleString()}\\n`;\n }\n\n if (results.success) {\n section += \"\\n✓ Verification passed!\\n\\n\";\n if (results.stats) {\n section += `Statistics:\n- States generated: ${results.stats.statesGenerated}\n- Distinct states: ${results.stats.distinctStates}\\n`;\n }\n } else {\n section += \"\\n✗ Verification failed\\n\\n\";\n\n if (results.violation) {\n section += `Invariant violated: ${results.violation.name}\\n`;\n section += \"\\nCounterexample trace available.\\n\";\n }\n\n if (results.error) {\n section += `Error: ${results.error}\\n`;\n }\n }\n }\n\n return section;\n}\n\n/**\n * Generate optimization-focused system prompt\n */\nexport function generateOptimizationPrompt(context: TeachingContext): string {\n const contexts = Object.entries(context.project.architecture.contexts) as [string, ContextInfo][];\n const allHandlers = contexts.flatMap(([_, ctx]) => ctx.handlers || []);\n const messageFlows = context.project.architecture.messageFlows || [];\n\n return `You are an expert in formal verification optimization and TLA+ model checking.\n\n# Your Mission\n\nAnalyze this Polly project's verification setup and suggest **precise, actionable optimizations**\nto reduce verification time while maintaining or improving verification precision.\n\n**IMPORTANT**: All Tier 1 and Tier 2 optimization features described below are fully implemented\nand available in the current version of Polly. You can recommend any of these optimizations with\nconfidence that they will work when users apply them to their configuration.\n\n**Code Organization**: The analyzer uses transitive import following to discover all reachable code.\nConstraints and type guards can be organized in separate files (e.g., specs/constraints.ts) and will\nbe automatically discovered via imports. Files outside src/ are fully supported.\n\n**Verified State Discovery**: When \\`{ verify: true }\\` is set on $sharedState/$syncedState/$persistedState,\nthe analyzer automatically discovers exported functions that modify that state and extracts their\n\\`requires()\\`/\\`ensures()\\` annotations. This enables verification for apps that don't use \\`messageBus.on()\\`\nhandlers, such as multi-tab PWAs or WebSocket applications with reactive effect-driven state changes.\n\n# Communication Style\n\n- Direct and precise - no fluff\n- Always provide concrete, copy-paste-able config changes\n- Explain the safety/precision trade-off for each optimization\n- Prioritize Tier 1 (safe, no precision loss) optimizations\n\n# Project Context\n\n${generateProjectSection(context, contexts, allHandlers, messageFlows)}\n\n${generateVerificationSection(context)}\n\n# Understanding Verification Parameters\n\nBefore suggesting optimizations, understand what each parameter actually controls:\n\n**maxDepth**: Maximum number of **sequential** message deliveries to check\n- Depth 4 = check sequences up to 4 messages delivered one after another\n- Depth 8 = check sequences up to 8 messages delivered one after another\n- Question to ask: \"What's the longest sequence of messages that could expose a bug in my app?\"\n- Most authentication/state machine bugs appear in shallow sequences (depth 2-4)\n\n**maxInFlight**: Maximum number of **concurrent** messages in the system at once\n- 2 = check scenarios with up to 2 messages pending simultaneously\n- 3 = check scenarios with up to 3 messages pending simultaneously\n- Question: \"How many concurrent messages can actually happen in my app?\"\n- Consider different bounds per message type (auth should be 1, queries could be higher)\n\n**maxTabs**: Number of concurrent contexts (tabs, workers, etc.)\n- Question: \"How many concurrent contexts do I need to verify for race conditions?\"\n- Most single-tab apps only need 1; multi-tab/worker apps need 2+\n\n**Practical Approach**:\n- Start conservative: maxDepth: 3-4, maxInFlight: 2, maxTabs: 1\n- Use timeouts (5-10 minutes) to prevent runaway verification\n- Don't arbitrarily exclude message types - tune the bounds instead\n- If verification takes hours, bounds are likely too high for regular development\n\n# Your Expertise: Optimization Tiers\n\n## Tier 1: Safe Optimizations (ZERO precision loss)\n\n### 1. Message Type Filtering\n**Problem**: Analyzers often detect browser events (mousedown, load, install) and other noise\nthat aren't part of the distributed system being verified, causing exponential state space growth.\n\n**Example Impact**:\n- 23 message types (14 noise) with maxInFlight: 2 → timeout after 5 minutes\n- 9 relevant message types with maxInFlight: 2 → completes quickly\n\n**Solution**: Add include/exclude filters to config:\n\\`\\`\\`typescript\nmessages: {\n maxInFlight: 2,\n include: ['query', 'command', 'result', ...], // Only protocol messages\n // OR\n exclude: ['load', 'install', 'mousedown', ...], // Exclude browser events\n}\n\\`\\`\\`\n\n### 2. Symmetry Reduction\nTreat identical or commutative message types as interchangeable to reduce state space.\n\n**Example**: For multiple independent symmetry groups (e.g., workers and replicas):\n\\`\\`\\`typescript\nmessages: {\n symmetry: [\n ['worker1', 'worker2', 'worker3'], // Workers are interchangeable\n ['replica1', 'replica2'], // Replicas are interchangeable\n ],\n}\n\\`\\`\\`\n\nPolly generates: \\`Symmetry == Permutations(Set1) \\\\cup Permutations(Set2)\\` which preserves\nindependent group semantics (elements within each group are interchangeable, but not across groups).\nThis is the standard TLA+ pattern used in Paxos and SimpleAllocator.\n\n### 3. Message-Specific Bounds\nDifferent maxInFlight per message type - auth messages should be sequential (1),\nbut data queries might allow concurrency (3).\n\n### 4. State Abstractions\nAbstract implementation details that don't affect correctness properties.\n\n## Tier 2: Controlled Approximations (Minimal, understood precision loss)\n\n### 1. Temporal Constraints\nAdd known ordering requirements (e.g., \"login before other operations\").\n\n### 2. Bounded Exploration\nLimit depth while ensuring critical paths are covered.\n\n### 3. Incremental Verification\nVerify subsystems separately, then compose results.\n\n# Analysis Framework\n\nWhen analyzing, check:\n\n1. **Message Types**: Are there browser events or UI noise?\n2. **State Space**: Current states explored - is it realistic?\n3. **Concurrency**: Is maxInFlight uniform when it should be per-message?\n4. **Symmetries**: Are there duplicate or commutative message types?\n5. **Constraints**: What ordering requirements are implicit?\n\n# Output Format\n\nWhen user says \"analyze\", provide:\n1. Top 3-5 optimization opportunities (prioritize Tier 1)\n2. For each:\n - Tier number\n - Expected impact (e.g., \"60% state space reduction\")\n - Concrete config diff\n - Safety guarantees or trade-offs\n\nExample format:\n\\`\\`\\`\n## Optimization 1: Message Type Filtering [Tier 1]\n\n**Impact**: ~60% state space reduction\n**Safety**: Zero precision loss - only removes irrelevant messages\n\n**Config Change**:\n\\`\\`\\`typescript\nmessages: {\n maxInFlight: 2,\n include: ['query', 'command', 'result', 'error']\n}\n\\`\\`\\`\n\n**Rationale**: [Explain based on their actual message types]\n\\`\\`\\`\n\nReference their actual message types, handlers, and flows in your analysis.`;\n}\n",
63
63
  "#!/usr/bin/env bun\n// CLI for Polly teaching system - Claude-powered\n\nimport Anthropic from \"@anthropic-ai/sdk\";\nimport { analyzeArchitecture } from \"../../analysis/src/index.ts\";\nimport { generateStructurizrDSL } from \"../../visualize/src/codegen/structurizr.ts\";\nimport { buildTeachingContext } from \"./context-builder.ts\";\nimport { generateOptimizationPrompt, generateTeachingPrompt } from \"./system-prompt.ts\";\n\nasync function main() {\n const cwd = process.cwd();\n\n // Check for mode flag\n const args = process.argv.slice(2);\n const modeArg = args.find((arg) => arg.startsWith(\"--mode=\"));\n const mode = modeArg ? modeArg.split(\"=\")[1] : \"teach\";\n\n // Check for API key\n const apiKey = process.env.ANTHROPIC_API_KEY;\n if (!apiKey) {\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"\\n❌ Error: ANTHROPIC_API_KEY environment variable not set\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"\\nTo use polly teach, you need a Claude API key:\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"1. Get an API key from https://console.anthropic.com/\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"2. Set the environment variable:\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\" export ANTHROPIC_API_KEY=your_key_here\");\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"\\nAlternatively, add it to your shell profile (.bashrc, .zshrc, etc.)\\n\");\n process.exit(1);\n }\n\n console.log(\n mode === \"optimize\" ? \"Analyzing verification setup...\" : \"Analyzing Polly project...\"\n );\n console.log();\n\n try {\n // Run architecture analysis\n const analysis = await analyzeArchitecture({\n projectRoot: cwd,\n tsConfigPath: `${cwd}/tsconfig.json`,\n });\n\n // Generate visualization\n const dsl = await generateStructurizrDSL(analysis);\n\n // Build teaching context\n const context = await buildTeachingContext(cwd, analysis);\n\n // Display appropriate overview based on mode\n if (mode === \"optimize\") {\n displayOptimizationOverview(context);\n } else {\n displayProjectOverview(context, dsl);\n }\n\n // Start Claude-powered interactive session\n await startClaudeSession(apiKey, context, mode);\n } catch (error) {\n console.log(`\\n❌ Failed to analyze project: ${error}`);\n process.exit(1);\n }\n}\n\nfunction displayProjectOverview(context: ReturnType<typeof buildTeachingContext>, dsl: string) {\n const contexts = Object.entries(context.project.architecture.contexts);\n const _allHandlers = contexts.flatMap(\n ([_, ctx]: [string, { handlers?: unknown[] }]) => ctx.handlers || []\n );\n const messageFlows = context.project.architecture.messageFlows || [];\n\n console.log(\n `\n# Polly Project Analysis\n\n## Architecture\n\n${context.project.summary}\n\n### Contexts\n\n${contexts\n .map(\n ([name, ctx]: [\n string,\n { entryPoint: string; handlers?: unknown[]; state?: { variables?: Record<string, unknown> } },\n ]) => {\n return `\n**${name}**\nLocation: ${ctx.entryPoint}\nHandlers: ${ctx.handlers?.length || 0}\nState variables: ${Object.keys(ctx.state?.variables || {}).length}`;\n }\n )\n .join(\"\\n\")}\n\n### Message Flows\n\n${\n messageFlows.length > 0\n ? messageFlows\n .map((flow: { from: string; to: string; messageType: string }) => {\n return `- ${flow.from} → ${flow.to}: ${flow.messageType}`;\n })\n .join(\"\\n\")\n : \"No message flows detected.\"\n}\n\n## Architecture Diagram\n\n\\`\\`\\`structurizr\n${dsl}\n\\`\\`\\`\n\n---\n\nWhat would you like to understand about your project?\n\nI'm powered by Claude and have full context of your Polly project's architecture,\nhandlers, state, message flows, and verification configuration. Ask me anything!\n `.trim()\n );\n}\n\nfunction displayOptimizationOverview(context: Awaited<ReturnType<typeof buildTeachingContext>>) {\n let output = \"# Verification Optimization Session\\n\\n\";\n output += \"## Current Setup\\n\\n\";\n output += `${context.project.summary}\\n\\n`;\n\n if (context.verification?.config) {\n output += \"### Verification Configuration\\n\\n\";\n output += \"Config found at `specs/verification.config.ts`\\n\";\n\n if (context.verification.lastResults) {\n output += \"\\n### Last Verification Results\\n\\n\";\n output += context.verification.lastResults.success ? \"✓ Passed\\n\" : \"✗ Failed\\n\";\n\n if (context.verification.lastResults.stats) {\n output += `- States explored: ${context.verification.lastResults.stats.statesGenerated}\\n`;\n output += `- Distinct states: ${context.verification.lastResults.stats.distinctStates}\\n`;\n }\n\n if (context.verification.lastResults.timestamp) {\n output += `- Run at: ${context.verification.lastResults.timestamp.toLocaleString()}\\n`;\n }\n }\n } else {\n output += \"### No Verification Setup\\n\\n\";\n output += \"Run `polly verify --setup` to configure verification.\\n\";\n }\n\n output += \"\\n---\\n\\n\";\n output += \"I'll analyze your verification setup and suggest optimizations to:\\n\";\n output += \"- Reduce verification time while maintaining precision\\n\";\n output += \"- Implement safe state space reductions\\n\";\n output += \"- Configure optimal bounds and constraints\\n\\n\";\n output += 'Ask me about specific optimizations or say \"analyze\" for a full assessment.\\n';\n\n console.log(output);\n}\n\nasync function startClaudeSession(\n apiKey: string,\n context: Awaited<ReturnType<typeof buildTeachingContext>>,\n mode: string = \"teach\"\n) {\n const anthropic = new Anthropic({ apiKey });\n const systemPrompt =\n mode === \"optimize\" ? generateOptimizationPrompt(context) : generateTeachingPrompt(context);\n\n // Initialize conversation history\n const conversationHistory: Array<{\n role: \"user\" | \"assistant\";\n content: string;\n }> = [];\n\n const readline = await import(\"node:readline\");\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n prompt: \"\\n\\nPrompt: \",\n });\n\n rl.prompt();\n\n rl.on(\"line\", async (input: string) => {\n const query = input.trim();\n\n if (!query || query === \"exit\" || query === \"quit\") {\n console.log(\"\\nGoodbye!\");\n rl.close();\n process.exit(0);\n }\n\n // Add user message to history\n conversationHistory.push({\n role: \"user\",\n content: query,\n });\n\n try {\n // Call Claude API\n const response = await anthropic.messages.create({\n model: \"claude-sonnet-4-20250514\",\n max_tokens: 4096,\n system: systemPrompt,\n messages: conversationHistory,\n });\n\n const assistantMessage = response.content[0];\n if (assistantMessage.type === \"text\") {\n const text = assistantMessage.text;\n\n // Add assistant message to history\n conversationHistory.push({\n role: \"assistant\",\n content: text,\n });\n\n // Display response\n console.log(`\\n${text}`);\n }\n } catch (error) {\n if (error instanceof Anthropic.APIError) {\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(`\\n❌ API Error: ${error.message}`);\n if (error.status === 401) {\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(\"Your API key may be invalid. Please check ANTHROPIC_API_KEY.\");\n }\n } else {\n // biome-ignore lint/suspicious/noConsole: CLI error output\n console.error(`\\n❌ Error: ${error}`);\n }\n }\n\n rl.prompt();\n });\n\n rl.on(\"close\", () => {\n console.log(\"\\nGoodbye!\");\n process.exit(0);\n });\n}\n\nmain();\n"
64
64
  ],
65
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AAAA;AAOO,MAAM,gBAAgB;AAAA,EACnB;AAAA,EAER,WAAW,CAAC,aAAqB;AAAA,IAC/B,KAAK,cAAc;AAAA;AAAA,EAMrB,MAAM,GAAkB;AAAA,IAEtB,MAAM,eAAoB,WAAK,KAAK,aAAa,eAAe;AAAA,IAChE,IAAO,eAAW,YAAY,GAAG;AAAA,MAC/B,OAAO,KAAK,sBAAsB,YAAY;AAAA,IAChD;AAAA,IAGA,MAAM,kBAAuB,WAAK,KAAK,aAAa,UAAU,eAAe;AAAA,IAC7E,IAAO,eAAW,eAAe,GAAG;AAAA,MAClC,OAAO,KAAK,UAAU,eAAe;AAAA,IACvC;AAAA,IAGA,MAAM,kBAAuB,WAAK,KAAK,aAAa,cAAc;AAAA,IAClE,IAAO,eAAW,eAAe,GAAG;AAAA,MAClC,MAAM,cAAc,KAAK,MAAS,iBAAa,iBAAiB,OAAO,CAAC;AAAA,MAExE,IAAI,YAAY,cAAc,YAAY,YAAY,iBAAiB,UAAU;AAAA,QAC/E,OAAO,KAAK,eAAe,WAAW;AAAA,MACxC;AAAA,MAGA,MAAM,OAAO;AAAA,WACR,YAAY;AAAA,WACZ,YAAY;AAAA,MACjB;AAAA,MAEA,IACE,MAAM,MACN,OAAO,gBACP,MAAM,UACN,MAAM,WACN,MAAM,WACN,MAAM,QACN,MAAM,KACN;AAAA,QACA,OAAO,KAAK,mBAAmB,WAAW;AAAA,MAC5C;AAAA,MAIA,MAAM,eAAe,KAAK,mBAAmB,WAAW;AAAA,MACxD,IAAI,OAAO,KAAK,aAAa,WAAW,EAAE,SAAS,GAAG;AAAA,QACpD,OAAO;AAAA,MACT;AAAA,IACF,EAAO;AAAA,MAEL,MAAM,eAAe,KAAK,mBAAmB,CAAC,CAAC;AAAA,MAC/C,IAAI,OAAO,KAAK,aAAa,WAAW,EAAE,SAAS,GAAG;AAAA,QACpD,OAAO;AAAA,MACT;AAAA;AAAA,IAIF,OAAO,KAAK,qBAAqB;AAAA;AAAA,EAM3B,qBAAqB,CAAC,cAAqC;AAAA,IACjE,MAAM,WAAW,KAAK,MAAS,iBAAa,cAAc,OAAO,CAAC;AAAA,IAClE,MAAM,cAAsC,CAAC;AAAA,IAE7C,KAAK,sBAAsB,UAAU,WAAW;AAAA,IAChD,KAAK,yBAAyB,UAAU,WAAW;AAAA,IACnD,KAAK,iBAAiB,UAAU,WAAW;AAAA,IAC3C,KAAK,mBAAmB,UAAU,WAAW;AAAA,IAE7C,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA,UAAU;AAAA,QACR,MAAM,SAAS;AAAA,QACf,SAAS,SAAS;AAAA,QAClB,aAAa,SAAS;AAAA,MACxB;AAAA,IACF;AAAA;AAAA,EAMM,qBAAqB,CAC3B,UACA,aACM;AAAA,IACN,MAAM,aAAa,SAAS;AAAA,IAC5B,IAAI,CAAC;AAAA,MAAY;AAAA,IAEjB,MAAM,OACH,WAAW,qBACV,WAAW,aAAsC,MAClD,WAAW;AAAA,IACd,IAAI,MAAM;AAAA,MACR,YAAY,gBAAgB,KAAK,eAAe,IAAI;AAAA,IACtD;AAAA;AAAA,EAMM,wBAAwB,CAC9B,UACA,aACM;AAAA,IACN,MAAM,iBAAiB,SAAS;AAAA,IAChC,IAAI,CAAC,kBAAkB,eAAe,WAAW;AAAA,MAAG;AAAA,IAEpD,MAAM,iBAAiB,eAAe;AAAA,IACtC,IAAI,CAAC;AAAA,MAAgB;AAAA,IAErB,MAAM,cAAe,eAAe,QAAiC;AAAA,IACrE,IAAI,aAAa;AAAA,MACf,YAAY,aAAa,KAAK,eAAe,WAAW;AAAA,IAC1D;AAAA;AAAA,EAMM,gBAAgB,CACtB,UACA,aACM;AAAA,IACN,MAAM,SAAS,SAAS;AAAA,IACxB,MAAM,gBAAgB,SAAS;AAAA,IAC/B,MAAM,QACH,SAAS,oBACT,gBAAgB;AAAA,IACnB,IAAI,CAAC;AAAA,MAAO;AAAA,IAEZ,MAAM,SAAS,KAAK,iBAAsB,WAAK,KAAK,aAAa,KAAK,CAAC;AAAA,IACvE,IAAI,QAAQ;AAAA,MACV,YAAY,WAAW;AAAA,IACzB;AAAA;AAAA,EAMM,kBAAkB,CACxB,UACA,aACM;AAAA,IACN,MAAM,YAAY,SAAS;AAAA,IAC3B,MAAM,UACH,YAAY,WACZ,SAAS;AAAA,IACZ,IAAI,CAAC;AAAA,MAAS;AAAA,IAEd,MAAM,SAAS,KAAK,iBAAsB,WAAK,KAAK,aAAa,OAAO,CAAC;AAAA,IACzE,IAAI,QAAQ;AAAA,MACV,YAAY,aAAa;AAAA,IAC3B;AAAA;AAAA,EAMM,SAAS,CAAC,cAAqC;AAAA,IACrD,MAAM,WAAW,KAAK,MAAS,iBAAa,cAAc,OAAO,CAAC;AAAA,IAClE,MAAM,cAAsC,CAAC;AAAA,IAG7C,MAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,WAAW,aAAa,cAAc;AAAA,MACpC,MAAM,WAAgB,WAAK,KAAK,aAAa,SAAS;AAAA,MACtD,IAAO,eAAW,QAAQ,GAAG;AAAA,QAC3B,YAAY,YAAY;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IAGA,MAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,WAAW,aAAa,kBAAkB;AAAA,MACxC,MAAM,WAAgB,WAAK,KAAK,aAAa,SAAS;AAAA,MACtD,IAAO,eAAW,QAAQ,GAAG;AAAA,QAC3B,YAAY,YAAY;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA,gBAAgB;AAAA,QACd,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,MACA,UAAU;AAAA,QACR,MAAM,SAAS,QAAQ,SAAS;AAAA,QAChC,SAAS;AAAA,QACT,aAAa,SAAS;AAAA,MACxB;AAAA,IACF;AAAA;AAAA,EAMM,cAAc,CAAC,aAAqD;AAAA,IAC1E,MAAM,cAAsC,CAAC;AAAA,IAG7C,MAAM,iBAAiB;AAAA,MACrB,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,OAAO,CAAC,MAAmB,QAAQ,CAAC,CAAC;AAAA,IAEvC,WAAW,aAAa,gBAAgB;AAAA,MACtC,MAAM,WAAgB,WAAK,KAAK,aAAa,SAAS;AAAA,MACtD,IAAO,eAAW,QAAQ,KAAQ,eAAW,SAAS,QAAQ,SAAS,KAAK,CAAC,GAAG;AAAA,QAC9E,YAAY,UAAa,eAAW,QAAQ,IAAI,WAAW,SAAS,QAAQ,SAAS,KAAK;AAAA,QAC1F;AAAA,MACF;AAAA,IACF;AAAA,IAGA,MAAM,qBAAqB;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,WAAW,aAAa,oBAAoB;AAAA,MAC1C,MAAM,WAAgB,WAAK,KAAK,aAAa,SAAS;AAAA,MACtD,IAAO,eAAW,QAAQ,GAAG;AAAA,QAC3B,YAAY,cAAc;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA,MACA,UAAU;AAAA,QACR,MAAM,YAAY;AAAA,QAClB,SAAS,YAAY;AAAA,QACrB,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAAA;AAAA,EAMM,kBAAkB,CAAC,aAAqD;AAAA,IAC9E,MAAM,cAAsC,CAAC;AAAA,IAC7C,MAAM,iBAAyC,CAAC;AAAA,IAGhD,MAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,gBAAgB,KAAK,sBAAsB,gBAAgB;AAAA,IACjE,IAAI,cAAc,SAAS,GAAG;AAAA,MAC5B,MAAM,OAAO,cAAc;AAAA,MAC3B,IAAI,MAAM;AAAA,QACR,YAAY,YAAY,KAAK;AAAA,QAG7B,IAAI,KAAK,cAAc;AAAA,UACrB,eAAe,YAAY;AAAA,QAC7B,EAAO,SAAI,KAAK,SAAS;AAAA,UACvB,eAAe,YAAY;AAAA,QAC7B,EAAO;AAAA,UACL,eAAe,YAAY;AAAA;AAAA,MAE/B;AAAA,IACF;AAAA,IAGA,MAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,WAAW,aAAa,kBAAkB;AAAA,MACxC,MAAM,WAAgB,WAAK,KAAK,aAAa,SAAS;AAAA,MACtD,IAAO,eAAW,QAAQ,GAAG;AAAA,QAC3B,YAAY,YAAY;AAAA,QACxB,eAAe,YAAY;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA,gBACE,OAAO,KAAK,cAAc,EAAE,SAAS,IACjC,iBACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,MACN,UAAU;AAAA,QACR,MAAM,YAAY;AAAA,QAClB,SAAS,YAAY;AAAA,QACrB,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAAA;AAAA,EAOM,qBAAqB,CAAC,YAM3B;AAAA,IACD,MAAM,SAMD,CAAC;AAAA,IAEN,WAAW,aAAa,YAAY;AAAA,MAClC,MAAM,WAAgB,WAAK,KAAK,aAAa,SAAS;AAAA,MACtD,IAAI,CAAI,eAAW,QAAQ;AAAA,QAAG;AAAA,MAE9B,IAAI;AAAA,QACF,MAAM,UAAa,iBAAa,UAAU,OAAO;AAAA,QACjD,MAAM,WAAW,KAAK,uBAAuB,SAAS,SAAS;AAAA,QAE/D,IAAI,SAAS,QAAQ,GAAG;AAAA,UACtB,OAAO,KAAK;AAAA,YACV,MAAM;AAAA,YACN,OAAO,SAAS;AAAA,YAChB,cAAc,SAAS;AAAA,YACvB,SAAS,SAAS;AAAA,YAClB,WAAW,SAAS;AAAA,UACtB,CAAC;AAAA,QACH;AAAA,QACA,OAAO,QAAQ;AAAA,IAGnB;AAAA,IAGA,OAAO,OAAO,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAAA;AAAA,EAMxC,sBAAsB,CAC5B,SACA,WAMA;AAAA,IACA,MAAM,WAAW,KAAK,kBAAkB;AAAA,IACxC,MAAM,oBAAoB,KAAK,0BAA0B,SAAS,QAAQ;AAAA,IAE1E,MAAM,kBAAkB,KAAK,0BAA0B,OAAO;AAAA,IAC9D,MAAM,gBAAgB,KAAK,cAAc,SAAS;AAAA,IAElD,OAAO;AAAA,MACL,OAAO,kBAAkB,QAAQ,kBAAkB;AAAA,MACnD,cAAc,kBAAkB;AAAA,MAChC,SAAS,kBAAkB;AAAA,MAC3B,WAAW,kBAAkB;AAAA,IAC/B;AAAA;AAAA,EAMM,iBAAiB,GAAG;AAAA,IAC1B,OAAO;AAAA,MAEL,cAAc;AAAA,MACd,SAAS;AAAA,MAGT,UAAU;AAAA,MACV,UAAU;AAAA,MAGV,UAAU;AAAA,MAGV,QAAQ;AAAA,MACR,cAAc;AAAA,MAGd,SAAS;AAAA,MACT,WAAW;AAAA,MAGX,YAAY;AAAA,MAGZ,WAAW;AAAA,IACb;AAAA;AAAA,EAMM,yBAAyB,CAC/B,SACA,UAMA;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ,IAAI,eAAe;AAAA,IACnB,IAAI,UAAU;AAAA,IACd,IAAI,YAA2B;AAAA,IAE/B,MAAM,WAAW,KAAK,kBAAkB,SAAS,QAAQ;AAAA,IACzD,SAAS,SAAS;AAAA,IAClB,eAAe,gBAAgB,SAAS;AAAA,IACxC,UAAU,WAAW,SAAS;AAAA,IAC9B,YAAY,aAAa,SAAS;AAAA,IAElC,MAAM,UAAU,KAAK,wBAAwB,SAAS,QAAQ;AAAA,IAC9D,SAAS,QAAQ;AAAA,IACjB,eAAe,gBAAgB,QAAQ;AAAA,IACvC,YAAY,aAAa,QAAQ;AAAA,IAEjC,MAAM,YAAY,KAAK,oBAAoB,SAAS,QAAQ;AAAA,IAC5D,SAAS,UAAU;AAAA,IACnB,eAAe,gBAAgB,UAAU;AAAA,IACzC,UAAU,WAAW,UAAU;AAAA,IAC/B,YAAY,aAAa,UAAU;AAAA,IAEnC,MAAM,eAAe,KAAK,qBAAqB,SAAS,UAAU,cAAc,OAAO;AAAA,IACvF,SAAS,aAAa;AAAA,IACtB,eAAe,gBAAgB,aAAa;AAAA,IAC5C,UAAU,WAAW,aAAa;AAAA,IAElC,OAAO,EAAE,OAAO,cAAc,SAAS,UAAU;AAAA;AAAA,EAM3C,iBAAiB,CACvB,SACA,UAMA;AAAA,IACA,IAAI,SAAS,aAAa,KAAK,OAAO,GAAG;AAAA,MACvC,OAAO,EAAE,OAAO,IAAI,cAAc,MAAM,SAAS,MAAM,WAAW,MAAM;AAAA,IAC1E;AAAA,IAEA,IAAI,SAAS,QAAQ,KAAK,OAAO,GAAG;AAAA,MAClC,OAAO,EAAE,OAAO,IAAI,cAAc,OAAO,SAAS,MAAM,WAAW,MAAM;AAAA,IAC3E;AAAA,IAEA,OAAO,EAAE,OAAO,GAAG,cAAc,OAAO,SAAS,OAAO,WAAW,KAAK;AAAA;AAAA,EAMlE,uBAAuB,CAC7B,SACA,UAKA;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ,IAAI,eAAe;AAAA,IACnB,IAAI,YAA2B;AAAA,IAE/B,IAAI,SAAS,SAAS,KAAK,OAAO,KAAK,SAAS,SAAS,KAAK,OAAO,GAAG;AAAA,MACtE,SAAS;AAAA,MACT,eAAe;AAAA,MACf,YAAY;AAAA,IACd;AAAA,IAEA,IAAI,SAAS,SAAS,KAAK,OAAO,GAAG;AAAA,MACnC,SAAS;AAAA,MACT,eAAe;AAAA,MACf,YAAY,aAAa;AAAA,IAC3B;AAAA,IAEA,OAAO,EAAE,OAAO,cAAc,UAAU;AAAA;AAAA,EAMlC,mBAAmB,CACzB,SACA,UAMA;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ,IAAI,eAAe;AAAA,IACnB,IAAI,UAAU;AAAA,IACd,IAAI,YAA2B;AAAA,IAE/B,IAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,aAAa,KAAK,OAAO,GAAG;AAAA,MACxE,SAAS;AAAA,MACT,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AAAA,IAEA,IAAI,SAAS,aAAa,KAAK,OAAO,KAAK,SAAS,UAAU,KAAK,OAAO,GAAG;AAAA,MAC3E,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,IAEA,IAAI,SAAS,QAAQ,KAAK,OAAO,GAAG;AAAA,MAClC,SAAS;AAAA,MACT,UAAU;AAAA,MACV,YAAY,aAAa;AAAA,IAC3B;AAAA,IAEA,IAAI,SAAS,UAAU,KAAK,OAAO,GAAG;AAAA,MACpC,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,IAEA,OAAO,EAAE,OAAO,cAAc,SAAS,UAAU;AAAA;AAAA,EAM3C,oBAAoB,CAC1B,SACA,UACA,cACA,SAKA;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ,IAAI,kBAAkB;AAAA,IACtB,IAAI,aAAa;AAAA,IAEjB,IAAI,SAAS,WAAW,KAAK,OAAO,KAAK,CAAC,SAAS;AAAA,MACjD,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IAEA,IAAI,SAAS,UAAU,KAAK,OAAO,KAAK,CAAC,cAAc;AAAA,MACrD,SAAS;AAAA,MACT,kBAAkB;AAAA,IACpB;AAAA,IAEA,OAAO,EAAE,OAAO,cAAc,iBAAiB,SAAS,WAAW;AAAA;AAAA,EAM7D,yBAAyB,CAAC,SAAyB;AAAA,IACzD,IAAI,QAAQ;AAAA,IAEZ,IAAI,gBAAgB,KAAK,OAAO,GAAG;AAAA,MACjC,SAAS;AAAA,IACX;AAAA,IAEA,IAAI,mBAAmB,KAAK,OAAO,GAAG;AAAA,MACpC,SAAS;AAAA,IACX;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,aAAa,CAAC,WAA2B;AAAA,IAC/C,IAAI,QAAQ;AAAA,IAEZ,IAAI,UAAU,SAAS,QAAQ,GAAG;AAAA,MAChC,SAAS;AAAA,IACX;AAAA,IAEA,IAAI,cAAc,kBAAkB,cAAc,gBAAgB;AAAA,MAChE,SAAS;AAAA,IACX;AAAA,IAEA,OAAO;AAAA;AAAA,EAOD,oBAAoB,GAAkB;AAAA,IAC5C,MAAM,cAAsC,CAAC;AAAA,IAG7C,MAAM,eAAoB,WAAK,KAAK,aAAa,eAAe;AAAA,IAChE,IAAO,eAAW,YAAY,GAAG;AAAA,MAC/B,IAAI;AAAA,QACF,MAAM,WAAW,KAAK,MAAS,iBAAa,cAAc,OAAO,CAAC;AAAA,QAGlE,IAAI,SAAS,SAAS,MAAM,QAAQ,SAAS,KAAK,GAAG;AAAA,UACnD,SAAS,MAAM,QAAQ,CAAC,MAAc,QAAgB;AAAA,YACpD,MAAM,WAAgB,WAAK,KAAK,aAAa,IAAI;AAAA,YACjD,IAAO,eAAW,QAAQ,GAAG;AAAA,cAC3B,YAAY,SAAS,MAAM,OAAO;AAAA,YACpC;AAAA,WACD;AAAA,QACH;AAAA,QACA,OAAO,QAAQ;AAAA,IAGnB;AAAA,IAGA,IAAI,OAAO,KAAK,WAAW,EAAE,WAAW,GAAG;AAAA,MACzC,MAAM,gBAAgB,CAAC,gBAAgB,eAAe,cAAc,YAAY,SAAS;AAAA,MAEzF,WAAW,aAAa,eAAe;AAAA,QACrC,MAAM,WAAgB,WAAK,KAAK,aAAa,SAAS;AAAA,QACtD,IAAO,eAAW,QAAQ,GAAG;AAAA,UAC3B,YAAY,UAAU;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAGA,MAAM,kBAAuB,WAAK,KAAK,aAAa,cAAc;AAAA,IAClE,IAAI,WAAsC,EAAE,MAAM,kBAAkB;AAAA,IAEpE,IAAO,eAAW,eAAe,GAAG;AAAA,MAClC,IAAI;AAAA,QACF,MAAM,cAAc,KAAK,MAAS,iBAAa,iBAAiB,OAAO,CAAC;AAAA,QACxE,WAAW;AAAA,UACT,MAAM,YAAY;AAAA,UAClB,SAAS,YAAY;AAAA,UACrB,aAAa,YAAY;AAAA,QAC3B;AAAA,QACA,OAAO,QAAQ;AAAA,IAGnB;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA;AAAA,EAMM,cAAc,CAAC,cAA8B;AAAA,IACnD,MAAM,aAAa;AAAA,MACZ,WAAK,KAAK,aAAa,YAAY;AAAA,MACnC,WAAK,KAAK,aAAa,aAAa,QAAQ,SAAS,KAAK,CAAC;AAAA,MAC3D,WAAK,KAAK,aAAa,OAAO,YAAY;AAAA,MAC1C,WAAK,KAAK,aAAa,OAAO,aAAa,QAAQ,SAAS,KAAK,CAAC;AAAA,MAClE,WAAK,KAAK,aAAa,OAAO,aAAa,QAAQ,SAAS,MAAM,CAAC;AAAA,IAC1E;AAAA,IAEA,WAAW,aAAa,YAAY;AAAA,MAClC,IAAO,eAAW,SAAS,GAAG;AAAA,QAC5B,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAY,WAAK,KAAK,aAAa,YAAY;AAAA;AAAA,EAMzC,gBAAgB,CAAC,UAAiC;AAAA,IACxD,IAAI,CAAI,eAAW,QAAQ,GAAG;AAAA,MAC5B,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,OAAU,iBAAa,UAAU,OAAO;AAAA,IAC9C,MAAM,cAAc,KAAK,MAAM,mCAAmC;AAAA,IAElE,IAAI,cAAc,IAAI;AAAA,MACpB,MAAM,aAAa,YAAY;AAAA,MAC/B,MAAM,WAAgB,cAAa,cAAQ,QAAQ,GAAG,UAAU;AAAA,MAEhE,IAAO,eAAW,QAAQ;AAAA,QAAG,OAAO;AAAA,MACpC,IAAO,eAAW,SAAS,QAAQ,SAAS,KAAK,CAAC,GAAG;AAAA,QACnD,OAAO,SAAS,QAAQ,SAAS,KAAK;AAAA,MACxC;AAAA,MACA,IAAO,eAAW,SAAS,QAAQ,SAAS,MAAM,CAAC,GAAG;AAAA,QACpD,OAAO,SAAS,QAAQ,SAAS,MAAM;AAAA,MACzC;AAAA,IACF;AAAA,IAGA,MAAM,WAAgB,eAAS,UAAU,OAAO;AAAA,IAChD,MAAM,MAAW,cAAQ,QAAQ;AAAA,IAEjC,MAAM,aAAa;AAAA,MACZ,WAAK,KAAK,GAAG,aAAa;AAAA,MAC1B,WAAK,KAAK,GAAG,cAAc;AAAA,MAC3B,WAAK,KAAK,GAAG,aAAa;AAAA,MAC1B,WAAK,KAAK,UAAU;AAAA,MACpB,WAAK,KAAK,WAAW;AAAA,IAC5B;AAAA,IAEA,WAAW,aAAa,YAAY;AAAA,MAClC,IAAO,eAAW,SAAS,GAAG;AAAA,QAC5B,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAEX;AAKO,SAAS,mBAAmB,CAAC,aAAoC;AAAA,EACtE,MAAM,WAAW,IAAI,gBAAgB,WAAW;AAAA,EAChD,OAAO,SAAS,OAAO;AAAA;AAAA;;;ACtyBzB,SAAS,sBAAsB,CAAC,UAAU,OAAO,OAAO,MAAM,GAAG;AAAA,EAC7D,IAAI,SAAS;AAAA,IACT,MAAM,IAAI,UAAU,gCAAgC;AAAA,EACxD,IAAI,SAAS,OAAO,CAAC;AAAA,IACjB,MAAM,IAAI,UAAU,+CAA+C;AAAA,EACvE,IAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAA,IAC5E,MAAM,IAAI,UAAU,yEAAyE;AAAA,EACjG,OAAO,SAAS,MAAM,EAAE,KAAK,UAAU,KAAK,IAAI,IAAK,EAAE,QAAQ,QAAS,MAAM,IAAI,UAAU,KAAK,GAAG;AAAA;AAExG,SAAS,sBAAsB,CAAC,UAAU,OAAO,MAAM,GAAG;AAAA,EACtD,IAAI,SAAS,OAAO,CAAC;AAAA,IACjB,MAAM,IAAI,UAAU,+CAA+C;AAAA,EACvE,IAAI,OAAO,UAAU,aAAa,aAAa,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;AAAA,IAC5E,MAAM,IAAI,UAAU,0EAA0E;AAAA,EAClG,OAAO,SAAS,MAAM,IAAI,SAAS,MAAM,EAAE,KAAK,QAAQ,IAAI,IAAI,EAAE,QAAQ,MAAM,IAAI,QAAQ;AAAA;;;ACVzF,IAAI,QAAQ,QAAS,GAAG;AAAA,EAC3B,QAAQ,WAAW;AAAA,EACnB,IAAI,QAAQ,YAAY;AAAA,IACpB,QAAQ,OAAO,WAAW,KAAK,MAAM;AAAA,IACrC,OAAO,OAAO,WAAW;AAAA,EAC7B;AAAA,EACA,MAAM,KAAK,IAAI,WAAW,CAAC;AAAA,EAC3B,MAAM,aAAa,SAAS,MAAM,OAAO,gBAAgB,EAAE,EAAE,KAAK,MAAO,KAAK,OAAO,IAAI,MAAQ;AAAA,EACjG,OAAO,uCAAuC,QAAQ,UAAU,CAAC,OAAO,CAAC,IAAK,WAAW,IAAK,MAAO,CAAC,IAAI,GAAM,SAAS,EAAE,CAAC;AAAA;;;ACXzH,SAAS,YAAY,CAAC,KAAK;AAAA,EAC9B,OAAQ,OAAO,QAAQ,YACnB,QAAQ,UAEN,UAAU,QAAO,IAAI,SAAS,iBAE3B,aAAa,QAAO,OAAO,IAAI,OAAO,EAAE,SAAS,+BAA+B;AAAA;AAEtF,IAAM,cAAc,CAAC,QAAQ;AAAA,EAChC,IAAI,eAAe;AAAA,IACf,OAAO;AAAA,EACX,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAAA,IACzC,IAAI;AAAA,MACA,IAAI,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM,kBAAkB;AAAA,QAE1D,MAAM,QAAQ,IAAI,MAAM,IAAI,SAAS,IAAI,QAAQ,EAAE,OAAO,IAAI,MAAM,IAAI,CAAC,CAAC;AAAA,QAC1E,IAAI,IAAI;AAAA,UACJ,MAAM,QAAQ,IAAI;AAAA,QAEtB,IAAI,IAAI,SAAS,CAAC,MAAM;AAAA,UACpB,MAAM,QAAQ,IAAI;AAAA,QACtB,IAAI,IAAI;AAAA,UACJ,MAAM,OAAO,IAAI;AAAA,QACrB,OAAO;AAAA,MACX;AAAA,MAEJ,MAAM;AAAA,IACN,IAAI;AAAA,MACA,OAAO,IAAI,MAAM,KAAK,UAAU,GAAG,CAAC;AAAA,MAExC,MAAM;AAAA,EACV;AAAA,EACA,OAAO,IAAI,MAAM,GAAG;AAAA;;;AC/BjB,MAAM,uBAAuB,MAAM;AAC1C;AAAA;AACO,MAAM,iBAAiB,eAAe;AAAA,EACzC,WAAW,CAAC,QAAQ,OAAO,SAAS,SAAS;AAAA,IACzC,MAAM,GAAG,SAAS,YAAY,QAAQ,OAAO,OAAO,GAAG;AAAA,IACvD,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,YAAY,SAAS,IAAI,YAAY;AAAA,IAC1C,KAAK,QAAQ;AAAA;AAAA,SAEV,WAAW,CAAC,QAAQ,OAAO,SAAS;AAAA,IACvC,MAAM,MAAM,OAAO,UACf,OAAO,MAAM,YAAY,WACrB,MAAM,UACJ,KAAK,UAAU,MAAM,OAAO,IAChC,QAAQ,KAAK,UAAU,KAAK,IACxB;AAAA,IACV,IAAI,UAAU,KAAK;AAAA,MACf,OAAO,GAAG,UAAU;AAAA,IACxB;AAAA,IACA,IAAI,QAAQ;AAAA,MACR,OAAO,GAAG;AAAA,IACd;AAAA,IACA,IAAI,KAAK;AAAA,MACL,OAAO;AAAA,IACX;AAAA,IACA,OAAO;AAAA;AAAA,SAEJ,QAAQ,CAAC,QAAQ,eAAe,SAAS,SAAS;AAAA,IACrD,IAAI,CAAC,UAAU,CAAC,SAAS;AAAA,MACrB,OAAO,IAAI,mBAAmB,EAAE,SAAS,OAAO,YAAY,aAAa,EAAE,CAAC;AAAA,IAChF;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,IAAI,WAAW,KAAK;AAAA,MAChB,OAAO,IAAI,gBAAgB,QAAQ,OAAO,SAAS,OAAO;AAAA,IAC9D;AAAA,IACA,IAAI,WAAW,KAAK;AAAA,MAChB,OAAO,IAAI,oBAAoB,QAAQ,OAAO,SAAS,OAAO;AAAA,IAClE;AAAA,IACA,IAAI,WAAW,KAAK;AAAA,MAChB,OAAO,IAAI,sBAAsB,QAAQ,OAAO,SAAS,OAAO;AAAA,IACpE;AAAA,IACA,IAAI,WAAW,KAAK;AAAA,MAChB,OAAO,IAAI,cAAc,QAAQ,OAAO,SAAS,OAAO;AAAA,IAC5D;AAAA,IACA,IAAI,WAAW,KAAK;AAAA,MAChB,OAAO,IAAI,cAAc,QAAQ,OAAO,SAAS,OAAO;AAAA,IAC5D;AAAA,IACA,IAAI,WAAW,KAAK;AAAA,MAChB,OAAO,IAAI,yBAAyB,QAAQ,OAAO,SAAS,OAAO;AAAA,IACvE;AAAA,IACA,IAAI,WAAW,KAAK;AAAA,MAChB,OAAO,IAAI,eAAe,QAAQ,OAAO,SAAS,OAAO;AAAA,IAC7D;AAAA,IACA,IAAI,UAAU,KAAK;AAAA,MACf,OAAO,IAAI,oBAAoB,QAAQ,OAAO,SAAS,OAAO;AAAA,IAClE;AAAA,IACA,OAAO,IAAI,SAAS,QAAQ,OAAO,SAAS,OAAO;AAAA;AAE3D;AAAA;AACO,MAAM,0BAA0B,SAAS;AAAA,EAC5C,WAAW,GAAG,YAAY,CAAC,GAAG;AAAA,IAC1B,MAAM,WAAW,WAAW,WAAW,wBAAwB,SAAS;AAAA;AAEhF;AAAA;AACO,MAAM,2BAA2B,SAAS;AAAA,EAC7C,WAAW,GAAG,SAAS,SAAS;AAAA,IAC5B,MAAM,WAAW,WAAW,WAAW,qBAAqB,SAAS;AAAA,IAGrE,IAAI;AAAA,MACA,KAAK,QAAQ;AAAA;AAEzB;AAAA;AACO,MAAM,kCAAkC,mBAAmB;AAAA,EAC9D,WAAW,GAAG,YAAY,CAAC,GAAG;AAAA,IAC1B,MAAM,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA;AAE1D;AAAA;AACO,MAAM,wBAAwB,SAAS;AAC9C;AAAA;AACO,MAAM,4BAA4B,SAAS;AAClD;AAAA;AACO,MAAM,8BAA8B,SAAS;AACpD;AAAA;AACO,MAAM,sBAAsB,SAAS;AAC5C;AAAA;AACO,MAAM,sBAAsB,SAAS;AAC5C;AAAA;AACO,MAAM,iCAAiC,SAAS;AACvD;AAAA;AACO,MAAM,uBAAuB,SAAS;AAC7C;AAAA;AACO,MAAM,4BAA4B,SAAS;AAClD;;;AC7FA,IAAM,yBAAyB;AACxB,IAAM,gBAAgB,CAAC,QAAQ;AAAA,EAClC,OAAO,uBAAuB,KAAK,GAAG;AAAA;AAEnC,IAAI,UAAU,CAAC,SAAU,UAAU,MAAM,SAAU,QAAQ,GAAG;AAC9D,IAAI,kBAAkB;AAEtB,SAAS,QAAQ,CAAC,GAAG;AAAA,EACxB,IAAI,OAAO,MAAM,UAAU;AAAA,IACvB,OAAO,CAAC;AAAA,EACZ;AAAA,EACA,OAAO,KAAK,CAAC;AAAA;AAGV,SAAS,UAAU,CAAC,KAAK;AAAA,EAC5B,IAAI,CAAC;AAAA,IACD,OAAO;AAAA,EACX,WAAW,MAAM;AAAA,IACb,OAAO;AAAA,EACX,OAAO;AAAA;AAGJ,SAAS,MAAM,CAAC,KAAK,KAAK;AAAA,EAC7B,OAAO,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG;AAAA;AAWjD,IAAM,0BAA0B,CAAC,MAAM,MAAM;AAAA,EAChD,IAAI,OAAO,MAAM,YAAY,CAAC,OAAO,UAAU,CAAC,GAAG;AAAA,IAC/C,MAAM,IAAI,eAAe,GAAG,yBAAyB;AAAA,EACzD;AAAA,EACA,IAAI,IAAI,GAAG;AAAA,IACP,MAAM,IAAI,eAAe,GAAG,iCAAiC;AAAA,EACjE;AAAA,EACA,OAAO;AAAA;AAyCJ,IAAM,WAAW,CAAC,SAAS;AAAA,EAC9B,IAAI;AAAA,IACA,OAAO,KAAK,MAAM,IAAI;AAAA,IAE1B,OAAO,KAAK;AAAA,IACR;AAAA;AAAA;;;ACzFD,IAAM,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;;;ACDtE,IAAM,UAAU;;;ACEhB,IAAM,qBAAqB,MAAM;AAAA,EACpC,OAEA,OAAO,WAAW,eAEd,OAAO,OAAO,aAAa,eAE3B,OAAO,cAAc;AAAA;AAK7B,SAAS,mBAAmB,GAAG;AAAA,EAC3B,IAAI,OAAO,SAAS,eAAe,KAAK,SAAS,MAAM;AAAA,IACnD,OAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,gBAAgB,aAAa;AAAA,IACpC,OAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,UAAU,SAAS,KAAK,OAAO,WAAW,YAAY,cAAc,WAAW,UAAU,CAAC,MAAM,oBAAoB;AAAA,IAC3H,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAEX,IAAM,wBAAwB,MAAM;AAAA,EAChC,MAAM,mBAAmB,oBAAoB;AAAA,EAC7C,IAAI,qBAAqB,QAAQ;AAAA,IAC7B,OAAO;AAAA,MACH,oBAAoB;AAAA,MACpB,+BAA+B;AAAA,MAC/B,kBAAkB,kBAAkB,KAAK,MAAM,EAAE;AAAA,MACjD,oBAAoB,cAAc,KAAK,MAAM,IAAI;AAAA,MACjD,uBAAuB;AAAA,MACvB,+BAA+B,OAAO,KAAK,YAAY,WAAW,KAAK,UAAU,KAAK,SAAS,QAAQ;AAAA,IAC3G;AAAA,EACJ;AAAA,EACA,IAAI,OAAO,gBAAgB,aAAa;AAAA,IACpC,OAAO;AAAA,MACH,oBAAoB;AAAA,MACpB,+BAA+B;AAAA,MAC/B,kBAAkB;AAAA,MAClB,oBAAoB,SAAS;AAAA,MAC7B,uBAAuB;AAAA,MACvB,+BAA+B,WAAW,QAAQ;AAAA,IACtD;AAAA,EACJ;AAAA,EAEA,IAAI,qBAAqB,QAAQ;AAAA,IAC7B,OAAO;AAAA,MACH,oBAAoB;AAAA,MACpB,+BAA+B;AAAA,MAC/B,kBAAkB,kBAAkB,WAAW,QAAQ,YAAY,SAAS;AAAA,MAC5E,oBAAoB,cAAc,WAAW,QAAQ,QAAQ,SAAS;AAAA,MACtE,uBAAuB;AAAA,MACvB,+BAA+B,WAAW,QAAQ,WAAW;AAAA,IACjE;AAAA,EACJ;AAAA,EACA,MAAM,cAAc,eAAe;AAAA,EACnC,IAAI,aAAa;AAAA,IACb,OAAO;AAAA,MACH,oBAAoB;AAAA,MACpB,+BAA+B;AAAA,MAC/B,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,uBAAuB,WAAW,YAAY;AAAA,MAC9C,+BAA+B,YAAY;AAAA,IAC/C;AAAA,EACJ;AAAA,EAEA,OAAO;AAAA,IACH,oBAAoB;AAAA,IACpB,+BAA+B;AAAA,IAC/B,kBAAkB;AAAA,IAClB,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,IACvB,+BAA+B;AAAA,EACnC;AAAA;AAGJ,SAAS,cAAc,GAAG;AAAA,EACtB,IAAI,OAAO,cAAc,eAAe,CAAC,WAAW;AAAA,IAChD,OAAO;AAAA,EACX;AAAA,EAEA,MAAM,kBAAkB;AAAA,IACpB,EAAE,KAAK,QAAQ,SAAS,uCAAuC;AAAA,IAC/D,EAAE,KAAK,MAAM,SAAS,uCAAuC;AAAA,IAC7D,EAAE,KAAK,MAAM,SAAS,6CAA6C;AAAA,IACnE,EAAE,KAAK,UAAU,SAAS,yCAAyC;AAAA,IACnE,EAAE,KAAK,WAAW,SAAS,0CAA0C;AAAA,IACrE,EAAE,KAAK,UAAU,SAAS,oEAAoE;AAAA,EAClG;AAAA,EAEA,aAAa,KAAK,aAAa,iBAAiB;AAAA,IAC5C,MAAM,QAAQ,QAAQ,KAAK,UAAU,SAAS;AAAA,IAC9C,IAAI,OAAO;AAAA,MACP,MAAM,QAAQ,MAAM,MAAM;AAAA,MAC1B,MAAM,QAAQ,MAAM,MAAM;AAAA,MAC1B,MAAM,QAAQ,MAAM,MAAM;AAAA,MAC1B,OAAO,EAAE,SAAS,KAAK,SAAS,GAAG,SAAS,SAAS,QAAQ;AAAA,IACjE;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAEX,IAAM,gBAAgB,CAAC,SAAS;AAAA,EAK5B,IAAI,SAAS;AAAA,IACT,OAAO;AAAA,EACX,IAAI,SAAS,YAAY,SAAS;AAAA,IAC9B,OAAO;AAAA,EACX,IAAI,SAAS;AAAA,IACT,OAAO;AAAA,EACX,IAAI,SAAS,aAAa,SAAS;AAAA,IAC/B,OAAO;AAAA,EACX,IAAI;AAAA,IACA,OAAO,SAAS;AAAA,EACpB,OAAO;AAAA;AAEX,IAAM,oBAAoB,CAAC,aAAa;AAAA,EAMpC,WAAW,SAAS,YAAY;AAAA,EAKhC,IAAI,SAAS,SAAS,KAAK;AAAA,IACvB,OAAO;AAAA,EACX,IAAI,aAAa;AAAA,IACb,OAAO;AAAA,EACX,IAAI,aAAa;AAAA,IACb,OAAO;AAAA,EACX,IAAI,aAAa;AAAA,IACb,OAAO;AAAA,EACX,IAAI,aAAa;AAAA,IACb,OAAO;AAAA,EACX,IAAI,aAAa;AAAA,IACb,OAAO;AAAA,EACX,IAAI,aAAa;AAAA,IACb,OAAO;AAAA,EACX,IAAI;AAAA,IACA,OAAO,SAAS;AAAA,EACpB,OAAO;AAAA;AAEX,IAAI;AACG,IAAM,qBAAqB,MAAM;AAAA,EACpC,OAAQ,qBAAqB,mBAAmB,sBAAsB;AAAA;;;ACzJnE,SAAS,eAAe,GAAG;AAAA,EAC9B,IAAI,OAAO,UAAU,aAAa;AAAA,IAC9B,OAAO;AAAA,EACX;AAAA,EACA,MAAM,IAAI,MAAM,sJAAsJ;AAAA;AAEnK,SAAS,kBAAkB,IAAI,MAAM;AAAA,EACxC,MAAM,iBAAiB,WAAW;AAAA,EAClC,IAAI,OAAO,mBAAmB,aAAa;AAAA,IAGvC,MAAM,IAAI,MAAM,yHAAyH;AAAA,EAC7I;AAAA,EACA,OAAO,IAAI,eAAe,GAAG,IAAI;AAAA;AAE9B,SAAS,kBAAkB,CAAC,UAAU;AAAA,EACzC,IAAI,OAAO,OAAO,iBAAiB,WAAW,SAAS,OAAO,eAAe,IAAI,SAAS,OAAO,UAAU;AAAA,EAC3G,OAAO,mBAAmB;AAAA,IACtB,KAAK,GAAG;AAAA,SACF,KAAI,CAAC,YAAY;AAAA,MACnB,QAAQ,MAAM,UAAU,MAAM,KAAK,KAAK;AAAA,MACxC,IAAI,MAAM;AAAA,QACN,WAAW,MAAM;AAAA,MACrB,EACK;AAAA,QACD,WAAW,QAAQ,KAAK;AAAA;AAAA;AAAA,SAG1B,OAAM,GAAG;AAAA,MACX,MAAM,KAAK,SAAS;AAAA;AAAA,EAE5B,CAAC;AAAA;AAQE,SAAS,6BAA6B,CAAC,QAAQ;AAAA,EAClD,IAAI,OAAO,OAAO;AAAA,IACd,OAAO;AAAA,EACX,MAAM,SAAS,OAAO,UAAU;AAAA,EAChC,OAAO;AAAA,SACG,KAAI,GAAG;AAAA,MACT,IAAI;AAAA,QACA,MAAM,SAAS,MAAM,OAAO,KAAK;AAAA,QACjC,IAAI,QAAQ;AAAA,UACR,OAAO,YAAY;AAAA,QACvB,OAAO;AAAA,QAEX,OAAO,GAAG;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,MAAM;AAAA;AAAA;AAAA,SAGR,OAAM,GAAG;AAAA,MACX,MAAM,gBAAgB,OAAO,OAAO;AAAA,MACpC,OAAO,YAAY;AAAA,MACnB,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,MAAM,OAAO,UAAU;AAAA;AAAA,KAEzC,OAAO,cAAc,GAAG;AAAA,MACrB,OAAO;AAAA;AAAA,EAEf;AAAA;AAMJ,eAAsB,oBAAoB,CAAC,QAAQ;AAAA,EAC/C,IAAI,WAAW,QAAQ,OAAO,WAAW;AAAA,IACrC;AAAA,EACJ,IAAI,OAAO,OAAO,gBAAgB;AAAA,IAC9B,MAAM,OAAO,OAAO,eAAe,EAAE,SAAS;AAAA,IAC9C;AAAA,EACJ;AAAA,EACA,MAAM,SAAS,OAAO,UAAU;AAAA,EAChC,MAAM,gBAAgB,OAAO,OAAO;AAAA,EACpC,OAAO,YAAY;AAAA,EACnB,MAAM;AAAA;;;ACjFH,IAAM,kBAAkB,GAAG,SAAS,WAAW;AAAA,EAClD,OAAO;AAAA,IACH,aAAa;AAAA,MACT,gBAAgB;AAAA,IACpB;AAAA,IACA,MAAM,KAAK,UAAU,IAAI;AAAA,EAC7B;AAAA;;;ACPG,SAAS,WAAW,CAAC,SAAS;AAAA,EACjC,IAAI,SAAS;AAAA,EACb,WAAW,UAAU,SAAS;AAAA,IAC1B,UAAU,OAAO;AAAA,EACrB;AAAA,EACA,MAAM,SAAS,IAAI,WAAW,MAAM;AAAA,EACpC,IAAI,QAAQ;AAAA,EACZ,WAAW,UAAU,SAAS;AAAA,IAC1B,OAAO,IAAI,QAAQ,KAAK;AAAA,IACxB,SAAS,OAAO;AAAA,EACpB;AAAA,EACA,OAAO;AAAA;AAEX,IAAI;AACG,SAAS,UAAU,CAAC,KAAK;AAAA,EAC5B,IAAI;AAAA,EACJ,QAAQ,gBACF,UAAU,IAAI,WAAW,aAAiB,cAAc,QAAQ,OAAO,KAAK,OAAO,IAAK,GAAG;AAAA;AAErG,IAAI;AACG,SAAS,UAAU,CAAC,OAAO;AAAA,EAC9B,IAAI;AAAA,EACJ,QAAQ,gBACF,UAAU,IAAI,WAAW,aAAiB,cAAc,QAAQ,OAAO,KAAK,OAAO,IAAK,KAAK;AAAA;;;ACvBvG,IAAI;AAAJ,IAAyB;AAAA;AASlB,MAAM,YAAY;AAAA,EACrB,WAAW,GAAG;AAAA,IACV,oBAAoB,IAAI,MAAW,SAAC;AAAA,IACpC,iCAAiC,IAAI,MAAW,SAAC;AAAA,IACjD,uBAAuB,MAAM,qBAAqB,IAAI,YAAc,GAAG;AAAA,IACvE,uBAAuB,MAAM,kCAAkC,MAAM,GAAG;AAAA;AAAA,EAE5E,MAAM,CAAC,OAAO;AAAA,IACV,IAAI,SAAS,MAAM;AAAA,MACf,OAAO,CAAC;AAAA,IACZ;AAAA,IACA,MAAM,cAAc,iBAAiB,cAAc,IAAI,WAAW,KAAK,IACjE,OAAO,UAAU,WAAW,WAAW,KAAK,IACxC;AAAA,IACV,uBAAuB,MAAM,qBAAqB,YAAY,CAAC,uBAAuB,MAAM,qBAAqB,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG;AAAA,IACzI,MAAM,QAAQ,CAAC;AAAA,IACf,IAAI;AAAA,IACJ,QAAQ,eAAe,iBAAiB,uBAAuB,MAAM,qBAAqB,GAAG,GAAG,uBAAuB,MAAM,kCAAkC,GAAG,CAAC,MAAM,MAAM;AAAA,MAC3K,IAAI,aAAa,YAAY,uBAAuB,MAAM,kCAAkC,GAAG,KAAK,MAAM;AAAA,QAEtG,uBAAuB,MAAM,kCAAkC,aAAa,OAAO,GAAG;AAAA,QACtF;AAAA,MACJ;AAAA,MAEA,IAAI,uBAAuB,MAAM,kCAAkC,GAAG,KAAK,SACtE,aAAa,UAAU,uBAAuB,MAAM,kCAAkC,GAAG,IAAI,KAAK,aAAa,WAAW;AAAA,QAC3H,MAAM,KAAK,WAAW,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,SAAS,GAAG,uBAAuB,MAAM,kCAAkC,GAAG,IAAI,CAAC,CAAC,CAAC;AAAA,QAClK,uBAAuB,MAAM,qBAAqB,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,SAAS,uBAAuB,MAAM,kCAAkC,GAAG,CAAC,GAAG,GAAG;AAAA,QAC3L,uBAAuB,MAAM,kCAAkC,MAAM,GAAG;AAAA,QACxE;AAAA,MACJ;AAAA,MACA,MAAM,WAAW,uBAAuB,MAAM,kCAAkC,GAAG,MAAM,OAAO,aAAa,YAAY,IAAI,aAAa;AAAA,MAC1I,MAAM,OAAO,WAAW,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,SAAS,GAAG,QAAQ,CAAC;AAAA,MACpG,MAAM,KAAK,IAAI;AAAA,MACf,uBAAuB,MAAM,qBAAqB,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,SAAS,aAAa,KAAK,GAAG,GAAG;AAAA,MAC1I,uBAAuB,MAAM,kCAAkC,MAAM,GAAG;AAAA,IAC5E;AAAA,IACA,OAAO;AAAA;AAAA,EAEX,KAAK,GAAG;AAAA,IACJ,IAAI,CAAC,uBAAuB,MAAM,qBAAqB,GAAG,EAAE,QAAQ;AAAA,MAChE,OAAO,CAAC;AAAA,IACZ;AAAA,IACA,OAAO,KAAK,OAAO;AAAA,CAAI;AAAA;AAE/B;AACA,sBAAsB,IAAI,SAAW,mCAAmC,IAAI;AAE5E,YAAY,gBAAgB,IAAI,IAAI,CAAC;AAAA,GAAM,IAAI,CAAC;AAChD,YAAY,iBAAiB;AAU7B,SAAS,gBAAgB,CAAC,QAAQ,YAAY;AAAA,EAC1C,MAAM,UAAU;AAAA,EAChB,MAAM,WAAW;AAAA,EACjB,SAAS,IAAI,cAAc,EAAG,IAAI,OAAO,QAAQ,KAAK;AAAA,IAClD,IAAI,OAAO,OAAO,SAAS;AAAA,MACvB,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI,GAAG,UAAU,MAAM;AAAA,IACzD;AAAA,IACA,IAAI,OAAO,OAAO,UAAU;AAAA,MACxB,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI,GAAG,UAAU,KAAK;AAAA,IACxD;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,sBAAsB,CAAC,QAAQ;AAAA,EAI3C,MAAM,UAAU;AAAA,EAChB,MAAM,WAAW;AAAA,EACjB,SAAS,IAAI,EAAG,IAAI,OAAO,SAAS,GAAG,KAAK;AAAA,IACxC,IAAI,OAAO,OAAO,WAAW,OAAO,IAAI,OAAO,SAAS;AAAA,MAEpD,OAAO,IAAI;AAAA,IACf;AAAA,IACA,IAAI,OAAO,OAAO,YAAY,OAAO,IAAI,OAAO,UAAU;AAAA,MAEtD,OAAO,IAAI;AAAA,IACf;AAAA,IACA,IAAI,OAAO,OAAO,YACd,OAAO,IAAI,OAAO,WAClB,IAAI,IAAI,OAAO,UACf,OAAO,IAAI,OAAO,YAClB,OAAO,IAAI,OAAO,SAAS;AAAA,MAE3B,OAAO,IAAI;AAAA,IACf;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;;;ACvGX,IAAM,eAAe;AAAA,EACjB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACX;AACO,IAAM,gBAAgB,CAAC,YAAY,YAAY,WAAW;AAAA,EAC7D,IAAI,CAAC,YAAY;AAAA,IACb;AAAA,EACJ;AAAA,EACA,IAAI,OAAO,cAAc,UAAU,GAAG;AAAA,IAClC,OAAO;AAAA,EACX;AAAA,EACA,UAAU,MAAM,EAAE,KAAK,GAAG,yBAAyB,KAAK,UAAU,UAAU,sBAAsB,KAAK,UAAU,OAAO,KAAK,YAAY,CAAC,GAAG;AAAA,EAC7I;AAAA;AAEJ,SAAS,IAAI,GAAG;AAChB,SAAS,SAAS,CAAC,SAAS,QAAQ,UAAU;AAAA,EAC1C,IAAI,CAAC,UAAU,aAAa,WAAW,aAAa,WAAW;AAAA,IAC3D,OAAO;AAAA,EACX,EACK;AAAA,IAED,OAAO,OAAO,SAAS,KAAK,MAAM;AAAA;AAAA;AAG1C,IAAM,aAAa;AAAA,EACf,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACX;AACA,IAAI,gCAAgC,IAAI;AACjC,SAAS,SAAS,CAAC,QAAQ;AAAA,EAC9B,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,WAAW,OAAO,YAAY;AAAA,EACpC,IAAI,CAAC,QAAQ;AAAA,IACT,OAAO;AAAA,EACX;AAAA,EACA,MAAM,eAAe,cAAc,IAAI,MAAM;AAAA,EAC7C,IAAI,gBAAgB,aAAa,OAAO,UAAU;AAAA,IAC9C,OAAO,aAAa;AAAA,EACxB;AAAA,EACA,MAAM,cAAc;AAAA,IAChB,OAAO,UAAU,SAAS,QAAQ,QAAQ;AAAA,IAC1C,MAAM,UAAU,QAAQ,QAAQ,QAAQ;AAAA,IACxC,MAAM,UAAU,QAAQ,QAAQ,QAAQ;AAAA,IACxC,OAAO,UAAU,SAAS,QAAQ,QAAQ;AAAA,EAC9C;AAAA,EACA,cAAc,IAAI,QAAQ,CAAC,UAAU,WAAW,CAAC;AAAA,EACjD,OAAO;AAAA;AAEJ,IAAM,uBAAuB,CAAC,YAAY;AAAA,EAC7C,IAAI,QAAQ,SAAS;AAAA,IACjB,QAAQ,UAAU,KAAK,QAAQ,QAAQ;AAAA,IACvC,OAAO,QAAQ,QAAQ;AAAA,EAC3B;AAAA,EACA,IAAI,QAAQ,SAAS;AAAA,IACjB,QAAQ,UAAU,OAAO,aAAa,QAAQ,mBAAmB,UAAU,CAAC,GAAG,QAAQ,OAAO,IAAI,OAAO,QAAQ,QAAQ,OAAO,GAAG,IAAI,EAAE,MAAM,WAAW;AAAA,MACtJ;AAAA,MACC,KAAK,YAAY,MAAM,eACpB,KAAK,YAAY,MAAM,mBACvB,KAAK,YAAY,MAAM,YACvB,KAAK,YAAY,MAAM,eACvB,QACE;AAAA,IACV,CAAC,CAAC;AAAA,EACN;AAAA,EACA,IAAI,yBAAyB,SAAS;AAAA,IAClC,IAAI,QAAQ,qBAAqB;AAAA,MAC7B,QAAQ,UAAU,QAAQ;AAAA,IAC9B;AAAA,IACA,OAAO,QAAQ;AAAA,EACnB;AAAA,EACA,OAAO;AAAA;;;AC7EX,IAAI;AAAA;AAWG,MAAM,OAAO;AAAA,EAChB,WAAW,CAAC,UAAU,YAAY,QAAQ;AAAA,IACtC,KAAK,WAAW;AAAA,IAChB,eAAe,IAAI,MAAW,SAAC;AAAA,IAC/B,KAAK,aAAa;AAAA,IAClB,uBAAuB,MAAM,gBAAgB,QAAQ,GAAG;AAAA;AAAA,SAErD,eAAe,CAAC,UAAU,YAAY,QAAQ;AAAA,IACjD,IAAI,WAAW;AAAA,IACf,MAAM,SAAS,SAAS,UAAU,MAAM,IAAI;AAAA,IAC5C,gBAAgB,QAAQ,GAAG;AAAA,MACvB,IAAI,UAAU;AAAA,QACV,MAAM,IAAI,eAAe,0EAA0E;AAAA,MACvG;AAAA,MACA,WAAW;AAAA,MACX,IAAI,OAAO;AAAA,MACX,IAAI;AAAA,QACA,iBAAiB,OAAO,iBAAiB,UAAU,UAAU,GAAG;AAAA,UAC5D,IAAI,IAAI,UAAU,cAAc;AAAA,YAC5B,IAAI;AAAA,cACA,MAAM,KAAK,MAAM,IAAI,IAAI;AAAA,cAE7B,OAAO,GAAG;AAAA,cACN,OAAO,MAAM,sCAAsC,IAAI,IAAI;AAAA,cAC3D,OAAO,MAAM,eAAe,IAAI,GAAG;AAAA,cACnC,MAAM;AAAA;AAAA,UAEd;AAAA,UACA,IAAI,IAAI,UAAU,mBACd,IAAI,UAAU,mBACd,IAAI,UAAU,kBACd,IAAI,UAAU,yBACd,IAAI,UAAU,yBACd,IAAI,UAAU,sBAAsB;AAAA,YACpC,IAAI;AAAA,cACA,MAAM,KAAK,MAAM,IAAI,IAAI;AAAA,cAE7B,OAAO,GAAG;AAAA,cACN,OAAO,MAAM,sCAAsC,IAAI,IAAI;AAAA,cAC3D,OAAO,MAAM,eAAe,IAAI,GAAG;AAAA,cACnC,MAAM;AAAA;AAAA,UAEd;AAAA,UACA,IAAI,IAAI,UAAU,QAAQ;AAAA,YACtB;AAAA,UACJ;AAAA,UACA,IAAI,IAAI,UAAU,SAAS;AAAA,YACvB,MAAM,IAAI,SAAS,WAAW,SAAS,IAAI,IAAI,KAAK,IAAI,MAAM,WAAW,SAAS,OAAO;AAAA,UAC7F;AAAA,QACJ;AAAA,QACA,OAAO;AAAA,QAEX,OAAO,GAAG;AAAA,QAEN,IAAI,aAAa,CAAC;AAAA,UACd;AAAA,QACJ,MAAM;AAAA,gBAEV;AAAA,QAEI,IAAI,CAAC;AAAA,UACD,WAAW,MAAM;AAAA;AAAA;AAAA,IAG7B,OAAO,IAAI,OAAO,UAAU,YAAY,MAAM;AAAA;AAAA,SAM3C,kBAAkB,CAAC,gBAAgB,YAAY,QAAQ;AAAA,IAC1D,IAAI,WAAW;AAAA,IACf,gBAAgB,SAAS,GAAG;AAAA,MACxB,MAAM,cAAc,IAAI;AAAA,MACxB,MAAM,OAAO,8BAA8B,cAAc;AAAA,MACzD,iBAAiB,SAAS,MAAM;AAAA,QAC5B,WAAW,QAAQ,YAAY,OAAO,KAAK,GAAG;AAAA,UAC1C,MAAM;AAAA,QACV;AAAA,MACJ;AAAA,MACA,WAAW,QAAQ,YAAY,MAAM,GAAG;AAAA,QACpC,MAAM;AAAA,MACV;AAAA;AAAA,IAEJ,gBAAgB,QAAQ,GAAG;AAAA,MACvB,IAAI,UAAU;AAAA,QACV,MAAM,IAAI,eAAe,0EAA0E;AAAA,MACvG;AAAA,MACA,WAAW;AAAA,MACX,IAAI,OAAO;AAAA,MACX,IAAI;AAAA,QACA,iBAAiB,QAAQ,UAAU,GAAG;AAAA,UAClC,IAAI;AAAA,YACA;AAAA,UACJ,IAAI;AAAA,YACA,MAAM,KAAK,MAAM,IAAI;AAAA,QAC7B;AAAA,QACA,OAAO;AAAA,QAEX,OAAO,GAAG;AAAA,QAEN,IAAI,aAAa,CAAC;AAAA,UACd;AAAA,QACJ,MAAM;AAAA,gBAEV;AAAA,QAEI,IAAI,CAAC;AAAA,UACD,WAAW,MAAM;AAAA;AAAA;AAAA,IAG7B,OAAO,IAAI,OAAO,UAAU,YAAY,MAAM;AAAA;AAAA,IAEhD,iBAAiB,IAAI,SAAW,OAAO,eAAe,GAAG;AAAA,IACvD,OAAO,KAAK,SAAS;AAAA;AAAA,EAMzB,GAAG,GAAG;AAAA,IACF,MAAM,OAAO,CAAC;AAAA,IACd,MAAM,QAAQ,CAAC;AAAA,IACf,MAAM,WAAW,KAAK,SAAS;AAAA,IAC/B,MAAM,cAAc,CAAC,UAAU;AAAA,MAC3B,OAAO;AAAA,QACH,MAAM,MAAM;AAAA,UACR,IAAI,MAAM,WAAW,GAAG;AAAA,YACpB,MAAM,SAAS,SAAS,KAAK;AAAA,YAC7B,KAAK,KAAK,MAAM;AAAA,YAChB,MAAM,KAAK,MAAM;AAAA,UACrB;AAAA,UACA,OAAO,MAAM,MAAM;AAAA;AAAA,MAE3B;AAAA;AAAA,IAEJ,OAAO;AAAA,MACH,IAAI,OAAO,MAAM,YAAY,IAAI,GAAG,KAAK,YAAY,uBAAuB,MAAM,gBAAgB,GAAG,CAAC;AAAA,MACtG,IAAI,OAAO,MAAM,YAAY,KAAK,GAAG,KAAK,YAAY,uBAAuB,MAAM,gBAAgB,GAAG,CAAC;AAAA,IAC3G;AAAA;AAAA,EAOJ,gBAAgB,GAAG;AAAA,IACf,MAAM,OAAO;AAAA,IACb,IAAI;AAAA,IACJ,OAAO,mBAAmB;AAAA,WAChB,MAAK,GAAG;AAAA,QACV,OAAO,KAAK,OAAO,eAAe;AAAA;AAAA,WAEhC,KAAI,CAAC,MAAM;AAAA,QACb,IAAI;AAAA,UACA,QAAQ,OAAO,SAAS,MAAM,KAAK,KAAK;AAAA,UACxC,IAAI;AAAA,YACA,OAAO,KAAK,MAAM;AAAA,UACtB,MAAM,QAAQ,WAAW,KAAK,UAAU,KAAK,IAAI;AAAA,CAAI;AAAA,UACrD,KAAK,QAAQ,KAAK;AAAA,UAEtB,OAAO,KAAK;AAAA,UACR,KAAK,MAAM,GAAG;AAAA;AAAA;AAAA,WAGhB,OAAM,GAAG;AAAA,QACX,MAAM,KAAK,SAAS;AAAA;AAAA,IAE5B,CAAC;AAAA;AAET;AACA,gBAAuB,gBAAgB,CAAC,UAAU,YAAY;AAAA,EAC1D,IAAI,CAAC,SAAS,MAAM;AAAA,IAChB,WAAW,MAAM;AAAA,IACjB,IAAI,OAAO,WAAW,cAAc,eAChC,WAAW,UAAU,YAAY,eAAe;AAAA,MAChD,MAAM,IAAI,eAAe,gKAAgK;AAAA,IAC7L;AAAA,IACA,MAAM,IAAI,eAAe,mDAAmD;AAAA,EAChF;AAAA,EACA,MAAM,aAAa,IAAI;AAAA,EACvB,MAAM,cAAc,IAAI;AAAA,EACxB,MAAM,OAAO,8BAA8B,SAAS,IAAI;AAAA,EACxD,iBAAiB,YAAY,cAAc,IAAI,GAAG;AAAA,IAC9C,WAAW,QAAQ,YAAY,OAAO,QAAQ,GAAG;AAAA,MAC7C,MAAM,MAAM,WAAW,OAAO,IAAI;AAAA,MAClC,IAAI;AAAA,QACA,MAAM;AAAA,IACd;AAAA,EACJ;AAAA,EACA,WAAW,QAAQ,YAAY,MAAM,GAAG;AAAA,IACpC,MAAM,MAAM,WAAW,OAAO,IAAI;AAAA,IAClC,IAAI;AAAA,MACA,MAAM;AAAA,EACd;AAAA;AAMJ,gBAAgB,aAAa,CAAC,UAAU;AAAA,EACpC,IAAI,OAAO,IAAI;AAAA,EACf,iBAAiB,SAAS,UAAU;AAAA,IAChC,IAAI,SAAS,MAAM;AAAA,MACf;AAAA,IACJ;AAAA,IACA,MAAM,cAAc,iBAAiB,cAAc,IAAI,WAAW,KAAK,IACjE,OAAO,UAAU,WAAW,WAAW,KAAK,IACxC;AAAA,IACV,IAAI,UAAU,IAAI,WAAW,KAAK,SAAS,YAAY,MAAM;AAAA,IAC7D,QAAQ,IAAI,IAAI;AAAA,IAChB,QAAQ,IAAI,aAAa,KAAK,MAAM;AAAA,IACpC,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,QAAQ,eAAe,uBAAuB,IAAI,OAAO,IAAI;AAAA,MACzD,MAAM,KAAK,MAAM,GAAG,YAAY;AAAA,MAChC,OAAO,KAAK,MAAM,YAAY;AAAA,IAClC;AAAA,EACJ;AAAA,EACA,IAAI,KAAK,SAAS,GAAG;AAAA,IACjB,MAAM;AAAA,EACV;AAAA;AAAA;AAEJ,MAAM,WAAW;AAAA,EACb,WAAW,GAAG;AAAA,IACV,KAAK,QAAQ;AAAA,IACb,KAAK,OAAO,CAAC;AAAA,IACb,KAAK,SAAS,CAAC;AAAA;AAAA,EAEnB,MAAM,CAAC,MAAM;AAAA,IACT,IAAI,KAAK,SAAS,IAAI,GAAG;AAAA,MACrB,OAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;AAAA,IAC5C;AAAA,IACA,IAAI,CAAC,MAAM;AAAA,MAEP,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,KAAK;AAAA,QAC1B,OAAO;AAAA,MACX,MAAM,MAAM;AAAA,QACR,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK,KAAK,KAAK;AAAA,CAAI;AAAA,QACzB,KAAK,KAAK;AAAA,MACd;AAAA,MACA,KAAK,QAAQ;AAAA,MACb,KAAK,OAAO,CAAC;AAAA,MACb,KAAK,SAAS,CAAC;AAAA,MACf,OAAO;AAAA,IACX;AAAA,IACA,KAAK,OAAO,KAAK,IAAI;AAAA,IACrB,IAAI,KAAK,WAAW,GAAG,GAAG;AAAA,MACtB,OAAO;AAAA,IACX;AAAA,IACA,KAAK,WAAW,GAAG,SAAS,UAAU,MAAM,GAAG;AAAA,IAC/C,IAAI,MAAM,WAAW,GAAG,GAAG;AAAA,MACvB,QAAQ,MAAM,UAAU,CAAC;AAAA,IAC7B;AAAA,IACA,IAAI,cAAc,SAAS;AAAA,MACvB,KAAK,QAAQ;AAAA,IACjB,EACK,SAAI,cAAc,QAAQ;AAAA,MAC3B,KAAK,KAAK,KAAK,KAAK;AAAA,IACxB;AAAA,IACA,OAAO;AAAA;AAEf;AACA,SAAS,SAAS,CAAC,KAAK,WAAW;AAAA,EAC/B,MAAM,QAAQ,IAAI,QAAQ,SAAS;AAAA,EACnC,IAAI,UAAU,IAAI;AAAA,IACd,OAAO,CAAC,IAAI,UAAU,GAAG,KAAK,GAAG,WAAW,IAAI,UAAU,QAAQ,UAAU,MAAM,CAAC;AAAA,EACvF;AAAA,EACA,OAAO,CAAC,KAAK,IAAI,EAAE;AAAA;;;ACrRvB,eAAsB,oBAAoB,CAAC,QAAQ,OAAO;AAAA,EACtD,QAAQ,UAAU,cAAc,qBAAqB,cAAc;AAAA,EACnE,MAAM,OAAO,OAAO,YAAY;AAAA,IAC5B,IAAI,MAAM,QAAQ,QAAQ;AAAA,MACtB,UAAU,MAAM,EAAE,MAAM,YAAY,SAAS,QAAQ,SAAS,KAAK,SAAS,SAAS,SAAS,IAAI;AAAA,MAGlG,IAAI,MAAM,QAAQ,eAAe;AAAA,QAC7B,OAAO,MAAM,QAAQ,cAAc,gBAAgB,UAAU,MAAM,UAAU;AAAA,MACjF;AAAA,MACA,OAAO,OAAO,gBAAgB,UAAU,MAAM,UAAU;AAAA,IAC5D;AAAA,IAEA,IAAI,SAAS,WAAW,KAAK;AAAA,MACzB,OAAO;AAAA,IACX;AAAA,IACA,IAAI,MAAM,QAAQ,kBAAkB;AAAA,MAChC,OAAO;AAAA,IACX;AAAA,IACA,MAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AAAA,IACvD,MAAM,YAAY,aAAa,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,IACnD,MAAM,SAAS,WAAW,SAAS,kBAAkB,KAAK,WAAW,SAAS,OAAO;AAAA,IACrF,IAAI,QAAQ;AAAA,MACR,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,MACjC,OAAO,aAAa,MAAM,QAAQ;AAAA,IACtC;AAAA,IACA,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,IACjC,OAAO;AAAA,KACR;AAAA,EACH,UAAU,MAAM,EAAE,MAAM,IAAI,iCAAiC,qBAAqB;AAAA,IAC9E;AAAA,IACA,KAAK,SAAS;AAAA,IACd,QAAQ,SAAS;AAAA,IACjB;AAAA,IACA,YAAY,KAAK,IAAI,IAAI;AAAA,EAC7B,CAAC,CAAC;AAAA,EACF,OAAO;AAAA;AAEJ,SAAS,YAAY,CAAC,OAAO,UAAU;AAAA,EAC1C,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AAAA,IAC7D,OAAO;AAAA,EACX;AAAA,EACA,OAAO,OAAO,eAAe,OAAO,eAAe;AAAA,IAC/C,OAAO,SAAS,QAAQ,IAAI,YAAY;AAAA,IACxC,YAAY;AAAA,EAChB,CAAC;AAAA;;;AC/CL,IAAI;AAAA;AAOG,MAAM,mBAAmB,QAAQ;AAAA,EACpC,WAAW,CAAC,QAAQ,iBAAiB,gBAAgB,sBAAsB;AAAA,IACvE,MAAM,CAAC,YAAY;AAAA,MAIf,QAAQ,IAAI;AAAA,KACf;AAAA,IACD,KAAK,kBAAkB;AAAA,IACvB,KAAK,gBAAgB;AAAA,IACrB,mBAAmB,IAAI,MAAW,SAAC;AAAA,IACnC,uBAAuB,MAAM,oBAAoB,QAAQ,GAAG;AAAA;AAAA,EAEhE,WAAW,CAAC,WAAW;AAAA,IACnB,OAAO,IAAI,WAAW,uBAAuB,MAAM,oBAAoB,GAAG,GAAG,KAAK,iBAAiB,OAAO,QAAQ,UAAU,aAAa,UAAU,MAAM,KAAK,cAAc,QAAQ,KAAK,GAAG,KAAK,GAAG,MAAM,QAAQ,CAAC;AAAA;AAAA,EAavN,UAAU,GAAG;AAAA,IACT,OAAO,KAAK,gBAAgB,KAAK,CAAC,MAAM,EAAE,QAAQ;AAAA;AAAA,OAchD,aAAY,GAAG;AAAA,IACjB,OAAO,MAAM,YAAY,MAAM,QAAQ,IAAI,CAAC,KAAK,MAAM,GAAG,KAAK,WAAW,CAAC,CAAC;AAAA,IAC5E,OAAO,EAAE,MAAM,UAAU,YAAY,SAAS,QAAQ,IAAI,YAAY,EAAE;AAAA;AAAA,EAE5E,KAAK,GAAG;AAAA,IACJ,IAAI,CAAC,KAAK,eAAe;AAAA,MACrB,KAAK,gBAAgB,KAAK,gBAAgB,KAAK,CAAC,SAAS,KAAK,cAAc,uBAAuB,MAAM,oBAAoB,GAAG,GAAG,IAAI,CAAC;AAAA,IAC5I;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAEhB,IAAI,CAAC,aAAa,YAAY;AAAA,IAC1B,OAAO,KAAK,MAAM,EAAE,KAAK,aAAa,UAAU;AAAA;AAAA,EAEpD,KAAK,CAAC,YAAY;AAAA,IACd,OAAO,KAAK,MAAM,EAAE,MAAM,UAAU;AAAA;AAAA,EAExC,OAAO,CAAC,WAAW;AAAA,IACf,OAAO,KAAK,MAAM,EAAE,QAAQ,SAAS;AAAA;AAE7C;AACA,qBAAqB,IAAI;;;ACrEzB,IAAI;AAAA;AAMG,MAAM,aAAa;AAAA,EACtB,WAAW,CAAC,QAAQ,UAAU,MAAM,SAAS;AAAA,IACzC,qBAAqB,IAAI,MAAW,SAAC;AAAA,IACrC,uBAAuB,MAAM,sBAAsB,QAAQ,GAAG;AAAA,IAC9D,KAAK,UAAU;AAAA,IACf,KAAK,WAAW;AAAA,IAChB,KAAK,OAAO;AAAA;AAAA,EAEhB,WAAW,GAAG;AAAA,IACV,MAAM,QAAQ,KAAK,kBAAkB;AAAA,IACrC,IAAI,CAAC,MAAM;AAAA,MACP,OAAO;AAAA,IACX,OAAO,KAAK,uBAAuB,KAAK;AAAA;AAAA,OAEtC,YAAW,GAAG;AAAA,IAChB,MAAM,cAAc,KAAK,uBAAuB;AAAA,IAChD,IAAI,CAAC,aAAa;AAAA,MACd,MAAM,IAAI,eAAe,uFAAuF;AAAA,IACpH;AAAA,IACA,OAAO,MAAM,uBAAuB,MAAM,sBAAsB,GAAG,EAAE,eAAe,KAAK,aAAa,WAAW;AAAA;AAAA,SAE9G,SAAS,GAAG;AAAA,IACf,IAAI,OAAO;AAAA,IACX,MAAM;AAAA,IACN,OAAO,KAAK,YAAY,GAAG;AAAA,MACvB,OAAO,MAAM,KAAK,YAAY;AAAA,MAC9B,MAAM;AAAA,IACV;AAAA;AAAA,WAEK,uBAAuB,IAAI,SAAW,OAAO,eAAe,GAAG;AAAA,IACpE,iBAAiB,QAAQ,KAAK,UAAU,GAAG;AAAA,MACvC,WAAW,QAAQ,KAAK,kBAAkB,GAAG;AAAA,QACzC,MAAM;AAAA,MACV;AAAA,IACJ;AAAA;AAER;AAAA;AAUO,MAAM,oBAAoB,WAAW;AAAA,EACxC,WAAW,CAAC,QAAQ,SAAS,MAAM;AAAA,IAC/B,MAAM,QAAQ,SAAS,OAAO,SAAQ,UAAU,IAAI,KAAK,SAAQ,MAAM,UAAU,MAAM,qBAAqB,SAAQ,KAAK,GAAG,MAAM,OAAO,CAAC;AAAA;AAAA,UAStI,OAAO,cAAc,GAAG;AAAA,IAC5B,MAAM,OAAO,MAAM;AAAA,IACnB,iBAAiB,QAAQ,MAAM;AAAA,MAC3B,MAAM;AAAA,IACV;AAAA;AAER;AAAA;AACO,MAAM,aAAa,aAAa;AAAA,EACnC,WAAW,CAAC,QAAQ,UAAU,MAAM,SAAS;AAAA,IACzC,MAAM,QAAQ,UAAU,MAAM,OAAO;AAAA,IACrC,KAAK,OAAO,KAAK,QAAQ,CAAC;AAAA,IAC1B,KAAK,WAAW,KAAK,YAAY;AAAA,IACjC,KAAK,WAAW,KAAK,YAAY;AAAA,IACjC,KAAK,UAAU,KAAK,WAAW;AAAA;AAAA,EAEnC,iBAAiB,GAAG;AAAA,IAChB,OAAO,KAAK,QAAQ,CAAC;AAAA;AAAA,EAEzB,WAAW,GAAG;AAAA,IACV,IAAI,KAAK,aAAa,OAAO;AAAA,MACzB,OAAO;AAAA,IACX;AAAA,IACA,OAAO,MAAM,YAAY;AAAA;AAAA,EAE7B,sBAAsB,GAAG;AAAA,IACrB,IAAI,KAAK,QAAQ,QAAQ,cAAc;AAAA,MAEnC,MAAM,WAAW,KAAK;AAAA,MACtB,IAAI,CAAC,UAAU;AAAA,QACX,OAAO;AAAA,MACX;AAAA,MACA,OAAO;AAAA,WACA,KAAK;AAAA,QACR,OAAO;AAAA,aACA,SAAS,KAAK,QAAQ,KAAK;AAAA,UAC9B,WAAW;AAAA,QACf;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,CAAC,QAAQ;AAAA,MACT,OAAO;AAAA,IACX;AAAA,IACA,OAAO;AAAA,SACA,KAAK;AAAA,MACR,OAAO;AAAA,WACA,SAAS,KAAK,QAAQ,KAAK;AAAA,QAC9B,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAER;AA+BO,MAAM,mBAAmB,aAAa;AAAA,EACzC,WAAW,CAAC,QAAQ,UAAU,MAAM,SAAS;AAAA,IACzC,MAAM,QAAQ,UAAU,MAAM,OAAO;AAAA,IACrC,KAAK,OAAO,KAAK,QAAQ,CAAC;AAAA,IAC1B,KAAK,WAAW,KAAK,YAAY;AAAA,IACjC,KAAK,YAAY,KAAK,aAAa;AAAA;AAAA,EAEvC,iBAAiB,GAAG;AAAA,IAChB,OAAO,KAAK,QAAQ,CAAC;AAAA;AAAA,EAEzB,WAAW,GAAG;AAAA,IACV,IAAI,KAAK,aAAa,OAAO;AAAA,MACzB,OAAO;AAAA,IACX;AAAA,IACA,OAAO,MAAM,YAAY;AAAA;AAAA,EAE7B,sBAAsB,GAAG;AAAA,IACrB,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,CAAC,QAAQ;AAAA,MACT,OAAO;AAAA,IACX;AAAA,IACA,OAAO;AAAA,SACA,KAAK;AAAA,MACR,OAAO;AAAA,WACA,SAAS,KAAK,QAAQ,KAAK;AAAA,QAC9B,MAAM;AAAA,MACV;AAAA,IACJ;AAAA;AAER;;;AC9KO,IAAM,mBAAmB,MAAM;AAAA,EAClC,IAAI,OAAO,SAAS,aAAa;AAAA,IAC7B,QAAQ,sBAAY;AAAA,IACpB,MAAM,YAAY,OAAO,UAAS,UAAU,SAAS,YAAY,SAAS,SAAQ,SAAS,KAAK,MAAM,GAAG,CAAC,IAAI;AAAA,IAC9G,MAAM,IAAI,MAAM,4EACX,YACG,+FACE,GAAG;AAAA,EACjB;AAAA;AAMG,SAAS,QAAQ,CAAC,UAAU,UAAU,SAAS;AAAA,EAClD,iBAAiB;AAAA,EACjB,OAAO,IAAI,KAAK,UAAU,YAAY,gBAAgB,OAAO;AAAA;AAE1D,SAAS,OAAO,CAAC,OAAO;AAAA,EAC3B,QAAU,OAAO,UAAU,YACvB,UAAU,UACR,UAAU,UAAS,MAAM,QAAQ,OAAO,MAAM,IAAI,MAC/C,SAAS,UAAS,MAAM,OAAO,OAAO,MAAM,GAAG,MAC/C,cAAc,UAAS,MAAM,YAAY,OAAO,MAAM,QAAQ,MAC9D,UAAU,UAAS,MAAM,QAAQ,OAAO,MAAM,IAAI,MACvD,IACC,MAAM,OAAO,EACb,IAAI,KAAK;AAAA;AAEX,IAAM,kBAAkB,CAAC,UAAU,SAAS,QAAQ,OAAO,UAAU,YAAY,OAAO,MAAM,OAAO,mBAAmB;AAUxH,IAAM,8BAA8B,OAAO,MAAM,WAAU;AAAA,EAC9D,OAAO,KAAK,MAAM,MAAM,MAAM,WAAW,KAAK,MAAM,MAAK,EAAE;AAAA;AAE/D,IAAM,sCAAsC,IAAI;AAOhD,SAAS,gBAAgB,CAAC,aAAa;AAAA,EACnC,MAAM,SAAQ,OAAO,gBAAgB,aAAa,cAAc,YAAY;AAAA,EAC5E,MAAM,SAAS,oBAAoB,IAAI,MAAK;AAAA,EAC5C,IAAI;AAAA,IACA,OAAO;AAAA,EACX,MAAM,WAAW,YAAY;AAAA,IACzB,IAAI;AAAA,MACA,MAAM,gBAAiB,cAAc,SACjC,OAAM,YACH,MAAM,OAAM,QAAQ,GAAG;AAAA,MAC9B,MAAM,OAAO,IAAI;AAAA,MACjB,IAAI,KAAK,SAAS,MAAO,MAAM,IAAI,cAAc,IAAI,EAAE,KAAK,GAAI;AAAA,QAC5D,OAAO;AAAA,MACX;AAAA,MACA,OAAO;AAAA,MAEX,MAAM;AAAA,MAEF,OAAO;AAAA;AAAA,KAEZ;AAAA,EACH,oBAAoB,IAAI,QAAO,OAAO;AAAA,EACtC,OAAO;AAAA;AAEJ,IAAM,aAAa,OAAO,MAAM,WAAU;AAAA,EAC7C,IAAI,CAAE,MAAM,iBAAiB,MAAK,GAAI;AAAA,IAClC,MAAM,IAAI,UAAU,mGAAmG;AAAA,EAC3H;AAAA,EACA,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,QAAQ,IAAI,OAAO,QAAQ,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,WAAW,aAAa,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,EAClG,OAAO;AAAA;AAIX,IAAM,cAAc,CAAC,UAAU,iBAAiB,SAAQ,UAAU;AAiBlE,IAAM,eAAe,OAAO,MAAM,KAAK,UAAU;AAAA,EAC7C,IAAI,UAAU;AAAA,IACV;AAAA,EACJ,IAAI,SAAS,MAAM;AAAA,IACf,MAAM,IAAI,UAAU,sBAAsB,gEAAgE;AAAA,EAC9G;AAAA,EAEA,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AAAA,IACtF,KAAK,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,EAClC,EACK,SAAI,iBAAiB,UAAU;AAAA,IAChC,IAAI,UAAU,CAAC;AAAA,IACf,MAAM,cAAc,MAAM,QAAQ,IAAI,cAAc;AAAA,IACpD,IAAI,aAAa;AAAA,MACb,UAAU,EAAE,MAAM,YAAY;AAAA,IAClC;AAAA,IACA,KAAK,OAAO,KAAK,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,GAAG,QAAQ,KAAK,GAAG,OAAO,CAAC;AAAA,EAC5E,EACK,SAAI,gBAAgB,KAAK,GAAG;AAAA,IAC7B,KAAK,OAAO,KAAK,SAAS,CAAC,MAAM,IAAI,SAAS,mBAAmB,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ,KAAK,CAAC,CAAC;AAAA,EACrG,EACK,SAAI,YAAY,KAAK,GAAG;AAAA,IACzB,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK,GAAG,QAAQ,KAAK,GAAG,EAAE,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,EAC5E,EACK,SAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IAC3B,MAAM,QAAQ,IAAI,MAAM,IAAI,CAAC,UAAU,aAAa,MAAM,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,EACjF,EACK,SAAI,OAAO,UAAU,UAAU;AAAA,IAChC,MAAM,QAAQ,IAAI,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,aAAa,MAAM,GAAG,OAAO,SAAS,IAAI,CAAC,CAAC;AAAA,EAC9G,EACK;AAAA,IACD,MAAM,IAAI,UAAU,wGAAwG,eAAe;AAAA;AAAA;;;AC/HnJ,IAAM,aAAa,CAAC,UAAU,SAAS,QACnC,OAAO,UAAU,YACjB,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,SAAS,cACtB,OAAO,MAAM,UAAU,cACvB,OAAO,MAAM,gBAAgB;AAIjC,IAAM,aAAa,CAAC,UAAU,SAAS,QACnC,OAAO,UAAU,YACjB,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,iBAAiB,YAC9B,WAAW,KAAK;AACpB,IAAM,iBAAiB,CAAC,UAAU,SAAS,QACvC,OAAO,UAAU,YACjB,OAAO,MAAM,QAAQ,YACrB,OAAO,MAAM,SAAS;AAU1B,eAAsB,MAAM,CAAC,OAAO,MAAM,SAAS;AAAA,EAC/C,iBAAiB;AAAA,EAEjB,QAAQ,MAAM;AAAA,EACd,SAAS,OAAO,QAAQ,KAAK;AAAA,EAG7B,IAAI,WAAW,KAAK,GAAG;AAAA,IACnB,IAAI,iBAAiB,QAAQ,QAAQ,QAAQ,WAAW,MAAM;AAAA,MAC1D,OAAO;AAAA,IACX;AAAA,IACA,OAAO,SAAS,CAAC,MAAM,MAAM,YAAY,CAAC,GAAG,QAAQ,MAAM,MAAM;AAAA,MAC7D,MAAM,MAAM;AAAA,MACZ,cAAc,MAAM;AAAA,SACjB;AAAA,IACP,CAAC;AAAA,EACL;AAAA,EACA,IAAI,eAAe,KAAK,GAAG;AAAA,IACvB,MAAM,OAAO,MAAM,MAAM,KAAK;AAAA,IAC9B,SAAS,OAAO,IAAI,IAAI,MAAM,GAAG,EAAE,SAAS,MAAM,OAAO,EAAE,IAAI;AAAA,IAC/D,OAAO,SAAS,MAAM,SAAS,IAAI,GAAG,MAAM,OAAO;AAAA,EACvD;AAAA,EACA,MAAM,QAAQ,MAAM,SAAS,KAAK;AAAA,EAClC,IAAI,CAAC,SAAS,MAAM;AAAA,IAChB,MAAM,OAAO,MAAM,KAAK,CAAC,SAAS,OAAO,SAAS,aAAY,UAAU,SAAQ,KAAK,IAAI;AAAA,IACzF,IAAI,OAAO,SAAS,UAAU;AAAA,MAC1B,UAAU,KAAK,SAAS,KAAK;AAAA,IACjC;AAAA,EACJ;AAAA,EACA,OAAO,SAAS,OAAO,MAAM,OAAO;AAAA;AAExC,eAAe,QAAQ,CAAC,OAAO;AAAA,EAC3B,IAAI,QAAQ,CAAC;AAAA,EACb,IAAI,OAAO,UAAU,YACjB,YAAY,OAAO,KAAK,KACxB,iBAAiB,aAAa;AAAA,IAC9B,MAAM,KAAK,KAAK;AAAA,EACpB,EACK,SAAI,WAAW,KAAK,GAAG;AAAA,IACxB,MAAM,KAAK,iBAAiB,OAAO,QAAQ,MAAM,MAAM,YAAY,CAAC;AAAA,EACxE,EACK,SAAI,gBAAgB,KAAK,GAC5B;AAAA,IACE,iBAAiB,SAAS,OAAO;AAAA,MAC7B,MAAM,KAAK,GAAI,MAAM,SAAS,KAAK,CAAE;AAAA,IACzC;AAAA,EACJ,EACK;AAAA,IACD,MAAM,cAAc,OAAO,aAAa;AAAA,IACxC,MAAM,IAAI,MAAM,yBAAyB,OAAO,QAAQ,cAAc,kBAAkB,gBAAgB,KAAK,cAAc,KAAK,GAAG;AAAA;AAAA,EAEvI,OAAO;AAAA;AAEX,SAAS,aAAa,CAAC,OAAO;AAAA,EAC1B,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,IACvC,OAAO;AAAA,EACX,MAAM,QAAQ,OAAO,oBAAoB,KAAK;AAAA,EAC9C,OAAO,aAAa,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA;;ACzFrD,MAAM,YAAY;AAAA,EACrB,WAAW,CAAC,QAAQ;AAAA,IAChB,KAAK,UAAU;AAAA;AAEvB;;;ACHA,IAAM,+BAA+B,OAAO,IAAI,8BAA8B;AAC9E,UAAU,cAAc,CAAC,SAAS;AAAA,EAC9B,IAAI,CAAC;AAAA,IACD;AAAA,EACJ,IAAI,gCAAgC,SAAS;AAAA,IACzC,QAAQ,QAAQ,UAAU;AAAA,IAC1B,OAAO,OAAO,QAAQ;AAAA,IACtB,WAAW,QAAQ,OAAO;AAAA,MACtB,MAAM,CAAC,MAAM,IAAI;AAAA,IACrB;AAAA,IACA;AAAA,EACJ;AAAA,EACA,IAAI,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI,mBAAmB,SAAS;AAAA,IAC5B,OAAO,QAAQ,QAAQ;AAAA,EAC3B,EACK,SAAI,gBAAgB,OAAO,GAAG;AAAA,IAC/B,OAAO;AAAA,EACX,EACK;AAAA,IACD,cAAc;AAAA,IACd,OAAO,OAAO,QAAQ,WAAW,CAAC,CAAC;AAAA;AAAA,EAEvC,SAAS,OAAO,MAAM;AAAA,IAClB,MAAM,OAAO,IAAI;AAAA,IACjB,IAAI,OAAO,SAAS;AAAA,MAChB,MAAM,IAAI,UAAU,qCAAqC;AAAA,IAC7D,MAAM,SAAS,gBAAgB,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;AAAA,IACzD,IAAI,WAAW;AAAA,IACf,WAAW,SAAS,QAAQ;AAAA,MACxB,IAAI,UAAU;AAAA,QACV;AAAA,MAGJ,IAAI,eAAe,CAAC,UAAU;AAAA,QAC1B,WAAW;AAAA,QACX,MAAM,CAAC,MAAM,IAAI;AAAA,MACrB;AAAA,MACA,MAAM,CAAC,MAAM,KAAK;AAAA,IACtB;AAAA,EACJ;AAAA;AAEG,IAAM,eAAe,CAAC,eAAe;AAAA,EACxC,MAAM,gBAAgB,IAAI;AAAA,EAC1B,MAAM,cAAc,IAAI;AAAA,EACxB,WAAW,WAAW,YAAY;AAAA,IAC9B,MAAM,cAAc,IAAI;AAAA,IACxB,YAAY,MAAM,UAAU,eAAe,OAAO,GAAG;AAAA,MACjD,MAAM,YAAY,KAAK,YAAY;AAAA,MACnC,IAAI,CAAC,YAAY,IAAI,SAAS,GAAG;AAAA,QAC7B,cAAc,OAAO,IAAI;AAAA,QACzB,YAAY,IAAI,SAAS;AAAA,MAC7B;AAAA,MACA,IAAI,UAAU,MAAM;AAAA,QAChB,cAAc,OAAO,IAAI;AAAA,QACzB,YAAY,IAAI,SAAS;AAAA,MAC7B,EACK;AAAA,QACD,cAAc,OAAO,MAAM,KAAK;AAAA,QAChC,YAAY,OAAO,SAAS;AAAA;AAAA,IAEpC;AAAA,EACJ;AAAA,EACA,OAAO,GAAG,+BAA+B,MAAM,QAAQ,eAAe,OAAO,YAAY;AAAA;;;ACzDtF,SAAS,aAAa,CAAC,KAAK;AAAA,EAC/B,OAAO,IAAI,QAAQ,oCAAoC,kBAAkB;AAAA;AAE7E,IAAM,wBAAwB,OAAO,uBAAuB,OAAO,OAAO,IAAI,CAAC;AACxE,IAAM,wBAAwB,CAAC,cAAc,kBAAkB,SAAS,IAAI,CAAC,YAAY,QAAQ;AAAA,EAEpG,IAAI,QAAQ,WAAW;AAAA,IACnB,OAAO,QAAQ;AAAA,EACnB,IAAI,WAAW;AAAA,EACf,MAAM,kBAAkB,CAAC;AAAA,EACzB,MAAM,OAAO,QAAQ,OAAO,CAAC,eAAe,cAAc,UAAU;AAAA,IAChE,IAAI,OAAO,KAAK,YAAY,GAAG;AAAA,MAC3B,WAAW;AAAA,IACf;AAAA,IACA,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,WAAW,WAAW,qBAAqB,aAAa,KAAK,KAAK;AAAA,IACtE,IAAI,UAAU,OAAO,WAChB,SAAS,QACL,OAAO,UAAU,YAEd,MAAM,aACF,OAAO,eAAe,OAAO,eAAe,MAAM,kBAAkB,KAAK,KAAK,KAAK,GAC7E,WAAY;AAAA,MAC9B,UAAU,QAAQ;AAAA,MAClB,gBAAgB,KAAK;AAAA,QACjB,OAAO,cAAc,SAAS,aAAa;AAAA,QAC3C,QAAQ,QAAQ;AAAA,QAChB,OAAO,iBAAiB,OAAO,UAAU,SACpC,KAAK,KAAK,EACV,MAAM,GAAG,EAAE;AAAA,MACpB,CAAC;AAAA,IACL;AAAA,IACA,OAAO,gBAAgB,gBAAgB,UAAU,OAAO,SAAS,KAAK;AAAA,KACvE,EAAE;AAAA,EACL,MAAM,WAAW,KAAK,MAAM,QAAQ,CAAC,EAAE;AAAA,EACvC,MAAM,wBAAwB;AAAA,EAC9B,IAAI;AAAA,EAEJ,QAAQ,QAAQ,sBAAsB,KAAK,QAAQ,OAAO,MAAM;AAAA,IAC5D,gBAAgB,KAAK;AAAA,MACjB,OAAO,MAAM;AAAA,MACb,QAAQ,MAAM,GAAG;AAAA,MACjB,OAAO,UAAU,MAAM;AAAA,IAC3B,CAAC;AAAA,EACL;AAAA,EACA,gBAAgB,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAAA,EAChD,IAAI,gBAAgB,SAAS,GAAG;AAAA,IAC5B,IAAI,UAAU;AAAA,IACd,MAAM,YAAY,gBAAgB,OAAO,CAAC,KAAK,YAAY;AAAA,MACvD,MAAM,SAAS,IAAI,OAAO,QAAQ,QAAQ,OAAO;AAAA,MACjD,MAAM,SAAS,IAAI,OAAO,QAAQ,MAAM;AAAA,MACxC,UAAU,QAAQ,QAAQ,QAAQ;AAAA,MAClC,OAAO,MAAM,SAAS;AAAA,OACvB,EAAE;AAAA,IACL,MAAM,IAAI,eAAe;AAAA,EAA0D,gBAC9E,IAAI,CAAC,MAAM,EAAE,KAAK,EAClB,KAAK;AAAA,CAAI;AAAA,EAAM;AAAA,EAAS,WAAW;AAAA,EAC5C;AAAA,EACA,OAAO;AAAA;AAKJ,IAAM,uBAAuB,sBAAsB,aAAa;;;AClEhE,MAAM,cAAc,YAAY;AAAA,EAYnC,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS;AAAA,IACvB,QAAQ,UAAU,UAAU,UAAU,CAAC;AAAA,IACvC,OAAO,KAAK,QAAQ,WAAW,aAAc,MAAO;AAAA,MAChD;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,sBAAsB,EAAE,SAAS,EAAE;AAAA,QAC1E,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAYL,MAAM,CAAC,QAAQ,SAAS,CAAC,GAAG,SAAS;AAAA,IACjC,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,OAAO,iBAAkB,UAAU;AAAA,SAChD;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,sBAAsB,EAAE,SAAS,EAAE;AAAA,QAC1E,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAeL,QAAQ,CAAC,QAAQ,SAAS,CAAC,GAAG,SAAS;AAAA,IACnC,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,IAAI,iBAAkB,kBAAkB;AAAA,SACrD;AAAA,MACH,SAAS,aAAa;AAAA,QAClB;AAAA,UACI,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,sBAAsB,EAAE,SAAS;AAAA,UACtE,QAAQ;AAAA,QACZ;AAAA,QACA,SAAS;AAAA,MACb,CAAC;AAAA,MACD,kBAAkB;AAAA,IACtB,CAAC;AAAA;AAAA,EAWL,gBAAgB,CAAC,QAAQ,SAAS,CAAC,GAAG,SAAS;AAAA,IAC3C,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,IAAI,iBAAkB,UAAU;AAAA,SAC7C;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,sBAAsB,EAAE,SAAS,EAAE;AAAA,QAC1E,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAYL,MAAM,CAAC,QAAQ,SAAS;AAAA,IACpB,QAAQ,UAAU,SAAS;AAAA,IAC3B,OAAO,KAAK,QAAQ,KAAK,aAAa,4BAA4B;AAAA,MAC9D;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,sBAAsB,EAAE,SAAS,EAAE;AAAA,QAC1E,SAAS;AAAA,MACb,CAAC;AAAA,IACL,GAAG,KAAK,OAAO,CAAC;AAAA;AAExB;;;AC/GO,MAAM,eAAe,YAAY;AAAA,EAcpC,QAAQ,CAAC,SAAS,SAAS,CAAC,GAAG,SAAS;AAAA,IACpC,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,IAAI,kBAAmB,qBAAqB;AAAA,SACzD;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,KAAM,OAAO,SAAS,KAAK,OAAO,EAAE,kBAAkB,OAAO,SAAS,EAAE,IAAI,UAAW;AAAA,QACvF,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAgBL,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS;AAAA,IACvB,QAAQ,UAAU,UAAU,UAAU,CAAC;AAAA,IACvC,OAAO,KAAK,QAAQ,WAAW,wBAAyB,MAAO;AAAA,MAC3D;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,KAAM,OAAO,SAAS,KAAK,OAAO,EAAE,kBAAkB,OAAO,SAAS,EAAE,IAAI,UAAW;AAAA,QACvF,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAET;;;AClDO,IAAM,4BAA4B;AAAA,EACrC,0BAA0B;AAAA,EAC1B,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,yCAAyC;AAAA,EACzC,0BAA0B;AAAA,EAC1B,4BAA4B;AAAA,EAC5B,2CAA2C;AAAA,EAC3C,4BAA4B;AAChC;;;ACZO,SAAS,qBAAqB,CAAC,SAAS,QAAQ,MAAM;AAAA,EACzD,IAAI,CAAC,UAAU,EAAE,YAAY,OAAO,iBAAiB,CAAC,KAAK;AAAA,IACvD,OAAO;AAAA,SACA;AAAA,MACH,SAAS,QAAQ,QAAQ,IAAI,CAAC,UAAU;AAAA,QACpC,IAAI,MAAM,SAAS,QAAQ;AAAA,UACvB,MAAM,cAAc,OAAO,eAAe,KAAK,MAAM,GAAG,iBAAiB;AAAA,YACrE,OAAO;AAAA,YACP,YAAY;AAAA,UAChB,CAAC;AAAA,UACD,OAAO,OAAO,eAAe,aAAa,UAAU;AAAA,YAChD,GAAG,GAAG;AAAA,cACF,KAAK,OAAO,KAAK,2FAA2F;AAAA,cAC5G,OAAO;AAAA;AAAA,YAEX,YAAY;AAAA,UAChB,CAAC;AAAA,QACL;AAAA,QACA,OAAO;AAAA,OACV;AAAA,MACD,eAAe;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,OAAO,iBAAiB,SAAS,QAAQ,IAAI;AAAA;AAE1C,SAAS,gBAAgB,CAAC,SAAS,QAAQ,MAAM;AAAA,EACpD,IAAI,oBAAoB;AAAA,EACxB,MAAM,UAAU,QAAQ,QAAQ,IAAI,CAAC,UAAU;AAAA,IAC3C,IAAI,MAAM,SAAS,QAAQ;AAAA,MACvB,MAAM,eAAe,sBAAsB,QAAQ,MAAM,IAAI;AAAA,MAC7D,IAAI,sBAAsB,MAAM;AAAA,QAC5B,oBAAoB;AAAA,MACxB;AAAA,MACA,MAAM,cAAc,OAAO,eAAe,KAAK,MAAM,GAAG,iBAAiB;AAAA,QACrE,OAAO;AAAA,QACP,YAAY;AAAA,MAChB,CAAC;AAAA,MACD,OAAO,OAAO,eAAe,aAAa,UAAU;AAAA,QAChD,GAAG,GAAG;AAAA,UACF,KAAK,OAAO,KAAK,2FAA2F;AAAA,UAC5G,OAAO;AAAA;AAAA,QAEX,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AAAA,IACA,OAAO;AAAA,GACV;AAAA,EACD,OAAO;AAAA,OACA;AAAA,IACH;AAAA,IACA,eAAe;AAAA,EACnB;AAAA;AAEJ,SAAS,qBAAqB,CAAC,QAAQ,SAAS;AAAA,EAC5C,IAAI,OAAO,eAAe,SAAS,eAAe;AAAA,IAC9C,OAAO;AAAA,EACX;AAAA,EACA,IAAI;AAAA,IACA,IAAI,WAAW,OAAO,eAAe;AAAA,MACjC,OAAO,OAAO,cAAc,MAAM,OAAO;AAAA,IAC7C;AAAA,IACA,OAAO,KAAK,MAAM,OAAO;AAAA,IAE7B,OAAO,OAAO;AAAA,IACV,MAAM,IAAI,eAAe,sCAAsC,OAAO;AAAA;AAAA;;;ACjE9E,IAAM,WAAW,CAAC,UAAU;AAAA,EACxB,IAAI,UAAU;AAAA,EACd,IAAI,SAAS,CAAC;AAAA,EACd,OAAO,UAAU,MAAM,QAAQ;AAAA,IAC3B,IAAI,OAAO,MAAM;AAAA,IACjB,IAAI,SAAS,MAAM;AAAA,MACf;AAAA,MACA;AAAA,IACJ;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACX,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACJ;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACX,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACJ;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACX,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACJ;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACX,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACJ;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACX,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACJ;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACX,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACJ;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACd,IAAI,QAAQ;AAAA,MACZ,IAAI,gBAAgB;AAAA,MACpB,OAAO,MAAM,EAAE;AAAA,MACf,OAAO,SAAS,KAAK;AAAA,QACjB,IAAI,YAAY,MAAM,QAAQ;AAAA,UAC1B,gBAAgB;AAAA,UAChB;AAAA,QACJ;AAAA,QACA,IAAI,SAAS,MAAM;AAAA,UACf;AAAA,UACA,IAAI,YAAY,MAAM,QAAQ;AAAA,YAC1B,gBAAgB;AAAA,YAChB;AAAA,UACJ;AAAA,UACA,SAAS,OAAO,MAAM;AAAA,UACtB,OAAO,MAAM,EAAE;AAAA,QACnB,EACK;AAAA,UACD,SAAS;AAAA,UACT,OAAO,MAAM,EAAE;AAAA;AAAA,MAEvB;AAAA,MACA,OAAO,MAAM,EAAE;AAAA,MACf,IAAI,CAAC,eAAe;AAAA,QAChB,OAAO,KAAK;AAAA,UACR,MAAM;AAAA,UACN;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MACA;AAAA,IACJ;AAAA,IACA,IAAI,aAAa;AAAA,IACjB,IAAI,QAAQ,WAAW,KAAK,IAAI,GAAG;AAAA,MAC/B;AAAA,MACA;AAAA,IACJ;AAAA,IACA,IAAI,UAAU;AAAA,IACd,IAAK,QAAQ,QAAQ,KAAK,IAAI,KAAM,SAAS,OAAO,SAAS,KAAK;AAAA,MAC9D,IAAI,QAAQ;AAAA,MACZ,IAAI,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,QACT,OAAO,MAAM,EAAE;AAAA,MACnB;AAAA,MACA,OAAQ,QAAQ,QAAQ,KAAK,IAAI,KAAM,SAAS,KAAK;AAAA,QACjD,SAAS;AAAA,QACT,OAAO,MAAM,EAAE;AAAA,MACnB;AAAA,MACA,OAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,MACD;AAAA,IACJ;AAAA,IACA,IAAI,UAAU;AAAA,IACd,IAAI,QAAQ,QAAQ,KAAK,IAAI,GAAG;AAAA,MAC5B,IAAI,QAAQ;AAAA,MACZ,OAAO,QAAQ,QAAQ,KAAK,IAAI,GAAG;AAAA,QAC/B,IAAI,YAAY,MAAM,QAAQ;AAAA,UAC1B;AAAA,QACJ;AAAA,QACA,SAAS;AAAA,QACT,OAAO,MAAM,EAAE;AAAA,MACnB;AAAA,MACA,IAAI,SAAS,UAAU,SAAS,WAAW,UAAU,QAAQ;AAAA,QACzD,OAAO,KAAK;AAAA,UACR,MAAM;AAAA,UACN;AAAA,QACJ,CAAC;AAAA,MACL,EACK;AAAA,QAED;AAAA,QACA;AAAA;AAAA,MAEJ;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAxIX,IAyIG,QAAQ,CAAC,WAAW;AAAA,EACnB,IAAI,OAAO,WAAW,GAAG;AAAA,IACrB,OAAO;AAAA,EACX;AAAA,EACA,IAAI,YAAY,OAAO,OAAO,SAAS;AAAA,EACvC,QAAQ,UAAU;AAAA,SACT;AAAA,MACD,SAAS,OAAO,MAAM,GAAG,OAAO,SAAS,CAAC;AAAA,MAC1C,OAAO,MAAM,MAAM;AAAA,MACnB;AAAA,SACC;AAAA,MACD,IAAI,2BAA2B,UAAU,MAAM,UAAU,MAAM,SAAS;AAAA,MACxE,IAAI,6BAA6B,OAAO,6BAA6B,KAAK;AAAA,QACtE,SAAS,OAAO,MAAM,GAAG,OAAO,SAAS,CAAC;AAAA,QAC1C,OAAO,MAAM,MAAM;AAAA,MACvB;AAAA,SACC;AAAA,MACD,IAAI,0BAA0B,OAAO,OAAO,SAAS;AAAA,MACrD,IAAI,yBAAyB,SAAS,aAAa;AAAA,QAC/C,SAAS,OAAO,MAAM,GAAG,OAAO,SAAS,CAAC;AAAA,QAC1C,OAAO,MAAM,MAAM;AAAA,MACvB,EACK,SAAI,yBAAyB,SAAS,WAAW,wBAAwB,UAAU,KAAK;AAAA,QACzF,SAAS,OAAO,MAAM,GAAG,OAAO,SAAS,CAAC;AAAA,QAC1C,OAAO,MAAM,MAAM;AAAA,MACvB;AAAA,MACA;AAAA,SACC;AAAA,MACD,SAAS,OAAO,MAAM,GAAG,OAAO,SAAS,CAAC;AAAA,MAC1C,OAAO,MAAM,MAAM;AAAA,MACnB;AAAA;AAAA,EAER,OAAO;AAAA;AAzKX,IA0KG,UAAU,CAAC,WAAW;AAAA,EACrB,IAAI,OAAO,CAAC;AAAA,EACZ,OAAO,IAAI,CAAC,UAAU;AAAA,IAClB,IAAI,MAAM,SAAS,SAAS;AAAA,MACxB,IAAI,MAAM,UAAU,KAAK;AAAA,QACrB,KAAK,KAAK,GAAG;AAAA,MACjB,EACK;AAAA,QACD,KAAK,OAAO,KAAK,YAAY,GAAG,GAAG,CAAC;AAAA;AAAA,IAE5C;AAAA,IACA,IAAI,MAAM,SAAS,SAAS;AAAA,MACxB,IAAI,MAAM,UAAU,KAAK;AAAA,QACrB,KAAK,KAAK,GAAG;AAAA,MACjB,EACK;AAAA,QACD,KAAK,OAAO,KAAK,YAAY,GAAG,GAAG,CAAC;AAAA;AAAA,IAE5C;AAAA,GACH;AAAA,EACD,IAAI,KAAK,SAAS,GAAG;AAAA,IACjB,KAAK,QAAQ,EAAE,IAAI,CAAC,SAAS;AAAA,MACzB,IAAI,SAAS,KAAK;AAAA,QACd,OAAO,KAAK;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,QACX,CAAC;AAAA,MACL,EACK,SAAI,SAAS,KAAK;AAAA,QACnB,OAAO,KAAK;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,QACX,CAAC;AAAA,MACL;AAAA,KACH;AAAA,EACL;AAAA,EACA,OAAO;AAAA;AA9MX,IA+MG,WAAW,CAAC,WAAW;AAAA,EACtB,IAAI,SAAS;AAAA,EACb,OAAO,IAAI,CAAC,UAAU;AAAA,IAClB,QAAQ,MAAM;AAAA,WACL;AAAA,QACD,UAAU,MAAM,MAAM,QAAQ;AAAA,QAC9B;AAAA;AAAA,QAEA,UAAU,MAAM;AAAA,QAChB;AAAA;AAAA,GAEX;AAAA,EACD,OAAO;AAAA;AA3NX,IA4NG,eAAe,CAAC,UAAU,KAAK,MAAM,SAAS,QAAQ,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC;;AC5NjF,IAAI;AAAJ,IAAkC;AAAlC,IAA6E;AAA7E,IAAwG;AAAxG,IAA6I;AAA7I,IAAyL;AAAzL,IAAoO;AAApO,IAAmQ;AAAnQ,IAAyS;AAAzS,IAA8U;AAA9U,IAA4W;AAA5W,IAAsY;AAAtY,IAAka;AAAla,IAA8b;AAA9b,IAAye;AAAze,IAAsgB;AAAtgB,IAAqiB;AAAriB,IAAgkB;AAAhkB,IAAomB;AAApmB,IAAqoB;AAAroB,IAAqqB;AAArqB,IAAssB;AAAtsB,IAAyuB;AAAzuB,IAAwwB;AAOxwB,IAAM,oBAAoB;AAC1B,SAAS,eAAe,CAAC,SAAS;AAAA,EAC9B,OAAO,QAAQ,SAAS,cAAc,QAAQ,SAAS,qBAAqB,QAAQ,SAAS;AAAA;AAAA;AAE1F,MAAM,kBAAkB;AAAA,EAC3B,WAAW,CAAC,QAAQ,MAAM;AAAA,IACtB,6BAA6B,IAAI,IAAI;AAAA,IACrC,KAAK,WAAW,CAAC;AAAA,IACjB,KAAK,mBAAmB,CAAC;AAAA,IACzB,0CAA0C,IAAI,MAAW,SAAC;AAAA,IAC1D,0BAA0B,IAAI,MAAM,IAAI;AAAA,IACxC,KAAK,aAAa,IAAI;AAAA,IACtB,oCAAoC,IAAI,MAAW,SAAC;AAAA,IACpD,2CAA2C,IAAI,MAAM,MAAM,EAAG;AAAA,IAC9D,0CAA0C,IAAI,MAAM,MAAM,EAAG;AAAA,IAC7D,8BAA8B,IAAI,MAAW,SAAC;AAAA,IAC9C,qCAAqC,IAAI,MAAM,MAAM,EAAG;AAAA,IACxD,oCAAoC,IAAI,MAAM,MAAM,EAAG;AAAA,IACvD,6BAA6B,IAAI,MAAM,CAAC,CAAC;AAAA,IACzC,yBAAyB,IAAI,MAAM,KAAK;AAAA,IACxC,2BAA2B,IAAI,MAAM,KAAK;AAAA,IAC1C,2BAA2B,IAAI,MAAM,KAAK;AAAA,IAC1C,0CAA0C,IAAI,MAAM,KAAK;AAAA,IACzD,4BAA4B,IAAI,MAAW,SAAC;AAAA,IAC5C,8BAA8B,IAAI,MAAW,SAAC;AAAA,IAC9C,0BAA0B,IAAI,MAAW,SAAC;AAAA,IAC1C,+BAA+B,IAAI,MAAM,CAAC,WAAU;AAAA,MAChD,uBAAuB,MAAM,4BAA4B,MAAM,GAAG;AAAA,MAClE,IAAI,aAAa,MAAK,GAAG;AAAA,QACrB,SAAQ,IAAI;AAAA,MAChB;AAAA,MACA,IAAI,kBAAiB,mBAAmB;AAAA,QACpC,uBAAuB,MAAM,4BAA4B,MAAM,GAAG;AAAA,QAClE,OAAO,KAAK,MAAM,SAAS,MAAK;AAAA,MACpC;AAAA,MACA,IAAI,kBAAiB,gBAAgB;AAAA,QACjC,OAAO,KAAK,MAAM,SAAS,MAAK;AAAA,MACpC;AAAA,MACA,IAAI,kBAAiB,OAAO;AAAA,QACxB,MAAM,iBAAiB,IAAI,eAAe,OAAM,OAAO;AAAA,QAEvD,eAAe,QAAQ;AAAA,QACvB,OAAO,KAAK,MAAM,SAAS,cAAc;AAAA,MAC7C;AAAA,MACA,OAAO,KAAK,MAAM,SAAS,IAAI,eAAe,OAAO,MAAK,CAAC,CAAC;AAAA,KAC/D;AAAA,IACD,uBAAuB,MAAM,qCAAqC,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MAC/F,uBAAuB,MAAM,4CAA4C,SAAS,GAAG;AAAA,MACrF,uBAAuB,MAAM,2CAA2C,QAAQ,GAAG;AAAA,KACtF,GAAG,GAAG;AAAA,IACP,uBAAuB,MAAM,+BAA+B,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACzF,uBAAuB,MAAM,sCAAsC,SAAS,GAAG;AAAA,MAC/E,uBAAuB,MAAM,qCAAqC,QAAQ,GAAG;AAAA,KAChF,GAAG,GAAG;AAAA,IAKP,uBAAuB,MAAM,qCAAqC,GAAG,EAAE,MAAM,MAAM,EAAG;AAAA,IACtF,uBAAuB,MAAM,+BAA+B,GAAG,EAAE,MAAM,MAAM,EAAG;AAAA,IAChF,uBAAuB,MAAM,2BAA2B,QAAQ,GAAG;AAAA,IACnE,uBAAuB,MAAM,2BAA2B,MAAM,UAAU,SAAS,GAAG;AAAA;AAAA,MAEpF,QAAQ,GAAG;AAAA,IACX,OAAO,uBAAuB,MAAM,6BAA6B,GAAG;AAAA;AAAA,MAEpE,UAAU,GAAG;AAAA,IACb,OAAO,uBAAuB,MAAM,+BAA+B,GAAG;AAAA;AAAA,OAYpE,aAAY,GAAG;AAAA,IACjB,uBAAuB,MAAM,2CAA2C,MAAM,GAAG;AAAA,IACjF,MAAM,WAAW,MAAM,uBAAuB,MAAM,qCAAqC,GAAG;AAAA,IAC5F,IAAI,CAAC,UAAU;AAAA,MACX,MAAM,IAAI,MAAM,uCAAuC;AAAA,IAC3D;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,MACN;AAAA,MACA,YAAY,SAAS,QAAQ,IAAI,YAAY;AAAA,IACjD;AAAA;AAAA,SASG,kBAAkB,CAAC,QAAQ;AAAA,IAC9B,MAAM,SAAS,IAAI,kBAAkB,IAAI;AAAA,IACzC,OAAO,KAAK,MAAM,OAAO,oBAAoB,MAAM,CAAC;AAAA,IACpD,OAAO;AAAA;AAAA,SAEJ,aAAa,CAAC,UAAU,QAAQ,WAAW,WAAW,CAAC,GAAG;AAAA,IAC7D,MAAM,SAAS,IAAI,kBAAkB,QAAQ,EAAE,OAAO,CAAC;AAAA,IACvD,WAAW,WAAW,OAAO,UAAU;AAAA,MACnC,OAAO,iBAAiB,OAAO;AAAA,IACnC;AAAA,IACA,uBAAuB,QAAQ,2BAA2B,KAAK,QAAQ,QAAQ,KAAK,GAAG,GAAG;AAAA,IAC1F,OAAO,KAAK,MAAM,OAAO,eAAe,UAAU,KAAK,QAAQ,QAAQ,KAAK,GAAG,KAAK,SAAS,SAAS,KAAK,SAAS,SAAS,6BAA6B,SAAS,EAAE,CAAC,CAAC;AAAA,IACvK,OAAO;AAAA;AAAA,EAEX,IAAI,CAAC,UAAU;AAAA,IACX,SAAS,EAAE,KAAK,MAAM;AAAA,MAClB,KAAK,WAAW;AAAA,MAChB,KAAK,MAAM,KAAK;AAAA,OACjB,uBAAuB,MAAM,gCAAgC,GAAG,CAAC;AAAA;AAAA,EAExE,gBAAgB,CAAC,SAAS;AAAA,IACtB,KAAK,SAAS,KAAK,OAAO;AAAA;AAAA,EAE9B,WAAW,CAAC,SAAS,OAAO,MAAM;AAAA,IAC9B,KAAK,iBAAiB,KAAK,OAAO;AAAA,IAClC,IAAI,MAAM;AAAA,MACN,KAAK,MAAM,WAAW,OAAO;AAAA,IACjC;AAAA;AAAA,OAEE,eAAc,CAAC,UAAU,QAAQ,SAAS;AAAA,IAC5C,MAAM,SAAS,SAAS;AAAA,IACxB,IAAI;AAAA,IACJ,IAAI,QAAQ;AAAA,MACR,IAAI,OAAO;AAAA,QACP,KAAK,WAAW,MAAM;AAAA,MAC1B,eAAe,KAAK,WAAW,MAAM,KAAK,KAAK,UAAU;AAAA,MACzD,OAAO,iBAAiB,SAAS,YAAY;AAAA,IACjD;AAAA,IACA,IAAI;AAAA,MACA,uBAAuB,MAAM,8BAA8B,KAAK,+BAA+B,EAAE,KAAK,IAAI;AAAA,MAC1G,QAAQ,UAAU,MAAM,WAAW,MAAM,SACpC,OAAO,KAAK,QAAQ,QAAQ,KAAK,GAAG,KAAK,SAAS,QAAQ,KAAK,WAAW,OAAO,CAAC,EAClF,aAAa;AAAA,MAClB,KAAK,WAAW,QAAQ;AAAA,MACxB,iBAAiB,SAAS,QAAQ;AAAA,QAC9B,uBAAuB,MAAM,8BAA8B,KAAK,iCAAiC,EAAE,KAAK,MAAM,KAAK;AAAA,MACvH;AAAA,MACA,IAAI,OAAO,WAAW,QAAQ,SAAS;AAAA,QACnC,MAAM,IAAI;AAAA,MACd;AAAA,MACA,uBAAuB,MAAM,8BAA8B,KAAK,6BAA6B,EAAE,KAAK,IAAI;AAAA,cAE5G;AAAA,MACI,IAAI,UAAU,cAAc;AAAA,QACxB,OAAO,oBAAoB,SAAS,YAAY;AAAA,MACpD;AAAA;AAAA;AAAA,EAGR,UAAU,CAAC,UAAU;AAAA,IACjB,IAAI,KAAK;AAAA,MACL;AAAA,IACJ,uBAAuB,MAAM,6BAA6B,UAAU,GAAG;AAAA,IACvE,uBAAuB,MAAM,+BAA+B,UAAU,QAAQ,IAAI,YAAY,GAAG,GAAG;AAAA,IACpG,uBAAuB,MAAM,4CAA4C,GAAG,EAAE,KAAK,MAAM,QAAQ;AAAA,IACjG,KAAK,MAAM,SAAS;AAAA;AAAA,MAEpB,KAAK,GAAG;AAAA,IACR,OAAO,uBAAuB,MAAM,0BAA0B,GAAG;AAAA;AAAA,MAEjE,OAAO,GAAG;AAAA,IACV,OAAO,uBAAuB,MAAM,4BAA4B,GAAG;AAAA;AAAA,MAEnE,OAAO,GAAG;AAAA,IACV,OAAO,uBAAuB,MAAM,4BAA4B,GAAG;AAAA;AAAA,EAEvE,KAAK,GAAG;AAAA,IACJ,KAAK,WAAW,MAAM;AAAA;AAAA,EAS1B,EAAE,CAAC,OAAO,UAAU;AAAA,IAChB,MAAM,YAAY,uBAAuB,MAAM,8BAA8B,GAAG,EAAE,WAAW,uBAAuB,MAAM,8BAA8B,GAAG,EAAE,SAAS,CAAC;AAAA,IACvK,UAAU,KAAK,EAAE,SAAS,CAAC;AAAA,IAC3B,OAAO;AAAA;AAAA,EASX,GAAG,CAAC,OAAO,UAAU;AAAA,IACjB,MAAM,YAAY,uBAAuB,MAAM,8BAA8B,GAAG,EAAE;AAAA,IAClF,IAAI,CAAC;AAAA,MACD,OAAO;AAAA,IACX,MAAM,QAAQ,UAAU,UAAU,CAAC,MAAM,EAAE,aAAa,QAAQ;AAAA,IAChE,IAAI,SAAS;AAAA,MACT,UAAU,OAAO,OAAO,CAAC;AAAA,IAC7B,OAAO;AAAA;AAAA,EAOX,IAAI,CAAC,OAAO,UAAU;AAAA,IAClB,MAAM,YAAY,uBAAuB,MAAM,8BAA8B,GAAG,EAAE,WAAW,uBAAuB,MAAM,8BAA8B,GAAG,EAAE,SAAS,CAAC;AAAA,IACvK,UAAU,KAAK,EAAE,UAAU,MAAM,KAAK,CAAC;AAAA,IACvC,OAAO;AAAA;AAAA,EAaX,OAAO,CAAC,OAAO;AAAA,IACX,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACpC,uBAAuB,MAAM,2CAA2C,MAAM,GAAG;AAAA,MACjF,IAAI,UAAU;AAAA,QACV,KAAK,KAAK,SAAS,MAAM;AAAA,MAC7B,KAAK,KAAK,OAAO,OAAO;AAAA,KAC3B;AAAA;AAAA,OAEC,KAAI,GAAG;AAAA,IACT,uBAAuB,MAAM,2CAA2C,MAAM,GAAG;AAAA,IACjF,MAAM,uBAAuB,MAAM,+BAA+B,GAAG;AAAA;AAAA,MAErE,cAAc,GAAG;AAAA,IACjB,OAAO,uBAAuB,MAAM,2CAA2C,GAAG;AAAA;AAAA,OAOhF,aAAY,GAAG;AAAA,IACjB,MAAM,KAAK,KAAK;AAAA,IAChB,OAAO,uBAAuB,MAAM,8BAA8B,KAAK,kCAAkC,EAAE,KAAK,IAAI;AAAA;AAAA,OAOlH,UAAS,GAAG;AAAA,IACd,MAAM,KAAK,KAAK;AAAA,IAChB,OAAO,uBAAuB,MAAM,8BAA8B,KAAK,+BAA+B,EAAE,KAAK,IAAI;AAAA;AAAA,EAErH,KAAK,CAAC,UAAU,MAAM;AAAA,IAElB,IAAI,uBAAuB,MAAM,0BAA0B,GAAG;AAAA,MAC1D;AAAA,IACJ,IAAI,UAAU,OAAO;AAAA,MACjB,uBAAuB,MAAM,0BAA0B,MAAM,GAAG;AAAA,MAChE,uBAAuB,MAAM,sCAAsC,GAAG,EAAE,KAAK,IAAI;AAAA,IACrF;AAAA,IACA,MAAM,YAAY,uBAAuB,MAAM,8BAA8B,GAAG,EAAE;AAAA,IAClF,IAAI,WAAW;AAAA,MACX,uBAAuB,MAAM,8BAA8B,GAAG,EAAE,SAAS,UAAU,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI;AAAA,MACxG,UAAU,QAAQ,GAAG,eAAe,SAAS,GAAG,IAAI,CAAC;AAAA,IACzD;AAAA,IACA,IAAI,UAAU,SAAS;AAAA,MACnB,MAAM,SAAQ,KAAK;AAAA,MACnB,IAAI,CAAC,uBAAuB,MAAM,2CAA2C,GAAG,KAAK,CAAC,WAAW,QAAQ;AAAA,QACrG,QAAQ,OAAO,MAAK;AAAA,MACxB;AAAA,MACA,uBAAuB,MAAM,2CAA2C,GAAG,EAAE,KAAK,MAAM,MAAK;AAAA,MAC7F,uBAAuB,MAAM,qCAAqC,GAAG,EAAE,KAAK,MAAM,MAAK;AAAA,MACvF,KAAK,MAAM,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,IAAI,UAAU,SAAS;AAAA,MAEnB,MAAM,SAAQ,KAAK;AAAA,MACnB,IAAI,CAAC,uBAAuB,MAAM,2CAA2C,GAAG,KAAK,CAAC,WAAW,QAAQ;AAAA,QAOrG,QAAQ,OAAO,MAAK;AAAA,MACxB;AAAA,MACA,uBAAuB,MAAM,2CAA2C,GAAG,EAAE,KAAK,MAAM,MAAK;AAAA,MAC7F,uBAAuB,MAAM,qCAAqC,GAAG,EAAE,KAAK,MAAM,MAAK;AAAA,MACvF,KAAK,MAAM,KAAK;AAAA,IACpB;AAAA;AAAA,EAEJ,UAAU,GAAG;AAAA,IACT,MAAM,eAAe,KAAK,iBAAiB,GAAG,EAAE;AAAA,IAChD,IAAI,cAAc;AAAA,MACd,KAAK,MAAM,gBAAgB,uBAAuB,MAAM,8BAA8B,KAAK,kCAAkC,EAAE,KAAK,IAAI,CAAC;AAAA,IAC7I;AAAA;AAAA,OAEE,oBAAmB,CAAC,gBAAgB,SAAS;AAAA,IAC/C,MAAM,SAAS,SAAS;AAAA,IACxB,IAAI;AAAA,IACJ,IAAI,QAAQ;AAAA,MACR,IAAI,OAAO;AAAA,QACP,KAAK,WAAW,MAAM;AAAA,MAC1B,eAAe,KAAK,WAAW,MAAM,KAAK,KAAK,UAAU;AAAA,MACzD,OAAO,iBAAiB,SAAS,YAAY;AAAA,IACjD;AAAA,IACA,IAAI;AAAA,MACA,uBAAuB,MAAM,8BAA8B,KAAK,+BAA+B,EAAE,KAAK,IAAI;AAAA,MAC1G,KAAK,WAAW,IAAI;AAAA,MACpB,MAAM,SAAS,OAAO,mBAAmB,gBAAgB,KAAK,UAAU;AAAA,MACxE,iBAAiB,SAAS,QAAQ;AAAA,QAC9B,uBAAuB,MAAM,8BAA8B,KAAK,iCAAiC,EAAE,KAAK,MAAM,KAAK;AAAA,MACvH;AAAA,MACA,IAAI,OAAO,WAAW,QAAQ,SAAS;AAAA,QACnC,MAAM,IAAI;AAAA,MACd;AAAA,MACA,uBAAuB,MAAM,8BAA8B,KAAK,6BAA6B,EAAE,KAAK,IAAI;AAAA,cAE5G;AAAA,MACI,IAAI,UAAU,cAAc;AAAA,QACxB,OAAO,oBAAoB,SAAS,YAAY;AAAA,MACpD;AAAA;AAAA;AAAA,IAGN,4CAA4C,IAAI,SAAW,4BAA4B,IAAI,SAAW,sCAAsC,IAAI,SAAW,6CAA6C,IAAI,SAAW,4CAA4C,IAAI,SAAW,gCAAgC,IAAI,SAAW,uCAAuC,IAAI,SAAW,sCAAsC,IAAI,SAAW,+BAA+B,IAAI,SAAW,2BAA2B,IAAI,SAAW,6BAA6B,IAAI,SAAW,6BAA6B,IAAI,SAAW,4CAA4C,IAAI,SAAW,8BAA8B,IAAI,SAAW,gCAAgC,IAAI,SAAW,4BAA4B,IAAI,SAAW,iCAAiC,IAAI,SAAW,+BAA+B,IAAI,SAAW,qCAAqC,SAAS,kCAAkC,GAAG;AAAA,IAC78B,IAAI,KAAK,iBAAiB,WAAW,GAAG;AAAA,MACpC,MAAM,IAAI,eAAe,8DAA8D;AAAA,IAC3F;AAAA,IACA,OAAO,KAAK,iBAAiB,GAAG,EAAE;AAAA,KACnC,kCAAkC,SAAS,+BAA+B,GAAG;AAAA,IAC5E,IAAI,KAAK,iBAAiB,WAAW,GAAG;AAAA,MACpC,MAAM,IAAI,eAAe,8DAA8D;AAAA,IAC3F;AAAA,IACA,MAAM,aAAa,KAAK,iBACnB,GAAG,EAAE,EACL,QAAQ,OAAO,CAAC,UAAU,MAAM,SAAS,MAAM,EAC/C,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IAC9B,IAAI,WAAW,WAAW,GAAG;AAAA,MACzB,MAAM,IAAI,eAAe,+DAA+D;AAAA,IAC5F;AAAA,IACA,OAAO,WAAW,KAAK,GAAG;AAAA,KAC3B,kCAAkC,SAAS,+BAA+B,GAAG;AAAA,IAC5E,IAAI,KAAK;AAAA,MACL;AAAA,IACJ,uBAAuB,MAAM,2CAA2C,WAAW,GAAG;AAAA,KACvF,oCAAoC,SAAS,iCAAiC,CAAC,OAAO;AAAA,IACrF,IAAI,KAAK;AAAA,MACL;AAAA,IACJ,MAAM,kBAAkB,uBAAuB,MAAM,8BAA8B,KAAK,oCAAoC,EAAE,KAAK,MAAM,KAAK;AAAA,IAC9I,KAAK,MAAM,eAAe,OAAO,eAAe;AAAA,IAChD,QAAQ,MAAM;AAAA,WACL,uBAAuB;AAAA,QACxB,MAAM,UAAU,gBAAgB,QAAQ,GAAG,EAAE;AAAA,QAC7C,QAAQ,MAAM,MAAM;AAAA,eACX,cAAc;AAAA,YACf,IAAI,QAAQ,SAAS,QAAQ;AAAA,cACzB,KAAK,MAAM,QAAQ,MAAM,MAAM,MAAM,QAAQ,QAAQ,EAAE;AAAA,YAC3D;AAAA,YACA;AAAA,UACJ;AAAA,eACK,mBAAmB;AAAA,YACpB,IAAI,QAAQ,SAAS,QAAQ;AAAA,cACzB,KAAK,MAAM,YAAY,MAAM,MAAM,UAAU,QAAQ,aAAa,CAAC,CAAC;AAAA,YACxE;AAAA,YACA;AAAA,UACJ;AAAA,eACK,oBAAoB;AAAA,YACrB,IAAI,gBAAgB,OAAO,KAAK,QAAQ,OAAO;AAAA,cAC3C,KAAK,MAAM,aAAa,MAAM,MAAM,cAAc,QAAQ,KAAK;AAAA,YACnE;AAAA,YACA;AAAA,UACJ;AAAA,eACK,kBAAkB;AAAA,YACnB,IAAI,QAAQ,SAAS,YAAY;AAAA,cAC7B,KAAK,MAAM,YAAY,MAAM,MAAM,UAAU,QAAQ,QAAQ;AAAA,YACjE;AAAA,YACA;AAAA,UACJ;AAAA,eACK,mBAAmB;AAAA,YACpB,IAAI,QAAQ,SAAS,YAAY;AAAA,cAC7B,KAAK,MAAM,aAAa,QAAQ,SAAS;AAAA,YAC7C;AAAA,YACA;AAAA,UACJ;AAAA;AAAA,YAEI,WAAW,MAAM,KAAK;AAAA;AAAA,QAE9B;AAAA,MACJ;AAAA,WACK,gBAAgB;AAAA,QACjB,KAAK,iBAAiB,eAAe;AAAA,QACrC,KAAK,YAAY,sBAAsB,iBAAiB,uBAAuB,MAAM,2BAA2B,GAAG,GAAG,EAAE,QAAQ,uBAAuB,MAAM,2BAA2B,GAAG,EAAE,CAAC,GAAG,IAAI;AAAA,QACrM;AAAA,MACJ;AAAA,WACK,sBAAsB;AAAA,QACvB,KAAK,MAAM,gBAAgB,gBAAgB,QAAQ,GAAG,EAAE,CAAC;AAAA,QACzD;AAAA,MACJ;AAAA,WACK,iBAAiB;AAAA,QAClB,uBAAuB,MAAM,2CAA2C,iBAAiB,GAAG;AAAA,QAC5F;AAAA,MACJ;AAAA,WACK;AAAA,WACA;AAAA,QACD;AAAA;AAAA,KAET,gCAAgC,SAAS,6BAA6B,GAAG;AAAA,IACxE,IAAI,KAAK,OAAO;AAAA,MACZ,MAAM,IAAI,eAAe,yCAAyC;AAAA,IACtE;AAAA,IACA,MAAM,WAAW,uBAAuB,MAAM,2CAA2C,GAAG;AAAA,IAC5F,IAAI,CAAC,UAAU;AAAA,MACX,MAAM,IAAI,eAAe,0CAA0C;AAAA,IACvE;AAAA,IACA,uBAAuB,MAAM,2CAA2C,WAAW,GAAG;AAAA,IACtF,OAAO,sBAAsB,UAAU,uBAAuB,MAAM,2BAA2B,GAAG,GAAG,EAAE,QAAQ,uBAAuB,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAAA,KAC9K,uCAAuC,SAAS,oCAAoC,CAAC,OAAO;AAAA,IAC3F,IAAI,WAAW,uBAAuB,MAAM,2CAA2C,GAAG;AAAA,IAC1F,IAAI,MAAM,SAAS,iBAAiB;AAAA,MAChC,IAAI,UAAU;AAAA,QACV,MAAM,IAAI,eAAe,+BAA+B,MAAM,sCAAsC;AAAA,MACxG;AAAA,MACA,OAAO,MAAM;AAAA,IACjB;AAAA,IACA,IAAI,CAAC,UAAU;AAAA,MACX,MAAM,IAAI,eAAe,+BAA+B,MAAM,6BAA6B;AAAA,IAC/F;AAAA,IACA,QAAQ,MAAM;AAAA,WACL;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,SAAS,YAAY,MAAM,MAAM;AAAA,QACjC,SAAS,cAAc,MAAM,MAAM;AAAA,QACnC,SAAS,gBAAgB,MAAM,MAAM;AAAA,QACrC,SAAS,MAAM,gBAAgB,MAAM,MAAM;AAAA,QAC3C,SAAS,qBAAqB,MAAM;AAAA,QACpC,IAAI,MAAM,MAAM,gBAAgB,MAAM;AAAA,UAClC,SAAS,MAAM,eAAe,MAAM,MAAM;AAAA,QAC9C;AAAA,QACA,IAAI,MAAM,MAAM,+BAA+B,MAAM;AAAA,UACjD,SAAS,MAAM,8BAA8B,MAAM,MAAM;AAAA,QAC7D;AAAA,QACA,IAAI,MAAM,MAAM,2BAA2B,MAAM;AAAA,UAC7C,SAAS,MAAM,0BAA0B,MAAM,MAAM;AAAA,QACzD;AAAA,QACA,IAAI,MAAM,MAAM,mBAAmB,MAAM;AAAA,UACrC,SAAS,MAAM,kBAAkB,MAAM,MAAM;AAAA,QACjD;AAAA,QACA,OAAO;AAAA,WACN;AAAA,QACD,SAAS,QAAQ,KAAK,MAAM,aAAa;AAAA,QACzC,OAAO;AAAA,WACN,uBAAuB;AAAA,QACxB,MAAM,kBAAkB,SAAS,QAAQ,GAAG,MAAM,KAAK;AAAA,QACvD,QAAQ,MAAM,MAAM;AAAA,eACX,cAAc;AAAA,YACf,IAAI,iBAAiB,SAAS,QAAQ;AAAA,cAClC,SAAS,QAAQ,MAAM,SAAS;AAAA,mBACzB;AAAA,gBACH,OAAO,gBAAgB,QAAQ,MAAM,MAAM,MAAM;AAAA,cACrD;AAAA,YACJ;AAAA,YACA;AAAA,UACJ;AAAA,eACK,mBAAmB;AAAA,YACpB,IAAI,iBAAiB,SAAS,QAAQ;AAAA,cAClC,SAAS,QAAQ,MAAM,SAAS;AAAA,mBACzB;AAAA,gBACH,WAAW,CAAC,GAAI,gBAAgB,aAAa,CAAC,GAAI,MAAM,MAAM,QAAQ;AAAA,cAC1E;AAAA,YACJ;AAAA,YACA;AAAA,UACJ;AAAA,eACK,oBAAoB;AAAA,YACrB,IAAI,mBAAmB,gBAAgB,eAAe,GAAG;AAAA,cAIrD,IAAI,UAAU,gBAAgB,sBAAsB;AAAA,cACpD,WAAW,MAAM,MAAM;AAAA,cACvB,MAAM,aAAa,KAAK,gBAAgB;AAAA,cACxC,OAAO,eAAe,YAAY,mBAAmB;AAAA,gBACjD,OAAO;AAAA,gBACP,YAAY;AAAA,gBACZ,UAAU;AAAA,cACd,CAAC;AAAA,cACD,IAAI,SAAS;AAAA,gBACT,IAAI;AAAA,kBACA,WAAW,QAAQ,aAAa,OAAO;AAAA,kBAE3C,OAAO,KAAK;AAAA,kBACR,MAAM,SAAQ,IAAI,eAAe,2GAA2G,cAAc,SAAS;AAAA,kBACnK,uBAAuB,MAAM,gCAAgC,GAAG,EAAE,KAAK,MAAM,MAAK;AAAA;AAAA,cAE1F;AAAA,cACA,SAAS,QAAQ,MAAM,SAAS;AAAA,YACpC;AAAA,YACA;AAAA,UACJ;AAAA,eACK,kBAAkB;AAAA,YACnB,IAAI,iBAAiB,SAAS,YAAY;AAAA,cACtC,SAAS,QAAQ,MAAM,SAAS;AAAA,mBACzB;AAAA,gBACH,UAAU,gBAAgB,WAAW,MAAM,MAAM;AAAA,cACrD;AAAA,YACJ;AAAA,YACA;AAAA,UACJ;AAAA,eACK,mBAAmB;AAAA,YACpB,IAAI,iBAAiB,SAAS,YAAY;AAAA,cACtC,SAAS,QAAQ,MAAM,SAAS;AAAA,mBACzB;AAAA,gBACH,WAAW,MAAM,MAAM;AAAA,cAC3B;AAAA,YACJ;AAAA,YACA;AAAA,UACJ;AAAA;AAAA,YAEI,WAAW,MAAM,KAAK;AAAA;AAAA,QAE9B,OAAO;AAAA,MACX;AAAA,WACK;AAAA,QACD,OAAO;AAAA;AAAA,KAEhB,OAAO,eAAe,GAAG;AAAA,IACxB,MAAM,YAAY,CAAC;AAAA,IACnB,MAAM,YAAY,CAAC;AAAA,IACnB,IAAI,OAAO;AAAA,IACX,KAAK,GAAG,eAAe,CAAC,UAAU;AAAA,MAC9B,MAAM,SAAS,UAAU,MAAM;AAAA,MAC/B,IAAI,QAAQ;AAAA,QACR,OAAO,QAAQ,KAAK;AAAA,MACxB,EACK;AAAA,QACD,UAAU,KAAK,KAAK;AAAA;AAAA,KAE3B;AAAA,IACD,KAAK,GAAG,OAAO,MAAM;AAAA,MACjB,OAAO;AAAA,MACP,WAAW,UAAU,WAAW;AAAA,QAC5B,OAAO,QAAQ,SAAS;AAAA,MAC5B;AAAA,MACA,UAAU,SAAS;AAAA,KACtB;AAAA,IACD,KAAK,GAAG,SAAS,CAAC,QAAQ;AAAA,MACtB,OAAO;AAAA,MACP,WAAW,UAAU,WAAW;AAAA,QAC5B,OAAO,OAAO,GAAG;AAAA,MACrB;AAAA,MACA,UAAU,SAAS;AAAA,KACtB;AAAA,IACD,KAAK,GAAG,SAAS,CAAC,QAAQ;AAAA,MACtB,OAAO;AAAA,MACP,WAAW,UAAU,WAAW;AAAA,QAC5B,OAAO,OAAO,GAAG;AAAA,MACrB;AAAA,MACA,UAAU,SAAS;AAAA,KACtB;AAAA,IACD,OAAO;AAAA,MACH,MAAM,YAAY;AAAA,QACd,IAAI,CAAC,UAAU,QAAQ;AAAA,UACnB,IAAI,MAAM;AAAA,YACN,OAAO,EAAE,OAAO,WAAW,MAAM,KAAK;AAAA,UAC1C;AAAA,UACA,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW,UAAU,KAAK,EAAE,SAAS,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,SAAQ,EAAE,OAAO,QAAO,MAAM,MAAM,IAAI,EAAE,OAAO,WAAW,MAAM,KAAK,CAAE;AAAA,QAC3K;AAAA,QACA,MAAM,QAAQ,UAAU,MAAM;AAAA,QAC9B,OAAO,EAAE,OAAO,OAAO,MAAM,MAAM;AAAA;AAAA,MAEvC,QAAQ,YAAY;AAAA,QAChB,KAAK,MAAM;AAAA,QACX,OAAO,EAAE,OAAO,WAAW,MAAM,KAAK;AAAA;AAAA,IAE9C;AAAA;AAAA,EAEJ,gBAAgB,GAAG;AAAA,IACf,MAAM,SAAS,IAAI,OAAO,KAAK,OAAO,eAAe,KAAK,IAAI,GAAG,KAAK,UAAU;AAAA,IAChF,OAAO,OAAO,iBAAiB;AAAA;AAEvC;AAEA,SAAS,UAAU,CAAC,GAAG;;;ACplBhB,IAAM,0BAA0B;AAChC,IAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACDtC,IAAI;AAAJ,IAA+B;AAA/B,IAAyD;AAAzD,IAAkF;AAAlF,IAAyG;AAAzG,IAAkI;AAAlI,IAA2J;AAA3J,IAAyL;AAAzL,IAAqN;AAArN,IAAqP;AAArP,IAAsR;AAQtR,SAAS,oBAAoB,GAAG;AAAA,EAC5B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM,UAAU,IAAI,QAAQ,CAAC,KAAK,QAAQ;AAAA,IACtC,UAAU;AAAA,IACV,SAAS;AAAA,GACZ;AAAA,EACD,OAAO,EAAE,SAAS,SAAkB,OAAe;AAAA;AAAA;AAQhD,MAAM,eAAe;AAAA,EACxB,WAAW,CAAC,QAAQ,QAAQ,SAAS;AAAA,IACjC,0BAA0B,IAAI,IAAI;AAAA,IAClC,KAAK,SAAS;AAAA,IAEd,yBAAyB,IAAI,MAAM,KAAK;AAAA,IAExC,wBAAwB,IAAI,MAAM,KAAK;AAAA,IAEvC,sBAAsB,IAAI,MAAW,SAAC;AAAA,IACtC,wBAAwB,IAAI,MAAW,SAAC;AAAA,IAExC,wBAAwB,IAAI,MAAW,SAAC;AAAA,IAExC,6BAA6B,IAAI,MAAW,SAAC;AAAA,IAE7C,2BAA2B,IAAI,MAAW,SAAC;AAAA,IAE3C,+BAA+B,IAAI,MAAM,CAAC;AAAA,IAC1C,uBAAuB,MAAM,uBAAuB;AAAA,MAChD,QAAQ;AAAA,WAID;AAAA,QACH,UAAU,gBAAgB,OAAO,QAAQ;AAAA,MAC7C;AAAA,IACJ,GAAG,GAAG;AAAA,IACN,uBAAuB,MAAM,yBAAyB;AAAA,SAC/C;AAAA,MACH,SAAS,aAAa,CAAC,EAAE,sBAAsB,iBAAiB,GAAG,SAAS,OAAO,CAAC;AAAA,IACxF,GAAG,GAAG;AAAA,IACN,uBAAuB,MAAM,4BAA4B,qBAAqB,GAAG,GAAG;AAAA;AAAA,WAE/E,2BAA2B,IAAI,SAAW,0BAA0B,IAAI,SAAW,wBAAwB,IAAI,SAAW,0BAA0B,IAAI,SAAW,0BAA0B,IAAI,SAAW,+BAA+B,IAAI,SAAW,6BAA6B,IAAI,SAAW,iCAAiC,IAAI,SAAW,4BAA4B,IAAI,SAAW,kCAAkC,eAAe,+BAA+B,GAAG;AAAA,IACzd,MAAM,oBAAoB,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO;AAAA,IAC1F,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,SAAS;AAAA,MAClD,OAAO;AAAA,IACX;AAAA,IACA,IAAI,aAAa;AAAA,IACjB,IAAI,uBAAuB,MAAM,yBAAyB,GAAG,MAAM,WAAW;AAAA,MAC1E,IAAI;AAAA,QACA,MAAM,UAAU,MAAM,uBAAuB,MAAM,yBAAyB,GAAG;AAAA,QAC/E,MAAM,mBAAmB,QAAQ,MAAM,gBAClC,QAAQ,MAAM,+BAA+B,MAC7C,QAAQ,MAAM,2BAA2B;AAAA,QAC9C,aAAa,mBAAmB,QAAQ,MAAM;AAAA,QAElD,MAAM;AAAA,QAEF,OAAO;AAAA;AAAA,IAEf;AAAA,IACA,MAAM,YAAY,kBAAkB,yBAAyB;AAAA,IAC7D,IAAI,aAAa,WAAW;AAAA,MACxB,OAAO;AAAA,IACX;AAAA,IACA,MAAM,QAAQ,kBAAkB,SAAS,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO;AAAA,IACzG,MAAM,gBAAgB,kBAAkB,iBAAiB;AAAA,IACzD,MAAM,WAAW,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO;AAAA,IACjF,IAAI,SAAS,SAAS,SAAS,GAAG,SAAS,aAAa;AAAA,MAGpD,MAAM,cAAc,SAAS,SAAS,SAAS;AAAA,MAC/C,IAAI,MAAM,QAAQ,YAAY,OAAO,GAAG;AAAA,QACpC,MAAM,gBAAgB,YAAY,QAAQ,OAAO,CAAC,UAAU,MAAM,SAAS,UAAU;AAAA,QACrF,IAAI,cAAc,WAAW,GAAG;AAAA,UAE5B,SAAS,IAAI;AAAA,QACjB,EACK;AAAA,UACD,YAAY,UAAU;AAAA;AAAA,MAE9B;AAAA,IACJ;AAAA,IACA,MAAM,WAAW,MAAM,KAAK,OAAO,KAAK,SAAS,OAAO;AAAA,MACpD;AAAA,MACA,UAAU;AAAA,QACN,GAAG;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN,SAAS;AAAA,YACL;AAAA,cACI,MAAM;AAAA,cACN,MAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,YAAY,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO;AAAA,IAChF,GAAG;AAAA,MACC,SAAS,EAAE,sBAAsB,aAAa;AAAA,IAClD,CAAC;AAAA,IACD,IAAI,SAAS,QAAQ,IAAI,SAAS,QAAQ;AAAA,MACtC,MAAM,IAAI,eAAe,uCAAuC;AAAA,IACpE;AAAA,IACA,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO,WAAW;AAAA,MACvE;AAAA,QACI,MAAM;AAAA,QACN,SAAS,SAAS;AAAA,MACtB;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,KACR,OAAO,eAAe,GAAG;AAAA,IACxB,IAAI;AAAA,IACJ,IAAI,uBAAuB,MAAM,0BAA0B,GAAG,GAAG;AAAA,MAC7D,MAAM,IAAI,eAAe,uCAAuC;AAAA,IACpE;AAAA,IACA,uBAAuB,MAAM,0BAA0B,MAAM,GAAG;AAAA,IAChE,uBAAuB,MAAM,yBAAyB,MAAM,GAAG;AAAA,IAC/D,uBAAuB,MAAM,8BAA8B,WAAW,GAAG;AAAA,IACzE,IAAI;AAAA,MACA,OAAO,MAAM;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,UACA,IAAI,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO,kBAChE,uBAAuB,MAAM,gCAAgC,GAAG,KAAK,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO,gBAAgB;AAAA,YACrJ;AAAA,UACJ;AAAA,UACA,uBAAuB,MAAM,yBAAyB,OAAO,GAAG;AAAA,UAChE,uBAAuB,MAAM,8BAA8B,WAAW,GAAG;AAAA,UACzE,uBAAuB,MAAM,iCAAiC,KAAK,uBAAuB,MAAM,gCAAgC,GAAG,GAAG,MAAM,KAAK,GAAG;AAAA,UACpJ,uBAAuB,MAAM,yBAAyB,WAAW,GAAG;AAAA,UACpE,QAAQ,gBAAgB,sBAAsB,WAAW,uBAAuB,MAAM,uBAAuB,GAAG,EAAE;AAAA,UAClH,IAAI,OAAO,QAAQ;AAAA,YACf,SAAS,KAAK,OAAO,KAAK,SAAS,OAAO,KAAK,OAAO,GAAG,uBAAuB,MAAM,yBAAyB,GAAG,CAAC;AAAA,YACnH,uBAAuB,MAAM,yBAAyB,OAAO,aAAa,GAAG,GAAG;AAAA,YAGhF,uBAAuB,MAAM,yBAAyB,GAAG,EAAE,MAAM,MAAM,EAAG;AAAA,YAC1E,MAAM;AAAA,UACV,EACK;AAAA,YACD,uBAAuB,MAAM,yBAAyB,KAAK,OAAO,KAAK,SAAS,OAAO,KAAK,QAAQ,QAAQ,MAAM,GAAG,uBAAuB,MAAM,yBAAyB,GAAG,CAAC,GAAG,GAAG;AAAA,YACrL,MAAM,uBAAuB,MAAM,yBAAyB,GAAG;AAAA;AAAA,UAEnE,MAAM,cAAc,MAAM,uBAAuB,MAAM,2BAA2B,KAAK,+BAA+B,EAAE,KAAK,IAAI;AAAA,UACjI,IAAI,CAAC,aAAa;AAAA,YACd,IAAI,CAAC,uBAAuB,MAAM,yBAAyB,GAAG,GAAG;AAAA,cAC7D,QAAQ,MAAM,YAAY,MAAM,uBAAuB,MAAM,yBAAyB,GAAG;AAAA,cACzF,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO,SAAS,KAAK,EAAE,MAAM,QAAQ,CAAC;AAAA,YACnG;AAAA,YACA,MAAM,cAAc,MAAM,uBAAuB,MAAM,2BAA2B,KAAK,oCAAoC,EAAE,KAAK,MAAM,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO,SAAS,GAAG,EAAE,CAAC;AAAA,YACvN,IAAI,aAAa;AAAA,cACb,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,OAAO,SAAS,KAAK,WAAW;AAAA,YAC7F,EACK,SAAI,CAAC,uBAAuB,MAAM,yBAAyB,GAAG,GAAG;AAAA,cAClE;AAAA,YACJ;AAAA,UACJ;AAAA,kBAEJ;AAAA,UACI,IAAI,QAAQ;AAAA,YACR,OAAO,MAAM;AAAA,UACjB;AAAA;AAAA,MAER;AAAA,MACA,IAAI,CAAC,uBAAuB,MAAM,yBAAyB,GAAG,GAAG;AAAA,QAC7D,MAAM,IAAI,eAAe,wDAAwD;AAAA,MACrF;AAAA,MACA,uBAAuB,MAAM,4BAA4B,GAAG,EAAE,QAAQ,MAAM,uBAAuB,MAAM,yBAAyB,GAAG,CAAC;AAAA,MAE1I,OAAO,QAAO;AAAA,MACV,uBAAuB,MAAM,0BAA0B,OAAO,GAAG;AAAA,MAEjE,uBAAuB,MAAM,4BAA4B,GAAG,EAAE,QAAQ,MAAM,MAAM,EAAG;AAAA,MACrF,uBAAuB,MAAM,4BAA4B,GAAG,EAAE,OAAO,MAAK;AAAA,MAC1E,uBAAuB,MAAM,4BAA4B,qBAAqB,GAAG,GAAG;AAAA,MACpF,MAAM;AAAA;AAAA;AAAA,EAGd,iBAAiB,CAAC,iBAAiB;AAAA,IAC/B,IAAI,OAAO,oBAAoB,YAAY;AAAA,MACvC,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,SAAS,gBAAgB,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,MAAM;AAAA,IACrJ,EACK;AAAA,MACD,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,SAAS;AAAA;AAAA,IAEtE,uBAAuB,MAAM,yBAAyB,MAAM,GAAG;AAAA,IAE/D,uBAAuB,MAAM,8BAA8B,WAAW,GAAG;AAAA;AAAA,OAcvE,qBAAoB,GAAG;AAAA,IACzB,MAAM,UAAW,MAAM,uBAAuB,MAAM,yBAAyB,GAAG,KAAM,KAAK,OAAO,SAAS,GAAG,EAAE;AAAA,IAChH,IAAI,CAAC,SAAS;AAAA,MACV,OAAO;AAAA,IACX;AAAA,IACA,OAAO,uBAAuB,MAAM,2BAA2B,KAAK,oCAAoC,EAAE,KAAK,MAAM,OAAO;AAAA;AAAA,EAkBhI,IAAI,GAAG;AAAA,IACH,OAAO,uBAAuB,MAAM,4BAA4B,GAAG,EAAE;AAAA;AAAA,OAenE,aAAY,GAAG;AAAA,IAEjB,IAAI,CAAC,uBAAuB,MAAM,0BAA0B,GAAG,GAAG;AAAA,MAC9D,iBAAiB,KAAK,MAAM,CAE5B;AAAA,IACJ;AAAA,IAEA,OAAO,KAAK,KAAK;AAAA;AAAA,MAYjB,MAAM,GAAG;AAAA,IACT,OAAO,uBAAuB,MAAM,uBAAuB,GAAG,EAAE;AAAA;AAAA,EAmBpE,YAAY,IAAI,UAAU;AAAA,IACtB,KAAK,kBAAkB,CAAC,YAAY;AAAA,SAC7B;AAAA,MACH,UAAU,CAAC,GAAG,OAAO,UAAU,GAAG,QAAQ;AAAA,IAC9C,EAAE;AAAA;AAAA,EAMN,IAAI,CAAC,aAAa,YAAY;AAAA,IAC1B,OAAO,KAAK,aAAa,EAAE,KAAK,aAAa,UAAU;AAAA;AAE/D;AACA,uCAAuC,eAAe,qCAAoC,CAAC,aAAa;AAAA,EACpG,IAAI,uBAAuB,MAAM,8BAA8B,GAAG,MAAM,WAAW;AAAA,IAC/E,OAAO,uBAAuB,MAAM,8BAA8B,GAAG;AAAA,EACzE;AAAA,EACA,uBAAuB,MAAM,8BAA8B,qBAAqB,uBAAuB,MAAM,uBAAuB,GAAG,EAAE,QAAQ,WAAW,GAAG,GAAG;AAAA,EAClK,OAAO,uBAAuB,MAAM,8BAA8B,GAAG;AAAA;AAEzE,eAAe,oBAAoB,CAAC,QAAQ,cAAc,OAAO,SAAS,GAAG,EAAE,GAAG;AAAA,EAE9E,IAAI,CAAC,eACD,YAAY,SAAS,eACrB,CAAC,YAAY,WACb,OAAO,YAAY,YAAY,UAAU;AAAA,IACzC,OAAO;AAAA,EACX;AAAA,EACA,MAAM,gBAAgB,YAAY,QAAQ,OAAO,CAAC,YAAY,QAAQ,SAAS,UAAU;AAAA,EACzF,IAAI,cAAc,WAAW,GAAG;AAAA,IAC5B,OAAO;AAAA,EACX;AAAA,EACA,MAAM,cAAc,MAAM,QAAQ,IAAI,cAAc,IAAI,OAAO,YAAY;AAAA,IACvE,MAAM,OAAO,OAAO,MAAM,KAAK,CAAC,OAAO,UAAU,IAAI,EAAE,OAAO,EAAE,qBAAqB,QAAQ,IAAI;AAAA,IACjG,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO;AAAA,MAC3B,OAAO;AAAA,QACH,MAAM;AAAA,QACN,aAAa,QAAQ;AAAA,QACrB,SAAS,gBAAgB,QAAQ;AAAA,QACjC,UAAU;AAAA,MACd;AAAA,IACJ;AAAA,IACA,IAAI;AAAA,MACA,IAAI,QAAQ,QAAQ;AAAA,MACpB,IAAI,WAAW,QAAQ,KAAK,OAAO;AAAA,QAC/B,QAAQ,KAAK,MAAM,KAAK;AAAA,MAC5B;AAAA,MACA,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK;AAAA,MACnC,OAAO;AAAA,QACH,MAAM;AAAA,QACN,aAAa,QAAQ;AAAA,QACrB,SAAS;AAAA,MACb;AAAA,MAEJ,OAAO,QAAO;AAAA,MACV,OAAO;AAAA,QACH,MAAM;AAAA,QACN,aAAa,QAAQ;AAAA,QACrB,SAAS,UAAU,kBAAiB,QAAQ,OAAM,UAAU,OAAO,MAAK;AAAA,QACxE,UAAU;AAAA,MACd;AAAA;AAAA,GAEP,CAAC;AAAA,EACF,OAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,EACb;AAAA;;;ACxWG,MAAM,aAAa;AAAA,EACtB,WAAW,CAAC,UAAU,YAAY;AAAA,IAC9B,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa;AAAA;AAAA,SAEf,OAAO,GAAG;AAAA,IACb,MAAM,cAAc,IAAI;AAAA,IACxB,iBAAiB,SAAS,KAAK,UAAU;AAAA,MACrC,WAAW,QAAQ,YAAY,OAAO,KAAK,GAAG;AAAA,QAC1C,MAAM,KAAK,MAAM,IAAI;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,WAAW,QAAQ,YAAY,MAAM,GAAG;AAAA,MACpC,MAAM,KAAK,MAAM,IAAI;AAAA,IACzB;AAAA;AAAA,GAEH,OAAO,cAAc,GAAG;AAAA,IACrB,OAAO,KAAK,QAAQ;AAAA;AAAA,SAEjB,YAAY,CAAC,UAAU,YAAY;AAAA,IACtC,IAAI,CAAC,SAAS,MAAM;AAAA,MAChB,WAAW,MAAM;AAAA,MACjB,IAAI,OAAO,WAAW,cAAc,eAChC,WAAW,UAAU,YAAY,eAAe;AAAA,QAChD,MAAM,IAAI,eAAe,gKAAgK;AAAA,MAC7L;AAAA,MACA,MAAM,IAAI,eAAe,mDAAmD;AAAA,IAChF;AAAA,IACA,OAAO,IAAI,aAAa,8BAA8B,SAAS,IAAI,GAAG,UAAU;AAAA;AAExF;;;AC1BO,MAAM,gBAAgB,YAAY;AAAA,EA8BrC,MAAM,CAAC,QAAQ,SAAS;AAAA,IACpB,QAAQ,UAAU,SAAS;AAAA,IAC3B,OAAO,KAAK,QAAQ,KAAK,kCAAkC;AAAA,MACvD;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,4BAA4B,EAAE,SAAS,EAAE;AAAA,QAChF,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAkBL,QAAQ,CAAC,gBAAgB,SAAS,CAAC,GAAG,SAAS;AAAA,IAC3C,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,IAAI,4BAA6B,4BAA4B;AAAA,SAC1E;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,4BAA4B,EAAE,SAAS,EAAE;AAAA,QAChF,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAiBL,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS;AAAA,IACvB,QAAQ,UAAU,UAAU,UAAU,CAAC;AAAA,IACvC,OAAO,KAAK,QAAQ,WAAW,kCAAmC,MAAO;AAAA,MACrE;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,4BAA4B,EAAE,SAAS,EAAE;AAAA,QAChF,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAmBL,MAAM,CAAC,gBAAgB,SAAS,CAAC,GAAG,SAAS;AAAA,IACzC,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,OAAO,4BAA6B,4BAA4B;AAAA,SAC7E;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,4BAA4B,EAAE,SAAS,EAAE;AAAA,QAChF,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAwBL,MAAM,CAAC,gBAAgB,SAAS,CAAC,GAAG,SAAS;AAAA,IACzC,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,KAAK,4BAA6B,mCAAmC;AAAA,SAClF;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,4BAA4B,EAAE,SAAS,EAAE;AAAA,QAChF,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,OAoBC,QAAO,CAAC,gBAAgB,SAAS,CAAC,GAAG,SAAS;AAAA,IAChD,MAAM,QAAQ,MAAM,KAAK,SAAS,cAAc;AAAA,IAChD,IAAI,CAAC,MAAM,aAAa;AAAA,MACpB,MAAM,IAAI,eAAe,yDAAyD,MAAM,uBAAuB,MAAM,IAAI;AAAA,IAC7H;AAAA,IACA,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QACP,IAAI,MAAM,aAAa;AAAA,SACrB;AAAA,MACH,SAAS,aAAa;AAAA,QAClB;AAAA,UACI,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,4BAA4B,EAAE,SAAS;AAAA,UAC5E,QAAQ;AAAA,QACZ;AAAA,QACA,SAAS;AAAA,MACb,CAAC;AAAA,MACD,QAAQ;AAAA,MACR,kBAAkB;AAAA,IACtB,CAAC,EACI,YAAY,CAAC,GAAG,UAAU,aAAa,aAAa,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA;AAElG;;;AC7LA,IAAM,oBAAoB;AAAA,EACtB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,2BAA2B;AAAA,EAC3B,sBAAsB;AAAA,EACtB,4BAA4B;AAAA,EAC5B,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,cAAc;AAAA,EACd,4BAA4B;AAAA,EAC5B,8BAA8B;AAClC;AAAA;AACO,MAAM,iBAAiB,YAAY;AAAA,EACtC,WAAW,GAAG;AAAA,IACV,MAAM,GAAG,SAAS;AAAA,IAClB,KAAK,UAAU,IAAe,QAAQ,KAAK,OAAO;AAAA;AAAA,EAEtD,MAAM,CAAC,QAAQ,SAAS;AAAA,IACpB,QAAQ,UAAU,SAAS;AAAA,IAC3B,IAAI,KAAK,SAAS,mBAAmB;AAAA,MACjC,QAAQ,KAAK,cAAc,KAAK,sDAAsD,kBAAkB,KAAK;AAAA,6HAAsI;AAAA,IACvP;AAAA,IACA,IAAI,UAAU,KAAK,QAAQ,SAAS;AAAA,IACpC,IAAI,CAAC,KAAK,UAAU,WAAW,MAAM;AAAA,MACjC,MAAM,wBAAwB,0BAA0B,KAAK,UAAU;AAAA,MACvE,UAAU,KAAK,QAAQ,6BAA6B,KAAK,YAAY,qBAAqB;AAAA,IAC9F;AAAA,IACA,OAAO,KAAK,QAAQ,KAAK,0BAA0B;AAAA,MAC/C;AAAA,MACA,SAAS,WAAW;AAAA,SACjB;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,KAAM,OAAO,SAAS,KAAK,OAAO,EAAE,kBAAkB,OAAO,SAAS,EAAE,IAAI,UAAW;AAAA,QACvF,SAAS;AAAA,MACb,CAAC;AAAA,MACD,QAAQ,OAAO,UAAU;AAAA,IAC7B,CAAC;AAAA;AAAA,EAkBL,KAAK,CAAC,QAAQ,SAAS;AAAA,IACnB,UAAU;AAAA,SACH;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,OAAO,SAAS,CAAC,GAAI,+BAA+B,EAAE,SAAS,EAAE;AAAA,QAC1F,SAAS;AAAA,MACb,CAAC;AAAA,IACL;AAAA,IACA,OAAO,KAAK,OAAO,QAAQ,OAAO,EAAE,KAAK,CAAC,YAAY,iBAAiB,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,UAAU,QAAQ,CAAC,CAAC;AAAA;AAAA,EAKvI,MAAM,CAAC,MAAM,SAAS;AAAA,IAClB,OAAO,kBAAkB,cAAc,MAAM,MAAM,OAAO;AAAA;AAAA,EAoB9D,WAAW,CAAC,QAAQ,SAAS;AAAA,IACzB,QAAQ,UAAU,SAAS;AAAA,IAC3B,OAAO,KAAK,QAAQ,KAAK,uCAAuC;AAAA,MAC5D;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,2BAA2B,EAAE,SAAS,EAAE;AAAA,QAC/E,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAEL,UAAU,CAAC,MAAM,SAAS;AAAA,IACtB,OAAO,IAAI,eAAe,KAAK,SAAS,MAAM,OAAO;AAAA;AAE7D;AAEA,SAAS,UAAU;AACnB,SAAS,iBAAiB;;;AC7GnB,MAAM,iBAAiB,YAAY;AAAA,EAWtC,MAAM,CAAC,SAAS,SAAS,CAAC,GAAG,SAAS;AAAA,IAClC,QAAQ,UAAU,SAAS,UAAU,CAAC;AAAA,IACtC,OAAO,KAAK,QAAQ,KAAK,kBAAmB,8BAA8B,4BAA4B;AAAA,MAClG;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,mBAAmB,EAAE,SAAS,EAAE;AAAA,QACvE,SAAS;AAAA,MACb,CAAC;AAAA,IACL,GAAG,KAAK,OAAO,CAAC;AAAA;AAAA,EAapB,QAAQ,CAAC,SAAS,QAAQ,SAAS;AAAA,IAC/B,QAAQ,UAAU,UAAU;AAAA,IAC5B,OAAO,KAAK,QAAQ,IAAI,kBAAmB,qBAAqB,qBAAqB;AAAA,SAC9E;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,mBAAmB,EAAE,SAAS,EAAE;AAAA,QACvE,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAeL,IAAI,CAAC,SAAS,SAAS,CAAC,GAAG,SAAS;AAAA,IAChC,QAAQ,UAAU,UAAU,UAAU,CAAC;AAAA,IACvC,OAAO,KAAK,QAAQ,WAAW,kBAAmB,8BAA+B,YAAa;AAAA,MAC1F;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,mBAAmB,EAAE,SAAS,EAAE;AAAA,QACvE,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAaL,MAAM,CAAC,SAAS,QAAQ,SAAS;AAAA,IAC7B,QAAQ,UAAU,UAAU;AAAA,IAC5B,OAAO,KAAK,QAAQ,OAAO,kBAAmB,qBAAqB,qBAAqB;AAAA,SACjF;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,mBAAmB,EAAE,SAAS,EAAE;AAAA,QACvE,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAET;;;ACtFO,MAAM,eAAe,YAAY;AAAA,EACpC,WAAW,GAAG;AAAA,IACV,MAAM,GAAG,SAAS;AAAA,IAClB,KAAK,WAAW,IAAgB,SAAS,KAAK,OAAO;AAAA;AAAA,EAUzD,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS;AAAA,IACzB,QAAQ,UAAU,SAAS,UAAU,CAAC;AAAA,IACtC,OAAO,KAAK,QAAQ,KAAK,wBAAwB,4BAA4B;AAAA,MACzE;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,mBAAmB,EAAE,SAAS,EAAE;AAAA,QACvE,SAAS;AAAA,MACb,CAAC;AAAA,IACL,GAAG,KAAK,OAAO,CAAC;AAAA;AAAA,EAUpB,QAAQ,CAAC,SAAS,SAAS,CAAC,GAAG,SAAS;AAAA,IACpC,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,IAAI,kBAAmB,qBAAqB;AAAA,SACzD;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,mBAAmB,EAAE,SAAS,EAAE;AAAA,QACvE,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAaL,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS;AAAA,IACvB,QAAQ,UAAU,UAAU,UAAU,CAAC;AAAA,IACvC,OAAO,KAAK,QAAQ,WAAW,wBAAyB,YAAa;AAAA,MACjE;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,mBAAmB,EAAE,SAAS,EAAE;AAAA,QACvE,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAUL,MAAM,CAAC,SAAS,SAAS,CAAC,GAAG,SAAS;AAAA,IAClC,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,OAAO,kBAAmB,qBAAqB;AAAA,SAC5D;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,EAAE,kBAAkB,CAAC,GAAI,SAAS,CAAC,GAAI,mBAAmB,EAAE,SAAS,EAAE;AAAA,QACvE,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAET;AACA,OAAO,WAAW;;;ACjFX,MAAM,aAAa,YAAY;AAAA,EAClC,WAAW,GAAG;AAAA,IACV,MAAM,GAAG,SAAS;AAAA,IAClB,KAAK,SAAS,IAAc,OAAO,KAAK,OAAO;AAAA,IAC/C,KAAK,WAAW,IAAgB,SAAS,KAAK,OAAO;AAAA,IACrD,KAAK,QAAQ,IAAa,MAAM,KAAK,OAAO;AAAA,IAC5C,KAAK,SAAS,IAAc,OAAO,KAAK,OAAO;AAAA;AAEvD;AACA,KAAK,SAAS;AACd,KAAK,WAAW;AAChB,KAAK,QAAQ;AACb,KAAK,SAAS;;ACnBP,MAAM,oBAAoB,YAAY;AAAA,EACzC,MAAM,CAAC,QAAQ,SAAS;AAAA,IACpB,QAAQ,UAAU,SAAS;AAAA,IAC3B,OAAO,KAAK,QAAQ,KAAK,gBAAgB;AAAA,MACrC;AAAA,MACA,SAAS,KAAK,QAAQ,SAAS,WAAW;AAAA,SACvC;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,KAAM,OAAO,SAAS,KAAK,OAAO,EAAE,kBAAkB,OAAO,SAAS,EAAE,IAAI,UAAW;AAAA,QACvF,SAAS;AAAA,MACb,CAAC;AAAA,MACD,QAAQ,OAAO,UAAU;AAAA,IAC7B,CAAC;AAAA;AAET;;ACjBA,IAAI;AAAJ,IAA8B;AAA9B,IAAqE;AAArE,IAAsG;AAAtG,IAA8I;AAA9I,IAAqL;AAArL,IAAgN;AAAhN,IAAkP;AAAlP,IAAmR;AAAnR,IAA6S;AAA7S,IAAmU;AAAnU,IAA2V;AAA3V,IAAmX;AAAnX,IAA0Z;AAA1Z,IAAmb;AAAnb,IAA8c;AAA9c,IAA8e;AAA9e,IAA2gB;AAA3gB,IAAuiB;AAAviB,IAAokB;AAApkB,IAAmmB;AAAnmB,IAA8nB;AAM9nB,IAAM,qBAAoB;AAC1B,SAAS,gBAAe,CAAC,SAAS;AAAA,EAC9B,OAAO,QAAQ,SAAS,cAAc,QAAQ,SAAS;AAAA;AAAA;AAEpD,MAAM,cAAc;AAAA,EACvB,WAAW,GAAG;AAAA,IACV,yBAAyB,IAAI,IAAI;AAAA,IACjC,KAAK,WAAW,CAAC;AAAA,IACjB,KAAK,mBAAmB,CAAC;AAAA,IACzB,sCAAsC,IAAI,MAAW,SAAC;AAAA,IACtD,KAAK,aAAa,IAAI;AAAA,IACtB,gCAAgC,IAAI,MAAW,SAAC;AAAA,IAChD,uCAAuC,IAAI,MAAM,MAAM,EAAG;AAAA,IAC1D,sCAAsC,IAAI,MAAM,MAAM,EAAG;AAAA,IACzD,0BAA0B,IAAI,MAAW,SAAC;AAAA,IAC1C,iCAAiC,IAAI,MAAM,MAAM,EAAG;AAAA,IACpD,gCAAgC,IAAI,MAAM,MAAM,EAAG;AAAA,IACnD,yBAAyB,IAAI,MAAM,CAAC,CAAC;AAAA,IACrC,qBAAqB,IAAI,MAAM,KAAK;AAAA,IACpC,uBAAuB,IAAI,MAAM,KAAK;AAAA,IACtC,uBAAuB,IAAI,MAAM,KAAK;AAAA,IACtC,sCAAsC,IAAI,MAAM,KAAK;AAAA,IACrD,wBAAwB,IAAI,MAAW,SAAC;AAAA,IACxC,0BAA0B,IAAI,MAAW,SAAC;AAAA,IAC1C,2BAA2B,IAAI,MAAM,CAAC,WAAU;AAAA,MAC5C,uBAAuB,MAAM,wBAAwB,MAAM,GAAG;AAAA,MAC9D,IAAI,aAAa,MAAK,GAAG;AAAA,QACrB,SAAQ,IAAI;AAAA,MAChB;AAAA,MACA,IAAI,kBAAiB,mBAAmB;AAAA,QACpC,uBAAuB,MAAM,wBAAwB,MAAM,GAAG;AAAA,QAC9D,OAAO,KAAK,MAAM,SAAS,MAAK;AAAA,MACpC;AAAA,MACA,IAAI,kBAAiB,gBAAgB;AAAA,QACjC,OAAO,KAAK,MAAM,SAAS,MAAK;AAAA,MACpC;AAAA,MACA,IAAI,kBAAiB,OAAO;AAAA,QACxB,MAAM,iBAAiB,IAAI,eAAe,OAAM,OAAO;AAAA,QAEvD,eAAe,QAAQ;AAAA,QACvB,OAAO,KAAK,MAAM,SAAS,cAAc;AAAA,MAC7C;AAAA,MACA,OAAO,KAAK,MAAM,SAAS,IAAI,eAAe,OAAO,MAAK,CAAC,CAAC;AAAA,KAC/D;AAAA,IACD,uBAAuB,MAAM,iCAAiC,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MAC3F,uBAAuB,MAAM,wCAAwC,SAAS,GAAG;AAAA,MACjF,uBAAuB,MAAM,uCAAuC,QAAQ,GAAG;AAAA,KAClF,GAAG,GAAG;AAAA,IACP,uBAAuB,MAAM,2BAA2B,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACrF,uBAAuB,MAAM,kCAAkC,SAAS,GAAG;AAAA,MAC3E,uBAAuB,MAAM,iCAAiC,QAAQ,GAAG;AAAA,KAC5E,GAAG,GAAG;AAAA,IAKP,uBAAuB,MAAM,iCAAiC,GAAG,EAAE,MAAM,MAAM,EAAG;AAAA,IAClF,uBAAuB,MAAM,2BAA2B,GAAG,EAAE,MAAM,MAAM,EAAG;AAAA;AAAA,MAE5E,QAAQ,GAAG;AAAA,IACX,OAAO,uBAAuB,MAAM,yBAAyB,GAAG;AAAA;AAAA,MAEhE,UAAU,GAAG;AAAA,IACb,OAAO,uBAAuB,MAAM,2BAA2B,GAAG;AAAA;AAAA,OAYhE,aAAY,GAAG;AAAA,IACjB,uBAAuB,MAAM,uCAAuC,MAAM,GAAG;AAAA,IAC7E,MAAM,WAAW,MAAM,uBAAuB,MAAM,iCAAiC,GAAG;AAAA,IACxF,IAAI,CAAC,UAAU;AAAA,MACX,MAAM,IAAI,MAAM,uCAAuC;AAAA,IAC3D;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,MACN;AAAA,MACA,YAAY,SAAS,QAAQ,IAAI,YAAY;AAAA,IACjD;AAAA;AAAA,SASG,kBAAkB,CAAC,QAAQ;AAAA,IAC9B,MAAM,SAAS,IAAI;AAAA,IACnB,OAAO,KAAK,MAAM,OAAO,oBAAoB,MAAM,CAAC;AAAA,IACpD,OAAO;AAAA;AAAA,SAEJ,aAAa,CAAC,UAAU,QAAQ,SAAS;AAAA,IAC5C,MAAM,SAAS,IAAI;AAAA,IACnB,WAAW,WAAW,OAAO,UAAU;AAAA,MACnC,OAAO,iBAAiB,OAAO;AAAA,IACnC;AAAA,IACA,OAAO,KAAK,MAAM,OAAO,eAAe,UAAU,KAAK,QAAQ,QAAQ,KAAK,GAAG,KAAK,SAAS,SAAS,KAAK,SAAS,SAAS,6BAA6B,SAAS,EAAE,CAAC,CAAC;AAAA,IACvK,OAAO;AAAA;AAAA,EAEX,IAAI,CAAC,UAAU;AAAA,IACX,SAAS,EAAE,KAAK,MAAM;AAAA,MAClB,KAAK,WAAW;AAAA,MAChB,KAAK,MAAM,KAAK;AAAA,OACjB,uBAAuB,MAAM,4BAA4B,GAAG,CAAC;AAAA;AAAA,EAEpE,gBAAgB,CAAC,SAAS;AAAA,IACtB,KAAK,SAAS,KAAK,OAAO;AAAA;AAAA,EAE9B,WAAW,CAAC,SAAS,OAAO,MAAM;AAAA,IAC9B,KAAK,iBAAiB,KAAK,OAAO;AAAA,IAClC,IAAI,MAAM;AAAA,MACN,KAAK,MAAM,WAAW,OAAO;AAAA,IACjC;AAAA;AAAA,OAEE,eAAc,CAAC,UAAU,QAAQ,SAAS;AAAA,IAC5C,MAAM,SAAS,SAAS;AAAA,IACxB,IAAI;AAAA,IACJ,IAAI,QAAQ;AAAA,MACR,IAAI,OAAO;AAAA,QACP,KAAK,WAAW,MAAM;AAAA,MAC1B,eAAe,KAAK,WAAW,MAAM,KAAK,KAAK,UAAU;AAAA,MACzD,OAAO,iBAAiB,SAAS,YAAY;AAAA,IACjD;AAAA,IACA,IAAI;AAAA,MACA,uBAAuB,MAAM,0BAA0B,KAAK,2BAA2B,EAAE,KAAK,IAAI;AAAA,MAClG,QAAQ,UAAU,MAAM,WAAW,MAAM,SACpC,OAAO,KAAK,QAAQ,QAAQ,KAAK,GAAG,KAAK,SAAS,QAAQ,KAAK,WAAW,OAAO,CAAC,EAClF,aAAa;AAAA,MAClB,KAAK,WAAW,QAAQ;AAAA,MACxB,iBAAiB,SAAS,QAAQ;AAAA,QAC9B,uBAAuB,MAAM,0BAA0B,KAAK,6BAA6B,EAAE,KAAK,MAAM,KAAK;AAAA,MAC/G;AAAA,MACA,IAAI,OAAO,WAAW,QAAQ,SAAS;AAAA,QACnC,MAAM,IAAI;AAAA,MACd;AAAA,MACA,uBAAuB,MAAM,0BAA0B,KAAK,yBAAyB,EAAE,KAAK,IAAI;AAAA,cAEpG;AAAA,MACI,IAAI,UAAU,cAAc;AAAA,QACxB,OAAO,oBAAoB,SAAS,YAAY;AAAA,MACpD;AAAA;AAAA;AAAA,EAGR,UAAU,CAAC,UAAU;AAAA,IACjB,IAAI,KAAK;AAAA,MACL;AAAA,IACJ,uBAAuB,MAAM,yBAAyB,UAAU,GAAG;AAAA,IACnE,uBAAuB,MAAM,2BAA2B,UAAU,QAAQ,IAAI,YAAY,GAAG,GAAG;AAAA,IAChG,uBAAuB,MAAM,wCAAwC,GAAG,EAAE,KAAK,MAAM,QAAQ;AAAA,IAC7F,KAAK,MAAM,SAAS;AAAA;AAAA,MAEpB,KAAK,GAAG;AAAA,IACR,OAAO,uBAAuB,MAAM,sBAAsB,GAAG;AAAA;AAAA,MAE7D,OAAO,GAAG;AAAA,IACV,OAAO,uBAAuB,MAAM,wBAAwB,GAAG;AAAA;AAAA,MAE/D,OAAO,GAAG;AAAA,IACV,OAAO,uBAAuB,MAAM,wBAAwB,GAAG;AAAA;AAAA,EAEnE,KAAK,GAAG;AAAA,IACJ,KAAK,WAAW,MAAM;AAAA;AAAA,EAS1B,EAAE,CAAC,OAAO,UAAU;AAAA,IAChB,MAAM,YAAY,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,WAAW,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,SAAS,CAAC;AAAA,IAC/J,UAAU,KAAK,EAAE,SAAS,CAAC;AAAA,IAC3B,OAAO;AAAA;AAAA,EASX,GAAG,CAAC,OAAO,UAAU;AAAA,IACjB,MAAM,YAAY,uBAAuB,MAAM,0BAA0B,GAAG,EAAE;AAAA,IAC9E,IAAI,CAAC;AAAA,MACD,OAAO;AAAA,IACX,MAAM,QAAQ,UAAU,UAAU,CAAC,MAAM,EAAE,aAAa,QAAQ;AAAA,IAChE,IAAI,SAAS;AAAA,MACT,UAAU,OAAO,OAAO,CAAC;AAAA,IAC7B,OAAO;AAAA;AAAA,EAOX,IAAI,CAAC,OAAO,UAAU;AAAA,IAClB,MAAM,YAAY,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,WAAW,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,SAAS,CAAC;AAAA,IAC/J,UAAU,KAAK,EAAE,UAAU,MAAM,KAAK,CAAC;AAAA,IACvC,OAAO;AAAA;AAAA,EAaX,OAAO,CAAC,OAAO;AAAA,IACX,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACpC,uBAAuB,MAAM,uCAAuC,MAAM,GAAG;AAAA,MAC7E,IAAI,UAAU;AAAA,QACV,KAAK,KAAK,SAAS,MAAM;AAAA,MAC7B,KAAK,KAAK,OAAO,OAAO;AAAA,KAC3B;AAAA;AAAA,OAEC,KAAI,GAAG;AAAA,IACT,uBAAuB,MAAM,uCAAuC,MAAM,GAAG;AAAA,IAC7E,MAAM,uBAAuB,MAAM,2BAA2B,GAAG;AAAA;AAAA,MAEjE,cAAc,GAAG;AAAA,IACjB,OAAO,uBAAuB,MAAM,uCAAuC,GAAG;AAAA;AAAA,OAM5E,aAAY,GAAG;AAAA,IACjB,MAAM,KAAK,KAAK;AAAA,IAChB,OAAO,uBAAuB,MAAM,0BAA0B,KAAK,8BAA8B,EAAE,KAAK,IAAI;AAAA;AAAA,OAO1G,UAAS,GAAG;AAAA,IACd,MAAM,KAAK,KAAK;AAAA,IAChB,OAAO,uBAAuB,MAAM,0BAA0B,KAAK,2BAA2B,EAAE,KAAK,IAAI;AAAA;AAAA,EAE7G,KAAK,CAAC,UAAU,MAAM;AAAA,IAElB,IAAI,uBAAuB,MAAM,sBAAsB,GAAG;AAAA,MACtD;AAAA,IACJ,IAAI,UAAU,OAAO;AAAA,MACjB,uBAAuB,MAAM,sBAAsB,MAAM,GAAG;AAAA,MAC5D,uBAAuB,MAAM,kCAAkC,GAAG,EAAE,KAAK,IAAI;AAAA,IACjF;AAAA,IACA,MAAM,YAAY,uBAAuB,MAAM,0BAA0B,GAAG,EAAE;AAAA,IAC9E,IAAI,WAAW;AAAA,MACX,uBAAuB,MAAM,0BAA0B,GAAG,EAAE,SAAS,UAAU,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI;AAAA,MACpG,UAAU,QAAQ,GAAG,eAAe,SAAS,GAAG,IAAI,CAAC;AAAA,IACzD;AAAA,IACA,IAAI,UAAU,SAAS;AAAA,MACnB,MAAM,SAAQ,KAAK;AAAA,MACnB,IAAI,CAAC,uBAAuB,MAAM,uCAAuC,GAAG,KAAK,CAAC,WAAW,QAAQ;AAAA,QACjG,QAAQ,OAAO,MAAK;AAAA,MACxB;AAAA,MACA,uBAAuB,MAAM,uCAAuC,GAAG,EAAE,KAAK,MAAM,MAAK;AAAA,MACzF,uBAAuB,MAAM,iCAAiC,GAAG,EAAE,KAAK,MAAM,MAAK;AAAA,MACnF,KAAK,MAAM,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,IAAI,UAAU,SAAS;AAAA,MAEnB,MAAM,SAAQ,KAAK;AAAA,MACnB,IAAI,CAAC,uBAAuB,MAAM,uCAAuC,GAAG,KAAK,CAAC,WAAW,QAAQ;AAAA,QAOjG,QAAQ,OAAO,MAAK;AAAA,MACxB;AAAA,MACA,uBAAuB,MAAM,uCAAuC,GAAG,EAAE,KAAK,MAAM,MAAK;AAAA,MACzF,uBAAuB,MAAM,iCAAiC,GAAG,EAAE,KAAK,MAAM,MAAK;AAAA,MACnF,KAAK,MAAM,KAAK;AAAA,IACpB;AAAA;AAAA,EAEJ,UAAU,GAAG;AAAA,IACT,MAAM,eAAe,KAAK,iBAAiB,GAAG,EAAE;AAAA,IAChD,IAAI,cAAc;AAAA,MACd,KAAK,MAAM,gBAAgB,uBAAuB,MAAM,0BAA0B,KAAK,8BAA8B,EAAE,KAAK,IAAI,CAAC;AAAA,IACrI;AAAA;AAAA,OAEE,oBAAmB,CAAC,gBAAgB,SAAS;AAAA,IAC/C,MAAM,SAAS,SAAS;AAAA,IACxB,IAAI;AAAA,IACJ,IAAI,QAAQ;AAAA,MACR,IAAI,OAAO;AAAA,QACP,KAAK,WAAW,MAAM;AAAA,MAC1B,eAAe,KAAK,WAAW,MAAM,KAAK,KAAK,UAAU;AAAA,MACzD,OAAO,iBAAiB,SAAS,YAAY;AAAA,IACjD;AAAA,IACA,IAAI;AAAA,MACA,uBAAuB,MAAM,0BAA0B,KAAK,2BAA2B,EAAE,KAAK,IAAI;AAAA,MAClG,KAAK,WAAW,IAAI;AAAA,MACpB,MAAM,SAAS,OAAO,mBAAmB,gBAAgB,KAAK,UAAU;AAAA,MACxE,iBAAiB,SAAS,QAAQ;AAAA,QAC9B,uBAAuB,MAAM,0BAA0B,KAAK,6BAA6B,EAAE,KAAK,MAAM,KAAK;AAAA,MAC/G;AAAA,MACA,IAAI,OAAO,WAAW,QAAQ,SAAS;AAAA,QACnC,MAAM,IAAI;AAAA,MACd;AAAA,MACA,uBAAuB,MAAM,0BAA0B,KAAK,yBAAyB,EAAE,KAAK,IAAI;AAAA,cAEpG;AAAA,MACI,IAAI,UAAU,cAAc;AAAA,QACxB,OAAO,oBAAoB,SAAS,YAAY;AAAA,MACpD;AAAA;AAAA;AAAA,IAGN,wCAAwC,IAAI,SAAW,kCAAkC,IAAI,SAAW,yCAAyC,IAAI,SAAW,wCAAwC,IAAI,SAAW,4BAA4B,IAAI,SAAW,mCAAmC,IAAI,SAAW,kCAAkC,IAAI,SAAW,2BAA2B,IAAI,SAAW,uBAAuB,IAAI,SAAW,yBAAyB,IAAI,SAAW,yBAAyB,IAAI,SAAW,wCAAwC,IAAI,SAAW,0BAA0B,IAAI,SAAW,4BAA4B,IAAI,SAAW,6BAA6B,IAAI,SAAW,2BAA2B,IAAI,SAAW,iCAAiC,SAAS,8BAA8B,GAAG;AAAA,IAC/yB,IAAI,KAAK,iBAAiB,WAAW,GAAG;AAAA,MACpC,MAAM,IAAI,eAAe,8DAA8D;AAAA,IAC3F;AAAA,IACA,OAAO,KAAK,iBAAiB,GAAG,EAAE;AAAA,KACnC,8BAA8B,SAAS,2BAA2B,GAAG;AAAA,IACpE,IAAI,KAAK,iBAAiB,WAAW,GAAG;AAAA,MACpC,MAAM,IAAI,eAAe,8DAA8D;AAAA,IAC3F;AAAA,IACA,MAAM,aAAa,KAAK,iBACnB,GAAG,EAAE,EACL,QAAQ,OAAO,CAAC,UAAU,MAAM,SAAS,MAAM,EAC/C,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IAC9B,IAAI,WAAW,WAAW,GAAG;AAAA,MACzB,MAAM,IAAI,eAAe,+DAA+D;AAAA,IAC5F;AAAA,IACA,OAAO,WAAW,KAAK,GAAG;AAAA,KAC3B,8BAA8B,SAAS,2BAA2B,GAAG;AAAA,IACpE,IAAI,KAAK;AAAA,MACL;AAAA,IACJ,uBAAuB,MAAM,uCAAuC,WAAW,GAAG;AAAA,KACnF,gCAAgC,SAAS,6BAA6B,CAAC,OAAO;AAAA,IAC7E,IAAI,KAAK;AAAA,MACL;AAAA,IACJ,MAAM,kBAAkB,uBAAuB,MAAM,0BAA0B,KAAK,gCAAgC,EAAE,KAAK,MAAM,KAAK;AAAA,IACtI,KAAK,MAAM,eAAe,OAAO,eAAe;AAAA,IAChD,QAAQ,MAAM;AAAA,WACL,uBAAuB;AAAA,QACxB,MAAM,UAAU,gBAAgB,QAAQ,GAAG,EAAE;AAAA,QAC7C,QAAQ,MAAM,MAAM;AAAA,eACX,cAAc;AAAA,YACf,IAAI,QAAQ,SAAS,QAAQ;AAAA,cACzB,KAAK,MAAM,QAAQ,MAAM,MAAM,MAAM,QAAQ,QAAQ,EAAE;AAAA,YAC3D;AAAA,YACA;AAAA,UACJ;AAAA,eACK,mBAAmB;AAAA,YACpB,IAAI,QAAQ,SAAS,QAAQ;AAAA,cACzB,KAAK,MAAM,YAAY,MAAM,MAAM,UAAU,QAAQ,aAAa,CAAC,CAAC;AAAA,YACxE;AAAA,YACA;AAAA,UACJ;AAAA,eACK,oBAAoB;AAAA,YACrB,IAAI,iBAAgB,OAAO,KAAK,QAAQ,OAAO;AAAA,cAC3C,KAAK,MAAM,aAAa,MAAM,MAAM,cAAc,QAAQ,KAAK;AAAA,YACnE;AAAA,YACA;AAAA,UACJ;AAAA,eACK,kBAAkB;AAAA,YACnB,IAAI,QAAQ,SAAS,YAAY;AAAA,cAC7B,KAAK,MAAM,YAAY,MAAM,MAAM,UAAU,QAAQ,QAAQ;AAAA,YACjE;AAAA,YACA;AAAA,UACJ;AAAA,eACK,mBAAmB;AAAA,YACpB,IAAI,QAAQ,SAAS,YAAY;AAAA,cAC7B,KAAK,MAAM,aAAa,QAAQ,SAAS;AAAA,YAC7C;AAAA,YACA;AAAA,UACJ;AAAA;AAAA,YAEI,YAAW,MAAM,KAAK;AAAA;AAAA,QAE9B;AAAA,MACJ;AAAA,WACK,gBAAgB;AAAA,QACjB,KAAK,iBAAiB,eAAe;AAAA,QACrC,KAAK,YAAY,iBAAiB,IAAI;AAAA,QACtC;AAAA,MACJ;AAAA,WACK,sBAAsB;AAAA,QACvB,KAAK,MAAM,gBAAgB,gBAAgB,QAAQ,GAAG,EAAE,CAAC;AAAA,QACzD;AAAA,MACJ;AAAA,WACK,iBAAiB;AAAA,QAClB,uBAAuB,MAAM,uCAAuC,iBAAiB,GAAG;AAAA,QACxF;AAAA,MACJ;AAAA,WACK;AAAA,WACA;AAAA,QACD;AAAA;AAAA,KAET,4BAA4B,SAAS,yBAAyB,GAAG;AAAA,IAChE,IAAI,KAAK,OAAO;AAAA,MACZ,MAAM,IAAI,eAAe,yCAAyC;AAAA,IACtE;AAAA,IACA,MAAM,WAAW,uBAAuB,MAAM,uCAAuC,GAAG;AAAA,IACxF,IAAI,CAAC,UAAU;AAAA,MACX,MAAM,IAAI,eAAe,0CAA0C;AAAA,IACvE;AAAA,IACA,uBAAuB,MAAM,uCAAuC,WAAW,GAAG;AAAA,IAClF,OAAO;AAAA,KACR,mCAAmC,SAAS,gCAAgC,CAAC,OAAO;AAAA,IACnF,IAAI,WAAW,uBAAuB,MAAM,uCAAuC,GAAG;AAAA,IACtF,IAAI,MAAM,SAAS,iBAAiB;AAAA,MAChC,IAAI,UAAU;AAAA,QACV,MAAM,IAAI,eAAe,+BAA+B,MAAM,sCAAsC;AAAA,MACxG;AAAA,MACA,OAAO,MAAM;AAAA,IACjB;AAAA,IACA,IAAI,CAAC,UAAU;AAAA,MACX,MAAM,IAAI,eAAe,+BAA+B,MAAM,6BAA6B;AAAA,IAC/F;AAAA,IACA,QAAQ,MAAM;AAAA,WACL;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,SAAS,cAAc,MAAM,MAAM;AAAA,QACnC,SAAS,gBAAgB,MAAM,MAAM;AAAA,QACrC,SAAS,MAAM,gBAAgB,MAAM,MAAM;AAAA,QAE3C,IAAI,MAAM,MAAM,gBAAgB,MAAM;AAAA,UAClC,SAAS,MAAM,eAAe,MAAM,MAAM;AAAA,QAC9C;AAAA,QACA,IAAI,MAAM,MAAM,+BAA+B,MAAM;AAAA,UACjD,SAAS,MAAM,8BAA8B,MAAM,MAAM;AAAA,QAC7D;AAAA,QACA,IAAI,MAAM,MAAM,2BAA2B,MAAM;AAAA,UAC7C,SAAS,MAAM,0BAA0B,MAAM,MAAM;AAAA,QACzD;AAAA,QACA,IAAI,MAAM,MAAM,mBAAmB,MAAM;AAAA,UACrC,SAAS,MAAM,kBAAkB,MAAM,MAAM;AAAA,QACjD;AAAA,QACA,OAAO;AAAA,WACN;AAAA,QACD,SAAS,QAAQ,KAAK,KAAK,MAAM,cAAc,CAAC;AAAA,QAChD,OAAO;AAAA,WACN,uBAAuB;AAAA,QACxB,MAAM,kBAAkB,SAAS,QAAQ,GAAG,MAAM,KAAK;AAAA,QACvD,QAAQ,MAAM,MAAM;AAAA,eACX,cAAc;AAAA,YACf,IAAI,iBAAiB,SAAS,QAAQ;AAAA,cAClC,SAAS,QAAQ,MAAM,SAAS;AAAA,mBACzB;AAAA,gBACH,OAAO,gBAAgB,QAAQ,MAAM,MAAM,MAAM;AAAA,cACrD;AAAA,YACJ;AAAA,YACA;AAAA,UACJ;AAAA,eACK,mBAAmB;AAAA,YACpB,IAAI,iBAAiB,SAAS,QAAQ;AAAA,cAClC,SAAS,QAAQ,MAAM,SAAS;AAAA,mBACzB;AAAA,gBACH,WAAW,CAAC,GAAI,gBAAgB,aAAa,CAAC,GAAI,MAAM,MAAM,QAAQ;AAAA,cAC1E;AAAA,YACJ;AAAA,YACA;AAAA,UACJ;AAAA,eACK,oBAAoB;AAAA,YACrB,IAAI,mBAAmB,iBAAgB,eAAe,GAAG;AAAA,cAIrD,IAAI,UAAU,gBAAgB,uBAAsB;AAAA,cACpD,WAAW,MAAM,MAAM;AAAA,cACvB,MAAM,aAAa,KAAK,gBAAgB;AAAA,cACxC,OAAO,eAAe,YAAY,oBAAmB;AAAA,gBACjD,OAAO;AAAA,gBACP,YAAY;AAAA,gBACZ,UAAU;AAAA,cACd,CAAC;AAAA,cACD,IAAI,SAAS;AAAA,gBACT,WAAW,QAAQ,aAAa,OAAO;AAAA,cAC3C;AAAA,cACA,SAAS,QAAQ,MAAM,SAAS;AAAA,YACpC;AAAA,YACA;AAAA,UACJ;AAAA,eACK,kBAAkB;AAAA,YACnB,IAAI,iBAAiB,SAAS,YAAY;AAAA,cACtC,SAAS,QAAQ,MAAM,SAAS;AAAA,mBACzB;AAAA,gBACH,UAAU,gBAAgB,WAAW,MAAM,MAAM;AAAA,cACrD;AAAA,YACJ;AAAA,YACA;AAAA,UACJ;AAAA,eACK,mBAAmB;AAAA,YACpB,IAAI,iBAAiB,SAAS,YAAY;AAAA,cACtC,SAAS,QAAQ,MAAM,SAAS;AAAA,mBACzB;AAAA,gBACH,WAAW,MAAM,MAAM;AAAA,cAC3B;AAAA,YACJ;AAAA,YACA;AAAA,UACJ;AAAA;AAAA,YAEI,YAAW,MAAM,KAAK;AAAA;AAAA,QAE9B,OAAO;AAAA,MACX;AAAA,WACK;AAAA,QACD,OAAO;AAAA;AAAA,KAEhB,OAAO,eAAe,GAAG;AAAA,IACxB,MAAM,YAAY,CAAC;AAAA,IACnB,MAAM,YAAY,CAAC;AAAA,IACnB,IAAI,OAAO;AAAA,IACX,KAAK,GAAG,eAAe,CAAC,UAAU;AAAA,MAC9B,MAAM,SAAS,UAAU,MAAM;AAAA,MAC/B,IAAI,QAAQ;AAAA,QACR,OAAO,QAAQ,KAAK;AAAA,MACxB,EACK;AAAA,QACD,UAAU,KAAK,KAAK;AAAA;AAAA,KAE3B;AAAA,IACD,KAAK,GAAG,OAAO,MAAM;AAAA,MACjB,OAAO;AAAA,MACP,WAAW,UAAU,WAAW;AAAA,QAC5B,OAAO,QAAQ,SAAS;AAAA,MAC5B;AAAA,MACA,UAAU,SAAS;AAAA,KACtB;AAAA,IACD,KAAK,GAAG,SAAS,CAAC,QAAQ;AAAA,MACtB,OAAO;AAAA,MACP,WAAW,UAAU,WAAW;AAAA,QAC5B,OAAO,OAAO,GAAG;AAAA,MACrB;AAAA,MACA,UAAU,SAAS;AAAA,KACtB;AAAA,IACD,KAAK,GAAG,SAAS,CAAC,QAAQ;AAAA,MACtB,OAAO;AAAA,MACP,WAAW,UAAU,WAAW;AAAA,QAC5B,OAAO,OAAO,GAAG;AAAA,MACrB;AAAA,MACA,UAAU,SAAS;AAAA,KACtB;AAAA,IACD,OAAO;AAAA,MACH,MAAM,YAAY;AAAA,QACd,IAAI,CAAC,UAAU,QAAQ;AAAA,UACnB,IAAI,MAAM;AAAA,YACN,OAAO,EAAE,OAAO,WAAW,MAAM,KAAK;AAAA,UAC1C;AAAA,UACA,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW,UAAU,KAAK,EAAE,SAAS,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,SAAQ,EAAE,OAAO,QAAO,MAAM,MAAM,IAAI,EAAE,OAAO,WAAW,MAAM,KAAK,CAAE;AAAA,QAC3K;AAAA,QACA,MAAM,QAAQ,UAAU,MAAM;AAAA,QAC9B,OAAO,EAAE,OAAO,OAAO,MAAM,MAAM;AAAA;AAAA,MAEvC,QAAQ,YAAY;AAAA,QAChB,KAAK,MAAM;AAAA,QACX,OAAO,EAAE,OAAO,WAAW,MAAM,KAAK;AAAA;AAAA,IAE9C;AAAA;AAAA,EAEJ,gBAAgB,GAAG;AAAA,IACf,MAAM,SAAS,IAAI,OAAO,KAAK,OAAO,eAAe,KAAK,IAAI,GAAG,KAAK,UAAU;AAAA,IAChF,OAAO,OAAO,iBAAiB;AAAA;AAEvC;AAEA,SAAS,WAAU,CAAC,GAAG;;;AC/jBhB,MAAM,iBAAgB,YAAY;AAAA,EA6BrC,MAAM,CAAC,MAAM,SAAS;AAAA,IAClB,OAAO,KAAK,QAAQ,KAAK,wBAAwB,EAAE,SAAS,QAAQ,CAAC;AAAA;AAAA,EAiBzE,QAAQ,CAAC,gBAAgB,SAAS;AAAA,IAC9B,OAAO,KAAK,QAAQ,IAAI,4BAA6B,kBAAkB,OAAO;AAAA;AAAA,EAiBlF,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;AAAA,IACtB,OAAO,KAAK,QAAQ,WAAW,wBAAyB,MAAO,EAAE,UAAU,QAAQ,CAAC;AAAA;AAAA,EAiBxF,MAAM,CAAC,gBAAgB,SAAS;AAAA,IAC5B,OAAO,KAAK,QAAQ,OAAO,4BAA6B,kBAAkB,OAAO;AAAA;AAAA,EAuBrF,MAAM,CAAC,gBAAgB,SAAS;AAAA,IAC5B,OAAO,KAAK,QAAQ,KAAK,4BAA6B,yBAAyB,OAAO;AAAA;AAAA,OAkBpF,QAAO,CAAC,gBAAgB,SAAS;AAAA,IACnC,MAAM,QAAQ,MAAM,KAAK,SAAS,cAAc;AAAA,IAChD,IAAI,CAAC,MAAM,aAAa;AAAA,MACpB,MAAM,IAAI,eAAe,yDAAyD,MAAM,uBAAuB,MAAM,IAAI;AAAA,IAC7H;AAAA,IACA,OAAO,KAAK,QACP,IAAI,MAAM,aAAa;AAAA,SACrB;AAAA,MACH,SAAS,aAAa,CAAC,EAAE,QAAQ,qBAAqB,GAAG,SAAS,OAAO,CAAC;AAAA,MAC1E,QAAQ;AAAA,MACR,kBAAkB;AAAA,IACtB,CAAC,EACI,YAAY,CAAC,GAAG,UAAU,aAAa,aAAa,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA;AAElG;;;AC7IO,MAAM,kBAAiB,YAAY;AAAA,EACtC,WAAW,GAAG;AAAA,IACV,MAAM,GAAG,SAAS;AAAA,IAClB,KAAK,UAAU,IAAe,SAAQ,KAAK,OAAO;AAAA;AAAA,EAEtD,MAAM,CAAC,MAAM,SAAS;AAAA,IAClB,IAAI,KAAK,SAAS,oBAAmB;AAAA,MACjC,QAAQ,KAAK,cAAc,KAAK,sDAAsD,mBAAkB,KAAK;AAAA,6HAAsI;AAAA,IACvP;AAAA,IACA,IAAI,UAAU,KAAK,QAAQ,SAAS;AAAA,IACpC,IAAI,CAAC,KAAK,UAAU,WAAW,MAAM;AAAA,MACjC,MAAM,wBAAwB,0BAA0B,KAAK,UAAU;AAAA,MACvE,UAAU,KAAK,QAAQ,6BAA6B,KAAK,YAAY,qBAAqB;AAAA,IAC9F;AAAA,IACA,OAAO,KAAK,QAAQ,KAAK,gBAAgB;AAAA,MACrC;AAAA,MACA,SAAS,WAAW;AAAA,SACjB;AAAA,MACH,QAAQ,KAAK,UAAU;AAAA,IAC3B,CAAC;AAAA;AAAA,EAKL,MAAM,CAAC,MAAM,SAAS;AAAA,IAClB,OAAO,cAAc,cAAc,MAAM,MAAM,OAAO;AAAA;AAAA,EAoB1D,WAAW,CAAC,MAAM,SAAS;AAAA,IACvB,OAAO,KAAK,QAAQ,KAAK,6BAA6B,EAAE,SAAS,QAAQ,CAAC;AAAA;AAElF;AACA,IAAM,qBAAoB;AAAA,EACtB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,2BAA2B;AAAA,EAC3B,sBAAsB;AAAA,EACtB,4BAA4B;AAAA,EAC5B,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,cAAc;AAAA,EACd,4BAA4B;AAAA,EAC5B,8BAA8B;AAClC;AACA,UAAS,UAAU;;AC/DZ,MAAM,gBAAe,YAAY;AAAA,EAOpC,QAAQ,CAAC,SAAS,SAAS,CAAC,GAAG,SAAS;AAAA,IACpC,QAAQ,UAAU,UAAU,CAAC;AAAA,IAC7B,OAAO,KAAK,QAAQ,IAAI,kBAAmB,WAAW;AAAA,SAC/C;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,KAAM,OAAO,SAAS,KAAK,OAAO,EAAE,kBAAkB,OAAO,SAAS,EAAE,IAAI,UAAW;AAAA,QACvF,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAAA,EAQL,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS;AAAA,IACvB,QAAQ,UAAU,UAAU,UAAU,CAAC;AAAA,IACvC,OAAO,KAAK,QAAQ,WAAW,cAAe,MAAO;AAAA,MACjD;AAAA,SACG;AAAA,MACH,SAAS,aAAa;AAAA,QAClB,KAAM,OAAO,SAAS,KAAK,OAAO,EAAE,kBAAkB,OAAO,SAAS,EAAE,IAAI,UAAW;AAAA,QACvF,SAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC;AAAA;AAET;;AC/BO,IAAM,UAAU,CAAC,QAAQ;AAAA,EAC5B,IAAI,OAAO,WAAW,YAAY,aAAa;AAAA,IAC3C,OAAO,WAAW,QAAQ,MAAM,MAAM,KAAK,KAAK;AAAA,EACpD;AAAA,EACA,IAAI,OAAO,WAAW,SAAS,aAAa;AAAA,IACxC,OAAO,WAAW,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK;AAAA,EACjD;AAAA,EACA;AAAA;;;ACdJ,IAAI;AAAJ,IAA8B;AAA9B,IAAkC;AAAlC,IAA0D;AAwBnD,IAAM,eAAe;AACrB,IAAM,YAAY;AAAA;AAIlB,MAAM,cAAc;AAAA,EAevB,WAAW,GAAG,UAAU,QAAQ,oBAAoB,GAAG,SAAS,QAAQ,mBAAmB,KAAK,MAAM,YAAY,QAAQ,sBAAsB,KAAK,SAAS,SAAS,CAAC,GAAG;AAAA,IACvK,yBAAyB,IAAI,IAAI;AAAA,IACjC,uBAAuB,IAAI,MAAW,SAAC;AAAA,IACvC,MAAM,UAAU;AAAA,MACZ;AAAA,MACA;AAAA,SACG;AAAA,MACH,SAAS,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,CAAC,QAAQ,2BAA2B,mBAAmB,GAAG;AAAA,MAC1D,MAAM,IAAW,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAsW;AAAA,IAC1Y;AAAA,IACA,KAAK,UAAU,QAAQ;AAAA,IACvB,KAAK,UAAU,QAAQ,WAAW,GAAG;AAAA,IACrC,KAAK,SAAS,QAAQ,UAAU;AAAA,IAChC,MAAM,kBAAkB;AAAA,IAExB,KAAK,WAAW;AAAA,IAChB,KAAK,WACD,cAAc,QAAQ,UAAU,0BAA0B,IAAI,KAC1D,cAAc,QAAQ,eAAe,GAAG,gCAAgC,IAAI,KAC5E;AAAA,IACR,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,aAAa,QAAQ,cAAc;AAAA,IACxC,KAAK,QAAQ,QAAQ,SAAe,gBAAgB;AAAA,IACpD,uBAAuB,MAAM,wBAA6B,iBAAiB,GAAG;AAAA,IAC9E,KAAK,WAAW;AAAA,IAChB,KAAK,SAAS,OAAO,WAAW,WAAW,SAAS;AAAA,IACpD,KAAK,YAAY;AAAA;AAAA,EAKrB,WAAW,CAAC,SAAS;AAAA,IACjB,MAAM,SAAS,IAAI,KAAK,YAAY;AAAA,SAC7B,KAAK;AAAA,MACR,SAAS,KAAK;AAAA,MACd,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,UAAU,KAAK;AAAA,MACf,OAAO,KAAK;AAAA,MACZ,cAAc,KAAK;AAAA,MACnB,QAAQ,KAAK;AAAA,MACb,WAAW,KAAK;AAAA,SACb;AAAA,IACP,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,EAEX,YAAY,GAAG;AAAA,IACX,OAAO,KAAK,SAAS;AAAA;AAAA,EAEzB,eAAe,GAAG,QAAQ,SAAS;AAAA,IAC/B,IAAI,OAAO,IAAI,WAAW,KAAK,OAAO,IAAI,eAAe,GAAG;AAAA,MACxD;AAAA,IACJ;AAAA,IACA,IAAI,KAAK,UAAU,OAAO,IAAI,WAAW,GAAG;AAAA,MACxC;AAAA,IACJ;AAAA,IACA,IAAI,MAAM,IAAI,WAAW,GAAG;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,IAAI,KAAK,aAAa,OAAO,IAAI,eAAe,GAAG;AAAA,MAC/C;AAAA,IACJ;AAAA,IACA,IAAI,MAAM,IAAI,eAAe,GAAG;AAAA,MAC5B;AAAA,IACJ;AAAA,IACA,MAAM,IAAI,MAAM,2KAA2K;AAAA;AAAA,OAEzL,YAAW,CAAC,MAAM;AAAA,IACpB,OAAO,aAAa,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC;AAAA;AAAA,OAE5E,WAAU,CAAC,MAAM;AAAA,IACnB,IAAI,KAAK,UAAU,MAAM;AAAA,MACrB;AAAA,IACJ;AAAA,IACA,OAAO,aAAa,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC;AAAA;AAAA,OAEhD,WAAU,CAAC,MAAM;AAAA,IACnB,IAAI,KAAK,aAAa,MAAM;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,OAAO,aAAa,CAAC,EAAE,eAAe,UAAU,KAAK,YAAY,CAAC,CAAC;AAAA;AAAA,EAKvE,cAAc,CAAC,OAAO;AAAA,IAClB,OAAO,OAAO,QAAQ,KAAK,EACtB,OAAO,EAAE,GAAG,WAAW,OAAO,UAAU,WAAW,EACnD,IAAI,EAAE,KAAK,WAAW;AAAA,MACvB,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AAAA,QACtF,OAAO,GAAG,mBAAmB,GAAG,KAAK,mBAAmB,KAAK;AAAA,MACjE;AAAA,MACA,IAAI,UAAU,MAAM;AAAA,QAChB,OAAO,GAAG,mBAAmB,GAAG;AAAA,MACpC;AAAA,MACA,MAAM,IAAW,eAAe,yBAAyB,OAAO,wQAAwQ;AAAA,KAC3U,EACI,KAAK,GAAG;AAAA;AAAA,EAEjB,YAAY,GAAG;AAAA,IACX,OAAO,GAAG,KAAK,YAAY,WAAW;AAAA;AAAA,EAE1C,qBAAqB,GAAG;AAAA,IACpB,OAAO,wBAAwB,MAAM;AAAA;AAAA,EAEzC,eAAe,CAAC,QAAQ,QAAO,SAAS,SAAS;AAAA,IAC7C,OAAc,SAAS,SAAS,QAAQ,QAAO,SAAS,OAAO;AAAA;AAAA,EAEnE,QAAQ,CAAC,OAAM,OAAO,gBAAgB;AAAA,IAClC,MAAM,UAAW,CAAC,uBAAuB,MAAM,0BAA0B,KAAK,gCAAgC,EAAE,KAAK,IAAI,KAAK,kBAAmB,KAAK;AAAA,IACtJ,MAAM,MAAM,cAAc,KAAI,IAC1B,IAAI,IAAI,KAAI,IACV,IAAI,IAAI,WAAW,QAAQ,SAAS,GAAG,KAAK,MAAK,WAAW,GAAG,IAAI,MAAK,MAAM,CAAC,IAAI,MAAK;AAAA,IAC9F,MAAM,eAAe,KAAK,aAAa;AAAA,IACvC,IAAI,CAAC,WAAW,YAAY,GAAG;AAAA,MAC3B,QAAQ,KAAK,iBAAiB,MAAM;AAAA,IACxC;AAAA,IACA,IAAI,OAAO,UAAU,YAAY,SAAS,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC7D,IAAI,SAAS,KAAK,eAAe,KAAK;AAAA,IAC1C;AAAA,IACA,OAAO,IAAI,SAAS;AAAA;AAAA,EAExB,6BAA6B,CAAC,WAAW;AAAA,IACrC,MAAM,iBAAiB,KAAK;AAAA,IAC5B,MAAM,kBAAmB,KAAK,KAAK,YAAa;AAAA,IAChD,IAAI,kBAAkB,gBAAgB;AAAA,MAClC,MAAM,IAAW,eAAe,gFAC5B,iGAAiG;AAAA,IACzG;AAAA,IACA,OAAO,iBAAiB;AAAA;AAAA,OAKtB,eAAc,CAAC,SAAS;AAAA,OAOxB,eAAc,CAAC,WAAW,KAAK,WAAW;AAAA,EAChD,GAAG,CAAC,OAAM,MAAM;AAAA,IACZ,OAAO,KAAK,cAAc,OAAO,OAAM,IAAI;AAAA;AAAA,EAE/C,IAAI,CAAC,OAAM,MAAM;AAAA,IACb,OAAO,KAAK,cAAc,QAAQ,OAAM,IAAI;AAAA;AAAA,EAEhD,KAAK,CAAC,OAAM,MAAM;AAAA,IACd,OAAO,KAAK,cAAc,SAAS,OAAM,IAAI;AAAA;AAAA,EAEjD,GAAG,CAAC,OAAM,MAAM;AAAA,IACZ,OAAO,KAAK,cAAc,OAAO,OAAM,IAAI;AAAA;AAAA,EAE/C,MAAM,CAAC,OAAM,MAAM;AAAA,IACf,OAAO,KAAK,cAAc,UAAU,OAAM,IAAI;AAAA;AAAA,EAElD,aAAa,CAAC,QAAQ,OAAM,MAAM;AAAA,IAC9B,OAAO,KAAK,QAAQ,QAAQ,QAAQ,IAAI,EAAE,KAAK,CAAC,UAAS;AAAA,MACrD,OAAO,EAAE,QAAQ,gBAAS,MAAK;AAAA,KAClC,CAAC;AAAA;AAAA,EAEN,OAAO,CAAC,SAAS,mBAAmB,MAAM;AAAA,IACtC,OAAO,IAAI,WAAW,MAAM,KAAK,YAAY,SAAS,kBAAkB,SAAS,CAAC;AAAA;AAAA,OAEhF,YAAW,CAAC,cAAc,kBAAkB,qBAAqB;AAAA,IACnE,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,aAAa,QAAQ,cAAc,KAAK;AAAA,IAC9C,IAAI,oBAAoB,MAAM;AAAA,MAC1B,mBAAmB;AAAA,IACvB;AAAA,IACA,MAAM,KAAK,eAAe,OAAO;AAAA,IACjC,QAAQ,KAAK,KAAK,YAAY,MAAM,KAAK,aAAa,SAAS;AAAA,MAC3D,YAAY,aAAa;AAAA,IAC7B,CAAC;AAAA,IACD,MAAM,KAAK,eAAe,KAAK,EAAE,KAAK,QAAQ,CAAC;AAAA,IAE/C,MAAM,eAAe,UAAW,KAAK,OAAO,KAAK,KAAK,MAAO,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,IAC5F,MAAM,cAAc,wBAAwB,YAAY,KAAK,cAAc;AAAA,IAC3E,MAAM,YAAY,KAAK,IAAI;AAAA,IAC3B,UAAU,IAAI,EAAE,MAAM,IAAI,iCAAiC,qBAAqB;AAAA,MAC5E;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA;AAAA,MACA,SAAS,IAAI;AAAA,IACjB,CAAC,CAAC;AAAA,IACF,IAAI,QAAQ,QAAQ,SAAS;AAAA,MACzB,MAAM,IAAW;AAAA,IACrB;AAAA,IACA,MAAM,aAAa,IAAI;AAAA,IACvB,MAAM,WAAW,MAAM,KAAK,iBAAiB,KAAK,KAAK,SAAS,UAAU,EAAE,MAAM,WAAW;AAAA,IAC7F,MAAM,cAAc,KAAK,IAAI;AAAA,IAC7B,IAAI,oBAAoB,WAAW,OAAO;AAAA,MACtC,MAAM,eAAe,aAAa;AAAA,MAClC,IAAI,QAAQ,QAAQ,SAAS;AAAA,QACzB,MAAM,IAAW;AAAA,MACrB;AAAA,MAKA,MAAM,YAAY,aAAa,QAAQ,KACnC,eAAe,KAAK,OAAO,QAAQ,KAAK,WAAW,WAAW,OAAO,SAAS,KAAK,IAAI,GAAG;AAAA,MAC9F,IAAI,kBAAkB;AAAA,QAClB,UAAU,IAAI,EAAE,KAAK,IAAI,4BAA4B,YAAY,cAAc,cAAc,cAAc;AAAA,QAC3G,UAAU,IAAI,EAAE,MAAM,IAAI,4BAA4B,YAAY,cAAc,aAAa,iBAAiB,qBAAqB;AAAA,UAC/H;AAAA,UACA;AAAA,UACA,YAAY,cAAc;AAAA,UAC1B,SAAS,SAAS;AAAA,QACtB,CAAC,CAAC;AAAA,QACF,OAAO,KAAK,aAAa,SAAS,kBAAkB,uBAAuB,YAAY;AAAA,MAC3F;AAAA,MACA,UAAU,IAAI,EAAE,KAAK,IAAI,4BAA4B,YAAY,cAAc,wCAAwC;AAAA,MACvH,UAAU,IAAI,EAAE,MAAM,IAAI,4BAA4B,YAAY,cAAc,0CAA0C,qBAAqB;AAAA,QAC3I;AAAA,QACA;AAAA,QACA,YAAY,cAAc;AAAA,QAC1B,SAAS,SAAS;AAAA,MACtB,CAAC,CAAC;AAAA,MACF,IAAI,WAAW;AAAA,QACX,MAAM,IAAW;AAAA,MACrB;AAAA,MACA,MAAM,IAAW,mBAAmB,EAAE,OAAO,SAAS,CAAC;AAAA,IAC3D;AAAA,IACA,MAAM,iBAAiB,CAAC,GAAG,SAAS,QAAQ,QAAQ,CAAC,EAChD,OAAO,EAAE,UAAU,SAAS,YAAY,EACxC,IAAI,EAAE,MAAM,WAAW,OAAO,OAAO,OAAO,KAAK,UAAU,KAAK,CAAC,EACjE,KAAK,EAAE;AAAA,IACZ,MAAM,eAAe,IAAI,eAAe,cAAc,mBAAmB,IAAI,UAAU,OAAO,SAAS,KAAK,cAAc,wBAAwB,SAAS,aAAa,cAAc;AAAA,IACtL,IAAI,CAAC,SAAS,IAAI;AAAA,MACd,MAAM,cAAc,MAAM,KAAK,YAAY,QAAQ;AAAA,MACnD,IAAI,oBAAoB,aAAa;AAAA,QACjC,MAAM,gBAAe,aAAa;AAAA,QAElC,MAAY,qBAAqB,SAAS,IAAI;AAAA,QAC9C,UAAU,IAAI,EAAE,KAAK,GAAG,kBAAkB,eAAc;AAAA,QACxD,UAAU,IAAI,EAAE,MAAM,IAAI,iCAAiC,kBAAiB,qBAAqB;AAAA,UAC7F;AAAA,UACA,KAAK,SAAS;AAAA,UACd,QAAQ,SAAS;AAAA,UACjB,SAAS,SAAS;AAAA,UAClB,YAAY,cAAc;AAAA,QAC9B,CAAC,CAAC;AAAA,QACF,OAAO,KAAK,aAAa,SAAS,kBAAkB,uBAAuB,cAAc,SAAS,OAAO;AAAA,MAC7G;AAAA,MACA,MAAM,eAAe,cAAc,gCAAgC;AAAA,MACnE,UAAU,IAAI,EAAE,KAAK,GAAG,kBAAkB,cAAc;AAAA,MACxD,MAAM,UAAU,MAAM,SAAS,KAAK,EAAE,MAAM,CAAC,SAAQ,YAAY,IAAG,EAAE,OAAO;AAAA,MAC7E,MAAM,UAAU,SAAS,OAAO;AAAA,MAChC,MAAM,aAAa,UAAU,YAAY;AAAA,MACzC,UAAU,IAAI,EAAE,MAAM,IAAI,iCAAiC,iBAAiB,qBAAqB;AAAA,QAC7F;AAAA,QACA,KAAK,SAAS;AAAA,QACd,QAAQ,SAAS;AAAA,QACjB,SAAS,SAAS;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,KAAK,IAAI,IAAI;AAAA,MAC7B,CAAC,CAAC;AAAA,MACF,MAAM,MAAM,KAAK,gBAAgB,SAAS,QAAQ,SAAS,YAAY,SAAS,OAAO;AAAA,MACvF,MAAM;AAAA,IACV;AAAA,IACA,UAAU,IAAI,EAAE,KAAK,YAAY;AAAA,IACjC,UAAU,IAAI,EAAE,MAAM,IAAI,gCAAgC,qBAAqB;AAAA,MAC3E;AAAA,MACA,KAAK,SAAS;AAAA,MACd,QAAQ,SAAS;AAAA,MACjB,SAAS,SAAS;AAAA,MAClB,YAAY,cAAc;AAAA,IAC9B,CAAC,CAAC;AAAA,IACF,OAAO,EAAE,UAAU,SAAS,YAAY,cAAc,qBAAqB,UAAU;AAAA;AAAA,EAEzF,UAAU,CAAC,OAAM,OAAM,MAAM;AAAA,IACzB,OAAO,KAAK,eAAe,OAAM,EAAE,QAAQ,OAAO,gBAAS,KAAK,CAAC;AAAA;AAAA,EAErE,cAAc,CAAC,OAAM,SAAS;AAAA,IAC1B,MAAM,UAAU,KAAK,YAAY,SAAS,MAAM,SAAS;AAAA,IACzD,OAAO,IAAe,YAAY,MAAM,SAAS,KAAI;AAAA;AAAA,OAEnD,iBAAgB,CAAC,KAAK,MAAM,IAAI,YAAY;AAAA,IAC9C,QAAQ,QAAQ,WAAW,YAAY,QAAQ,CAAC;AAAA,IAChD,IAAI;AAAA,MACA,OAAO,iBAAiB,SAAS,MAAM,WAAW,MAAM,CAAC;AAAA,IAC7D,MAAM,UAAU,WAAW,MAAM,WAAW,MAAM,GAAG,EAAE;AAAA,IACvD,MAAM,iBAAkB,WAAW,kBAAkB,QAAQ,gBAAgB,WAAW,kBACnF,OAAO,QAAQ,SAAS,YAAY,QAAQ,SAAS,QAAQ,OAAO,iBAAiB,QAAQ;AAAA,IAClG,MAAM,eAAe;AAAA,MACjB,QAAQ,WAAW;AAAA,SACf,iBAAiB,EAAE,QAAQ,OAAO,IAAI,CAAC;AAAA,MAC3C,QAAQ;AAAA,SACL;AAAA,IACP;AAAA,IACA,IAAI,QAAQ;AAAA,MAGR,aAAa,SAAS,OAAO,YAAY;AAAA,IAC7C;AAAA,IACA,IAAI;AAAA,MAEA,OAAO,MAAM,KAAK,MAAM,KAAK,WAAW,KAAK,YAAY;AAAA,cAE7D;AAAA,MACI,aAAa,OAAO;AAAA;AAAA;AAAA,OAGtB,YAAW,CAAC,UAAU;AAAA,IAExB,MAAM,oBAAoB,SAAS,QAAQ,IAAI,gBAAgB;AAAA,IAE/D,IAAI,sBAAsB;AAAA,MACtB,OAAO;AAAA,IACX,IAAI,sBAAsB;AAAA,MACtB,OAAO;AAAA,IAEX,IAAI,SAAS,WAAW;AAAA,MACpB,OAAO;AAAA,IAEX,IAAI,SAAS,WAAW;AAAA,MACpB,OAAO;AAAA,IAEX,IAAI,SAAS,WAAW;AAAA,MACpB,OAAO;AAAA,IAEX,IAAI,SAAS,UAAU;AAAA,MACnB,OAAO;AAAA,IACX,OAAO;AAAA;AAAA,OAEL,aAAY,CAAC,SAAS,kBAAkB,cAAc,iBAAiB;AAAA,IACzE,IAAI;AAAA,IAEJ,MAAM,yBAAyB,iBAAiB,IAAI,gBAAgB;AAAA,IACpE,IAAI,wBAAwB;AAAA,MACxB,MAAM,YAAY,WAAW,sBAAsB;AAAA,MACnD,IAAI,CAAC,OAAO,MAAM,SAAS,GAAG;AAAA,QAC1B,gBAAgB;AAAA,MACpB;AAAA,IACJ;AAAA,IAEA,MAAM,mBAAmB,iBAAiB,IAAI,aAAa;AAAA,IAC3D,IAAI,oBAAoB,CAAC,eAAe;AAAA,MACpC,MAAM,iBAAiB,WAAW,gBAAgB;AAAA,MAClD,IAAI,CAAC,OAAO,MAAM,cAAc,GAAG;AAAA,QAC/B,gBAAgB,iBAAiB;AAAA,MACrC,EACK;AAAA,QACD,gBAAgB,KAAK,MAAM,gBAAgB,IAAI,KAAK,IAAI;AAAA;AAAA,IAEhE;AAAA,IAGA,IAAI,EAAE,iBAAiB,KAAK,iBAAiB,gBAAgB,KAAK,OAAO;AAAA,MACrE,MAAM,aAAa,QAAQ,cAAc,KAAK;AAAA,MAC9C,gBAAgB,KAAK,mCAAmC,kBAAkB,UAAU;AAAA,IACxF;AAAA,IACA,MAAM,MAAM,aAAa;AAAA,IACzB,OAAO,KAAK,YAAY,SAAS,mBAAmB,GAAG,YAAY;AAAA;AAAA,EAEvE,kCAAkC,CAAC,kBAAkB,YAAY;AAAA,IAC7D,MAAM,oBAAoB;AAAA,IAC1B,MAAM,gBAAgB;AAAA,IACtB,MAAM,aAAa,aAAa;AAAA,IAEhC,MAAM,eAAe,KAAK,IAAI,oBAAoB,KAAK,IAAI,GAAG,UAAU,GAAG,aAAa;AAAA,IAExF,MAAM,SAAS,IAAI,KAAK,OAAO,IAAI;AAAA,IACnC,OAAO,eAAe,SAAS;AAAA;AAAA,EAEnC,4BAA4B,CAAC,WAAW,uBAAuB;AAAA,IAC3D,MAAM,UAAU,KAAK,KAAK;AAAA,IAC1B,MAAM,cAAc,KAAK,KAAK;AAAA,IAC9B,MAAM,eAAgB,UAAU,YAAa;AAAA,IAC7C,IAAI,eAAe,eAAgB,yBAAyB,QAAQ,YAAY,uBAAwB;AAAA,MACpG,MAAM,IAAW,eAAe,sKAAsK;AAAA,IAC1M;AAAA,IACA,OAAO;AAAA;AAAA,OAEL,aAAY,CAAC,gBAAgB,aAAa,MAAM,CAAC,GAAG;AAAA,IACtD,MAAM,UAAU,KAAK,aAAa;AAAA,IAClC,QAAQ,QAAQ,aAAM,OAAO,mBAAmB;AAAA,IAChD,MAAM,MAAM,KAAK,SAAS,OAAM,OAAO,cAAc;AAAA,IACrD,IAAI,aAAa;AAAA,MACb,wBAAwB,WAAW,QAAQ,OAAO;AAAA,IACtD,QAAQ,UAAU,QAAQ,WAAW,KAAK;AAAA,IAC1C,QAAQ,aAAa,SAAS,KAAK,UAAU,EAAE,QAAQ,CAAC;AAAA,IACxD,MAAM,aAAa,MAAM,KAAK,aAAa,EAAE,SAAS,cAAc,QAAQ,aAAa,WAAW,CAAC;AAAA,IACrG,MAAM,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,SACL,QAAQ,UAAU,EAAE,QAAQ,QAAQ,OAAO;AAAA,SAC3C,WAAW,kBACX,gBAAgB,WAAW,kBAAkB,EAAE,QAAQ,OAAO;AAAA,SAC9D,QAAQ,EAAE,KAAK;AAAA,SACf,KAAK,gBAAgB,CAAC;AAAA,SACtB,QAAQ,gBAAgB,CAAC;AAAA,IACjC;AAAA,IACA,OAAO,EAAE,KAAK,KAAK,SAAS,QAAQ,QAAQ;AAAA;AAAA,OAE1C,aAAY,GAAG,SAAS,QAAQ,aAAa,cAAe;AAAA,IAC9D,IAAI,qBAAqB,CAAC;AAAA,IAC1B,IAAI,KAAK,qBAAqB,WAAW,OAAO;AAAA,MAC5C,IAAI,CAAC,QAAQ;AAAA,QACT,QAAQ,iBAAiB,KAAK,sBAAsB;AAAA,MACxD,mBAAmB,KAAK,qBAAqB,QAAQ;AAAA,IACzD;AAAA,IACA,MAAM,UAAU,aAAa;AAAA,MACzB;AAAA,MACA;AAAA,QACI,QAAQ;AAAA,QACR,cAAc,KAAK,aAAa;AAAA,QAChC,2BAA2B,OAAO,UAAU;AAAA,WACxC,QAAQ,UAAU,EAAE,uBAAuB,OAAO,KAAK,MAAM,QAAQ,UAAU,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,WAC5F,mBAAmB;AAAA,WAClB,KAAK,SAAS,0BACd,EAAE,6CAA6C,OAAO,IACpD;AAAA,QACN,qBAAqB;AAAA,MACzB;AAAA,MACA,MAAM,KAAK,YAAY,OAAO;AAAA,MAC9B,KAAK,SAAS;AAAA,MACd;AAAA,MACA,QAAQ;AAAA,IACZ,CAAC;AAAA,IACD,KAAK,gBAAgB,OAAO;AAAA,IAC5B,OAAO,QAAQ;AAAA;AAAA,EAEnB,SAAS,GAAG,WAAW,MAAM,SAAS,gBAAgB;AAAA,IAClD,IAAI,CAAC,MAAM;AAAA,MACP,OAAO,EAAE,aAAa,WAAW,MAAM,UAAU;AAAA,IACrD;AAAA,IACA,MAAM,UAAU,aAAa,CAAC,UAAU,CAAC;AAAA,IACzC,IAEA,YAAY,OAAO,IAAI,KACnB,gBAAgB,eAChB,gBAAgB,YACf,OAAO,SAAS,YAEb,QAAQ,OAAO,IAAI,cAAc,KAEpC,WAAW,QAAQ,gBAAgB,WAAW,QAE/C,gBAAgB,YAEhB,gBAAgB,mBAEf,WAAW,kBAAkB,gBAAgB,WAAW,gBAAiB;AAAA,MAC1E,OAAO,EAAE,aAAa,WAAW,KAAW;AAAA,IAChD,EACK,SAAI,OAAO,SAAS,cACpB,OAAO,iBAAiB,UACpB,OAAO,YAAY,UAAQ,UAAU,SAAQ,OAAO,KAAK,SAAS,aAAc;AAAA,MACrF,OAAO,EAAE,aAAa,WAAW,MAAY,mBAAmB,IAAI,EAAE;AAAA,IAC1E,EACK;AAAA,MACD,OAAO,uBAAuB,MAAM,wBAAwB,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAAA;AAAA;AAGzG;AACA,KAAK,eAAe,yBAAyB,IAAI,SAAW,2BAA2B,IAAI,SAAW,mCAAmC,SAAS,iCAAgC,GAAG;AAAA,EACjL,OAAO,KAAK,YAAY;AAAA;AAE5B,cAAc,YAAY;AAC1B,cAAc,eAAe;AAC7B,cAAc,YAAY;AAC1B,cAAc,kBAAkB;AAChC,cAAc,iBAAwB;AACtC,cAAc,WAAkB;AAChC,cAAc,qBAA4B;AAC1C,cAAc,4BAAmC;AACjD,cAAc,oBAA2B;AACzC,cAAc,gBAAuB;AACrC,cAAc,gBAAuB;AACrC,cAAc,iBAAwB;AACtC,cAAc,kBAAyB;AACvC,cAAc,sBAA6B;AAC3C,cAAc,sBAA6B;AAC3C,cAAc,wBAA+B;AAC7C,cAAc,2BAAkC;AAChD,cAAc,SAAiB;AAAA;AAIxB,MAAM,kBAAkB,cAAc;AAAA,EACzC,WAAW,GAAG;AAAA,IACV,MAAM,GAAG,SAAS;AAAA,IAClB,KAAK,cAAc,IAAQ,YAAY,IAAI;AAAA,IAC3C,KAAK,WAAW,IAAQ,UAAS,IAAI;AAAA,IACrC,KAAK,SAAS,IAAQ,QAAO,IAAI;AAAA,IACjC,KAAK,OAAO,IAAQ,KAAK,IAAI;AAAA;AAErC;AACA,UAAU,cAAc;AACxB,UAAU,WAAW;AACrB,UAAU,SAAS;AACnB,UAAU,OAAO;;AC5hBjB;AACA;AAAA;AAGO,MAAM,aAAa;AAAA,EAChB;AAAA,EAER,WAAW,CAAC,aAAqB;AAAA,IAC/B,KAAK,cAAc;AAAA;AAAA,EAMrB,OAAO,GAAkB;AAAA,IACvB,MAAM,SAAS,KAAK,iBAAiB;AAAA,IAErC,IAAI,CAAC,UAAU,CAAI,cAAW,MAAM,GAAG;AAAA,MACrC,OAAO;AAAA,QACL,MAAM,CAAC;AAAA,QACP,WAAW,UAAe,WAAK,KAAK,aAAa,QAAQ,KAAK;AAAA,MAChE;AAAA,IACF;AAAA,IAEA,MAAM,QACH,eAAY,MAAM,EAClB,OAAO,CAAC,SAAS,KAAK,SAAS,KAAK,CAAC,EACrC,IAAI,CAAC,SAAc,WAAK,QAAQ,IAAI,CAAC;AAAA,IAExC,MAAM,OAAc,CAAC;AAAA,IAErB,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,SAAS,IAAI;AAAA,QAC9B,IAAI,KAAK;AAAA,UACP,KAAK,KAAK,GAAG;AAAA,QACf;AAAA,QACA,OAAO,QAAO;AAAA,QAEd,IAAI,QAAQ,IAAI,gBAAgB;AAAA,UAC9B,QAAQ,IAAI,oCAAoC,SAAS,QAAO;AAAA,QAClE;AAAA;AAAA,IAEJ;AAAA,IAGA,KAAK,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AAAA,IAE5C,OAAO;AAAA,MACL;AAAA,MACA,WAAW;AAAA,IACb;AAAA;AAAA,EAMM,gBAAgB,GAAkB;AAAA,IACxC,MAAM,aAAa;AAAA,MACZ,WAAK,KAAK,aAAa,QAAQ,KAAK;AAAA,MACpC,WAAK,KAAK,aAAa,QAAQ,gBAAgB,WAAW;AAAA,MAC1D,WAAK,KAAK,aAAa,KAAK;AAAA,MAC5B,WAAK,KAAK,aAAa,gBAAgB,WAAW;AAAA,IACzD;AAAA,IAEA,WAAW,aAAa,YAAY;AAAA,MAClC,IAAO,cAAW,SAAS,GAAG;AAAA,QAC5B,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,QAAQ,CAAC,UAA8B;AAAA,IAC7C,MAAM,UAAa,gBAAa,UAAU,OAAO;AAAA,IACjD,MAAM,WAAgB,eAAS,UAAU,KAAK;AAAA,IAG9C,MAAM,UAAU,SAAS,MAAM,QAAQ;AAAA,IACvC,MAAM,KAAK,UAAU,MAAM;AAAA,IAG3B,MAAM,aAAa,QAAQ,MAAM,aAAa;AAAA,IAC9C,MAAM,QAAQ,aAAa,IAAI,KAAK,KAAK;AAAA,IAGzC,MAAM,SAAS,KAAK,cAAc,OAAO;AAAA,IAGzC,MAAM,OAAO,KAAK,YAAY,OAAO;AAAA,IAGrC,MAAM,UAAU,KAAK,eAAe,SAAS,SAAS;AAAA,IACtD,MAAM,WAAW,KAAK,eAAe,SAAS,UAAU;AAAA,IACxD,MAAM,eAAe,KAAK,eAAe,SAAS,cAAc;AAAA,IAGhE,MAAM,sBAAsB,KAAK,eAAe,SAAS,cAAc;AAAA,IACvE,MAAM,eAAe,sBACjB,oBACG,MAAM;AAAA,CAAI,EACV,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,WAAW,GAAG,CAAC,EAC5C,IAAI,CAAC,SAAS,KAAK,QAAQ,SAAS,EAAE,EAAE,KAAK,CAAC,IACjD;AAAA,IAGJ,MAAM,QAAQ,KAAK,aAAa,OAAO;AAAA,IAEvC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc;AAAA,MAE1C,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,SACI,gBAAgB,aAAa,SAAS,IAAI,EAAE,aAAa,IAAI,CAAC;AAAA,SAC9D,MAAM,SAAS,IAAI,EAAE,MAAM,IAAI,CAAC;AAAA,MACpC,QAAQ;AAAA,IACV;AAAA;AAAA,EAMM,aAAa,CAAC,SAA4B;AAAA,IAChD,MAAM,cAAc,QAAQ,MAAM,kBAAkB;AAAA,IACpD,IAAI,CAAC;AAAA,MAAa,OAAO;AAAA,IAEzB,MAAM,SAAS,YAAY,IAAI,YAAY;AAAA,IAC3C,IAAI,UAAU,CAAC,YAAY,YAAY,cAAc,YAAY,EAAE,SAAS,MAAM,GAAG;AAAA,MACnF,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,WAAW,CAAC,SAAyB;AAAA,IAE3C,MAAM,YACJ,QAAQ,MAAM,8BAA8B,KAAK,QAAQ,MAAM,sBAAsB;AAAA,IAEvF,IAAI,YAAY,IAAI;AAAA,MAClB,OAAO,UAAU;AAAA,IACnB;AAAA,IAEA,MAAM,UAAU,IAAI,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,IACpD,OAAO,WAAW,IAAI,KAAK,EAAE,mBAAmB,OAAO;AAAA;AAAA,EAMjD,cAAc,CAAC,SAAiB,aAA6B;AAAA,IAEnE,MAAM,QAAQ,IAAI,OAAO,SAAS,6CAA6C,GAAG;AAAA,IAClF,MAAM,QAAQ,QAAQ,MAAM,KAAK;AAAA,IAEjC,OAAO,QAAQ,IAAI,KAAK,KAAK;AAAA;AAAA,EAMvB,YAAY,CAAC,SAA4B;AAAA,IAC/C,MAAM,QAAmB,CAAC;AAAA,IAG1B,MAAM,kBAAkB,QAAQ,MAAM,2BAA2B;AAAA,IACjE,IAAI,iBAAiB;AAAA,MACnB,WAAW,SAAS,iBAAiB;AAAA,QACnC,MAAM,UAAU,MAAM,MAAM,WAAW;AAAA,QACvC,MAAM,KAAK,UAAU;AAAA,QACrB,IAAI,IAAI;AAAA,UACN,MAAM,KAAK;AAAA,YACT,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,oBAAoB,QAAQ,MAAM,8BAA8B;AAAA,IACtE,IAAI,mBAAmB;AAAA,MACrB,WAAW,SAAS,mBAAmB;AAAA,QACrC,MAAM,UAAU,MAAM,MAAM,WAAW;AAAA,QACvC,MAAM,KAAK,UAAU;AAAA,QACrB,IAAI,IAAI;AAAA,UACN,MAAM,KAAK;AAAA,YACT,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAEX;AAKO,SAAS,WAAW,CAAC,aAAoC;AAAA,EAC9D,MAAM,YAAY,IAAI,aAAa,WAAW;AAAA,EAC9C,OAAO,UAAU,QAAQ;AAAA;;AC1N3B;AACA;;;ACDA;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,gBAAgB;AAAA,EACnB;AAAA,EAER,WAAW,CAAC,cAAsB;AAAA,IAChC,KAAK,UAAU,IAAI,QAAQ;AAAA,MACzB,kBAAkB;AAAA,IACpB,CAAC;AAAA;AAAA,EAMH,cAAc,CAAC,aAAqB,YAAoB,UAAyC;AAAA,IAC/F,MAAM,aAAa,KAAK,QAAQ,cAAc,UAAU;AAAA,IAExD,IAAI,CAAC,YAAY;AAAA,MACf,MAAM,IAAI,MAAM,+BAA+B,YAAY;AAAA,IAC7D;AAAA,IAGA,MAAM,aAAa,KAAK,kBAAkB,UAAU;AAAA,IAGpD,MAAM,eAAe,KAAK,oBAAoB,UAAU;AAAA,IAGxD,MAAM,cAAc,KAAK,mBAAmB,UAAU;AAAA,IAGtD,MAAM,aAAa,KAAK,YAAY,WAAW,IAC3C,KAAK,kBAAkB,UAAU,IACjC;AAAA,IAGJ,MAAM,kBAAkB,SAAS,OAAO,CAAC,MAAM,EAAE,SAAS,WAAW;AAAA,IAErE,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,cAAc,CAAC;AAAA,SACX,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,MACnC;AAAA,SACI,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,IACvC;AAAA;AAAA,EAMM,iBAAiB,CAAC,YAAkC;AAAA,IAC1D,MAAM,OAAO,IAAI;AAAA,IAEjB,WAAW,kBAAkB,CAAC,SAAe;AAAA,MAC3C,IAAI,KAAK,2BAA2B,IAAI,GAAG;AAAA,QACzC,MAAM,OAAO,KAAK,QAAQ;AAAA,QAC1B,KAAK,iBAAiB,MAAM,IAAI;AAAA,MAClC;AAAA,KACD;AAAA,IAED,OAAO,MAAM,KAAK,IAAI,EAAE,KAAK;AAAA;AAAA,EAMvB,gBAAgB,CAAC,MAAc,MAAyB;AAAA,IAE9D,IAAI,KAAK,WAAW,SAAS,GAAG;AAAA,MAC9B,MAAM,MAAM,KAAK,qBAAqB,MAAM,QAAQ;AAAA,MACpD,IAAI;AAAA,QAAK,KAAK,IAAI,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,WAAW,UAAU,GAAG;AAAA,MAC/B,MAAM,MAAM,KAAK,qBAAqB,MAAM,SAAS;AAAA,MACrD,IAAI;AAAA,QAAK,KAAK,IAAI,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,SAAS,eAAe,GAAG;AAAA,MAClC,MAAM,MAAM,KAAK,yBAAyB,IAAI;AAAA,MAC9C,IAAI;AAAA,QAAK,KAAK,IAAI,GAAG;AAAA,IACvB;AAAA;AAAA,EAMM,oBAAoB,CAAC,MAAc,QAA+B;AAAA,IACxE,MAAM,UAAU,IAAI,OAAO,IAAI,iCAAiC;AAAA,IAChE,MAAM,QAAQ,KAAK,MAAM,OAAO;AAAA,IAChC,OAAO,QAAQ,MAAM;AAAA;AAAA,EAMf,wBAAwB,CAAC,MAA6B;AAAA,IAC5D,MAAM,QAAQ,KAAK,MAAM,yBAAyB;AAAA,IAClD,OAAO,QAAQ,MAAM;AAAA;AAAA,EAMf,mBAAmB,CAAC,YAAkC;AAAA,IAC5D,MAAM,OAAiB,CAAC;AAAA,IAExB,WAAW,cAAc,WAAW,sBAAsB,GAAG;AAAA,MAC3D,MAAM,kBAAkB,WAAW,wBAAwB;AAAA,MAC3D,KAAK,KAAK,eAAe;AAAA,IAC3B;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,kBAAkB,CAAC,YAA4C;AAAA,IAErE,MAAM,iBAAiB,WAAW,cAAc,EAAE;AAAA,IAClD,IAAI,CAAC;AAAA,MAAgB;AAAA,IAErB,MAAM,kBAAkB,eAAe,wBAAwB;AAAA,IAC/D,IAAI,gBAAgB,WAAW;AAAA,MAAG;AAAA,IAElC,MAAM,eAAe,gBAAgB;AAAA,IACrC,IAAI,CAAC;AAAA,MAAc;AAAA,IAEnB,MAAM,UAAU,aAAa,QAAQ;AAAA,IAGrC,MAAM,YAAY,QAAQ,MAAM,+BAA+B;AAAA,IAC/D,IAAI,YAAY,IAAI;AAAA,MAClB,OAAO,UAAU,GAAG,KAAK;AAAA,IAC3B;AAAA,IAGA,MAAM,QAAQ,QACX,MAAM;AAAA,CAAI,EACV,IAAI,CAAC,MAAc,EAAE,QAAQ,WAAW,EAAE,EAAE,KAAK,CAAC,EAClD,OAAO,CAAC,MAAc,KAAK,CAAC,EAAE,WAAW,GAAG,CAAC;AAAA,IAEhD,OAAO,MAAM,MAAM;AAAA;AAAA,EAMb,iBAAiB,CAAC,YAAyC;AAAA,IACjE,MAAM,aAA8B,CAAC;AAAA,IAErC,WAAW,kBAAkB,CAAC,SAAe;AAAA,MAC3C,KAAK,yBAAyB,MAAM,YAAY,UAAU;AAAA,MAC1D,KAAK,8BAA8B,MAAM,YAAY,UAAU;AAAA,MAC/D,KAAK,sBAAsB,MAAM,YAAY,UAAU;AAAA,KACxD;AAAA,IAED,OAAO;AAAA;AAAA,EAMD,wBAAwB,CAC9B,MACA,YACA,YACM;AAAA,IACN,IAAI,CAAC,KAAK,sBAAsB,IAAI;AAAA,MAAG;AAAA,IAEvC,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,mBAAmB,MAAM,IAAI;AAAA,MAAG;AAAA,IAEnD,MAAM,cAAc,KAAK,wBAAwB,IAAI;AAAA,IACrD,WAAW,KAAK;AAAA,MACd;AAAA,MACA,MAAM;AAAA,MACN,UAAU,WAAW,YAAY;AAAA,MACjC,MAAM,KAAK,mBAAmB;AAAA,MAC9B,OAAO,KAAK,aAAa,IAAI;AAAA,SACzB,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,IACvC,CAAC;AAAA;AAAA,EAMK,6BAA6B,CACnC,MACA,YACA,YACM;AAAA,IACN,IAAI,CAAC,KAAK,sBAAsB,IAAI;AAAA,MAAG;AAAA,IAEvC,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,MAAM,cAAc,KAAK,eAAe;AAAA,IAExC,IAAI,CAAC,QAAQ,CAAC;AAAA,MAAa;AAAA,IAC3B,IAAI,CAAC,KAAK,gBAAgB,WAAW,KAAK,CAAC,KAAK,qBAAqB,WAAW;AAAA,MAAG;AAAA,IACnF,IAAI,CAAC,KAAK,mBAAmB,MAAM,WAAW;AAAA,MAAG;AAAA,IAEjD,MAAM,cAAc,KAAK,wBAAwB,IAAI;AAAA,IACrD,WAAW,KAAK;AAAA,MACd;AAAA,MACA,MAAM;AAAA,MACN,UAAU,WAAW,YAAY;AAAA,MACjC,MAAM,KAAK,mBAAmB;AAAA,MAC9B,OAAO,KAAK,aAAa,WAAW;AAAA,SAChC,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,IACvC,CAAC;AAAA;AAAA,EAMK,qBAAqB,CAC3B,MACA,YACA,YACM;AAAA,IACN,IAAI,CAAC,KAAK,mBAAmB,IAAI;AAAA,MAAG;AAAA,IAEpC,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,wBAAwB,IAAI;AAAA,MAAG;AAAA,IAElD,MAAM,cAAc,KAAK,wBAAwB,IAAI;AAAA,IACrD,WAAW,KAAK;AAAA,MACd;AAAA,MACA,MAAM;AAAA,MACN,UAAU,WAAW,YAAY;AAAA,MACjC,MAAM,KAAK,mBAAmB;AAAA,MAC9B,OAAO,KAAK,sBAAsB,IAAI;AAAA,SAClC,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,IACvC,CAAC;AAAA;AAAA,EAMK,kBAAkB,CACxB,MACA,MACS;AAAA,IAET,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,MAAG,OAAO;AAAA,IAGjC,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,IAAI,CAAC;AAAA,MAAM,OAAO;AAAA,IAElB,IAAI,SAAS;AAAA,IAEb,IAAI,KAAK,QAAQ,IAAI,GAAG;AAAA,MACtB,KAAK,kBAAkB,CAAC,UAAgB;AAAA,QACtC,IAAI,KAAK,aAAa,KAAK,KAAK,KAAK,wBAAwB,KAAK,GAAG;AAAA,UACnE,SAAS;AAAA,QACX;AAAA,OACD;AAAA,IACH,EAAO,SAAI,KAAK,aAAa,IAAI,KAAK,KAAK,wBAAwB,IAAI,GAAG;AAAA,MAExE,SAAS;AAAA,IACX;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,uBAAuB,CAAC,MAAiC;AAAA,IAC/D,MAAM,gBAAgB,KAAK,WAAW;AAAA,IACtC,IAAI,CAAC;AAAA,MAAe,OAAO;AAAA,IAE3B,MAAM,cAAc,cAAc,QAAQ;AAAA,IAC1C,OAAO,0BAA0B,KAAK,WAAW;AAAA;AAAA,EAM3C,YAAY,CAAC,MAA0E;AAAA,IAC7F,MAAM,SAAS,KAAK,cAAc;AAAA,IAClC,IAAI,OAAO,WAAW;AAAA,MAAG,OAAO,CAAC;AAAA,IAEjC,MAAM,aAAa,OAAO;AAAA,IAC1B,IAAI,CAAC;AAAA,MAAY,OAAO,CAAC;AAAA,IAEzB,MAAM,OAAO,WAAW,QAAQ;AAAA,IAEhC,MAAM,QAAkB,CAAC;AAAA,IACzB,WAAW,QAAQ,KAAK,cAAc,GAAG;AAAA,MACvC,MAAM,KAAK,KAAK,QAAQ,CAAC;AAAA,IAC3B;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,qBAAqB,CAAC,MAAkC;AAAA,IAC9D,MAAM,gBAAgB,KAAK,WAAW;AAAA,IACtC,IAAI,CAAC;AAAA,MAAe,OAAO,CAAC;AAAA,IAE5B,MAAM,WAAW,cAAc,QAAQ,EAAE,iBAAiB;AAAA,IAC1D,IAAI,SAAS,WAAW;AAAA,MAAG,OAAO,CAAC;AAAA,IAEnC,MAAM,YAAY,SAAS;AAAA,IAC3B,IAAI,CAAC;AAAA,MAAW,OAAO,CAAC;AAAA,IAExB,MAAM,QAAkB,CAAC;AAAA,IAEzB,WAAW,QAAQ,UAAU,cAAc,GAAG;AAAA,MAC5C,MAAM,KAAK,KAAK,QAAQ,CAAC;AAAA,IAC3B;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,uBAAuB,CAAC,MAAgC;AAAA,IAC9D,IAAI,CAAC,KAAK,YAAY,IAAI;AAAA,MAAG;AAAA,IAE7B,MAAM,SAAS,KAAK,UAAU;AAAA,IAC9B,IAAI,OAAO,WAAW;AAAA,MAAG;AAAA,IAEzB,MAAM,WAAW,OAAO;AAAA,IACxB,IAAI,CAAC;AAAA,MAAU;AAAA,IAEf,MAAM,cAAc,SAAS,eAAe,EAAE,KAAK;AAAA,IACnD,OAAO,eAAe;AAAA;AAAA,EAMhB,WAAW,CAAC,aAA8B;AAAA,IAChD,OAAO,CAAC,SAAS,WAAW,UAAU,EAAE,SAAS,WAAW;AAAA;AAEhE;;;ACvWA,iBAA8B,kBAAM;AAAA;AAI7B,MAAM,aAAa;AAAA,EAChB;AAAA,EACA;AAAA,EAER,WAAW,CAAC,cAAsB,UAA4B;AAAA,IAC5D,KAAK,UAAU,IAAI,SAAQ;AAAA,MACzB,kBAAkB;AAAA,IACpB,CAAC;AAAA,IACD,KAAK,WAAW;AAAA;AAAA,EAMlB,YAAY,GAAkB;AAAA,IAC5B,MAAM,QAAuB,CAAC;AAAA,IAG9B,MAAM,iBAAiB,IAAI;AAAA,IAC3B,WAAW,WAAW,KAAK,UAAU;AAAA,MACnC,IAAI,CAAC,eAAe,IAAI,QAAQ,WAAW,GAAG;AAAA,QAC5C,eAAe,IAAI,QAAQ,aAAa,CAAC,CAAC;AAAA,MAC5C;AAAA,MACA,eAAe,IAAI,QAAQ,WAAW,GAAG,KAAK,OAAO;AAAA,IACvD;AAAA,IAGA,YAAY,aAAa,aAAa,gBAAgB;AAAA,MAEpD,MAAM,UAAU,KAAK,mBAAmB,WAAW;AAAA,MAGnD,WAAW,UAAU,SAAS;AAAA,QAC5B,MAAM,aAAa,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,QAG7C,MAAM,WAAW,KAAK,cAAc,aAAa,QAAQ,QAAQ;AAAA,QAGjE,MAAM,eAAe,KAAK,oBAAoB,OAAO,MAAM,OAAO,IAAI;AAAA,QAEtE,MAAM,KAAK;AAAA,UACT;AAAA,UACA,MAAM,OAAO;AAAA,UACb,IAAI;AAAA,aACA,aAAa,UAAU,EAAE,SAAS,aAAa,QAAQ,IAAI,CAAC;AAAA,aAC5D,aAAa,WAAW,EAAE,UAAU,aAAa,SAAS,IAAI,CAAC;AAAA,aAC/D,aAAa,cAAc,EAAE,aAAa,aAAa,YAAY,IAAI,CAAC;AAAA,UAC5E;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAOD,kBAAkB,CAAC,aAIxB;AAAA,IACD,MAAM,UAAkE,CAAC;AAAA,IAEzE,WAAW,cAAc,KAAK,QAAQ,eAAe,GAAG;AAAA,MACtD,MAAM,WAAW,WAAW,YAAY;AAAA,MACxC,MAAM,UAAU,KAAK,aAAa,QAAQ;AAAA,MAE1C,WAAW,kBAAkB,CAAC,SAAS;AAAA,QACrC,KAAK,qBAAqB,MAAM,aAAa,SAAS,UAAU,OAAO;AAAA,OACxE;AAAA,IACH;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,oBAAoB,CAC1B,MACA,aACA,SACA,UACA,SACM;AAAA,IACN,IAAI,CAAC,MAAK,iBAAiB,IAAI,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,KAAK,cAAc;AAAA,IAEtC,IAAI,MAAK,2BAA2B,UAAU,GAAG;AAAA,MAC/C,KAAK,4BAA4B,MAAM,YAAY,aAAa,SAAS,UAAU,OAAO;AAAA,IAC5F,EAAO,SAAI,MAAK,aAAa,UAAU,GAAG;AAAA,MACxC,KAAK,wBAAwB,MAAM,YAAY,aAAa,SAAS,UAAU,OAAO;AAAA,IACxF;AAAA;AAAA,EAMM,2BAA2B,CACjC,MACA,YACA,aACA,SACA,UACA,SACM;AAAA,IACN,IAAI,CAAC,MAAK,2BAA2B,UAAU,GAAG;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,WAAW,QAAQ;AAAA,IAEtC,IAAI,CAAC,KAAK,oBAAoB,UAAU,GAAG;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,KAAK,aAAa;AAAA,IAC/B,IAAI,KAAK,WAAW,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,KAAK;AAAA,IACtB,IAAI,CAAC;AAAA,MAAU;AAAA,IAEf,MAAM,UAAU,KAAK,0BAA0B,QAAQ;AAAA,IACvD,IAAI,YAAY,aAAa;AAAA,MAC3B,QAAQ,KAAK;AAAA,QACX;AAAA,QACA,MAAM;AAAA,QACN,MAAM,KAAK,mBAAmB;AAAA,MAChC,CAAC;AAAA,IACH;AAAA;AAAA,EAMM,uBAAuB,CAC7B,MACA,YACA,aACA,SACA,UACA,SACM;AAAA,IACN,IAAI,CAAC,MAAK,aAAa,UAAU,GAAG;AAAA,MAClC;AAAA,IACF;AAAA,IAEA,IAAI,WAAW,QAAQ,MAAM,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,KAAK,aAAa;AAAA,IAC/B,IAAI,KAAK,WAAW,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,KAAK;AAAA,IACtB,IAAI,CAAC;AAAA,MAAU;AAAA,IAEf,MAAM,UAAU,KAAK,0BAA0B,QAAQ;AAAA,IACvD,IAAI,YAAY,aAAa;AAAA,MAC3B,QAAQ,KAAK;AAAA,QACX;AAAA,QACA,MAAM;AAAA,QACN,MAAM,KAAK,mBAAmB;AAAA,MAChC,CAAC;AAAA,IACH;AAAA;AAAA,EAMM,mBAAmB,CAAC,YAA6B;AAAA,IACvD,OACE,eAAe,UACf,eAAe,UACf,eAAe,iBACf,eAAe;AAAA;AAAA,EAOX,aAAa,CACnB,aACA,QACA,UACe;AAAA,IACf,MAAM,QAAuB,CAAC;AAAA,IAC9B,IAAI,aAAa;AAAA,IAGjB,MAAM,KAAK;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,GAAG,OAAO,gBAAgB;AAAA,MAClC,SAAS,OAAO;AAAA,MAChB,UAAU;AAAA,QACR,MAAM,OAAO;AAAA,QACb,MAAM,OAAO;AAAA,MACf;AAAA,IACF,CAAC;AAAA,IAGD,WAAW,WAAW,UAAU;AAAA,MAC9B,MAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,GAAG,QAAQ,eAAe;AAAA,QAClC,SAAS,QAAQ;AAAA,QACjB,UAAU,QAAQ;AAAA,MACpB,CAAC;AAAA,MAGD,MAAM,WAAW,KAAK,sBAAsB,OAAO;AAAA,MACnD,WAAW,WAAW,UAAU;AAAA,QAC9B,MAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,QAAQ,GAAG,QAAQ,aAAa,QAAQ;AAAA,UACxC,SAAS,QAAQ;AAAA,UACjB,UAAU,QAAQ;AAAA,QACpB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,qBAAqB,CAAC,SAG3B;AAAA,IACD,MAAM,QAAkF,CAAC;AAAA,IAEzF,MAAM,aAAa,KAAK,QAAQ,cAAc,QAAQ,SAAS,IAAI;AAAA,IACnE,IAAI,CAAC;AAAA,MAAY,OAAO;AAAA,IAExB,MAAM,aAAa,QAAQ,SAAS;AAAA,IAEpC,WAAW,kBAAkB,CAAC,SAAS;AAAA,MACrC,KAAK,gBAAgB,MAAM,YAAY,QAAQ,SAAS,MAAM,KAAK;AAAA,KACpE;AAAA,IAED,OAAO;AAAA;AAAA,EAMD,eAAe,CACrB,MACA,YACA,UACA,OACM;AAAA,IACN,IAAI,CAAC,MAAK,iBAAiB,IAAI,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,KAAK,mBAAmB;AAAA,IACrC,IAAI,CAAC,KAAK,WAAW,MAAM,UAAU,GAAG;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,KAAK,cAAc;AAAA,IACtC,IAAI,CAAC,KAAK,iBAAiB,UAAU,GAAG;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,KAAK,aAAa;AAAA,IAC/B,IAAI,KAAK,WAAW,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,KAAK;AAAA,IACtB,IAAI,CAAC;AAAA,MAAU;AAAA,IAEf,MAAM,cAAc,KAAK,0BAA0B,QAAQ;AAAA,IAC3D,IAAI,aAAa;AAAA,MACf,MAAM,KAAK;AAAA,QACT;AAAA,QACA,UAAU,EAAE,MAAM,UAAU,KAAK;AAAA,MACnC,CAAC;AAAA,IACH;AAAA;AAAA,EAMM,UAAU,CAAC,MAAc,YAA6B;AAAA,IAC5D,OAAO,KAAK,IAAI,OAAO,UAAU,IAAI;AAAA;AAAA,EAM/B,gBAAgB,CAAC,YAA2B;AAAA,IAClD,IAAI,CAAC,MAAK,2BAA2B,UAAU,GAAG;AAAA,MAChD,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,aAAa,WAAW,QAAQ;AAAA,IACtC,OAAO,eAAe,UAAU,eAAe;AAAA;AAAA,EAMzC,yBAAyB,CAAC,KAA+B;AAAA,IAC/D,IAAI,MAAK,gBAAgB,GAAG,GAAG;AAAA,MAC7B,OAAO,IAAI,gBAAgB;AAAA,IAC7B;AAAA,IAEA,IAAI,MAAK,0BAA0B,GAAG,GAAG;AAAA,MACvC,OAAO,KAAK,6BAA6B,GAAG;AAAA,IAC9C;AAAA,IAEA;AAAA;AAAA,EAMM,4BAA4B,CAAC,KAA+B;AAAA,IAClE,IAAI,CAAC,MAAK,0BAA0B,GAAG,GAAG;AAAA,MACxC;AAAA,IACF;AAAA,IAEA,MAAM,eAAe,IAAI,YAAY,MAAM;AAAA,IAC3C,IAAI,CAAC,gBAAgB,CAAC,MAAK,qBAAqB,YAAY,GAAG;AAAA,MAC7D;AAAA,IACF;AAAA,IAEA,MAAM,cAAc,aAAa,eAAe;AAAA,IAChD,IAAI,CAAC,eAAe,CAAC,MAAK,gBAAgB,WAAW,GAAG;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,OAAO,YAAY,gBAAgB;AAAA;AAAA,EAM7B,mBAAmB,CACzB,UACA,YAKA;AAAA,IACA,MAAM,aAAa,KAAK,QAAQ,cAAc,QAAQ;AAAA,IACtD,IAAI,CAAC;AAAA,MAAY,OAAO,CAAC;AAAA,IAGzB,IAAI,aAA0B;AAAA,IAE9B,WAAW,kBAAkB,CAAC,SAAS;AAAA,MACrC,IAAI,KAAK,mBAAmB,MAAM,YAAY;AAAA,QAC5C,aAAa;AAAA,MACf;AAAA,KACD;AAAA,IAED,IAAI,CAAC;AAAA,MAAY,OAAO,CAAC;AAAA,IAIzB,MAAM,UAAU;AAAA,IAChB,IAAI,EAAE,eAAe,YAAY,OAAO,QAAQ,cAAc,YAAY;AAAA,MACxE,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,MAAM,SAAS,QAAQ,UAAU;AAAA,IACjC,IAAI,OAAO,WAAW;AAAA,MAAG,OAAO,CAAC;AAAA,IAEjC,MAAM,WAAW,OAAO;AAAA,IACxB,IAAI,CAAC;AAAA,MAAU,OAAO,CAAC;AAAA,IAEvB,MAAM,UAAU,SAAS,QAAQ;AAAA,IAGjC,MAAM,YAAY,QAAQ,MAAM,kBAAkB;AAAA,IAClD,MAAM,WAAW,YAAY,UAAU,KAAK;AAAA,IAG5C,MAAM,eAAe,QAAQ,MAAM,0BAA0B;AAAA,IAC7D,MAAM,UAAU,eAAe,aAAa,GAAG,KAAK,IAAI;AAAA,IAGxD,MAAM,YAAY,QAAQ,MAAM,+BAA+B;AAAA,IAC/D,MAAM,cAAc,YAAY,UAAU,GAAG,KAAK,IAAI;AAAA,IAEtD,OAAO,EAAE,SAAS,UAAU,YAAY;AAAA;AAAA,EAMlC,YAAY,CAAC,UAA0B;AAAA,IAC7C,MAAM,QAAO,SAAS,YAAY;AAAA,IAGlC,MAAM,kBAAkE;AAAA,MACtE,EAAE,SAAS,cAAc,UAAU,CAAC,gBAAgB,gBAAgB,EAAE;AAAA,MACtE,EAAE,SAAS,WAAW,UAAU,CAAC,aAAa,aAAa,EAAE;AAAA,MAC7D,EAAE,SAAS,SAAS,UAAU,CAAC,WAAW,WAAW,EAAE;AAAA,MACvD,EAAE,SAAS,YAAY,UAAU,CAAC,cAAc,cAAc,EAAE;AAAA,MAChE,EAAE,SAAS,WAAW,UAAU,CAAC,aAAa,aAAa,EAAE;AAAA,MAC7D,EAAE,SAAS,aAAa,UAAU,CAAC,eAAe,eAAe,EAAE;AAAA,MACnE,EAAE,SAAS,UAAU,UAAU,CAAC,YAAY,cAAc,UAAU,EAAE;AAAA,MACtE,EAAE,SAAS,UAAU,UAAU,CAAC,YAAY,cAAc,UAAU,EAAE;AAAA,MACtE,EAAE,SAAS,UAAU,UAAU,CAAC,YAAY,cAAc,gBAAgB,EAAE;AAAA,IAC9E;AAAA,IAEA,aAAa,SAAS,cAAc,iBAAiB;AAAA,MACnD,IAAI,SAAS,KAAK,CAAC,YAAY,MAAK,SAAS,OAAO,CAAC,GAAG;AAAA,QACtD,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAEX;;;ACrbA;AAAA,UAOE;AAAA,aAEA;AAAA;AAAA;;;ACTF;AAAA,UAME;AAAA;AAAA;AAyBK,MAAM,sBAAsB;AAAA,EAIjC,kBAAkB,CAChB,aACA,YACA,aACwB;AAAA,IACxB,MAAM,gBAAwC,CAAC;AAAA,IAC/C,MAAM,UAAU,IAAI;AAAA,IAEpB,KAAK,gBAAgB,aAAa,YAAY,aAAa,eAAe,OAAO;AAAA,IAEjF,OAAO,KAAK,yBAAyB,aAAa;AAAA;AAAA,EAM5C,eAAe,CACrB,MACA,YACA,aACA,eACA,SACM;AAAA,IACN,KAAK,kBAAkB,CAAC,eAAe;AAAA,MACrC,KAAK,sBAAsB,YAAY,YAAY,aAAa,eAAe,OAAO;AAAA,KACvF;AAAA;AAAA,EAMK,qBAAqB,CAC3B,YACA,YACA,aACA,eACA,SACM;AAAA,IACN,IAAI,MAAK,iBAAiB,UAAU,GAAG;AAAA,MACrC,KAAK,sBAAsB,YAAY,YAAY,aAAa,eAAe,OAAO;AAAA,IACxF;AAAA,IAEA,IAAI,MAAK,kBAAkB,UAAU,GAAG;AAAA,MACtC,MAAM,MAAM,KAAK,wBAAwB,YAAY,WAAW;AAAA,MAChE,IAAI,KAAK;AAAA,QACP,cAAc,KAAK,GAAG;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,IAAI,MAAK,iBAAiB,UAAU,KAAK,WAAW,cAAc,EAAE,QAAQ,MAAM,SAAS;AAAA,MACzF,MAAM,MAAM,KAAK,qBAAqB,YAAY,WAAW;AAAA,MAC7D,IAAI,KAAK;AAAA,QACP,cAAc,KAAK,GAAG;AAAA,MACxB;AAAA,IACF;AAAA;AAAA,EAMM,qBAAqB,CAC3B,UACA,YACA,aACA,eACA,SACM;AAAA,IACN,MAAM,OAAO,SAAS,cAAc;AAAA,IAEpC,IAAI,MAAK,aAAa,IAAI,GAAG;AAAA,MAC3B,KAAK,sBAAsB,MAAM,YAAY,aAAa,eAAe,OAAO;AAAA,MAChF;AAAA,IACF;AAAA,IAEA,IAAI,MAAK,2BAA2B,IAAI,GAAG;AAAA,MACzC,MAAM,OAAM,KAAK,0BAA0B,MAAM,WAAW;AAAA,MAC5D,IAAI,MAAK;AAAA,QACP,cAAc,KAAK,IAAG;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,MAAM,KAAK,wBAAwB,UAAU,aAAa,UAAU;AAAA,IAC1E,IAAI,KAAK;AAAA,MACP,cAAc,KAAK,GAAG;AAAA,IACxB;AAAA;AAAA,EAMM,qBAAqB,CAC3B,YACA,YACA,aACA,eACA,SACM;AAAA,IACN,MAAM,eAAe,WAAW,QAAQ;AAAA,IACxC,MAAM,WAAW,KAAK,2BAA2B,cAAc,UAAU;AAAA,IAEzE,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,GAAG;AAAA,MAC1C,KAAK,mBACH,cACA,SAAS,cACT,SAAS,YACT,aACA,eACA,OACF;AAAA,MACA;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,UAAU;AAAA,MACb,KAAK,8BAA8B,cAAc,aAAa,aAAa;AAAA,IAC7E;AAAA;AAAA,EAMM,0BAA0B,CAChC,cACA,YAIO;AAAA,IACP,IAAI,eACF,WAAW,YAAY,YAAY;AAAA,IACrC,IAAI,mBAAmB;AAAA,IAEvB,IAAI,CAAC,cAAc;AAAA,MACjB,MAAM,WAAW,KAAK,wBAAwB,cAAc,UAAU;AAAA,MACtE,IAAI,UAAU;AAAA,QACZ,eAAe,SAAS;AAAA,QACxB,mBAAmB,SAAS;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,cAAc;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,EAAE,cAAc,YAAY,iBAAiB;AAAA;AAAA,EAM9C,kBAAkB,CACxB,cACA,cACA,kBACA,aACA,eACA,SACM;AAAA,IACN,QAAQ,IAAI,YAAY;AAAA,IAExB,MAAM,OAAO,aAAa,QAAQ;AAAA,IAClC,IAAI,MAAM;AAAA,MACR,KAAK,gBAAgB,MAAM,kBAAkB,aAAa,eAAe,OAAO;AAAA,IAClF;AAAA;AAAA,EAMM,6BAA6B,CACnC,cACA,aACA,eACM;AAAA,IACN,MAAM,oBAAoB,KAAK,+BAA+B,YAAY;AAAA,IAC1E,IAAI,mBAAmB;AAAA,MACrB,cAAc,KAAK;AAAA,QACjB,MAAM,KAAK,cAAc,WAAW;AAAA,QACpC,IAAI;AAAA,QACJ,aAAa,SAAS;AAAA,QACtB,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,UAAU,CAAC,kBAAkB,cAAc;AAAA,MAC7C,CAAC;AAAA,IACH;AAAA;AAAA,EAMM,uBAAuB,CAC7B,UACA,aACA,YAC6B;AAAA,IAC7B,MAAM,OAAO,SAAS,cAAc;AAAA,IACpC,MAAM,WAAW,KAAK,QAAQ;AAAA,IAG9B,MAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,IAAI,SAAS,KAAK,CAAC,SAAS,SAAS,WAAW,IAAI,CAAC,GAAG;AAAA,MACtD,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,eAAe;AAAA,IACnB,IAAI,kBAAiC;AAAA,IAGrC,IAAI,MAAK,2BAA2B,IAAI,GAAG;AAAA,MACzC,MAAM,aAAa,KAAK,cAAc;AAAA,MACtC,MAAM,aAAa,WAAW,QAAQ;AAAA,MACtC,MAAM,aAAa,KAAK,QAAQ;AAAA,MAGhC,kBAAkB,KAAK,uBAAuB,UAAU;AAAA,MAExD,IAAI,CAAC,iBAAiB;AAAA,QACpB,OAAO;AAAA,MACT;AAAA,MAEA,eAAe;AAAA,IACjB,EAAO;AAAA,MAEL,kBAAkB,KAAK,2BAA2B,UAAU,UAAU;AAAA,MAEtE,IAAI,CAAC,iBAAiB;AAAA,QACpB,OAAO;AAAA,MACT;AAAA;AAAA,IAGF,OAAO;AAAA,MACL,MAAM,KAAK,cAAc,WAAW;AAAA,MACpC,IAAI;AAAA,MACJ,aAAa,SAAS;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU,CAAC,kBAAkB,UAAU;AAAA,IACzC;AAAA;AAAA,EAOM,yBAAyB,CAC/B,YACA,aAC6B;AAAA,IAC7B,IAAI,CAAC,MAAK,2BAA2B,UAAU,GAAG;AAAA,MAChD,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,YAAY,WAAW,QAAQ;AAAA,IACrC,MAAM,aAAa,WAAW,QAAQ;AAAA,IAItC,IAAI,aAAa,WAAW,cAAc;AAAA,IAC1C,OAAO,MAAK,2BAA2B,UAAU,GAAG;AAAA,MAClD,aAAa,WAAW,cAAc;AAAA,IACxC;AAAA,IAEA,MAAM,aAAa,WAAW,QAAQ;AAAA,IAGtC,MAAM,kBAAkB,KAAK,uBAAuB,UAAU;AAAA,IAE9D,IAAI,CAAC,iBAAiB;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,MACL,MAAM,KAAK,cAAc,WAAW;AAAA,MACpC,IAAI;AAAA,MACJ,aAAa,SAAS;AAAA,MACtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU,CAAC,oBAAoB,WAAW;AAAA,IAC5C;AAAA;AAAA,EAMM,uBAAuB,CAC7B,WACA,aAC6B;AAAA,IAC7B,IAAI,CAAC,MAAK,kBAAkB,SAAS,GAAG;AAAA,MACtC,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,YAAY,UAAU,cAAc;AAAA,IAC1C,IAAI,CAAC,MAAK,iBAAiB,SAAS,GAAG;AAAA,MACrC,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,WAAW,UAAU,cAAc,EAAE,QAAQ;AAAA,IAGnD,IACE,SAAS,SAAS,UAAU,KAC5B,SAAS,SAAS,YAAY,KAC9B,SAAS,SAAS,WAAW,KAC7B,SAAS,SAAS,WAAW,KAC7B,SAAS,SAAS,WAAW,KAC7B,SAAS,SAAS,WAAW,GAC7B;AAAA,MACA,MAAM,YAAY,KAAK,uBAAuB,QAAQ;AAAA,MAEtD,OAAO;AAAA,QACL,MAAM,KAAK,cAAc,WAAW;AAAA,QACpC,IAAI;AAAA,QACJ,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,UAAU,CAAC,kBAAkB,UAAU;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,oBAAoB,CAC1B,UACA,aAC6B;AAAA,IAC7B,MAAM,OAAO,SAAS,aAAa;AAAA,IACnC,IAAI,KAAK,WAAW,KAAK,CAAC,KAAK,IAAI;AAAA,MACjC,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,SAAS,KAAK,GAAG,QAAQ;AAAA,IAG/B,IAAI,UAAU;AAAA,IACd,IAAI,OAAO,SAAS,QAAQ,GAAG;AAAA,MAC7B,UAAU;AAAA,IACZ,EAAO,SAAI,OAAO,SAAS,WAAW,GAAG;AAAA,MACvC,UAAU;AAAA,IACZ;AAAA,IAEA,OAAO;AAAA,MACL,MAAM,KAAK,cAAc,WAAW;AAAA,MACpC,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU,CAAC,oBAAoB,QAAQ;AAAA,IACzC;AAAA;AAAA,EAMM,sBAAsB,CAAC,YAAmC;AAAA,IAChE,MAAM,WAAmC;AAAA,MACvC,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,OAAO;AAAA,MACP,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,aAAa;AAAA,MACb,MAAM;AAAA,MACN,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,aAAa,WAAW,YAAY;AAAA,IAC1C,OAAO,SAAS,eAAe;AAAA;AAAA,EAOzB,8BAA8B,CAAC,cAAqC;AAAA,IAC1E,MAAM,aAAa,aAAa,YAAY;AAAA,IAG5C,IAAI,WAAW,WAAW,KAAK,KAAK,WAAW,WAAW,QAAQ,GAAG;AAAA,MACnE,MAAM,eAAe,WAAW,WAAW,KAAK,IAAI,IAAI;AAAA,MACxD,MAAM,SAAS,aAAa,UAAU,YAAY;AAAA,MAClD,OAAO,KAAK,sBAAsB,MAAM;AAAA,IAC1C;AAAA,IAGA,IAAI,WAAW,WAAW,MAAM,KAAK,WAAW,WAAW,OAAO,GAAG;AAAA,MACnE,MAAM,eAAe,WAAW,WAAW,MAAM,IAAI,IAAI;AAAA,MACzD,MAAM,SAAS,aAAa,UAAU,YAAY;AAAA,MAClD,OAAO,KAAK,iBAAiB,MAAM;AAAA,IACrC;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,qBAAqB,CAAC,QAA+B;AAAA,IAC3D,MAAM,cAAc,OAAO,YAAY;AAAA,IAEvC,MAAM,oBAAoB;AAAA,MACxB;AAAA,QACE,UAAU,CAAC,YAAY,MAAM,gBAAgB,YAAY;AAAA,QACzD,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,UAAU,CAAC,gBAAgB,SAAS,YAAY;AAAA,QAChD,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,UAAU,CAAC,OAAO;AAAA,QAClB,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,UAAU,CAAC,SAAS;AAAA,QACpB,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,UAAU,CAAC,MAAM,KAAK;AAAA,QACtB,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,UAAU,CAAC,QAAQ;AAAA,QACnB,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IAEA,aAAa,UAAU,eAAe,mBAAmB;AAAA,MACvD,IAAI,SAAS,KAAK,CAAC,YAAY,YAAY,SAAS,OAAO,KAAK,gBAAgB,OAAO,GAAG;AAAA,QACxF,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAGA,IAAI,YAAY,SAAS,SAAS,GAAG;AAAA,MACnC,MAAM,eAAe,OAAO,MAAM,gBAAgB;AAAA,MAClD,IAAI,cAAc;AAAA,QAChB,OAAO,KAAK,cAAc,GAAG,aAAa,YAAY;AAAA,MACxD;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,gBAAgB,CAAC,QAA+B;AAAA,IACtD,MAAM,cAAc,OAAO,YAAY;AAAA,IAEvC,IAAI,YAAY,SAAS,UAAU,KAAK,gBAAgB,MAAM;AAAA,MAC5D,OAAO;AAAA,IACT;AAAA,IACA,IAAI,YAAY,SAAS,OAAO,GAAG;AAAA,MACjC,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,0BAA0B,CAAC,cAAsB,YAAuC;AAAA,IAC9F,WAAW,cAAc,WAAW,sBAAsB,GAAG;AAAA,MAC3D,MAAM,eAAe,WAAW,gBAAgB;AAAA,MAEhD,WAAW,eAAe,cAAc;AAAA,QACtC,IAAI,YAAY,QAAQ,MAAM,cAAc;AAAA,UAC1C,MAAM,aAAa,WAAW,wBAAwB;AAAA,UACtD,MAAM,YAAY,KAAK,6BAA6B,UAAU;AAAA,UAC9D,IAAI;AAAA,YAAW,OAAO;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,4BAA4B,CAAC,YAAmC;AAAA,IACtE,IAAI,WAAW,SAAS,MAAM,KAAK,WAAW,SAAS,YAAY,GAAG;AAAA,MACpE,OAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW,SAAS,QAAQ,KAAK,WAAW,SAAS,eAAe,GAAG;AAAA,MACzE,OAAO;AAAA,IACT;AAAA,IACA,IAAI,WAAW,SAAS,UAAU,KAAK,WAAW,SAAS,WAAW,GAAG;AAAA,MACvE,MAAM,QAAQ,WAAW,MAAM,gBAAgB;AAAA,MAC/C,IAAI,QAAQ,IAAI;AAAA,QACd,OAAO,KAAK,cAAc,MAAM,EAAE;AAAA,MACpC;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAQD,uBAAuB,CAC7B,cACA,YAIO;AAAA,IACP,IAAI;AAAA,MACF,WAAW,cAAc,WAAW,sBAAsB,GAAG;AAAA,QAC3D,MAAM,eAAe,WAAW,gBAAgB;AAAA,QAEhD,WAAW,eAAe,cAAc;AAAA,UACtC,IAAI,YAAY,QAAQ,MAAM,cAAc;AAAA,YAC1C,MAAM,kBAAkB,WAAW,6BAA6B;AAAA,YAChE,IAAI,CAAC;AAAA,cAAiB;AAAA,YAEtB,MAAM,SAAS,KAAK,qBAAqB,cAAc,eAAe;AAAA,YACtE,IAAI;AAAA,cAAQ,OAAO;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO,QAAQ;AAAA,MAGf,OAAO;AAAA;AAAA,IAGT,OAAO;AAAA;AAAA,EAMD,oBAAoB,CAC1B,cACA,iBAIO;AAAA,IAEP,MAAM,eAAe,gBAAgB,YAAY,YAAY;AAAA,IAC7D,IAAI,cAAc;AAAA,MAChB,OAAO;AAAA,QACL;AAAA,QACA,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IAGA,MAAM,eAAe,gBAAgB,uBAAuB,YAAY;AAAA,IACxE,IAAI,cAAc;AAAA,MAChB,MAAM,cAAc,aAAa,eAAe;AAAA,MAChD,IACE,gBACC,MAAK,gBAAgB,WAAW,KAAK,MAAK,qBAAqB,WAAW,IAC3E;AAAA,QACA,OAAO;AAAA,UACL,cAAc;AAAA,UACd,YAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,sBAAsB,CAAC,UAA0B;AAAA,IACvD,IAAI,SAAS,SAAS,OAAO,KAAK,SAAS,SAAS,QAAQ,GAAG;AAAA,MAC7D,OAAO;AAAA,IACT;AAAA,IACA,IACE,SAAS,SAAS,SAAS,KAC3B,SAAS,SAAS,QAAQ,KAC1B,SAAS,SAAS,QAAQ,KAC1B,SAAS,SAAS,QAAQ,GAC1B;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA;AAAA,EAMD,aAAa,CAAC,MAAsB;AAAA,IAC1C,OAAO,KACJ,YAAY,EACZ,QAAQ,eAAe,GAAG,EAC1B,QAAQ,UAAU,EAAE;AAAA;AAAA,EAMjB,wBAAwB,CAAC,eAA+D;AAAA,IAC9F,MAAM,OAAO,IAAI;AAAA,IACjB,MAAM,SAAiC,CAAC;AAAA,IAExC,WAAW,OAAO,eAAe;AAAA,MAC/B,MAAM,MAAM,GAAG,IAAI,SAAS,IAAI;AAAA,MAChC,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAAA,QAClB,KAAK,IAAI,GAAG;AAAA,QACZ,OAAO,KAAK,GAAG;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAEX;;;ADnoBO,MAAM,iBAAiB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CAAC,cAAsB;AAAA,IAChC,KAAK,UAAU,IAAI,SAAQ;AAAA,MACzB,kBAAkB;AAAA,IACpB,CAAC;AAAA,IACD,KAAK,iBAAiB,IAAI;AAAA,IAC1B,KAAK,wBAAwB,IAAI;AAAA,IACjC,KAAK,gBAAgB,IAAI;AAAA,IAEzB,KAAK,cAAc,KAAK,gBAAgB,YAAY;AAAA;AAAA,EAO9C,eAAe,CAAC,cAA8B;AAAA,IACpD,IAAI,MAAM,aAAa,UAAU,GAAG,aAAa,YAAY,GAAG,CAAC;AAAA,IAEjE,OAAO,IAAI,SAAS,GAAG;AAAA,MACrB,IAAI;AAAA,QACF,MAAM,kBAAkB,GAAG;AAAA,QAC3B,MAAM,OAAO,IAAI,KAAK,eAAe;AAAA,QACrC,IAAI,KAAK,OAAO,GAAG;AAAA,UAEjB,OAAO;AAAA,QACT;AAAA,QACA,MAAM;AAAA,MAGR,MAAM,YAAY,IAAI,UAAU,GAAG,IAAI,YAAY,GAAG,CAAC;AAAA,MACvD,IAAI,cAAc;AAAA,QAAK;AAAA,MACvB,MAAM;AAAA,IACR;AAAA,IAEA,OAAO,aAAa,UAAU,GAAG,aAAa,YAAY,GAAG,CAAC;AAAA;AAAA,EAYhE,eAAe,GAAoB;AAAA,IACjC,MAAM,WAA6B,CAAC;AAAA,IACpC,MAAM,eAAe,IAAI;AAAA,IACzB,MAAM,sBAAsB,IAAI;AAAA,IAChC,MAAM,mBAAsC,CAAC;AAAA,IAC7C,MAAM,iBAAsC,CAAC;AAAA,IAG7C,MAAM,iBAAiB,KAAK,QAAQ,eAAe;AAAA,IAEnD,MAAM,cAAc,eAAe,OAAO,CAAC,MAAM,KAAK,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAAA,IAEtF,KAAK,oBAAoB,gBAAgB,WAAW;AAAA,IAGpD,WAAW,cAAc,aAAa;AAAA,MACpC,KAAK,sBACH,YACA,UACA,cACA,qBACA,kBACA,cACF;AAAA,IACF;AAAA,IAGA,IAAI,eAAe,SAAS,GAAG;AAAA,MAC7B,IAAI,QAAQ,IAAI,gBAAgB;AAAA,QAC9B,QAAQ,IACN,iBAAiB,eAAe,8DAClC;AAAA,MACF;AAAA,MAEA,WAAW,YAAY,KAAK,eAAe;AAAA,QACzC,MAAM,aAAa,KAAK,QAAQ,cAAc,QAAQ;AAAA,QACtD,IAAI,CAAC;AAAA,UAAY;AAAA,QAEjB,MAAM,mBAAmB,KAAK,2BAA2B,YAAY,cAAc;AAAA,QAEnF,WAAW,WAAW,kBAAkB;AAAA,UAEtC,MAAM,SAAS,SAAS,KACtB,CAAC,MACC,EAAE,gBAAgB,QAAQ,eAAe,EAAE,SAAS,SAAS,QAAQ,SAAS,IAClF;AAAA,UAEA,IAAI,CAAC,QAAQ;AAAA,YACX,SAAS,KAAK,OAAO;AAAA,YACrB,IAAI,KAAK,qBAAqB,QAAQ,WAAW,GAAG;AAAA,cAClD,aAAa,IAAI,QAAQ,WAAW;AAAA,YACtC,EAAO;AAAA,cACL,oBAAoB,IAAI,QAAQ,WAAW;AAAA;AAAA,UAE/C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,KAAK,0BAA0B,SAAS,QAAQ,oBAAoB,IAAI;AAAA,IACxE,KAAK,sBAAsB,eAAe,QAAQ,YAAY,MAAM;AAAA,IAEpE,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA;AAAA,EAWM,qBAAqB,CAC3B,YACA,UACA,cACA,qBACA,kBACA,gBACM;AAAA,IACN,MAAM,WAAW,WAAW,YAAY;AAAA,IAGxC,IAAI,KAAK,cAAc,IAAI,QAAQ,GAAG;AAAA,MACpC;AAAA,IACF;AAAA,IAGA,KAAK,cAAc,IAAI,QAAQ;AAAA,IAE/B,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IAAI,sBAAsB,UAAU;AAAA,IAC9C;AAAA,IAGA,MAAM,eAAe,KAAK,gBAAgB,UAAU;AAAA,IACpD,SAAS,KAAK,GAAG,YAAY;AAAA,IAC7B,KAAK,8BAA8B,cAAc,cAAc,mBAAmB;AAAA,IAGlF,MAAM,kBAAkB,KAAK,gCAAgC,UAAU;AAAA,IACvE,iBAAiB,KAAK,GAAG,eAAe;AAAA,IAGxC,MAAM,qBAAqB,KAAK,8BAA8B,UAAU;AAAA,IACxE,eAAe,KAAK,GAAG,kBAAkB;AAAA,IAGzC,MAAM,qBAAqB,WAAW,sBAAsB;AAAA,IAC5D,WAAW,cAAc,oBAAoB;AAAA,MAC3C,MAAM,eAAe,WAAW,6BAA6B;AAAA,MAE7D,IAAI,cAAc;AAAA,QAChB,MAAM,eAAe,aAAa,YAAY;AAAA,QAQ9C,IAAI,CAAC,KAAK,gBAAgB,YAAY,GAAG;AAAA,UACvC,IAAI,QAAQ,IAAI,gBAAgB;AAAA,YAC9B,QAAQ,IAAI,qCAAqC,cAAc;AAAA,UACjE;AAAA,UACA;AAAA,QACF;AAAA,QAGA,KAAK,sBACH,cACA,UACA,cACA,qBACA,kBACA,cACF;AAAA,MACF,EAAO,SAAI,QAAQ,IAAI,gBAAgB;AAAA,QAErC,MAAM,YAAY,WAAW,wBAAwB;AAAA,QACrD,IAAI,CAAC,UAAU,WAAW,OAAO,KAAK,CAAC,KAAK,mBAAmB,SAAS,GAAG;AAAA,UACzE,QAAQ,IAAI,qCAAqC,gBAAgB,UAAU;AAAA,QAC7E;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAMM,eAAe,CAAC,UAA2B;AAAA,IAEjD,IAAI,CAAC,SAAS,WAAW,KAAK,WAAW,GAAG;AAAA,MAC1C,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,SAAS,SAAS,gBAAgB,GAAG;AAAA,MACvC,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA;AAAA,EAMD,kBAAkB,CAAC,WAA4B;AAAA,IAGrD,OAAO,CAAC,UAAU,WAAW,GAAG,KAAK,CAAC,UAAU,WAAW,GAAG;AAAA;AAAA,EAGxD,qBAAqB,CAAC,kBAA0B,iBAA+B;AAAA,IACrF,IAAI,CAAC,QAAQ,IAAI;AAAA,MAAgB;AAAA,IAEjC,QAAQ,IAAI,8BAA8B;AAAA,IAC1C,QAAQ,IAAI,2BAA2B,KAAK,aAAa;AAAA,IACzD,QAAQ,IAAI,yCAAyC,kBAAkB;AAAA,IACvE,QAAQ,IAAI,wCAAwC,iBAAiB;AAAA,IACrE,QAAQ,IAAI,iDAAiD,KAAK,cAAc,MAAM;AAAA,IACtF,QAAQ,IACN,0CAA0C,KAAK,cAAc,OAAO,iBACtE;AAAA;AAAA,EAGM,mBAAmB,CAAC,gBAA8B,aAAiC;AAAA,IACzF,IAAI,CAAC,QAAQ,IAAI;AAAA,MAAgB;AAAA,IAEjC,QAAQ,IAAI,kBAAkB,eAAe,mCAAmC;AAAA,IAChF,QAAQ,IAAI,uBAAuB,YAAY,oCAAoC;AAAA,IACnF,IAAI,YAAY,UAAU,IAAI;AAAA,MAC5B,WAAW,MAAM,aAAa;AAAA,QAC5B,QAAQ,IAAI,eAAe,GAAG,YAAY,GAAG;AAAA,MAC/C;AAAA,IACF;AAAA;AAAA,EAGM,6BAA6B,CACnC,UACA,cACA,qBACM;AAAA,IACN,WAAW,WAAW,UAAU;AAAA,MAC9B,IAAI,KAAK,qBAAqB,QAAQ,WAAW,GAAG;AAAA,QAClD,aAAa,IAAI,QAAQ,WAAW;AAAA,MACtC,EAAO;AAAA,QACL,oBAAoB,IAAI,QAAQ,WAAW;AAAA;AAAA,IAE/C;AAAA;AAAA,EAGM,yBAAyB,CAAC,cAAsB,cAA4B;AAAA,IAClF,IAAI,CAAC,QAAQ,IAAI;AAAA,MAAgB;AAAA,IAEjC,QAAQ,IAAI,qCAAqC,cAAc;AAAA,IAC/D,IAAI,eAAe,GAAG;AAAA,MACpB,QAAQ,IAAI,oBAAoB,oDAAoD;AAAA,IACtF;AAAA;AAAA,EAUM,oBAAoB,CAAC,GAAoB;AAAA,IAC/C,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,0BAA0B,KAAK,CAAC;AAAA;AAAA,EAMjC,eAAe,CAAC,YAA0C;AAAA,IAChE,MAAM,WAA6B,CAAC;AAAA,IACpC,MAAM,WAAW,WAAW,YAAY;AAAA,IACxC,MAAM,UAAU,KAAK,aAAa,QAAQ;AAAA,IAE1C,WAAW,kBAAkB,CAAC,SAAS;AAAA,MACrC,KAAK,uBAAuB,MAAM,SAAS,UAAU,QAAQ;AAAA,KAC9D;AAAA,IAED,OAAO;AAAA;AAAA,EAMD,sBAAsB,CAC5B,MACA,SACA,UACA,UACM;AAAA,IACN,IAAI,MAAK,iBAAiB,IAAI,GAAG;AAAA,MAC/B,KAAK,6BAA6B,MAAM,SAAS,UAAU,QAAQ;AAAA,IACrE;AAAA,IAEA,IAAI,MAAK,kBAAkB,IAAI,GAAG;AAAA,MAChC,MAAM,iBAAiB,KAAK,0BAA0B,MAAM,SAAS,QAAQ;AAAA,MAC7E,SAAS,KAAK,GAAG,cAAc;AAAA,IACjC;AAAA,IAEA,IAAI,MAAK,sBAAsB,IAAI,GAAG;AAAA,MACpC,MAAM,cAAc,KAAK,yBAAyB,MAAM,SAAS,QAAQ;AAAA,MACzE,SAAS,KAAK,GAAG,WAAW;AAAA,IAC9B;AAAA,IAEA,IAAI,MAAK,cAAc,IAAI,KAAK,CAAC,KAAK,kBAAkB,IAAI,GAAG;AAAA,MAC7D,MAAM,oBAAoB,KAAK,yBAAyB,MAAM,SAAS,QAAQ;AAAA,MAC/E,SAAS,KAAK,GAAG,iBAAiB;AAAA,IACpC;AAAA;AAAA,EAMM,4BAA4B,CAClC,MACA,SACA,UACA,UACM;AAAA,IACN,MAAM,aAAa,KAAK,cAAc;AAAA,IAEtC,IAAI,MAAK,2BAA2B,UAAU,GAAG;AAAA,MAC/C,MAAM,aAAa,WAAW,QAAQ;AAAA,MAEtC,IAAI,eAAe,QAAQ,eAAe,oBAAoB;AAAA,QAC5D,MAAM,UAAU,KAAK,eAAe,MAAM,SAAS,QAAQ;AAAA,QAC3D,IAAI,SAAS;AAAA,UACX,SAAS,KAAK,OAAO;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAMM,iBAAiB,CAAC,MAAqB;AAAA,IAC7C,MAAM,SAAS,KAAK,UAAU;AAAA,IAC9B,OAAO,WAAW,aAAa,MAAK,cAAc,MAAM;AAAA;AAAA,EAMlD,cAAc,CACpB,UACA,SACA,UACuB;AAAA,IACvB,MAAM,OAAO,SAAS,aAAa;AAAA,IAEnC,IAAI,KAAK,SAAS,GAAG;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,iBAAiB,KAAK;AAAA,IAC5B,IAAI,cAA6B;AAAA,IAEjC,IAAI,MAAK,gBAAgB,cAAc,GAAG;AAAA,MACxC,cAAc,eAAe,gBAAgB;AAAA,IAC/C,EAAO,SAAI,MAAK,qBAAqB,cAAc,GAAG;AAAA,MAEpD,cAAc,eAAe,QAAQ,EAAE,QAAQ,UAAU,EAAE;AAAA,IAC7D;AAAA,IAEA,IAAI,CAAC,aAAa;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,aAAa,KAAK;AAAA,IACxB,MAAM,cAAiC,CAAC;AAAA,IACxC,MAAM,gBAAyC,CAAC;AAAA,IAChD,MAAM,iBAA0C,CAAC;AAAA,IAGjD,IAAI,gBAAiF;AAAA,IAErF,IAAI,MAAK,gBAAgB,UAAU,KAAK,MAAK,qBAAqB,UAAU,GAAG;AAAA,MAC7E,gBAAgB;AAAA,IAClB,EAAO,SAAI,MAAK,aAAa,UAAU,GAAG;AAAA,MAExC,gBAAgB,KAAK,yBAAyB,UAAU;AAAA,IAC1D;AAAA,IAEA,IAAI,eAAe;AAAA,MACjB,KAAK,mBAAmB,eAAe,WAAW;AAAA,MAClD,KAAK,8BAA8B,eAAe,eAAe,cAAc;AAAA,MAG/E,IAAI,MAAK,gBAAgB,aAAa,KAAK,MAAK,qBAAqB,aAAa,GAAG;AAAA,QACnF,KAAK,oBAAoB,eAAe,WAAW;AAAA,MACrD;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,SAAS,mBAAmB;AAAA,IAGzC,MAAM,aAAa,SAAS,cAAc;AAAA,IAC1C,MAAM,cAAc,GAAG;AAAA,IACvB,IAAI;AAAA,IAEJ,IAAI,eAAe;AAAA,MACjB,MAAM,wBAAwB,KAAK,sBAAsB,mBACvD,eACA,YACA,WACF;AAAA,MACA,IAAI,sBAAsB,SAAS,GAAG;AAAA,QACpC,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA;AAAA,EAYM,kBAAkB,CACxB,UACA,aACM;AAAA,IACN,SAAS,kBAAkB,CAAC,SAAe;AAAA,MACzC,IAAI,MAAK,mBAAmB,IAAI,GAAG;AAAA,QACjC,KAAK,kCAAkC,MAAM,WAAW;AAAA,MAC1D;AAAA,MAEA,IAAI,MAAK,iBAAiB,IAAI,GAAG;AAAA,QAC/B,KAAK,+BAA+B,MAAM,WAAW;AAAA,MACvD;AAAA,MAEA,IAAI,MAAK,yBAAyB,IAAI,KAAK,MAAK,wBAAwB,IAAI,GAAG;AAAA,QAC7E,KAAK,iCAAiC,MAAM,WAAW;AAAA,MACzD;AAAA,KACD;AAAA;AAAA,EAMK,iCAAiC,CAAC,MAAY,aAAsC;AAAA,IAC1F,IAAI,CAAC,MAAK,mBAAmB,IAAI;AAAA,MAAG;AAAA,IAEpC,MAAM,WAAW,KAAK,iBAAiB,EAAE,QAAQ;AAAA,IAEjD,IAAI,aAAa,KAAK;AAAA,MACpB,KAAK,uCAAuC,MAAM,WAAW;AAAA,IAC/D,EAAO,SAAI,CAAC,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,SAAS,QAAQ,GAAG;AAAA,MAC5D,KAAK,0BAA0B,MAAM,WAAW;AAAA,IAClD;AAAA;AAAA,EAMM,sCAAsC,CAAC,MAAY,aAAsC;AAAA,IAC/F,IAAI,CAAC,MAAK,mBAAmB,IAAI;AAAA,MAAG;AAAA,IAEpC,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,MAAM,QAAQ,KAAK,SAAS;AAAA,IAE5B,IAAI,MAAK,2BAA2B,IAAI,GAAG;AAAA,MACzC,KAAK,gCAAgC,MAAM,OAAO,WAAW;AAAA,IAC/D,EAAO,SAAI,MAAK,0BAA0B,IAAI,GAAG;AAAA,MAC/C,KAAK,+BAA+B,MAAM,OAAO,WAAW;AAAA,IAC9D;AAAA;AAAA,EAMM,+BAA+B,CACrC,MACA,OACA,aACM;AAAA,IACN,IAAI,CAAC,MAAK,2BAA2B,IAAI;AAAA,MAAG;AAAA,IAE5C,MAAM,YAAY,KAAK,gBAAgB,IAAI;AAAA,IAG3C,IAAI,UAAU,WAAW,QAAQ,GAAG;AAAA,MAClC,MAAM,QAAQ,UAAU,UAAU,CAAC;AAAA,MACnC,MAAM,QAAQ,KAAK,aAAa,KAAK;AAAA,MACrC,IAAI,UAAU,WAAW;AAAA,QACvB,YAAY,KAAK,EAAE,OAAO,MAAM,CAAC;AAAA,MACnC;AAAA,MACA;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,UAAU,MAAM,gBAAgB;AAAA,IACnD,IAAI,aAAa,IAAI;AAAA,MACnB,MAAM,QAAQ,WAAW;AAAA,MACzB,MAAM,QAAQ,KAAK,aAAa,KAAK;AAAA,MACrC,IAAI,UAAU,WAAW;AAAA,QACvB,YAAY,KAAK,EAAE,OAAO,MAAM,CAAC;AAAA,MACnC;AAAA,MACA;AAAA,IACF;AAAA,IAGA,IAAI,UAAU,SAAS,QAAQ,KAAK,MAAK,0BAA0B,KAAK,GAAG;AAAA,MACzE,KAAK,gCAAgC,OAAO,WAAW;AAAA,IACzD;AAAA;AAAA,EAOM,+BAA+B,CACrC,eACA,aACM;AAAA,IACN,IAAI,CAAC,MAAK,0BAA0B,aAAa;AAAA,MAAG;AAAA,IAEpD,WAAW,QAAQ,cAAc,cAAc,GAAG;AAAA,MAEhD,IAAI,MAAK,qBAAqB,IAAI,GAAG;AAAA,QACnC,MAAM,OAAO,KAAK,QAAQ;AAAA,QAC1B,MAAM,cAAc,KAAK,eAAe;AAAA,QAExC,IAAI,CAAC,QAAQ,CAAC;AAAA,UAAa;AAAA,QAE3B,MAAM,QAAQ,KAAK,aAAa,WAAW;AAAA,QAC3C,IAAI,UAAU,WAAW;AAAA,UACvB,YAAY,KAAK,EAAE,OAAO,MAAM,MAAM,CAAC;AAAA,QACzC;AAAA,MACF;AAAA,MAGA,IAAI,MAAK,8BAA8B,IAAI,GAAG;AAAA,QAC5C,MAAM,OAAO,KAAK,QAAQ;AAAA,QAG1B,YAAY,KAAK,EAAE,OAAO,MAAM,OAAO,IAAI,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA;AAAA,EAMM,8BAA8B,CACpC,MACA,OACA,aACM;AAAA,IACN,IAAI,CAAC,MAAK,0BAA0B,IAAI;AAAA,MAAG;AAAA,IAE3C,MAAM,OAAO,KAAK,cAAc;AAAA,IAChC,IAAI,CAAC,MAAK,2BAA2B,IAAI;AAAA,MAAG;AAAA,IAE5C,MAAM,YAAY,KAAK,gBAAgB,IAAI;AAAA,IAC3C,MAAM,QAAQ,KAAK,0BAA0B,SAAS;AAAA,IAEtD,IAAI,CAAC;AAAA,MAAO;AAAA,IACZ,MAAM,YAAY,KAAK,sBAAsB;AAAA,IAC7C,MAAM,QAAQ,YAAY,UAAU,QAAQ,IAAI;AAAA,IAChD,MAAM,QAAQ,KAAK,aAAa,KAAK;AAAA,IAErC,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,WAAW,KAAK,iBAAiB,KAAK,KACvC,OAAO,SAAS,OAAO,EAAE,IAAI,GAAG,SAAS,IAC1C,GAAG;AAAA,MACP,YAAY,KAAK;AAAA,QACf,OAAO,GAAG,SAAS;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,EAQM,yBAAyB,CAAC,WAAkC;AAAA,IAElE,IAAI,UAAU,WAAW,QAAQ,GAAG;AAAA,MAClC,OAAO,UAAU,UAAU,CAAC;AAAA,IAC9B;AAAA,IAGA,MAAM,aAAa,UAAU,MAAM,gBAAgB;AAAA,IACnD,IAAI,aAAa,IAAI;AAAA,MACnB,OAAO,WAAW;AAAA,IACpB;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,yBAAyB,CAAC,MAAY,aAAsC;AAAA,IAClF,IAAI,CAAC,MAAK,mBAAmB,IAAI;AAAA,MAAG;AAAA,IAEpC,MAAM,WAAW,KAAK,iBAAiB,EAAE,QAAQ;AAAA,IACjD,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,MAAM,QAAQ,KAAK,SAAS;AAAA,IAE5B,IAAI,MAAK,2BAA2B,IAAI,GAAG;AAAA,MACzC,MAAM,YAAY,KAAK,gBAAgB,IAAI;AAAA,MAC3C,MAAM,QAAQ,KAAK,0BAA0B,SAAS;AAAA,MAEtD,IAAI,OAAO;AAAA,QACT,MAAM,aAAa,MAAM,QAAQ;AAAA,QACjC,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE;AAAA,QAClC,YAAY,KAAK;AAAA,UACf;AAAA,UACA,OAAO,KAAK,SAAS;AAAA,QACvB,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA,EAMM,oBAAoB,CAAC,UAAkC;AAAA,IAC7D,IAAI,OAAO,aAAa,UAAU;AAAA,MAEhC,IAAI,aAAa,WAAW;AAAA,QAAe,OAAO;AAAA,MAClD,IAAI,aAAa,WAAW;AAAA,QAAiB,OAAO;AAAA,MACpD,OAAO;AAAA,IACT;AAAA,IACA,IAAI,YAAY,OAAO,aAAa,YAAY,aAAa,UAAU;AAAA,MAErE,OAAQ,SAAmC,QAAQ;AAAA,IACrD;AAAA,IACA,OAAO;AAAA;AAAA,EAMD,gCAAgC,CAAC,MAAY,aAAsC;AAAA,IACzF,IAAI,CAAC,MAAK,yBAAyB,IAAI,KAAK,CAAC,MAAK,wBAAwB,IAAI;AAAA,MAAG;AAAA,IAEjF,MAAM,WAAW,KAAK,iBAAiB;AAAA,IACvC,MAAM,eAAe,KAAK,qBAAqB,QAAQ;AAAA,IAGvD,IAAI,iBAAiB,QAAQ,iBAAiB;AAAA,MAAM;AAAA,IAEpD,MAAM,UAAU,KAAK,WAAW;AAAA,IAChC,IAAI,CAAC,MAAK,2BAA2B,OAAO;AAAA,MAAG;AAAA,IAE/C,MAAM,YAAY,KAAK,gBAAgB,OAAO;AAAA,IAC9C,MAAM,QAAQ,KAAK,0BAA0B,SAAS;AAAA,IAEtD,IAAI,OAAO;AAAA,MAET,MAAM,QAAQ,iBAAiB,OAAO,UAAU;AAAA,MAChD,YAAY,KAAK,EAAE,OAAO,MAAM,CAAC;AAAA,IACnC;AAAA;AAAA,EAMM,8BAA8B,CAAC,MAAY,aAAsC;AAAA,IACvF,IAAI,CAAC,MAAK,iBAAiB,IAAI;AAAA,MAAG;AAAA,IAElC,MAAM,OAAO,KAAK,cAAc;AAAA,IAChC,IAAI,CAAC,MAAK,2BAA2B,IAAI;AAAA,MAAG;AAAA,IAE5C,MAAM,aAAa,KAAK,QAAQ;AAAA,IAChC,MAAM,SAAS,KAAK,cAAc;AAAA,IAElC,IAAI,MAAK,2BAA2B,MAAM,GAAG;AAAA,MAC3C,MAAM,YAAY,KAAK,gBAAgB,MAAM;AAAA,MAC7C,MAAM,QAAQ,KAAK,0BAA0B,SAAS;AAAA,MAEtD,IAAI,OAAO;AAAA,QACT,MAAM,OAAO,KAAK,aAAa,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;AAAA,QAC3D,MAAM,WAAW,KAAK,qBAAqB,YAAY,MAAM,SAAS;AAAA,QAEtE,IAAI,UAAU;AAAA,UACZ,YAAY,KAAK,EAAE,OAAO,OAAO,SAAS,CAAC;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAMM,oBAAoB,CAC1B,YACA,MACA,WACe;AAAA,IACf,QAAQ;AAAA,WACD;AAAA,QACH,OAAO,KAAK,WAAW,IAAI,aAAa,KAAK,QAAQ;AAAA,WAElD;AAAA,QACH,OAAO;AAAA,WAEJ;AAAA,QACH,OAAO;AAAA,WAEJ;AAAA,QACH,OAAO,KAAK,WAAW,IAAI,KAAK,KAAK,eAAe;AAAA,WAEjD;AAAA,QACH,IAAI,QAAQ,IAAI,gBAAgB;AAAA,UAC9B,QAAQ,IAAI,yCAAyC,gCAAgC;AAAA,QACvF;AAAA,QACA,OAAO;AAAA;AAAA,QAGP,OAAO;AAAA;AAAA;AAAA,EAQL,mBAAmB,CACzB,UACA,aACM;AAAA,IAEN,MAAM,UACJ,SAAS,cAAc,WAAW,YAAY,KAC9C,SAAS,eAAe,GAAG,KAAK,CAAC,MAAY,EAAE,QAAQ,MAAM,WAAW,YAAY;AAAA,IAEtF,IAAI,CAAC,SAAS;AAAA,MACZ;AAAA,IACF;AAAA,IAGA,MAAM,mBAA2B,CAAC;AAAA,IAClC,SAAS,kBAAkB,CAAC,SAAe;AAAA,MACzC,IAAI,MAAK,kBAAkB,IAAI,GAAG;AAAA,QAChC,iBAAiB,KAAK,IAAI;AAAA,MAC5B;AAAA,KACD;AAAA,IAED,IAAI,iBAAiB,WAAW,GAAG;AAAA,MACjC;AAAA,IACF;AAAA,IAGA,MAAM,YAAyE,CAAC;AAAA,IAChF,MAAM,OAAO,SAAS,QAAQ;AAAA,IAE9B,IAAI,CAAC,MAAM;AAAA,MACT;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,iBAAiB;AAAA,IACpC,IAAI,CAAC;AAAA,MAAY;AAAA,IAGjB,MAAM,gBAAgB,WAAW,SAAS;AAAA,IAG1C,SAAS,kBAAkB,CAAC,SAAe;AAAA,MACzC,IAAI,MAAK,mBAAmB,IAAI,GAAG;AAAA,QACjC,KAAK,8BAA8B,MAAM,eAAe,SAAS;AAAA,MACnE;AAAA,MAEA,IAAI,MAAK,iBAAiB,IAAI,GAAG;AAAA,QAC/B,KAAK,4BAA4B,MAAM,eAAe,SAAS;AAAA,MACjE;AAAA,KACD;AAAA,IAGD,MAAM,sBAAsB,UAAU,OAAO,CAAC,MAAM,EAAE,UAAU;AAAA,IAEhE,IAAI,oBAAoB,SAAS,KAAK,QAAQ,IAAI,gBAAgB;AAAA,MAChE,QAAQ,IACN,uCAAuC,oBAAoB,oBAAoB,sCACjF;AAAA,MACA,QAAQ,IACN,0FACF;AAAA,MACA,QAAQ,IACN,wBAAwB,oBAAoB,IAAI,CAAC,MAAM,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,IAAI,GACjG;AAAA,IACF;AAAA;AAAA,EAMM,6BAA6B,CACnC,UACA,eACA,gBACM;AAAA,IACN,MAAM,OAAO,SAAS,QAAQ;AAAA,IAC9B,MAAM,aAAa,MAAK,QAAQ,IAAI,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC;AAAA,IAEhF,WAAW,aAAa,YAAY;AAAA,MAClC,KAAK,8BAA8B,WAAW,eAAe,cAAc;AAAA,IAC7E;AAAA;AAAA,EAMM,6BAA6B,CACnC,WACA,eACA,gBACM;AAAA,IACN,IAAI,CAAC,MAAK,sBAAsB,SAAS;AAAA,MAAG;AAAA,IAE5C,MAAM,OAAO,UAAU,cAAc;AAAA,IACrC,IAAI,CAAC,MAAK,iBAAiB,IAAI;AAAA,MAAG;AAAA,IAElC,MAAM,SAAS,KAAK,cAAc;AAAA,IAClC,IAAI,CAAC,MAAK,aAAa,MAAM;AAAA,MAAG;AAAA,IAEhC,MAAM,eAAe,OAAO,QAAQ;AAAA,IAEpC,IAAI,iBAAiB,YAAY;AAAA,MAC/B,MAAM,YAAY,KAAK,iBAAiB,IAAI;AAAA,MAC5C,IAAI,WAAW;AAAA,QACb,cAAc,KAAK,SAAS;AAAA,MAC9B;AAAA,IACF,EAAO,SAAI,iBAAiB,WAAW;AAAA,MACrC,MAAM,YAAY,KAAK,iBAAiB,IAAI;AAAA,MAC5C,IAAI,WAAW;AAAA,QACb,eAAe,KAAK,SAAS;AAAA,MAC/B;AAAA,IACF;AAAA;AAAA,EAMM,gBAAgB,CAAC,UAAwD;AAAA,IAC/E,MAAM,OAAO,SAAS,aAAa;AAAA,IAEnC,IAAI,KAAK,WAAW,GAAG;AAAA,MACrB,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,eAAe,KAAK;AAAA,IAC1B,IAAI,CAAC;AAAA,MAAc,OAAO;AAAA,IAE1B,MAAM,aAAa,aAAa,QAAQ;AAAA,IAGxC,IAAI;AAAA,IACJ,IAAI,KAAK,UAAU,KAAK,MAAK,gBAAgB,KAAK,EAAE,GAAG;AAAA,MACrD,UAAU,KAAK,GAAG,gBAAgB;AAAA,IACpC;AAAA,IAEA,MAAM,OAAO,SAAS,mBAAmB;AAAA,IACzC,MAAM,SAAS,SAAS,gBAAgB;AAAA,IAExC,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAMM,eAAe,CAAC,MAA+C;AAAA,IACrE,MAAM,QAAkB,CAAC;AAAA,IAEzB,IAAI,UAAU;AAAA,IACd,OAAO,MAAK,2BAA2B,OAAO,GAAG;AAAA,MAC/C,MAAM,QAAQ,QAAQ,QAAQ,CAAC;AAAA,MAC/B,UAAU,QAAQ,cAAc;AAAA,IAClC;AAAA,IAGA,IAAI,MAAK,aAAa,OAAO,GAAG;AAAA,MAC9B,MAAM,QAAQ,QAAQ,QAAQ,CAAC;AAAA,IACjC;AAAA,IAEA,OAAO,MAAM,KAAK,GAAG;AAAA;AAAA,EAMf,YAAY,CAAC,MAA0D;AAAA,IAC7E,IAAI,MAAK,gBAAgB,IAAI,GAAG;AAAA,MAC9B,OAAO,KAAK,gBAAgB;AAAA,IAC9B;AAAA,IAEA,IAAI,MAAK,iBAAiB,IAAI,GAAG;AAAA,MAC/B,OAAO,KAAK,gBAAgB;AAAA,IAC9B;AAAA,IAEA,IAAI,KAAK,QAAQ,MAAM,WAAW,aAAa;AAAA,MAC7C,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,KAAK,QAAQ,MAAM,WAAW,cAAc;AAAA,MAC9C,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,KAAK,QAAQ,MAAM,WAAW,aAAa;AAAA,MAC7C,OAAO;AAAA,IACT;AAAA,IAGA;AAAA;AAAA,EAMM,gBAAgB,CAAC,KAAsB;AAAA,IAC7C,OAAO,QAAQ,KAAK,GAAG;AAAA;AAAA,EAOjB,yBAAyB,CAC/B,YACA,SACA,UACkB;AAAA,IAClB,MAAM,WAA6B,CAAC;AAAA,IAEpC,IAAI;AAAA,MAEF,MAAM,aAAa,WAAW,cAAc;AAAA,MAC5C,MAAM,iBAAiB,WAAW,QAAQ;AAAA,MAG1C,IAAI,CAAC,6BAA6B,KAAK,cAAc,GAAG;AAAA,QACtD,OAAO;AAAA,MACT;AAAA,MAGA,MAAM,cAAc,WAAW,WAAW;AAAA,MAC1C,WAAW,UAAU,aAAa;AAAA,QAChC,IAAI,MAAK,aAAa,MAAM,GAAG;AAAA,UAC7B,MAAM,WAAW,OAAO,cAAc;AAAA,UAGtC,IAAI,cAA6B;AAAA,UACjC,IAAI,MAAK,gBAAgB,QAAQ,GAAG;AAAA,YAClC,cAAc,SAAS,gBAAgB;AAAA,UACzC;AAAA,UAEA,IAAI,aAAa;AAAA,YACf,MAAM,OAAO,OAAO,mBAAmB;AAAA,YAEvC,SAAS,KAAK;AAAA,cACZ;AAAA,cACA,MAAM;AAAA,cACN,aAAa,CAAC;AAAA,cACd,eAAe,CAAC;AAAA,cAChB,gBAAgB,CAAC;AAAA,cACjB,UAAU,EAAE,MAAM,UAAU,KAAK;AAAA,YACnC,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO,QAAQ;AAAA,IAIjB,OAAO;AAAA;AAAA,EAOD,wBAAwB,CAC9B,SACA,SACA,UACkB;AAAA,IAClB,MAAM,WAA6B,CAAC;AAAA,IAEpC,IAAI;AAAA,MACF,MAAM,cAAc,QAAQ,eAAe;AAAA,MAC3C,IAAI,CAAC,aAAa;AAAA,QAChB,OAAO;AAAA,MACT;AAAA,MAGA,MAAM,gBAAgB,KAAK,oBAAoB,aAAa,OAAO;AAAA,MACnE,IAAI,CAAC,eAAe;AAAA,QAClB,OAAO;AAAA,MACT;AAAA,MAGA,MAAM,aAAa,cAAc,cAAc;AAAA,MAC/C,WAAW,QAAQ,YAAY;AAAA,QAC7B,MAAM,UAAU,KAAK,2BAA2B,MAAM,SAAS,QAAQ;AAAA,QACvE,IAAI,SAAS;AAAA,UACX,SAAS,KAAK,OAAO;AAAA,QACvB;AAAA,MACF;AAAA,MACA,OAAO,QAAQ;AAAA,IAIjB,OAAO;AAAA;AAAA,EAOD,mBAAmB,CACzB,aACA,SACgC;AAAA,IAEhC,IAAI,MAAK,0BAA0B,WAAW,GAAG;AAAA,MAC/C,IAAI,KAAK,iBAAiB,QAAQ,QAAQ,CAAC,GAAG;AAAA,QAC5C,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAMD,gBAAgB,CAAC,SAA0B;AAAA,IACjD,OAAO,sCAAsC,KAAK,QAAQ,YAAY,CAAC;AAAA;AAAA,EAMjE,0BAA0B,CAChC,MACA,SACA,UACuB;AAAA,IACvB,IAAI,CAAC,MAAK,qBAAqB,IAAI,GAAG;AAAA,MACpC,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,WAAW,KAAK,YAAY;AAAA,IAClC,MAAM,cAAc,KAAK,+BAA+B,QAAQ;AAAA,IAEhE,IAAI,CAAC,aAAa;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,QAAQ,KAAK,eAAe;AAAA,IAClC,MAAM,cAAiC,CAAC;AAAA,IACxC,MAAM,gBAAyC,CAAC;AAAA,IAChD,MAAM,iBAA0C,CAAC;AAAA,IAGjD,IAAI,OAAO;AAAA,MAET,IAAI,MAAK,gBAAgB,KAAK,KAAK,MAAK,qBAAqB,KAAK,GAAG;AAAA,QACnE,KAAK,mBAAmB,OAAO,WAAW;AAAA,QAC1C,KAAK,8BAA8B,OAAO,eAAe,cAAc;AAAA,MACzE,EAEK,SAAI,MAAK,aAAa,KAAK,GAAG;AAAA,QACjC,MAAM,qBAAqB,KAAK,yBAAyB,KAAK;AAAA,QAC9D,IAAI,oBAAoB;AAAA,UACtB,KAAK,mBAAmB,oBAAoB,WAAW;AAAA,UACvD,KAAK,8BAA8B,oBAAoB,eAAe,cAAc;AAAA,QACtF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,KAAK,mBAAmB;AAAA,IACrC,OAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,EAAE,MAAM,UAAU,KAAK;AAAA,IACnC;AAAA;AAAA,EAMM,8BAA8B,CAAC,UAA+B;AAAA,IACpE,IAAI,MAAK,gBAAgB,QAAQ,GAAG;AAAA,MAClC,OAAO,SAAS,gBAAgB;AAAA,IAClC;AAAA,IACA,IAAI,MAAK,aAAa,QAAQ,GAAG;AAAA,MAC/B,OAAO,SAAS,QAAQ;AAAA,IAC1B;AAAA,IACA,OAAO;AAAA;AAAA,EAUD,wBAAwB,CAC9B,YACiE;AAAA,IACjE,IAAI,CAAC,MAAK,aAAa,UAAU,GAAG;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,cAAc,WAAW,mBAAmB;AAAA,MAElD,WAAW,OAAO,aAAa;AAAA,QAE7B,IAAI,MAAK,sBAAsB,GAAG,GAAG;AAAA,UACnC,OAAO;AAAA,QACT;AAAA,QAGA,IAAI,MAAK,sBAAsB,GAAG,GAAG;AAAA,UACnC,MAAM,cAAc,IAAI,eAAe;AAAA,UACvC,IACE,gBACC,MAAK,gBAAgB,WAAW,KAAK,MAAK,qBAAqB,WAAW,IAC3E;AAAA,YACA,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO,QAAQ;AAAA,IAIjB,OAAO;AAAA;AAAA,EAOD,wBAAwB,CAC9B,QACA,SACA,UACkB;AAAA,IAClB,MAAM,WAA6B,CAAC;AAAA,IAEpC,IAAI;AAAA,MACF,MAAM,aAAa,OAAO,cAAc;AAAA,MACxC,MAAM,aAAa,KAAK,uBAAuB,UAAU;AAAA,MAEzD,KAAK,mBAAmB,YAAY,UAAU;AAAA,MAC9C,KAAK,mBAAmB,QAAuB,YAAY,SAAS,UAAU,QAAQ;AAAA,MACtF,OAAO,QAAO;AAAA,MACd,KAAK,cAAc,MAAK;AAAA;AAAA,IAG1B,OAAO;AAAA;AAAA,EAMD,sBAAsB,CAAC,YAA6C;AAAA,IAC1E,IAAI,aAAa,KAAK,eAAe,IAAI,UAAU;AAAA,IACnD,IAAI,CAAC,YAAY;AAAA,MACf,aAAa,KAAK,2BAA2B,UAAU;AAAA,MACvD,KAAK,eAAe,IAAI,YAAY,UAAU;AAAA,IAChD;AAAA,IACA,OAAO;AAAA;AAAA,EAMD,kBAAkB,CAAC,YAAwB,YAAuC;AAAA,IACxF,IAAI,CAAC,QAAQ,IAAI;AAAA,MAAgB;AAAA,IAEjC,QAAQ,IAAI,iBAAiB,WAAW,YAAY,GAAG;AAAA,IACvD,QAAQ,IAAI,oCAAoC,WAAW,MAAM;AAAA,IAEjE,IAAI,WAAW,OAAO,GAAG;AAAA,MACvB,YAAY,MAAM,SAAS,WAAW,QAAQ,GAAG;AAAA,QAC/C,QAAQ,IAAI,eAAe,UAAS,MAAM;AAAA,MAC5C;AAAA,IACF;AAAA;AAAA,EAMM,kBAAkB,CACxB,WACA,YACA,SACA,UACA,UACM;AAAA,IACN,IAAI,cAAc;AAAA,IAClB,OAAO,aAAa;AAAA,MAClB,MAAM,UAAU,KAAK,2BAA2B,aAAa,YAAY,SAAS,QAAQ;AAAA,MAE1F,IAAI,SAAS;AAAA,QACX,SAAS,KAAK,OAAO;AAAA,QACrB,KAAK,qBAAqB,OAAO;AAAA,MACnC;AAAA,MAGA,MAAM,gBAAgB,YAAY,iBAAiB;AAAA,MACnD,IAAI,iBAAiB,MAAK,cAAc,aAAa,GAAG;AAAA,QACtD,cAAc;AAAA,MAChB,EAAO;AAAA,QACL;AAAA;AAAA,IAEJ;AAAA;AAAA,EAMM,oBAAoB,CAAC,SAA+B;AAAA,IAC1D,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IAAI,0BAA0B,QAAQ,uBAAuB,QAAQ,SAAS,MAAM;AAAA,IAC9F;AAAA;AAAA,EAMM,aAAa,CAAC,QAAsB;AAAA,IAC1C,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IAAI,8CAA8C,QAAO;AAAA,IACnE;AAAA;AAAA,EAMM,0BAA0B,CAChC,QACA,YACA,SACA,UACuB;AAAA,IACvB,IAAI;AAAA,MACF,MAAM,SAAS;AAAA,MACf,MAAM,YAAY,OAAO,cAAc;AAAA,MAEvC,IAAI,CAAC,MAAK,iBAAiB,SAAS,GAAG;AAAA,QACrC,OAAO;AAAA,MACT;AAAA,MAEA,MAAM,WAAW,UAAU,cAAc;AAAA,MACzC,MAAM,WAAW,MAAK,aAAa,QAAQ,IAAI,SAAS,QAAQ,IAAI;AAAA,MAEpE,KAAK,2BAA2B,QAAQ;AAAA,MAExC,MAAM,cAAc,KAAK,mBAAmB,UAAU,UAAU,UAAU;AAAA,MAC1E,IAAI,CAAC,aAAa;AAAA,QAChB,KAAK,8BAA8B,QAAQ;AAAA,QAC3C,OAAO;AAAA,MACT;AAAA,MAEA,MAAM,OAAO,OAAO,mBAAmB;AAAA,MACvC,MAAM,gBAAgB,KAAK,gCAAgC,QAAQ,WAAW;AAAA,MAE9E,OAAO;AAAA,QACL;AAAA,QACA,MAAM;AAAA,QACN,aAAa,CAAC;AAAA,QACd,eAAe,CAAC;AAAA,QAChB,gBAAgB,CAAC;AAAA,QACjB,UAAU,EAAE,MAAM,UAAU,KAAK;AAAA,QACjC;AAAA,MACF;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,OAAO;AAAA;AAAA;AAAA,EAOH,0BAA0B,CAAC,UAAoC;AAAA,IACrE,IAAI,QAAQ,IAAI,kBAAkB,UAAU;AAAA,MAC1C,QAAQ,IAAI,kDAAkD,UAAU;AAAA,IAC1E;AAAA;AAAA,EAMM,6BAA6B,CAAC,UAAoC;AAAA,IACxE,IAAI,QAAQ,IAAI,kBAAkB,UAAU;AAAA,MAC1C,QAAQ,IAAI,+CAA+C,UAAU;AAAA,IACvE;AAAA;AAAA,EAMM,kBAAkB,CACxB,UACA,UACA,YACoB;AAAA,IACpB,IAAI,YAAY,WAAW,IAAI,QAAQ,GAAG;AAAA,MACxC,MAAM,YAAY,WAAW,IAAI,QAAQ;AAAA,MACzC,IAAI,WAAW;AAAA,QACb,KAAK,+BAA+B,UAAU,SAAS;AAAA,QACvD,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,IAAI,MAAK,aAAa,QAAQ,GAAG;AAAA,MAC/B,KAAK,+BAA+B,QAAQ;AAAA,MAC5C,OAAO,KAAK,yBAAyB,QAAQ,KAAK;AAAA,IACpD;AAAA,IAEA;AAAA;AAAA,EAMM,8BAA8B,CAAC,UAAkB,aAA2B;AAAA,IAClF,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IAAI,uCAAuC,cAAa,aAAa;AAAA,IAC/E;AAAA;AAAA,EAMM,8BAA8B,CAAC,UAAoC;AAAA,IACzE,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IAAI,4DAA4D,UAAU;AAAA,IACpF;AAAA;AAAA,EAMM,+BAA+B,CACrC,QACA,aACqC;AAAA,IACrC,MAAM,gBAAgB,OAAO,iBAAiB;AAAA,IAC9C,IAAI,CAAC,eAAe;AAAA,MAClB;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,OAAO,cAAc;AAAA,IACxC,MAAM,cAAc,GAAG;AAAA,IACvB,MAAM,wBAAwB,KAAK,sBAAsB,mBACvD,eACA,YACA,WACF;AAAA,IAEA,OAAO,sBAAsB,SAAS,IAAI,wBAAwB;AAAA;AAAA,EAQ5D,0BAA0B,CAAC,YAA6C;AAAA,IAC9E,MAAM,aAAa,IAAI;AAAA,IAEvB,WAAW,kBAAkB,CAAC,SAAS;AAAA,MACrC,KAAK,qBAAqB,MAAM,UAAU;AAAA,KAC3C;AAAA,IAED,OAAO;AAAA;AAAA,EAMD,oBAAoB,CAAC,MAAY,YAAuC;AAAA,IAC9E,IAAI,CAAC,KAAK,eAAe,IAAI,GAAG;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB,KAAK,kBAAkB;AAAA,IAC9C,IAAI,CAAC,kBAAkB,CAAC,MAAK,gBAAgB,cAAc,GAAG;AAAA,MAC5D;AAAA,IACF;AAAA,IAEA,MAAM,eAAe,KAAK,oBAAoB,IAAI;AAAA,IAClD,IAAI,CAAC,cAAc;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,MAAM,cAAc,KAAK,4CAA4C,MAAM,cAAc;AAAA,IACzF,IAAI,aAAa;AAAA,MACf,WAAW,IAAI,cAAc,WAAW;AAAA,IAC1C;AAAA;AAAA,EAMM,mBAAmB,CACzB,MACoB;AAAA,IACpB,IAAI,MAAK,sBAAsB,IAAI,GAAG;AAAA,MACpC,OAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,MAAK,qBAAqB,IAAI,KAAK,MAAK,gBAAgB,IAAI,GAAG;AAAA,MACjE,OAAO,KAAK,gCAAgC,IAAI;AAAA,IAClD;AAAA,IAEA;AAAA;AAAA,EAMM,+BAA+B,CACrC,MACoB;AAAA,IACpB,MAAM,SAAS,KAAK,UAAU;AAAA,IAC9B,IAAI,MAAK,sBAAsB,MAAM,GAAG;AAAA,MACtC,OAAO,OAAO,QAAQ;AAAA,IACxB;AAAA,IACA;AAAA;AAAA,EAMM,2CAA2C,CACjD,MACA,gBACe;AAAA,IACf,IAAI,CAAC,MAAK,gBAAgB,cAAc,GAAG;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,iBAAiB,kBAAkB,OAAO,eAAe,gBAAgB,YAAY;AAAA,MACvF,MAAM,WAAW,eAAe,YAAY;AAAA,MAE5C,IAAI,UAAU;AAAA,QACZ,MAAM,WAAW,SAAS,QAAQ;AAAA,QAClC,MAAM,cAAc,KAAK,+BAA+B,QAAQ;AAAA,QAChE,IAAI,aAAa;AAAA,UACf,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO,KAAK,uCAAuC,IAAI;AAAA;AAAA,EAMjD,sCAAsC,CAC5C,MACe;AAAA,IACf,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,IAAI,CAAC,MAAM;AAAA,MACT,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,WAAW,KAAK,QAAQ;AAAA,IAC9B,MAAM,iBAAiB,SAAS,MAAM,+BAA+B;AAAA,IAErE,IAAI,gBAAgB;AAAA,MAClB,OAAO,eAAe,MAAM;AAAA,IAC9B;AAAA,IAEA,OAAO;AAAA;AAAA,EAQD,wBAAwB,CAAC,YAAuC;AAAA,IACtE,IAAI;AAAA,MACF,MAAM,WAAW,WAAW,QAAQ;AAAA,MACpC,MAAM,cAAc,WAAW,mBAAmB;AAAA,MAElD,IAAI,YAAY,WAAW,GAAG;AAAA,QAC5B,KAAK,sBAAsB,QAAQ;AAAA,QACnC,OAAO;AAAA,MACT;AAAA,MAEA,WAAW,OAAO,aAAa;AAAA,QAC7B,MAAM,cAAc,KAAK,kCAAkC,KAAK,QAAQ;AAAA,QACxE,IAAI,aAAa;AAAA,UACf,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,OAAO,QAAO;AAAA,MACd,KAAK,wBAAwB,MAAK;AAAA;AAAA,IAGpC,OAAO;AAAA;AAAA,EAMD,iCAAiC,CAAC,KAAW,UAAiC;AAAA,IACpF,IAAI,CAAC,KAAK,eAAe,GAAG,GAAG;AAAA,MAC7B,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,iBAAiB,IAAI,kBAAkB;AAAA,IAC7C,KAAK,uBAAuB,UAAU,KAAK,cAAc;AAAA,IAEzD,MAAM,sBAAsB,KAAK,yBAAyB,gBAAgB,QAAQ;AAAA,IAClF,IAAI,qBAAqB;AAAA,MACvB,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,KAAK,wBAAwB,KAAK,QAAQ;AAAA;AAAA,EAM3C,cAAc,CACpB,MACkE;AAAA,IAClE,OACE,MAAK,sBAAsB,IAAI,KAC/B,MAAK,qBAAqB,IAAI,KAC9B,MAAK,gBAAgB,IAAI;AAAA;AAAA,EAOrB,wBAAwB,CAC9B,gBACA,UACe;AAAA,IACf,IAAI,CAAC,kBAAkB,CAAC,MAAK,gBAAgB,cAAc,GAAG;AAAA,MAC5D,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,WAAW,eAAe,YAAY;AAAA,IAC5C,IAAI,CAAC,UAAU;AAAA,MACb,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,WAAW,SAAS,QAAQ;AAAA,IAClC,MAAM,cAAc,KAAK,+BAA+B,QAAQ;AAAA,IAEhE,IAAI,aAAa;AAAA,MACf,KAAK,gCAAgC,UAAU,WAAW;AAAA,MAC1D,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,uBAAuB,CAC7B,KACA,UACe;AAAA,IACf,MAAM,OAAO,IAAI,QAAQ;AAAA,IACzB,IAAI,CAAC,MAAM;AAAA,MACT,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,WAAW,KAAK,QAAQ;AAAA,IAC9B,MAAM,iBAAiB,SAAS,MAAM,+BAA+B;AAAA,IAErE,IAAI,gBAAgB;AAAA,MAClB,MAAM,cAAc,eAAe,MAAM;AAAA,MACzC,KAAK,uBAAuB,UAAU,WAAW;AAAA,MACjD,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,qBAAqB,CAAC,UAAwB;AAAA,IACpD,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IAAI,uDAAuD,UAAU;AAAA,IAC/E;AAAA;AAAA,EAMM,sBAAsB,CAC5B,UACA,KACA,gBACM;AAAA,IACN,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,MAAM,aAAa,IAAI,cAAc,EAAE,QAAQ;AAAA,MAC/C,QAAQ,IAAI,oBAAoB,oCAAoC,YAAY;AAAA,MAChF,QAAQ,IAAI,iCAAiC,CAAC,CAAC,gBAAgB;AAAA,MAC/D,QAAQ,IACN,mCAAmC,kBAAkB,MAAK,gBAAgB,cAAc,GAC1F;AAAA,IACF;AAAA;AAAA,EAMM,+BAA+B,CAAC,UAAkB,aAA2B;AAAA,IACnF,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IAAI,oBAAoB,cAAa,uCAAuC;AAAA,IACtF;AAAA;AAAA,EAMM,sBAAsB,CAAC,UAAkB,aAAkC;AAAA,IACjF,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IAAI,oBAAoB,cAAa,yBAAyB;AAAA,IACxE;AAAA;AAAA,EAMM,uBAAuB,CAAC,QAAsB;AAAA,IACpD,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IAAI,gDAAgD,QAAO;AAAA,IACrE;AAAA;AAAA,EAUM,8BAA8B,CAAC,UAA0B;AAAA,IAE/D,MAAM,cAAc,SACjB,QAAQ,YAAY,EAAE,EACtB,QAAQ,UAAU,EAAE,EACpB,QAAQ,YAAY,EAAE,EACtB,QAAQ,YAAY,EAAE,EACtB,QAAQ,UAAU,EAAE,EACpB,YAAY;AAAA,IAEf,OAAO;AAAA;AAAA,EAMD,YAAY,CAAC,UAA0B;AAAA,IAC7C,MAAM,QAAO,SAAS,YAAY;AAAA,IAGlC,OACE,KAAK,qBAAqB,KAAI,KAC9B,KAAK,mBAAmB,KAAI,KAC5B,KAAK,sBAAsB,KAAI,KAC/B,KAAK,4BAA4B,KAAI,KACrC;AAAA;AAAA,EAOI,oBAAoB,CAAC,OAA6B;AAAA,IACxD,IACE,MAAK,SAAS,SAAS,KACvB,MAAK,SAAS,SAAS,KACvB,MAAK,SAAS,QAAQ,KACtB,MAAK,SAAS,UAAU,GACxB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,IACE,MAAK,SAAS,YAAY,KAC1B,MAAK,SAAS,cAAc,KAC5B,MAAK,SAAS,aAAa,KAC3B,MAAK,SAAS,aAAa,GAC3B;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAK,SAAS,YAAY,KAAK,MAAK,SAAS,YAAY,GAAG;AAAA,MAC9D,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,kBAAkB,CAAC,OAA6B;AAAA,IACtD,IAAI,MAAK,SAAS,gBAAgB,KAAK,MAAK,SAAS,OAAO,KAAK,MAAK,SAAS,OAAO,GAAG;AAAA,MACvF,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAK,SAAS,UAAU,KAAK,MAAK,SAAS,YAAY,GAAG;AAAA,MAC5D,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,qBAAqB,CAAC,OAA6B;AAAA,IACzD,IACE,MAAK,SAAS,UAAU,KACxB,MAAK,SAAS,YAAY,KAC1B,MAAK,SAAS,UAAU,KACxB,MAAK,SAAS,WAAW,KACzB,MAAK,SAAS,WAAW,GACzB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAK,SAAS,UAAU,KAAK,MAAK,SAAS,YAAY,KAAK,MAAK,SAAS,UAAU,GAAG;AAAA,MACzF,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,2BAA2B,CAAC,OAA6B;AAAA,IAC/D,IAAI,MAAK,SAAS,cAAc,KAAK,MAAK,SAAS,gBAAgB,GAAG;AAAA,MACpE,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAK,SAAS,WAAW,KAAK,MAAK,SAAS,aAAa,GAAG;AAAA,MAC9D,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAK,SAAS,SAAS,KAAK,MAAK,SAAS,WAAW,GAAG;AAAA,MAC1D,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAK,SAAS,YAAY,KAAK,MAAK,SAAS,cAAc,GAAG;AAAA,MAChE,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAK,SAAS,WAAW,KAAK,MAAK,SAAS,aAAa,GAAG;AAAA,MAC9D,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAK,SAAS,aAAa,KAAK,MAAK,SAAS,eAAe,GAAG;AAAA,MAClE,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,6BAA6B,CACnC,MACA,eACA,WACM;AAAA,IACN,IAAI,CAAC,MAAK,mBAAmB,IAAI;AAAA,MAAG;AAAA,IAEpC,MAAM,WAAW,KAAK,iBAAiB,EAAE,QAAQ;AAAA,IACjD,IAAI,aAAa,OAAO,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,SAAS,QAAQ;AAAA,MAAG;AAAA,IAE5E,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,IAAI,CAAC,MAAK,2BAA2B,IAAI,KAAK,CAAC,MAAK,0BAA0B,IAAI;AAAA,MAAG;AAAA,IAErF,MAAM,YAAY,MAAK,2BAA2B,IAAI,IAClD,KAAK,gBAAgB,IAAI,IACzB,KAAK,gBAAgB,KAAK,cAAc,CAAC;AAAA,IAE7C,MAAM,QAAQ,KAAK,0BAA0B,SAAS;AAAA,IACtD,IAAI,OAAO;AAAA,MACT,MAAM,OAAO,KAAK,mBAAmB;AAAA,MACrC,MAAM,aAAa,KAAK,SAAS,IAAI;AAAA,MACrC,UAAU,KAAK,EAAE,OAAO,MAAM,WAAW,CAAC;AAAA,IAC5C;AAAA;AAAA,EAMM,2BAA2B,CACjC,MACA,eACA,WACM;AAAA,IACN,IAAI,CAAC,MAAK,iBAAiB,IAAI;AAAA,MAAG;AAAA,IAElC,MAAM,OAAO,KAAK,cAAc;AAAA,IAChC,IAAI,CAAC,MAAK,2BAA2B,IAAI;AAAA,MAAG;AAAA,IAE5C,MAAM,aAAa,KAAK,QAAQ;AAAA,IAChC,MAAM,SAAS,KAAK,cAAc;AAAA,IAElC,IAAI,CAAC,MAAK,2BAA2B,MAAM;AAAA,MAAG;AAAA,IAE9C,MAAM,YAAY,KAAK,gBAAgB,MAAM;AAAA,IAC7C,MAAM,QAAQ,KAAK,0BAA0B,SAAS;AAAA,IAEtD,IAAI,SAAS,CAAC,QAAQ,OAAO,SAAS,WAAW,QAAQ,EAAE,SAAS,UAAU,GAAG;AAAA,MAC/E,MAAM,OAAO,KAAK,mBAAmB;AAAA,MACrC,MAAM,aAAa,KAAK,SAAS,IAAI;AAAA,MACrC,UAAU,KAAK,EAAE,OAAO,MAAM,WAAW,CAAC;AAAA,IAC5C;AAAA;AAAA,EAMM,+BAA+B,CAAC,YAA2C;AAAA,IACjF,MAAM,cAAiC,CAAC;AAAA,IACxC,MAAM,WAAW,WAAW,YAAY;AAAA,IAExC,WAAW,kBAAkB,CAAC,SAAS;AAAA,MACrC,MAAM,kBAAkB,KAAK,yBAAyB,MAAM,QAAQ;AAAA,MACpE,YAAY,KAAK,GAAG,eAAe;AAAA,KACpC;AAAA,IAED,OAAO;AAAA;AAAA,EAOD,wBAAwB,CAAC,MAAY,UAAqC;AAAA,IAChF,IAAI,CAAC,MAAK,iBAAiB,IAAI,GAAG;AAAA,MAChC,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,MAAM,aAAa,KAAK,cAAc;AAAA,IACtC,IAAI,CAAC,MAAK,aAAa,UAAU,GAAG;AAAA,MAClC,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,MAAM,eAAe,WAAW,QAAQ;AAAA,IACxC,IAAI,iBAAiB,gBAAgB;AAAA,MACnC,OAAO,CAAC;AAAA,IACV;AAAA,IAGA,MAAM,OAAO,KAAK,aAAa;AAAA,IAC/B,IAAI,KAAK,SAAS,GAAG;AAAA,MACnB,OAAO,CAAC;AAAA,IACV;AAAA,IAGA,MAAM,WAAW,KAAK;AAAA,IACtB,IAAI,CAAC,MAAK,gBAAgB,QAAQ,GAAG;AAAA,MACnC,OAAO,CAAC;AAAA,IACV;AAAA,IACA,MAAM,QAAQ,SAAS,gBAAgB;AAAA,IAGvC,MAAM,iBAAiB,KAAK;AAAA,IAC5B,IAAI,CAAC,MAAK,0BAA0B,cAAc,GAAG;AAAA,MACnD,OAAO,CAAC;AAAA,IACV;AAAA,IAGA,MAAM,UAA6B,CAAC;AAAA,IACpC,WAAW,YAAY,eAAe,cAAc,GAAG;AAAA,MACrD,IAAI,CAAC,MAAK,qBAAqB,QAAQ,GAAG;AAAA,QACxC;AAAA,MACF;AAAA,MAEA,MAAM,cAAc,SAAS,QAAQ;AAAA,MACrC,MAAM,cAAc,SAAS,eAAe;AAAA,MAC5C,IAAI,CAAC,eAAe,CAAC,MAAK,0BAA0B,WAAW,GAAG;AAAA,QAChE;AAAA,MACF;AAAA,MAGA,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MAEJ,WAAW,kBAAkB,YAAY,cAAc,GAAG;AAAA,QACxD,IAAI,CAAC,MAAK,qBAAqB,cAAc,GAAG;AAAA,UAC9C;AAAA,QACF;AAAA,QAEA,MAAM,WAAW,eAAe,QAAQ;AAAA,QACxC,MAAM,YAAY,eAAe,eAAe;AAAA,QAChD,IAAI,CAAC,WAAW;AAAA,UACd;AAAA,QACF;AAAA,QAEA,IAAI,aAAa,cAAc,MAAK,gBAAgB,SAAS,GAAG;AAAA,UAC9D,WAAW,UAAU,gBAAgB;AAAA,QACvC,EAAO,SAAI,aAAa,aAAa,MAAK,gBAAgB,SAAS,GAAG;AAAA,UACpE,UAAU,UAAU,gBAAgB;AAAA,QACtC,EAAO,SAAI,aAAa,aAAa,MAAK,gBAAgB,SAAS,GAAG;AAAA,UACpE,UAAU,UAAU,gBAAgB;AAAA,QACtC;AAAA,MACF;AAAA,MAEA,QAAQ,KAAK;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM,SAAS,mBAAmB;AAAA,QACpC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,OAAO;AAAA;AAAA,EAcT,6BAA6B,CAAC,YAA6C;AAAA,IACzE,MAAM,iBAAsC,CAAC;AAAA,IAC7C,MAAM,WAAW,WAAW,YAAY;AAAA,IAExC,WAAW,kBAAkB,CAAC,SAAS;AAAA,MACrC,IAAI,CAAC,MAAK,iBAAiB,IAAI;AAAA,QAAG;AAAA,MAElC,MAAM,YAAY,KAAK,2BAA2B,MAAM,QAAQ;AAAA,MAChE,IAAI,WAAW;AAAA,QACb,eAAe,KAAK,SAAS;AAAA,MAC/B;AAAA,KACD;AAAA,IAED,OAAO;AAAA;AAAA,EAMD,0BAA0B,CAAC,MAAY,UAA4C;AAAA,IACzF,IAAI,CAAC,MAAK,iBAAiB,IAAI;AAAA,MAAG,OAAO;AAAA,IAEzC,MAAM,aAAa,KAAK,cAAc;AAAA,IACtC,IAAI,CAAC,MAAK,aAAa,UAAU;AAAA,MAAG,OAAO;AAAA,IAE3C,MAAM,WAAW,WAAW,QAAQ;AAAA,IAEpC,IAAI,CAAC,CAAC,gBAAgB,gBAAgB,iBAAiB,EAAE,SAAS,QAAQ,GAAG;AAAA,MAC3E,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,OAAO,KAAK,aAAa;AAAA,IAC/B,IAAI,KAAK,SAAS;AAAA,MAAG,OAAO;AAAA,IAG5B,MAAM,aAAa,KAAK;AAAA,IACxB,IAAI,CAAC,cAAc,CAAC,KAAK,cAAc,UAAU;AAAA,MAAG,OAAO;AAAA,IAG3D,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,CAAC,UAAU,CAAC,MAAK,gBAAgB,MAAM;AAAA,MAAG,OAAO;AAAA,IACrD,MAAM,MAAM,OAAO,gBAAgB;AAAA,IAGnC,MAAM,eAAe,KAAK,0BAA0B,IAAI,KAAK;AAAA,IAG7D,MAAM,kBAAkB,KAAK;AAAA,IAC7B,MAAM,SAAS,kBAAkB,KAAK,kBAAkB,eAAe,IAAI,CAAC;AAAA,IAE5E,IAAI,QAAQ,IAAI,gBAAgB;AAAA,MAC9B,QAAQ,IACN,iCAAiC,uBAAuB,uBAAuB,OAAO,KAAK,IAAI,IACjG;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,mBAAmB;AAAA,MAC9B;AAAA,IACF;AAAA;AAAA,EAMM,aAAa,CAAC,aAA4B;AAAA,IAChD,IAAI,CAAC,MAAK,0BAA0B,WAAW;AAAA,MAAG,OAAO;AAAA,IAEzD,WAAW,QAAQ,YAAY,cAAc,GAAG;AAAA,MAC9C,IAAI,CAAC,MAAK,qBAAqB,IAAI;AAAA,QAAG;AAAA,MAEtC,MAAM,OAAO,KAAK,QAAQ;AAAA,MAC1B,IAAI,SAAS;AAAA,QAAU;AAAA,MAEvB,MAAM,cAAc,KAAK,eAAe;AAAA,MACxC,IAAI,eAAe,YAAY,QAAQ,MAAM,WAAW,aAAa;AAAA,QACnE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,yBAAyB,CAAC,MAA2B;AAAA,IAC3D,MAAM,SAAS,KAAK,UAAU;AAAA,IAC9B,IAAI,MAAK,sBAAsB,MAAM,GAAG;AAAA,MACtC,OAAO,OAAO,QAAQ;AAAA,IACxB;AAAA,IACA,OAAO;AAAA;AAAA,EAQD,iBAAiB,CAAC,MAAsB;AAAA,IAC9C,MAAM,SAAmB,CAAC;AAAA,IAE1B,IAAI,MAAK,0BAA0B,IAAI,GAAG;AAAA,MACxC,WAAW,QAAQ,KAAK,cAAc,GAAG;AAAA,QACvC,IAAI,MAAK,qBAAqB,IAAI,KAAK,MAAK,8BAA8B,IAAI,GAAG;AAAA,UAC/E,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,EAAO,SAAI,MAAK,aAAa,IAAI,GAAG;AAAA,MAElC,MAAM,cAAc,KAAK,mBAAmB;AAAA,MAC5C,WAAW,OAAO,aAAa;AAAA,QAC7B,IAAI,MAAK,sBAAsB,GAAG,GAAG;AAAA,UACnC,MAAM,cAAc,IAAI,eAAe;AAAA,UACvC,IAAI,eAAe,MAAK,0BAA0B,WAAW,GAAG;AAAA,YAC9D,OAAO,KAAK,kBAAkB,WAAW;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAWT,0BAA0B,CACxB,YACA,gBACkB;AAAA,IAClB,MAAM,WAA6B,CAAC;AAAA,IACpC,MAAM,gBAAgB,IAAI,IAAI,eAAe,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;AAAA,IACvE,MAAM,WAAW,WAAW,YAAY;AAAA,IACxC,MAAM,UAAU,KAAK,aAAa,QAAQ;AAAA,IAG1C,WAAW,QAAQ,WAAW,aAAa,GAAG;AAAA,MAC5C,IAAI,CAAC,KAAK,WAAW;AAAA,QAAG;AAAA,MAExB,MAAM,WAAW,KAAK,QAAQ;AAAA,MAC9B,IAAI,CAAC;AAAA,QAAU;AAAA,MAGf,MAAM,cAAc,KAAK,6BAA6B,MAAM,aAAa;AAAA,MACzE,IAAI,YAAY,WAAW;AAAA,QAAG;AAAA,MAG9B,MAAM,gBAAyC,CAAC;AAAA,MAChD,MAAM,iBAA0C,CAAC;AAAA,MACjD,KAAK,8BAA8B,MAAM,eAAe,cAAc;AAAA,MAGtE,MAAM,cAAc,KAAK,0BAA0B,QAAQ;AAAA,MAE3D,IAAI,QAAQ,IAAI,gBAAgB;AAAA,QAC9B,QAAQ,IACN,0CAA0C,cAAa,iBACrD,IAAI,YAAY,uBAAuB,cAAc,yBAAyB,eAAe,wBACjG;AAAA,MACF;AAAA,MAEA,SAAS,KAAK;AAAA,QACZ;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM,KAAK,mBAAmB;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,WAAW,WAAW,WAAW,sBAAsB,GAAG;AAAA,MACxD,IAAI,CAAC,QAAQ,WAAW;AAAA,QAAG;AAAA,MAE3B,WAAW,QAAQ,QAAQ,gBAAgB,GAAG;AAAA,QAC5C,MAAM,cAAc,KAAK,eAAe;AAAA,QACxC,IAAI,CAAC;AAAA,UAAa;AAAA,QAClB,IAAI,CAAC,MAAK,gBAAgB,WAAW,KAAK,CAAC,MAAK,qBAAqB,WAAW;AAAA,UAAG;AAAA,QAEnF,MAAM,WAAW,KAAK,QAAQ;AAAA,QAC9B,IAAI,CAAC;AAAA,UAAU;AAAA,QAEf,MAAM,cAAc,KAAK,6BAA6B,aAAa,aAAa;AAAA,QAChF,IAAI,YAAY,WAAW;AAAA,UAAG;AAAA,QAE9B,MAAM,gBAAyC,CAAC;AAAA,QAChD,MAAM,iBAA0C,CAAC;AAAA,QACjD,KAAK,8BAA8B,aAAa,eAAe,cAAc;AAAA,QAE7E,MAAM,cAAc,KAAK,0BAA0B,QAAQ;AAAA,QAE3D,IAAI,QAAQ,IAAI,gBAAgB;AAAA,UAC9B,QAAQ,IAAI,gDAAgD,cAAa,aAAa;AAAA,QACxF;AAAA,QAEA,SAAS,KAAK;AAAA,UACZ;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,MAAM,KAAK,mBAAmB;AAAA,UAChC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,4BAA4B,CAClC,MACA,eACmB;AAAA,IACnB,MAAM,YAA+B,CAAC;AAAA,IAGtC,KAAK,kBAAkB,CAAC,SAAS;AAAA,MAC/B,IAAI,CAAC,MAAK,mBAAmB,IAAI;AAAA,QAAG;AAAA,MAEpC,MAAM,WAAW,KAAK,iBAAiB,EAAE,QAAQ;AAAA,MACjD,IAAI,aAAa;AAAA,QAAK;AAAA,MAEtB,MAAM,OAAO,KAAK,QAAQ;AAAA,MAC1B,IAAI,CAAC,MAAK,2BAA2B,IAAI;AAAA,QAAG;AAAA,MAE5C,MAAM,QAAO,KAAK,gBAAgB,IAAI;AAAA,MAKtC,WAAW,WAAW,eAAe;AAAA,QAEnC,IAAI,UAAS,GAAG,iBAAiB;AAAA,UAC/B,MAAM,QAAQ,KAAK,SAAS;AAAA,UAC5B,IAAI,MAAK,0BAA0B,KAAK,GAAG;AAAA,YACzC,KAAK,gCAAgC,OAAO,SAAS;AAAA,UACvD;AAAA,UACA;AAAA,QACF;AAAA,QAGA,MAAM,cAAc,GAAG;AAAA,QACvB,IAAI,MAAK,WAAW,WAAW,GAAG;AAAA,UAChC,MAAM,QAAQ,MAAK,UAAU,YAAY,MAAM;AAAA,UAC/C,MAAM,QAAQ,KAAK,aAAa,KAAK,SAAS,CAAC;AAAA,UAC/C,UAAU,KAAK,EAAE,OAAO,OAAO,SAAS,IAAI,CAAC;AAAA,UAC7C;AAAA,QACF;AAAA,MACF;AAAA,KACD;AAAA,IAED,OAAO;AAAA;AAAA,EAUD,yBAAyB,CAAC,UAA0B;AAAA,IAE1D,IAAI,OAAO,SACR,QAAQ,WAAW,EAAE,EACrB,QAAQ,OAAO,EAAE,EACjB,QAAQ,QAAQ,KAAK,EACrB,QAAQ,WAAW,QAAQ,EAC3B,QAAQ,OAAO,EAAE;AAAA,IAGpB,IAAI,KAAK,SAAS,GAAG;AAAA,MACnB,OAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA,IACpD;AAAA,IAEA,OAAO,QAAQ;AAAA;AAEnB;;;AEpyEA,iBAAS,kBAAM;AAAA;AAGR,MAAM,oBAAoB;AAAA,EACvB;AAAA,EAER,WAAW,CAAC,cAAsB;AAAA,IAChC,KAAK,UAAU,IAAI,SAAQ;AAAA,MACzB,kBAAkB;AAAA,IACpB,CAAC;AAAA;AAAA,EAMH,mBAAmB,GAA0B;AAAA,IAC3C,MAAM,eAAe,IAAI;AAAA,IAGzB,MAAM,aAAa,KAAK,eAAe;AAAA,IACvC,WAAW,QAAQ,YAAY;AAAA,MAC7B,KAAK,sBAAsB,cAAc,KAAK,qBAAqB,IAAI,CAAC;AAAA,IAC1E;AAAA,IAGA,MAAM,aAAa,KAAK,eAAe;AAAA,IACvC,WAAW,MAAM,YAAY;AAAA,MAC3B,KAAK,sBAAsB,cAAc,KAAK,2BAA2B,EAAE,CAAC;AAAA,IAC9E;AAAA,IAGA,MAAM,kBAAkB,KAAK,oBAAoB;AAAA,IACjD,WAAW,UAAU,iBAAiB;AAAA,MACpC,KAAK,sBAAsB,cAAc,MAAM;AAAA,IACjD;AAAA,IAEA,OAAO,MAAM,KAAK,aAAa,OAAO,CAAC;AAAA;AAAA,EAMjC,cAAc,GAMnB;AAAA,IACD,MAAM,QAMD,CAAC;AAAA,IAEN,WAAW,cAAc,KAAK,QAAQ,eAAe,GAAG;AAAA,MACtD,WAAW,kBAAkB,CAAC,SAAS;AAAA,QACrC,KAAK,iBAAiB,MAAM,YAAY,KAAK;AAAA,OAC9C;AAAA,IACH;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,gBAAgB,CACtB,MACA,YACA,OAOM;AAAA,IACN,IAAI,CAAC,MAAK,iBAAiB,IAAI,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,KAAK,cAAc;AAAA,IACtC,IAAI,CAAC,KAAK,YAAY,UAAU,GAAG;AAAA,MACjC;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,KAAK,aAAa;AAAA,IAC/B,IAAI,KAAK,WAAW,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,KAAK;AAAA,IACtB,IAAI,CAAC;AAAA,MAAU;AAAA,IAEf,MAAM,MAAM,KAAK,kBAAkB,QAAQ;AAAA,IAC3C,IAAI,CAAC,KAAK;AAAA,MACR;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,KAAK,yBAAyB,IAAI;AAAA,IACjD,MAAM,cAAc,KAAK,wBAAwB,IAAI;AAAA,IAErD,MAAM,KAAK;AAAA,MACT;AAAA,MACA;AAAA,MACA,MAAM,WAAW,YAAY;AAAA,MAC7B,MAAM,KAAK,mBAAmB;AAAA,MAC9B;AAAA,IACF,CAAC;AAAA;AAAA,EAMK,WAAW,CAAC,YAA2B;AAAA,IAC7C,OAAO,MAAK,aAAa,UAAU,KAAK,WAAW,QAAQ,MAAM;AAAA;AAAA,EAM3D,iBAAiB,CAAC,QAA6B;AAAA,IACrD,IAAI,MAAK,gBAAgB,MAAM,GAAG;AAAA,MAChC,OAAO,OAAO,gBAAgB;AAAA,IAChC;AAAA,IAEA,IAAI,MAAK,qBAAqB,MAAM,GAAG;AAAA,MACrC,OAAO,KAAK,eAAe,OAAO,QAAQ,CAAC;AAAA,IAC7C;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,wBAAwB,CAAC,MAAsB;AAAA,IACrD,MAAM,gBAAgB;AAAA,IAEtB,IAAI,KAAK,UAAU,GAAG;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,aAAa,KAAK;AAAA,IACxB,IAAI,CAAC,MAAK,0BAA0B,UAAU,GAAG;AAAA,MAC/C,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,aAAa,WAAW,YAAY,QAAQ;AAAA,IAClD,IAAI,CAAC,cAAc,CAAC,MAAK,qBAAqB,UAAU,GAAG;AAAA,MACzD,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,cAAc,WAAW,eAAe;AAAA,IAC9C,IAAI,CAAC,eAAe,CAAC,MAAK,gBAAgB,WAAW,GAAG;AAAA,MACtD,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,YAAY,gBAAgB,EAAE,YAAY;AAAA;AAAA,EAM3C,cAAc,GAKnB;AAAA,IACD,MAAM,aAKD,CAAC;AAAA,IAEN,WAAW,cAAc,KAAK,QAAQ,eAAe,GAAG;AAAA,MACtD,WAAW,kBAAkB,CAAC,SAAS;AAAA,QACrC,IAAI,MAAK,gBAAgB,IAAI,GAAG;AAAA,UAC9B,MAAM,aAAa,KAAK,cAAc;AAAA,UAGtC,IAAI,MAAK,aAAa,UAAU,KAAK,WAAW,QAAQ,MAAM,aAAa;AAAA,YACzE,MAAM,OAAO,KAAK,aAAa;AAAA,YAC/B,IAAI,KAAK,SAAS,KAAK,MAAK,gBAAgB,KAAK,EAAE,GAAG;AAAA,cACpD,MAAM,MAAM,KAAK,GAAG,gBAAgB;AAAA,cACpC,MAAM,cAAc,KAAK,wBAAwB,IAAI;AAAA,cAErD,WAAW,KAAK;AAAA,gBACd;AAAA,gBACA,MAAM,WAAW,YAAY;AAAA,gBAC7B,MAAM,KAAK,mBAAmB;AAAA,gBAC9B;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,OACD;AAAA,IACH;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,mBAAmB,GAA0B;AAAA,IACnD,MAAM,UAAiC,CAAC;AAAA,IACxC,MAAM,OAAO,IAAI;AAAA,IAEjB,WAAW,cAAc,KAAK,QAAQ,eAAe,GAAG;AAAA,MACtD,KAAK,+BAA+B,YAAY,SAAS,IAAI;AAAA,IAC/D;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,8BAA8B,CACpC,YACA,SACA,MACM;AAAA,IACN,WAAW,cAAc,WAAW,sBAAsB,GAAG;AAAA,MAC3D,MAAM,kBAAkB,WAAW,wBAAwB;AAAA,MAE3D,IAAI,KAAK,iBAAiB,eAAe,GAAG;AAAA,QAC1C,MAAM,cAAc,KAAK,mBAAmB,eAAe;AAAA,QAE3D,IAAI,eAAe,CAAC,KAAK,IAAI,WAAW,GAAG;AAAA,UACzC,KAAK,IAAI,WAAW;AAAA,UACpB,QAAQ,KAAK,KAAK,gCAAgC,aAAa,UAAU,CAAC;AAAA,QAC5E;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAMM,gBAAgB,CAAC,iBAAkC;AAAA,IACzD,OAAO,CAAC,gBAAgB,WAAW,GAAG,KAAK,CAAC,gBAAgB,WAAW,GAAG;AAAA;AAAA,EAMpE,kBAAkB,CAAC,iBAA6C;AAAA,IAEtE,IAAI,gBAAgB,WAAW,GAAG,GAAG;AAAA,MACnC,OAAO,gBAAgB,MAAM,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AAAA,IACxD;AAAA,IAEA,OAAO,gBAAgB,MAAM,GAAG,EAAE;AAAA;AAAA,EAM5B,+BAA+B,CACrC,aACA,YACqB;AAAA,IACrB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,QAAQ,CAAC,WAAW,YAAY,CAAC;AAAA,MACjC,aAAa,wBAAwB;AAAA,IACvC;AAAA;AAAA,EAMM,oBAAoB,CAAC,MAML;AAAA,IAEtB,MAAM,UAAU,KAAK,eAAe,KAAK,GAAG;AAAA,IAG5C,MAAM,OAAO,KAAK,aAAa,OAAO;AAAA,IAEtC,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,QAAQ,CAAC,KAAK,IAAI;AAAA,MAClB,aAAa,KAAK,eAAe,iBAAiB;AAAA,MAClD,OAAO;AAAA,QACL;AAAA,UACE,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,UACf,UAAU;AAAA,YACR,MAAM,KAAK;AAAA,YACX,MAAM,KAAK;AAAA,UACb;AAAA,UACA,aAAa,KAAK;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAMM,0BAA0B,CAAC,IAKX;AAAA,IACtB,MAAM,OAAO,KAAK,aAAa,GAAG,GAAG;AAAA,IAErC,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA,YAAY;AAAA,MACZ,KAAK,GAAG;AAAA,MACR,QAAQ,CAAC,GAAG,IAAI;AAAA,MAChB,aAAa,GAAG,eAAe,yBAAyB;AAAA,IAC1D;AAAA;AAAA,EAMM,cAAc,CAAC,KAAqB;AAAA,IAE1C,IAAI,WAAW,IAAI,QAAQ,gBAAgB,EAAE;AAAA,IAC7C,WAAW,SAAS,QAAQ,MAAM,EAAE;AAAA,IAEpC,IAAI;AAAA,MACF,MAAM,SAAS,IAAI,IAAI,QAAQ;AAAA,MAC/B,OAAO,GAAG,OAAO,aAAa,OAAO;AAAA,MACrC,MAAM;AAAA,MAEN,MAAM,QAAQ,SAAS,MAAM,oBAAoB;AAAA,MACjD,OAAO,QAAQ,MAAM,KAAK;AAAA;AAAA;AAAA,EAOtB,YAAY,CAAC,KAAqB;AAAA,IACxC,IAAI;AAAA,MACF,MAAM,SAAS,IAAI,IAAI,GAAG;AAAA,MAC1B,MAAM,WAAW,OAAO;AAAA,MAGxB,MAAM,YAAY,SAAS,QAAQ,UAAU,EAAE;AAAA,MAG/C,MAAM,QAAQ,UAAU,MAAM,GAAG;AAAA,MACjC,IAAI,MAAM,SAAS,KAAK,MAAM,IAAI;AAAA,QAEhC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,YAAY,IAAI,MAAM,GAAG,MAAM,CAAC;AAAA,MAC/D;AAAA,MACA,MAAM;AAAA,IAIR,OAAO;AAAA;AAAA,EAMD,qBAAqB,CAC3B,KACA,aACM;AAAA,IACN,MAAM,MAAM,GAAG,YAAY,QAAQ,YAAY;AAAA,IAE/C,IAAI,IAAI,IAAI,GAAG,GAAG;AAAA,MAChB,MAAM,WAAW,IAAI,IAAI,GAAG;AAAA,MAC5B,IAAI,CAAC;AAAA,QAAU;AAAA,MAGf,SAAS,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,SAAS,QAAQ,GAAG,YAAY,MAAM,CAAC,CAAC;AAAA,MAG1E,IAAI,YAAY,SAAS,SAAS,OAAO;AAAA,QACvC,SAAS,MAAM,KAAK,GAAG,YAAY,KAAK;AAAA,MAC1C,EAAO,SAAI,YAAY,OAAO;AAAA,QAC5B,SAAS,QAAQ,YAAY;AAAA,MAC/B;AAAA,IACF,EAAO;AAAA,MACL,IAAI,IAAI,KAAK,WAAW;AAAA;AAAA;AAAA,EAOpB,uBAAuB,CAAC,MAAgC;AAAA,IAC9D,IAAI,CAAC,MAAK,YAAY,IAAI;AAAA,MAAG;AAAA,IAE7B,MAAM,SAAS,KAAK,UAAU;AAAA,IAC9B,IAAI,OAAO,WAAW;AAAA,MAAG;AAAA,IAEzB,MAAM,WAAW,OAAO;AAAA,IACxB,IAAI,CAAC;AAAA,MAAU;AAAA,IAEf,MAAM,UAAU,SAAS,eAAe,EAAE,KAAK;AAAA,IAC/C,OAAO,WAAW;AAAA;AAEtB;;;ACpaA;AACA;AAAA;AAMO,MAAM,eAAe;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CAAC,aAAqB,WAAW,OAAO;AAAA,IACjD,KAAK,UAAU;AAAA,IACf,KAAK,eAAoB,WAAK,aAAa,eAAe;AAAA,IAE1D,IAAI,CAAI,eAAW,KAAK,YAAY,GAAG;AAAA,MACrC,IAAI,UAAU;AAAA,QACZ,KAAK,eAAe;AAAA,QACpB;AAAA,MACF;AAAA,MACA,MAAM,IAAI,MAAM,8BAA8B,KAAK,cAAc;AAAA,IACnE;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,UAAa,iBAAa,KAAK,cAAc,OAAO;AAAA,MAC1D,KAAK,eAAe,KAAK,MAAM,OAAO;AAAA,MACtC,OAAO,QAAO;AAAA,MACd,MAAM,IAAI,MAAM,kCAAkC,QAAO;AAAA;AAAA;AAAA,EAO7D,WAAW,GAAY;AAAA,IACrB,OAAO,KAAK,iBAAiB;AAAA;AAAA,EAM/B,KAAK,GAAiB;AAAA,IACpB,IAAI,CAAC,KAAK,cAAc;AAAA,MACtB,MAAM,IAAI,MACR,2FACF;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,KAAK;AAAA,IAEtB,OAAO;AAAA,MACL,MAAO,SAAS,WAAsB;AAAA,MACtC,SAAU,SAAS,cAAyB;AAAA,MAC5C,aAAa,SAAS;AAAA,MACtB,iBAAkB,SAAS,uBAAkC;AAAA,MAC7D,YAAY,KAAK,gBAAgB;AAAA,MACjC,gBAAgB,KAAK,oBAAoB;AAAA,MACzC,OAAO,KAAK,WAAW;AAAA,MACvB,SAAS,KAAK,aAAa;AAAA,MAC3B,UAAU,KAAK,cAAc;AAAA,MAC7B,aAAc,SAAS,kBAA+B,CAAC;AAAA,MACvD,iBAAkB,SAAS,uBAAoC,CAAC;AAAA,IAClE;AAAA;AAAA,EAMF,qBAAqB,GAA2B;AAAA,IAC9C,IAAI,CAAC,KAAK,cAAc;AAAA,MACtB,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,MAAM,cAAsC,CAAC;AAAA,IAE7C,KAAK,wBAAwB,WAAW;AAAA,IACxC,KAAK,2BAA2B,WAAW;AAAA,IAC3C,KAAK,mBAAmB,WAAW;AAAA,IACnC,KAAK,qBAAqB,WAAW;AAAA,IACrC,KAAK,sBAAsB,WAAW;AAAA,IAEtC,OAAO;AAAA;AAAA,EAGD,uBAAuB,CAAC,aAA2C;AAAA,IACzE,MAAM,aAAa,KAAK,gBAAgB;AAAA,IACxC,IAAI,CAAC;AAAA,MAAY;AAAA,IAEjB,MAAM,YAAY,WAAW,MAAM;AAAA,IACnC,IAAI,WAAW;AAAA,MACb,YAAY,gBAAgB,KAAK,eAAe,SAAS;AAAA,IAC3D;AAAA;AAAA,EAGM,0BAA0B,CAAC,aAA2C;AAAA,IAC5E,MAAM,iBAAiB,KAAK,oBAAoB;AAAA,IAChD,IAAI,CAAC,kBAAkB,eAAe,WAAW;AAAA,MAAG;AAAA,IAEpD,MAAM,cAAc,eAAe,IAAI,GAAG;AAAA,IAC1C,IAAI,aAAa;AAAA,MACf,YAAY,aAAa,KAAK,eAAe,WAAW;AAAA,IAC1D;AAAA;AAAA,EAGM,kBAAkB,CAAC,aAA2C;AAAA,IACpE,MAAM,QAAQ,KAAK,WAAW;AAAA,IAC9B,IAAI,CAAC;AAAA,MAAO;AAAA,IAEZ,MAAM,WAAgB,WAAK,KAAK,SAAS,MAAM,IAAI;AAAA,IACnD,MAAM,SAAS,KAAK,iBAAiB,QAAQ;AAAA,IAC7C,IAAI,QAAQ;AAAA,MACV,YAAY,WAAW;AAAA,IACzB;AAAA;AAAA,EAGM,oBAAoB,CAAC,aAA2C;AAAA,IACtE,MAAM,UAAU,KAAK,aAAa;AAAA,IAClC,IAAI,CAAC;AAAA,MAAS;AAAA,IAEd,MAAM,WAAgB,WAAK,KAAK,SAAS,QAAQ,IAAI;AAAA,IACrD,MAAM,SAAS,KAAK,iBAAiB,QAAQ;AAAA,IAC7C,IAAI,QAAQ;AAAA,MACV,YAAY,aAAa;AAAA,IAC3B;AAAA;AAAA,EAGM,qBAAqB,CAAC,aAA2C;AAAA,IACvE,MAAM,WAAW,KAAK,cAAc;AAAA,IACpC,IAAI,CAAC;AAAA,MAAU;AAAA,IAEf,MAAM,WAAgB,WAAK,KAAK,SAAS,SAAS,IAAI;AAAA,IACtD,MAAM,SAAS,KAAK,iBAAiB,QAAQ;AAAA,IAC7C,IAAI,QAAQ;AAAA,MACV,YAAY,cAAc;AAAA,IAC5B;AAAA;AAAA,EAMM,eAAe,GAA+B;AAAA,IACpD,IAAI,CAAC,KAAK;AAAA,MAAc;AAAA,IAExB,MAAM,KAAK,KAAK,aAAa;AAAA,IAC7B,IAAI,CAAC;AAAA,MAAI;AAAA,IAGT,IAAI,GAAG,mBAAmB;AAAA,MACxB,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,CAAC,GAAG,iBAA2B;AAAA,MACxC;AAAA,IACF;AAAA,IAGA,IAAI,GAAG,YAAY;AAAA,MACjB,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,GAAG;AAAA,MACZ;AAAA,IACF;AAAA,IAGA,IAAI,GAAG,SAAS;AAAA,MACd,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,CAAC,GAAG,OAAiB;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA;AAAA;AAAA,EAMM,mBAAmB,GAAmC;AAAA,IAC5D,IAAI,CAAC,KAAK;AAAA,MAAc;AAAA,IAExB,MAAM,KAAK,KAAK,aAAa;AAAA,IAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,QAAQ,EAAE;AAAA,MAAG;AAAA,IAE/B,OAAO,GAAG,IAAI,CAAC,YAAqC;AAAA,MAClD,SAAU,OAAO,cAA2B,CAAC;AAAA,MAC7C,IAAK,OAAO,SAAsB,CAAC;AAAA,MACnC,KAAK,OAAO;AAAA,IACd,EAAE;AAAA;AAAA,EAMI,UAAU,GAA0B;AAAA,IAC1C,IAAI,CAAC,KAAK;AAAA,MAAc;AAAA,IAExB,MAAM,SACH,KAAK,aAAa,aAClB,KAAK,aAAa;AAAA,IACrB,IAAI,CAAC;AAAA,MAAQ;AAAA,IAEb,IAAI,OAAO,kBAAkB;AAAA,MAC3B,OAAO;AAAA,QACL,MAAM,OAAO;AAAA,QACb,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IAEA;AAAA;AAAA,EAMM,YAAY,GAA4B;AAAA,IAC9C,IAAI,CAAC,KAAK;AAAA,MAAc;AAAA,IAExB,MAAM,UAAU,KAAK,aAAa,iBAAiB,KAAK,aAAa;AAAA,IACrE,IAAI,CAAC;AAAA,MAAS;AAAA,IAEd,IAAI,OAAO,YAAY,UAAU;AAAA,MAC/B,OAAO;AAAA,QACL,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IAEA,MAAM,aAAa;AAAA,IACnB,OAAO;AAAA,MACL,MAAM,WAAW;AAAA,MACjB,WAAW,WAAW;AAAA,IACxB;AAAA;AAAA,EAMM,aAAa,GAA6B;AAAA,IAChD,IAAI,CAAC,KAAK;AAAA,MAAc;AAAA,IAExB,MAAM,WAAW,KAAK,aAAa;AAAA,IACnC,IAAI,CAAC;AAAA,MAAU;AAAA,IAEf,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA;AAAA,EAOM,cAAc,CAAC,cAA8B;AAAA,IACnD,MAAM,aAAa;AAAA,MAEZ,WAAK,KAAK,SAAS,YAAY;AAAA,MAE/B,WAAK,KAAK,SAAS,aAAa,QAAQ,SAAS,KAAK,CAAC;AAAA,MAEvD,WAAK,KAAK,SAAS,OAAO,YAAY;AAAA,MACtC,WAAK,KAAK,SAAS,OAAO,aAAa,QAAQ,SAAS,KAAK,CAAC;AAAA,MAE9D,WAAK,KAAK,SAAS,OAAO,aAAa,QAAQ,SAAS,MAAM,CAAC;AAAA,IACtE;AAAA,IAEA,WAAW,aAAa,YAAY;AAAA,MAClC,IAAO,eAAW,SAAS,GAAG;AAAA,QAC5B,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAGA,OAAY,WAAK,KAAK,SAAS,YAAY;AAAA;AAAA,EAMrC,gBAAgB,CAAC,UAAiC;AAAA,IACxD,IAAI,CAAI,eAAW,QAAQ,GAAG;AAAA,MAC5B,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,OAAU,iBAAa,UAAU,OAAO;AAAA,IAC9C,MAAM,cAAc,KAAK,MAAM,mCAAmC;AAAA,IAElE,IAAI,cAAc,IAAI;AAAA,MACpB,MAAM,aAAa,YAAY;AAAA,MAC/B,MAAM,WAAgB,cAAa,cAAQ,QAAQ,GAAG,UAAU;AAAA,MAGhE,IAAO,eAAW,QAAQ;AAAA,QAAG,OAAO;AAAA,MACpC,IAAO,eAAW,SAAS,QAAQ,SAAS,KAAK,CAAC,GAAG;AAAA,QACnD,OAAO,SAAS,QAAQ,SAAS,KAAK;AAAA,MACxC;AAAA,MACA,IAAO,eAAW,SAAS,QAAQ,SAAS,MAAM,CAAC,GAAG;AAAA,QACpD,OAAO,SAAS,QAAQ,SAAS,MAAM;AAAA,MACzC;AAAA,IACF;AAAA,IAGA,MAAM,WAAgB,eAAS,UAAU,OAAO;AAAA,IAChD,MAAM,MAAW,cAAQ,QAAQ;AAAA,IAEjC,MAAM,aAAa;AAAA,MACZ,WAAK,KAAK,GAAG,aAAa;AAAA,MAC1B,WAAK,KAAK,GAAG,cAAc;AAAA,MAC3B,WAAK,KAAK,GAAG,aAAa;AAAA,MAC1B,WAAK,KAAK,UAAU;AAAA,MACpB,WAAK,KAAK,WAAW;AAAA,MACrB,WAAK,KAAK,UAAU;AAAA,IAC3B;AAAA,IAEA,WAAW,aAAa,YAAY;AAAA,MAClC,IAAO,eAAW,SAAS,GAAG;AAAA,QAC5B,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAEX;;;ANjSO,MAAM,qBAAqB;AAAA,EACxB;AAAA,EAER,WAAW,CAAC,SAAsC;AAAA,IAChD,KAAK,UAAU;AAAA;AAAA,OAMX,QAAO,GAAkC;AAAA,IAE7C,QAAQ,UAAU,eAAe,aAAa,eAAe,MAAM,KAAK,qBAAqB;AAAA,IAG7F,MAAM,mBAAmB,IAAI,iBAAiB,KAAK,QAAQ,YAAY;AAAA,IACvE,QAAQ,aAAa,iBAAiB,gBAAgB;AAAA,IAGtD,MAAM,WAAW,KAAK,gBAAgB,aAAa,QAAQ;AAAA,IAG3D,MAAM,eAAe,IAAI,aAAa,KAAK,QAAQ,cAAc,QAAQ;AAAA,IACzE,MAAM,eAAe,aAAa,aAAa;AAAA,IAG/C,MAAM,sBAAsB,IAAI,oBAAoB,KAAK,QAAQ,YAAY;AAAA,IAC7E,MAAM,eAAe,oBAAoB,oBAAoB;AAAA,IAG7D,KAAK,8BAA8B,UAAU,YAAY;AAAA,IAGzD,MAAM,OAAO,YAAY,KAAK,QAAQ,WAAW;AAAA,IAGjD,MAAM,aAAa,KAAK,sBAAsB;AAAA,IAE9C,OAAO;AAAA,MACL,aAAa,KAAK,QAAQ;AAAA,MAC1B,QAAQ;AAAA,SACJ,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,SAC3B,gBAAgB,EAAE,cAAc,IAAI,CAAC;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,SACI,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,SACnC,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,IACrC;AAAA;AAAA,OAMY,qBAAoB,GAK/B;AAAA,IACD,MAAM,iBAAiB,IAAI,eAAe,KAAK,QAAQ,aAAa,IAAI;AAAA,IAExE,IAAI,eAAe,YAAY,KAAK,CAAC,KAAK,QAAQ,oBAAoB;AAAA,MAEpE,MAAM,WAAW,eAAe,MAAM;AAAA,MACtC,MAAM,cAAc,eAAe,sBAAsB;AAAA,MAEzD,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,YAAY;AAAA,UACV,MAAM,SAAS;AAAA,UACf,SAAS,SAAS;AAAA,aACd,SAAS,cAAc,EAAE,aAAa,SAAS,YAAY,IAAI,CAAC;AAAA,QACtE;AAAA,MACF;AAAA,IACF;AAAA,IAGA,QAAQ,8CAAwB;AAAA,IAChC,MAAM,gBAAgB,qBAAoB,KAAK,QAAQ,WAAW;AAAA,IAElE,OAAO;AAAA,MACL;AAAA,MACA,aAAa,cAAc;AAAA,MAC3B,YAAY;AAAA,QACV,MAAM,cAAc,UAAU,QAAQ;AAAA,QACtC,SAAS,cAAc,UAAU,WAAW;AAAA,WACxC,cAAc,UAAU,cACxB,EAAE,aAAa,cAAc,SAAS,YAAY,IAClD,CAAC;AAAA,MACP;AAAA,IACF;AAAA;AAAA,EAMM,eAAe,CACrB,aACA,UAC6B;AAAA,IAC7B,MAAM,kBAAkB,IAAI,gBAAgB,KAAK,QAAQ,YAAY;AAAA,IACrE,MAAM,WAAwC,CAAC;AAAA,IAE/C,YAAY,aAAa,eAAe,OAAO,QAAQ,WAAW,GAAG;AAAA,MACnE,IAAI;AAAA,QACF,MAAM,cAAc,gBAAgB,eAAe,aAAa,YAAY,QAAQ;AAAA,QACpF,SAAS,eAAe;AAAA,QACxB,OAAO,QAAO;AAAA,QAEd,IAAI,QAAQ,IAAI,gBAAgB;AAAA,UAC9B,QAAQ,IAAI,qCAAqC,gBAAgB,QAAO;AAAA,QAC1E;AAAA;AAAA,IAEJ;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,6BAA6B,CACnC,UACA,cACM;AAAA,IACN,WAAW,eAAe,cAAc;AAAA,MACtC,IAAI,YAAY,OAAO;AAAA,QACrB,WAAW,QAAQ,YAAY,OAAO;AAAA,UAEpC,YAAY,aAAa,gBAAgB,OAAO,QAAQ,QAAQ,GAAG;AAAA,YACjE,IAAI,KAAK,SAAS,KAAK,SAAS,IAAI,cAAc,GAAG;AAAA,cACnD,YAAY,aAAa,KAAK,IAAI;AAAA,cAClC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAMM,qBAAqB,GAAuC;AAAA,IAClE,MAAM,kBAAuB,WAAK,KAAK,QAAQ,aAAa,cAAc;AAAA,IAE1E,IAAI,CAAI,eAAW,eAAe,GAAG;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,UAAa,iBAAa,iBAAiB,OAAO;AAAA,MACxD,MAAM,cAAc,KAAK,MAAM,OAAO;AAAA,MAEtC,IAAI,YAAY,YAAY;AAAA,QAC1B,IAAI,OAAO,YAAY,eAAe,UAAU;AAAA,UAC9C,OAAO;AAAA,YACL,KAAK,YAAY;AAAA,YACjB,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QAEA,OAAO;AAAA,UACL,KAAK,YAAY,WAAW,OAAO,YAAY;AAAA,UAC/C,MAAM,YAAY,WAAW,QAAQ;AAAA,QACvC;AAAA,MACF;AAAA,MACA,OAAO,QAAO;AAAA,MAEd,IAAI,QAAQ,IAAI,gBAAgB;AAAA,QAC9B,QAAQ,IAAI,gEAAgE,QAAO;AAAA,MACrF;AAAA;AAAA,IAGF;AAAA;AAEJ;AAKA,eAAsB,mBAAmB,CACvC,SAC+B;AAAA,EAC/B,MAAM,WAAW,IAAI,qBAAqB,OAAO;AAAA,EACjD,OAAO,SAAS,QAAQ;AAAA;;;AOrN1B;;;ACPA,oBAAS;AAIF,MAAM,cAAc;AAAA,EACjB;AAAA,EAER,WAAW,CAAC,cAAsB;AAAA,IAChC,KAAK,UAAU,IAAI,SAAQ;AAAA,MACzB,kBAAkB;AAAA,IACpB,CAAC;AAAA;AAAA,OAMG,gBAAe,CAAC,eAAmD;AAAA,IAEvE,MAAM,YAAY,gBAAgB,KAAK,iBAAiB,aAAa,IAAI,KAAK,cAAc;AAAA,IAG5F,MAAM,eAAe,KAAK,iBAAiB;AAAA,IAG3C,MAAM,SAAS,YAAY,KAAK,cAAc,SAAS,IAAI,CAAC;AAAA,IAG5D,MAAM,kBAAkB,KAAK,uBAAuB;AAAA,IAGpD,MAAM,oBAAoB,KAAK,yBAC7B,cACA,gBAAgB,YAClB;AAAA,IACA,MAAM,gBAAgB,KAAK,qBAAqB,gBAAgB,QAAQ;AAAA,IAIxE,MAAM,mBAAqC,cAAc,IAAI,CAAC,OAAY;AAAA,MACxE,aAAa,EAAE;AAAA,MACf,MAAM,EAAE,QAAQ;AAAA,MAChB,aAAa,EAAE,eAAe,CAAC;AAAA,MAC/B,eAAe,EAAE,iBAAiB,CAAC;AAAA,MACnC,gBAAgB,EAAE,kBAAkB,CAAC;AAAA,MACrC,UAAU,EAAE;AAAA,MACZ,eAAe,EAAE;AAAA,IACnB,EAAE;AAAA,IAEF,OAAO;AAAA,MACL;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA,UAAU;AAAA,MACV,kBAAkB,gBAAgB;AAAA,IACpC;AAAA;AAAA,EAMM,sBAAsB,GAAG;AAAA,IAC/B,MAAM,iBAAiB,KAAK,QAAQ,mBAAmB,EAAE;AAAA,IACzD,MAAM,eAAe,OAAO,mBAAmB,WAAW,iBAAiB;AAAA,IAC3E,MAAM,mBAAmB,IAAI,iBAAiB,YAAY;AAAA,IAC1D,OAAO,iBAAiB,gBAAgB;AAAA;AAAA,EAMlC,wBAAwB,CAC9B,cACA,qBACU;AAAA,IACV,MAAM,kBAAkB,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,cAAc,GAAG,mBAAmB,CAAC,CAAC;AAAA,IACrF,MAAM,oBAA8B,CAAC;AAAA,IACrC,MAAM,sBAAgC,CAAC;AAAA,IAEvC,WAAW,WAAW,iBAAiB;AAAA,MACrC,IAAI,KAAK,qBAAqB,OAAO,GAAG;AAAA,QACtC,kBAAkB,KAAK,OAAO;AAAA,MAChC,EAAO;AAAA,QACL,oBAAoB,KAAK,OAAO;AAAA;AAAA,IAEpC;AAAA,IAEA,KAAK,uBAAuB,mBAAmB;AAAA,IAC/C,OAAO;AAAA;AAAA,EAMD,sBAAsB,CAAC,qBAAqC;AAAA,IAClE,IAAI,oBAAoB,WAAW,KAAK,CAAC,QAAQ,IAAI;AAAA,MAAgB;AAAA,IAErE,QAAQ,IAAI,uBAAuB,oBAAoB,iCAAiC;AAAA,IACxF,WAAW,WAAW,qBAAqB;AAAA,MACzC,QAAQ,IAAI,eAAe,wCAAwC;AAAA,IACrE;AAAA;AAAA,EAMM,oBAAoB,CAC1B,UACA;AAAA,IACA,MAAM,gBAAgB,SAAS,OAAO,CAAC,MAAM,KAAK,qBAAqB,EAAE,WAAW,CAAC;AAAA,IAErF,KAAK,mBAAmB,UAAU,aAAa;AAAA,IAC/C,OAAO;AAAA;AAAA,EAMD,kBAAkB,CACxB,aACA,eACM;AAAA,IACN,MAAM,uBAAuB,YAAY,SAAS,cAAc;AAAA,IAChE,IAAI,yBAAyB,KAAK,CAAC,QAAQ,IAAI;AAAA,MAAgB;AAAA,IAE/D,QAAQ,IACN,uBAAuB,6DACzB;AAAA,IACA,WAAW,WAAW,aAAa;AAAA,MACjC,IAAI,CAAC,KAAK,qBAAqB,QAAQ,WAAW,GAAG;AAAA,QACnD,QAAQ,IACN,2BAA2B,QAAQ,mBAAmB,QAAQ,SAAS,QAAQ,QAAQ,SAAS,MAClG;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAUM,oBAAoB,CAAC,GAAoB;AAAA,IAC/C,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,0BAA0B,KAAK,CAAC;AAAA;AAAA,EAMjC,gBAAgB,CAAC,UAAmC;AAAA,IAC1D,MAAM,aAAa,KAAK,QAAQ,cAAc,QAAQ;AAAA,IACtD,IAAI,CAAC,YAAY;AAAA,MACf,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,YACJ,WAAW,aAAa,UAAU,KAClC,WAAW,aAAa,OAAO,KAC/B,WAAW,eAAe,EAAE;AAAA,IAE9B,IAAI,CAAC,WAAW;AAAA,MACd,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,OAAO,UAAU,QAAQ;AAAA,IAC/B,OAAO,KAAK,YAAY,MAAM,UAAU,QAAQ,CAAC;AAAA;AAAA,EAM3C,aAAa,GAAoB;AAAA,IAEvC,MAAM,aAAa,KAAK,QAAQ,eAAe,cAAc;AAAA,IAE7D,WAAW,QAAQ,YAAY;AAAA,MAC7B,MAAM,YAAY,KAAK,aAAa,UAAU,KAAK,KAAK,aAAa,OAAO;AAAA,MAE5E,IAAI,WAAW;AAAA,QACb,MAAM,OAAO,UAAU,QAAQ;AAAA,QAC/B,OAAO,KAAK,YAAY,MAAM,UAAU,QAAQ,CAAC;AAAA,MACnD;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAaD,gBAAgB,GAAa;AAAA,IACnC,MAAM,eAAyB,CAAC;AAAA,IAChC,MAAM,WAAqB,CAAC;AAAA,IAG5B,MAAM,eAAe,KAAK,QAAQ,eAAe,gBAAgB;AAAA,IAEjE,WAAW,QAAQ,cAAc;AAAA,MAE/B,WAAW,aAAa,KAAK,eAAe,GAAG;AAAA,QAC7C,MAAM,iBAAiB,KAAK,4BAC1B,UAAU,QAAQ,GAClB,UAAU,QAAQ,GAClB,MACA,QACF;AAAA,QACA,aAAa,KAAK,GAAG,cAAc;AAAA,MACrC;AAAA,IACF;AAAA,IAGA,IAAI,SAAS,SAAS,KAAK,QAAQ,IAAI,gBAAgB;AAAA,MACrD,QAAQ,IAAI,0CAA0C;AAAA,MACtD,WAAW,WAAW,UAAU;AAAA,QAC9B,QAAQ,IAAI,YAAY,SAAS;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,OAAO,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC;AAAA;AAAA,EAO1B,2BAA2B,CACjC,MACA,UACA,YACA,UACU;AAAA,IACV,IAAI,KAAK,QAAQ,GAAG;AAAA,MAClB,OAAO,KAAK,qBAAqB,MAAM,UAAU,YAAY,QAAQ;AAAA,IACvE;AAAA,IAEA,IAAI,KAAK,eAAe,GAAG;AAAA,MACzB,OAAO,KAAK,qBAAqB,MAAM,UAAU,YAAY,QAAQ;AAAA,IACvE;AAAA,IAGA,IAEE,OAAQ,KAAa,sBAAsB,cAE1C,KAAa,kBAAkB,GAChC;AAAA,MACA,OAAO,KAAK,2BAA2B,MAAM,QAAQ;AAAA,IACvD;AAAA,IAEA,IAAI,KAAK,QAAQ,EAAE,SAAS,QAAQ,GAAG;AAAA,MACrC,OAAO,KAAK,sBAAsB,MAAM,YAAY,QAAQ;AAAA,IAC9D;AAAA,IAEA,IAAI,KAAK,QAAQ,EAAE,SAAS,GAAG,GAAG;AAAA,MAChC,KAAK,oBAAoB,MAAM,QAAQ;AAAA,MACvC,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,OAAO,CAAC;AAAA;AAAA,EAMF,oBAAoB,CAC1B,MACA,UACA,YACA,UACU;AAAA,IACV,MAAM,eAAyB,CAAC;AAAA,IAChC,MAAM,aAAa,KAAK,cAAc;AAAA,IAEtC,WAAW,aAAa,YAAY;AAAA,MAClC,MAAM,YAAY,KAAK,uBAAuB,WAAW,UAAU,YAAY,QAAQ;AAAA,MACvF,aAAa,KAAK,GAAG,SAAS;AAAA,IAChC;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,sBAAsB,CAC5B,WACA,UACA,YACA,UACU;AAAA,IACV,IAAI,UAAU,SAAS,GAAG;AAAA,MACxB,OAAO,KAAK,8BAA8B,WAAW,YAAY,QAAQ;AAAA,IAC3E;AAAA,IAEA,IAAI,UAAU,gBAAgB,GAAG;AAAA,MAC/B,OAAO,CAAC,UAAU,gBAAgB,CAAW;AAAA,IAC/C;AAAA,IAEA,IAAI,UAAU,eAAe,GAAG;AAAA,MAC9B,MAAM,cAAc,UAAU,eAAe,GAAG,gBAAgB;AAAA,MAChE,IAAI,aAAa;AAAA,QACf,OAAO,KAAK,4BAA4B,aAAa,UAAU,YAAY,QAAQ;AAAA,MACrF;AAAA,IACF;AAAA,IAEA,OAAO,CAAC;AAAA;AAAA,EAMF,6BAA6B,CACnC,WACA,YACA,UACU;AAAA,IACV,MAAM,eAAe,UAAU,YAAY,MAAM;AAAA,IACjD,IAAI,CAAC,cAAc;AAAA,MACjB,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,MAAM,WAAW,aAAa,kBAAkB,UAAU;AAAA,IAE1D,IAAI,SAAS,gBAAgB,GAAG;AAAA,MAC9B,OAAO,CAAC,SAAS,gBAAgB,CAAW;AAAA,IAC9C;AAAA,IAEA,IAAI,SAAS,QAAQ,EAAE,SAAS,GAAG,GAAG;AAAA,MACpC,SAAS,KACP,0CAA0C,SAAS,QAAQ,sBAC7D;AAAA,IACF;AAAA,IAEA,OAAO,CAAC;AAAA;AAAA,EAMF,oBAAoB,CAC1B,MACA,UACA,YACA,UACU;AAAA,IACV,MAAM,cAAc,KAAK,eAAe,GAAG,gBAAgB;AAAA,IAC3D,IAAI,CAAC,eAAe,gBAAgB,MAAM;AAAA,MACxC,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,OAAO,KAAK,4BAA4B,aAAa,UAAU,YAAY,QAAQ;AAAA;AAAA,EAM7E,0BAA0B,CAAC,MAAY,UAA8B;AAAA,IAC3E,SAAS,KAAK,8BAA8B,KAAK,QAAQ,+BAA+B;AAAA,IAExF,MAAM,eAAyB,CAAC;AAAA,IAChC,MAAM,WAAW,KAAK,QAAQ;AAAA,IAC9B,MAAM,QAAQ,SAAS,MAAM,GAAG;AAAA,IAEhC,IAAI,MAAM,SAAS,GAAG;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,aAAa,MAAM;AAAA,IACzB,IAAI,CAAC;AAAA,MAAY,OAAO;AAAA,IAExB,MAAM,WAAW,WAAW,MAAM,GAAG;AAAA,IACrC,WAAW,UAAU,UAAU;AAAA,MAC7B,MAAM,YAAY,KAAK,+BAA+B,MAAM;AAAA,MAC5D,IAAI,WAAW;AAAA,QACb,aAAa,KAAK,SAAS;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,8BAA8B,CAAC,QAA+B;AAAA,IACpE,MAAM,UAAU,OAAO,KAAK;AAAA,IAC5B,MAAM,QAAQ,QAAQ,MAAM,iBAAiB;AAAA,IAC7C,OAAO,QAAQ,MAAM;AAAA;AAAA,EAMf,qBAAqB,CAAC,MAAY,YAAwB,UAA8B;AAAA,IAC9F,SAAS,KAAK,yBAAyB,KAAK,QAAQ,gCAAgC;AAAA,IAEpF,MAAM,QAAQ,KAAK,QAAQ,EAAE,MAAM,mBAAmB;AAAA,IACtD,IAAI,CAAC,QAAQ,IAAI;AAAA,MACf,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,MAAM,cAAc,MAAM,GAAG,KAAK;AAAA,IAClC,MAAM,eAAe,WAAW,eAAe,WAAW;AAAA,IAE1D,IAAI,CAAC,cAAc;AAAA,MACjB,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,MAAM,UAAU,aAAa,QAAQ;AAAA,IACrC,OAAO,KAAK,4BAA4B,SAAS,aAAa,YAAY,QAAQ;AAAA;AAAA,EAM5E,mBAAmB,CAAC,MAAY,UAA0B;AAAA,IAChE,SAAS,KACP,0BAA0B,KAAK,QAAQ,iEACzC;AAAA;AAAA,EAMM,WAAW,CAAC,MAAY,MAAwB;AAAA,IACtD,MAAM,WAAW,KAAK,WAAW;AAAA,IAEjC,IAAI,KAAK,UAAU,KAAK,KAAK,iBAAiB,GAAG;AAAA,MAC/C,OAAO,EAAE,MAAM,MAAM,WAAW,SAAS;AAAA,IAC3C;AAAA,IAEA,IAAI,KAAK,QAAQ,GAAG;AAAA,MAClB,OAAO,KAAK,iBAAiB,MAAM,MAAM,QAAQ;AAAA,IACnD;AAAA,IAEA,IAAI,KAAK,SAAS,KAAK,KAAK,gBAAgB,GAAG;AAAA,MAC7C,OAAO,EAAE,MAAM,MAAM,UAAU,SAAS;AAAA,IAC1C;AAAA,IAEA,IAAI,KAAK,SAAS,KAAK,KAAK,gBAAgB,GAAG;AAAA,MAC7C,OAAO,EAAE,MAAM,MAAM,UAAU,SAAS;AAAA,IAC1C;AAAA,IAEA,IAAI,KAAK,QAAQ,GAAG;AAAA,MAClB,OAAO,KAAK,iBAAiB,MAAM,MAAM,QAAQ;AAAA,IACnD;AAAA,IAEA,MAAM,iBAAiB,KAAK,yBAAyB,MAAM,MAAM,QAAQ;AAAA,IACzE,IAAI,gBAAgB;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,KAAK,SAAS,GAAG;AAAA,MACnB,OAAO,KAAK,kBAAkB,MAAM,MAAM,QAAQ;AAAA,IACpD;AAAA,IAEA,IAAI,KAAK,OAAO,GAAG;AAAA,MACjB,OAAO,EAAE,MAAM,MAAM,QAAQ,UAAU,KAAK;AAAA,IAC9C;AAAA,IAEA,OAAO,EAAE,MAAM,MAAM,WAAW,SAAS;AAAA;AAAA,EAMnC,gBAAgB,CAAC,MAAY,MAAc,UAA6B;AAAA,IAC9E,MAAM,aAAa,KAAK,cAAc;AAAA,IAGtC,MAAM,oBAAoB,WAAW,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAAA,IACrE,IAAI,mBAAmB;AAAA,MACrB,MAAM,aAAa,WAAW,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAW;AAAA,MACtE,OAAO,EAAE,MAAM,MAAM,QAAQ,UAAU,WAAW;AAAA,IACpD;AAAA,IAGA,MAAM,eAAe,WAAW,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,YAAY,CAAC;AAAA,IAE7E,IAAI,aAAa,WAAW,GAAG;AAAA,MAC7B,MAAM,YAAY,aAAa;AAAA,MAC/B,IAAI,WAAW;AAAA,QACb,MAAM,WAAW,KAAK,YAAY,WAAW,IAAI;AAAA,QACjD,OAAO,KAAK,UAAU,UAAU,KAAK;AAAA,MACvC;AAAA,IACF;AAAA,IAGA,OAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA,YAAY,WAAW,IAAI,CAAC,GAAG,MAAM,KAAK,YAAY,GAAG,GAAG,QAAQ,GAAG,CAAC;AAAA,IAC1E;AAAA;AAAA,EAMM,gBAAgB,CAAC,MAAY,MAAc,UAA6B;AAAA,IAC9E,MAAM,cAAc,KAAK,oBAAoB;AAAA,IAC7C,OAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA,aAAa,cACT,KAAK,YAAY,aAAa,GAAG,cAAc,IAC/C,EAAE,MAAM,WAAW,MAAM,WAAW,UAAU,MAAM;AAAA,IAC1D;AAAA;AAAA,EAMM,wBAAwB,CAAC,MAAY,MAAc,UAAoC;AAAA,IAC7F,MAAM,SAAS,KAAK,UAAU;AAAA,IAC9B,IAAI,CAAC;AAAA,MAAQ,OAAO;AAAA,IAEpB,MAAM,aAAa,OAAO,QAAQ;AAAA,IAElC,IAAI,eAAe,OAAO;AAAA,MACxB,MAAM,WAAW,KAAK,iBAAiB;AAAA,MACvC,OAAO;AAAA,QACL;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW,WAAW,KAAK,KAAK,YAAY,SAAS,IAAI,GAAG,YAAY,IAAI;AAAA,MAC9E;AAAA,IACF;AAAA,IAEA,IAAI,eAAe,OAAO;AAAA,MACxB,MAAM,WAAW,KAAK,iBAAiB;AAAA,MACvC,OAAO;AAAA,QACL;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,aAAa,WAAW,KAAK,KAAK,YAAY,SAAS,IAAI,GAAG,cAAc,IAAI;AAAA,MAClF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,iBAAiB,CAAC,MAAY,MAAc,UAA6B;AAAA,IAC/E,MAAM,aAAuC,CAAC;AAAA,IAC9C,MAAM,aAAa,KAAK,QAAQ,eAAe,EAAE;AAAA,IAEjD,IAAI,YAAY;AAAA,MACd,WAAW,QAAQ,KAAK,cAAc,GAAG;AAAA,QACvC,MAAM,WAAW,KAAK,QAAQ;AAAA,QAC9B,MAAM,WAAW,KAAK,kBAAkB,UAAU;AAAA,QAClD,WAAW,YAAY,KAAK,YAAY,UAAU,QAAQ;AAAA,MAC5D;AAAA,IACF;AAAA,IAEA,OAAO,EAAE,MAAM,MAAM,UAAU,UAAU,WAAW;AAAA;AAAA,EAM9C,aAAa,CAAC,WAAqB,SAAS,IAAqB;AAAA,IACvE,MAAM,SAA0B,CAAC;AAAA,IAEjC,IAAI,UAAU,SAAS,YAAY,UAAU,YAAY;AAAA,MACvD,YAAY,KAAK,aAAa,OAAO,QAAQ,UAAU,UAAU,GAAG;AAAA,QAClE,MAAM,QAAO,SAAS,GAAG,UAAU,QAAQ;AAAA,QAG3C,IAAI,SAAS,SAAS,UAAU;AAAA,UAE9B,OAAO,KAAK,GAAG,KAAK,cAAc,UAAU,KAAI,CAAC;AAAA,QACnD,EAAO;AAAA,UAEL,MAAM,WAAW,KAAK,aAAa,OAAM,QAAQ;AAAA,UACjD,OAAO,KAAK,QAAQ;AAAA;AAAA,MAExB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,YAAY,CAAC,OAAc,MAA+B;AAAA,IAChE,MAAM,WAA0B;AAAA,MAC9B;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,MACX,aAAa,CAAC;AAAA,MACd,QAAQ,CAAC;AAAA,IACX;AAAA,IAEA,IAAI,KAAK,SAAS;AAAA,MAAW,OAAO,KAAK,oBAAoB,QAAQ;AAAA,IACrE,IAAI,KAAK,SAAS;AAAA,MAAQ,OAAO,KAAK,iBAAiB,UAAU,IAAI;AAAA,IACrE,IAAI,KAAK,SAAS;AAAA,MAAS,OAAO,KAAK,kBAAkB,QAAQ;AAAA,IACjE,IAAI,KAAK,SAAS;AAAA,MAAU,OAAO,KAAK,mBAAmB,QAAQ;AAAA,IACnE,IAAI,KAAK,SAAS;AAAA,MAAU,OAAO,KAAK,mBAAmB,QAAQ;AAAA,IACnE,IAAI,KAAK,SAAS,SAAS,KAAK,SAAS;AAAA,MAAO,OAAO,KAAK,mBAAmB,QAAQ;AAAA,IAEvF,OAAO;AAAA;AAAA,EAGD,mBAAmB,CAAC,UAAwC;AAAA,IAClE,SAAS,aAAa;AAAA,IACtB,SAAS,SAAS,KAAK,gCAAgC;AAAA,IACvD,OAAO;AAAA;AAAA,EAGD,gBAAgB,CAAC,UAAyB,MAA+B;AAAA,IAC/E,IAAI,KAAK,YAAY;AAAA,MACnB,SAAS,aAAa;AAAA,MACtB,SAAS,SAAS,KAAK,aAAa,KAAK,WAAW,eAAe;AAAA,MACnE,IAAI,SAAS,QAAQ;AAAA,QACnB,SAAS,OAAO,SAAS,KAAK;AAAA,MAChC;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAGD,iBAAiB,CAAC,UAAwC;AAAA,IAChE,SAAS,aAAa;AAAA,IACtB,SAAS,YAAY,KAAK,6DAA6D;AAAA,IACvF,IAAI,SAAS,QAAQ;AAAA,MACnB,SAAS,OAAO,YAAY;AAAA,IAC9B;AAAA,IAEA,MAAM,aAAa,KAAK,eAAe;AAAA,IACvC,IAAI,cAAc,SAAS,QAAQ;AAAA,MACjC,SAAS,aAAa;AAAA,MACtB,SAAS,SAAS,KAAK,sBAAsB,WAAW,UAAU;AAAA,MAClE,SAAS,OAAO,YAAY,WAAW;AAAA,IACzC;AAAA,IAEA,OAAO;AAAA;AAAA,EAGD,kBAAkB,CAAC,UAAwC;AAAA,IACjE,SAAS,aAAa;AAAA,IACtB,SAAS,YAAY,KAAK,4DAA4D;AAAA,IACtF,IAAI,SAAS,QAAQ;AAAA,MACnB,SAAS,OAAO,MAAM;AAAA,MACtB,SAAS,OAAO,MAAM;AAAA,IACxB;AAAA,IAEA,MAAM,aAAa,KAAK,gBAAgB;AAAA,IACxC,IAAI,cAAc,SAAS,QAAQ;AAAA,MACjC,SAAS,aAAa;AAAA,MACtB,SAAS,SAAS,KAAK,qBAAqB,WAAW,UAAU;AAAA,MACjE,SAAS,SAAS,KAAK,SAAS,WAAW,WAAW,OAAO;AAAA,IAC/D;AAAA,IAEA,OAAO;AAAA;AAAA,EAGD,kBAAkB,CAAC,UAAwC;AAAA,IACjE,SAAS,aAAa;AAAA,IACtB,SAAS,YAAY,KACnB,8DACA,qDACF;AAAA,IACA,IAAI,SAAS,QAAQ;AAAA,MACnB,SAAS,OAAO,SAAS;AAAA,IAC3B;AAAA,IACA,OAAO;AAAA;AAAA,EAGD,kBAAkB,CAAC,UAAwC;AAAA,IACjE,SAAS,aAAa;AAAA,IACtB,SAAS,YAAY,KAAK,oCAAoC;AAAA,IAC9D,IAAI,SAAS,QAAQ;AAAA,MACnB,SAAS,OAAO,UAAU;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA;AAAA,EAMD,cAAc,GAA+C;AAAA,IAKnE,OAAO;AAAA;AAAA,EAMD,eAAe,GAAwE;AAAA,IAK7F,OAAO;AAAA;AAEX;AAEA,eAAsB,eAAe,CAAC,SAGR;AAAA,EAC5B,MAAM,YAAY,IAAI,cAAc,QAAQ,YAAY;AAAA,EACxD,OAAO,UAAU,gBAAgB,QAAQ,aAAa;AAAA;;AC7djD,IAAM,iBAAiB;AAAA,EAE5B,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,kBAAkB;AAAA,EAGlB,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,gBAAgB;AAAA,EAGhB,WAAW;AAAA,EACX,YAAY;AAAA,EAGZ,WAAW;AAAA,EACX,UAAU;AAAA,EAGV,cAAc;AAChB;AAKO,IAAM,yBAAuD;AAAA,EAClE,mBAAmB;AAAA,IACjB,OAAO;AAAA,IACP,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,IACtB,UAAU;AAAA,EACZ;AAAA,EACA,OAAO;AAAA,IACL,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,EACxB;AAAA,EACA,SAAS;AAAA,IACP,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,EACxB;AAAA,EACA,gBAAgB;AAAA,IACd,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,EACxB;AAAA,EACA,WAAW;AAAA,IACT,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,EACxB;AAAA,EACA,SAAS;AAAA,IACP,OAAO;AAAA,IACP,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,IACV,OAAO;AAAA,IACP,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,EACxB;AAAA,EACA,UAAU;AAAA,IACR,OAAO;AAAA,IACP,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,EACxB;AAAA,EACA,mBAAmB;AAAA,IACjB,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,EACxB;AAAA,EACA,WAAW;AAAA,IACT,YAAY,eAAe;AAAA,IAC3B,OAAO,eAAe;AAAA,EACxB;AACF;AAKO,IAAM,8BAAiE;AAAA,EAC5E,cAAc;AAAA,IACZ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO,eAAe;AAAA,IACtB,UAAU;AAAA,EACZ;AAAA,EACA,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,WAAW;AAAA,EACb;AAAA,EACA,OAAO;AAAA,IACL,OAAO;AAAA,IACP,WAAW;AAAA,EACb;AAAA,EACA,UAAU;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO,eAAe;AAAA,EACxB;AACF;AAKO,IAAM,gBAAgB;;;ACvUtB,MAAM,wBAAwB;AAAA,EAC3B;AAAA,EACA;AAAA,EAER,WAAW,CAAC,UAAgC,UAAiC,CAAC,GAAG;AAAA,IAC/E,KAAK,WAAW;AAAA,IAChB,KAAK,UAAU;AAAA,MACb,wBAAwB;AAAA,MACxB,0BAA0B;AAAA,MAC1B,0BAA0B,CAAC,YAAY;AAAA,MACvC,sBAAsB;AAAA,MACtB,eAAe,CAAC;AAAA,MAChB,YAAY,CAAC;AAAA,MACb,QAAQ,CAAC;AAAA,MACT,iBAAiB,CAAC;AAAA,MAClB,cAAc,CAAC;AAAA,MACf,iBAAiB,CAAC;AAAA,SACf;AAAA,MACH,QAAQ;AAAA,QACN,OAAO,QAAQ,QAAQ,SAAS;AAAA,QAChC,UAAU;AAAA,aACL;AAAA,aACA,QAAQ,QAAQ;AAAA,QACrB;AAAA,QACA,eAAe;AAAA,aACV;AAAA,aACA,QAAQ,QAAQ;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAMF,QAAQ,GAAW;AAAA,IACjB,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KAAK,KAAK,wBAAwB,CAAC;AAAA,IACzC,MAAM,KAAK,KAAK,cAAc,CAAC;AAAA,IAC/B,MAAM,KAAK,KAAK,cAAc,CAAC;AAAA,IAC/B,MAAM,KAAK,KAAK,wBAAwB,CAAC;AAAA,IAEzC,OAAO,MAAM,KAAK;AAAA;AAAA,CAAM;AAAA;AAAA,EAMlB,uBAAuB,GAAW;AAAA,IACxC,QAAQ,MAAM,gBAAgB,KAAK,SAAS;AAAA,IAE5C,MAAM,QAAQ,CAAC,cAAc,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,eAAe,EAAE,MAAM;AAAA,IACvF,MAAM,KAAK,EAAE;AAAA,IACb,MAAM,KAAK,6BAA6B;AAAA,IAGxC,IAAI,KAAK,SAAS,QAAQ,KAAK,SAAS,KAAK,KAAK,SAAS,GAAG;AAAA,MAC5D,MAAM,KAAK,WAAW,KAAK,SAAS,KAAK,WAAW;AAAA,IACtD;AAAA,IAEA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,uBAAuB,GAAW;AAAA,IACxC,OAAO;AAAA;AAAA,EAMD,aAAa,GAAW;AAAA,IAC9B,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KAAK,WAAW;AAAA,IACtB,MAAM,KAAK,KAAK,eAAe,CAAC;AAAA,IAChC,MAAM,KAAK,KAAK,wBAAwB,CAAC;AAAA,IACzC,MAAM,KAAK,KAAK,mBAAmB,CAAC;AAAA,IAGpC,IAAI,KAAK,QAAQ,mBAAmB,KAAK,QAAQ,gBAAgB,SAAS,GAAG;AAAA,MAC3E,MAAM,KAAK,KAAK,+BAA+B,CAAC;AAAA,IAClD;AAAA,IAEA,MAAM,KAAK,KAAK;AAAA,IAEhB,OAAO,MAAM,KAAK;AAAA;AAAA,CAAM;AAAA;AAAA,EAMlB,cAAc,GAAW;AAAA,IAC/B,OAAO;AAAA;AAAA,EAMD,uBAAuB,GAAW;AAAA,IACxC,MAAM,QAAkB,CAAC;AAAA,IAEzB,WAAW,eAAe,KAAK,SAAS,cAAc;AAAA,MACpD,IAAI,YAAY,SAAS,SAAS,YAAY,SAAS,aAAa;AAAA,QAClE,IAAI,OAAO,YAAY,eAAe;AAAA,QAGtC,IAAI,CAAC,QAAQ,YAAY,SAAS,YAAY,MAAM,SAAS,GAAG;AAAA,UAC9D,MAAM,YAAY,YAAY,MAC3B,MAAM,GAAG,CAAC,EACV,IAAI,CAAC,MAAM,EAAE,QAAQ,EACrB,KAAK,IAAI;AAAA,UACZ,MAAM,UAAU,CAAC,GAAG,IAAI,IAAI,YAAY,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI;AAAA,UAC9E,OAAO,gCAAgC,uBAAuB;AAAA,QAChE;AAAA,QAEA,MAAM,KACJ,OAAO,KAAK,KAAK,YAAY,IAAI,uBAAuB,KAAK,OAAO,YAAY,IAAI,OAAO,KAAK,OAAO,IAAI,MAC7G;AAAA,QACA,MAAM,KACJ,iCAAiC,YAAY,SAAS,cAAc,cAAc,aACpF;AAAA,QACA,MAAM,KAAK,OAAO;AAAA,MACpB;AAAA,IACF;AAAA,IAEA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,kBAAkB,GAAW;AAAA,IACnC,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KAAK,mCAAmC,KAAK,OAAO,KAAK,SAAS,OAAO,IAAI,MAAM;AAAA,IAGzF,YAAY,aAAa,gBAAgB,OAAO,QAAQ,KAAK,SAAS,QAAQ,GAAG;AAAA,MAC/E,MAAM,KAAK,KAAK,kBAAkB,aAAa,WAAW,CAAC;AAAA,IAC7D;AAAA,IAGA,MAAM,KAAK,KAAK,+BAA+B,CAAC;AAAA,IAEhD,MAAM,KAAK,OAAO;AAAA,IAElB,OAAO,MAAM,KAAK;AAAA;AAAA,CAAM;AAAA;AAAA,EAMlB,iBAAiB,CAAC,aAAqB,aAAkC;AAAA,IAC/E,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,aAAa,KAAK,qBAAqB,WAAW;AAAA,IACxD,MAAM,cAAc,YAAY,eAAe,GAAG,KAAK,WAAW,WAAW;AAAA,IAE7E,MAAM,KACJ,SAAS,4BAA4B,KAAK,WAAW,WAAW,OAAO,KAAK,OAAO,WAAW,OAAO,eACvG;AAAA,IAGA,IACE,KAAK,QAAQ,4BACb,KAAK,QAAQ,0BAA0B,SAAS,WAAW,GAC3D;AAAA,MACA,MAAM,KAAK,KAAK,mBAAmB,aAAa,WAAW,CAAC;AAAA,MAC5D,MAAM,KAAK,EAAE;AAAA,MACb,MAAM,KAAK,KAAK,+BAA+B,aAAa,WAAW,CAAC;AAAA,IAC1E;AAAA,IAEA,MAAM,KAAK,SAAS;AAAA,IAEpB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,kBAAkB,CAAC,aAAqB,aAAkC;AAAA,IAChF,MAAM,QAAkB,CAAC;AAAA,IAGzB,MAAM,gBAAgB,KAAK,sCAAsC,aAAa,WAAW;AAAA,IAGzF,KAAK,6BAA6B,OAAO,aAAa;AAAA,IAGtD,MAAM,oBAAoB,KAAK,yBAAyB,aAAa,aAAa;AAAA,IAClF,KAAK,qBAAqB,OAAO,iBAAiB;AAAA,IAGlD,KAAK,gBAAgB,OAAO,WAAW;AAAA,IAGvC,KAAK,uBAAuB,OAAO,WAAW;AAAA,IAE9C,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,qCAAqC,CAC3C,aACA,aAQC;AAAA,IACD,MAAM,gBAOD,CAAC;AAAA,IAEN,MAAM,iBAAiB,IAAI;AAAA,IAC3B,WAAW,WAAW,YAAY,UAAU;AAAA,MAC1C,IAAI,CAAC,eAAe,IAAI,QAAQ,WAAW,GAAG;AAAA,QAC5C,eAAe,IAAI,QAAQ,aAAa,CAAC,CAAC;AAAA,MAC5C;AAAA,MACA,eAAe,IAAI,QAAQ,WAAW,GAAG,KAAK,OAAO;AAAA,IACvD;AAAA,IAEA,YAAY,aAAa,cAAa,gBAAgB;AAAA,MACpD,MAAM,gBAAgB,KAAK,gBAAgB,WAAW;AAAA,MACtD,MAAM,eAAe,UAAS;AAAA,MAC9B,IAAI,CAAC;AAAA,QAAc;AAAA,MAEnB,MAAM,cAAc,KAAK,6BAA6B,aAAa,YAAY;AAAA,MAC/E,MAAM,OAAO,KAAK,iBAAiB,aAAa,YAAY;AAAA,MAC5D,MAAM,aAAa,KAAK,uBAAuB,aAAa,cAAc,WAAW;AAAA,MAErF,cAAc,KAAK;AAAA,QACjB,IAAI,KAAK,KAAK,aAAa;AAAA,QAC3B,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,4BAA4B,CAClC,OACA,eAQM;AAAA,IACN,IAAI,KAAK,QAAQ,UAAU,KAAK,QAAQ,OAAO,SAAS,GAAG;AAAA,MACzD,MAAM,KAAK,GAAG,KAAK,0BAA0B,eAAe,KAAK,QAAQ,MAAM,CAAC;AAAA,IAClF,EAAO;AAAA,MACL,MAAM,aAAa,KAAK,wBAAwB,aAAa;AAAA,MAC7D,IAAI,WAAW,SAAS,GAAG;AAAA,QACzB,MAAM,KAAK,GAAG,KAAK,0BAA0B,eAAe,UAAU,CAAC;AAAA,MACzE,EAAO;AAAA,QACL,WAAW,QAAQ,eAAe;AAAA,UAChC,MAAM,KAAK,KAAK,4BAA4B,MAAM,UAAU,CAAC;AAAA,QAC/D;AAAA;AAAA;AAAA;AAAA,EAQE,wBAAwB,CAC9B,aACA,eACa;AAAA,IACb,MAAM,oBAAoB,IAAI;AAAA,IAC9B,WAAW,WAAW,YAAY,UAAU;AAAA,MAC1C,IAAI,QAAQ,eAAe;AAAA,QACzB,WAAW,OAAO,QAAQ,eAAe;AAAA,UACvC,MAAM,WAAW,KAAK,KAAK,IAAI,EAAE;AAAA,UACjC,MAAM,YAAY,cAAc,KAAK,CAAC,MAAM,EAAE,OAAO,QAAQ;AAAA,UAC7D,IAAI,CAAC,WAAW;AAAA,YACd,kBAAkB,IAAI,IAAI,EAAE;AAAA,UAC9B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAMD,oBAAoB,CAAC,OAAiB,mBAAsC;AAAA,IAClF,WAAW,aAAa,mBAAmB;AAAA,MACzC,MAAM,cAAc,UACjB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AAAA,MAEX,MAAM,KACJ,WAAW,KAAK,KAAK,SAAS,kBAAkB,yCAClD;AAAA,MACA,MAAM,KAAK,0CAA0C;AAAA,MACrD,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA;AAAA,EAMM,eAAe,CAAC,OAAiB,aAAgC;AAAA,IACvE,IAAI,CAAC,YAAY;AAAA,MAAY;AAAA,IAE7B,WAAW,QAAQ,YAAY,YAAY;AAAA,MACzC,MAAM,KACJ,WAAW,KAAK,KAAK,KAAK,IAAI,kBAAkB,KAAK,UAAU,KAAK,OAAO,KAAK,eAAe,cAAc,MAC/G;AAAA,MACA,MAAM,KAAK,+BAA+B;AAAA,MAC1C,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA;AAAA,EAMM,sBAAsB,CAAC,OAAiB,aAAgC;AAAA,IAC9E,IAAI,CAAC,YAAY,cAAc,YAAY,WAAW,WAAW;AAAA,MAAG;AAAA,IAEpE,WAAW,OAAO,YAAY,YAAY;AAAA,MACxC,MAAM,QAAQ,KAAK,KAAK,UAAU,KAAK;AAAA,MACvC,MAAM,KACJ,WAAW,6BAA6B,KAAK,WAAW,GAAG,2BAA2B,QACxF;AAAA,MACA,MAAM,KAAK,wCAAwC;AAAA,MACnD,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA;AAAA,EAMM,4BAA4B,CAAC,aAAqB,UAAkC;AAAA,IAC1F,MAAM,OAAO,YAAY,YAAY;AAAA,IAGrC,IAAI,KAAK,SAAS,OAAO,GAAG;AAAA,MAC1B,OAAO;AAAA,IACT;AAAA,IACA,IAAI,KAAK,SAAS,QAAQ,GAAG;AAAA,MAC3B,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,QAAQ,GAAG;AAAA,MACnD,MAAM,SAAS,KAAK,QAAQ,iBAAiB,EAAE,EAAE,QAAQ,MAAM,GAAG;AAAA,MAClE,OAAO,eAAe;AAAA,IACxB;AAAA,IACA,IAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,QAAQ,GAAG;AAAA,MACtD,MAAM,SAAS,KAAK,QAAQ,oBAAoB,EAAE,EAAE,QAAQ,MAAM,GAAG;AAAA,MACrE,OAAO,WAAW;AAAA,IACpB;AAAA,IACA,IAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,QAAQ,GAAG;AAAA,MACtD,MAAM,SAAS,KAAK,QAAQ,oBAAoB,EAAE,EAAE,QAAQ,MAAM,GAAG;AAAA,MACrE,OAAO,WAAW;AAAA,IACpB;AAAA,IACA,IAAI,KAAK,SAAS,OAAO,GAAG;AAAA,MAC1B,MAAM,SAAS,KAAK,QAAQ,YAAY,EAAE,EAAE,QAAQ,MAAM,GAAG;AAAA,MAC7D,OAAO,cAAc;AAAA,IACvB;AAAA,IAGA,IAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,MAAM,GAAG;AAAA,MAC3E,MAAM,SAAS,KAAK,QAAQ,qBAAqB,EAAE,EAAE,QAAQ,MAAM,GAAG;AAAA,MACtE,OAAO,aAAa;AAAA,IACtB;AAAA,IAGA,OAAO,aAAa;AAAA;AAAA,EAMd,gBAAgB,CAAC,aAAqB,UAAoC;AAAA,IAChF,MAAM,OAAiB,CAAC,iBAAiB;AAAA,IACzC,MAAM,OAAO,YAAY,YAAY;AAAA,IAGrC,IAAI,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,MAAM,GAAG;AAAA,MAC9E,KAAK,KAAK,gBAAgB;AAAA,IAC5B,EAAO,SACL,KAAK,SAAS,KAAK,KACnB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,GACtB;AAAA,MACA,KAAK,KAAK,MAAM;AAAA,IAClB,EAAO,SAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,MAAM,GAAG;AAAA,MAClF,KAAK,KAAK,OAAO;AAAA,IACnB;AAAA,IAGA,IAAI,KAAK,SAAS,MAAM,GAAG;AAAA,MACzB,KAAK,KAAK,iBAAiB;AAAA,IAC7B;AAAA,IACA,IAAI,KAAK,SAAS,MAAM,GAAG;AAAA,MACzB,KAAK,KAAK,iBAAiB;AAAA,IAC7B;AAAA,IACA,IAAI,KAAK,SAAS,OAAO,GAAG;AAAA,MAC1B,KAAK,KAAK,kBAAkB;AAAA,IAC9B;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,sBAAsB,CAC5B,aACA,SACA,aACqB;AAAA,IACrB,MAAM,aAAkC,CAAC;AAAA,IAGzC,IAAI,QAAQ,UAAU;AAAA,MACpB,MAAM,eAAe,QAAQ,SAAS,KAAK,QAAQ,GAAG,KAAK,SAAS,gBAAgB,EAAE;AAAA,MACtF,WAAW,YAAY,GAAG,gBAAgB,QAAQ,SAAS;AAAA,IAC7D;AAAA,IAGA,MAAM,eAAyB,CAAC,YAAY;AAAA,IAG5C,IAAI,QAAQ,UAAU,KAAK,SAAS,IAAI,KAAK,gBAAgB,UAAU;AAAA,MACrE,aAAa,KAAK,WAAW;AAAA,IAC/B;AAAA,IACA,IAAI,QAAQ,UAAU,KAAK,SAAS,WAAW,GAAG;AAAA,MAChD,aAAa,KAAK,WAAW;AAAA,IAC/B;AAAA,IACA,IAAI,QAAQ,UAAU,KAAK,SAAS,QAAQ,GAAG;AAAA,MAC7C,aAAa,KAAK,QAAQ;AAAA,IAC5B;AAAA,IAEA,WAAW,gBAAgB,aAAa,KAAK,IAAI;AAAA,IAGjD,MAAM,OAAO,YAAY,YAAY;AAAA,IACrC,IAAI,UAAU;AAAA,IAEd,IACE,KAAK,SAAS,OAAO,KACrB,KAAK,SAAS,KAAK,KACnB,KAAK,SAAS,OAAO,KACrB,KAAK,SAAS,MAAM,GACpB;AAAA,MACA,UAAU;AAAA,MACV,WAAW,kBAAkB;AAAA,IAC/B,EAAO,SACL,KAAK,SAAS,SAAS,KACvB,KAAK,SAAS,KAAK,KACnB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,GACtB;AAAA,MACA,UAAU;AAAA,MACV,WAAW,kBAAkB;AAAA,IAC/B,EAAO,SAAI,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,QAAQ,GAAG;AAAA,MACrF,UAAU;AAAA,MACV,WAAW,kBAAkB;AAAA,IAC/B,EAAO,SAAI,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,QAAQ,GAAG;AAAA,MAC1F,UAAU;AAAA,MACV,WAAW,kBAAkB;AAAA,IAC/B;AAAA,IAEA,WAAW,aAAa;AAAA,IAGxB,IAAI,KAAK,QAAQ,aAAa,cAAc;AAAA,MAC1C,OAAO,OAAO,YAAY,KAAK,QAAQ,WAAW,YAAY;AAAA,IAChE;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,8BAA8B,CAAC,cAAsB,aAAkC;AAAA,IAC7F,MAAM,QAAkB,CAAC;AAAA,IACzB,MAAM,iBAAiB,KAAK,uBAAuB,YAAY,QAAQ;AAAA,IAEvE,MAAM,KAAK,GAAG,KAAK,+BAA+B,aAAa,cAAc,CAAC;AAAA,IAC9E,MAAM,KAAK,GAAG,KAAK,kCAAkC,CAAC;AAAA,IACtD,MAAM,KAAK,GAAG,KAAK,kCAAkC,WAAW,CAAC;AAAA,IACjE,MAAM,KAAK,GAAG,KAAK,qCAAqC,cAAc,CAAC;AAAA,IAEvE,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,sBAAsB,CAAC,WAA2D;AAAA,IACxF,MAAM,iBAAiB,IAAI;AAAA,IAE3B,WAAW,WAAW,WAAU;AAAA,MAC9B,IAAI,CAAC,eAAe,IAAI,QAAQ,WAAW,GAAG;AAAA,QAC5C,eAAe,IAAI,QAAQ,aAAa,CAAC,CAAC;AAAA,MAC5C;AAAA,MACA,eAAe,IAAI,QAAQ,WAAW,GAAG,KAAK,OAAO;AAAA,IACvD;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,8BAA8B,CACpC,aACA,gBACU;AAAA,IACV,MAAM,QAAkB,CAAC;AAAA,IAEzB,IAAI,CAAC,YAAY,cAAc,YAAY,WAAW,WAAW,GAAG;AAAA,MAClE,OAAO;AAAA,IACT;AAAA,IAEA,WAAW,OAAO,YAAY,YAAY;AAAA,MACxC,MAAM,QAAQ,KAAK,KAAK,UAAU,KAAK;AAAA,MAEvC,YAAY,aAAa,cAAc,gBAAgB;AAAA,QACrD,MAAM,cAAc,KAAK,KAAK,KAAK,gBAAgB,WAAW,CAAC;AAAA,QAC/D,MAAM,cAAc,KAAK,0BAA0B,KAAK,WAAW;AAAA,QACnE,MAAM,KAAK,WAAW,kBAAkB,UAAU,cAAc;AAAA,MAClE;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,yBAAyB,CAAC,KAAa,aAA6B;AAAA,IAC1E,IAAI,QAAQ,WAAW;AAAA,MACrB,OAAO,KAAK,wBAAwB,WAAW;AAAA,IACjD;AAAA,IAEA,IAAI,QAAQ,QAAQ;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,QAAQ,WAAW;AAAA,MACrB,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,QAAQ;AAAA;AAAA,EAMT,uBAAuB,CAAC,aAA6B;AAAA,IAC3D,MAAM,OAAO,YAAY,YAAY;AAAA,IAErC,IAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,MAAM,GAAG;AAAA,MACjD,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,iCAAiC,GAAa;AAAA,IACpD,MAAM,QAAkB,CAAC;AAAA,IAEzB,IAAI,CAAC,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,cAAc,WAAW,GAAG;AAAA,MAC1E,OAAO;AAAA,IACT;AAAA,IAEA,WAAW,OAAO,KAAK,QAAQ,eAAe;AAAA,MAC5C,MAAM,SAAS,KAAK,KAAK,IAAI,IAAI;AAAA,MACjC,MAAM,OAAO,KAAK,KAAK,IAAI,EAAE;AAAA,MAC7B,MAAM,cAAc,KAAK,OAAO,IAAI,WAAW;AAAA,MAC/C,MAAM,aAAa,IAAI,aAAa,KAAK,KAAK,OAAO,IAAI,UAAU,OAAO;AAAA,MAE1E,MAAM,KAAK,WAAW,aAAa,SAAS,eAAe,cAAc;AAAA,MAEzE,IAAI,IAAI,QAAQ,IAAI,KAAK,SAAS,GAAG;AAAA,QACnC,MAAM,KAAK,mBAAmB,IAAI,KAAK,KAAK,KAAK,IAAI;AAAA,MACvD;AAAA,MAEA,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,iCAAiC,CAAC,aAAoC;AAAA,IAC5E,MAAM,QAAkB,CAAC;AAAA,IAEzB,WAAW,WAAW,YAAY,UAAU;AAAA,MAC1C,IAAI,CAAC,QAAQ,iBAAiB,QAAQ,cAAc,WAAW,GAAG;AAAA,QAChE;AAAA,MACF;AAAA,MAEA,WAAW,OAAO,QAAQ,eAAe;AAAA,QACvC,MAAM,SAAS,KAAK,KAAK,IAAI,IAAI;AAAA,QACjC,MAAM,OAAO,KAAK,KAAK,IAAI,EAAE;AAAA,QAC7B,MAAM,cAAc,KAAK,OAAO,IAAI,WAAW;AAAA,QAC/C,MAAM,aAAa,IAAI,aAAa,KAAK,KAAK,OAAO,IAAI,UAAU,OAAO;AAAA,QAE1E,MAAM,KAAK,WAAW,aAAa,SAAS,eAAe,cAAc;AAAA,QACzE,MAAM,KAAK,gCAAgC;AAAA,QAC3C,MAAM,KAAK,WAAW;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,oCAAoC,CAC1C,gBACU;AAAA,IACV,MAAM,QAAkB,CAAC;AAAA,IACzB,QAAQ,eAAe,kBAAkB,KAAK,uBAAuB,cAAc;AAAA,IAEnF,IAAI,cAAc,WAAW,KAAK,cAAc,WAAW,GAAG;AAAA,MAC5D,OAAO;AAAA,IACT;AAAA,IAEA,WAAW,gBAAgB,eAAe;AAAA,MACxC,WAAW,gBAAgB,eAAe;AAAA,QACxC,IAAI,iBAAiB,cAAc;AAAA,UACjC,MAAM,KAAK,WAAW,mBAAmB,gCAAgC;AAAA,UACzE,MAAM,KAAK,2BAA2B;AAAA,UACtC,MAAM,KAAK,WAAW;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,sBAAsB,CAAC,gBAG7B;AAAA,IACA,MAAM,gBAA0B,CAAC;AAAA,IACjC,MAAM,gBAA0B,CAAC;AAAA,IAEjC,YAAY,aAAa,cAAc,gBAAgB;AAAA,MACrD,MAAM,OAAO,YAAY,YAAY;AAAA,MACrC,MAAM,cAAc,KAAK,KAAK,KAAK,gBAAgB,WAAW,CAAC;AAAA,MAE/D,IAAI,KAAK,eAAe,IAAI,GAAG;AAAA,QAC7B,cAAc,KAAK,WAAW;AAAA,MAChC,EAAO,SAAI,KAAK,eAAe,IAAI,GAAG;AAAA,QACpC,cAAc,KAAK,WAAW;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,OAAO,EAAE,eAAe,cAAc;AAAA;AAAA,EAMhC,cAAc,CAAC,MAAuB;AAAA,IAC5C,OACE,KAAK,SAAS,KAAK,KACnB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,OAAO,KACrB,KAAK,SAAS,OAAO,KACrB,KAAK,SAAS,QAAQ;AAAA;AAAA,EAOlB,cAAc,CAAC,MAAuB;AAAA,IAC5C,OAAO,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,MAAM;AAAA;AAAA,EAMvE,8BAA8B,GAAW;AAAA,IAC/C,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KAAK,GAAG,KAAK,0BAA0B,CAAC;AAAA,IAC9C,MAAM,KAAK,GAAG,KAAK,iCAAiC,CAAC;AAAA,IACrD,MAAM,KAAK,GAAG,KAAK,iCAAiC,CAAC;AAAA,IAErD,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,yBAAyB,GAAa;AAAA,IAC5C,MAAM,QAAkB,CAAC;AAAA,IACzB,MAAM,aAAa,CAAC,SAAS,WAAW,UAAU;AAAA,IAElD,WAAW,eAAe,OAAO,KAAK,KAAK,SAAS,QAAQ,GAAG;AAAA,MAC7D,IAAI,WAAW,SAAS,WAAW,GAAG;AAAA,QACpC,MAAM,KAAK,2BAA2B,oBAAoB;AAAA,MAC5D;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,gCAAgC,GAAa;AAAA,IACnD,MAAM,QAAkB,CAAC;AAAA,IAEzB,WAAW,QAAQ,KAAK,SAAS,cAAc;AAAA,MAC7C,MAAM,OAAO,SAAS,KAAK;AAAA,MAC3B,WAAW,MAAM,KAAK,IAAI;AAAA,QACxB,MAAM,KAAK,mBAAmB,KAAK,qBAAqB,OAAO,OAAO;AAAA,MACxE;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,gCAAgC,GAAa;AAAA,IACnD,MAAM,QAAkB,CAAC;AAAA,IAEzB,WAAW,eAAe,KAAK,SAAS,cAAc;AAAA,MACpD,IAAI,YAAY,SAAS,SAAS,YAAY,SAAS,aAAa;AAAA,QAClE;AAAA,MACF;AAAA,MAGA,YAAY,aAAa,gBAAgB,OAAO,QAAQ,KAAK,SAAS,QAAQ,GAAG;AAAA,QAC/E,MAAM,kBAAkB,YAAY,aAAa,KAAK,CAAC,QACrD,YAAY,OAAO,KAAK,CAAC,SAAS,KAAK,aAAa,IAAI,QAAQ,CAClE;AAAA,QAEA,IAAI,iBAAiB;AAAA,UACnB,MAAM,SAAS,YAAY,SAAS,cAAc,gBAAgB;AAAA,UAClE,MAAM,KACJ,mBAAmB,kBAAkB,KAAK,KAAK,YAAY,IAAI,MAAM,SACvE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,aAAa,GAAW;AAAA,IAC9B,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KAAK,WAAW;AAAA,IACtB,MAAM,KAAK,KAAK,0BAA0B,CAAC;AAAA,IAC3C,MAAM,KAAK,KAAK,sBAAsB,CAAC;AAAA,IAEvC,IAAI,KAAK,QAAQ,0BAA0B;AAAA,MACzC,WAAW,eAAe,KAAK,QAAQ,4BAA4B,CAAC,GAAG;AAAA,QACrE,IAAI,KAAK,SAAS,SAAS,cAAc;AAAA,UACvC,MAAM,KAAK,KAAK,sBAAsB,WAAW,CAAC;AAAA,QACpD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,QAAQ,wBAAwB;AAAA,MACvC,MAAM,KAAK,KAAK,qBAAqB,CAAC;AAAA,IACxC;AAAA,IAGA,IAAI,KAAK,QAAQ,mBAAmB,KAAK,QAAQ,gBAAgB,SAAS,GAAG;AAAA,MAC3E,MAAM,KAAK,KAAK,wBAAwB,CAAC;AAAA,IAC3C;AAAA,IAEA,MAAM,KAAK,KAAK,eAAe,CAAC;AAAA,IAChC,MAAM,KAAK,KAAK;AAAA,IAGhB,IAAI,KAAK,SAAS,QAAQ,KAAK,SAAS,KAAK,KAAK,SAAS,GAAG;AAAA,MAC5D,MAAM,KAAK,EAAE;AAAA,MACb,MAAM,KAAK,KAAK,sBAAsB,CAAC;AAAA,IACzC;AAAA,IAEA,OAAO,MAAM,KAAK;AAAA;AAAA,CAAM;AAAA;AAAA,EAMlB,qBAAqB,GAAW;AAAA,IACtC,IAAI,CAAC,KAAK,SAAS,QAAQ,KAAK,SAAS,KAAK,KAAK,WAAW,GAAG;AAAA,MAC/D,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,QAAkB,CAAC;AAAA,IACzB,MAAM,KAAK,mBAAmB;AAAA,IAE9B,WAAW,QAAO,KAAK,SAAS,KAAK,MAAM;AAAA,MACzC,MAAM,KAAK,iBAAiB,KAAI,OAAO;AAAA,MACvC,MAAM,KAAK,gBAAgB,KAAK,OAAO,KAAI,KAAK,IAAI;AAAA,MACpD,MAAM,KAAK,iBAAiB,KAAI,SAAS;AAAA,MACzC,MAAM,KAAK,eAAe,KAAI,OAAO;AAAA,MACrC,MAAM,KAAK,kBAAkB,KAAK,OAAO,KAAI,OAAO,IAAI;AAAA,MACxD,MAAM,KAAK,OAAO;AAAA,IACpB;AAAA,IAEA,MAAM,KAAK,KAAK;AAAA,IAEhB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,yBAAyB,GAAW;AAAA,IAC1C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,qBAAqB,GAAW;AAAA,IACtC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,qBAAqB,CAAC,aAA6B;AAAA,IACzD,OAAO,2BAA2B,2BAA2B,KAAK,WAAW,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,EASlF,oBAAoB,GAAW;AAAA,IACrC,MAAM,QAAkB,CAAC;AAAA,IAGzB,IAAI,KAAK,QAAQ,mBAAmB,KAAK,QAAQ,gBAAgB,SAAS,GAAG;AAAA,MAC3E,WAAW,WAAW,KAAK,QAAQ,iBAAiB;AAAA,QAClD,MAAM,KAAK,KAAK,2BAA2B,OAAO,CAAC;AAAA,MACrD;AAAA,IACF;AAAA,IAGA,MAAM,eAAe,KAAK,iCAAiC;AAAA,IAC3D,IAAI,aAAa,SAAS,GAAG;AAAA,MAC3B,MAAM,KAAK,GAAG,YAAY;AAAA,IAC5B;AAAA,IAGA,MAAM,gBAAgB,KAAK,mBAAmB,KAAK,SAAS,YAAY;AAAA,IAGxE,IAAI,QAAQ;AAAA,IACZ,YAAY,QAAQ,WAAU,eAAe;AAAA,MAC3C,IAAI,SAAS;AAAA,QAAG;AAAA,MAEhB,MAAM,WAAW,GAAG,KAAK,WAAW,MAAM;AAAA,MAC1C,MAAM,KAAK,KAAK,oBAAoB,UAAU,QAAO,MAAM,CAAC;AAAA,MAC5D;AAAA,IACF;AAAA,IAEA,OAAO,MAAM,KAAK;AAAA;AAAA,CAAM;AAAA;AAAA,EAMlB,kBAAkB,CAAC,QAAkD;AAAA,IAC3E,MAAM,gBAAgB,IAAI;AAAA,IAE1B,WAAW,QAAQ,QAAO;AAAA,MACxB,MAAM,SAAS,KAAK,6BAA6B,KAAK,WAAW;AAAA,MAEjE,IAAI,CAAC,cAAc,IAAI,MAAM,GAAG;AAAA,QAC9B,cAAc,IAAI,QAAQ,CAAC,CAAC;AAAA,MAC9B;AAAA,MACA,cAAc,IAAI,MAAM,GAAG,KAAK,IAAI;AAAA,IACtC;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,4BAA4B,CAAC,aAA6B;AAAA,IAChE,MAAM,YAAY,YAAY,YAAY;AAAA,IAE1C,IACE,UAAU,SAAS,MAAM,KACzB,UAAU,SAAS,OAAO,KAC1B,UAAU,SAAS,QAAQ,KAC3B,UAAU,SAAS,MAAM,GACzB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,UAAU,SAAS,MAAM,GAAG;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,UAAU,SAAS,OAAO,GAAG;AAAA,MAC/B,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,gCAAgC,GAAa;AAAA,IACnD,MAAM,4BAA4B,KAAK,iCAAiC;AAAA,IACxE,MAAM,gBAAgB,KAAK,mBAAmB,yBAAyB;AAAA,IACvE,OAAO,KAAK,yBAAyB,eAAe,0BAA0B,MAAM;AAAA;AAAA,EAM9E,gCAAgC,GAIrC;AAAA,IACD,MAAM,YAID,CAAC;AAAA,IAEN,YAAY,aAAa,gBAAgB,OAAO,QAAQ,KAAK,SAAS,QAAQ,GAAG;AAAA,MAC/E,WAAW,WAAW,YAAY,UAAU;AAAA,QAC1C,IAAI,QAAQ,iBAAiB,QAAQ,cAAc,SAAS,GAAG;AAAA,UAC7D,UAAS,KAAK;AAAA,YACZ;AAAA,YACA;AAAA,YACA,aAAa,KAAK,KAAK,WAAW;AAAA,UACpC,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,kBAAkB,CACxB,WAC2F;AAAA,IAC3F,MAAM,SAAS,IAAI;AAAA,IAKnB,WAAW,OAAO,WAAU;AAAA,MAC1B,MAAM,WAAW,KAAK,qBAAqB,IAAI,QAAQ,WAAW;AAAA,MAElE,IAAI,CAAC,OAAO,IAAI,QAAQ,GAAG;AAAA,QACzB,OAAO,IAAI,UAAU,CAAC,CAAC;AAAA,MACzB;AAAA,MACA,OAAO,IAAI,QAAQ,GAAG,KAAK,GAAG;AAAA,IAChC;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,oBAAoB,CAAC,aAA6B;AAAA,IACxD,MAAM,YAAY,YAAY,YAAY;AAAA,IAE1C,IACE,UAAU,SAAS,MAAM,KACzB,UAAU,SAAS,OAAO,KAC1B,UAAU,SAAS,QAAQ,KAC3B,UAAU,SAAS,QAAQ,KAC3B,UAAU,SAAS,UAAU,GAC7B;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,UAAU,SAAS,MAAM,GAAG;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,UAAU,SAAS,MAAM,GAAG;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,IAEA,IACE,UAAU,SAAS,OAAO,KAC1B,UAAU,SAAS,KAAK,KACxB,UAAU,SAAS,OAAO,KAC1B,UAAU,SAAS,MAAM,GACzB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,IACE,UAAU,SAAS,SAAS,KAC5B,UAAU,SAAS,QAAQ,KAC3B,UAAU,SAAS,QAAQ,KAC3B,UAAU,SAAS,QAAQ,KAC3B,UAAU,SAAS,KAAK,KACxB,UAAU,SAAS,QAAQ,GAC3B;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,wBAAwB,CAC9B,eAIA,eACU;AAAA,IACV,IAAI,iBAAiB,KAAK,cAAc,QAAQ,GAAG;AAAA,MACjD,OAAO,KAAK,wBAAwB,aAAa;AAAA,IACnD;AAAA,IACA,OAAO,KAAK,yBAAyB,aAAa;AAAA;AAAA,EAM5C,uBAAuB,CAC7B,eAIU;AAAA,IACV,MAAM,WAAqB,CAAC;AAAA,IAC5B,MAAM,cAAc,MAAM,KAAK,cAAc,OAAO,CAAC,EAAE,KAAK;AAAA,IAC5D,MAAM,UAAU,KAAK,2BAA2B,WAAW,WAAW;AAAA,IACtE,IAAI,SAAS;AAAA,MACX,SAAS,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,OAAO;AAAA;AAAA,EAMD,wBAAwB,CAC9B,eAIU;AAAA,IACV,MAAM,WAAqB,CAAC;AAAA,IAC5B,MAAM,cAAc;AAAA,IACpB,IAAI,eAAe;AAAA,IAEnB,YAAY,UAAU,cAAa,eAAe;AAAA,MAChD,IAAI,gBAAgB;AAAA,QAAa;AAAA,MACjC,IAAI,UAAS,WAAW;AAAA,QAAG;AAAA,MAE3B,MAAM,UAAU,KAAK,2BAA2B,UAAU,SAAQ;AAAA,MAClE,IAAI,SAAS;AAAA,QACX,SAAS,KAAK,OAAO;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,0BAA0B,CAChC,UACA,WACe;AAAA,IACf,MAAM,QAAkB,CAAC;AAAA,IAGzB,MAAM,QAAQ,KAAK,iBAAiB,QAAQ;AAAA,IAC5C,MAAM,cAAc,KAAK,uBAAuB,QAAQ;AAAA,IAGxD,MAAM,QAAQ,UAAS,IAAI,cAAc,aAAa,UAAS,GAAG,gBAAgB;AAAA,IAElF,MAAM,KAAK,eAAe,UAAU,WAAW,gBAAgB;AAAA,IAE/D,IAAI,YAAY;AAAA,IAGhB,aAAa,SAAS,aAAa,kBAAkB,WAAU;AAAA,MAC7D,MAAM,qBAAqB,KAAK,KAAK,GAAG,QAAQ,qBAAqB;AAAA,MAGrE,MAAM,gBAAgB,QAAQ,iBAAiB,CAAC;AAAA,MAChD,WAAW,OAAO,eAAe;AAAA,QAC/B,MAAM,cAAc,KAAK,KAAK,IAAI,EAAE;AAAA,QAGpC,MAAM,KAAK,SAAS,yBAAyB,gBAAgB,IAAI,cAAc;AAAA,QAC/E;AAAA,MACF;AAAA,IACF;AAAA,IAGA,IAAI,cAAc,GAAG;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,KAAK,qBAAqB;AAAA,IAChC,MAAM,KAAK,OAAO;AAAA,IAElB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,gBAAgB,CAAC,UAA0B;AAAA,IACjD,MAAM,SAAiC;AAAA,MACrC,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,IACA,OAAO,OAAO,aAAa,GAAG,KAAK,WAAW,QAAQ;AAAA;AAAA,EAMhD,sBAAsB,CAAC,UAA0B;AAAA,IACvD,MAAM,eAAuC;AAAA,MAC3C,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,IACA,OAAO,aAAa,aAAa;AAAA;AAAA,EAM3B,0BAA0B,CAAC,SAAiC;AAAA,IAClE,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KACJ,eAAe,QAAQ,SAAS,gBAAgB,KAAK,OAAO,QAAQ,KAAK,OAAO,KAAK,OAAO,QAAQ,eAAe,EAAE,MACvH;AAAA,IAEA,WAAW,QAAQ,QAAQ,OAAO;AAAA,MAChC,MAAM,OAAO,KAAK;AAAA,MAClB,MAAM,KAAK,KAAK;AAAA,MAChB,MAAM,cAAc,KAAK,OAAO,KAAK,WAAW;AAAA,MAEhD,MAAM,KAAK,SAAS,WAAW,OAAO,cAAc;AAAA,IACtD;AAAA,IAEA,MAAM,KAAK,qBAAqB;AAAA,IAChC,MAAM,KAAK,OAAO;AAAA,IAElB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,mBAAmB,CAAC,UAAkB,QAAsB,QAAwB;AAAA,IAC1F,MAAM,QAAkB,CAAC;AAAA,IAGzB,MAAM,cAAc,KAAK,0BAA0B,MAAM;AAAA,IACzD,MAAM,KAAK,0BAA0B,cAAc,gBAAgB;AAAA,IAGnE,MAAM,aAAa,CAAC,SAAS,WAAW,UAAU;AAAA,IAClD,MAAM,YAAY,OAAM,KAAK,CAAC,MAAM,WAAW,SAAS,EAAE,IAAI,CAAC;AAAA,IAE/D,IAAI,WAAW;AAAA,MAEb,MAAM,YAAY,OAAM,KAAK,CAAC,MAAM,WAAW,SAAS,EAAE,IAAI,CAAC;AAAA,MAC/D,IAAI,WAAW;AAAA,QACb,MAAM,SAAS,KAAK,cAAc,MAAM;AAAA,QACxC,MAAM,KAAK,2BAA2B,UAAU,SAAS,SAAS;AAAA,MACpE;AAAA,IACF;AAAA,IAGA,WAAW,QAAQ,QAAO;AAAA,MACxB,MAAM,cAAc,KAAK,sBAAsB,KAAK,WAAW;AAAA,MAE/D,WAAW,MAAM,KAAK,IAAI;AAAA,QACxB,MAAM,KAAK,mBAAmB,KAAK,qBAAqB,OAAO,cAAc;AAAA,MAC/E;AAAA,IACF;AAAA,IAEA,MAAM,KAAK,qBAAqB;AAAA,IAChC,MAAM,KAAK,OAAO;AAAA,IAElB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,yBAAyB,CAAC,QAAwB;AAAA,IACxD,MAAM,eAAuC;AAAA,MAC3C,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,OAAO,aAAa,WAAW,aAAa,cAAc;AAAA;AAAA,EAMpD,aAAa,CAAC,QAAwB;AAAA,IAC5C,MAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,OAAO,QAAQ,WAAW,QAAQ,cAAc;AAAA;AAAA,EAM1C,qBAAqB,CAAC,aAA6B;AAAA,IACzD,MAAM,OAAO,YAAY,YAAY;AAAA,IAErC,IAAI,KAAK,SAAS,OAAO;AAAA,MAAG,OAAO;AAAA,IACnC,IAAI,KAAK,SAAS,QAAQ;AAAA,MAAG,OAAO;AAAA,IACpC,IAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,QAAQ;AAAA,MAAG,OAAO;AAAA,IAC5D,IAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,QAAQ;AAAA,MAAG,OAAO;AAAA,IAC/D,IAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,QAAQ;AAAA,MAAG,OAAO;AAAA,IAC/D,IAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,OAAO;AAAA,MAAG,OAAO;AAAA,IAC3D,IAAI,KAAK,SAAS,OAAO;AAAA,MAAG,OAAO;AAAA,IAEnC,OAAO;AAAA;AAAA,EAMD,8BAA8B,GAAW;AAAA,IAC/C,MAAM,QAAkB,CAAC;AAAA,IAGzB,MAAM,qBAAqB,IAAI;AAAA,IAE/B,WAAW,QAAQ,KAAK,QAAQ,mBAAmB,CAAC,GAAG;AAAA,MACrD,MAAM,MACJ,KAAK,MAAM,KAAK,CAAC,QAAQ,IAAI,YAAY,EAAE,SAAS,cAAc,CAAC,GAAG,MAAM,GAAG,EAAE,MACjF;AAAA,MAEF,IAAI,CAAC,mBAAmB,IAAI,GAAG,GAAG;AAAA,QAChC,mBAAmB,IAAI,KAAK,CAAC,CAAC;AAAA,MAChC;AAAA,MACA,mBAAmB,IAAI,GAAG,GAAG,KAAK,IAAI;AAAA,IACxC;AAAA,IAGA,YAAY,SAAS,UAAU,oBAAoB;AAAA,MACjD,MAAM,KAAK,8BAA8B,YAAY;AAAA,MAErD,WAAW,QAAQ,OAAO;AAAA,QACxB,MAAM,KAAK,KAAK,uBAAuB,MAAM,QAAQ,CAAC;AAAA,MACxD;AAAA,MAEA,MAAM,KAAK,OAAO;AAAA,IACpB;AAAA,IAEA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,sBAAsB,CAAC,MAAsB,QAAwB;AAAA,IAC3E,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,cAAc,KAAK,cAAc,KAAK,KAAK,OAAO,KAAK,WAAW,OAAO;AAAA,IAC/E,MAAM,aAAa,KAAK,aAAa,KAAK,KAAK,OAAO,KAAK,UAAU,OAAO;AAAA,IAE5E,MAAM,KAAK,GAAG,yBAAyB,KAAK,OAAO,KAAK,IAAI,KAAK,cAAc,cAAc;AAAA,IAE7F,KAAK,sBAAsB,MAAM,QAAQ,KAAK;AAAA,IAC9C,KAAK,4BAA4B,MAAM,QAAQ,KAAK;AAAA,IACpD,KAAK,0BAA0B,MAAM,QAAQ,KAAK;AAAA,IAClD,KAAK,oCAAoC,MAAM,QAAQ,KAAK;AAAA,IAE5D,MAAM,KAAK,GAAG,SAAS;AAAA,IAEvB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,qBAAqB,CAAC,MAAsB,QAAgB,OAAuB;AAAA,IACzF,IAAI,CAAC,KAAK,QAAQ,KAAK,KAAK,WAAW;AAAA,MAAG;AAAA,IAE1C,MAAM,eAAe,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,SAAS,cAAc,CAAC;AAAA,IAC1F,IAAI,aAAa,SAAS,GAAG;AAAA,MAC3B,MAAM,KAAK,GAAG,iBAAiB,aAAa,KAAK,KAAK,IAAI;AAAA,IAC5D;AAAA;AAAA,EAMM,2BAA2B,CAAC,MAAsB,QAAgB,OAAuB;AAAA,IAC/F,IAAI,CAAC,KAAK,cAAc,OAAO,KAAK,KAAK,UAAU,EAAE,WAAW;AAAA,MAAG;AAAA,IAEnE,MAAM,KAAK,GAAG,sBAAsB;AAAA,IACpC,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,UAAU,GAAG;AAAA,MAC1D,MAAM,KAAK,GAAG,cAAc,KAAK,OAAO,GAAG,OAAO,KAAK,OAAO,KAAK,IAAI;AAAA,IACzE;AAAA,IACA,MAAM,KAAK,GAAG,WAAW;AAAA;AAAA,EAMnB,yBAAyB,CAAC,MAAsB,QAAgB,OAAuB;AAAA,IAC7F,IAAI,CAAC,KAAK,YAAY,KAAK,SAAS,WAAW;AAAA,MAAG;AAAA,IAElD,WAAW,SAAS,KAAK,UAAU;AAAA,MACjC,MAAM,KAAK,KAAK,uBAAuB,OAAO,GAAG,UAAU,CAAC;AAAA,IAC9D;AAAA;AAAA,EAMM,mCAAmC,CACzC,MACA,QACA,OACM;AAAA,IACN,IAAI,KAAK,sBAAsB,KAAK,mBAAmB,SAAS,GAAG;AAAA,MACjE,WAAW,qBAAqB,KAAK,oBAAoB;AAAA,QACvD,MAAM,eACJ,kBAAkB,aAAa,kBAAkB,YAAY,IACzD,IAAI,kBAAkB,cACtB;AAAA,QACN,MAAM,KACJ,GAAG,uCAAuC,kBAAkB,YAAY,cAC1E;AAAA,MACF;AAAA,IACF,EAAO,SAAI,CAAC,KAAK,YAAY,KAAK,SAAS,WAAW,GAAG;AAAA,MAEvD,MAAM,YAAW,OAAO,KAAK,KAAK,SAAS,QAAQ;AAAA,MACnD,WAAW,eAAe,WAAU;AAAA,QAClC,MAAM,KAAK,GAAG,uCAAuC,aAAa;AAAA,MACpE;AAAA,IACF;AAAA;AAAA,EAMM,uBAAuB,GAAW;AAAA,IACxC,MAAM,QAAkB,CAAC;AAAA,IAGzB,MAAM,qBAAqB,IAAI;AAAA,IAE/B,WAAW,QAAQ,KAAK,QAAQ,mBAAmB,CAAC,GAAG;AAAA,MACrD,MAAM,MACJ,KAAK,MAAM,KAAK,CAAC,QAAQ,IAAI,YAAY,EAAE,SAAS,cAAc,CAAC,GAAG,MAAM,GAAG,EAAE,MACjF;AAAA,MAEF,IAAI,CAAC,mBAAmB,IAAI,GAAG,GAAG;AAAA,QAChC,mBAAmB,IAAI,KAAK,CAAC,CAAC;AAAA,MAChC;AAAA,MACA,mBAAmB,IAAI,GAAG,GAAG,KAAK,IAAI;AAAA,IACxC;AAAA,IAGA,YAAY,YAAY,oBAAoB;AAAA,MAC1C,MAAM,cAAc,GAAG;AAAA,MAEvB,MAAM,KAAK,6BAA6B,aAAa,gBAAgB;AAAA,MACrE,MAAM,KAAK,iBAAiB;AAAA,MAC5B,MAAM,KAAK,qBAAqB;AAAA,MAChC,MAAM,KAAK,OAAO;AAAA,IACpB;AAAA,IAEA,OAAO,MAAM,KAAK;AAAA;AAAA,CAAM;AAAA;AAAA,EASlB,cAAc,GAAW;AAAA,IAC/B,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KAAK,cAAc;AAAA,IAGzB,IAAI,KAAK,QAAQ,wBAAwB,KAAK,QAAQ,QAAQ,UAAU;AAAA,MACtE,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,QAAQ,OAAO,QAAQ,GAAG;AAAA,QACvE,MAAM,KAAK,KAAK,qBAAqB,KAAK,KAAK,CAAC;AAAA,MAClD;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,QAAQ,wBAAwB,KAAK,QAAQ,QAAQ,eAAe;AAAA,MAC3E,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,QAAQ,OAAO,aAAa,GAAG;AAAA,QAC5E,MAAM,KAAK,KAAK,0BAA0B,KAAK,KAAK,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,QAAQ,QAAQ,OAAO;AAAA,MAC9B,MAAM,KAAK,eAAe,KAAK,QAAQ,OAAO,OAAO;AAAA,IACvD;AAAA,IAEA,MAAM,KAAK,OAAO;AAAA,IAElB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,oBAAoB,CAAC,KAAa,OAA6B;AAAA,IACrE,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KAAK,kBAAkB,QAAQ;AAAA,IAErC,IAAI,MAAM,OAAO;AAAA,MACf,MAAM,KAAK,iBAAiB,MAAM,OAAO;AAAA,IAC3C;AAAA,IACA,IAAI,MAAM,MAAM;AAAA,MACd,MAAM,KAAK,gBAAgB,MAAM,MAAM;AAAA,IACzC;AAAA,IACA,IAAI,MAAM,OAAO;AAAA,MACf,MAAM,KAAK,iBAAiB,MAAM,OAAO;AAAA,IAC3C;AAAA,IACA,IAAI,MAAM,QAAQ;AAAA,MAChB,MAAM,KAAK,kBAAkB,MAAM,QAAQ;AAAA,IAC7C;AAAA,IACA,IAAI,MAAM,YAAY;AAAA,MACpB,MAAM,KAAK,sBAAsB,MAAM,YAAY;AAAA,IACrD;AAAA,IACA,IAAI,MAAM,OAAO;AAAA,MACf,MAAM,KAAK,iBAAiB,MAAM,OAAO;AAAA,IAC3C;AAAA,IACA,IAAI,MAAM,UAAU;AAAA,MAClB,MAAM,KAAK,oBAAoB,MAAM,UAAU;AAAA,IACjD;AAAA,IACA,IAAI,MAAM,QAAQ;AAAA,MAChB,MAAM,KAAK,kBAAkB,MAAM,QAAQ;AAAA,IAC7C;AAAA,IACA,IAAI,MAAM,YAAY,WAAW;AAAA,MAC/B,MAAM,KAAK,mBAAmB,MAAM,SAAS;AAAA,IAC/C;AAAA,IACA,IAAI,MAAM,aAAa,WAAW;AAAA,MAChC,MAAM,KAAK,oBAAoB,MAAM,UAAU;AAAA,IACjD;AAAA,IACA,IAAI,MAAM,gBAAgB,WAAW;AAAA,MACnC,MAAM,KAAK,uBAAuB,MAAM,aAAa;AAAA,IACvD;AAAA,IAEA,MAAM,KAAK,SAAS;AAAA,IAEpB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,yBAAyB,CAAC,KAAa,OAAkC;AAAA,IAC/E,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KAAK,uBAAuB,QAAQ;AAAA,IAE1C,IAAI,MAAM,WAAW;AAAA,MACnB,MAAM,KAAK,qBAAqB,MAAM,WAAW;AAAA,IACnD;AAAA,IACA,IAAI,MAAM,OAAO;AAAA,MACf,MAAM,KAAK,iBAAiB,MAAM,OAAO;AAAA,IAC3C;AAAA,IACA,IAAI,MAAM,OAAO;AAAA,MACf,MAAM,KAAK,iBAAiB,MAAM,OAAO;AAAA,IAC3C;AAAA,IACA,IAAI,MAAM,SAAS;AAAA,MACjB,MAAM,KAAK,mBAAmB,MAAM,SAAS;AAAA,IAC/C;AAAA,IACA,IAAI,MAAM,UAAU;AAAA,MAClB,MAAM,KAAK,oBAAoB,MAAM,UAAU;AAAA,IACjD;AAAA,IACA,IAAI,MAAM,OAAO;AAAA,MACf,MAAM,KAAK,iBAAiB,MAAM,OAAO;AAAA,IAC3C;AAAA,IACA,IAAI,MAAM,UAAU;AAAA,MAClB,MAAM,KAAK,oBAAoB,MAAM,UAAU;AAAA,IACjD;AAAA,IACA,IAAI,MAAM,YAAY,WAAW;AAAA,MAC/B,MAAM,KAAK,mBAAmB,MAAM,SAAS;AAAA,IAC/C;AAAA,IAEA,MAAM,KAAK,SAAS;AAAA,IAEpB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,oBAAoB,CAAC,aAA6B;AAAA,IACxD,MAAM,eAAuC;AAAA,MAC3C,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IAEA,OAAO,aAAa,gBAAgB;AAAA;AAAA,EAM9B,eAAe,CAAC,aAA6B;AAAA,IACnD,OAAO,GAAG,YACP,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,WAAW,KAAK,YAAY,CAAC,CAAC,EACjD,KAAK,GAAG;AAAA;AAAA,EAML,IAAI,CAAC,MAAsB;AAAA,IACjC,OAAO,KACJ,YAAY,EACZ,QAAQ,eAAe,GAAG,EAC1B,QAAQ,UAAU,EAAE;AAAA;AAAA,EAMjB,UAAU,CAAC,KAAqB;AAAA,IACtC,OAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA;AAAA,EAS1C,2BAA2B,CACjC,MAOA,QACQ;AAAA,IACR,MAAM,QAAkB,CAAC;AAAA,IAEzB,MAAM,KACJ,GAAG,SAAS,KAAK,mBAAmB,KAAK,UAAU,KAAK,OAAO,KAAK,WAAW,MACjF;AAAA,IAEA,IAAI,KAAK,KAAK,SAAS,GAAG;AAAA,MACxB,MAAM,KAAK,GAAG,iBAAiB,KAAK,KAAK,KAAK,KAAK,IAAI;AAAA,IACzD;AAAA,IAEA,IAAI,KAAK,cAAc,OAAO,KAAK,KAAK,UAAU,EAAE,SAAS,GAAG;AAAA,MAC9D,MAAM,KAAK,GAAG,sBAAsB;AAAA,MACpC,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,UAAU,GAAG;AAAA,QAC1D,IAAI,OAAO;AAAA,UACT,MAAM,KAAK,GAAG,cAAc,SAAS,KAAK,OAAO,KAAK,IAAI;AAAA,QAC5D;AAAA,MACF;AAAA,MACA,MAAM,KAAK,GAAG,WAAW;AAAA,IAC3B;AAAA,IAGA,IAAI,KAAK,QAAQ,eAAe,KAAK,KAAK;AAAA,MACxC,MAAM,eAAe,KAAK,QAAQ,aAAa,KAAK;AAAA,MACpD,IAAI,cAAc;AAAA,QAChB,MAAM,KAAK,GAAG,wBAAwB;AAAA,QACtC,WAAW,eAAe,cAAc;AAAA,UACtC,MAAM,KACJ,GAAG,cAAc,KAAK,OAAO,YAAY,IAAI,OAAO,KAAK,OAAO,YAAY,WAAW,IACzF;AAAA,QACF;AAAA,QACA,MAAM,KAAK,GAAG,WAAW;AAAA,MAC3B;AAAA,IACF;AAAA,IAEA,MAAM,KAAK,GAAG,SAAS;AAAA,IAEvB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA,EAMhB,uBAAuB,CAC7B,eAQkB;AAAA,IAClB,MAAM,SAA2B,CAAC;AAAA,IAClC,MAAM,WAAW,IAAI;AAAA,IAErB,KAAK,uBAAuB,eAAe,QAAQ,QAAQ;AAAA,IAC3D,KAAK,qBAAqB,eAAe,QAAQ,QAAQ;AAAA,IACzD,KAAK,qBAAqB,eAAe,QAAQ,QAAQ;AAAA,IACzD,KAAK,sBAAsB,eAAe,QAAQ,QAAQ;AAAA,IAE1D,OAAO,KAAK,mBAAmB,QAAQ,SAAS,MAAM,cAAc,MAAM,IAAI,SAAS,CAAC;AAAA;AAAA,EAMlF,sBAAsB,CAC5B,eACA,QACA,UACM;AAAA,IACN,MAAM,eAAe,cAAc,OAAO,CAAC,SAAS;AAAA,MAClD,MAAM,OAAO,KAAK,YAAY,YAAY;AAAA,MAC1C,OACE,KAAK,SAAS,OAAO,KACrB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,MAAM,KACpB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,UAAU,KACxB,KAAK,SAAS,QAAQ;AAAA,KAEzB;AAAA,IAED,IAAI,aAAa,SAAS,GAAG;AAAA,MAC3B,OAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,YAAY,aAAa,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA,MAC1C,CAAC;AAAA,MACD,WAAW,KAAK,cAAc;AAAA,QAC5B,SAAS,IAAI,EAAE,EAAE;AAAA,MACnB;AAAA,IACF;AAAA;AAAA,EAMM,oBAAoB,CAC1B,eACA,QACA,UACM;AAAA,IACN,MAAM,uBAAuB,cAAc,OAAO,CAAC,SAAS;AAAA,MAC1D,MAAM,OAAO,KAAK,YAAY,YAAY;AAAA,MAC1C,OAAO,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,aAAa;AAAA,KACjE;AAAA,IAED,IAAI,qBAAqB,SAAS,GAAG;AAAA,MACnC,OAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,YAAY,qBAAqB,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA,MAClD,CAAC;AAAA,MACD,WAAW,KAAK,sBAAsB;AAAA,QACpC,SAAS,IAAI,EAAE,EAAE;AAAA,MACnB;AAAA,IACF;AAAA;AAAA,EAMM,oBAAoB,CAC1B,eACA,QACA,UACM;AAAA,IACN,MAAM,eAAe,KAAK,oBAAoB,eAAe,QAAQ;AAAA,IACrE,KAAK,qBAAqB,cAAc,QAAQ,QAAQ;AAAA;AAAA,EAMlD,mBAAmB,CACzB,eACA,UACuB;AAAA,IACvB,MAAM,eAAe,IAAI;AAAA,IAEzB,WAAW,QAAQ,eAAe;AAAA,MAChC,IAAI,SAAS,IAAI,KAAK,EAAE;AAAA,QAAG;AAAA,MAE3B,MAAM,OAAO,KAAK,YAAY,YAAY;AAAA,MAG1C,IAAI,SAAS,gBAAgB,SAAS,aAAa,SAAS,WAAW,SAAS,SAAS;AAAA,QACvF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,KAAK,kBAAkB,IAAI;AAAA,MAE1C,IAAI,QAAQ;AAAA,QACV,IAAI,CAAC,aAAa,IAAI,MAAM,GAAG;AAAA,UAC7B,aAAa,IAAI,QAAQ,CAAC,CAAC;AAAA,QAC7B;AAAA,QACA,aAAa,IAAI,MAAM,GAAG,KAAK,KAAK,EAAE;AAAA,QACtC,SAAS,IAAI,KAAK,EAAE;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,oBAAoB,CAC1B,cACA,QACA,UACM;AAAA,IACN,YAAY,QAAQ,iBAAiB,cAAc;AAAA,MACjD,IAAI,aAAa,UAAU,GAAG;AAAA,QAC5B,MAAM,aAAa,OAAO,OAAO,CAAC,EAAE,YAAY,IAAI,OAAO,MAAM,CAAC;AAAA,QAClE,OAAO,KAAK;AAAA,UACV,MAAM,GAAG;AAAA,UACT,YAAY;AAAA,QACd,CAAC;AAAA,MACH,EAAO;AAAA,QAEL,WAAW,MAAM,cAAc;AAAA,UAC7B,SAAS,OAAO,EAAE;AAAA,QACpB;AAAA;AAAA,IAEJ;AAAA;AAAA,EAMM,iBAAiB,CAAC,MAA6B;AAAA,IAErD,MAAM,kBAAkB,KAAK,MAC3B,uEACF;AAAA,IACA,IAAI,iBAAiB;AAAA,MACnB,OAAO,gBAAgB,MAAM;AAAA,IAC/B;AAAA,IAGA,MAAM,aAAa,KAAK,MACtB,sEACF;AAAA,IACA,IAAI,YAAY;AAAA,MACd,OAAO,WAAW,IAAI,YAAY,KAAK;AAAA,IACzC;AAAA,IAGA,IAAI,KAAK,MAAM,UAAU,GAAG;AAAA,MAC1B,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAMD,qBAAqB,CAC3B,eACA,QACA,UACM;AAAA,IACN,MAAM,gBAAgB,cAAc,OAAO,CAAC,SAAS;AAAA,MACnD,IAAI,SAAS,IAAI,KAAK,EAAE;AAAA,QAAG,OAAO;AAAA,MAClC,MAAM,OAAO,KAAK,YAAY,YAAY;AAAA,MAC1C,OACE,KAAK,SAAS,OAAO,KACrB,KAAK,SAAS,KAAK,KACnB,KAAK,SAAS,OAAO,KACrB,KAAK,SAAS,MAAM,KACpB,KAAK,SAAS,MAAM,KACpB,KAAK,SAAS,MAAM;AAAA,KAEvB;AAAA,IAED,MAAM,kBAAkB,cAAc,OAAO,CAAC,SAAS;AAAA,MACrD,IAAI,SAAS,IAAI,KAAK,EAAE;AAAA,QAAG,OAAO;AAAA,MAClC,MAAM,OAAO,KAAK,YAAY,YAAY;AAAA,MAC1C,OACE,KAAK,SAAS,SAAS,KACvB,KAAK,SAAS,KAAK,KACnB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,KAAK,KACnB,KAAK,SAAS,OAAO;AAAA,KAExB;AAAA,IAED,IAAI,cAAc,UAAU,GAAG;AAAA,MAC7B,OAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,YAAY,cAAc,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA,MAC3C,CAAC;AAAA,MACD,WAAW,KAAK,eAAe;AAAA,QAC7B,SAAS,IAAI,EAAE,EAAE;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,IAAI,gBAAgB,UAAU,GAAG;AAAA,MAC/B,OAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,YAAY,gBAAgB,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA,MAC7C,CAAC;AAAA,MACD,WAAW,KAAK,iBAAiB;AAAA,QAC/B,SAAS,IAAI,EAAE,EAAE;AAAA,MACnB;AAAA,IACF;AAAA;AAAA,EAMM,kBAAkB,CACxB,QACA,cACA,YACS;AAAA,IAET,OAAO,gBAAgB,aAAa,OAAO,OAAO,UAAU;AAAA;AAAA,EAMtD,yBAAyB,CAC/B,eAQA,QACU;AAAA,IACV,MAAM,QAAkB,CAAC;AAAA,IACzB,MAAM,qBAAqB,IAAI;AAAA,IAE/B,WAAW,SAAS,QAAQ;AAAA,MAC1B,MAAM,kBAAkB,cAAc,OAAO,CAAC,SAAS,MAAM,WAAW,SAAS,KAAK,EAAE,CAAC;AAAA,MAEzF,IAAI,gBAAgB,WAAW;AAAA,QAAG;AAAA,MAElC,MAAM,KAAK,kBAAkB,KAAK,OAAO,MAAM,IAAI,MAAM;AAAA,MAEzD,WAAW,QAAQ,iBAAiB;AAAA,QAClC,MAAM,KAAK,KAAK,4BAA4B,MAAM,YAAY,CAAC;AAAA,QAC/D,mBAAmB,IAAI,KAAK,EAAE;AAAA,MAChC;AAAA,MAEA,MAAM,KAAK,WAAW;AAAA,MACtB,MAAM,KAAK,EAAE;AAAA,IACf;AAAA,IAGA,MAAM,sBAAsB,cAAc,OAAO,CAAC,SAAS,CAAC,mBAAmB,IAAI,KAAK,EAAE,CAAC;AAAA,IAE3F,WAAW,QAAQ,qBAAqB;AAAA,MACtC,MAAM,KAAK,KAAK,4BAA4B,MAAM,UAAU,CAAC;AAAA,IAC/D;AAAA,IAEA,OAAO;AAAA;AAAA,EAGD,MAAM,CAAC,KAAqB;AAAA,IAClC,OAAO,IAAI,QAAQ,MAAM,MAAK;AAAA;AAElC;AAKO,SAAS,sBAAsB,CACpC,UACA,SACQ;AAAA,EACR,MAAM,YAAY,IAAI,wBAAwB,UAAU,OAAO;AAAA,EAC/D,OAAO,UAAU,SAAS;AAAA;;;ACj+D5B;AACA;AAgCA,eAAsB,oBAAoB,CACxC,aACA,UAC0B;AAAA,EAC1B,MAAM,YAAW,OAAO,QAAQ,SAAS,QAAQ;AAAA,EACjD,MAAM,cAAc,UAAS,QAAQ,EAAE,GAAG,SAAS,IAAI,YAAY,CAAC,CAAC;AAAA,EACrE,MAAM,eAAe,SAAS,gBAAgB,CAAC;AAAA,EAE/C,MAAM,UAAU,4BAA4B,WAAU,aAAa,YAAY;AAAA,EAE/E,MAAM,UAA2B;AAAA,IAC/B,SAAS;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR,cAAc,aAAa,WAAW,KAAK,GAAG;AAAA,MAC9C,eAAe,cAAc,WAAW;AAAA,IAC1C;AAAA,EACF;AAAA,EAGA,MAAM,eAAe,MAAM,qBAAqB,WAAW;AAAA,EAC3D,IAAI,cAAc;AAAA,IAChB,QAAQ,eAAe;AAAA,EACzB;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,2BAA2B,CAClC,WACA,WACA,QACQ;AAAA,EACR,MAAM,QAAQ;AAAA,IACZ,oBAAoB,UAAS,yBAAyB,UAAS;AAAA,EACjE;AAAA,EAEA,IAAI,OAAM,SAAS,GAAG;AAAA,IACpB,MAAM,KAAK,GAAG,OAAM,mDAAmD;AAAA,EACzE;AAAA,EAEA,MAAM,sBAAsB,UAAS,OAAO,CAAC,MAAM,GAAG,SAAS;AAAA,IAC7D,OAAO,MAAM,OAAO,KAAK,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE;AAAA,KACpD,CAAC;AAAA,EAEJ,IAAI,sBAAsB,GAAG;AAAA,IAC3B,MAAM,KAAK,GAAG,oEAAoE;AAAA,EACpF;AAAA,EAEA,OAAO,MAAM,KAAK,GAAG;AAAA;AAGvB,eAAe,oBAAoB,CACjC,aACiD;AAAA,EACjD,MAAM,aAAkB,WAAK,aAAa,SAAS,wBAAwB;AAAA,EAC3E,MAAM,cAAmB,WAAK,aAAa,SAAS,OAAO,aAAa,gBAAgB;AAAA,EAExF,IAAI;AAAA,EACJ,IAAI;AAAA,EAGJ,IAAO,eAAW,UAAU,GAAG;AAAA,IAC7B,IAAI;AAAA,MACF,MAAM,eAAoB,cAAQ,UAAU;AAAA,MAC5C,MAAM,eAAe,MAAa,iBAAU,kBAAkB,KAAK,IAAI;AAAA,MACvE,SAAS,aAAa,sBAAsB,aAAa;AAAA,MACzD,OAAO,QAAO;AAAA,MAEd,QAAQ,IAAI,6CAA6C,QAAO;AAAA;AAAA,EAEpE;AAAA,EAGA,IAAO,eAAW,WAAW,GAAG;AAAA,IAC9B,IAAI;AAAA,MACF,MAAM,QAAW,aAAS,WAAW;AAAA,MACrC,MAAM,SAAY,iBAAa,aAAa,OAAO;AAAA,MACnD,cAAc,yBAAyB,QAAQ,MAAM,KAAK;AAAA,MAC1D,OAAO,QAAO;AAAA,MAEd,QAAQ,IAAI,8CAA8C,QAAO;AAAA;AAAA,EAErE;AAAA,EAEA,IAAI,UAAU,aAAa;AAAA,IACzB,OAAO,EAAE,QAAQ,YAAY;AAAA,EAC/B;AAAA,EAEA,OAAO;AAAA;AAIT,SAAS,wBAAwB,CAC/B,QACA,WACgD;AAAA,EAChD,MAAM,SAAyD;AAAA,IAC7D,SAAS;AAAA,IACT;AAAA,EACF;AAAA,EAGA,IAAI,OAAO,SAAS,0BAA0B,KAAK,OAAO,SAAS,yBAAyB,GAAG;AAAA,IAC7F,OAAO,UAAU;AAAA,IAGjB,MAAM,cAAc,OAAO,MAAM,wBAAwB;AAAA,IACzD,MAAM,gBAAgB,OAAO,MAAM,uBAAuB;AAAA,IAC1D,IAAI,eAAe,eAAe;AAAA,MAChC,OAAO,QAAQ;AAAA,QACb,iBAAiB,cAAc,OAAO,SAAS,YAAY,IAAI,EAAE,IAAI;AAAA,QACrE,gBAAgB,gBAAgB,OAAO,SAAS,cAAc,IAAI,EAAE,IAAI;AAAA,MAC1E;AAAA,IACF;AAAA,EACF,EAAO;AAAA,IAEL,MAAM,iBAAiB,OAAO,MAAM,6BAA6B;AAAA,IACjE,IAAI,gBAAgB;AAAA,MAClB,OAAO,YAAY;AAAA,QACjB,MAAM,eAAe;AAAA,QACrB,OAAO,OAAO,MAAM;AAAA,CAAI,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,QAAQ,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,OAAO,MAAM,gBAAgB;AAAA,IAChD,IAAI,YAAY;AAAA,MACd,OAAO,QAAQ,WAAW;AAAA,IAC5B;AAAA;AAAA,EAGF,OAAO;AAAA;AAGT,SAAS,YAAY,CAAC,aAAoC;AAAA,EACxD,MAAM,YAAY;AAAA,IACX,WAAK,aAAa,eAAe;AAAA,IACjC,WAAK,aAAa,YAAY,WAAW,eAAe;AAAA,EAC/D;AAAA,EAEA,WAAW,OAAO,WAAW;AAAA,IAC3B,IAAO,eAAW,GAAG,GAAG;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,aAAa,CAAC,aAAyC;AAAA,EAC9D,MAAM,YAAY;AAAA,IACX,WAAK,aAAa,SAAS,UAAU;AAAA,IACrC,WAAK,aAAa,OAAO,SAAS,UAAU;AAAA,IAC5C,WAAK,aAAa,YAAY,WAAW,OAAO,UAAU,SAAS,cAAc;AAAA,EACxF;AAAA,EAEA,WAAW,OAAO,WAAW;AAAA,IAC3B,IAAO,eAAW,GAAG,GAAG;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA;AAAA;;;ACjMK,SAAS,sBAAsB,CAAC,SAAkC;AAAA,EACvE,MAAM,YAAW,OAAO,QAAQ,QAAQ,QAAQ,aAAa,QAAQ;AAAA,EACrE,MAAM,cAAc,UAAS,QAAQ,EAAE,GAAG,SAAS,IAAI,YAAY,CAAC,CAAC;AAAA,EACrE,MAAM,eAAe,QAAQ,QAAQ,aAAa,gBAAgB,CAAC;AAAA,EAEnE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaP,uBAAuB,SAAS,WAAU,aAAa,YAAY;AAAA;AAAA,EAEnE,4BAA4B,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
66
- "debugId": "4FDE5BCEB24CA52B64756E2164756E21",
65
+ "mappings": "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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
66
+ "debugId": "1AD3AF419335104764756E2164756E21",
67
67
  "names": []
68
68
  }