@routier/core 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capabilities/Capability.d.ts +6 -16
- package/dist/capabilities/PerformanceCapability.d.ts +4 -6
- package/dist/capabilities/TracingCapability.d.ts +3 -6
- package/dist/capabilities/index.js +399 -343
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/types.d.ts +10 -19
- package/dist/codegen/blocks.d.ts +8 -0
- package/dist/codegen/handlers/CompareIdsHandlerBuilder.d.ts +4 -0
- package/dist/codegen/handlers/compare/CompareArrayHandler.d.ts +6 -0
- package/dist/codegen/handlers/compare/CompareDateHandler.d.ts +6 -0
- package/dist/codegen/handlers/compareIds/CompareIdsKeyHandler.d.ts +6 -0
- package/dist/codegen/handlers/index.d.ts +1 -0
- package/dist/codegen/handlers/serialize/SerializeDateHandler.d.ts +2 -1
- package/dist/codegen/handlers/serialize/SerializeFunctionHandler.d.ts +6 -0
- package/dist/codegen/index.js +39 -0
- package/dist/codegen/index.js.map +1 -1
- package/dist/collections/index.js.map +1 -1
- package/dist/expressions/index.js +108 -19
- package/dist/expressions/index.js.map +1 -1
- package/dist/index.js +1105 -496
- package/dist/index.js.map +1 -1
- package/dist/pipeline/TrampolinePipeline.d.ts +1 -0
- package/dist/pipeline/index.js +71 -47
- package/dist/pipeline/index.js.map +1 -1
- package/dist/plugins/EphemeralDataPlugin.d.ts +2 -2
- package/dist/plugins/index.js +251 -61
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/query/types.d.ts +5 -0
- package/dist/plugins/replication/OptimisticReplicationDbPlugin.d.ts +2 -1
- package/dist/plugins/replication/ReplicationDbPlugin.d.ts +2 -1
- package/dist/plugins/translators/DataTranslator.d.ts +3 -1
- package/dist/plugins/translators/JsonTranslator.d.ts +1 -0
- package/dist/plugins/translators/SqlTranslator.d.ts +1 -0
- package/dist/plugins/translators/TranslatedArrayValue.d.ts +6 -0
- package/dist/plugins/translators/TranslatedGroupValue.d.ts +6 -0
- package/dist/plugins/translators/TranslatedSingleValue.d.ts +6 -0
- package/dist/plugins/translators/index.d.ts +4 -0
- package/dist/plugins/translators/types.d.ts +10 -0
- package/dist/plugins/types.d.ts +2 -1
- package/dist/schema/PropertyInfo.d.ts +6 -1
- package/dist/schema/SchemaDefinition.d.ts +1 -1
- package/dist/schema/communication/broadcast.d.ts +3 -3
- package/dist/schema/index.js +504 -73
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/property/modifiers/SchemaTracked.d.ts +3 -1
- package/dist/schema/table/SchemaComputed.d.ts +1 -1
- package/dist/schema/testSchemas.test.d.ts +60 -36
- package/dist/schema/types.d.ts +16 -1
- package/dist/utilities/index.js +145 -2
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/strings.d.ts +34 -0
- package/dist/utilities/strings.test.d.ts +1 -0
- package/package.json +1 -1
- package/readme.md +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities/index.js","sources":["webpack://@routier/core/./src/capabilities/Capability.ts","webpack://@routier/core/./src/capabilities/PerformanceCapability.ts","webpack://@routier/core/./src/capabilities/TracingCapability.ts","webpack://@routier/core/./src/capabilities/performance/PerformanceTracker.ts","webpack://@routier/core/./src/capabilities/tracing/CallTraceManager.ts","webpack://@routier/core/./src/utilities/uuid.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/capabilities/index.ts"],"sourcesContent":["import { ExplorationOptions, MethodInfo } from \"./types\";\n\nexport abstract class Capability {\n\n protected isValidObject(obj: unknown): obj is object {\n return typeof obj === \"object\" && obj !== null;\n }\n\n protected getObjectName(obj: unknown): string {\n return (obj as any)?.constructor?.name || 'root';\n }\n\n protected exploreObjectMethods(\n obj: unknown,\n callback: (methodInfo: MethodInfo) => void,\n options: ExplorationOptions = {}\n ): void {\n if (!this.isValidObject(obj)) {\n return;\n }\n\n const {\n maxDepth = 10,\n includeNonEnumerable = false,\n filter = () => true\n } = options;\n\n const rootName = this.getObjectName(obj);\n const visited = new Set<object>();\n\n // Explore root methods\n this.exploreRootMethods(obj, callback, filter);\n\n // Explore nested methods\n this.exploreNestedMethods(obj, callback, filter, [rootName], visited, maxDepth, includeNonEnumerable);\n }\n\n protected exploreRootMethods(\n obj: object,\n callback: (methodInfo: MethodInfo) => void,\n filter: (methodInfo: MethodInfo) => boolean\n ): void {\n const methodNames = this.extractMethodNames(obj);\n\n for (const methodName of methodNames) {\n const methodInfo: MethodInfo = {\n methodName,\n instance: obj,\n methodPath: [String(methodName)],\n parent: null\n };\n\n if (filter(methodInfo)) {\n callback(methodInfo);\n }\n }\n }\n\n protected extractMethodNames(obj: unknown): (string | symbol)[] {\n const methodNames = new Set<string | symbol>();\n let prototype = obj;\n\n while (prototype && prototype !== Object.prototype) {\n const allKeys = [\n ...Object.getOwnPropertyNames(prototype),\n ...Object.getOwnPropertySymbols(prototype),\n ];\n\n for (const key of allKeys) {\n const descriptor = Object.getOwnPropertyDescriptor(prototype, key);\n if (this.isCallableMethod(descriptor, key)) {\n methodNames.add(key);\n }\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n return Array.from(methodNames);\n }\n\n protected isCallableMethod(descriptor: PropertyDescriptor | undefined, key: string | symbol): boolean {\n return (\n descriptor?.value &&\n typeof descriptor.value === 'function' &&\n key !== 'constructor' &&\n key !== 'undefined'\n );\n }\n\n protected isCustomClassInstance(value: unknown): boolean {\n if (value === null || (typeof value !== \"object\" && typeof value !== \"function\")) {\n return false;\n }\n\n const objectTag = Object.prototype.toString.call(value);\n // Most built-ins have distinct tags; user classes default to \"[object Object]\"\n // Caveat: Symbol.toStringTag can spoof this.\n return objectTag === \"[object Object]\";\n }\n\n protected shouldProcessProperty(property: unknown): boolean {\n return (\n this.isCustomClassInstance(property) &&\n property?.constructor.name !== \"Object\"\n );\n }\n\n protected exploreNestedMethods(\n obj: unknown,\n callback: (methodInfo: MethodInfo) => void,\n filter: (methodInfo: MethodInfo) => boolean,\n initialPath: string[],\n visited: Set<object>,\n maxDepth: number,\n includeNonEnumerable: boolean\n ): void {\n if (visited.has(obj as object) || initialPath.length > maxDepth) {\n return;\n }\n\n visited.add(obj as object);\n\n if (!this.isValidObject(obj)) {\n return;\n }\n\n const properties = includeNonEnumerable\n ? Object.getOwnPropertyNames(obj)\n : Object.keys(obj);\n\n for (const propertyName of properties) {\n const property = (obj as any)[propertyName];\n\n if (!this.shouldProcessProperty(property)) {\n continue;\n }\n\n const newPath = [...initialPath, propertyName];\n\n // Explore methods on this property\n this.explorePropertyMethods(property, callback, filter, newPath, obj);\n\n // Recursively explore nested objects\n this.exploreNestedMethods(\n property,\n callback,\n filter,\n newPath,\n visited,\n maxDepth,\n includeNonEnumerable\n );\n }\n }\n\n private explorePropertyMethods(\n property: any,\n callback: (methodInfo: MethodInfo) => void,\n filter: (methodInfo: MethodInfo) => boolean,\n methodPath: string[],\n parent: any\n ): void {\n const methodNames = this.extractMethodNames(property);\n\n for (const methodName of methodNames) {\n const fullMethodPath = [...methodPath, String(methodName)];\n const methodInfo: MethodInfo = {\n methodName,\n instance: property,\n methodPath: fullMethodPath,\n parent\n };\n\n if (filter(methodInfo)) {\n callback(methodInfo);\n }\n }\n }\n\n protected stringifyValue(value: unknown, maxDepth: number = 3, currentDepth: number = 0): string {\n if (value === null) return 'null';\n if (value === undefined) return 'undefined';\n\n const type = typeof value;\n\n switch (type) {\n case 'string':\n return `\"${value}\"`;\n case 'number':\n case 'boolean':\n return String(value);\n case 'function':\n return `[Function: ${this.getFunctionName(value as Function)}]`;\n case 'object':\n if (currentDepth >= maxDepth) {\n return '[Max Depth Reached]';\n }\n return this.stringifyObject(value, maxDepth, currentDepth);\n default:\n return `[${type}]`;\n }\n }\n\n protected getFunctionName(fn: Function): string {\n const name = fn.name;\n return name || 'anonymous';\n }\n\n protected stringifyObject(obj: any, maxDepth: number, currentDepth: number): string {\n if (obj === null) return 'null';\n\n // Handle special object types\n if (obj instanceof Date) {\n return `Date(${obj.toISOString()})`;\n }\n\n if (obj instanceof Error) {\n return `Error(${obj.message})`;\n }\n\n if (obj instanceof RegExp) {\n return obj.toString();\n }\n\n if (Array.isArray(obj)) {\n return this.stringifyArray(obj, maxDepth, currentDepth);\n }\n\n if (obj.constructor && obj.constructor.name !== 'Object') {\n return this.stringifyClassInstance(obj, maxDepth, currentDepth);\n }\n\n return this.stringifyPlainObject(obj, maxDepth, currentDepth);\n }\n\n protected stringifyArray(arr: any[], maxDepth: number, currentDepth: number): string {\n if (arr.length === 0) return '[]';\n\n const items = arr.slice(0, 5).map(item =>\n this.stringifyValue(item, maxDepth, currentDepth + 1)\n );\n\n const suffix = arr.length > 5 ? `... (+${arr.length - 5} more)` : '';\n return `[${items.join(', ')}${suffix}]`;\n }\n\n protected stringifyClassInstance(obj: any, maxDepth: number, currentDepth: number): string {\n const className = obj.constructor.name;\n const properties = this.getObjectProperties(obj);\n\n if (Object.keys(properties).length === 0) {\n return `${className} {}`;\n }\n\n const props = Object.entries(properties)\n .slice(0, 5)\n .map(([key, value]) => {\n // For primitive values, don't increase depth\n const isPrimitive = value === null || value === undefined ||\n (typeof value !== 'object' && typeof value !== 'function');\n const depth = isPrimitive ? currentDepth : currentDepth + 1;\n return `${key}: ${this.stringifyValue(value, maxDepth, depth)}`;\n });\n\n const suffix = Object.keys(properties).length > 5 ?\n `... (+${Object.keys(properties).length - 5} more)` : '';\n\n return `${className} { ${props.join(', ')}${suffix} }`;\n }\n\n protected stringifyPlainObject(obj: any, maxDepth: number, currentDepth: number): string {\n const properties = this.getObjectProperties(obj);\n\n if (Object.keys(properties).length === 0) {\n return '{}';\n }\n\n const props = Object.entries(properties)\n .slice(0, 5)\n .map(([key, value]) => {\n // For primitive values, don't increase depth\n const isPrimitive = value === null || value === undefined ||\n (typeof value !== 'object' && typeof value !== 'function');\n const depth = isPrimitive ? currentDepth : currentDepth + 1;\n return `${key}: ${this.stringifyValue(value, maxDepth, depth)}`;\n });\n\n const suffix = Object.keys(properties).length > 5 ?\n `... (+${Object.keys(properties).length - 5} more)` : '';\n\n return `{ ${props.join(', ')}${suffix} }`;\n }\n\n protected getObjectProperties(obj: any): Record<string, any> {\n const properties: Record<string, any> = {};\n\n // Get enumerable properties\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n properties[key] = obj[key];\n }\n }\n\n return properties;\n }\n\n abstract apply(instance: unknown): void;\n}","import { Capability } from \"./Capability\";\nimport { PerformanceTracker } from \"./performance/PerformanceTracker\";\nimport { CallTraceManager } from \"./tracing/CallTraceManager\";\nimport { MethodInfo, MethodMetadata, MethodWrapper, PerformanceMetrics } from \"./types\";\n\nexport type PerformanceCapabilityOptions = {\n log?: (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n performanceMetrics: PerformanceMetrics\n ) => void;\n shouldLog: (methodName: string | symbol, metadata: MethodMetadata) => boolean\n}\n\nexport class PerformanceCapability extends Capability {\n\n private callTraceManager: CallTraceManager;\n private performanceTracker: PerformanceTracker;\n private log: (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n performanceMetrics: PerformanceMetrics,\n isCompleted: boolean\n ) => void;\n private shouldLog?: (methodName: string | symbol, metadata: MethodMetadata) => boolean;\n\n constructor(options?: PerformanceCapabilityOptions) {\n super();\n this.log = options?.log ?? ((\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n performanceMetrics: PerformanceMetrics,\n isCompleted: boolean\n ) => {\n\n if (isCompleted) {\n if (!performanceMetrics.duration) return;\n\n const deltaFromStart = this.performanceTracker.getDeltaFromOperationStart(operationId, performanceMetrics.endTime || performanceMetrics.startTime);\n\n console.log(`[${type} ${operationId}] ${methodName} COMPLETED`, {\n methodPath,\n performance: {\n deltaFromStart: this.performanceTracker.formatDuration(deltaFromStart),\n executionTime: this.performanceTracker.formatDuration(performanceMetrics.duration),\n timeToNextCall: performanceMetrics.timeToNextCall ?\n this.performanceTracker.formatDuration(performanceMetrics.timeToNextCall) : 'N/A'\n }\n });\n return;\n }\n\n const deltaFromStart = this.performanceTracker.getDeltaFromOperationStart(operationId, performanceMetrics.startTime);\n\n console.log(`[${type} ${operationId}] ${methodName}`, {\n methodPath,\n performance: {\n deltaFromStart: this.performanceTracker.formatDuration(deltaFromStart)\n }\n });\n });\n this.shouldLog = options?.shouldLog ?? (() => true);\n this.callTraceManager = new CallTraceManager();\n this.performanceTracker = new PerformanceTracker();\n }\n\n private createPerformanceInterceptor(\n originalMethod: Function,\n methodName: string,\n methodPath: string,\n instance: any\n ): Function {\n return (...args: any[]) => {\n const isNewOperation = this.callTraceManager.isNewOperation();\n let operationId: string;\n\n if (isNewOperation) {\n operationId = this.callTraceManager.startNewOperation();\n const startTime = this.performanceTracker.startMethodTiming(operationId, methodPath);\n this.log('ORIGIN', operationId, methodName, methodPath, { startTime }, false);\n } else {\n operationId = this.callTraceManager.getActiveOperationId();\n\n // Record that the previous method is about to call this one\n const callTrace = this.callTraceManager.getCurrentTrace();\n const previousMethodPath = callTrace[callTrace.length - 2];\n if (previousMethodPath) {\n this.performanceTracker.recordNextMethodStart(operationId, previousMethodPath);\n }\n\n const startTime = this.performanceTracker.startMethodTiming(operationId, methodPath);\n this.log('CHILD', operationId, methodName, methodPath, { startTime }, false);\n }\n\n try {\n const result = originalMethod.apply(instance, args);\n return result;\n } finally {\n // End performance tracking\n const performanceMetrics = this.performanceTracker.endMethodTiming(operationId, methodPath);\n\n // Log completion with performance metrics\n this.log(isNewOperation ? 'ORIGIN' : 'CHILD', operationId, methodName, methodPath, performanceMetrics, true);\n\n if (isNewOperation) {\n this.callTraceManager.endOperation();\n this.performanceTracker.cleanupOperation(operationId);\n }\n }\n };\n }\n\n override apply(instance: unknown): void {\n if (!this.isValidObject(instance)) {\n return;\n }\n\n // Create a performance wrapper\n const wrapper: MethodWrapper = {\n wrapMethod: (originalMethod: Function, methodInfo: MethodInfo) => {\n return this.createPerformanceInterceptor(\n originalMethod,\n String(methodInfo.methodName),\n methodInfo.methodPath.join(' → '),\n methodInfo.instance\n );\n }\n };\n\n // Use the generic interception utility\n this.exploreObjectMethods(instance, (methodInfo) => {\n const originalMethod = methodInfo.instance[methodInfo.methodName].bind(methodInfo.instance);\n const wrappedMethod = wrapper.wrapMethod(originalMethod, methodInfo);\n methodInfo.instance[methodInfo.methodName] = wrappedMethod;\n }, {});\n }\n}","import { Capability } from \"./Capability\";\nimport { CallTraceManager } from \"./tracing/CallTraceManager\";\nimport { MethodInfo, MethodMetadata, MethodWrapper } from \"./types\";\n\nexport type TracingCapabilityOptions = {\n log?: (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n callTrace: string[],\n formattedCallTrace: string[],\n args: any[]\n ) => void;\n shouldLog: (methodName: string | symbol, metadata: MethodMetadata) => boolean\n}\n\nexport class TracingCapability extends Capability {\n\n private callTraceManager: CallTraceManager;\n private log: (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n callTrace: string[],\n formattedCallTrace: string[],\n args: any[]\n ) => void;\n private shouldLogMethod?: (methodName: string | symbol, metadata: MethodMetadata) => boolean;\n\n constructor(options?: TracingCapabilityOptions) {\n super();\n this.log = options?.log ?? ((\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n _callTrace: string[],\n formattedCallTrace: string[],\n args: any[]\n ) => {\n const stringifiedArgs = args.map(arg => this.stringifyValue(arg, 4));\n\n const logData: any = {\n methodPath,\n callStack: formattedCallTrace,\n args: stringifiedArgs\n };\n\n console.log(`[${type} ${operationId}] ${methodName}`, logData);\n });\n this.shouldLogMethod = options?.shouldLog ?? (() => true);\n this.callTraceManager = new CallTraceManager();\n }\n\n private createTracingInterceptor(\n originalMethod: Function,\n methodName: string,\n methodPath: string,\n instance: any\n ): Function {\n return (...args: any[]) => {\n const isNewOperation = this.callTraceManager.isNewOperation();\n let operationId: string;\n let callTrace: string[];\n\n if (isNewOperation) {\n operationId = this.callTraceManager.startNewOperation();\n callTrace = this.callTraceManager.addMethodToTrace(methodPath);\n const formattedCallTrace = this.callTraceManager.formatMethodPaths(callTrace);\n this.log('ORIGIN', operationId, methodName, methodPath, callTrace, formattedCallTrace, args);\n } else {\n operationId = this.callTraceManager.getActiveOperationId();\n callTrace = this.callTraceManager.addMethodToTrace(methodPath);\n const formattedCallTrace = this.callTraceManager.formatMethodPaths(callTrace);\n this.log('CHILD', operationId, methodName, methodPath, callTrace, formattedCallTrace, args);\n }\n\n try {\n const result = originalMethod.apply(instance, args);\n return result;\n } finally {\n if (isNewOperation) {\n this.callTraceManager.endOperation();\n } else {\n this.callTraceManager.removeMethodFromTrace();\n }\n }\n };\n }\n\n\n override apply(instance: unknown): void {\n if (!this.isValidObject(instance)) {\n return;\n }\n\n const logMethodCall = (\n type: 'ORIGIN' | 'CHILD',\n operationId: string,\n methodName: string,\n methodPath: string,\n callTrace: string[],\n formattedCallTrace: string[],\n args: any[]\n ) => {\n\n if (this.log) {\n this.log(type, operationId, methodName, methodPath, callTrace, formattedCallTrace, args);\n return;\n }\n\n const stringifiedArgs = args.map(arg => this.stringifyValue(arg, 4));\n\n const logData: any = {\n methodPath,\n callStack: formattedCallTrace,\n args: stringifiedArgs\n };\n\n console.log(`[${type} ${operationId}] ${methodName}`, logData);\n }\n\n // Create a tracing wrapper\n const wrapper: MethodWrapper = {\n wrapMethod: (originalMethod: Function, methodInfo: MethodInfo) => {\n const metadata: MethodMetadata = {\n parent: methodInfo.parent,\n instance: methodInfo.instance,\n methodPath: methodInfo.methodPath\n };\n\n const shouldLog = this.shouldLogMethod(methodInfo.methodName, metadata);\n if (!shouldLog) {\n return originalMethod; // Return unwrapped method if not logging\n }\n\n return this.createTracingInterceptor(\n originalMethod,\n String(methodInfo.methodName),\n methodInfo.methodPath.join(' → '),\n methodInfo.instance\n );\n }\n }\n\n // Use the generic interception utility\n this.exploreObjectMethods(instance, (methodInfo) => {\n const originalMethod = methodInfo.instance[methodInfo.methodName].bind(methodInfo.instance);\n const wrappedMethod = wrapper.wrapMethod(originalMethod, methodInfo);\n methodInfo.instance[methodInfo.methodName] = wrappedMethod;\n }, {});\n }\n}","import { PerformanceMetrics } from \"../types\";\n\nexport class PerformanceTracker {\n private methodTimings = new Map<string, { startTime: number; nextMethodStartTime?: number }>();\n private operationStartTimes = new Map<string, number>();\n\n startMethodTiming(operationId: string, methodPath: string): number {\n const startTime = performance.now();\n const key = `${operationId}:${methodPath}`;\n\n // Track operation start time for delta calculations\n if (!this.operationStartTimes.has(operationId)) {\n this.operationStartTimes.set(operationId, startTime);\n }\n\n this.methodTimings.set(key, { startTime });\n return startTime;\n }\n\n recordNextMethodStart(operationId: string, methodPath: string): void {\n const key = `${operationId}:${methodPath}`;\n const timing = this.methodTimings.get(key);\n if (timing) {\n timing.nextMethodStartTime = performance.now();\n }\n }\n\n endMethodTiming(operationId: string, methodPath: string): PerformanceMetrics {\n const endTime = performance.now();\n const key = `${operationId}:${methodPath}`;\n const timing = this.methodTimings.get(key);\n\n if (!timing) {\n return { startTime: endTime };\n }\n\n const duration = endTime - timing.startTime;\n const timeToNextCall = timing.nextMethodStartTime ?\n timing.nextMethodStartTime - timing.startTime : undefined;\n\n // Clean up\n this.methodTimings.delete(key);\n\n return {\n startTime: timing.startTime,\n endTime,\n duration,\n nextMethodStartTime: timing.nextMethodStartTime,\n timeToNextCall\n };\n }\n\n formatDuration(milliseconds: number): string {\n if (milliseconds < 1) {\n return `${(milliseconds * 1000).toFixed(1)}μs`;\n } else if (milliseconds < 1000) {\n return `${milliseconds.toFixed(2)}ms`;\n } else {\n return `${(milliseconds / 1000).toFixed(2)}s`;\n }\n }\n\n getDeltaFromOperationStart(operationId: string, currentTime: number): number {\n const operationStartTime = this.operationStartTimes.get(operationId);\n return operationStartTime ? currentTime - operationStartTime : 0;\n }\n\n cleanupOperation(operationId: string): void {\n this.operationStartTimes.delete(operationId);\n }\n}","import { uuid } from \"../../utilities\";\n\nexport class CallTraceManager {\n private activeOperationId: string | null = null;\n private activeCallStack: string[] = [];\n\n startNewOperation(): string {\n const operationId = uuid();\n this.activeOperationId = operationId;\n this.activeCallStack = [];\n return operationId;\n }\n\n isNewOperation(): boolean {\n return this.activeOperationId === null;\n }\n\n getActiveOperationId(): string {\n if (!this.activeOperationId) {\n throw new Error('No active operation context');\n }\n return this.activeOperationId;\n }\n\n addMethodToTrace(methodPath: string): string[] {\n if (this.isNewOperation()) {\n this.activeCallStack = [methodPath];\n } else {\n this.activeCallStack.push(methodPath);\n }\n return [...this.activeCallStack];\n }\n\n removeMethodFromTrace(): void {\n if (!this.isNewOperation()) {\n this.activeCallStack.pop();\n }\n }\n\n endOperation(): void {\n this.activeOperationId = null;\n this.activeCallStack = [];\n }\n\n formatMethodPaths(methodPaths: string[]): string[] {\n return methodPaths.map(path => path.replace(/ → /g, '.'));\n }\n\n getCurrentTrace(): string[] {\n return [...this.activeCallStack];\n }\n}","export const uuid = (length: number = 16): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charLength = chars.length;\n let result = '';\n\n for (let i = 0; i < length; i++) {\n result += chars[Math.random() * charLength | 0];\n }\n return result;\n}\n\nconst HEX_CHARS = '0123456789abcdef';\nconst UUID_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\nconst hasCrypto =\n typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function';\n\nexport const uuidv4 = (): string => {\n let randomBytes: Uint8Array | null = null;\n if (hasCrypto) {\n randomBytes = crypto.getRandomValues(new Uint8Array(16));\n }\n\n let byteIndex = 0;\n let uuid = '';\n\n for (let i = 0; i < UUID_TEMPLATE.length; i++) {\n const c = UUID_TEMPLATE[i];\n if (c === '-') {\n uuid += '-';\n continue;\n }\n\n let r: number;\n if (hasCrypto && randomBytes) {\n // Each byte gives two hex digits (nibbles)\n r =\n (i % 2 === 0\n ? randomBytes[byteIndex] >> 4\n : randomBytes[byteIndex++] & 0x0f);\n } else {\n r = Math.floor(Math.random() * 16);\n }\n\n if (c === 'x') {\n uuid += HEX_CHARS[r];\n } else if (c === 'y') {\n // Variant bits: 8, 9, A, or B\n uuid += HEX_CHARS[(r & 0x3) | 0x8];\n } else if (c === '4') {\n uuid += '4';\n }\n }\n\n return uuid;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export { Capability } from './Capability';\nexport { PerformanceCapability } from './PerformanceCapability';\nexport { TracingCapability } from './TracingCapability';\nexport * from './types';"],"names":[],"mappings":";;;;;;;;;;AAEO,MAAe,UAAU;IAElB,aAAa,CAAC,GAAY;QAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC;IACnD,CAAC;IAES,aAAa,CAAC,GAAY;QAChC,OAAQ,GAAW,EAAE,WAAW,EAAE,IAAI,IAAI,MAAM,CAAC;IACrD,CAAC;IAES,oBAAoB,CAC1B,GAAY,EACZ,QAA0C,EAC1C,UAA8B,EAAE;QAEhC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;QACX,CAAC;QAED,MAAM,EACF,QAAQ,GAAG,EAAE,EACb,oBAAoB,GAAG,KAAK,EAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,EACtB,GAAG,OAAO,CAAC;QAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,uBAAuB;QACvB,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE/C,yBAAyB;QACzB,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IAC1G,CAAC;IAES,kBAAkB,CACxB,GAAW,EACX,QAA0C,EAC1C,MAA2C;QAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAEjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACnC,MAAM,UAAU,GAAe;gBAC3B,UAAU;gBACV,QAAQ,EAAE,GAAG;gBACb,UAAU,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAChC,MAAM,EAAE,IAAI;aACf,CAAC;YAEF,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAES,kBAAkB,CAAC,GAAY;QACrC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC/C,IAAI,SAAS,GAAG,GAAG,CAAC;QAEpB,OAAO,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG;gBACZ,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC;gBACxC,GAAG,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC;aAC7C,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACnE,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;oBACzC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;YACD,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAES,gBAAgB,CAAC,UAA0C,EAAE,GAAoB;QACvF,OAAO,CACH,UAAU,EAAE,KAAK;YACjB,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU;YACtC,GAAG,KAAK,aAAa;YACrB,GAAG,KAAK,WAAW,CACtB,CAAC;IACN,CAAC;IAES,qBAAqB,CAAC,KAAc;QAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC;YAC/E,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,+EAA+E;QAC/E,6CAA6C;QAC7C,OAAO,SAAS,KAAK,iBAAiB,CAAC;IAC3C,CAAC;IAES,qBAAqB,CAAC,QAAiB;QAC7C,OAAO,CACH,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YACpC,QAAQ,EAAE,WAAW,CAAC,IAAI,KAAK,QAAQ,CAC1C,CAAC;IACN,CAAC;IAES,oBAAoB,CAC1B,GAAY,EACZ,QAA0C,EAC1C,MAA2C,EAC3C,WAAqB,EACrB,OAAoB,EACpB,QAAgB,EAChB,oBAA6B;QAE7B,IAAI,OAAO,CAAC,GAAG,CAAC,GAAa,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC9D,OAAO;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,oBAAoB;YACnC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC;YACjC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAI,GAAW,CAAC,YAAY,CAAC,CAAC;YAE5C,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxC,SAAS;YACb,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,EAAE,YAAY,CAAC,CAAC;YAE/C,mCAAmC;YACnC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YAEtE,qCAAqC;YACrC,IAAI,CAAC,oBAAoB,CACrB,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACR,oBAAoB,CACvB,CAAC;QACN,CAAC;IACL,CAAC;IAEO,sBAAsB,CAC1B,QAAa,EACb,QAA0C,EAC1C,MAA2C,EAC3C,UAAoB,EACpB,MAAW;QAEX,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEtD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACnC,MAAM,cAAc,GAAG,CAAC,GAAG,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAe;gBAC3B,UAAU;gBACV,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,cAAc;gBAC1B,MAAM;aACT,CAAC;YAEF,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAES,cAAc,CAAC,KAAc,EAAE,WAAmB,CAAC,EAAE,eAAuB,CAAC;QACnF,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC;QAE5C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;QAE1B,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,QAAQ;gBACT,OAAO,IAAI,KAAK,GAAG,CAAC;YACxB,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS;gBACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,UAAU;gBACX,OAAO,cAAc,IAAI,CAAC,eAAe,CAAC,KAAiB,CAAC,GAAG,CAAC;YACpE,KAAK,QAAQ;gBACT,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;oBAC3B,OAAO,qBAAqB,CAAC;gBACjC,CAAC;gBACD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC/D;gBACI,OAAO,IAAI,IAAI,GAAG,CAAC;QAC3B,CAAC;IACL,CAAC;IAES,eAAe,CAAC,EAAY;QAClC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,OAAO,IAAI,IAAI,WAAW,CAAC;IAC/B,CAAC;IAES,eAAe,CAAC,GAAQ,EAAE,QAAgB,EAAE,YAAoB;QACtE,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QAEhC,8BAA8B;QAC9B,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;YACtB,OAAO,QAAQ,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;QACxC,CAAC;QAED,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACvB,OAAO,SAAS,GAAG,CAAC,OAAO,GAAG,CAAC;QACnC,CAAC;QAED,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IAES,cAAc,CAAC,GAAU,EAAE,QAAgB,EAAE,YAAoB;QACvE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAElC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACrC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC,CACxD,CAAC;QAEF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC;IAC5C,CAAC;IAES,sBAAsB,CAAC,GAAQ,EAAE,QAAgB,EAAE,YAAoB;QAC7E,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,GAAG,SAAS,KAAK,CAAC;QAC7B,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;aACnC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAClB,6CAA6C;YAC7C,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBACrD,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;YAC5D,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;QAEP,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/C,SAAS,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,OAAO,GAAG,SAAS,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC;IAC3D,CAAC;IAES,oBAAoB,CAAC,GAAQ,EAAE,QAAgB,EAAE,YAAoB;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;aACnC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAClB,6CAA6C;YAC7C,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBACrD,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;YAC5D,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;QAEP,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/C,SAAS,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC;IAC9C,CAAC;IAES,mBAAmB,CAAC,GAAQ;QAClC,MAAM,UAAU,GAAwB,EAAE,CAAC;QAE3C,4BAA4B;QAC5B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;CAGJ;;;;;;;;;;;;;;;;AClTyC;AAC4B;AACR;AAcvD,MAAM,qBAAsB,SAAQ,mDAAU;IAEzC,gBAAgB,CAAmB;IACnC,kBAAkB,CAAqB;IACvC,GAAG,CAOD;IACF,SAAS,CAAsE;IAEvF,YAAY,OAAsC;QAC9C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,CACxB,IAAwB,EACxB,WAAmB,EACnB,UAAkB,EAClB,UAAkB,EAClB,kBAAsC,EACtC,WAAoB,EACtB,EAAE;YAEA,IAAI,WAAW,EAAE,CAAC;gBACd,IAAI,CAAC,kBAAkB,CAAC,QAAQ;oBAAE,OAAO;gBAEzC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,WAAW,EAAE,kBAAkB,CAAC,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAEnJ,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,WAAW,KAAK,UAAU,YAAY,EAAE;oBAC5D,UAAU;oBACV,WAAW,EAAE;wBACT,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC;wBACtE,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC;wBAClF,cAAc,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;4BAC/C,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK;qBACxF;iBACJ,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,WAAW,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAErH,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,WAAW,KAAK,UAAU,EAAE,EAAE;gBAClD,UAAU;gBACV,WAAW,EAAE;oBACT,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC;iBACzE;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,uEAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,+EAAkB,EAAE,CAAC;IACvD,CAAC;IAEO,4BAA4B,CAChC,cAAwB,EACxB,UAAkB,EAClB,UAAkB,EAClB,QAAa;QAEb,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;YACtB,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;YAC9D,IAAI,WAAmB,CAAC;YAExB,IAAI,cAAc,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;gBACxD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACrF,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;gBAE3D,4DAA4D;gBAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC;gBAC1D,MAAM,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC3D,IAAI,kBAAkB,EAAE,CAAC;oBACrB,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;gBACnF,CAAC;gBAED,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACrF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;YACjF,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACpD,OAAO,MAAM,CAAC;YAClB,CAAC;oBAAS,CAAC;gBACP,2BAA2B;gBAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBAE5F,0CAA0C;gBAC1C,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;gBAE7G,IAAI,cAAc,EAAE,CAAC;oBACjB,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;oBACrC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAC1D,CAAC;YACL,CAAC;QACL,CAAC,CAAC;IACN,CAAC;IAEQ,KAAK,CAAC,QAAiB;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO;QACX,CAAC;QAED,+BAA+B;QAC/B,MAAM,OAAO,GAAkB;YAC3B,UAAU,EAAE,CAAC,cAAwB,EAAE,UAAsB,EAAE,EAAE;gBAC7D,OAAO,IAAI,CAAC,4BAA4B,CACpC,cAAc,EACd,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAC7B,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EACjC,UAAU,CAAC,QAAQ,CACtB,CAAC;YACN,CAAC;SACJ,CAAC;QAEF,uCAAuC;QACvC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE;YAC/C,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5F,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACrE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC;QAC/D,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;CACJ;;;;;;;;;;;;;;;AC9IyC;AACoB;AAgBvD,MAAM,iBAAkB,SAAQ,mDAAU;IAErC,gBAAgB,CAAmB;IACnC,GAAG,CAQD;IACF,eAAe,CAAsE;IAE7F,YAAY,OAAkC;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,CACxB,IAAwB,EACxB,WAAmB,EACnB,UAAkB,EAClB,UAAkB,EAClB,UAAoB,EACpB,kBAA4B,EAC5B,IAAW,EACb,EAAE;YACA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAErE,MAAM,OAAO,GAAQ;gBACjB,UAAU;gBACV,SAAS,EAAE,kBAAkB;gBAC7B,IAAI,EAAE,eAAe;aACxB,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,WAAW,KAAK,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,uEAAgB,EAAE,CAAC;IACnD,CAAC;IAEO,wBAAwB,CAC5B,cAAwB,EACxB,UAAkB,EAClB,UAAkB,EAClB,QAAa;QAEb,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;YACtB,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;YAC9D,IAAI,WAAmB,CAAC;YACxB,IAAI,SAAmB,CAAC;YAExB,IAAI,cAAc,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;gBACxD,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC/D,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC9E,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;YACjG,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;gBAC3D,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC/D,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC9E,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;YAChG,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACpD,OAAO,MAAM,CAAC;YAClB,CAAC;oBAAS,CAAC;gBACP,IAAI,cAAc,EAAE,CAAC;oBACjB,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;gBAClD,CAAC;YACL,CAAC;QACL,CAAC,CAAC;IACN,CAAC;IAGQ,KAAK,CAAC,QAAiB;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO;QACX,CAAC;QAED,MAAM,aAAa,GAAG,CAClB,IAAwB,EACxB,WAAmB,EACnB,UAAkB,EAClB,UAAkB,EAClB,SAAmB,EACnB,kBAA4B,EAC5B,IAAW,EACb,EAAE;YAEA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;gBACzF,OAAO;YACX,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAErE,MAAM,OAAO,GAAQ;gBACjB,UAAU;gBACV,SAAS,EAAE,kBAAkB;gBAC7B,IAAI,EAAE,eAAe;aACxB,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,WAAW,KAAK,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QAED,2BAA2B;QAC3B,MAAM,OAAO,GAAkB;YAC3B,UAAU,EAAE,CAAC,cAAwB,EAAE,UAAsB,EAAE,EAAE;gBAC7D,MAAM,QAAQ,GAAmB;oBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,UAAU,EAAE,UAAU,CAAC,UAAU;iBACpC,CAAC;gBAEF,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACxE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,OAAO,cAAc,CAAC,CAAC,yCAAyC;gBACpE,CAAC;gBAED,OAAO,IAAI,CAAC,wBAAwB,CAChC,cAAc,EACd,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAC7B,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EACjC,UAAU,CAAC,QAAQ,CACtB,CAAC;YACN,CAAC;SACJ;QAED,uCAAuC;QACvC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE;YAC/C,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5F,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACrE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC;QAC/D,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;CACJ;;;;;;;;;;;;;ACxJM,MAAM,kBAAkB;IACnB,aAAa,GAAG,IAAI,GAAG,EAA+D,CAAC;IACvF,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExD,iBAAiB,CAAC,WAAmB,EAAE,UAAkB;QACrD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,GAAG,WAAW,IAAI,UAAU,EAAE,CAAC;QAE3C,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,qBAAqB,CAAC,WAAmB,EAAE,UAAkB;QACzD,MAAM,GAAG,GAAG,GAAG,WAAW,IAAI,UAAU,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACnD,CAAC;IACL,CAAC;IAED,eAAe,CAAC,WAAmB,EAAE,UAAkB;QACnD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,GAAG,WAAW,IAAI,UAAU,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;QAC5C,MAAM,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC/C,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9D,WAAW;QACX,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE/B,OAAO;YACH,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO;YACP,QAAQ;YACR,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,cAAc;SACjB,CAAC;IACN,CAAC;IAED,cAAc,CAAC,YAAoB;QAC/B,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC;aAAM,IAAI,YAAY,GAAG,IAAI,EAAE,CAAC;YAC7B,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,CAAC;IACL,CAAC;IAED,0BAA0B,CAAC,WAAmB,EAAE,WAAmB;QAC/D,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrE,OAAO,kBAAkB,CAAC,CAAC,CAAC,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,gBAAgB,CAAC,WAAmB;QAChC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;CACJ;;;;;;;;;;;;;;ACtEsC;AAEhC,MAAM,gBAAgB;IACjB,iBAAiB,GAAkB,IAAI,CAAC;IACxC,eAAe,GAAa,EAAE,CAAC;IAEvC,iBAAiB;QACb,MAAM,WAAW,GAAG,gDAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC;IAC3C,CAAC;IAED,oBAAoB;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,gBAAgB,CAAC,UAAkB;QAC/B,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,GAAG,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IAED,qBAAqB;QACjB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,YAAY;QACR,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,iBAAiB,CAAC,WAAqB;QACnC,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,eAAe;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;CACJ;;;;;;;;;;;;;;ACnDM,MAAM,IAAI,GAAG,CAAC,SAAiB,EAAE,EAAU,EAAE;IAChD,MAAM,KAAK,GAAG,gEAAgE,CAAC;IAC/E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,SAAS,GAAG,kBAAkB,CAAC;AACrC,MAAM,aAAa,GAAG,sCAAsC,CAAC;AAE7D,MAAM,SAAS,GACX,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,CAAC;AAE3E,MAAM,MAAM,GAAG,GAAW,EAAE;IAC/B,IAAI,WAAW,GAAsB,IAAI,CAAC;IAC1C,IAAI,SAAS,EAAE,CAAC;QACZ,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACZ,IAAI,IAAI,GAAG,CAAC;YACZ,SAAS;QACb,CAAC;QAED,IAAI,CAAS,CAAC;QACd,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;YAC3B,2CAA2C;YAC3C,CAAC;gBACG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;oBACR,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC7B,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACZ,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,8BAA8B;YAC9B,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,IAAI,IAAI,GAAG,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvDF;AACA;AACA;AACA,kDAAkD,wCAAwC;AAC1F;AACA;AACA;;;;ACNA;;;;ACAA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA,gDAAgD,aAAa;AAC7D;;;;;;;;;;;;;;;;;;;ACN0C;AACsB;AACR;AAChC"}
|
|
1
|
+
{"version":3,"file":"capabilities/index.js","sources":["webpack://@routier/core/./src/capabilities/Capability.ts","webpack://@routier/core/./src/capabilities/PerformanceCapability.ts","webpack://@routier/core/./src/capabilities/TracingCapability.ts","webpack://@routier/core/./src/capabilities/performance/PerformanceTracker.ts","webpack://@routier/core/./src/capabilities/tracing/CallTraceManager.ts","webpack://@routier/core/./src/utilities/strings.ts","webpack://@routier/core/./src/utilities/uuid.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/capabilities/index.ts"],"sourcesContent":["import { MethodInfo, MethodInfoMetadata } from \"./types\";\n\nexport abstract class Capability {\n\n protected excludedNames = new Set<string>([\n \"Array\",\n \"Set\",\n \"Map\",\n \"AbortController\",\n \"AbortSignal\",\n \"SchemaString\",\n \"SchemaNumber\",\n \"SchemaArray\",\n \"SchemaBoolean\",\n \"SchemaDate\",\n \"SchemaObject\",\n \"SchemaDefault\",\n \"SchemaDeserialize\",\n \"SchemaDistinct\",\n \"SchemaFrom\",\n \"SchemaIdentity\",\n \"SchemaIndex\",\n \"SchemaKey\",\n \"SchemaNullable\",\n \"SchemaOptional\",\n \"SchemaReadonly\",\n \"SchemaSerialize\",\n \"SchemaTracked\",\n \"SchemaComputed\",\n \"SchemaFunction\",\n \"SchemaBase\",\n \"SchemaDefinition\"\n ]);\n\n protected isValidObject(obj: unknown): obj is object {\n return typeof obj === \"object\" && obj !== null;\n }\n\n protected isCallableMethod(descriptor: PropertyDescriptor | undefined, key: string | symbol): boolean {\n return (\n descriptor?.value &&\n typeof descriptor.value === 'function' &&\n key !== 'constructor' &&\n key !== 'undefined'\n );\n }\n\n\n private canExplore(descriptor: PropertyDescriptor) {\n if (typeof descriptor.value !== \"object\") {\n return false;\n }\n\n if (descriptor.value == null) {\n return false\n }\n\n const name = this.getName(descriptor.value);\n\n if (name == null) {\n return true;\n }\n\n return this.excludedNames.has(name) === false\n }\n\n private getName(value: object) {\n if (value.constructor != null) {\n return value.constructor.name;\n }\n\n return null;\n }\n\n private getPath(info: MethodInfoMetadata, propertyName: string | symbol) {\n\n let parent = info.parent;\n const path = [info.propertyName, propertyName];\n\n while (parent != null) {\n\n path.unshift(parent.propertyName);\n parent = parent.parent;\n }\n\n return path.join(\".\");\n }\n\n protected explore(instance: unknown, onDiscover: (info: MethodInfoMetadata, methodInfo: MethodInfo) => void): void {\n if (!this.isValidObject(instance)) {\n return;\n }\n\n const explore: MethodInfoMetadata[] = [{ instance, propertyName: this.getName(instance) }];\n const visited = new Set<object>();\n\n for (let i = 0; i < explore.length; i++) {\n\n const info = explore[i];\n const item = info.instance;\n\n if (visited.has(item)) {\n continue;\n }\n\n const allKeys = [\n ...Object.getOwnPropertyNames(item),\n ...Object.getOwnPropertySymbols(item),\n ];\n\n for (const key of allKeys) {\n\n const descriptor = Object.getOwnPropertyDescriptor(item, key);\n\n const isCallable = this.isCallableMethod(descriptor, key);\n\n onDiscover(info, {\n name: key,\n isCallable\n });\n\n if (this.canExplore(descriptor) === false) {\n continue;\n }\n\n const path = this.getPath(info, key);\n explore.push({ instance: descriptor.value, parent: info, propertyName: key, path });\n }\n\n visited.add(item);\n }\n }\n\n abstract apply(instance: unknown): void;\n}","import { stringifyObject } from \"../utilities\";\nimport { Capability } from \"./Capability\";\nimport { PerformanceTracker } from \"./performance/PerformanceTracker\";\nimport { CallTraceManager } from \"./tracing/CallTraceManager\";\nimport { MethodInfoMetadata, MethodInfo } from \"./types\";\n\nexport type PerformanceCapabilityOptions = {\n filter: (methodName: string | symbol, methodInfo: MethodInfo, metadata: MethodInfoMetadata) => boolean\n}\n\nexport class PerformanceCapability extends Capability {\n\n private callTraceManager: CallTraceManager;\n private performanceTracker: PerformanceTracker;\n private filter: (methodName: string | symbol, methodInfo: MethodInfo, metadata: MethodInfoMetadata) => boolean;\n private childDurations: Map<string, number[]> = new Map();\n\n constructor(options?: PerformanceCapabilityOptions) {\n super();\n this.filter = options?.filter ?? (() => true)\n this.callTraceManager = new CallTraceManager();\n this.performanceTracker = new PerformanceTracker();\n }\n\n override apply(instance: unknown): void {\n\n this.explore(instance, (meta, info) => {\n\n if (info.isCallable) {\n const originalMethod = meta.instance[info.name].bind(meta.instance);\n\n meta.instance[info.name] = (...args: any[]) => {\n\n const path = `${meta.path!}.${String(info.name)}()`;\n\n if (this.filter(path, info, meta) === false) {\n return originalMethod(...args);\n }\n\n const isNewOperation = this.callTraceManager.isNewOperation();\n let operationId: string;\n let callTrace: string[];\n let depth: number;\n\n if (isNewOperation) {\n operationId = this.callTraceManager.startNewOperation();\n this.childDurations.set(operationId, []);\n callTrace = this.callTraceManager.addMethodToTrace(path);\n depth = callTrace.length - 1;\n const formattedCallTrace = this.callTraceManager.formatMethodPaths(callTrace);\n\n this.performanceTracker.startMethodTiming(operationId, path);\n\n console.log(`\\n${'═'.repeat(60)}`);\n console.log(`▶ ORIGIN [${operationId}] ${path}`);\n if (args.length > 0) {\n console.log(` Args:`, stringifyObject(args, 4, 0));\n }\n console.log(` Call Stack: ${formattedCallTrace.join(' → ')}`);\n } else {\n operationId = this.callTraceManager.getActiveOperationId();\n callTrace = this.callTraceManager.addMethodToTrace(path);\n depth = callTrace.length - 1;\n const indent = ' '.repeat(Math.min(depth, 4));\n\n // Track children for this child method too\n const childMethodKey = `${operationId}:${path}`;\n this.childDurations.set(childMethodKey, []);\n\n this.performanceTracker.startMethodTiming(operationId, path);\n\n console.log(`${indent}└─ CHILD [${operationId}] ${path}`);\n if (args.length > 0) {\n console.log(`${indent} Args:`, stringifyObject(args, 4, 0));\n }\n }\n\n try {\n return originalMethod(...args);\n } finally {\n const metrics = this.performanceTracker.endMethodTiming(operationId, path);\n const duration = metrics.duration ?? 0;\n const formattedDuration = this.performanceTracker.formatDuration(duration);\n\n if (isNewOperation) {\n const childDurations = this.childDurations.get(operationId) ?? [];\n const totalChildTime = childDurations.reduce((sum, d) => sum + d, 0);\n const formattedTotalChildTime = this.performanceTracker.formatDuration(totalChildTime);\n const overhead = duration - totalChildTime;\n const formattedOverhead = this.performanceTracker.formatDuration(Math.max(0, overhead));\n\n console.log(`\\n${'═'.repeat(60)}`);\n console.log(`◀ COMPLETE [${operationId}] ${path}`);\n console.log(` Total Duration: ${formattedDuration}`);\n if (childDurations.length > 0) {\n console.log(` Children Duration: ${formattedTotalChildTime} (${childDurations.length} calls)`);\n console.log(` Overhead: ${formattedOverhead}`);\n }\n console.log(`${'═'.repeat(60)}\\n`);\n\n this.childDurations.delete(operationId);\n this.performanceTracker.cleanupOperation(operationId);\n this.callTraceManager.endOperation();\n } else {\n const indent = ' '.repeat(Math.min(depth, 4));\n const childMethodKey = `${operationId}:${path}`;\n const childDurations = this.childDurations.get(childMethodKey) ?? [];\n const totalChildTime = childDurations.reduce((sum, d) => sum + d, 0);\n const formattedTotalChildTime = this.performanceTracker.formatDuration(totalChildTime);\n const overhead = duration - totalChildTime;\n const formattedOverhead = this.performanceTracker.formatDuration(Math.max(0, overhead));\n\n console.log(`${indent} ✓ ${formattedDuration}`);\n if (childDurations.length > 0) {\n console.log(`${indent} Children: ${formattedTotalChildTime} (${childDurations.length} calls), Overhead: ${formattedOverhead}`);\n }\n\n // Clean up child method tracking\n this.childDurations.delete(childMethodKey);\n\n // Find the parent method and add this duration to its children list\n // The parent is the method one level up in the call trace\n const currentTrace = this.callTraceManager.getCurrentTrace();\n if (currentTrace.length > 1) {\n // Parent is the second-to-last item in the trace (before we remove current)\n const parentPath = currentTrace[currentTrace.length - 2];\n\n // Check if parent is the root operation (trace length 2 means root + this child)\n if (currentTrace.length === 2) {\n // Direct child of root - add to root's children list\n const rootChildDurations = this.childDurations.get(operationId);\n if (rootChildDurations) {\n rootChildDurations.push(duration);\n }\n } else {\n // Nested child - add to parent method's children list\n const parentMethodKey = `${operationId}:${parentPath}`;\n const parentChildDurations = this.childDurations.get(parentMethodKey);\n if (parentChildDurations) {\n parentChildDurations.push(duration);\n }\n }\n }\n }\n\n this.callTraceManager.removeMethodFromTrace();\n }\n }\n }\n });\n }\n}","import { Capability } from \"./Capability\";\nimport { CallTraceManager } from \"./tracing/CallTraceManager\";\nimport { stringifyObject } from \"../utilities/strings\";\nimport { MethodInfo, MethodInfoMetadata } from \"./types\";\n\nexport type TracingCapabilityOptions = {\n filter: (methodName: string | symbol, methodInfo: MethodInfo, metadata: MethodInfoMetadata) => boolean\n}\n\nexport class TracingCapability extends Capability {\n\n private callTraceManager: CallTraceManager;\n private filter: (methodName: string | symbol, methodInfo: MethodInfo, metadata: MethodInfoMetadata) => boolean;\n\n constructor(options?: TracingCapabilityOptions) {\n super();\n this.filter = options?.filter ?? (() => true);\n this.callTraceManager = new CallTraceManager();\n }\n\n override apply(instance: unknown): void {\n\n this.explore(instance, (meta, info) => {\n\n if (info.isCallable) {\n\n const originalMethod = meta.instance[info.name].bind(meta.instance);\n\n meta.instance[info.name] = (...args: any[]) => {\n\n const path = `${meta.path!}.${String(info.name)}()`;\n\n if (this.filter(path, info, meta) === false) {\n return originalMethod(...args);\n }\n\n const isNewOperation = this.callTraceManager.isNewOperation();\n let operationId: string;\n\n if (isNewOperation) {\n operationId = this.callTraceManager.startNewOperation();\n const callTrace = this.callTraceManager.addMethodToTrace(path);\n const formattedCallTrace = this.callTraceManager.formatMethodPaths(callTrace);\n\n console.log(`\\n${'═'.repeat(60)}`);\n console.log(`▶ ORIGIN [${operationId}] ${path}`);\n if (args.length > 0) {\n console.log(` Args:`, stringifyObject(args, 4, 0));\n }\n console.log(` Call Stack: ${formattedCallTrace.join(' → ')}`);\n } else {\n operationId = this.callTraceManager.getActiveOperationId();\n const callTrace = this.callTraceManager.addMethodToTrace(path);\n\n const indent = ' '.repeat(Math.min(callTrace.length - 1, 4));\n console.log(`${indent}└─ CHILD [${operationId}] ${path}`);\n if (args.length > 0) {\n console.log(`${indent} Args:`, stringifyObject(args, 4, 0));\n }\n }\n\n try {\n return originalMethod(...args);\n } finally {\n this.callTraceManager.removeMethodFromTrace();\n\n if (isNewOperation) {\n this.callTraceManager.endOperation();\n }\n }\n }\n }\n\n });\n }\n}","import { PerformanceMetrics } from \"../types\";\n\nexport class PerformanceTracker {\n private methodTimings = new Map<string, { startTime: number; nextMethodStartTime?: number }>();\n private operationStartTimes = new Map<string, number>();\n\n startMethodTiming(operationId: string, methodPath: string): number {\n const startTime = performance.now();\n const key = `${operationId}:${methodPath}`;\n\n // Track operation start time for delta calculations\n if (!this.operationStartTimes.has(operationId)) {\n this.operationStartTimes.set(operationId, startTime);\n }\n\n this.methodTimings.set(key, { startTime });\n return startTime;\n }\n\n recordNextMethodStart(operationId: string, methodPath: string): void {\n const key = `${operationId}:${methodPath}`;\n const timing = this.methodTimings.get(key);\n if (timing) {\n timing.nextMethodStartTime = performance.now();\n }\n }\n\n endMethodTiming(operationId: string, methodPath: string): PerformanceMetrics {\n const endTime = performance.now();\n const key = `${operationId}:${methodPath}`;\n const timing = this.methodTimings.get(key);\n\n if (!timing) {\n return { startTime: endTime };\n }\n\n const duration = endTime - timing.startTime;\n const timeToNextCall = timing.nextMethodStartTime ?\n timing.nextMethodStartTime - timing.startTime : undefined;\n\n // Clean up\n this.methodTimings.delete(key);\n\n return {\n startTime: timing.startTime,\n endTime,\n duration,\n nextMethodStartTime: timing.nextMethodStartTime,\n timeToNextCall\n };\n }\n\n formatDuration(milliseconds: number): string {\n if (milliseconds < 1) {\n return `${(milliseconds * 1000).toFixed(1)}μs`;\n } else if (milliseconds < 1000) {\n return `${milliseconds.toFixed(2)}ms`;\n } else {\n return `${(milliseconds / 1000).toFixed(2)}s`;\n }\n }\n\n getDeltaFromOperationStart(operationId: string, currentTime: number): number {\n const operationStartTime = this.operationStartTimes.get(operationId);\n return operationStartTime ? currentTime - operationStartTime : 0;\n }\n\n cleanupOperation(operationId: string): void {\n this.operationStartTimes.delete(operationId);\n }\n}","import { uuid } from \"../../utilities\";\n\nexport class CallTraceManager {\n private activeOperationId: string | null = null;\n private activeCallStack: string[] = [];\n\n startNewOperation(): string {\n const operationId = uuid(8);\n this.activeOperationId = operationId;\n this.activeCallStack = [];\n return operationId;\n }\n\n isNewOperation(): boolean {\n return this.activeOperationId === null;\n }\n\n getActiveOperationId(): string {\n if (!this.activeOperationId) {\n throw new Error('No active operation context');\n }\n return this.activeOperationId;\n }\n\n addMethodToTrace(methodPath: string): string[] {\n if (this.isNewOperation()) {\n this.activeCallStack = [methodPath];\n } else {\n this.activeCallStack.push(methodPath);\n }\n return [...this.activeCallStack];\n }\n\n removeMethodFromTrace(): void {\n if (!this.isNewOperation()) {\n this.activeCallStack.pop();\n }\n }\n\n endOperation(): void {\n this.activeOperationId = null;\n this.activeCallStack = [];\n }\n\n formatMethodPaths(methodPaths: string[]): string[] {\n return methodPaths.map(path => path.replace(/ → /g, '.'));\n }\n\n getCurrentTrace(): string[] {\n return [...this.activeCallStack];\n }\n}","export const hash = (value: string, seed: number = 0) => {\n // From Stack Overflow\n // https://stackoverflow.com/a/52171480/3329760\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n\n for (let i = 0, ch: number; i < value.length; i++) {\n ch = value.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);\n h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);\n h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\n/**\n * Fast string hash optimized for comparisons.\n * Uses djb2 algorithm - very fast and good distribution for short to medium strings.\n * Same input always produces same output (deterministic).\n * \n * @param value - The string to hash\n * @param seed - Optional seed value (default: 5381)\n * @returns A positive 32-bit integer hash value\n * \n * @example\n * ```ts\n * fastHash(\"test\") === fastHash(\"test\") // true\n * fastHash(\"test\") !== fastHash(\"test2\") // true\n * ```\n */\nexport const fastHash = (value: string, seed: number = 5381): number => {\n let hash = seed;\n for (let i = 0; i < value.length; i++) {\n hash = ((hash << 5) + hash) + value.charCodeAt(i);\n }\n return hash >>> 0; // Convert to unsigned 32-bit integer\n}\n\n/**\n * Converts any value to a readable string representation.\n * Handles primitives, objects, arrays, classes, dates, errors, and functions.\n * Supports depth limiting to prevent infinite recursion on circular references.\n * \n * @param obj - The value to stringify\n * @param maxDepth - Maximum depth for nested objects (default: 3)\n * @param currentDepth - Current recursion depth (default: 0)\n * @returns String representation of the value\n * \n * @example\n * ```ts\n * stringifyObject({ name: \"test\", count: 5 }) // '{ name: \"test\", count: 5 }'\n * stringifyObject([1, 2, 3]) // '[1, 2, 3]'\n * stringifyObject(new Date()) // 'Date(2024-01-01T00:00:00.000Z)'\n * ```\n */\nexport function stringifyObject(obj: unknown, maxDepth: number = 3, currentDepth: number = 0): string {\n if (obj === null) return 'null';\n if (obj === undefined) return 'undefined';\n\n const type = typeof obj;\n\n switch (type) {\n case 'string':\n return `\"${obj}\"`;\n case 'number':\n case 'boolean':\n return String(obj);\n case 'function':\n return `[Function: ${getFunctionName(obj as Function)}]`;\n case 'object':\n if (currentDepth >= maxDepth) {\n return '[Max Depth Reached]';\n }\n return stringifyObjectValue(obj, maxDepth, currentDepth);\n default:\n return `[${type}]`;\n }\n}\n\nfunction getFunctionName(fn: Function): string {\n const name = fn.name;\n return name || 'anonymous';\n}\n\nfunction getObjectProperties(obj: any): Record<string, any> {\n const properties: Record<string, any> = {};\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n properties[key] = obj[key];\n }\n }\n\n return properties;\n}\n\nfunction stringifyObjectValue(obj: any, maxDepth: number, currentDepth: number): string {\n if (obj === null) return 'null';\n\n if (obj instanceof Date) {\n return `Date(${obj.toISOString()})`;\n }\n\n if (obj instanceof Error) {\n return `Error(${obj.message})`;\n }\n\n if (obj instanceof RegExp) {\n return obj.toString();\n }\n\n if (Array.isArray(obj)) {\n return stringifyArray(obj, maxDepth, currentDepth);\n }\n\n if (obj.constructor && obj.constructor.name !== 'Object') {\n return stringifyClassInstance(obj, maxDepth, currentDepth);\n }\n\n return stringifyPlainObject(obj, maxDepth, currentDepth);\n}\n\nfunction stringifyArray(arr: any[], maxDepth: number, currentDepth: number): string {\n if (arr.length === 0) return '[]';\n\n const items = arr.slice(0, 5).map(item =>\n stringifyObject(item, maxDepth, currentDepth + 1)\n );\n\n const suffix = arr.length > 5 ? `... (+${arr.length - 5} more)` : '';\n return `[${items.join(', ')}${suffix}]`;\n}\n\nfunction stringifyClassInstance(obj: any, maxDepth: number, currentDepth: number): string {\n const className = obj.constructor.name;\n const properties = getObjectProperties(obj);\n\n if (Object.keys(properties).length === 0) {\n return `${className} {}`;\n }\n\n const props = Object.entries(properties)\n .slice(0, 5)\n .map(([key, value]) => {\n const isPrimitive = value === null || value === undefined ||\n (typeof value !== 'object' && typeof value !== 'function');\n const depth = isPrimitive ? currentDepth : currentDepth + 1;\n return `${key}: ${stringifyObject(value, maxDepth, depth)}`;\n });\n\n const suffix = Object.keys(properties).length > 5 ?\n `... (+${Object.keys(properties).length - 5} more)` : '';\n\n return `${className} { ${props.join(', ')}${suffix} }`;\n}\n\nfunction stringifyPlainObject(obj: any, maxDepth: number, currentDepth: number): string {\n const properties = getObjectProperties(obj);\n\n if (Object.keys(properties).length === 0) {\n return '{}';\n }\n\n const props = Object.entries(properties)\n .slice(0, 5)\n .map(([key, value]) => {\n const isPrimitive = value === null || value === undefined ||\n (typeof value !== 'object' && typeof value !== 'function');\n const depth = isPrimitive ? currentDepth : currentDepth + 1;\n return `${key}: ${stringifyObject(value, maxDepth, depth)}`;\n });\n\n const suffix = Object.keys(properties).length > 5 ?\n `... (+${Object.keys(properties).length - 5} more)` : '';\n\n return `{ ${props.join(', ')}${suffix} }`;\n}","export const uuid = (length: number = 16): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charLength = chars.length;\n let result = '';\n\n for (let i = 0; i < length; i++) {\n result += chars[Math.random() * charLength | 0];\n }\n return result;\n}\n\nconst HEX_CHARS = '0123456789abcdef';\nconst UUID_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\nconst hasCrypto =\n typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function';\n\nexport const uuidv4 = (): string => {\n let randomBytes: Uint8Array | null = null;\n if (hasCrypto) {\n randomBytes = crypto.getRandomValues(new Uint8Array(16));\n }\n\n let byteIndex = 0;\n let uuid = '';\n\n for (let i = 0; i < UUID_TEMPLATE.length; i++) {\n const c = UUID_TEMPLATE[i];\n if (c === '-') {\n uuid += '-';\n continue;\n }\n\n let r: number;\n if (hasCrypto && randomBytes) {\n // Each byte gives two hex digits (nibbles)\n r =\n (i % 2 === 0\n ? randomBytes[byteIndex] >> 4\n : randomBytes[byteIndex++] & 0x0f);\n } else {\n r = Math.floor(Math.random() * 16);\n }\n\n if (c === 'x') {\n uuid += HEX_CHARS[r];\n } else if (c === 'y') {\n // Variant bits: 8, 9, A, or B\n uuid += HEX_CHARS[(r & 0x3) | 0x8];\n } else if (c === '4') {\n uuid += '4';\n }\n }\n\n return uuid;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export { Capability } from './Capability';\nexport { PerformanceCapability } from './PerformanceCapability';\nexport { TracingCapability } from './TracingCapability';\nexport * from './types';"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,13 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
export interface MethodWrapper {
|
|
13
|
-
readonly wrapMethod: (originalMethod: Function, methodInfo: MethodInfo) => Function;
|
|
14
|
-
}
|
|
15
|
-
export interface MethodMetadata {
|
|
16
|
-
readonly parent: any | null;
|
|
17
|
-
readonly instance: any;
|
|
18
|
-
readonly methodPath: string[];
|
|
19
|
-
}
|
|
1
|
+
export type MethodInfoMetadata = {
|
|
2
|
+
parent?: MethodInfoMetadata;
|
|
3
|
+
instance: Record<string | symbol, any>;
|
|
4
|
+
propertyName: string | symbol;
|
|
5
|
+
path?: string;
|
|
6
|
+
};
|
|
7
|
+
export type MethodInfo = {
|
|
8
|
+
name: string | symbol;
|
|
9
|
+
isCallable: boolean;
|
|
10
|
+
};
|
|
20
11
|
export interface PerformanceMetrics {
|
|
21
12
|
readonly startTime: number;
|
|
22
13
|
readonly endTime?: number;
|
package/dist/codegen/blocks.d.ts
CHANGED
|
@@ -15,9 +15,17 @@ export declare abstract class Block {
|
|
|
15
15
|
protected _parent?: Block;
|
|
16
16
|
constructor(name?: string, parentIndent?: string, parent?: Block);
|
|
17
17
|
indexOf(name: string): number;
|
|
18
|
+
getLines(): Line[];
|
|
19
|
+
getParent(): Block;
|
|
20
|
+
getIndent(): string;
|
|
21
|
+
setLines(lines: Line[]): void;
|
|
22
|
+
setParent(block: Block): void;
|
|
23
|
+
setIndent(indent: string): void;
|
|
18
24
|
getOrDefault<T extends Block>(name: string): T | undefined;
|
|
19
25
|
get<T extends Block>(name: string): T;
|
|
20
26
|
has(name: string): boolean;
|
|
27
|
+
remove(name: string): void;
|
|
28
|
+
replace(name: string, line: Block): void;
|
|
21
29
|
protected push(line: Line): void;
|
|
22
30
|
protected unshift(line: Line): void;
|
|
23
31
|
protected indent(text: string): string;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CodeBuilder } from '../../blocks';
|
|
2
|
+
import { PropertyInfoHandler } from "../types";
|
|
3
|
+
import { PropertyInfo } from "../../../schema";
|
|
4
|
+
export declare class CompareArrayHandler extends PropertyInfoHandler {
|
|
5
|
+
handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null;
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CodeBuilder } from '../../blocks';
|
|
2
|
+
import { PropertyInfoHandler } from "../types";
|
|
3
|
+
import { PropertyInfo } from "../../../schema";
|
|
4
|
+
export declare class CompareDateHandler extends PropertyInfoHandler {
|
|
5
|
+
handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null;
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CodeBuilder } from '../../blocks';
|
|
2
|
+
import { PropertyInfoHandler } from "../types";
|
|
3
|
+
import { PropertyInfo } from "../../../schema";
|
|
4
|
+
export declare class CompareIdsKeyHandler extends PropertyInfoHandler {
|
|
5
|
+
handle(property: PropertyInfo<unknown>, builder: CodeBuilder): CodeBuilder | null;
|
|
6
|
+
}
|
|
@@ -11,3 +11,4 @@ export { MergeHandlerBuilder } from './MergeHandlerBuilder';
|
|
|
11
11
|
export { PrepareHandlerBuilder } from './PrepareHandlerBuilder';
|
|
12
12
|
export { SerializeHandlerBuilder } from './SerializeHandlerBuilder';
|
|
13
13
|
export { StripHandlerBuilder } from './StripHandlerBuilder';
|
|
14
|
+
export { CompareIdsHandlerBuilder } from './CompareIdsHandlerBuilder';
|
|
@@ -2,7 +2,8 @@ import { CodeBuilder } from '../../blocks';
|
|
|
2
2
|
import { PropertyInfoHandler } from "../types";
|
|
3
3
|
import { PropertyInfo } from "../../../schema";
|
|
4
4
|
/**
|
|
5
|
-
* Handles converting a Date value from JavaScript to a string value
|
|
5
|
+
* Handles converting a Date value from JavaScript to a string value. Should handle remapping here because it is the lowest level in the code here.
|
|
6
|
+
* Remapping higher up could break lower level code
|
|
6
7
|
*/
|
|
7
8
|
export declare class SerializeDateHandler extends PropertyInfoHandler {
|
|
8
9
|
handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CodeBuilder } from '../../blocks';
|
|
2
|
+
import { PropertyInfoHandler } from "../types";
|
|
3
|
+
import { PropertyInfo } from "../../../schema";
|
|
4
|
+
export declare class SerializeFunctionHandler extends PropertyInfoHandler {
|
|
5
|
+
handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null;
|
|
6
|
+
}
|
package/dist/codegen/index.js
CHANGED
|
@@ -36,6 +36,24 @@ class Block {
|
|
|
36
36
|
indexOf(name) {
|
|
37
37
|
return this._lines.findIndex(w => typeof w !== "string" && w.name === name);
|
|
38
38
|
}
|
|
39
|
+
getLines() {
|
|
40
|
+
return this._lines;
|
|
41
|
+
}
|
|
42
|
+
getParent() {
|
|
43
|
+
return this._parent;
|
|
44
|
+
}
|
|
45
|
+
getIndent() {
|
|
46
|
+
return this._indent;
|
|
47
|
+
}
|
|
48
|
+
setLines(lines) {
|
|
49
|
+
this._lines = lines;
|
|
50
|
+
}
|
|
51
|
+
setParent(block) {
|
|
52
|
+
this._parent = block;
|
|
53
|
+
}
|
|
54
|
+
setIndent(indent) {
|
|
55
|
+
this._indent = indent;
|
|
56
|
+
}
|
|
39
57
|
getOrDefault(name) {
|
|
40
58
|
if (name.includes('.') === false) {
|
|
41
59
|
return this._lines.find(w => typeof w !== "string" && w.name === name);
|
|
@@ -65,6 +83,27 @@ class Block {
|
|
|
65
83
|
has(name) {
|
|
66
84
|
return this._lines.some(w => typeof w !== "string" && w.name === name);
|
|
67
85
|
}
|
|
86
|
+
remove(name) {
|
|
87
|
+
this._lines = this._lines.filter(x => typeof x === "object" && typeof x.name === "string" && x.name !== name);
|
|
88
|
+
}
|
|
89
|
+
replace(name, line) {
|
|
90
|
+
const foundIndex = this._lines.findIndex(x => typeof x !== "string" && x.name === name);
|
|
91
|
+
if (foundIndex === -1) {
|
|
92
|
+
throw new Error(`Cannot find line by name. Name: ${name}`);
|
|
93
|
+
}
|
|
94
|
+
const found = this._lines[foundIndex];
|
|
95
|
+
if (typeof found === "string") {
|
|
96
|
+
// Replace the line
|
|
97
|
+
this._lines.splice(foundIndex, 1, line);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
line.setLines(found.getLines());
|
|
101
|
+
line.setIndent(found.getIndent());
|
|
102
|
+
line.setParent(found.getParent());
|
|
103
|
+
// Replace the line
|
|
104
|
+
this._lines.splice(foundIndex, 1, line);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
68
107
|
push(line) {
|
|
69
108
|
this._lines.push(line);
|
|
70
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen/index.js","sources":["webpack://@routier/core/./src/codegen/blocks.ts","webpack://@routier/core/./src/utilities/uuid.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/codegen/index.ts"],"sourcesContent":["import { uuid } from \"../utilities\";\nimport { CreateBlockOptions } from \"./types\";\n\ntype Line = string | Block;\n\ntype Param = { name: string, value: any };\ntype GenericParam = { name: string, callName: string };\n\n\nexport abstract class Block {\n readonly name: string;\n protected _lines: Line[] = [];\n protected _indent: string = \"\";\n protected _parent?: Block;\n\n constructor(name?: string, parentIndent: string = \"\", parent?: Block) {\n this.name = name != null ? name : uuid();\n this._indent = parentIndent;\n this._parent = parent;\n }\n\n indexOf(name: string) {\n return this._lines.findIndex(w => typeof w !== \"string\" && w.name === name);\n }\n\n getOrDefault<T extends Block>(name: string): T | undefined {\n\n if (name.includes('.') === false) {\n return this._lines.find(w => typeof w !== \"string\" && w.name === name) as T | undefined;\n }\n\n const split = name.match(/(\\[[^\\]]+\\]|[^.]+)/g);\n let result: Block = this;\n\n for (const item of split) {\n const found = result._lines.find(w => typeof w !== \"string\" && w.name === item) as Block;\n\n if (found == null) {\n\n if (\"getValue\" in result && result.getValue instanceof Block && result.getValue.name === item) {\n result = result.getValue;\n continue;\n }\n\n return undefined;\n }\n\n result = found;\n }\n\n return result as T;\n }\n\n get<T extends Block>(name: string): T {\n const found = this.getOrDefault(name);\n\n if (found == null) {\n throw new Error(`Error finding code block for given path. Path: ${name}`)\n }\n\n return found as T;\n }\n\n has(name: string) {\n return this._lines.some(w => typeof w !== \"string\" && w.name === name);\n }\n\n protected push(line: Line) {\n this._lines.push(line);\n }\n\n protected unshift(line: Line) {\n this._lines.unshift(line);\n }\n\n protected indent(text: string): string {\n return this._indent + text;\n }\n\n\n abstract toString(): string;\n}\n\nexport abstract class ContainerBlock extends Block {\n if(condition: string, options?: CreateBlockOptions): IfBuilder {\n const builder = new IfBuilder(condition, options?.name, this._indent + \" \", this);\n if (options?.unshift === true) {\n this.unshift(builder);\n } else {\n this.push(builder);\n }\n\n return builder;\n }\n\n raw(raw: string, options?: CreateBlockOptions): RawBuilder {\n const builder = new RawBuilder(raw, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n function(name?: string, options?: CreateBlockOptions): FunctionBuilder {\n const builder = new FunctionBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n factory(name?: string, options?: CreateBlockOptions): FunctionFactoryBuilder {\n const builder = new FunctionFactoryBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n variable(declaration: string, options?: CreateBlockOptions): VariableBuilder {\n const builder = new VariableBuilder(declaration, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n assign(variableName: string, options?: CreateBlockOptions): AssignmentBuilder {\n const builder = new AssignmentBuilder(variableName, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const builder = new ObjectBuilder(options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n slot(name: string) {\n const builder = new SlotBlock(name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n array(accessor: string, options?: CreateBlockOptions) {\n const builder = new ArrayBuilder(accessor, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n}\n\nexport type StringType = \"template\" | \"default\";\n\nexport class StringBuilder extends Block {\n\n private _type: StringType;\n\n constructor(type: StringType, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._type = type;\n }\n\n append(value: string) {\n this._lines.push(value);\n return this;\n }\n\n toString() {\n if (this._type === \"template\") {\n return \"`\" + this._lines.join(\"\") + \"`\";\n }\n\n return `\"${this._lines.join(\"\")}\"`;\n }\n}\n\nexport class SlotBlock extends ContainerBlock {\n\n constructor(name: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n }\n\n insert(line: string | Block) {\n this.push(line);\n }\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}\n\nexport class AssignmentBuilder extends ContainerBlock {\n protected _variableName: string;\n protected _value?: string | Block;\n protected _functionName?: string;\n\n get getValue() {\n return this._value;\n }\n\n constructor(variableName: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._variableName = variableName;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n and(and: string, options?: CreateBlockOptions): this {\n this._value = new AndBuilder(and, options?.name, this._indent, this);\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n call(functionName: string, options?: CreateBlockOptions): ObjectBuilder {\n this._functionName = functionName;\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n string(type: StringType, options?: CreateBlockOptions) {\n const stringBuilder = new StringBuilder(type, options?.name, this._indent, this);\n\n this._value = stringBuilder;\n\n return stringBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for AssignmentBuilder Builder\")\n }\n\n if (this._functionName != null) {\n return this.indent(`${this._variableName} = ${this._functionName}(${this._value.toString()});`);\n }\n\n return this.indent(`${this._variableName} = ${this._value.toString()};`);\n }\n}\n\nexport class AndBuilder extends ContainerBlock {\n\n constructor(and: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(and);\n }\n\n and(and: string) {\n this._lines.push(and);\n }\n\n toString() {\n return this._lines.join(\" && \")\n }\n}\n\nexport class VariableBuilder extends Block {\n protected _declaration: string;\n protected _value?: string | Block;\n\n get getValue() {\n return this._value;\n }\n\n constructor(declaration: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._declaration = declaration;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n array(accessor: string, options?: CreateBlockOptions): ArrayBuilder {\n const arrayBuilder = new ArrayBuilder(accessor, options?.name, this._indent, this);\n\n this._value = arrayBuilder;\n\n return arrayBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for Variable Builder\")\n }\n\n return this.indent(`const ${this._declaration} = ${this._value.toString()};`);\n }\n}\n\nexport class RawBuilder extends ContainerBlock {\n private _raw: string;\n\n constructor(raw: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._raw = raw;\n }\n\n toString(): string {\n return `${this._raw}\\n`;\n }\n}\n\nexport class ObjectBuilder extends Block {\n\n property(line: string) {\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n this.push(line);\n return this;\n }\n\n nested(propertyName: string, name?: string) {\n const builder = new ObjectBuilder(name, this._indent + \" \", this);\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n // Add the property name and opening brace\n this.push(`${propertyName}: {`);\n // Add the nested builder\n this.push(builder);\n // Add the closing brace\n this.push(\"}\");\n return builder;\n }\n\n toString(): string {\n // Check if this is a nested object's content\n const isNestedContent = this._parent instanceof ObjectBuilder;\n\n if (isNestedContent) {\n // For nested object contents, just return the lines\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ).join('\\n');\n }\n\n // For root objects, include the braces\n const lines = [\n \"{\",\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionFactoryBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: Param[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n getParameters() {\n return [...this._params];\n }\n\n createParameter(value: any): Param {\n const name = `injection${this._params.length}`;\n return {\n name,\n value\n }\n }\n\n parameters(...params: Param[]): this {\n this._params.push(...params);\n return this;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n invoke() {\n const body = this.toString();\n const parameterNames = this._getParameterNames();\n const parameterValues = this._getParameterValues();\n\n return Function(...parameterNames, body)(...parameterValues)\n }\n\n private _getParameterNames() {\n return this._params.map(w => w.name).join(\", \")\n }\n\n private _getParameterValues() {\n return this._params.map(w => w.value);\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterNames()})`\n : `${r}function(${this._getParameterNames()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: (string | GenericParam)[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n parameters(...params: (string | GenericParam)[]): this {\n this._params.push(...params);\n return this;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n private _getParameterKeys() {\n return this._params.map(w => typeof w === \"object\" ? w.name : w).join(\", \")\n }\n\n toCallable() {\n return `${this._functionName}(${this._params.map(w => typeof w === \"object\" ? w.callName : w).join(\", \")})`\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterKeys()})`\n : `${r}function(${this._getParameterKeys()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class ArrayBuilder extends Block {\n constructor(accessor: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(accessor);\n }\n\n append(accessor: string) {\n this._lines.push(accessor);\n return this;\n }\n\n toString() {\n return `[${this._lines.join(\",\")}]`\n }\n}\n\nexport class IfBuilder extends ContainerBlock {\n private _condition: string;\n\n constructor(condition: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._condition = condition;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n unshiftBody(line: string): this {\n this.unshift(line);\n return this;\n }\n\n private stringifyLine(line: Line) {\n if (typeof line === 'string') {\n return this.indent(\" \" + line);\n }\n\n if (Array.isArray(line)) {\n return line.join(\"\\r\\n\")\n }\n\n return line.toString();\n }\n\n toString(): string {\n // need to join with \\r\\n because we are not an object\n const lines = [\n this.indent(`if (${this._condition}) {`),\n this._lines.map(x => this.stringifyLine(x)).join(\"\\r\\n\"),\n this.indent(\"}\")\n ]\n\n return lines.join(\"\\n\\n\");\n }\n}\n\nexport class CodeBuilder extends ContainerBlock {\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}","export const uuid = (length: number = 16): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charLength = chars.length;\n let result = '';\n\n for (let i = 0; i < length; i++) {\n result += chars[Math.random() * charLength | 0];\n }\n return result;\n}\n\nconst HEX_CHARS = '0123456789abcdef';\nconst UUID_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\nconst hasCrypto =\n typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function';\n\nexport const uuidv4 = (): string => {\n let randomBytes: Uint8Array | null = null;\n if (hasCrypto) {\n randomBytes = crypto.getRandomValues(new Uint8Array(16));\n }\n\n let byteIndex = 0;\n let uuid = '';\n\n for (let i = 0; i < UUID_TEMPLATE.length; i++) {\n const c = UUID_TEMPLATE[i];\n if (c === '-') {\n uuid += '-';\n continue;\n }\n\n let r: number;\n if (hasCrypto && randomBytes) {\n // Each byte gives two hex digits (nibbles)\n r =\n (i % 2 === 0\n ? randomBytes[byteIndex] >> 4\n : randomBytes[byteIndex++] & 0x0f);\n } else {\n r = Math.floor(Math.random() * 16);\n }\n\n if (c === 'x') {\n uuid += HEX_CHARS[r];\n } else if (c === 'y') {\n // Variant bits: 8, 9, A, or B\n uuid += HEX_CHARS[(r & 0x3) | 0x8];\n } else if (c === '4') {\n uuid += '4';\n }\n }\n\n return uuid;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './blocks';\nexport * from './types';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codegen/index.js","sources":["webpack://@routier/core/./src/codegen/blocks.ts","webpack://@routier/core/./src/utilities/uuid.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/codegen/index.ts"],"sourcesContent":["import { uuid } from \"../utilities\";\nimport { CreateBlockOptions } from \"./types\";\n\ntype Line = string | Block;\n\ntype Param = { name: string, value: any };\ntype GenericParam = { name: string, callName: string };\n\n\nexport abstract class Block {\n readonly name: string;\n protected _lines: Line[] = [];\n protected _indent: string = \"\";\n protected _parent?: Block;\n\n constructor(name?: string, parentIndent: string = \"\", parent?: Block) {\n this.name = name != null ? name : uuid();\n this._indent = parentIndent;\n this._parent = parent;\n }\n\n indexOf(name: string) {\n return this._lines.findIndex(w => typeof w !== \"string\" && w.name === name);\n }\n\n getLines() {\n return this._lines;\n }\n\n getParent() {\n return this._parent;\n }\n\n getIndent() {\n return this._indent;\n }\n\n setLines(lines: Line[]) {\n this._lines = lines;\n }\n\n setParent(block: Block) {\n this._parent = block;\n }\n\n setIndent(indent: string) {\n this._indent = indent;\n }\n\n getOrDefault<T extends Block>(name: string): T | undefined {\n\n if (name.includes('.') === false) {\n return this._lines.find(w => typeof w !== \"string\" && w.name === name) as T | undefined;\n }\n\n const split = name.match(/(\\[[^\\]]+\\]|[^.]+)/g);\n let result: Block = this;\n\n for (const item of split) {\n const found = result._lines.find(w => typeof w !== \"string\" && w.name === item) as Block;\n\n if (found == null) {\n\n if (\"getValue\" in result && result.getValue instanceof Block && result.getValue.name === item) {\n result = result.getValue;\n continue;\n }\n\n return undefined;\n }\n\n result = found;\n }\n\n return result as T;\n }\n\n get<T extends Block>(name: string): T {\n const found = this.getOrDefault(name);\n\n if (found == null) {\n throw new Error(`Error finding code block for given path. Path: ${name}`)\n }\n\n return found as T;\n }\n\n has(name: string) {\n return this._lines.some(w => typeof w !== \"string\" && w.name === name);\n }\n\n remove(name: string) {\n this._lines = this._lines.filter(x => typeof x === \"object\" && typeof x.name === \"string\" && x.name !== name);\n }\n\n replace(name: string, line: Block) {\n\n const foundIndex = this._lines.findIndex(x => typeof x !== \"string\" && x.name === name);\n\n if (foundIndex === -1) {\n throw new Error(`Cannot find line by name. Name: ${name}`)\n }\n\n const found = this._lines[foundIndex];\n\n if (typeof found === \"string\") {\n // Replace the line\n this._lines.splice(foundIndex, 1, line);\n return;\n }\n\n line.setLines(found.getLines());\n line.setIndent(found.getIndent());\n line.setParent(found.getParent());\n\n // Replace the line\n this._lines.splice(foundIndex, 1, line);\n\n return;\n }\n\n protected push(line: Line) {\n this._lines.push(line);\n }\n\n protected unshift(line: Line) {\n this._lines.unshift(line);\n }\n\n protected indent(text: string): string {\n return this._indent + text;\n }\n\n\n abstract toString(): string;\n}\n\nexport abstract class ContainerBlock extends Block {\n if(condition: string, options?: CreateBlockOptions): IfBuilder {\n const builder = new IfBuilder(condition, options?.name, this._indent + \" \", this);\n if (options?.unshift === true) {\n this.unshift(builder);\n } else {\n this.push(builder);\n }\n\n return builder;\n }\n\n raw(raw: string, options?: CreateBlockOptions): RawBuilder {\n const builder = new RawBuilder(raw, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n function(name?: string, options?: CreateBlockOptions): FunctionBuilder {\n const builder = new FunctionBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n factory(name?: string, options?: CreateBlockOptions): FunctionFactoryBuilder {\n const builder = new FunctionFactoryBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n variable(declaration: string, options?: CreateBlockOptions): VariableBuilder {\n const builder = new VariableBuilder(declaration, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n assign(variableName: string, options?: CreateBlockOptions): AssignmentBuilder {\n const builder = new AssignmentBuilder(variableName, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const builder = new ObjectBuilder(options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n slot(name: string) {\n const builder = new SlotBlock(name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n array(accessor: string, options?: CreateBlockOptions) {\n const builder = new ArrayBuilder(accessor, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n}\n\nexport type StringType = \"template\" | \"default\";\n\nexport class StringBuilder extends Block {\n\n private _type: StringType;\n\n constructor(type: StringType, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._type = type;\n }\n\n append(value: string) {\n this._lines.push(value);\n return this;\n }\n\n toString() {\n if (this._type === \"template\") {\n return \"`\" + this._lines.join(\"\") + \"`\";\n }\n\n return `\"${this._lines.join(\"\")}\"`;\n }\n}\n\nexport class SlotBlock extends ContainerBlock {\n\n constructor(name: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n }\n\n insert(line: string | Block) {\n this.push(line);\n }\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}\n\nexport class AssignmentBuilder extends ContainerBlock {\n protected _variableName: string;\n protected _value?: string | Block;\n protected _functionName?: string;\n\n get getValue() {\n return this._value;\n }\n\n constructor(variableName: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._variableName = variableName;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n and(and: string, options?: CreateBlockOptions): this {\n this._value = new AndBuilder(and, options?.name, this._indent, this);\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n call(functionName: string, options?: CreateBlockOptions): ObjectBuilder {\n this._functionName = functionName;\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n string(type: StringType, options?: CreateBlockOptions) {\n const stringBuilder = new StringBuilder(type, options?.name, this._indent, this);\n\n this._value = stringBuilder;\n\n return stringBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for AssignmentBuilder Builder\")\n }\n\n if (this._functionName != null) {\n return this.indent(`${this._variableName} = ${this._functionName}(${this._value.toString()});`);\n }\n\n return this.indent(`${this._variableName} = ${this._value.toString()};`);\n }\n}\n\nexport class AndBuilder extends ContainerBlock {\n\n constructor(and: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(and);\n }\n\n and(and: string) {\n this._lines.push(and);\n }\n\n toString() {\n return this._lines.join(\" && \")\n }\n}\n\nexport class VariableBuilder extends Block {\n protected _declaration: string;\n protected _value?: string | Block;\n\n get getValue() {\n return this._value;\n }\n\n constructor(declaration: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._declaration = declaration;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n array(accessor: string, options?: CreateBlockOptions): ArrayBuilder {\n const arrayBuilder = new ArrayBuilder(accessor, options?.name, this._indent, this);\n\n this._value = arrayBuilder;\n\n return arrayBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for Variable Builder\")\n }\n\n return this.indent(`const ${this._declaration} = ${this._value.toString()};`);\n }\n}\n\nexport class RawBuilder extends ContainerBlock {\n private _raw: string;\n\n constructor(raw: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._raw = raw;\n }\n\n toString(): string {\n return `${this._raw}\\n`;\n }\n}\n\nexport class ObjectBuilder extends Block {\n\n property(line: string) {\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n this.push(line);\n return this;\n }\n\n nested(propertyName: string, name?: string) {\n const builder = new ObjectBuilder(name, this._indent + \" \", this);\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n // Add the property name and opening brace\n this.push(`${propertyName}: {`);\n // Add the nested builder\n this.push(builder);\n // Add the closing brace\n this.push(\"}\");\n return builder;\n }\n\n toString(): string {\n // Check if this is a nested object's content\n const isNestedContent = this._parent instanceof ObjectBuilder;\n\n if (isNestedContent) {\n // For nested object contents, just return the lines\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ).join('\\n');\n }\n\n // For root objects, include the braces\n const lines = [\n \"{\",\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionFactoryBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: Param[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n getParameters() {\n return [...this._params];\n }\n\n createParameter(value: any): Param {\n const name = `injection${this._params.length}`;\n return {\n name,\n value\n }\n }\n\n parameters(...params: Param[]): this {\n this._params.push(...params);\n return this;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n invoke() {\n const body = this.toString();\n const parameterNames = this._getParameterNames();\n const parameterValues = this._getParameterValues();\n\n return Function(...parameterNames, body)(...parameterValues)\n }\n\n private _getParameterNames() {\n return this._params.map(w => w.name).join(\", \")\n }\n\n private _getParameterValues() {\n return this._params.map(w => w.value);\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterNames()})`\n : `${r}function(${this._getParameterNames()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: (string | GenericParam)[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n parameters(...params: (string | GenericParam)[]): this {\n this._params.push(...params);\n return this;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n private _getParameterKeys() {\n return this._params.map(w => typeof w === \"object\" ? w.name : w).join(\", \")\n }\n\n toCallable() {\n return `${this._functionName}(${this._params.map(w => typeof w === \"object\" ? w.callName : w).join(\", \")})`\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterKeys()})`\n : `${r}function(${this._getParameterKeys()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class ArrayBuilder extends Block {\n constructor(accessor: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(accessor);\n }\n\n append(accessor: string) {\n this._lines.push(accessor);\n return this;\n }\n\n toString() {\n return `[${this._lines.join(\",\")}]`\n }\n}\n\nexport class IfBuilder extends ContainerBlock {\n private _condition: string;\n\n constructor(condition: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._condition = condition;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n unshiftBody(line: string): this {\n this.unshift(line);\n return this;\n }\n\n private stringifyLine(line: Line) {\n if (typeof line === 'string') {\n return this.indent(\" \" + line);\n }\n\n if (Array.isArray(line)) {\n return line.join(\"\\r\\n\")\n }\n\n return line.toString();\n }\n\n toString(): string {\n // need to join with \\r\\n because we are not an object\n const lines = [\n this.indent(`if (${this._condition}) {`),\n this._lines.map(x => this.stringifyLine(x)).join(\"\\r\\n\"),\n this.indent(\"}\")\n ]\n\n return lines.join(\"\\n\\n\");\n }\n}\n\nexport class CodeBuilder extends ContainerBlock {\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}","export const uuid = (length: number = 16): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charLength = chars.length;\n let result = '';\n\n for (let i = 0; i < length; i++) {\n result += chars[Math.random() * charLength | 0];\n }\n return result;\n}\n\nconst HEX_CHARS = '0123456789abcdef';\nconst UUID_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\nconst hasCrypto =\n typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function';\n\nexport const uuidv4 = (): string => {\n let randomBytes: Uint8Array | null = null;\n if (hasCrypto) {\n randomBytes = crypto.getRandomValues(new Uint8Array(16));\n }\n\n let byteIndex = 0;\n let uuid = '';\n\n for (let i = 0; i < UUID_TEMPLATE.length; i++) {\n const c = UUID_TEMPLATE[i];\n if (c === '-') {\n uuid += '-';\n continue;\n }\n\n let r: number;\n if (hasCrypto && randomBytes) {\n // Each byte gives two hex digits (nibbles)\n r =\n (i % 2 === 0\n ? randomBytes[byteIndex] >> 4\n : randomBytes[byteIndex++] & 0x0f);\n } else {\n r = Math.floor(Math.random() * 16);\n }\n\n if (c === 'x') {\n uuid += HEX_CHARS[r];\n } else if (c === 'y') {\n // Variant bits: 8, 9, A, or B\n uuid += HEX_CHARS[(r & 0x3) | 0x8];\n } else if (c === '4') {\n uuid += '4';\n }\n }\n\n return uuid;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './blocks';\nexport * from './types';"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAoC;AAS7B,MAAe,KAAK;IACd,IAAI,CAAS;IACZ,MAAM,GAAW,EAAE,CAAC;IACpB,OAAO,GAAW,EAAE,CAAC;IACrB,OAAO,CAAS;IAE1B,YAAY,IAAa,EAAE,eAAuB,EAAE,EAAE,MAAc;QAChE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gDAAI,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,KAAY;QAClB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,MAAc;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,YAAY,CAAkB,IAAY;QAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAkB,CAAC;QAC5F,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAChD,IAAI,MAAM,GAAU,IAAI,CAAC;QAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAU,CAAC;YAEzF,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAEhB,IAAI,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,YAAY,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC5F,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACzB,SAAS;gBACb,CAAC;gBAED,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,OAAO,MAAW,CAAC;IACvB,CAAC;IAED,GAAG,CAAkB,IAAY;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,mDAAmD,IAAI,EAAE,CAAC;QAC9E,CAAC;QAED,OAAO,KAAU,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,IAAY;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,IAAW;QAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAExF,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC;QAC/D,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,mBAAmB;YACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAElC,mBAAmB;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAExC,OAAO;IACX,CAAC;IAES,IAAI,CAAC,IAAU;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAES,OAAO,CAAC,IAAU;QACxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAES,MAAM,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/B,CAAC;CAIJ;AAEM,MAAe,cAAe,SAAQ,KAAK;IAC9C,EAAE,CAAC,SAAiB,EAAE,OAA4B;QAC9C,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QACnF,IAAI,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,OAA4B;QACzC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,IAAa,EAAE,OAA4B;QAChD,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAa,EAAE,OAA4B;QAC/C,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,WAAmB,EAAE,OAA4B;QACtD,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,YAAoB,EAAE,OAA4B;QACrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,OAA4B;QAC/B,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,IAAY;QACb,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,QAAgB,EAAE,OAA4B;QAChD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QACrF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAIM,MAAM,aAAc,SAAQ,KAAK;IAE5B,KAAK,CAAa;IAE1B,YAAY,IAAgB,EAAE,IAAa,EAAE,eAAuB,EAAE,EAAE,MAAc;QAClF,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,KAAa;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC5B,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;IACvC,CAAC;CACJ;AAEM,MAAM,SAAU,SAAQ,cAAc;IAEzC,YAAY,IAAY,EAAE,eAAuB,EAAE,EAAE,MAAc;QAC/D,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,IAAoB;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC1B,OAAO,IAAI,KAAK,QAAQ;YACpB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CACxB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;CACJ;AAEM,MAAM,iBAAkB,SAAQ,cAAc;IACvC,aAAa,CAAS;IACtB,MAAM,CAAkB;IACxB,aAAa,CAAU;IAEjC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,YAAY,YAAoB,EAAE,IAAa,EAAE,eAAuB,EAAE,EAAE,MAAc;QACtF,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAa;QACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,OAA4B;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,OAA4B;QAC/B,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE3E,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;QAE5B,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,YAAoB,EAAE,OAA4B;QACnD,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE3E,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;QAE5B,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,IAAgB,EAAE,OAA4B;QACjD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEjF,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;QAE5B,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,QAAQ;QAEJ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;QACzE,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,MAAM,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpG,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7E,CAAC;CACJ;AAEM,MAAM,UAAW,SAAQ,cAAc;IAE1C,YAAY,GAAW,EAAE,IAAa,EAAE,eAAuB,EAAE,EAAE,MAAc;QAC7E,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,GAAW;QACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnC,CAAC;CACJ;AAEM,MAAM,eAAgB,SAAQ,KAAK;IAC5B,YAAY,CAAS;IACrB,MAAM,CAAkB;IAElC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,YAAY,WAAmB,EAAE,IAAa,EAAE,eAAuB,EAAE,EAAE,MAAc;QACrF,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAa;QACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,OAA4B;QAC/B,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE3E,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;QAE5B,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAgB,EAAE,OAA4B;QAChD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEnF,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAE3B,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,QAAQ;QAEJ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;QAChE,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAClF,CAAC;CACJ;AAEM,MAAM,UAAW,SAAQ,cAAc;IAClC,IAAI,CAAS;IAErB,YAAY,GAAW,EAAE,IAAa,EAAE,eAAuB,EAAE,EAAE,MAAc;QAC7E,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACpB,CAAC;IAED,QAAQ;QACJ,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;IAC5B,CAAC;CACJ;AAEM,MAAM,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,IAAY;QACjB,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC;YACzD,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,YAAoB,EAAE,IAAa;QACtC,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QACnE,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC;YACzD,CAAC;QACL,CAAC;QACD,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC;QAChC,yBAAyB;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,wBAAwB;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,QAAQ;QACJ,6CAA6C;QAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,YAAY,aAAa,CAAC;QAE9D,IAAI,eAAe,EAAE,CAAC;YAClB,oDAAoD;YACpD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC1B,OAAO,IAAI,KAAK,QAAQ;gBACpB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC1B,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAED,uCAAuC;QACvC,MAAM,KAAK,GAAG;YACV,GAAG;YACH,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACtB,OAAO,IAAI,KAAK,QAAQ;gBACpB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC1B,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CACxB;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;SACnB,CAAC;QAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACJ;AAEM,MAAM,sBAAuB,SAAQ,cAAc;IAC9C,aAAa,CAAU;IACvB,OAAO,GAAY,EAAE,CAAC;IACtB,OAAO,GAAY,KAAK,CAAC;IAEjC,YAAY,YAAqB,EAAE,WAAoB,EAAE,eAAuB,EAAE,EAAE,MAAc;QAC9F,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,aAAa;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,eAAe,CAAC,KAAU;QACtB,MAAM,IAAI,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/C,OAAO;YACH,IAAI;YACJ,KAAK;SACR;IACL,CAAC;IAED,UAAU,CAAC,GAAG,MAAe;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEnD,OAAO,QAAQ,CAAC,GAAG,cAAc,EAAE,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC;IAChE,CAAC;IAEO,kBAAkB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD,CAAC;IAEO,mBAAmB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa;YAChC,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,kBAAkB,EAAE,GAAG;YACpE,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC;QAEnD,MAAM,KAAK,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YAC7B,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACtB,OAAO,IAAI,KAAK,QAAQ;gBACpB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC1B,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CACxB;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;SACnB,CAAC;QAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACJ;AAEM,MAAM,eAAgB,SAAQ,cAAc;IACvC,aAAa,CAAU;IACvB,OAAO,GAA8B,EAAE,CAAC;IACxC,OAAO,GAAY,KAAK,CAAC;IAEjC,YAAY,YAAqB,EAAE,WAAoB,EAAE,eAAuB,EAAE,EAAE,MAAc;QAC9F,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,GAAG,MAAiC;QAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,iBAAiB;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/E,CAAC;IAED,UAAU;QACN,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;IAC/G,CAAC;IAED,QAAQ;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa;YAChC,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,iBAAiB,EAAE,GAAG;YACnE,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC;QAElD,MAAM,KAAK,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YAC7B,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACtB,OAAO,IAAI,KAAK,QAAQ;gBACpB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC1B,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CACxB;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;SACnB,CAAC;QAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACJ;AAEM,MAAM,YAAa,SAAQ,KAAK;IACnC,YAAY,QAAgB,EAAE,IAAa,EAAE,eAAuB,EAAE,EAAE,MAAc;QAClF,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,QAAgB;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;IACvC,CAAC;CACJ;AAEM,MAAM,SAAU,SAAQ,cAAc;IACjC,UAAU,CAAS;IAE3B,YAAY,SAAiB,EAAE,IAAa,EAAE,eAAuB,EAAE,EAAE,MAAc;QACnF,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,IAAU;QAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACJ,sDAAsD;QACtD,MAAM,KAAK,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;SACnB;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACJ;AAEM,MAAM,WAAY,SAAQ,cAAc;IAE3C,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC1B,OAAO,IAAI,KAAK,QAAQ;YACpB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CACxB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;CACJ;;;;;;;;;;;;;;ACvnBM,MAAM,IAAI,GAAG,CAAC,SAAiB,EAAE,EAAU,EAAE;IAChD,MAAM,KAAK,GAAG,gEAAgE,CAAC;IAC/E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,SAAS,GAAG,kBAAkB,CAAC;AACrC,MAAM,aAAa,GAAG,sCAAsC,CAAC;AAE7D,MAAM,SAAS,GACX,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,CAAC;AAE3E,MAAM,MAAM,GAAG,GAAW,EAAE;IAC/B,IAAI,WAAW,GAAsB,IAAI,CAAC;IAC1C,IAAI,SAAS,EAAE,CAAC;QACZ,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACZ,IAAI,IAAI,GAAG,CAAC;YACZ,SAAS;QACb,CAAC;QAED,IAAI,CAAS,CAAC;QACd,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;YAC3B,2CAA2C;YAC3C,CAAC;gBACG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;oBACR,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC7B,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACZ,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,8BAA8B;YAC9B,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,IAAI,IAAI,GAAG,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvDF;AACA;AACA;AACA,kDAAkD,wCAAwC;AAC1F;AACA;AACA;;;;ACNA;;;;ACAA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA,gDAAgD,aAAa;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNyB;AACD"}
|