@vyuhlabs/dxkit 2.5.0 → 2.5.1

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 (143) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/analyzers/tools/graphify.d.ts.map +1 -1
  3. package/dist/analyzers/tools/graphify.js +9 -5
  4. package/dist/analyzers/tools/graphify.js.map +1 -1
  5. package/dist/analyzers/tools/tool-registry.d.ts +19 -1
  6. package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
  7. package/dist/analyzers/tools/tool-registry.js +25 -0
  8. package/dist/analyzers/tools/tool-registry.js.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +38 -1
  11. package/dist/cli.js.map +1 -1
  12. package/dist/doctor.d.ts.map +1 -1
  13. package/dist/doctor.js +18 -11
  14. package/dist/doctor.js.map +1 -1
  15. package/dist/generator.d.ts +1 -1
  16. package/dist/generator.d.ts.map +1 -1
  17. package/dist/generator.js +81 -135
  18. package/dist/generator.js.map +1 -1
  19. package/dist/hooks-cli.d.ts +20 -0
  20. package/dist/hooks-cli.d.ts.map +1 -0
  21. package/dist/hooks-cli.js +145 -0
  22. package/dist/hooks-cli.js.map +1 -0
  23. package/dist/languages/csharp.d.ts.map +1 -1
  24. package/dist/languages/csharp.js +4 -0
  25. package/dist/languages/csharp.js.map +1 -1
  26. package/dist/languages/go.d.ts.map +1 -1
  27. package/dist/languages/go.js +4 -0
  28. package/dist/languages/go.js.map +1 -1
  29. package/dist/languages/index.d.ts +18 -0
  30. package/dist/languages/index.d.ts.map +1 -1
  31. package/dist/languages/index.js +32 -0
  32. package/dist/languages/index.js.map +1 -1
  33. package/dist/languages/java.d.ts.map +1 -1
  34. package/dist/languages/java.js +4 -0
  35. package/dist/languages/java.js.map +1 -1
  36. package/dist/languages/kotlin.d.ts.map +1 -1
  37. package/dist/languages/kotlin.js +9 -0
  38. package/dist/languages/kotlin.js.map +1 -1
  39. package/dist/languages/python.d.ts.map +1 -1
  40. package/dist/languages/python.js +4 -0
  41. package/dist/languages/python.js.map +1 -1
  42. package/dist/languages/ruby.d.ts.map +1 -1
  43. package/dist/languages/ruby.js +4 -0
  44. package/dist/languages/ruby.js.map +1 -1
  45. package/dist/languages/rust.d.ts.map +1 -1
  46. package/dist/languages/rust.js +4 -0
  47. package/dist/languages/rust.js.map +1 -1
  48. package/dist/languages/types.d.ts +27 -0
  49. package/dist/languages/types.d.ts.map +1 -1
  50. package/dist/languages/typescript.d.ts.map +1 -1
  51. package/dist/languages/typescript.js +5 -0
  52. package/dist/languages/typescript.js.map +1 -1
  53. package/dist/ship-installers.d.ts +6 -0
  54. package/dist/ship-installers.d.ts.map +1 -1
  55. package/dist/ship-installers.js +120 -5
  56. package/dist/ship-installers.js.map +1 -1
  57. package/dist/tools-cli.d.ts.map +1 -1
  58. package/dist/tools-cli.js +45 -9
  59. package/dist/tools-cli.js.map +1 -1
  60. package/package.json +1 -1
  61. package/templates/.claude/skills/dxkit-action/SKILL.md +150 -0
  62. package/templates/.claude/skills/dxkit-config/SKILL.md +124 -0
  63. package/templates/.claude/skills/dxkit-hooks/SKILL.md +109 -0
  64. package/templates/.claude/skills/dxkit-init/SKILL.md +93 -0
  65. package/templates/.claude/skills/dxkit-learn/SKILL.md +84 -0
  66. package/templates/.claude/skills/dxkit-reports/SKILL.md +111 -0
  67. package/templates/.devcontainer/devcontainer.json +7 -33
  68. package/templates/.devcontainer/post-create.sh +18 -4
  69. package/templates/AGENTS.md.template +137 -0
  70. package/templates/CLAUDE.md.template +16 -111
  71. package/dist/codebase-scanner.d.ts +0 -36
  72. package/dist/codebase-scanner.d.ts.map +0 -1
  73. package/dist/codebase-scanner.js +0 -687
  74. package/dist/codebase-scanner.js.map +0 -1
  75. package/templates/.claude/agents/doc-writer.md +0 -107
  76. package/templates/.claude/agents/knowledge-bot.md +0 -64
  77. package/templates/.claude/agents/onboarding.md +0 -62
  78. package/templates/.claude/agents/quality-reviewer.md +0 -85
  79. package/templates/.claude/agents-available/code-reviewer.md +0 -29
  80. package/templates/.claude/agents-available/codebase-explorer.md +0 -100
  81. package/templates/.claude/agents-available/dashboard-builder.md +0 -433
  82. package/templates/.claude/agents-available/debugger.md +0 -29
  83. package/templates/.claude/agents-available/dependency-mapper.md +0 -80
  84. package/templates/.claude/agents-available/dev-report.md +0 -108
  85. package/templates/.claude/agents-available/doc-writer.md +0 -107
  86. package/templates/.claude/agents-available/feature-builder.md +0 -163
  87. package/templates/.claude/agents-available/feature-planner.md +0 -185
  88. package/templates/.claude/agents-available/health-auditor.md +0 -95
  89. package/templates/.claude/agents-available/hooks-configurator.md +0 -211
  90. package/templates/.claude/agents-available/knowledge-bot.md +0 -62
  91. package/templates/.claude/agents-available/plan-executor.md +0 -133
  92. package/templates/.claude/agents-available/strategic-planner.md +0 -141
  93. package/templates/.claude/agents-available/test-gap-finder.md +0 -67
  94. package/templates/.claude/agents-available/test-writer.md +0 -34
  95. package/templates/.claude/agents-available/vulnerability-scanner.md +0 -173
  96. package/templates/.claude/commands/ask.md +0 -7
  97. package/templates/.claude/commands/build-feature.md +0 -26
  98. package/templates/.claude/commands/build.md.template +0 -30
  99. package/templates/.claude/commands/check.md.template +0 -43
  100. package/templates/.claude/commands/dashboard.md +0 -28
  101. package/templates/.claude/commands/deps.md +0 -15
  102. package/templates/.claude/commands/dev-report.md +0 -50
  103. package/templates/.claude/commands/docs.md +0 -21
  104. package/templates/.claude/commands/doctor.md +0 -29
  105. package/templates/.claude/commands/enable-agent.md +0 -12
  106. package/templates/.claude/commands/execute-plan.md +0 -25
  107. package/templates/.claude/commands/explore-codebase.md +0 -12
  108. package/templates/.claude/commands/export-pdf.md +0 -30
  109. package/templates/.claude/commands/feature.md +0 -25
  110. package/templates/.claude/commands/fix-issue.md +0 -12
  111. package/templates/.claude/commands/fix.md.template +0 -32
  112. package/templates/.claude/commands/health.md +0 -58
  113. package/templates/.claude/commands/help.md +0 -36
  114. package/templates/.claude/commands/learn.md +0 -48
  115. package/templates/.claude/commands/onboarding.md +0 -21
  116. package/templates/.claude/commands/plan.md +0 -20
  117. package/templates/.claude/commands/quality.md.template +0 -65
  118. package/templates/.claude/commands/session-end.md +0 -40
  119. package/templates/.claude/commands/session-start.md +0 -30
  120. package/templates/.claude/commands/setup-hooks.md +0 -18
  121. package/templates/.claude/commands/stealth-mode.md +0 -17
  122. package/templates/.claude/commands/test-gaps.md +0 -49
  123. package/templates/.claude/commands/test.md.template +0 -40
  124. package/templates/.claude/commands/vulnerabilities.md +0 -49
  125. package/templates/.claude/skills/build/SKILL.md.template +0 -90
  126. package/templates/.claude/skills/deploy/SKILL.md.template +0 -111
  127. package/templates/.claude/skills/deploy/references/gotchas.md +0 -5
  128. package/templates/.claude/skills/doctor/SKILL.md +0 -31
  129. package/templates/.claude/skills/gcloud/SKILL.md +0 -66
  130. package/templates/.claude/skills/gcloud/references/gotchas.md +0 -5
  131. package/templates/.claude/skills/learned/SKILL.md +0 -55
  132. package/templates/.claude/skills/learned/references/conventions.md +0 -11
  133. package/templates/.claude/skills/learned/references/deny-recommendations.md +0 -18
  134. package/templates/.claude/skills/learned/references/gotchas.md +0 -11
  135. package/templates/.claude/skills/pulumi/SKILL.md +0 -73
  136. package/templates/.claude/skills/quality/SKILL.md.template +0 -89
  137. package/templates/.claude/skills/quality/references/gotchas.md +0 -5
  138. package/templates/.claude/skills/review/SKILL.md.template +0 -74
  139. package/templates/.claude/skills/scaffold/SKILL.md.template +0 -113
  140. package/templates/.claude/skills/secrets/SKILL.md +0 -51
  141. package/templates/.claude/skills/session/SKILL.md +0 -32
  142. package/templates/.claude/skills/test/SKILL.md.template +0 -116
  143. package/templates/.claude/skills/test/references/gotchas.md +0 -5
