cccmemory 1.8.0

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.
Files changed (216) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +349 -0
  3. package/dist/ConversationMemory.d.ts +231 -0
  4. package/dist/ConversationMemory.d.ts.map +1 -0
  5. package/dist/ConversationMemory.js +357 -0
  6. package/dist/ConversationMemory.js.map +1 -0
  7. package/dist/cache/QueryCache.d.ts +215 -0
  8. package/dist/cache/QueryCache.d.ts.map +1 -0
  9. package/dist/cache/QueryCache.js +294 -0
  10. package/dist/cache/QueryCache.js.map +1 -0
  11. package/dist/cli/commands.d.ts +9 -0
  12. package/dist/cli/commands.d.ts.map +1 -0
  13. package/dist/cli/commands.js +954 -0
  14. package/dist/cli/commands.js.map +1 -0
  15. package/dist/cli/help.d.ts +16 -0
  16. package/dist/cli/help.d.ts.map +1 -0
  17. package/dist/cli/help.js +361 -0
  18. package/dist/cli/help.js.map +1 -0
  19. package/dist/cli/index.d.ts +30 -0
  20. package/dist/cli/index.d.ts.map +1 -0
  21. package/dist/cli/index.js +111 -0
  22. package/dist/cli/index.js.map +1 -0
  23. package/dist/context/ContextInjector.d.ts +38 -0
  24. package/dist/context/ContextInjector.d.ts.map +1 -0
  25. package/dist/context/ContextInjector.js +235 -0
  26. package/dist/context/ContextInjector.js.map +1 -0
  27. package/dist/documentation/CodeAnalyzer.d.ts +29 -0
  28. package/dist/documentation/CodeAnalyzer.d.ts.map +1 -0
  29. package/dist/documentation/CodeAnalyzer.js +122 -0
  30. package/dist/documentation/CodeAnalyzer.js.map +1 -0
  31. package/dist/documentation/ConversationAnalyzer.d.ts +19 -0
  32. package/dist/documentation/ConversationAnalyzer.d.ts.map +1 -0
  33. package/dist/documentation/ConversationAnalyzer.js +157 -0
  34. package/dist/documentation/ConversationAnalyzer.js.map +1 -0
  35. package/dist/documentation/CrossReferencer.d.ts +67 -0
  36. package/dist/documentation/CrossReferencer.d.ts.map +1 -0
  37. package/dist/documentation/CrossReferencer.js +247 -0
  38. package/dist/documentation/CrossReferencer.js.map +1 -0
  39. package/dist/documentation/DocumentationGenerator.d.ts +22 -0
  40. package/dist/documentation/DocumentationGenerator.d.ts.map +1 -0
  41. package/dist/documentation/DocumentationGenerator.js +57 -0
  42. package/dist/documentation/DocumentationGenerator.js.map +1 -0
  43. package/dist/documentation/MarkdownFormatter.d.ts +26 -0
  44. package/dist/documentation/MarkdownFormatter.d.ts.map +1 -0
  45. package/dist/documentation/MarkdownFormatter.js +301 -0
  46. package/dist/documentation/MarkdownFormatter.js.map +1 -0
  47. package/dist/documentation/types.d.ts +176 -0
  48. package/dist/documentation/types.d.ts.map +1 -0
  49. package/dist/documentation/types.js +5 -0
  50. package/dist/documentation/types.js.map +1 -0
  51. package/dist/embeddings/ConfigManager.d.ts +46 -0
  52. package/dist/embeddings/ConfigManager.d.ts.map +1 -0
  53. package/dist/embeddings/ConfigManager.js +177 -0
  54. package/dist/embeddings/ConfigManager.js.map +1 -0
  55. package/dist/embeddings/EmbeddingConfig.d.ts +39 -0
  56. package/dist/embeddings/EmbeddingConfig.d.ts.map +1 -0
  57. package/dist/embeddings/EmbeddingConfig.js +132 -0
  58. package/dist/embeddings/EmbeddingConfig.js.map +1 -0
  59. package/dist/embeddings/EmbeddingGenerator.d.ts +51 -0
  60. package/dist/embeddings/EmbeddingGenerator.d.ts.map +1 -0
  61. package/dist/embeddings/EmbeddingGenerator.js +157 -0
  62. package/dist/embeddings/EmbeddingGenerator.js.map +1 -0
  63. package/dist/embeddings/EmbeddingProvider.d.ts +34 -0
  64. package/dist/embeddings/EmbeddingProvider.d.ts.map +1 -0
  65. package/dist/embeddings/EmbeddingProvider.js +6 -0
  66. package/dist/embeddings/EmbeddingProvider.js.map +1 -0
  67. package/dist/embeddings/ModelRegistry.d.ts +48 -0
  68. package/dist/embeddings/ModelRegistry.d.ts.map +1 -0
  69. package/dist/embeddings/ModelRegistry.js +170 -0
  70. package/dist/embeddings/ModelRegistry.js.map +1 -0
  71. package/dist/embeddings/VectorStore.d.ts +114 -0
  72. package/dist/embeddings/VectorStore.d.ts.map +1 -0
  73. package/dist/embeddings/VectorStore.js +393 -0
  74. package/dist/embeddings/VectorStore.js.map +1 -0
  75. package/dist/embeddings/providers/OllamaEmbeddings.d.ts +38 -0
  76. package/dist/embeddings/providers/OllamaEmbeddings.d.ts.map +1 -0
  77. package/dist/embeddings/providers/OllamaEmbeddings.js +125 -0
  78. package/dist/embeddings/providers/OllamaEmbeddings.js.map +1 -0
  79. package/dist/embeddings/providers/OpenAIEmbeddings.d.ts +40 -0
  80. package/dist/embeddings/providers/OpenAIEmbeddings.d.ts.map +1 -0
  81. package/dist/embeddings/providers/OpenAIEmbeddings.js +129 -0
  82. package/dist/embeddings/providers/OpenAIEmbeddings.js.map +1 -0
  83. package/dist/embeddings/providers/TransformersEmbeddings.d.ts +38 -0
  84. package/dist/embeddings/providers/TransformersEmbeddings.d.ts.map +1 -0
  85. package/dist/embeddings/providers/TransformersEmbeddings.js +115 -0
  86. package/dist/embeddings/providers/TransformersEmbeddings.js.map +1 -0
  87. package/dist/handoff/SessionHandoffStore.d.ts +80 -0
  88. package/dist/handoff/SessionHandoffStore.d.ts.map +1 -0
  89. package/dist/handoff/SessionHandoffStore.js +314 -0
  90. package/dist/handoff/SessionHandoffStore.js.map +1 -0
  91. package/dist/index.d.ts +7 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +115 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/mcp-server.d.ts +27 -0
  96. package/dist/mcp-server.d.ts.map +1 -0
  97. package/dist/mcp-server.js +157 -0
  98. package/dist/mcp-server.js.map +1 -0
  99. package/dist/memory/WorkingMemoryStore.d.ts +83 -0
  100. package/dist/memory/WorkingMemoryStore.d.ts.map +1 -0
  101. package/dist/memory/WorkingMemoryStore.js +318 -0
  102. package/dist/memory/WorkingMemoryStore.js.map +1 -0
  103. package/dist/memory/types.d.ts +192 -0
  104. package/dist/memory/types.d.ts.map +1 -0
  105. package/dist/memory/types.js +8 -0
  106. package/dist/memory/types.js.map +1 -0
  107. package/dist/parsers/CodexConversationParser.d.ts +51 -0
  108. package/dist/parsers/CodexConversationParser.d.ts.map +1 -0
  109. package/dist/parsers/CodexConversationParser.js +301 -0
  110. package/dist/parsers/CodexConversationParser.js.map +1 -0
  111. package/dist/parsers/ConversationParser.d.ts +286 -0
  112. package/dist/parsers/ConversationParser.d.ts.map +1 -0
  113. package/dist/parsers/ConversationParser.js +795 -0
  114. package/dist/parsers/ConversationParser.js.map +1 -0
  115. package/dist/parsers/DecisionExtractor.d.ts +144 -0
  116. package/dist/parsers/DecisionExtractor.d.ts.map +1 -0
  117. package/dist/parsers/DecisionExtractor.js +434 -0
  118. package/dist/parsers/DecisionExtractor.js.map +1 -0
  119. package/dist/parsers/GitIntegrator.d.ts +156 -0
  120. package/dist/parsers/GitIntegrator.d.ts.map +1 -0
  121. package/dist/parsers/GitIntegrator.js +348 -0
  122. package/dist/parsers/GitIntegrator.js.map +1 -0
  123. package/dist/parsers/MistakeExtractor.d.ts +151 -0
  124. package/dist/parsers/MistakeExtractor.d.ts.map +1 -0
  125. package/dist/parsers/MistakeExtractor.js +460 -0
  126. package/dist/parsers/MistakeExtractor.js.map +1 -0
  127. package/dist/parsers/RequirementsExtractor.d.ts +166 -0
  128. package/dist/parsers/RequirementsExtractor.d.ts.map +1 -0
  129. package/dist/parsers/RequirementsExtractor.js +338 -0
  130. package/dist/parsers/RequirementsExtractor.js.map +1 -0
  131. package/dist/realtime/ConversationWatcher.d.ts +87 -0
  132. package/dist/realtime/ConversationWatcher.d.ts.map +1 -0
  133. package/dist/realtime/ConversationWatcher.js +204 -0
  134. package/dist/realtime/ConversationWatcher.js.map +1 -0
  135. package/dist/realtime/IncrementalParser.d.ts +83 -0
  136. package/dist/realtime/IncrementalParser.d.ts.map +1 -0
  137. package/dist/realtime/IncrementalParser.js +232 -0
  138. package/dist/realtime/IncrementalParser.js.map +1 -0
  139. package/dist/realtime/LiveExtractor.d.ts +72 -0
  140. package/dist/realtime/LiveExtractor.d.ts.map +1 -0
  141. package/dist/realtime/LiveExtractor.js +288 -0
  142. package/dist/realtime/LiveExtractor.js.map +1 -0
  143. package/dist/search/SemanticSearch.d.ts +121 -0
  144. package/dist/search/SemanticSearch.d.ts.map +1 -0
  145. package/dist/search/SemanticSearch.js +823 -0
  146. package/dist/search/SemanticSearch.js.map +1 -0
  147. package/dist/storage/BackupManager.d.ts +58 -0
  148. package/dist/storage/BackupManager.d.ts.map +1 -0
  149. package/dist/storage/BackupManager.js +223 -0
  150. package/dist/storage/BackupManager.js.map +1 -0
  151. package/dist/storage/ConversationStorage.d.ts +341 -0
  152. package/dist/storage/ConversationStorage.d.ts.map +1 -0
  153. package/dist/storage/ConversationStorage.js +792 -0
  154. package/dist/storage/ConversationStorage.js.map +1 -0
  155. package/dist/storage/DeletionService.d.ts +70 -0
  156. package/dist/storage/DeletionService.d.ts.map +1 -0
  157. package/dist/storage/DeletionService.js +253 -0
  158. package/dist/storage/DeletionService.js.map +1 -0
  159. package/dist/storage/GlobalIndex.d.ts +133 -0
  160. package/dist/storage/GlobalIndex.d.ts.map +1 -0
  161. package/dist/storage/GlobalIndex.js +310 -0
  162. package/dist/storage/GlobalIndex.js.map +1 -0
  163. package/dist/storage/SQLiteManager.d.ts +114 -0
  164. package/dist/storage/SQLiteManager.d.ts.map +1 -0
  165. package/dist/storage/SQLiteManager.js +636 -0
  166. package/dist/storage/SQLiteManager.js.map +1 -0
  167. package/dist/storage/migrations.d.ts +54 -0
  168. package/dist/storage/migrations.d.ts.map +1 -0
  169. package/dist/storage/migrations.js +285 -0
  170. package/dist/storage/migrations.js.map +1 -0
  171. package/dist/storage/schema.sql +436 -0
  172. package/dist/tools/ToolDefinitions.d.ts +946 -0
  173. package/dist/tools/ToolDefinitions.d.ts.map +1 -0
  174. package/dist/tools/ToolDefinitions.js +937 -0
  175. package/dist/tools/ToolDefinitions.js.map +1 -0
  176. package/dist/tools/ToolHandlers.d.ts +791 -0
  177. package/dist/tools/ToolHandlers.d.ts.map +1 -0
  178. package/dist/tools/ToolHandlers.js +3262 -0
  179. package/dist/tools/ToolHandlers.js.map +1 -0
  180. package/dist/types/ToolTypes.d.ts +824 -0
  181. package/dist/types/ToolTypes.d.ts.map +1 -0
  182. package/dist/types/ToolTypes.js +6 -0
  183. package/dist/types/ToolTypes.js.map +1 -0
  184. package/dist/utils/Logger.d.ts +70 -0
  185. package/dist/utils/Logger.d.ts.map +1 -0
  186. package/dist/utils/Logger.js +131 -0
  187. package/dist/utils/Logger.js.map +1 -0
  188. package/dist/utils/McpConfig.d.ts +54 -0
  189. package/dist/utils/McpConfig.d.ts.map +1 -0
  190. package/dist/utils/McpConfig.js +136 -0
  191. package/dist/utils/McpConfig.js.map +1 -0
  192. package/dist/utils/ProjectMigration.d.ts +82 -0
  193. package/dist/utils/ProjectMigration.d.ts.map +1 -0
  194. package/dist/utils/ProjectMigration.js +416 -0
  195. package/dist/utils/ProjectMigration.js.map +1 -0
  196. package/dist/utils/constants.d.ts +75 -0
  197. package/dist/utils/constants.d.ts.map +1 -0
  198. package/dist/utils/constants.js +105 -0
  199. package/dist/utils/constants.js.map +1 -0
  200. package/dist/utils/safeJson.d.ts +37 -0
  201. package/dist/utils/safeJson.d.ts.map +1 -0
  202. package/dist/utils/safeJson.js +48 -0
  203. package/dist/utils/safeJson.js.map +1 -0
  204. package/dist/utils/sanitization.d.ts +45 -0
  205. package/dist/utils/sanitization.d.ts.map +1 -0
  206. package/dist/utils/sanitization.js +153 -0
  207. package/dist/utils/sanitization.js.map +1 -0
  208. package/dist/utils/worktree.d.ts +15 -0
  209. package/dist/utils/worktree.d.ts.map +1 -0
  210. package/dist/utils/worktree.js +86 -0
  211. package/dist/utils/worktree.js.map +1 -0
  212. package/package.json +98 -0
  213. package/scripts/changelog-check.sh +62 -0
  214. package/scripts/check-node.js +17 -0
  215. package/scripts/dev-config.js +56 -0
  216. package/scripts/postinstall.js +117 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationStorage.js","sourceRoot":"","sources":["../../src/storage/ConversationStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAeH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAA0C,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IAQV;IAPZ,KAAK,GAAsB,IAAI,CAAC;IAExC;;;;OAIG;IACH,YAAoB,EAAiB;QAAjB,OAAE,GAAF,EAAE,CAAe;IAAG,CAAC;IAEzC,6DAA6D;IAE7D;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,MAAwB;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,0DAA0D;IAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,KAAK,CAAC,kBAAkB,CAAC,aAA6B;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;KAe5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,IAAI,aAAa,EACjC,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC7B,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,CAChB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,mDAAmD;QACnD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,YAAY,aAAa,CAAC,MAAM,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAU;QACxB,MAAM,QAAQ,GAAG,gBAAgB,EAAE,EAAE,CAAC;QAEtC,oBAAoB;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,QAAQ,CAAC,CAAC;YAC7D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,0CAA0C,CAAC;aACnD,GAAG,CAAC,EAAE,CAAgC,CAAC;QAE1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,8CAA8C;YAC9C,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG;YACb,GAAG,GAAG;YACN,QAAQ,EAAE,aAAa,CAA0B,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;SACnE,CAAC;QAEF,mBAAmB;QACnB,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qDAAqD;IAErD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,aAAa,CAAC,QAAmB,EAAE,cAAc,GAAG,KAAK;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;KAkB5B,CAAC,CAAC;QAEH,oEAAoE;QACpE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpD,gEAAgE;QAChE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpD,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,oFAAoF;QACpF,+DAA+D;QAC/D,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,iCAAiC;YACzD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3D,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;gBACtD,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpD,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE;qBACxB,OAAO,CAAC,wCAAwC,YAAY,GAAG,CAAC;qBAChE,GAAG,CAAC,GAAG,KAAK,CAAqB,CAAC;gBACrC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;oBAC9B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,kFAAkF;gBAClF,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;gBAE3F,IAAI,CAAC,GAAG,CACN,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,eAAe,EACnB,YAAY,EACZ,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,IAAI,IAAI,IAAI,EAChB,GAAG,CAAC,OAAO,IAAI,IAAI,EACnB,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,GAAG,CAAC,QAAQ,IAAI,IAAI,EACpB,GAAG,CAAC,UAAU,IAAI,IAAI,EACtB,GAAG,CAAC,UAAU,IAAI,IAAI,EACtB,GAAG,CAAC,GAAG,IAAI,IAAI,EACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAC7B,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,qEAAqE;QACrE,6EAA6E;QAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,YAAY,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,kBAAkB;QAChB,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iEAAiE;YACjE,iDAAiD;YACjD,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,sDAAsD;IAEtD;;;;;;;OAOG;IACH,KAAK,CAAC,aAAa,CAAC,QAAmB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;KAS5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAC/B,IAAI,CAAC,SAAS,CACf,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,YAAY,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;IACzD,CAAC;IAED,yDAAyD;IAEzD;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB,CAAC,WAAyB;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;KAa5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CACN,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,IAAI,IAAI,EACtB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,MAAM,CAAC,MAAM,IAAI,IAAI,EACrB,MAAM,CAAC,MAAM,IAAI,IAAI,EACrB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,MAAM,CAAC,SAAS,CACjB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,YAAY,WAAW,CAAC,MAAM,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,uDAAuD;IAEvD;;;;;;;OAOG;IACH,KAAK,CAAC,cAAc,CAAC,SAAqB;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;KAa5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,cAAc,IAAI,IAAI,EAC3B,IAAI,CAAC,WAAW,IAAI,IAAI,EACxB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9B,CAAC;gBACF,sCAAsC;gBACtC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,YAAY,SAAS,CAAC,MAAM,aAAa,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,QAAgB;QAC3B,MAAM,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC;QAErC,oBAAoB;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,QAAQ,CAAC,CAAC;YACpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAaD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN,+EAA+E,CAChF;aACA,GAAG,CAAC,QAAQ,CAAkB,CAAC;QAElC,mCAAmC;QACnC,MAAM,MAAM,GAAe,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1C,GAAG,GAAG;YACN,QAAQ,EAAE,aAAa,CAA0B,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;SACnE,CAAC,CAAC,CAAC;QAEJ,mBAAmB;QACnB,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4DAA4D;IAE5D;;;;;;;;OAQG;IACH,KAAK,CAAC,mBAAmB,CAAC,MAAuB;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;KAS5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,SAAS,CAChB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAC7D,CAAC;IAED,sDAAsD;IAEtD;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAAC,SAAqB,EAAE,cAAc,GAAG,KAAK;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;KAiB5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CACN,QAAQ,CAAC,EAAE,EACX,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,SAAS,IAAI,IAAI,EAC1B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAChD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACzC,QAAQ,CAAC,OAAO,IAAI,IAAI,EACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EACtC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EACxC,QAAQ,CAAC,SAAS,CACnB,CAAC;gBACF,sCAAsC;gBACtC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;oBACzC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;wBAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;wBAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,qEAAqE;QACrE,6EAA6E;QAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,YAAY,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACH,mBAAmB;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iEAAiE;YACjE,iDAAiD;YACjD,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,QAAgB;QAClC,MAAM,QAAQ,GAAG,aAAa,QAAQ,EAAE,CAAC;QAEzC,oBAAoB;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,QAAQ,CAAC,CAAC;YACpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,wFAAwF,CAAC;aACjG,GAAG,CAAC,KAAK,SAAS,IAAI,CAAkB,CAAC;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,GAAG;YACN,uBAAuB,EAAE,aAAa,CAAW,GAAG,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACjF,gBAAgB,EAAE,aAAa,CAAyB,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACjF,aAAa,EAAE,aAAa,CAAW,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;YAC7D,eAAe,EAAE,aAAa,CAAW,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC;SAClE,CAAC,CAAC,CAAC;QAEJ,mBAAmB;QACnB,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wDAAwD;IAExD;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CAAC,OAAoB;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;KAc5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CACN,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,MAAM,IAAI,IAAI,EACrB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,IAAI,IAAI,EACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,EACpC,MAAM,CAAC,eAAe,IAAI,IAAI,EAC9B,MAAM,CAAC,kBAAkB,IAAI,IAAI,EACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAChC,CAAC;gBACF,uCAAuC;gBACvC,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;oBACvC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;wBAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;wBACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,iBAAiB,CAAC,QAAgB;QAChC,MAAM,QAAQ,GAAG,WAAW,QAAQ,EAAE,CAAC;QAEvC,oBAAoB;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,QAAQ,CAAC,CAAC;YACrD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,0FAA0F,CAAC;aACnG,GAAG,CAAC,KAAK,SAAS,IAAI,CAAmB,CAAC;QAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,GAAG;YACN,aAAa,EAAE,aAAa,CAAW,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;YAC7D,QAAQ,EAAE,aAAa,CAA0B,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;SACnE,CAAC,CAAC,CAAC;QAEJ,mBAAmB;QACnB,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qDAAqD;IAErD;;;;;;;OAOG;IACH,KAAK,CAAC,aAAa,CAAC,QAAmB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;KAc5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,CACN,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,UAAU,IAAI,IAAI,EAC1B,OAAO,CAAC,uBAAuB,IAAI,IAAI,EACvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,EACtC,OAAO,CAAC,SAAS,CAClB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,YAAY,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,yDAAyD;IAEzD;;;;;;;OAOG;IACH,KAAK,CAAC,iBAAiB,CAAC,YAA2B;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;KAa5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,CACN,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,SAAS,IAAI,IAAI,EACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,EACtC,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,SAAS,CACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,YAAY,YAAY,CAAC,MAAM,eAAe,CAAC,CAAC;IAChE,CAAC;IAED,wDAAwD;IAExD;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB,CAAC,WAAyB;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;KAa5B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,GAAG,CACN,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,YAAY,IAAI,IAAI,EACxB,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAClE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAChC,GAAG,CAAC,SAAS,CACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,YAAY,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,oDAAoD;IAEpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,eAAe,CAAC,QAAgB;QAM9B,MAAM,QAAQ,GAAG,YAAY,QAAQ,EAAE,CAAC;QAExC,oBAAoB;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAK1B,QAAQ,CAAC,CAAC;YACb,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,QAAQ;YACnB,KAAK;YACL,OAAO;YACP,SAAS;SACV,CAAC;QAEF,mBAAmB;QACnB,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ;QAON,MAAM,KAAK,GAAG;YACZ,aAAa,EAAE,IAAI,CAAC,EAAE;iBACnB,OAAO,CAAC,6CAA6C,CAAC;iBACtD,GAAG,EAAuB;YAC7B,QAAQ,EAAE,IAAI,CAAC,EAAE;iBACd,OAAO,CAAC,wCAAwC,CAAC;iBACjD,GAAG,EAAuB;YAC7B,SAAS,EAAE,IAAI,CAAC,EAAE;iBACf,OAAO,CAAC,yCAAyC,CAAC;iBAClD,GAAG,EAAuB;YAC7B,QAAQ,EAAE,IAAI,CAAC,EAAE;iBACd,OAAO,CAAC,wCAAwC,CAAC;iBACjD,GAAG,EAAuB;YAC7B,WAAW,EAAE,IAAI,CAAC,EAAE;iBACjB,OAAO,CAAC,2CAA2C,CAAC;iBACpD,GAAG,EAAuB;SAC9B,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * DeletionService - Handle selective deletion of conversations by topic/keyword
