@kaitranntt/ccs 8.6.1 → 8.7.0-dev.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 (187) hide show
  1. package/dist/auth/profile-detector.d.ts.map +1 -1
  2. package/dist/auth/profile-detector.js +7 -0
  3. package/dist/auth/profile-detector.js.map +1 -1
  4. package/dist/cliproxy/config/provider-route.d.ts +3 -0
  5. package/dist/cliproxy/config/provider-route.d.ts.map +1 -1
  6. package/dist/cliproxy/config/provider-route.js +35 -1
  7. package/dist/cliproxy/config/provider-route.js.map +1 -1
  8. package/dist/cliproxy/executor/claude-launcher.d.ts.map +1 -1
  9. package/dist/cliproxy/executor/claude-launcher.js +38 -15
  10. package/dist/cliproxy/executor/claude-launcher.js.map +1 -1
  11. package/dist/cliproxy/executor/index.js +1 -1
  12. package/dist/cliproxy/executor/index.js.map +1 -1
  13. package/dist/cliproxy/executor/launch-settings.d.ts +48 -0
  14. package/dist/cliproxy/executor/launch-settings.d.ts.map +1 -0
  15. package/dist/cliproxy/executor/launch-settings.js +154 -0
  16. package/dist/cliproxy/executor/launch-settings.js.map +1 -0
  17. package/dist/commands/bar/bar-paths.d.ts +1 -1
  18. package/dist/commands/bar/bar-paths.d.ts.map +1 -1
  19. package/dist/commands/bar/bar-server-probe.d.ts +4 -6
  20. package/dist/commands/bar/bar-server-probe.d.ts.map +1 -1
  21. package/dist/commands/bar/bar-server-probe.js +21 -15
  22. package/dist/commands/bar/bar-server-probe.js.map +1 -1
  23. package/dist/commands/bar/install-subcommand.d.ts.map +1 -1
  24. package/dist/commands/bar/install-subcommand.js +2 -7
  25. package/dist/commands/bar/install-subcommand.js.map +1 -1
  26. package/dist/commands/bar/launch-descriptor.d.ts +20 -0
  27. package/dist/commands/bar/launch-descriptor.d.ts.map +1 -0
  28. package/dist/commands/bar/launch-descriptor.js +82 -0
  29. package/dist/commands/bar/launch-descriptor.js.map +1 -0
  30. package/dist/commands/bar/launch-subcommand.d.ts +3 -0
  31. package/dist/commands/bar/launch-subcommand.d.ts.map +1 -1
  32. package/dist/commands/bar/launch-subcommand.js +27 -15
  33. package/dist/commands/bar/launch-subcommand.js.map +1 -1
  34. package/dist/commands/cliproxy/help-subcommand.js +1 -1
  35. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  36. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts +5 -4
  37. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts.map +1 -1
  38. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js +7 -5
  39. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js.map +1 -1
  40. package/dist/commands/cursor-command.d.ts.map +1 -1
  41. package/dist/commands/cursor-command.js +2 -0
  42. package/dist/commands/cursor-command.js.map +1 -1
  43. package/dist/config/loader/config-getters.d.ts +5 -0
  44. package/dist/config/loader/config-getters.d.ts.map +1 -1
  45. package/dist/config/loader/config-getters.js +7 -0
  46. package/dist/config/loader/config-getters.js.map +1 -1
  47. package/dist/config/loader/defaults-merger.d.ts.map +1 -1
  48. package/dist/config/loader/defaults-merger.js +5 -0
  49. package/dist/config/loader/defaults-merger.js.map +1 -1
  50. package/dist/config/loader/yaml-serializer.d.ts.map +1 -1
  51. package/dist/config/loader/yaml-serializer.js +3 -2
  52. package/dist/config/loader/yaml-serializer.js.map +1 -1
  53. package/dist/config/schemas/index.d.ts +1 -1
  54. package/dist/config/schemas/index.d.ts.map +1 -1
  55. package/dist/config/schemas/index.js.map +1 -1
  56. package/dist/config/schemas/unified-config.d.ts.map +1 -1
  57. package/dist/config/schemas/unified-config.js +5 -0
  58. package/dist/config/schemas/unified-config.js.map +1 -1
  59. package/dist/config/schemas/websearch.d.ts +20 -2
  60. package/dist/config/schemas/websearch.d.ts.map +1 -1
  61. package/dist/config/schemas/websearch.js +1 -1
  62. package/dist/cursor/cursor-daemon-entry.d.ts.map +1 -1
  63. package/dist/cursor/cursor-daemon-entry.js +32 -13
  64. package/dist/cursor/cursor-daemon-entry.js.map +1 -1
  65. package/dist/cursor/cursor-daemon.d.ts +4 -1
  66. package/dist/cursor/cursor-daemon.d.ts.map +1 -1
  67. package/dist/cursor/cursor-daemon.js +14 -8
  68. package/dist/cursor/cursor-daemon.js.map +1 -1
  69. package/dist/cursor/cursor-runtime-probe.d.ts.map +1 -1
  70. package/dist/cursor/cursor-runtime-probe.js +2 -1
  71. package/dist/cursor/cursor-runtime-probe.js.map +1 -1
  72. package/dist/glmt/pipeline/response-builder.d.ts +5 -0
  73. package/dist/glmt/pipeline/response-builder.d.ts.map +1 -1
  74. package/dist/glmt/pipeline/response-builder.js +6 -7
  75. package/dist/glmt/pipeline/response-builder.js.map +1 -1
  76. package/dist/glmt/pipeline/types.d.ts +2 -7
  77. package/dist/glmt/pipeline/types.d.ts.map +1 -1
  78. package/dist/services/logging/log-redaction.d.ts.map +1 -1
  79. package/dist/services/logging/log-redaction.js +12 -2
  80. package/dist/services/logging/log-redaction.js.map +1 -1
  81. package/dist/shared/provider-preset-catalog.d.ts +1 -1
  82. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  83. package/dist/shared/provider-preset-catalog.js +14 -0
  84. package/dist/shared/provider-preset-catalog.js.map +1 -1
  85. package/dist/targets/codex-adapter.d.ts.map +1 -1
  86. package/dist/targets/codex-adapter.js +8 -7
  87. package/dist/targets/codex-adapter.js.map +1 -1
  88. package/dist/targets/codex-cliproxy-provider-config.d.ts.map +1 -1
  89. package/dist/targets/codex-cliproxy-provider-config.js +12 -1
  90. package/dist/targets/codex-cliproxy-provider-config.js.map +1 -1
  91. package/dist/ui/assets/{Trans-BpNkQ7ek.js → Trans-By7poS8F.js} +1 -1
  92. package/dist/ui/assets/{accounts-BjBpKHAo.js → accounts-CT4cNpXE.js} +1 -1
  93. package/dist/ui/assets/{alert-dialog-pDQKbmfk.js → alert-dialog-D-4eNWT-.js} +1 -1
  94. package/dist/ui/assets/{api-Bz4gk1bk.js → api-BOsmB6JC.js} +1 -1
  95. package/dist/ui/assets/{auth-section-DPJ_tnXs.js → auth-section-BNu9bqxZ.js} +1 -1
  96. package/dist/ui/assets/{backups-section-DGeCRWP2.js → backups-section-QEZ5MeIb.js} +1 -1
  97. package/dist/ui/assets/{channels-BZHQSZ2O.js → channels-C8lOwrre.js} +1 -1
  98. package/dist/ui/assets/{checkbox-H7Yhg_4C.js → checkbox-DxCvOyao.js} +1 -1
  99. package/dist/ui/assets/{claude-extension-BFpic0ox.js → claude-extension-CvbfmbdL.js} +1 -1
  100. package/dist/ui/assets/{cliproxy-ai-providers-E8zkuN9-.js → cliproxy-ai-providers-jeMd_Enz.js} +1 -1
  101. package/dist/ui/assets/{cliproxy-control-panel-CXij15eo.js → cliproxy-control-panel-Ylrw7Vt0.js} +1 -1
  102. package/dist/ui/assets/{cliproxy-DQizRbbC.js → cliproxy-daECx_cg.js} +1 -1
  103. package/dist/ui/assets/{codex-Clsf_Ll9.js → codex-7d3v_F3-.js} +1 -1
  104. package/dist/ui/assets/{confirm-dialog-D-AtmCDF.js → confirm-dialog-BGbC3827.js} +1 -1
  105. package/dist/ui/assets/{copilot-D0Z8CZJb.js → copilot-DGVMqIvj.js} +1 -1
  106. package/dist/ui/assets/{cursor-BXf4OXxE.js → cursor-D94mZoOn.js} +1 -1
  107. package/dist/ui/assets/{droid-DUaaFFGf.js → droid-CijT6OtA.js} +1 -1
  108. package/dist/ui/assets/{globalenv-section-Bi6g0RHv.js → globalenv-section-Cro0fjBM.js} +1 -1
  109. package/dist/ui/assets/{health-qWLTnC0s.js → health-DFG40_kD.js} +1 -1
  110. package/dist/ui/assets/{index-BTfHfkkh.js → index-BTJNmedC.js} +1 -1
  111. package/dist/ui/assets/{index-2aTPFpCV.js → index-Bf0--BiU.js} +1 -1
  112. package/dist/ui/assets/{index-B8BRpC7W.js → index-Bf5DDwJP.js} +1 -1
  113. package/dist/ui/assets/{index-BBdOx52b.js → index-BfbJlKvM.js} +1 -1
  114. package/dist/ui/assets/{index-D4nxVNz2.js → index-D77S3tlM.js} +1 -1
  115. package/dist/ui/assets/{index-bTno3t7S.js → index-DLRoa85N.js} +1 -1
  116. package/dist/ui/assets/{index-Dx2jv0Ov.js → index-K_KarWwQ.js} +3 -3
  117. package/dist/ui/assets/{logs-dRi0gOyI.js → logs-Bc1-UurC.js} +1 -1
  118. package/dist/ui/assets/{masked-input-DtbQSbOn.js → masked-input-uuW_Ngh8.js} +1 -1
  119. package/dist/ui/assets/{proxy-status-widget-DxwDomuX.js → proxy-status-widget-BFrQZqYz.js} +1 -1
  120. package/dist/ui/assets/{raw-json-settings-editor-panel-CDlRVxaa.js → raw-json-settings-editor-panel-DEHwL2oY.js} +1 -1
  121. package/dist/ui/assets/{searchable-select-DNOKIELZ.js → searchable-select-pEfkrlZT.js} +1 -1
  122. package/dist/ui/assets/{separator-DlmzFyxp.js → separator-BTcnUF3t.js} +1 -1
  123. package/dist/ui/assets/{shared-D1fHDQQG.js → shared-DWBCHrPI.js} +1 -1
  124. package/dist/ui/assets/{table-B0nIYCuj.js → table-DdMU9lLS.js} +1 -1
  125. package/dist/ui/assets/{updates-BqVdDTJj.js → updates-DfYyQw34.js} +1 -1
  126. package/dist/ui/assets/{use-accounts-BkjSf38E.js → use-accounts-DnMcRpOC.js} +1 -1
  127. package/dist/ui/index.html +1 -1
  128. package/dist/utils/bar-auth-token.d.ts +5 -0
  129. package/dist/utils/bar-auth-token.d.ts.map +1 -1
  130. package/dist/utils/bar-auth-token.js +23 -1
  131. package/dist/utils/bar-auth-token.js.map +1 -1
  132. package/dist/utils/openai-compat-launch-settings.d.ts.map +1 -1
  133. package/dist/utils/openai-compat-launch-settings.js +6 -0
  134. package/dist/utils/openai-compat-launch-settings.js.map +1 -1
  135. package/dist/utils/shell-executor.d.ts +2 -0
  136. package/dist/utils/shell-executor.d.ts.map +1 -1
  137. package/dist/utils/shell-executor.js +11 -7
  138. package/dist/utils/shell-executor.js.map +1 -1
  139. package/dist/utils/websearch/agy.d.ts +28 -0
  140. package/dist/utils/websearch/agy.d.ts.map +1 -0
  141. package/dist/utils/websearch/agy.js +83 -0
  142. package/dist/utils/websearch/agy.js.map +1 -0
  143. package/dist/utils/websearch/hook-config.d.ts.map +1 -1
  144. package/dist/utils/websearch/hook-config.js +3 -0
  145. package/dist/utils/websearch/hook-config.js.map +1 -1
  146. package/dist/utils/websearch/hook-env.d.ts.map +1 -1
  147. package/dist/utils/websearch/hook-env.js +13 -1
  148. package/dist/utils/websearch/hook-env.js.map +1 -1
  149. package/dist/utils/websearch/index.d.ts +2 -1
  150. package/dist/utils/websearch/index.d.ts.map +1 -1
  151. package/dist/utils/websearch/index.js +7 -2
  152. package/dist/utils/websearch/index.js.map +1 -1
  153. package/dist/utils/websearch/mcp-installer.d.ts +5 -4
  154. package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
  155. package/dist/utils/websearch/mcp-installer.js +7 -13
  156. package/dist/utils/websearch/mcp-installer.js.map +1 -1
  157. package/dist/utils/websearch/status.d.ts.map +1 -1
  158. package/dist/utils/websearch/status.js +25 -5
  159. package/dist/utils/websearch/status.js.map +1 -1
  160. package/dist/utils/websearch/types.d.ts +7 -1
  161. package/dist/utils/websearch/types.d.ts.map +1 -1
  162. package/dist/utils/websearch/types.js.map +1 -1
  163. package/dist/utils/websearch-manager.d.ts +2 -1
  164. package/dist/utils/websearch-manager.d.ts.map +1 -1
  165. package/dist/utils/websearch-manager.js +6 -1
  166. package/dist/utils/websearch-manager.js.map +1 -1
  167. package/dist/web-server/routes/bar-routes.d.ts +16 -0
  168. package/dist/web-server/routes/bar-routes.d.ts.map +1 -1
  169. package/dist/web-server/routes/bar-routes.js.map +1 -1
  170. package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
  171. package/dist/web-server/routes/cursor-routes.js +2 -0
  172. package/dist/web-server/routes/cursor-routes.js.map +1 -1
  173. package/dist/web-server/routes/index.d.ts.map +1 -1
  174. package/dist/web-server/routes/index.js +7 -5
  175. package/dist/web-server/routes/index.js.map +1 -1
  176. package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
  177. package/dist/web-server/routes/route-helpers.js +8 -5
  178. package/dist/web-server/routes/route-helpers.js.map +1 -1
  179. package/dist/web-server/routes/websearch-routes.d.ts.map +1 -1
  180. package/dist/web-server/routes/websearch-routes.js +7 -0
  181. package/dist/web-server/routes/websearch-routes.js.map +1 -1
  182. package/dist/web-server/usage/native-quota-collector.d.ts +50 -8
  183. package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -1
  184. package/dist/web-server/usage/native-quota-collector.js +883 -71
  185. package/dist/web-server/usage/native-quota-collector.js.map +1 -1
  186. package/lib/hooks/websearch-transformer.cjs +73 -4
  187. package/package.json +1 -1