@@ -0,0 +1,137 @@
1
+ # {{PROJECT_NAME}}
2
+
3
+ {{PROJECT_DESCRIPTION}}
4
+
5
+ ## How to use this file
6
+
7
+ `AGENTS.md` is the open-standard project-context file read by AI coding agents (Claude Code, Codex, Cursor, Aider, …). It describes what this project is, how to run common commands, and the safety rules that apply.
8
+
9
+ For agent-specific config, see the editor-specific files alongside this one — `CLAUDE.md` (Claude Code), `.cursor/rules` (Cursor), etc. — which point back here for shared context.
10
+
11
+ ## What dxkit does in this repo
12
+
13
+ This repo is managed by [`@vyuhlabs/dxkit`](https://github.com/vyuh-labs/dxkit). dxkit measures code health across 6 dimensions, captures a per-finding baseline, and gates PRs on net-new regressions.
14
+
15
+ Six skills are installed under `.claude/skills/` (Claude Code auto-discovers via skill frontmatter):
16
+
17
+ - **dxkit-learn** — explains dxkit concepts (baselines, dimensions, scanners)
18
+ - **dxkit-init** — interactive setup walkthrough
19
+ - **dxkit-config** — edit `.dxkit-ignore`, `.vyuh-dxkit.json`, policy
20
+ - **dxkit-hooks** — install / troubleshoot git hooks
21
+ - **dxkit-reports** — run analyzers, explain output, dashboard
22
+ - **dxkit-action** — prioritize + fix + verify + re-baseline
23
+
24
+ Reach for the relevant skill when working in this repo. They wrap the `vyuh-dxkit` CLI with workflow guidance.
25
+
26
+ {{#IF_PYTHON}}
27
+ ## Python {{PYTHON_VERSION}}
28
+
29
+ - **Tests**: `pytest`
30
+ - **Lint/format**: `ruff check .` / `ruff format .`
31
+ - **Type check**: `mypy src/`
32
+ - **Package config**: `pyproject.toml`
33
+ {{/IF_PYTHON}}
34
+
35
+ {{#IF_GO}}
36
+ ## Go {{GO_VERSION}}
37
+
38
+ - **Tests**: `go test ./...`
39
+ - **Lint**: `golangci-lint run`
40
+ - **Format**: `gofmt -w .` / `goimports -w .`
41
+ - **Module**: `go.mod`
42
+ {{/IF_GO}}
43
+
44
+ {{#IF_NODE}}
45
+ ## Node.js {{NODE_VERSION}}
46
+
47
+ - **Tests**: `npm test`
48
+ - **Build**: `npm run build`
49
+ - **Lint/format**: `npx eslint .` / `npx prettier --write .`
50
+ - **Package config**: `package.json`, `tsconfig.json`
51
+ {{/IF_NODE}}
52
+
53
+ {{#IF_NEXTJS}}
54
+ ## Next.js
55
+
56
+ - **Directory**: `frontend/`
57
+ - **Dev server**: `cd frontend && npm run dev`
58
+ - **Build**: `cd frontend && npm run build`
59
+ - **Lint**: `cd frontend && npm run lint`
60
+ {{/IF_NEXTJS}}
61
+
62
+ {{#IF_RUST}}
63
+ ## Rust {{RUST_VERSION}}
64
+
65
+ - **Tests**: `cargo test`
66
+ - **Build**: `cargo build` / `cargo build --release`
67
+ - **Lint**: `cargo clippy`
68
+ - **Format**: `cargo fmt`
69
+ - **Package**: `Cargo.toml`
70
+ {{/IF_RUST}}
71
+
72
+ {{#IF_CSHARP}}
73
+ ## C# {{CSHARP_VERSION}}
74
+
75
+ - **Tests**: `dotnet test`
76
+ - **Build**: `dotnet build` / `dotnet publish -c Release`
77
+ - **Format**: `dotnet format`
78
+ - **Solution**: `*.sln`, projects under `*.csproj`
79
+ {{/IF_CSHARP}}
80
+
81
+ {{#IF_KOTLIN}}
82
+ ## Kotlin {{KOTLIN_VERSION}}
83
+
84
+ - **Tests**: `./gradlew test`
85
+ - **Build**: `./gradlew build`
86
+ - **Lint**: `detekt`
87
+ - **Package**: `build.gradle.kts` / `settings.gradle.kts`
88
+ {{/IF_KOTLIN}}
89
+
90
+ {{#IF_JAVA}}
91
+ ## Java {{JAVA_VERSION}}
92
+
93
+ - **Tests**: `mvn test` / `./gradlew test`
94
+ - **Build**: `mvn package` / `./gradlew build`
95
+ - **Lint**: `pmd`
96
+ - **Package**: `pom.xml` / `build.gradle`
97
+ {{/IF_JAVA}}
98
+
99
+ {{#IF_RUBY}}
100
+ ## Ruby {{RUBY_VERSION}}
101
+
102
+ - **Tests**: `bundle exec rspec` / `bundle exec rails test`
103
+ - **Lint**: `bundle exec rubocop`
104
+ - **Coverage**: SimpleCov (loaded from `spec_helper.rb`)
105
+ - **Package**: `Gemfile`
106
+ {{/IF_RUBY}}
107
+
108
+ ## dxkit commands
109
+
110
+ | Purpose | Command |
111
+ |---|---|
112
+ | Overall health (6 dimensions) | `npx vyuh-dxkit health` |
113
+ | Deep security scan | `npx vyuh-dxkit vulnerabilities` |
114
+ | Test coverage gaps | `npx vyuh-dxkit test-gaps` |
115
+ | Code quality + slop | `npx vyuh-dxkit quality` |
116
+ | Bill of materials | `npx vyuh-dxkit bom` |
117
+ | Dashboard (HTML) | `npx vyuh-dxkit dashboard` |
118
+ | Guardrail check (baseline diff) | `npx vyuh-dxkit guardrail check` |
119
+ | Doctor (verify setup) | `npx vyuh-dxkit doctor` |
120
+
121
+ The pre-push hook runs `guardrail check` automatically — blocks net-new regressions before they leave your machine.
122
+
123
+ ## Security rules — never violate
124
+
125
+ 1. **Never output, log, or commit secrets** — no API keys, tokens, passwords, or credentials in code, commits, or files Claude writes
126
+ 2. **Never read `.env` directly** — to confirm a variable exists, grep for the variable name only
127
+ 3. **Never pass secrets as CLI arguments** — they appear in process lists and shell history
128
+ 4. **Never include secrets in build args or Dockerfiles**
129
+ 5. **Sensitive files are gitignored**: `.env`, `.env.*`, `.env.secrets`, `.claude/settings.local.json`
130
+ 6. **Before committing**: verify no secrets in staged files (`git diff --cached`)
131
+
132
+ ## Conventions
133
+
134
+ - Run `npx vyuh-dxkit health` before opening a PR
135
+ - For changes to risky areas (auth, payments, data mutations), write tests first
136
+ - Capture surprising behaviors as comments in `.dxkit-ignore` or the relevant skill file
137
+ - Pre-push hook will block net-new regressions — fix them in the same PR or accept-as-baseline with a commit message explaining why
@@ -1,121 +1,26 @@
1
- # {{PROJECT_NAME}}
1
+ # {{PROJECT_NAME}} — Claude Code config
2
2
 
3
- {{PROJECT_DESCRIPTION}}
3
+ Project context lives in [`AGENTS.md`](./AGENTS.md) (open-standard, read by every coding agent). This file is Claude-Code-specific config that points at it.
4
4
 
5
- ## How to use this file
5
+ Whenever Claude Code starts a session in this repo, it reads BOTH files: this one (Claude-specific shortcuts) and `AGENTS.md` (project prose).
6
6
 
7
- This file is loaded by Claude Code at the start of every session in this repo. It tells the agent what this project is, how to run common commands, and what safety rules to follow.
7
+ ## dxkit skills
8
8
 
9
- The rest of `.claude/` extends this:
10
- - **Skills** (`.claude/skills/`) — domain context loaded on demand
11
- - **Commands** (`.claude/commands/`) — slash commands for common workflows
12
- - **Agents** (`.claude/agents/`) — specialists Claude delegates to automatically
13
- - **Rules** (`.claude/rules/`) — language-specific conventions
9
+ Six dxkit-specific skills are installed under `.claude/skills/`. Claude Code auto-discovers them via their frontmatter `description` fields:
14
10
 
15
- Run `/help` for the full list.
11
+ - `dxkit-learn` explain what dxkit does, what scores mean, what scanners run
12
+ - `dxkit-init` — walk through `vyuh-dxkit init` flag choices
13
+ - `dxkit-config` — edit `.dxkit-ignore` / `.vyuh-dxkit.json` / policy
14
+ - `dxkit-hooks` — install / troubleshoot git hooks
15
+ - `dxkit-reports` — run analyzers + read output
16
+ - `dxkit-action` — prioritize + fix + verify + re-baseline
16
17
 
17
- {{#IF_PYTHON}}
18
- ## Python {{PYTHON_VERSION}}
18
+ When the user asks about dxkit concepts or wants to run an analyzer, reach for the matching skill before improvising.
19
19
 
20
- - **Tests**: `pytest`
21
- - **Lint/format**: `ruff check .` / `ruff format .`
22
- - **Type check**: `mypy src/`
23
- - **Package config**: `pyproject.toml`
24
- {{/IF_PYTHON}}
20
+ ## Per-language rules
25
21
 
26
- {{#IF_GO}}
27
- ## Go {{GO_VERSION}}
22
+ `.claude/rules/<lang>.md` files carry per-language conventions for any active language pack. They're loaded automatically.
28
23
 
29
- - **Tests**: `go test ./...`
30
- - **Lint**: `golangci-lint run`
31
- - **Format**: `gofmt -w .` / `goimports -w .`
32
- - **Module**: `go.mod`
33
- {{/IF_GO}}
24
+ ## Security rules + per-language commands
34
25
 
35
- {{#IF_NODE}}
36
- ## Node.js {{NODE_VERSION}}
37
-
38
- - **Tests**: `npm test`
39
- - **Build**: `npm run build`
40
- - **Lint/format**: `npx eslint .` / `npx prettier --write .`
41
- - **Package config**: `package.json`, `tsconfig.json`
42
- {{/IF_NODE}}
43
-
44
- {{#IF_NEXTJS}}
45
- ## Next.js
46
-
47
- - **Directory**: `frontend/`
48
- - **Dev server**: `cd frontend && npm run dev`
49
- - **Build**: `cd frontend && npm run build`
50
- - **Lint**: `cd frontend && npm run lint`
51
- {{/IF_NEXTJS}}
52
-
53
- {{#IF_RUST}}
54
- ## Rust {{RUST_VERSION}}
55
-
56
- - **Tests**: `cargo test`
57
- - **Build**: `cargo build` / `cargo build --release`
58
- - **Lint**: `cargo clippy`
59
- - **Format**: `cargo fmt`
60
- - **Package**: `Cargo.toml`
61
- {{/IF_RUST}}
62
-
63
- {{#IF_CSHARP}}
64
- ## C# {{CSHARP_VERSION}}
65
-
66
- - **Tests**: `dotnet test`
67
- - **Build**: `dotnet build` / `dotnet publish -c Release`
68
- - **Format**: `dotnet format`
69
- - **Solution**: `*.sln`, projects under `*.csproj`
70
- {{/IF_CSHARP}}
71
-
72
- {{#IF_GCLOUD}}
73
- ## Google Cloud
74
-
75
- - **Auth**: `gcloud auth login`
76
- - **Project**: set via `gcloud config set project <id>` or `GOOGLE_CLOUD_PROJECT` env var
77
- {{/IF_GCLOUD}}
78
-
79
- {{#IF_PULUMI}}
80
- ## Pulumi
81
-
82
- - **Auth**: `pulumi login`
83
- - **Workflow**: always `pulumi preview` before `pulumi up`
84
- - **Secrets**: `pulumi config set --secret` for sensitive values
85
- {{/IF_PULUMI}}
86
-
87
- ## Common slash commands
88
-
89
- - `/health` — full codebase health audit (6 dimensions)
90
- - `/vulnerabilities` — scan dependencies + code for security issues
91
- - `/test-gaps` — find critical untested code paths
92
- - `/quality` — code quality + slop analysis
93
- - `/dev-report` — team activity from git history
94
- - `/ask <question>` — natural-language Q&A against the codebase
95
- - `/explore-codebase` — deep architecture exploration (run once on a new repo)
96
- - `/setup-hooks` — install git pre-commit/pre-push hooks
97
- - `/learn` — capture a gotcha or convention from the current conversation
98
-
99
- Run `/help` for the full list of commands and agents.
100
-
101
- ## Security rules — never violate
102
-
103
- 1. **Never output, log, or commit secrets** — no API keys, tokens, passwords, or credentials in code, commits, checkpoints, or skill files
104
- 2. **Never read `.env` directly** — if you need to confirm a value exists, grep for the variable name only
105
- 3. **Never pass secrets as CLI arguments** — they appear in process lists and shell history
106
- 4. **Never include secrets in build args or Dockerfiles**
107
- 5. **Sensitive files are gitignored**: `.env`, `.env.*`, `.env.secrets`, `.claude/settings.local.json`
108
- 6. **Before committing**: verify no secrets in staged files (`git diff --cached`)
109
- {{#IF_INFISICAL}}
110
- 7. **Infisical tokens**: never output `INFISICAL_TOKEN` values
111
- {{/IF_INFISICAL}}
112
- {{#IF_GCLOUD}}
113
- 8. **GCP credentials**: never output `gcloud auth print-access-token` or service account JSON keys
114
- {{/IF_GCLOUD}}
115
-
116
- ## Conventions
117
-
118
- - Run `/quality` and `/test` before committing
119
- - For changes to risky areas (auth, payments, data mutations), write tests first
120
- - Capture surprising behaviors via `/learn` so the next session inherits them
121
- - Check `/help` for available commands and agents
26
+ See [`AGENTS.md`](./AGENTS.md). All shared project context lives there so other agents (Codex / Cursor / Aider) get the same instructions Claude does.
@@ -1,36 +0,0 @@
1
- export interface CodebaseAnalysis {
2
- entryPoints: {
3
- file: string;
4
- type: string;
5
- }[];
6
- directories: {
7
- path: string;
8
- purpose: string;
9
- }[];
10
- testPatterns: {
11
- framework: string;
12
- location: string;
13
- pattern: string;
14
- }[];
15
- apiEndpoints: {
16
- method: string;
17
- path: string;
18
- file: string;
19
- }[];
20
- configFiles: {
21
- file: string;
22
- purpose: string;
23
- }[];
24
- conventions: {
25
- pattern: string;
26
- description: string;
27
- }[];
28
- fileCount: number;
29
- testFileCount: number;
30
- sourceFileCount: number;
31
- languageBreakdown: Record<string, number>;
32
- }
33
- export declare function scanCodebase(cwd: string): CodebaseAnalysis;
34
- export declare function renderCodebaseSkill(analysis: CodebaseAnalysis): string;
35
- export declare function renderArchitectureRef(analysis: CodebaseAnalysis): string;
36
- //# sourceMappingURL=codebase-scanner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codebase-scanner.d.ts","sourceRoot":"","sources":["../src/codebase-scanner.ts"],"names":[],"mappings":"AAoDA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,YAAY,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AA4eD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAmD1D;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAgGtE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAmDxE"}