@evolith/smart-cli 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/ARCHITECTURE.md +1 -1
  2. package/LICENSE +21 -0
  3. package/README.es.md +31 -3
  4. package/README.md +915 -170
  5. package/package.json +50 -41
  6. package/shell/hooks.bash +68 -0
  7. package/shell/hooks.fish +57 -0
  8. package/shell/hooks.zsh +68 -0
  9. package/dist/app.module.d.ts +0 -2
  10. package/dist/app.module.js +0 -61
  11. package/dist/app.module.js.map +0 -1
  12. package/dist/app.module.spec.d.ts +0 -1
  13. package/dist/app.module.spec.js +0 -305
  14. package/dist/app.module.spec.js.map +0 -1
  15. package/dist/application/ports/webhook-notifier.port.d.ts +0 -4
  16. package/dist/application/ports/webhook-notifier.port.js +0 -3
  17. package/dist/application/ports/webhook-notifier.port.js.map +0 -1
  18. package/dist/application/services/index.d.ts +0 -64
  19. package/dist/application/services/index.js +0 -371
  20. package/dist/application/services/index.js.map +0 -1
  21. package/dist/application/services/initialize-project.spec.d.ts +0 -1
  22. package/dist/application/services/initialize-project.spec.js +0 -211
  23. package/dist/application/services/initialize-project.spec.js.map +0 -1
  24. package/dist/application/services/phase-transition.use-case.spec.d.ts +0 -1
  25. package/dist/application/services/phase-transition.use-case.spec.js +0 -297
  26. package/dist/application/services/phase-transition.use-case.spec.js.map +0 -1
  27. package/dist/application/services/services.test.d.ts +0 -1
  28. package/dist/application/services/services.test.js +0 -176
  29. package/dist/application/services/services.test.js.map +0 -1
  30. package/dist/application/use-cases/evaluate-gate.use-case.d.ts +0 -20
  31. package/dist/application/use-cases/evaluate-gate.use-case.js +0 -72
  32. package/dist/application/use-cases/evaluate-gate.use-case.js.map +0 -1
  33. package/dist/application/use-cases/validate-satellite.use-case.d.ts +0 -19
  34. package/dist/application/use-cases/validate-satellite.use-case.js +0 -96
  35. package/dist/application/use-cases/validate-satellite.use-case.js.map +0 -1
  36. package/dist/application/use-cases/validate-satellite.use-case.spec.d.ts +0 -1
  37. package/dist/application/use-cases/validate-satellite.use-case.spec.js +0 -102
  38. package/dist/application/use-cases/validate-satellite.use-case.spec.js.map +0 -1
  39. package/dist/commands/adr/adr.command.d.ts +0 -30
  40. package/dist/commands/adr/adr.command.js +0 -379
  41. package/dist/commands/adr/adr.command.js.map +0 -1
  42. package/dist/commands/adr/adr.command.spec.d.ts +0 -1
  43. package/dist/commands/adr/adr.command.spec.js +0 -409
  44. package/dist/commands/adr/adr.command.spec.js.map +0 -1
  45. package/dist/commands/architecture/scaffold.command.d.ts +0 -8
  46. package/dist/commands/architecture/scaffold.command.js +0 -184
  47. package/dist/commands/architecture/scaffold.command.js.map +0 -1
  48. package/dist/commands/architecture/scaffold.command.spec.d.ts +0 -1
  49. package/dist/commands/architecture/scaffold.command.spec.js +0 -207
  50. package/dist/commands/architecture/scaffold.command.spec.js.map +0 -1
  51. package/dist/commands/commands.test.d.ts +0 -1
  52. package/dist/commands/commands.test.js +0 -131
  53. package/dist/commands/commands.test.js.map +0 -1
  54. package/dist/commands/completion/completion.command.d.ts +0 -20
  55. package/dist/commands/completion/completion.command.js +0 -215
  56. package/dist/commands/completion/completion.command.js.map +0 -1
  57. package/dist/commands/completion/completion.command.spec.d.ts +0 -1
  58. package/dist/commands/completion/completion.command.spec.js +0 -240
  59. package/dist/commands/completion/completion.command.spec.js.map +0 -1
  60. package/dist/commands/docs/docs.command.d.ts +0 -14
  61. package/dist/commands/docs/docs.command.js +0 -233
  62. package/dist/commands/docs/docs.command.js.map +0 -1
  63. package/dist/commands/docs/docs.command.spec.d.ts +0 -1
  64. package/dist/commands/docs/docs.command.spec.js +0 -87
  65. package/dist/commands/docs/docs.command.spec.js.map +0 -1
  66. package/dist/commands/drift/drift.command.d.ts +0 -24
  67. package/dist/commands/drift/drift.command.js +0 -250
  68. package/dist/commands/drift/drift.command.js.map +0 -1
  69. package/dist/commands/drift/drift.command.spec.d.ts +0 -1
  70. package/dist/commands/drift/drift.command.spec.js +0 -327
  71. package/dist/commands/drift/drift.command.spec.js.map +0 -1
  72. package/dist/commands/gate/gate.command.d.ts +0 -23
  73. package/dist/commands/gate/gate.command.js +0 -210
  74. package/dist/commands/gate/gate.command.js.map +0 -1
  75. package/dist/commands/history/history.command.d.ts +0 -29
  76. package/dist/commands/history/history.command.js +0 -268
  77. package/dist/commands/history/history.command.js.map +0 -1
  78. package/dist/commands/history/history.command.spec.d.ts +0 -1
  79. package/dist/commands/history/history.command.spec.js +0 -392
  80. package/dist/commands/history/history.command.spec.js.map +0 -1
  81. package/dist/commands/init/agents.command.d.ts +0 -22
  82. package/dist/commands/init/agents.command.js +0 -502
  83. package/dist/commands/init/agents.command.js.map +0 -1
  84. package/dist/commands/init/agents.command.spec.d.ts +0 -1
  85. package/dist/commands/init/agents.command.spec.js +0 -550
  86. package/dist/commands/init/agents.command.spec.js.map +0 -1
  87. package/dist/commands/init/init.command.d.ts +0 -20
  88. package/dist/commands/init/init.command.js +0 -329
  89. package/dist/commands/init/init.command.js.map +0 -1
  90. package/dist/commands/init/init.command.spec.d.ts +0 -1
  91. package/dist/commands/init/init.command.spec.js +0 -272
  92. package/dist/commands/init/init.command.spec.js.map +0 -1
  93. package/dist/commands/init/upgrade.command.d.ts +0 -19
  94. package/dist/commands/init/upgrade.command.js +0 -210
  95. package/dist/commands/init/upgrade.command.js.map +0 -1
  96. package/dist/commands/init/upgrade.command.spec.d.ts +0 -1
  97. package/dist/commands/init/upgrade.command.spec.js +0 -378
  98. package/dist/commands/init/upgrade.command.spec.js.map +0 -1
  99. package/dist/commands/mcp/mcp-serve.command.d.ts +0 -15
  100. package/dist/commands/mcp/mcp-serve.command.js +0 -106
  101. package/dist/commands/mcp/mcp-serve.command.js.map +0 -1
  102. package/dist/commands/mcp/mcp-serve.command.spec.d.ts +0 -1
  103. package/dist/commands/mcp/mcp-serve.command.spec.js +0 -58
  104. package/dist/commands/mcp/mcp-serve.command.spec.js.map +0 -1
  105. package/dist/commands/sdlc/gate-status.command.d.ts +0 -7
  106. package/dist/commands/sdlc/gate-status.command.js +0 -189
  107. package/dist/commands/sdlc/gate-status.command.js.map +0 -1
  108. package/dist/commands/sdlc/gate-status.command.spec.d.ts +0 -1
  109. package/dist/commands/sdlc/gate-status.command.spec.js +0 -302
  110. package/dist/commands/sdlc/gate-status.command.spec.js.map +0 -1
  111. package/dist/commands/sdlc/generate-domain.command.d.ts +0 -7
  112. package/dist/commands/sdlc/generate-domain.command.js +0 -166
  113. package/dist/commands/sdlc/generate-domain.command.js.map +0 -1
  114. package/dist/commands/sdlc/generate-domain.command.spec.d.ts +0 -1
  115. package/dist/commands/sdlc/generate-domain.command.spec.js +0 -121
  116. package/dist/commands/sdlc/generate-domain.command.spec.js.map +0 -1
  117. package/dist/commands/sdlc/handoff.command.d.ts +0 -22
  118. package/dist/commands/sdlc/handoff.command.js +0 -273
  119. package/dist/commands/sdlc/handoff.command.js.map +0 -1
  120. package/dist/commands/sdlc/handoff.command.spec.d.ts +0 -1
  121. package/dist/commands/sdlc/handoff.command.spec.js +0 -395
  122. package/dist/commands/sdlc/handoff.command.spec.js.map +0 -1
  123. package/dist/commands/sdlc/sdlc.command.d.ts +0 -4
  124. package/dist/commands/sdlc/sdlc.command.js +0 -70
  125. package/dist/commands/sdlc/sdlc.command.js.map +0 -1
  126. package/dist/commands/sdlc/sdlc.command.spec.d.ts +0 -1
  127. package/dist/commands/sdlc/sdlc.command.spec.js +0 -79
  128. package/dist/commands/sdlc/sdlc.command.spec.js.map +0 -1
  129. package/dist/commands/standards/standards.command.d.ts +0 -27
  130. package/dist/commands/standards/standards.command.js +0 -308
  131. package/dist/commands/standards/standards.command.js.map +0 -1
  132. package/dist/commands/standards/standards.command.spec.d.ts +0 -1
  133. package/dist/commands/standards/standards.command.spec.js +0 -311
  134. package/dist/commands/standards/standards.command.spec.js.map +0 -1
  135. package/dist/commands/validate/validate.command.d.ts +0 -25
  136. package/dist/commands/validate/validate.command.js +0 -284
  137. package/dist/commands/validate/validate.command.js.map +0 -1
  138. package/dist/commands/validate/validate.command.spec.d.ts +0 -1
  139. package/dist/commands/validate/validate.command.spec.js +0 -368
  140. package/dist/commands/validate/validate.command.spec.js.map +0 -1
  141. package/dist/config/runtimes.json +0 -196
  142. package/dist/config/tool-catalog.json +0 -343
  143. package/dist/core/abstractions/index.d.ts +0 -6
  144. package/dist/core/abstractions/index.js +0 -23
  145. package/dist/core/abstractions/index.js.map +0 -1
  146. package/dist/core/abstractions/interfaces.d.ts +0 -61
  147. package/dist/core/abstractions/interfaces.js +0 -5
  148. package/dist/core/abstractions/interfaces.js.map +0 -1
  149. package/dist/core/abstractions/providers/config-parser.provider.d.ts +0 -15
  150. package/dist/core/abstractions/providers/config-parser.provider.js +0 -68
  151. package/dist/core/abstractions/providers/config-parser.provider.js.map +0 -1
  152. package/dist/core/abstractions/providers/config-parser.provider.spec.d.ts +0 -1
  153. package/dist/core/abstractions/providers/config-parser.provider.spec.js +0 -18
  154. package/dist/core/abstractions/providers/config-parser.provider.spec.js.map +0 -1
  155. package/dist/core/abstractions/providers/logger.provider.d.ts +0 -10
  156. package/dist/core/abstractions/providers/logger.provider.js +0 -84
  157. package/dist/core/abstractions/providers/logger.provider.js.map +0 -1
  158. package/dist/core/abstractions/providers/logger.provider.spec.d.ts +0 -1
  159. package/dist/core/abstractions/providers/logger.provider.spec.js +0 -212
  160. package/dist/core/abstractions/providers/logger.provider.spec.js.map +0 -1
  161. package/dist/core/abstractions/providers/mock-filesystem.provider.d.ts +0 -31
  162. package/dist/core/abstractions/providers/mock-filesystem.provider.js +0 -126
  163. package/dist/core/abstractions/providers/mock-filesystem.provider.js.map +0 -1
  164. package/dist/core/abstractions/providers/mock-filesystem.provider.spec.d.ts +0 -1
  165. package/dist/core/abstractions/providers/mock-filesystem.provider.spec.js +0 -56
  166. package/dist/core/abstractions/providers/mock-filesystem.provider.spec.js.map +0 -1
  167. package/dist/core/abstractions/providers/node-filesystem.provider.d.ts +0 -20
  168. package/dist/core/abstractions/providers/node-filesystem.provider.js +0 -108
  169. package/dist/core/abstractions/providers/node-filesystem.provider.js.map +0 -1
  170. package/dist/core/agents/agent-ruleset-builder.d.ts +0 -30
  171. package/dist/core/agents/agent-ruleset-builder.js +0 -75
  172. package/dist/core/agents/agent-ruleset-builder.js.map +0 -1
  173. package/dist/core/agents/agent-ruleset-builder.spec.d.ts +0 -1
  174. package/dist/core/agents/agent-ruleset-builder.spec.js +0 -135
  175. package/dist/core/agents/agent-ruleset-builder.spec.js.map +0 -1
  176. package/dist/core/architecture/nx-workspace.strategy.d.ts +0 -14
  177. package/dist/core/architecture/nx-workspace.strategy.js +0 -136
  178. package/dist/core/architecture/nx-workspace.strategy.js.map +0 -1
  179. package/dist/core/architecture/nx-workspace.strategy.spec.d.ts +0 -1
  180. package/dist/core/architecture/nx-workspace.strategy.spec.js +0 -187
  181. package/dist/core/architecture/nx-workspace.strategy.spec.js.map +0 -1
  182. package/dist/core/architecture/workspace-manager.strategy.d.ts +0 -8
  183. package/dist/core/architecture/workspace-manager.strategy.js +0 -3
  184. package/dist/core/architecture/workspace-manager.strategy.js.map +0 -1
  185. package/dist/core/config/config.service.d.ts +0 -15
  186. package/dist/core/config/config.service.js +0 -55
  187. package/dist/core/config/config.service.js.map +0 -1
  188. package/dist/core/config/config.service.spec.d.ts +0 -1
  189. package/dist/core/config/config.service.spec.js +0 -43
  190. package/dist/core/config/config.service.spec.js.map +0 -1
  191. package/dist/core/di/container.d.ts +0 -25
  192. package/dist/core/di/container.js +0 -87
  193. package/dist/core/di/container.js.map +0 -1
  194. package/dist/core/di/container.spec.d.ts +0 -1
  195. package/dist/core/di/container.spec.js +0 -301
  196. package/dist/core/di/container.spec.js.map +0 -1
  197. package/dist/core/errors/index.d.ts +0 -26
  198. package/dist/core/errors/index.js +0 -67
  199. package/dist/core/errors/index.js.map +0 -1
  200. package/dist/core/filesystem/file-manager.service.d.ts +0 -4
  201. package/dist/core/filesystem/file-manager.service.js +0 -96
  202. package/dist/core/filesystem/file-manager.service.js.map +0 -1
  203. package/dist/core/filesystem/file-manager.service.spec.d.ts +0 -1
  204. package/dist/core/filesystem/file-manager.service.spec.js +0 -103
  205. package/dist/core/filesystem/file-manager.service.spec.js.map +0 -1
  206. package/dist/core/generators/hexagonal-scaffolder.d.ts +0 -6
  207. package/dist/core/generators/hexagonal-scaffolder.js +0 -260
  208. package/dist/core/generators/hexagonal-scaffolder.js.map +0 -1
  209. package/dist/core/generators/hexagonal-scaffolder.spec.d.ts +0 -1
  210. package/dist/core/generators/hexagonal-scaffolder.spec.js +0 -164
  211. package/dist/core/generators/hexagonal-scaffolder.spec.js.map +0 -1
  212. package/dist/core/generators/mermaid-class-parser.d.ts +0 -38
  213. package/dist/core/generators/mermaid-class-parser.js +0 -183
  214. package/dist/core/generators/mermaid-class-parser.js.map +0 -1
  215. package/dist/core/generators/mermaid-class-parser.spec.d.ts +0 -1
  216. package/dist/core/generators/mermaid-class-parser.spec.js +0 -148
  217. package/dist/core/generators/mermaid-class-parser.spec.js.map +0 -1
  218. package/dist/core/mcp/mcp-server.service.d.ts +0 -7
  219. package/dist/core/mcp/mcp-server.service.js +0 -31
  220. package/dist/core/mcp/mcp-server.service.js.map +0 -1
  221. package/dist/core/mcp/metrics.service.d.ts +0 -37
  222. package/dist/core/mcp/metrics.service.js +0 -72
  223. package/dist/core/mcp/metrics.service.js.map +0 -1
  224. package/dist/core/mcp/metrics.service.spec.d.ts +0 -1
  225. package/dist/core/mcp/metrics.service.spec.js +0 -159
  226. package/dist/core/mcp/metrics.service.spec.js.map +0 -1
  227. package/dist/core/mcp/prompts/index.d.ts +0 -22
  228. package/dist/core/mcp/prompts/index.js +0 -211
  229. package/dist/core/mcp/prompts/index.js.map +0 -1
  230. package/dist/core/mcp/prompts/index.spec.d.ts +0 -1
  231. package/dist/core/mcp/prompts/index.spec.js +0 -150
  232. package/dist/core/mcp/prompts/index.spec.js.map +0 -1
  233. package/dist/core/mcp/resources/index.d.ts +0 -11
  234. package/dist/core/mcp/resources/index.js +0 -209
  235. package/dist/core/mcp/resources/index.js.map +0 -1
  236. package/dist/core/mcp/resources/index.spec.d.ts +0 -1
  237. package/dist/core/mcp/resources/index.spec.js +0 -212
  238. package/dist/core/mcp/resources/index.spec.js.map +0 -1
  239. package/dist/core/mcp/server.d.ts +0 -33
  240. package/dist/core/mcp/server.js +0 -693
  241. package/dist/core/mcp/server.js.map +0 -1
  242. package/dist/core/mcp/server.spec.d.ts +0 -1
  243. package/dist/core/mcp/server.spec.js +0 -579
  244. package/dist/core/mcp/server.spec.js.map +0 -1
  245. package/dist/core/mcp/tools/agent.d.ts +0 -41
  246. package/dist/core/mcp/tools/agent.js +0 -195
  247. package/dist/core/mcp/tools/agent.js.map +0 -1
  248. package/dist/core/mcp/tools/agent.spec.d.ts +0 -1
  249. package/dist/core/mcp/tools/agent.spec.js +0 -171
  250. package/dist/core/mcp/tools/agent.spec.js.map +0 -1
  251. package/dist/core/mcp/tools/architecture.d.ts +0 -29
  252. package/dist/core/mcp/tools/architecture.js +0 -234
  253. package/dist/core/mcp/tools/architecture.js.map +0 -1
  254. package/dist/core/mcp/tools/architecture.spec.d.ts +0 -1
  255. package/dist/core/mcp/tools/architecture.spec.js +0 -145
  256. package/dist/core/mcp/tools/architecture.spec.js.map +0 -1
  257. package/dist/core/mcp/tools/gate.d.ts +0 -1
  258. package/dist/core/mcp/tools/gate.js +0 -68
  259. package/dist/core/mcp/tools/gate.js.map +0 -1
  260. package/dist/core/mcp/tools/moscow.d.ts +0 -30
  261. package/dist/core/mcp/tools/moscow.js +0 -113
  262. package/dist/core/mcp/tools/moscow.js.map +0 -1
  263. package/dist/core/mcp/tools/moscow.spec.d.ts +0 -1
  264. package/dist/core/mcp/tools/moscow.spec.js +0 -209
  265. package/dist/core/mcp/tools/moscow.spec.js.map +0 -1
  266. package/dist/core/mcp/tools/sdlc.d.ts +0 -32
  267. package/dist/core/mcp/tools/sdlc.js +0 -190
  268. package/dist/core/mcp/tools/sdlc.js.map +0 -1
  269. package/dist/core/mcp/tools/sdlc.spec.d.ts +0 -1
  270. package/dist/core/mcp/tools/sdlc.spec.js +0 -170
  271. package/dist/core/mcp/tools/sdlc.spec.js.map +0 -1
  272. package/dist/core/mcp/tools/tool-utils.d.ts +0 -4
  273. package/dist/core/mcp/tools/tool-utils.js +0 -18
  274. package/dist/core/mcp/tools/tool-utils.js.map +0 -1
  275. package/dist/core/mcp/tools/validate.d.ts +0 -18
  276. package/dist/core/mcp/tools/validate.js +0 -56
  277. package/dist/core/mcp/tools/validate.js.map +0 -1
  278. package/dist/core/mcp/tools/validate.spec.d.ts +0 -1
  279. package/dist/core/mcp/tools/validate.spec.js +0 -130
  280. package/dist/core/mcp/tools/validate.spec.js.map +0 -1
  281. package/dist/core/mcp/watcher.service.d.ts +0 -8
  282. package/dist/core/mcp/watcher.service.js +0 -82
  283. package/dist/core/mcp/watcher.service.js.map +0 -1
  284. package/dist/core/mcp/watcher.service.spec.d.ts +0 -1
  285. package/dist/core/mcp/watcher.service.spec.js +0 -171
  286. package/dist/core/mcp/watcher.service.spec.js.map +0 -1
  287. package/dist/core/metrics/dora-calculator.d.ts +0 -18
  288. package/dist/core/metrics/dora-calculator.js +0 -146
  289. package/dist/core/metrics/dora-calculator.js.map +0 -1
  290. package/dist/core/metrics/dora-calculator.spec.d.ts +0 -1
  291. package/dist/core/metrics/dora-calculator.spec.js +0 -164
  292. package/dist/core/metrics/dora-calculator.spec.js.map +0 -1
  293. package/dist/core/metrics/git-log-reader.d.ts +0 -14
  294. package/dist/core/metrics/git-log-reader.js +0 -39
  295. package/dist/core/metrics/git-log-reader.js.map +0 -1
  296. package/dist/core/metrics/git-log-reader.spec.d.ts +0 -1
  297. package/dist/core/metrics/git-log-reader.spec.js +0 -108
  298. package/dist/core/metrics/git-log-reader.spec.js.map +0 -1
  299. package/dist/core/observability/command-watcher.d.ts +0 -45
  300. package/dist/core/observability/command-watcher.js +0 -168
  301. package/dist/core/observability/command-watcher.js.map +0 -1
  302. package/dist/core/observability/command-watcher.spec.d.ts +0 -1
  303. package/dist/core/observability/command-watcher.spec.js +0 -123
  304. package/dist/core/observability/command-watcher.spec.js.map +0 -1
  305. package/dist/core/observability/error-reporter.d.ts +0 -47
  306. package/dist/core/observability/error-reporter.js +0 -163
  307. package/dist/core/observability/error-reporter.js.map +0 -1
  308. package/dist/core/observability/error-reporter.spec.d.ts +0 -1
  309. package/dist/core/observability/error-reporter.spec.js +0 -291
  310. package/dist/core/observability/error-reporter.spec.js.map +0 -1
  311. package/dist/core/observability/index.d.ts +0 -5
  312. package/dist/core/observability/index.js +0 -26
  313. package/dist/core/observability/index.js.map +0 -1
  314. package/dist/core/observability/observability.test.d.ts +0 -1
  315. package/dist/core/observability/observability.test.js +0 -224
  316. package/dist/core/observability/observability.test.js.map +0 -1
  317. package/dist/core/observability/structured-logger.d.ts +0 -53
  318. package/dist/core/observability/structured-logger.js +0 -123
  319. package/dist/core/observability/structured-logger.js.map +0 -1
  320. package/dist/core/observability/structured-logger.spec.d.ts +0 -1
  321. package/dist/core/observability/structured-logger.spec.js +0 -197
  322. package/dist/core/observability/structured-logger.spec.js.map +0 -1
  323. package/dist/core/observability/timing.d.ts +0 -23
  324. package/dist/core/observability/timing.js +0 -140
  325. package/dist/core/observability/timing.js.map +0 -1
  326. package/dist/core/observability/timing.spec.d.ts +0 -1
  327. package/dist/core/observability/timing.spec.js +0 -216
  328. package/dist/core/observability/timing.spec.js.map +0 -1
  329. package/dist/core/observability/tool-usage-telemetry.service.d.ts +0 -46
  330. package/dist/core/observability/tool-usage-telemetry.service.js +0 -181
  331. package/dist/core/observability/tool-usage-telemetry.service.js.map +0 -1
  332. package/dist/core/services/command-executor.service.d.ts +0 -3
  333. package/dist/core/services/command-executor.service.js +0 -12
  334. package/dist/core/services/command-executor.service.js.map +0 -1
  335. package/dist/core/services/command-history.service.d.ts +0 -39
  336. package/dist/core/services/command-history.service.js +0 -150
  337. package/dist/core/services/command-history.service.js.map +0 -1
  338. package/dist/core/services/command-history.service.spec.d.ts +0 -1
  339. package/dist/core/services/command-history.service.spec.js +0 -257
  340. package/dist/core/services/command-history.service.spec.js.map +0 -1
  341. package/dist/core/services/command-providers.d.ts +0 -1
  342. package/dist/core/services/command-providers.js +0 -17
  343. package/dist/core/services/command-providers.js.map +0 -1
  344. package/dist/core/services/runtime-catalog.service.d.ts +0 -2
  345. package/dist/core/services/runtime-catalog.service.js +0 -7
  346. package/dist/core/services/runtime-catalog.service.js.map +0 -1
  347. package/dist/core/sync/sync.service.d.ts +0 -4
  348. package/dist/core/sync/sync.service.js +0 -81
  349. package/dist/core/sync/sync.service.js.map +0 -1
  350. package/dist/core/sync/sync.service.spec.d.ts +0 -1
  351. package/dist/core/sync/sync.service.spec.js +0 -63
  352. package/dist/core/sync/sync.service.spec.js.map +0 -1
  353. package/dist/core/upgrade/satellite-upgrade.service.d.ts +0 -48
  354. package/dist/core/upgrade/satellite-upgrade.service.js +0 -358
  355. package/dist/core/upgrade/satellite-upgrade.service.js.map +0 -1
  356. package/dist/core/upgrade/satellite-upgrade.service.spec.d.ts +0 -1
  357. package/dist/core/upgrade/satellite-upgrade.service.spec.js +0 -223
  358. package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +0 -1
  359. package/dist/core/validators/architecture-drift.service.d.ts +0 -68
  360. package/dist/core/validators/architecture-drift.service.js +0 -266
  361. package/dist/core/validators/architecture-drift.service.js.map +0 -1
  362. package/dist/core/validators/architecture-drift.service.spec.d.ts +0 -1
  363. package/dist/core/validators/architecture-drift.service.spec.js +0 -315
  364. package/dist/core/validators/architecture-drift.service.spec.js.map +0 -1
  365. package/dist/core/validators/deep-architecture-analyzer.d.ts +0 -58
  366. package/dist/core/validators/deep-architecture-analyzer.js +0 -333
  367. package/dist/core/validators/deep-architecture-analyzer.js.map +0 -1
  368. package/dist/core/validators/deep-architecture-analyzer.spec.d.ts +0 -1
  369. package/dist/core/validators/deep-architecture-analyzer.spec.js +0 -186
  370. package/dist/core/validators/deep-architecture-analyzer.spec.js.map +0 -1
  371. package/dist/core/validators/evaluators/evaluator.interface.d.ts +0 -14
  372. package/dist/core/validators/evaluators/evaluator.interface.js +0 -3
  373. package/dist/core/validators/evaluators/evaluator.interface.js.map +0 -1
  374. package/dist/core/validators/evaluators/native-evaluator.d.ts +0 -31
  375. package/dist/core/validators/evaluators/native-evaluator.js +0 -461
  376. package/dist/core/validators/evaluators/native-evaluator.js.map +0 -1
  377. package/dist/core/validators/evaluators/opa-evaluator.d.ts +0 -20
  378. package/dist/core/validators/evaluators/opa-evaluator.js +0 -249
  379. package/dist/core/validators/evaluators/opa-evaluator.js.map +0 -1
  380. package/dist/core/validators/phase-gate-validator.service.d.ts +0 -75
  381. package/dist/core/validators/phase-gate-validator.service.js +0 -338
  382. package/dist/core/validators/phase-gate-validator.service.js.map +0 -1
  383. package/dist/core/validators/phase-gate-validator.service.spec.d.ts +0 -1
  384. package/dist/core/validators/phase-gate-validator.service.spec.js +0 -326
  385. package/dist/core/validators/phase-gate-validator.service.spec.js.map +0 -1
  386. package/dist/core/validators/rule-evaluation-engine.d.ts +0 -34
  387. package/dist/core/validators/rule-evaluation-engine.js +0 -187
  388. package/dist/core/validators/rule-evaluation-engine.js.map +0 -1
  389. package/dist/core/validators/rule-evaluation-engine.spec.d.ts +0 -1
  390. package/dist/core/validators/rule-evaluation-engine.spec.js +0 -243
  391. package/dist/core/validators/rule-evaluation-engine.spec.js.map +0 -1
  392. package/dist/core/validators/ruleset-validator-architecture.spec.d.ts +0 -1
  393. package/dist/core/validators/ruleset-validator-architecture.spec.js +0 -178
  394. package/dist/core/validators/ruleset-validator-architecture.spec.js.map +0 -1
  395. package/dist/core/validators/ruleset-validator.service.d.ts +0 -82
  396. package/dist/core/validators/ruleset-validator.service.js +0 -682
  397. package/dist/core/validators/ruleset-validator.service.js.map +0 -1
  398. package/dist/core/validators/ruleset-validator.service.spec.d.ts +0 -1
  399. package/dist/core/validators/ruleset-validator.service.spec.js +0 -469
  400. package/dist/core/validators/ruleset-validator.service.spec.js.map +0 -1
  401. package/dist/domain/entities/index.d.ts +0 -72
  402. package/dist/domain/entities/index.js +0 -119
  403. package/dist/domain/entities/index.js.map +0 -1
  404. package/dist/domain/gate-evidence.d.ts +0 -59
  405. package/dist/domain/gate-evidence.js +0 -38
  406. package/dist/domain/gate-evidence.js.map +0 -1
  407. package/dist/domain/interfaces.d.ts +0 -224
  408. package/dist/domain/interfaces.js +0 -3
  409. package/dist/domain/interfaces.js.map +0 -1
  410. package/dist/domain/services/adr.service.d.ts +0 -50
  411. package/dist/domain/services/adr.service.js +0 -129
  412. package/dist/domain/services/adr.service.js.map +0 -1
  413. package/dist/domain/services/adr.service.spec.d.ts +0 -1
  414. package/dist/domain/services/adr.service.spec.js +0 -141
  415. package/dist/domain/services/adr.service.spec.js.map +0 -1
  416. package/dist/domain/services/agent-registry.service.d.ts +0 -26
  417. package/dist/domain/services/agent-registry.service.js +0 -152
  418. package/dist/domain/services/agent-registry.service.js.map +0 -1
  419. package/dist/domain/services/agent-registry.service.spec.d.ts +0 -1
  420. package/dist/domain/services/agent-registry.service.spec.js +0 -162
  421. package/dist/domain/services/agent-registry.service.spec.js.map +0 -1
  422. package/dist/domain/services/index.d.ts +0 -34
  423. package/dist/domain/services/index.js +0 -128
  424. package/dist/domain/services/index.js.map +0 -1
  425. package/dist/domain/services/moscow-prioritization.service.d.ts +0 -44
  426. package/dist/domain/services/moscow-prioritization.service.js +0 -213
  427. package/dist/domain/services/moscow-prioritization.service.js.map +0 -1
  428. package/dist/domain/services/moscow-prioritization.service.spec.d.ts +0 -1
  429. package/dist/domain/services/moscow-prioritization.service.spec.js +0 -285
  430. package/dist/domain/services/moscow-prioritization.service.spec.js.map +0 -1
  431. package/dist/domain/services/services.test.d.ts +0 -1
  432. package/dist/domain/services/services.test.js +0 -236
  433. package/dist/domain/services/services.test.js.map +0 -1
  434. package/dist/domain/services/standards.service.d.ts +0 -47
  435. package/dist/domain/services/standards.service.js +0 -129
  436. package/dist/domain/services/standards.service.js.map +0 -1
  437. package/dist/domain/services/standards.service.spec.d.ts +0 -1
  438. package/dist/domain/services/standards.service.spec.js +0 -600
  439. package/dist/domain/services/standards.service.spec.js.map +0 -1
  440. package/dist/domain/services/tool-usage-telemetry.service.d.ts +0 -46
  441. package/dist/domain/services/tool-usage-telemetry.service.js +0 -181
  442. package/dist/domain/services/tool-usage-telemetry.service.js.map +0 -1
  443. package/dist/domain/services/tool-usage-telemetry.service.spec.d.ts +0 -1
  444. package/dist/domain/services/tool-usage-telemetry.service.spec.js +0 -180
  445. package/dist/domain/services/tool-usage-telemetry.service.spec.js.map +0 -1
  446. package/dist/infrastructure/adapters/webhook.adapter.d.ts +0 -5
  447. package/dist/infrastructure/adapters/webhook.adapter.js +0 -19
  448. package/dist/infrastructure/adapters/webhook.adapter.js.map +0 -1
  449. package/dist/infrastructure/catalog/catalog-loader.d.ts +0 -22
  450. package/dist/infrastructure/catalog/catalog-loader.js +0 -135
  451. package/dist/infrastructure/catalog/catalog-loader.js.map +0 -1
  452. package/dist/infrastructure/catalog/catalog-loader.test.d.ts +0 -1
  453. package/dist/infrastructure/catalog/catalog-loader.test.js +0 -184
  454. package/dist/infrastructure/catalog/catalog-loader.test.js.map +0 -1
  455. package/dist/infrastructure/cli/command-executor.d.ts +0 -20
  456. package/dist/infrastructure/cli/command-executor.js +0 -109
  457. package/dist/infrastructure/cli/command-executor.js.map +0 -1
  458. package/dist/infrastructure/cli/command-executor.spec.d.ts +0 -1
  459. package/dist/infrastructure/cli/command-executor.spec.js +0 -149
  460. package/dist/infrastructure/cli/command-executor.spec.js.map +0 -1
  461. package/dist/infrastructure/cli/command-executor.test.d.ts +0 -1
  462. package/dist/infrastructure/cli/command-executor.test.js +0 -98
  463. package/dist/infrastructure/cli/command-executor.test.js.map +0 -1
  464. package/dist/infrastructure/cli/providers/index.d.ts +0 -52
  465. package/dist/infrastructure/cli/providers/index.js +0 -175
  466. package/dist/infrastructure/cli/providers/index.js.map +0 -1
  467. package/dist/infrastructure/cli/providers/providers.spec.d.ts +0 -1
  468. package/dist/infrastructure/cli/providers/providers.spec.js +0 -251
  469. package/dist/infrastructure/cli/providers/providers.spec.js.map +0 -1
  470. package/dist/infrastructure/formatters/output-formatter.service.d.ts +0 -28
  471. package/dist/infrastructure/formatters/output-formatter.service.js +0 -198
  472. package/dist/infrastructure/formatters/output-formatter.service.js.map +0 -1
  473. package/dist/infrastructure/formatters/output-formatter.service.spec.d.ts +0 -1
  474. package/dist/infrastructure/formatters/output-formatter.service.spec.js +0 -164
  475. package/dist/infrastructure/formatters/output-formatter.service.spec.js.map +0 -1
  476. package/dist/main.d.ts +0 -2
  477. package/dist/main.js +0 -10
  478. package/dist/main.js.map +0 -1
  479. package/dist/test/mocks/index.d.ts +0 -44
  480. package/dist/test/mocks/index.js +0 -135
  481. package/dist/test/mocks/index.js.map +0 -1