@@ -14,18 +14,38 @@
14
14
  * - circuit breaker stops calling after repeated 429s for a cooldown
15
15
  * - serve-stale-on-failure; only omit a row when there is genuinely no data
16
16
  *
17
- * Claude path: reads native credentials + polls api.anthropic.com/api/oauth/usage.
17
+ * Claude path: reads per-profile .credentials.json (file-only, NO keychain)
18
+ * and polls api.anthropic.com/api/oauth/usage. If the file is absent the
19
+ * profile is emitted as a parked row (paused:true) — never a keychain call.
20
+ *
18
21
  * Codex path: PRIMARY = live network (chatgpt.com/backend-api/wham/usage, via
19
22
  * fetchCodexQuota), FALLBACK = local session logs (getCodexLocalQuota), mirroring
20
23
  * the same safety pattern as the Claude path.
24
+ *
25
+ * Multi-profile: each Claude or Codex profile gets its own ProviderState so a
26
+ * 429 on one profile never trips the breaker of another. The active/default
27
+ * profile for each surface is live-polled (paused:false); all other profiles are
28
+ * cache-only (paused:true, force=false hardcoded) so the 2.5s /summary deadline
29
+ * is maintained — at most 2 live upstream calls per /summary regardless of
30
+ * profile count.
31
+ *
32
+ * NO macOS Keychain access anywhere in this module. The old global-default
33
+ * Claude reader (readClaudeCredentials) is kept for back-compat but is no longer
34
+ * used by the multi-profile path.
21
35
  */