3
+ * Uses semantic + FTS5 search to find matching conversations
4
+ */
5
+ import type Database from "better-sqlite3";
6
+ import { type BackupMetadata } from "./BackupManager.js";
7
+ import type { ConversationStorage } from "./ConversationStorage.js";
8
+ import type { SemanticSearch } from "../search/SemanticSearch.js";
9
+ /**
10
+ * Deletion preview - shows what would be deleted
11
+ */
12
+ export interface DeletionPreview {
13
+ conversationIds: string[];
14
+ conversations: Array<{
15
+ id: string;
16
+ session_id: string;
17
+ created_at: number;
18
+ message_count: number;
19
+ }>;
20
+ totalMessages: number;
21
+ totalDecisions: number;
22
+ totalMistakes: number;
23
+ summary: string;
24
+ }
25
+ /**
26
+ * Deletion result - what was actually deleted
27
+ */
28
+ export interface DeletionResult {
29
+ backup: BackupMetadata;
30
+ deleted: {
31
+ conversations: number;
32
+ messages: number;
33
+ decisions: number;
34
+ mistakes: number;
35
+ toolUses: number;
36
+ fileEdits: number;
37
+ };
38
+ summary: string;
39
+ }
40
+ /**
41
+ * DeletionService class
42
+ */
43
+ export declare class DeletionService {
44
+ private db;
45
+ private backupManager;
46
+ private storage;
47
+ private semanticSearch;
48
+ constructor(db: Database.Database, storage: ConversationStorage, semanticSearch?: SemanticSearch | null);
49
+ /**
50
+ * Preview what would be deleted for given keywords/topics
51
+ */
52
+ previewDeletionByTopic(keywords: string[], projectPath: string): Promise<DeletionPreview>;
53
+ /**
54
+ * Delete conversations by topic/keywords with automatic backup
55
+ */
56
+ forgetByTopic(keywords: string[], projectPath: string): Promise<DeletionResult>;
57
+ /**
58
+ * Find conversations matching keywords/topics using search
59
+ */
60
+ private findConversationsByTopic;
61
+ /**
62
+ * Count helpers
63
+ */
64
+ private countMessages;
65
+ private countDecisions;
66
+ private countMistakes;
67
+ private countToolUses;
68
+ private countFileEdits;
69
+ }
70
+ //# sourceMappingURL=DeletionService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeletionService.d.ts","sourceRoot":"","sources":["../../src/storage/DeletionService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,KAAK,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,cAAc,CAAwB;gBAG5C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,mBAAmB,EAC5B,cAAc,GAAE,cAAc,GAAG,IAAW;IAQ9C;;OAEG;IACG,sBAAsB,CAC1B,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC;IAgD3B;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC;IA+H1B;;OAEG;YACW,wBAAwB;IAsDtC;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,cAAc;CASvB"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * DeletionService - Handle selective deletion of conversations by topic/keyword
3
+ * Uses semantic + FTS5 search to find matching conversations
4
+ */
5
+ import { BackupManager } from "./BackupManager.js";
6
+ /**
7
+ * DeletionService class
8
+ */
9
+ export class DeletionService {
10
+ db;
11
+ backupManager;
12
+ storage;
13
+ semanticSearch;
14
+ constructor(db, storage, semanticSearch = null) {
15
+ this.db = db;
16
+ this.backupManager = new BackupManager(db);
17
+ this.storage = storage;
18
+ this.semanticSearch = semanticSearch;
19
+ }
20
+ /**
21
+ * Preview what would be deleted for given keywords/topics
22
+ */
23
+ async previewDeletionByTopic(keywords, projectPath) {
24
+ // Find matching conversations using search
25
+ const conversationIds = await this.findConversationsByTopic(keywords, projectPath);
26
+ if (conversationIds.length === 0) {
27
+ return {
28
+ conversationIds: [],
29
+ conversations: [],
30
+ totalMessages: 0,
31
+ totalDecisions: 0,
32
+ totalMistakes: 0,
33
+ summary: `No conversations found matching: ${keywords.join(", ")}`,
34
+ };
35
+ }
36
+ // Get conversation details
37
+ const placeholders = conversationIds.map(() => "?").join(",");
38
+ const conversations = this.db
39
+ .prepare(`SELECT id, id as session_id, created_at, message_count
40
+ FROM conversations
41
+ WHERE id IN (${placeholders})
42
+ ORDER BY created_at DESC`)
43
+ .all(...conversationIds);
44
+ // Count related records
45
+ const totalMessages = this.countMessages(conversationIds);
46
+ const totalDecisions = this.countDecisions(conversationIds);
47
+ const totalMistakes = this.countMistakes(conversationIds);
48
+ const summary = `Found ${conversations.length} conversation${conversations.length !== 1 ? "s" : ""} (${totalMessages} messages, ${totalDecisions} decisions, ${totalMistakes} mistakes) matching: ${keywords.join(", ")}`;
49
+ return {
50
+ conversationIds,
51
+ conversations,
52
+ totalMessages,
53
+ totalDecisions,
54
+ totalMistakes,
55
+ summary,
56
+ };
57
+ }
58
+ /**
59
+ * Delete conversations by topic/keywords with automatic backup
60
+ */
61
+ async forgetByTopic(keywords, projectPath) {
62
+ // First, preview what we're going to delete
63
+ const preview = await this.previewDeletionByTopic(keywords, projectPath);
64
+ if (preview.conversationIds.length === 0) {
65
+ throw new Error(`No conversations found matching: ${keywords.join(", ")}`);
66
+ }
67
+ // Create backup before deletion
68
+ const description = `Forget conversations about: ${keywords.join(", ")}`;
69
+ const backup = this.backupManager.createBackupForConversations(preview.conversationIds, description, projectPath);
70
+ // Count records before deletion for reporting
71
+ const beforeCounts = {
72
+ conversations: preview.conversationIds.length,
73
+ messages: preview.totalMessages,
74
+ decisions: preview.totalDecisions,
75
+ mistakes: preview.totalMistakes,
76
+ toolUses: this.countToolUses(preview.conversationIds),
77
+ fileEdits: this.countFileEdits(preview.conversationIds),
78
+ };
79
+ // Perform deletion (CASCADE will handle related records)
80
+ const placeholders = preview.conversationIds.map(() => "?").join(",");
81
+ // Use transaction for atomic deletion
82
+ this.db.transaction(() => {
83
+ // Delete FTS entries first (no CASCADE)
84
+ this.db
85
+ .prepare(`DELETE FROM messages_fts
86
+ WHERE rowid IN (
87
+ SELECT rowid FROM messages
88
+ WHERE conversation_id IN (${placeholders})
89
+ )`)
90
+ .run(...preview.conversationIds);
91
+ this.db
92
+ .prepare(`DELETE FROM decisions_fts
93
+ WHERE rowid IN (
94
+ SELECT rowid FROM decisions
95
+ WHERE conversation_id IN (${placeholders})
96
+ )`)
97
+ .run(...preview.conversationIds);
98
+ // Delete vector embeddings (no CASCADE from sqlite-vec tables)
99
+ // Get message IDs first
100
+ const messageIds = this.db
101
+ .prepare(`SELECT id FROM messages WHERE conversation_id IN (${placeholders})`)
102
+ .all(...preview.conversationIds);
103
+ if (messageIds.length > 0) {
104
+ const msgPlaceholders = messageIds.map(() => "?").join(",");
105
+ const msgEmbedIds = messageIds.map(m => `msg_${m.id}`);
106
+ // Delete from BLOB fallback table
107
+ try {
108
+ this.db
109
+ .prepare(`DELETE FROM message_embeddings WHERE message_id IN (${msgPlaceholders})`)
110
+ .run(...messageIds.map(m => m.id));
111
+ }
112
+ catch (_e) {
113
+ // Table might not exist
114
+ }
115
+ // Delete from sqlite-vec virtual table
116
+ try {
117
+ this.db
118
+ .prepare(`DELETE FROM vec_message_embeddings WHERE id IN (${msgPlaceholders})`)
119
+ .run(...msgEmbedIds);
120
+ }
121
+ catch (_e) {
122
+ // Vec table might not exist
123
+ }
124
+ }
125
+ // Delete decision embeddings
126
+ const decisionIds = this.db
127
+ .prepare(`SELECT id FROM decisions WHERE conversation_id IN (${placeholders})`)
128
+ .all(...preview.conversationIds);
129
+ if (decisionIds.length > 0) {
130
+ const decPlaceholders = decisionIds.map(() => "?").join(",");
131
+ const decEmbedIds = decisionIds.map(d => `dec_${d.id}`);
132
+ // Delete from BLOB fallback table
133
+ try {
134
+ this.db
135
+ .prepare(`DELETE FROM decision_embeddings WHERE decision_id IN (${decPlaceholders})`)
136
+ .run(...decisionIds.map(d => d.id));
137
+ }
138
+ catch (_e) {
139
+ // Table might not exist
140
+ }
141
+ // Delete from sqlite-vec virtual table
142
+ try {
143
+ this.db
144
+ .prepare(`DELETE FROM vec_decision_embeddings WHERE id IN (${decPlaceholders})`)
145
+ .run(...decEmbedIds);
146
+ }
147
+ catch (_e) {
148
+ // Vec table might not exist
149
+ }
150
+ }
151
+ // Delete conversations (CASCADE handles the rest)
152
+ this.db
153
+ .prepare(`DELETE FROM conversations WHERE id IN (${placeholders})`)
154
+ .run(...preview.conversationIds);
155
+ })();
156
+ // Clear cache since data was deleted
157
+ this.storage.clearCache();
158
+ const summary = `✓ Deleted ${beforeCounts.conversations} conversations (${beforeCounts.messages} messages, ${beforeCounts.decisions} decisions, ${beforeCounts.mistakes} mistakes)\n✓ Backup saved: ${backup.backupPath}`;
159
+ return {
160
+ backup,
161
+ deleted: beforeCounts,
162
+ summary,
163
+ };
164
+ }
165
+ /**
166
+ * Find conversations matching keywords/topics using search
167
+ */
168
+ async findConversationsByTopic(keywords, projectPath) {
169
+ const conversationIds = new Set();
170
+ // Build search query from keywords
171
+ const searchQuery = keywords.join(" ");
172
+ // Try semantic search if available
173
+ if (this.semanticSearch) {
174
+ try {
175
+ const results = await this.semanticSearch.searchConversations(searchQuery, 100 // Cast wide net
176
+ );
177
+ // Filter by project path
178
+ for (const result of results) {
179
+ if (result.conversation.project_path === projectPath) {
180
+ conversationIds.add(result.conversation.id);
181
+ }
182
+ }
183
+ }
184
+ catch (error) {
185
+ console.error("Semantic search failed, falling back to FTS:", error.message);
186
+ }
187
+ }
188
+ // Also try FTS5 search for exact matches
189
+ try {
190
+ // Escape internal double quotes in keywords to prevent FTS syntax errors
191
+ const ftsQuery = keywords.map((k) => `"${k.replace(/"/g, '""')}"`).join(" OR ");
192
+ const messages = this.db
193
+ .prepare(`SELECT DISTINCT m.conversation_id
194
+ FROM messages_fts mf
195
+ JOIN messages m ON m.rowid = mf.rowid
196
+ JOIN conversations c ON c.id = m.conversation_id
197
+ WHERE messages_fts MATCH ?
198
+ AND c.project_path = ?
199
+ LIMIT 100`)
200
+ .all(ftsQuery, projectPath);
201
+ for (const msg of messages) {
202
+ conversationIds.add(msg.conversation_id);
203
+ }
204
+ }
205
+ catch (error) {
206
+ console.error("FTS search failed:", error.message);
207
+ }
208
+ return Array.from(conversationIds);
209
+ }
210
+ /**
211
+ * Count helpers
212
+ */
213
+ countMessages(conversationIds) {
214
+ const placeholders = conversationIds.map(() => "?").join(",");
215
+ const result = this.db
216
+ .prepare(`SELECT COUNT(*) as count FROM messages WHERE conversation_id IN (${placeholders})`)
217
+ .get(...conversationIds);
218
+ return result.count;
219
+ }
220
+ countDecisions(conversationIds) {
221
+ const placeholders = conversationIds.map(() => "?").join(",");
222
+ const result = this.db
223
+ .prepare(`SELECT COUNT(*) as count FROM decisions WHERE conversation_id IN (${placeholders})`)
224
+ .get(...conversationIds);
225
+ return result.count;
226
+ }
227
+ countMistakes(conversationIds) {
228
+ const placeholders = conversationIds.map(() => "?").join(",");
229
+ const result = this.db
230
+ .prepare(`SELECT COUNT(*) as count FROM mistakes WHERE conversation_id IN (${placeholders})`)
231
+ .get(...conversationIds);
232
+ return result.count;
233
+ }
234
+ countToolUses(conversationIds) {
235
+ const placeholders = conversationIds.map(() => "?").join(",");
236
+ const result = this.db
237
+ .prepare(`SELECT COUNT(*) as count
238
+ FROM tool_uses
239
+ WHERE message_id IN (
240
+ SELECT id FROM messages WHERE conversation_id IN (${placeholders})
241
+ )`)
242
+ .get(...conversationIds);
243
+ return result.count;
244
+ }
245
+ countFileEdits(conversationIds) {
246
+ const placeholders = conversationIds.map(() => "?").join(",");
247
+ const result = this.db
248
+ .prepare(`SELECT COUNT(*) as count FROM file_edits WHERE conversation_id IN (${placeholders})`)
249
+ .get(...conversationIds);
250
+ return result.count;
251
+ }
252
+ }
253
+ //# sourceMappingURL=DeletionService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeletionService.js","sourceRoot":"","sources":["../../src/storage/DeletionService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Global Index for Cross-Project Search
3
+ *
4
+ * This module manages a lightweight global registry of all indexed projects
5
+ * (both Claude Code and Codex). It maintains a central database that tracks:
6
+ * - Which projects have been indexed
7
+ * - Where their databases are located
8
+ * - When they were last indexed
9
+ * - Basic statistics about each project
10
+ *
11
+ * The global index enables:
12
+ * - Discovery of all indexed projects
13
+ * - Cross-project search routing
14
+ * - Batch indexing operations
15
+ * - Global statistics
16
+ *
17
+ * Architecture:
18
+ * - Each project keeps its own database (per-project isolation)
19
+ * - The global index is a registry that links to project databases
20
+ * - Cross-project searches query multiple databases and merge results
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const globalIndex = new GlobalIndex();
25
+ * await globalIndex.registerProject({
26
+ * project_path: '/Users/user/project',
27
+ * source_type: 'claude-code',
28
+ * db_path: '/Users/user/.claude/projects/-project/.db',
29
+ * });
30
+ *
31
+ * const projects = await globalIndex.getAllProjects();
32
+ * console.log(`Tracking ${projects.length} projects`);
33
+ * ```
34
+ */
35
+ export interface ProjectMetadata {
36
+ id: string;
37
+ project_path: string;
38
+ source_type: "claude-code" | "codex";
39
+ db_path: string;
40
+ last_indexed: number;
41
+ message_count: number;
42
+ conversation_count: number;
43
+ decision_count: number;
44
+ mistake_count: number;
45
+ metadata: Record<string, unknown>;
46
+ created_at: number;
47
+ updated_at: number;
48
+ }
49
+ export interface RegisterProjectOptions {
50
+ project_path: string;
51
+ source_type: "claude-code" | "codex";
52
+ db_path: string;
53
+ message_count?: number;
54
+ conversation_count?: number;
55
+ decision_count?: number;
56
+ mistake_count?: number;
57
+ metadata?: Record<string, unknown>;
58
+ }
59
+ /**
60
+ * Global Index Manager
61
+ *
62
+ * Maintains a central registry of all indexed projects in a global database.
63
+ */
64
+ export declare class GlobalIndex {
65
+ private db;
66
+ private globalDbPath;
67
+ private initialized;
68
+ constructor(customPath?: string);
69
+ /**
70
+ * Ensure database is initialized (lazy initialization).
71
+ * Called automatically by methods that need the database.
72
+ */
73
+ private ensureInitialized;
74
+ /**
75
+ * Initialize the global index database schema.
76
+ * Note: this.db is guaranteed to be set when this is called from ensureInitialized()
77
+ */
78
+ private initializeSchema;
79
+ /**
80
+ * Register or update a project in the global index.
81
+ * Uses atomic UPSERT to avoid race conditions.
82
+ *
83
+ * @param options - Project registration options
84
+ * @returns The registered/updated project metadata
85
+ */
86
+ registerProject(options: RegisterProjectOptions): ProjectMetadata;
87
+ /**
88
+ * Get all registered projects.
89
+ *
90
+ * @param sourceType - Optional filter by source type
91
+ * @returns Array of project metadata
92
+ */
93
+ getAllProjects(sourceType?: "claude-code" | "codex"): ProjectMetadata[];
94
+ /**
95
+ * Get a specific project by path.
96
+ *
97
+ * @param projectPath - Absolute path to the project
98
+ * @returns Project metadata or null if not found
99
+ */
100
+ getProject(projectPath: string): ProjectMetadata | null;
101
+ /**
102
+ * Remove a project from the global index.
103
+ *
104
+ * Note: This does NOT delete the project's database, only removes it from the registry.
105
+ *
106
+ * @param projectPath - Absolute path to the project
107
+ * @returns True if project was removed, false if not found
108
+ */
109
+ removeProject(projectPath: string): boolean;
110
+ /**
111
+ * Get global statistics across all projects.
112
+ *
113
+ * @returns Aggregate statistics
114
+ */
115
+ getGlobalStats(): {
116
+ total_projects: number;
117
+ claude_code_projects: number;
118
+ codex_projects: number;
119
+ total_messages: number;
120
+ total_conversations: number;
121
+ total_decisions: number;
122
+ total_mistakes: number;
123
+ };
124
+ /**
125
+ * Close the global index database.
126
+ */
127
+ close(): void;
128
+ /**
129
+ * Get the path to the global index database.
130
+ */
131
+ getDbPath(): string;
132
+ }
133
+ //# sourceMappingURL=GlobalIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalIndex.d.ts","sourceRoot":"","sources":["../../src/storage/GlobalIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAmFH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAEhB,UAAU,CAAC,EAAE,MAAM;IAU/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;;;;OAMG;IACH,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe;IA0EjE;;;;;OAKG;IACH,cAAc,CAAC,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,eAAe,EAAE;IAiCvE;;;;;OAKG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IA6BvD;;;;;;;OAOG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAO3C;;;;OAIG;IACH,cAAc,IAAI;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACxB;IA6BD;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB"}