@@ -1,600 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const standards_service_1 = require("./standards.service");
4
- const mockFileSystem = {
5
- exists: jest.fn(),
6
- existsSync: jest.fn(),
7
- readFile: jest.fn(),
8
- readJson: jest.fn(),
9
- readdirNames: jest.fn(),
10
- writeFile: jest.fn(),
11
- writeJson: jest.fn(),
12
- ensureDir: jest.fn(),
13
- remove: jest.fn(),
14
- stat: jest.fn(),
15
- };
16
- describe('StandardsService', () => {
17
- let service;
18
- beforeEach(() => {
19
- jest.clearAllMocks();
20
- service = new standards_service_1.StandardsService(mockFileSystem, '/test');
21
- });
22
- describe('constructor', () => {
23
- it('should use default standards directory', () => {
24
- const svc = new standards_service_1.StandardsService(mockFileSystem, '/base');
25
- expect(svc).toBeDefined();
26
- });
27
- it('should use custom standards directory when provided', () => {
28
- const svc = new standards_service_1.StandardsService(mockFileSystem, '/base', '/custom/standards');
29
- expect(svc).toBeDefined();
30
- });
31
- });
32
- describe('initialize', () => {
33
- it('should create required directories', async () => {
34
- await service.initialize();
35
- expect(mockFileSystem.ensureDir).toHaveBeenCalledWith('/test/reference/standards');
36
- expect(mockFileSystem.ensureDir).toHaveBeenCalledWith('/test/reference/standards/rulesets');
37
- expect(mockFileSystem.ensureDir).toHaveBeenCalledWith('/test/reference/standards/templates');
38
- });
39
- it('should create index file if not exists', async () => {
40
- mockFileSystem.exists.mockResolvedValue(false);
41
- await service.initialize();
42
- expect(mockFileSystem.writeJson).toHaveBeenCalledWith('/test/reference/standards/standards-index.json', expect.objectContaining({ standards: [] }));
43
- });
44
- it('should not overwrite existing index', async () => {
45
- mockFileSystem.exists.mockResolvedValue(true);
46
- await service.initialize();
47
- expect(mockFileSystem.writeJson).not.toHaveBeenCalledWith('/test/reference/standards/standards-index.json', expect.anything());
48
- });
49
- it('should include lastUpdated timestamp when creating index', async () => {
50
- mockFileSystem.exists.mockResolvedValue(false);
51
- await service.initialize();
52
- const writeCall = mockFileSystem.writeJson.mock.calls[0];
53
- const data = writeCall[1];
54
- expect(data.lastUpdated).toBeDefined();
55
- expect(new Date(data.lastUpdated).getTime()).not.toBeNaN();
56
- });
57
- });
58
- describe('register', () => {
59
- it('should register a new standard', async () => {
60
- mockFileSystem.exists.mockResolvedValue(false);
61
- const standard = {
62
- id: 'STD-001',
63
- name: 'Test Standard',
64
- version: '1.0.0',
65
- category: 'architecture',
66
- description: 'A test standard',
67
- rules: [],
68
- };
69
- await service.register(standard);
70
- expect(mockFileSystem.ensureDir).toHaveBeenCalledWith('/test/reference/standards/architecture');
71
- expect(mockFileSystem.writeJson).toHaveBeenCalledWith('/test/reference/standards/architecture/STD-001.json', standard);
72
- });
73
- it('should update index after registration', async () => {
74
- mockFileSystem.exists.mockResolvedValue(false);
75
- const standard = {
76
- id: 'STD-002',
77
- name: 'Another Standard',
78
- version: '1.0.0',
79
- category: 'governance',
80
- description: 'Another test standard',
81
- rules: [],
82
- };
83
- await service.register(standard);
84
- expect(mockFileSystem.writeJson).toHaveBeenCalled();
85
- });
86
- it('should register standard for all categories', async () => {
87
- mockFileSystem.exists.mockResolvedValue(false);
88
- const categories = [
89
- 'architecture',
90
- 'governance',
91
- 'operations',
92
- 'infrastructure',
93
- ];
94
- for (const category of categories) {
95
- jest.clearAllMocks();
96
- mockFileSystem.exists.mockResolvedValue(false);
97
- const standard = {
98
- id: `STD-${category}`,
99
- name: `${category} Standard`,
100
- version: '1.0.0',
101
- category,
102
- description: `A ${category} standard`,
103
- rules: [],
104
- };
105
- await service.register(standard);
106
- expect(mockFileSystem.ensureDir).toHaveBeenCalledWith(`/test/reference/standards/${category}`);
107
- expect(mockFileSystem.writeJson).toHaveBeenCalledWith(`/test/reference/standards/${category}/STD-${category}.json`, standard);
108
- }
109
- });
110
- it('should register standard with rules', async () => {
111
- mockFileSystem.exists.mockResolvedValue(false);
112
- const standard = {
113
- id: 'STD-RULES',
114
- name: 'Standard with Rules',
115
- version: '2.0.0',
116
- category: 'operations',
117
- description: 'Standard with validation rules',
118
- rules: [
119
- {
120
- id: 'R1',
121
- name: 'Rule 1',
122
- severity: 'error',
123
- description: 'First rule',
124
- check: 'code.includes("test")',
125
- remediation: 'Add test',
126
- },
127
- ],
128
- };
129
- await service.register(standard);
130
- expect(mockFileSystem.writeJson).toHaveBeenCalledWith('/test/reference/standards/operations/STD-RULES.json', standard);
131
- });
132
- it('should register standard with metadata', async () => {
133
- mockFileSystem.exists.mockResolvedValue(false);
134
- const standard = {
135
- id: 'STD-META',
136
- name: 'Standard with Metadata',
137
- version: '1.0.0',
138
- category: 'infrastructure',
139
- description: 'Standard with metadata',
140
- rules: [],
141
- metadata: { author: 'test', tags: ['infra', 'core'] },
142
- };
143
- await service.register(standard);
144
- expect(mockFileSystem.writeJson).toHaveBeenCalledWith('/test/reference/standards/infrastructure/STD-META.json', standard);
145
- });
146
- });
147
- describe('list', () => {
148
- it('should return empty array when index does not exist', async () => {
149
- mockFileSystem.exists.mockResolvedValue(false);
150
- const result = await service.list();
151
- expect(result).toEqual([]);
152
- });
153
- it('should return all standards from index', async () => {
154
- mockFileSystem.exists.mockResolvedValue(true);
155
- mockFileSystem.readJson.mockResolvedValue({
156
- standards: [
157
- { id: 'STD-001', name: 'Standard 1', category: 'architecture' },
158
- { id: 'STD-002', name: 'Standard 2', category: 'governance' },
159
- ],
160
- });
161
- const result = await service.list();
162
- expect(result).toHaveLength(2);
163
- });
164
- it('should filter by category', async () => {
165
- mockFileSystem.exists.mockResolvedValue(true);
166
- mockFileSystem.readJson.mockResolvedValue({
167
- standards: [
168
- { id: 'STD-001', name: 'Standard 1', category: 'architecture' },
169
- { id: 'STD-002', name: 'Standard 2', category: 'governance' },
170
- ],
171
- });
172
- const result = await service.list('architecture');
173
- expect(result).toHaveLength(1);
174
- expect(result[0].id).toBe('STD-001');
175
- });
176
- it('should return empty array when filtering by non-existent category', async () => {
177
- mockFileSystem.exists.mockResolvedValue(true);
178
- mockFileSystem.readJson.mockResolvedValue({
179
- standards: [
180
- { id: 'STD-001', name: 'Standard 1', category: 'architecture' },
181
- ],
182
- });
183
- const result = await service.list('infrastructure');
184
- expect(result).toHaveLength(0);
185
- });
186
- it('should handle empty standards array in index', async () => {
187
- mockFileSystem.exists.mockResolvedValue(true);
188
- mockFileSystem.readJson.mockResolvedValue({
189
- standards: [],
190
- });
191
- const result = await service.list();
192
- expect(result).toEqual([]);
193
- });
194
- it('should handle index with missing standards property', async () => {
195
- mockFileSystem.exists.mockResolvedValue(true);
196
- mockFileSystem.readJson.mockResolvedValue({});
197
- const result = await service.list();
198
- expect(result).toEqual([]);
199
- });
200
- it('should filter by governance category', async () => {
201
- mockFileSystem.exists.mockResolvedValue(true);
202
- mockFileSystem.readJson.mockResolvedValue({
203
- standards: [
204
- { id: 'STD-001', category: 'architecture' },
205
- { id: 'STD-002', category: 'governance' },
206
- { id: 'STD-003', category: 'governance' },
207
- ],
208
- });
209
- const result = await service.list('governance');
210
- expect(result).toHaveLength(2);
211
- });
212
- it('should filter by operations category', async () => {
213
- mockFileSystem.exists.mockResolvedValue(true);
214
- mockFileSystem.readJson.mockResolvedValue({
215
- standards: [
216
- { id: 'STD-001', category: 'operations' },
217
- { id: 'STD-002', category: 'architecture' },
218
- ],
219
- });
220
- const result = await service.list('operations');
221
- expect(result).toHaveLength(1);
222
- expect(result[0].category).toBe('operations');
223
- });
224
- it('should filter by infrastructure category', async () => {
225
- mockFileSystem.exists.mockResolvedValue(true);
226
- mockFileSystem.readJson.mockResolvedValue({
227
- standards: [
228
- { id: 'STD-001', category: 'infrastructure' },
229
- { id: 'STD-002', category: 'architecture' },
230
- ],
231
- });
232
- const result = await service.list('infrastructure');
233
- expect(result).toHaveLength(1);
234
- expect(result[0].category).toBe('infrastructure');
235
- });
236
- });
237
- describe('get', () => {
238
- it('should return standard by id', async () => {
239
- mockFileSystem.exists.mockResolvedValue(true);
240
- mockFileSystem.readJson.mockResolvedValue({
241
- standards: [
242
- { id: 'STD-001', name: 'Standard 1', category: 'architecture' },
243
- ],
244
- });
245
- const result = await service.get('STD-001');
246
- expect(result).toBeDefined();
247
- expect(result?.id).toBe('STD-001');
248
- });
249
- it('should return undefined for non-existent standard', async () => {
250
- mockFileSystem.exists.mockResolvedValue(true);
251
- mockFileSystem.readJson.mockResolvedValue({
252
- standards: [],
253
- });
254
- const result = await service.get('NONEXISTENT');
255
- expect(result).toBeUndefined();
256
- });
257
- it('should return undefined when searching in populated list', async () => {
258
- mockFileSystem.exists.mockResolvedValue(true);
259
- mockFileSystem.readJson.mockResolvedValue({
260
- standards: [
261
- { id: 'STD-001', name: 'Standard 1', category: 'architecture' },
262
- { id: 'STD-002', name: 'Standard 2', category: 'governance' },
263
- ],
264
- });
265
- const result = await service.get('STD-999');
266
- expect(result).toBeUndefined();
267
- });
268
- });
269
- describe('validate', () => {
270
- it('should return validation result with no rules that have checks', async () => {
271
- mockFileSystem.exists.mockResolvedValue(true);
272
- mockFileSystem.readJson.mockResolvedValue({
273
- standards: [
274
- {
275
- id: 'STD-001',
276
- name: 'Test Standard',
277
- rules: [
278
- { id: 'R1', name: 'Rule 1', severity: 'error', description: 'Test rule' },
279
- ],
280
- },
281
- ],
282
- });
283
- const result = await service.validate('test code');
284
- expect(result).toHaveProperty('passed');
285
- expect(result).toHaveProperty('results');
286
- expect(result.totalRules).toBe(0);
287
- });
288
- it('should evaluate passing rule checks', async () => {
289
- mockFileSystem.exists.mockResolvedValue(true);
290
- mockFileSystem.readJson.mockResolvedValue({
291
- standards: [
292
- {
293
- id: 'STD-001',
294
- name: 'Test Standard',
295
- rules: [
296
- {
297
- id: 'R1',
298
- name: 'Has function',
299
- severity: 'error',
300
- description: 'Code must have a function',
301
- check: 'code.includes("function")',
302
- },
303
- ],
304
- },
305
- ],
306
- });
307
- const result = await service.validate('function test() {}');
308
- expect(result.passed).toBe(1);
309
- expect(result.failed).toBe(0);
310
- expect(result.results[0].passed).toBe(true);
311
- expect(result.results[0].message).toBe('OK');
312
- });
313
- it('should evaluate failing rule checks', async () => {
314
- mockFileSystem.exists.mockResolvedValue(true);
315
- mockFileSystem.readJson.mockResolvedValue({
316
- standards: [
317
- {
318
- id: 'STD-001',
319
- name: 'Test Standard',
320
- rules: [
321
- {
322
- id: 'R1',
323
- name: 'Has function',
324
- severity: 'error',
325
- description: 'Code must have a function',
326
- check: 'code.includes("function")',
327
- },
328
- ],
329
- },
330
- ],
331
- });
332
- const result = await service.validate('const x = 1;');
333
- expect(result.passed).toBe(0);
334
- expect(result.failed).toBe(1);
335
- expect(result.results[0].passed).toBe(false);
336
- expect(result.results[0].message).toBe('Code must have a function');
337
- });
338
- it('should handle multiple standards with multiple rules', async () => {
339
- mockFileSystem.exists.mockResolvedValue(true);
340
- mockFileSystem.readJson.mockResolvedValue({
341
- standards: [
342
- {
343
- id: 'STD-001',
344
- name: 'Standard 1',
345
- rules: [
346
- { id: 'R1', name: 'Rule 1', severity: 'error', description: 'Rule 1 desc', check: 'true' },
347
- { id: 'R2', name: 'Rule 2', severity: 'warning', description: 'Rule 2 desc', check: 'false' },
348
- ],
349
- },
350
- {
351
- id: 'STD-002',
352
- name: 'Standard 2',
353
- rules: [
354
- { id: 'R3', name: 'Rule 3', severity: 'info', description: 'Rule 3 desc', check: 'true' },
355
- ],
356
- },
357
- ],
358
- });
359
- const result = await service.validate('any code');
360
- expect(result.totalRules).toBe(3);
361
- expect(result.passed).toBe(2);
362
- expect(result.failed).toBe(1);
363
- });
364
- it('should skip rules without check function', async () => {
365
- mockFileSystem.exists.mockResolvedValue(true);
366
- mockFileSystem.readJson.mockResolvedValue({
367
- standards: [
368
- {
369
- id: 'STD-001',
370
- name: 'Test Standard',
371
- rules: [
372
- { id: 'R1', name: 'Rule 1', severity: 'error', description: 'No check' },
373
- { id: 'R2', name: 'Rule 2', severity: 'warning', description: 'Has check', check: 'true' },
374
- ],
375
- },
376
- ],
377
- });
378
- const result = await service.validate('code');
379
- expect(result.totalRules).toBe(1);
380
- expect(result.results[0].ruleId).toBe('R2');
381
- });
382
- it('should handle invalid check expressions gracefully', async () => {
383
- mockFileSystem.exists.mockResolvedValue(true);
384
- mockFileSystem.readJson.mockResolvedValue({
385
- standards: [
386
- {
387
- id: 'STD-001',
388
- name: 'Test Standard',
389
- rules: [
390
- { id: 'R1', name: 'Invalid Rule', severity: 'error', description: 'Bad check', check: 'invalid syntax!!!' },
391
- ],
392
- },
393
- ],
394
- });
395
- const result = await service.validate('code');
396
- expect(result.totalRules).toBe(1);
397
- expect(result.results[0].passed).toBe(true);
398
- });
399
- it('should return correct severity in results', async () => {
400
- mockFileSystem.exists.mockResolvedValue(true);
401
- mockFileSystem.readJson.mockResolvedValue({
402
- standards: [
403
- {
404
- id: 'STD-001',
405
- name: 'Test Standard',
406
- rules: [
407
- { id: 'R1', name: 'Error Rule', severity: 'error', description: 'Error', check: 'true' },
408
- { id: 'R2', name: 'Warning Rule', severity: 'warning', description: 'Warning', check: 'true' },
409
- { id: 'R3', name: 'Info Rule', severity: 'info', description: 'Info', check: 'true' },
410
- ],
411
- },
412
- ],
413
- });
414
- const result = await service.validate('code');
415
- expect(result.results[0].severity).toBe('error');
416
- expect(result.results[1].severity).toBe('warning');
417
- expect(result.results[2].severity).toBe('info');
418
- });
419
- it('should include standardId and ruleName in results', async () => {
420
- mockFileSystem.exists.mockResolvedValue(true);
421
- mockFileSystem.readJson.mockResolvedValue({
422
- standards: [
423
- {
424
- id: 'STD-VALIDATE',
425
- name: 'Validation Standard',
426
- rules: [
427
- { id: 'RULE-1', name: 'Check Name', severity: 'error', description: 'Desc', check: 'true' },
428
- ],
429
- },
430
- ],
431
- });
432
- const result = await service.validate('code');
433
- expect(result.results[0].standardId).toBe('STD-VALIDATE');
434
- expect(result.results[0].ruleName).toBe('Check Name');
435
- });
436
- });
437
- describe('export', () => {
438
- it('should export standard as JSON', async () => {
439
- mockFileSystem.exists.mockResolvedValue(true);
440
- mockFileSystem.readJson.mockResolvedValue({
441
- standards: [
442
- {
443
- id: 'STD-EXP',
444
- name: 'Export Standard',
445
- version: '1.0.0',
446
- category: 'architecture',
447
- description: 'Export test',
448
- rules: [],
449
- },
450
- ],
451
- });
452
- const result = await service.export('STD-EXP', 'json');
453
- const parsed = JSON.parse(result);
454
- expect(parsed.id).toBe('STD-EXP');
455
- expect(parsed.name).toBe('Export Standard');
456
- });
457
- it('should export standard as markdown', async () => {
458
- mockFileSystem.exists.mockResolvedValue(true);
459
- mockFileSystem.readJson.mockResolvedValue({
460
- standards: [
461
- {
462
- id: 'STD-MD',
463
- name: 'Markdown Standard',
464
- version: '2.0.0',
465
- category: 'governance',
466
- description: 'Markdown export test',
467
- rules: [
468
- { id: 'R1', name: 'Rule 1', severity: 'error', description: 'Rule desc' },
469
- ],
470
- },
471
- ],
472
- });
473
- const result = await service.export('STD-MD', 'markdown');
474
- expect(result).toContain('# Standard: Markdown Standard');
475
- expect(result).toContain('**ID:** STD-MD');
476
- expect(result).toContain('**Version:** 2.0.0');
477
- expect(result).toContain('**Category:** governance');
478
- expect(result).toContain('Markdown export test');
479
- expect(result).toContain('| R1 | Rule 1 | error | Rule desc |');
480
- });
481
- it('should throw error for non-existent standard', async () => {
482
- mockFileSystem.exists.mockResolvedValue(true);
483
- mockFileSystem.readJson.mockResolvedValue({
484
- standards: [],
485
- });
486
- await expect(service.export('NONEXISTENT', 'json')).rejects.toThrow('Standard NONEXISTENT not found');
487
- });
488
- it('should include remediation section in markdown when rules have remediation', async () => {
489
- mockFileSystem.exists.mockResolvedValue(true);
490
- mockFileSystem.readJson.mockResolvedValue({
491
- standards: [
492
- {
493
- id: 'STD-REM',
494
- name: 'Remediation Standard',
495
- version: '1.0.0',
496
- category: 'operations',
497
- description: 'Test remediation',
498
- rules: [
499
- { id: 'R1', name: 'Rule 1', severity: 'error', description: 'Desc', remediation: 'Fix it this way' },
500
- { id: 'R2', name: 'Rule 2', severity: 'warning', description: 'Desc 2' },
501
- ],
502
- },
503
- ],
504
- });
505
- const result = await service.export('STD-REM', 'markdown');
506
- expect(result).toContain('## Remediation');
507
- expect(result).toContain('### R1: Rule 1');
508
- expect(result).toContain('Fix it this way');
509
- expect(result).not.toContain('### R2: Rule 2');
510
- });
511
- it('should not include remediation section when no rules have remediation', async () => {
512
- mockFileSystem.exists.mockResolvedValue(true);
513
- mockFileSystem.readJson.mockResolvedValue({
514
- standards: [
515
- {
516
- id: 'STD-NOREM',
517
- name: 'No Remediation Standard',
518
- version: '1.0.0',
519
- category: 'infrastructure',
520
- description: 'No remediation test',
521
- rules: [
522
- { id: 'R1', name: 'Rule 1', severity: 'error', description: 'Desc' },
523
- ],
524
- },
525
- ],
526
- });
527
- const result = await service.export('STD-NOREM', 'markdown');
528
- expect(result).not.toContain('## Remediation');
529
- });
530
- it('should include all rule fields in markdown table', async () => {
531
- mockFileSystem.exists.mockResolvedValue(true);
532
- mockFileSystem.readJson.mockResolvedValue({
533
- standards: [
534
- {
535
- id: 'STD-TABLE',
536
- name: 'Table Standard',
537
- version: '1.0.0',
538
- category: 'architecture',
539
- description: 'Table test',
540
- rules: [
541
- { id: 'R1', name: 'First Rule', severity: 'error', description: 'First desc' },
542
- { id: 'R2', name: 'Second Rule', severity: 'info', description: 'Second desc' },
543
- ],
544
- },
545
- ],
546
- });
547
- const result = await service.export('STD-TABLE', 'markdown');
548
- expect(result).toContain('| R1 | First Rule | error | First desc |');
549
- expect(result).toContain('| R2 | Second Rule | info | Second desc |');
550
- });
551
- });
552
- describe('updateIndex (private method)', () => {
553
- it('should add new standard to index', async () => {
554
- mockFileSystem.exists.mockResolvedValue(false);
555
- const standard = {
556
- id: 'STD-NEW',
557
- name: 'New Standard',
558
- version: '1.0.0',
559
- category: 'architecture',
560
- description: 'New',
561
- rules: [],
562
- };
563
- await service.register(standard);
564
- const writeCalls = mockFileSystem.writeJson.mock.calls.filter((call) => call[0].includes('standards-index.json'));
565
- expect(writeCalls.length).toBeGreaterThan(0);
566
- });
567
- it('should update existing standard in index', async () => {
568
- mockFileSystem.exists.mockResolvedValueOnce(false);
569
- const standard1 = {
570
- id: 'STD-UPDATE',
571
- name: 'Original',
572
- version: '1.0.0',
573
- category: 'architecture',
574
- description: 'Original',
575
- rules: [],
576
- };
577
- await service.register(standard1);
578
- jest.clearAllMocks();
579
- mockFileSystem.exists.mockResolvedValueOnce(true);
580
- mockFileSystem.readJson.mockResolvedValue({
581
- standards: [standard1],
582
- lastUpdated: '2024-01-01T00:00:00.000Z',
583
- });
584
- const standard2 = {
585
- id: 'STD-UPDATE',
586
- name: 'Updated',
587
- version: '2.0.0',
588
- category: 'architecture',
589
- description: 'Updated',
590
- rules: [],
591
- };
592
- await service.register(standard2);
593
- const indexWriteCall = mockFileSystem.writeJson.mock.calls.find((call) => call[0].includes('standards-index.json'));
594
- expect(indexWriteCall).toBeDefined();
595
- expect(indexWriteCall[1].standards).toHaveLength(1);
596
- expect(indexWriteCall[1].standards[0].name).toBe('Updated');
597
- });
598
- });
599
- });
600
- //# sourceMappingURL=standards.service.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"standards.service.spec.js","sourceRoot":"","sources":["../../../src/domain/services/standards.service.spec.ts"],"names":[],"mappings":";;AAAA,2DAA+F;AAE/F,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;IACjB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;IACrB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;IACnB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;IACnB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;IACvB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;IACjB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;CAChB,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAyB,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,GAAG,IAAI,oCAAgB,CAAC,cAAqB,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,GAAG,GAAG,IAAI,oCAAgB,CAAC,cAAqB,EAAE,OAAO,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,GAAG,GAAG,IAAI,oCAAgB,CAAC,cAAqB,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACtF,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;YACnF,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,oCAAoC,CAAC,CAAC;YAC5F,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,qCAAqC,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACnD,gDAAgD,EAChD,MAAM,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAE9C,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,oBAAoB,CACvD,gDAAgD,EAChD,MAAM,CAAC,QAAQ,EAAE,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAa;gBACzB,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,cAAc;gBACxB,WAAW,EAAE,iBAAiB;gBAC9B,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wCAAwC,CAAC,CAAC;YAChG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACnD,qDAAqD,EACrD,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAa;gBACzB,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,uBAAuB;gBACpC,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,UAAU,GAA2E;gBACzF,cAAc;gBACd,YAAY;gBACZ,YAAY;gBACZ,gBAAgB;aACjB,CAAC;YAEF,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAClC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAE/C,MAAM,QAAQ,GAAa;oBACzB,EAAE,EAAE,OAAO,QAAQ,EAAE;oBACrB,IAAI,EAAE,GAAG,QAAQ,WAAW;oBAC5B,OAAO,EAAE,OAAO;oBAChB,QAAQ;oBACR,WAAW,EAAE,KAAK,QAAQ,WAAW;oBACrC,KAAK,EAAE,EAAE;iBACV,CAAC;gBAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEjC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;gBAC/F,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACnD,6BAA6B,QAAQ,QAAQ,QAAQ,OAAO,EAC5D,QAAQ,CACT,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAa;gBACzB,EAAE,EAAE,WAAW;gBACf,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,gCAAgC;gBAC7C,KAAK,EAAE;oBACL;wBACE,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,OAAO;wBACjB,WAAW,EAAE,YAAY;wBACzB,KAAK,EAAE,uBAAuB;wBAC9B,WAAW,EAAE,UAAU;qBACxB;iBACF;aACF,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACnD,qDAAqD,EACrD,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAa;gBACzB,EAAE,EAAE,UAAU;gBACd,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,gBAAgB;gBAC1B,WAAW,EAAE,wBAAwB;gBACrC,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;aACtD,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACnD,wDAAwD,EACxD,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;oBAC/D,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE;iBAC9D;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;oBAC/D,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE;iBAC9D;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;iBAChE;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEpD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;oBAC3C,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE;oBACzC,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE;iBAC1C;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE;oBACzC,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;iBAC5C;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE;oBAC7C,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;iBAC5C;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEpD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACnB,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;iBAChE;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE;oBAC/D,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE;iBAC9D;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;yBAC1E;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE;4BACL;gCACE,EAAE,EAAE,IAAI;gCACR,IAAI,EAAE,cAAc;gCACpB,QAAQ,EAAE,OAAO;gCACjB,WAAW,EAAE,2BAA2B;gCACxC,KAAK,EAAE,2BAA2B;6BACnC;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAE5D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE;4BACL;gCACE,EAAE,EAAE,IAAI;gCACR,IAAI,EAAE,cAAc;gCACpB,QAAQ,EAAE,OAAO;gCACjB,WAAW,EAAE,2BAA2B;gCACxC,KAAK,EAAE,2BAA2B;6BACnC;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,YAAY;wBAClB,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE;4BAC1F,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE;yBAC9F;qBACF;oBACD;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,YAAY;wBAClB,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE;yBAC1F;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE;4BACxE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE;yBAC3F;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,EAAE;yBAC5G;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;4BACxF,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;4BAC9F,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;yBACtF;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,cAAc;wBAClB,IAAI,EAAE,qBAAqB;wBAC3B,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;yBAC5F;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,iBAAiB;wBACvB,OAAO,EAAE,OAAO;wBAChB,QAAQ,EAAE,cAAc;wBACxB,WAAW,EAAE,aAAa;wBAC1B,KAAK,EAAE,EAAE;qBACV;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,QAAQ;wBACZ,IAAI,EAAE,mBAAmB;wBACzB,OAAO,EAAE,OAAO;wBAChB,QAAQ,EAAE,YAAY;wBACtB,WAAW,EAAE,sBAAsB;wBACnC,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;yBAC1E;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE1D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACxG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,sBAAsB;wBAC5B,OAAO,EAAE,OAAO;wBAChB,QAAQ,EAAE,YAAY;wBACtB,WAAW,EAAE,kBAAkB;wBAC/B,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE;4BACpG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE;yBACzE;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAE3D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,WAAW;wBACf,IAAI,EAAE,yBAAyB;wBAC/B,OAAO,EAAE,OAAO;wBAChB,QAAQ,EAAE,gBAAgB;wBAC1B,WAAW,EAAE,qBAAqB;wBAClC,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;yBACrE;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,WAAW;wBACf,IAAI,EAAE,gBAAgB;wBACtB,OAAO,EAAE,OAAO;wBAChB,QAAQ,EAAE,cAAc;wBACxB,WAAW,EAAE,YAAY;wBACzB,KAAK,EAAE;4BACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE;4BAC9E,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE;yBAChF;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAC;YACrE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAa;gBACzB,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,cAAc;gBACxB,WAAW,EAAE,KAAK;gBAClB,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEjC,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAC3D,CAAC,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAC1D,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,cAAc,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAEnD,MAAM,SAAS,GAAa;gBAC1B,EAAE,EAAE,YAAY;gBAChB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,cAAc;gBACxB,WAAW,EAAE,UAAU;gBACvB,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAElC,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,cAAc,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAClD,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACxC,SAAS,EAAE,CAAC,SAAS,CAAC;gBACtB,WAAW,EAAE,0BAA0B;aACxC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAa;gBAC1B,EAAE,EAAE,YAAY;gBAChB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,cAAc;gBACxB,WAAW,EAAE,SAAS;gBACtB,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAElC,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAC7D,CAAC,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAC1D,CAAC;YACF,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}