22
36
  import { type ClaudeNativeCredentials } from './claude-native-credentials';
23
37
  import { type CodexLocalQuota } from './codex-local-quota-collector';
24
38
  import type { ClaudeQuotaResult, CodexQuotaResult } from '../../cliproxy/quota/quota-types';
25
39
  import type { BarSummaryRow } from '../routes/bar-routes';
26
40
  export interface NativeQuotaDeps {
27
- /** Read the native Claude Code credentials. */
41
+ /** Read the native Claude Code credentials (global default path). */
28
42
  readCredentials?: () => ClaudeNativeCredentials | null;
43
+ /**
44
+ * Read credentials for a specific Claude profile (file-only, no keychain).
45
+ * Injected so tests never touch real fs or Keychain.
46
+ * profile: the profile name (e.g. "work"); returns null when absent/unparseable.
47
+ */
48
+ readClaudeCredentialsForProfile?: (profile: string) => ClaudeNativeCredentials | null;
29
49
  /** Fetch Claude quota with a directly-supplied native token. */
30
50
  fetchClaudeQuota?: (accessToken: string, accountId?: string) => Promise<ClaudeQuotaResult>;
31
51
  /**
@@ -40,6 +60,23 @@ export interface NativeQuotaDeps {
40
60
  fetchCodexNetworkQuota?: (accountId: string) => Promise<CodexQuotaResult>;
41
61
  /** Read Codex quota from local session logs (zero network, fallback). */
42
62
  getCodexQuota?: () => Promise<CodexLocalQuota | null>;
63
+ /**
64
+ * Read the native Codex auth for a profile (file-only, no keychain).
65
+ * DEFAULT_PROFILE ('default') reads ~/.codex/auth.json; other names read codex-instances/<name>/auth.json.
66
+ * Returns null when absent/unparseable.
67
+ */
68
+ readCodexNativeAuth?: (profile: string) => {
69
+ accessToken: string;
70
+ accountId: string;
71
+ } | null;
72
+ /** Enumerate Claude profile names. Injected so tests never touch real fs. */
73
+ listClaudeProfiles?: () => string[];
74
+ /** Enumerate Codex profile names (including DEFAULT_PROFILE for bare ~/.codex). */
75
+ listCodexProfiles?: () => string[];
76
+ /** Resolve the default Claude profile name. */
77
+ defaultClaudeProfile?: () => string | null;
78
+ /** Resolve the default Codex profile name. */
79
+ defaultCodexProfile?: () => string | null;
43
80
  /** Clock seam for deterministic backoff/TTL/breaker tests. */
44
81
  now?: () => number;
45
82
  /** Sleep seam (no real delay in tests). */
@@ -48,14 +85,19 @@ export interface NativeQuotaDeps {
48
85
  /** Reset all module state. Tests call this to avoid cross-test pollution. */
49
86
  export declare function resetNativeQuotaState(): void;
50
87
  /**
51
- * Build the native subscription rows (Claude Code + Codex) for /summary.
88
+ * Build the native subscription rows for /summary.
89
+ *
90
+ * When profile-enumeration deps are injected (listClaudeProfiles / listCodexProfiles
91
+ * etc.), all profiles are enumerated and the active/default profile is live-polled
92
+ * while non-default profiles are cache-only (parked). This keeps the 2.5s deadline:
93
+ * at most 2 live upstream calls per /summary regardless of profile count.
52
94
  *
53
- * Each path is independently try/caught so one failing source never blocks the
54
- * other or the response. Returns only rows that represent real data.
95
+ * When no enumeration deps are injected (legacy mode / old tests that stub only
96
+ * readCredentials + getDefaultCodexAccountId), the old single-profile collectors
97
+ * are used for backward compatibility.
55
98
  *
56
- * `opts.force` bypasses the TTL short-circuit on both paths so a debounce-
57
- * passing refresh re-pulls native rows live. The circuit breaker is always
58
- * respected regardless of force (account protection).
99
+ * `opts.force` bypasses the TTL short-circuit on the ACTIVE profile. The circuit
100
+ * breaker is always respected regardless of force (account protection).
59
101
  */
60
102
  export declare function getNativeAccountRows(deps?: NativeQuotaDeps, opts?: {
61
103
  force?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"native-quota-collector.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAKL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAgC7E,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC;IACvD,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3F;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC/C;;;OAGG;IACH,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1E,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACtD,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAsCD,6EAA6E;AAC7E,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AA0gBD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,eAAoB,EAC1B,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzB,OAAO,CAAC,aAAa,EAAE,CAAC,CAW1B;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI,aAAa,EAAE,CAK5D"}
1
+ {"version":3,"file":"native-quota-collector.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAKL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AA4D7E,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC;IACvD;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,uBAAuB,GAAG,IAAI,CAAC;IACtF,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3F;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC/C;;;OAGG;IACH,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1E,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACtD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7F,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IACpC,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IACnC,+CAA+C;IAC/C,oBAAoB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC3C,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1C,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAgDD,6EAA6E;AAC7E,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAouCD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,eAAoB,EAC1B,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzB,OAAO,CAAC,aAAa,EAAE,CAAC,CAmC1B;AA2ED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI,aAAa,EAAE,CAS5D"}