@modular-prompt/driver 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/README.md +58 -5
  2. package/dist/driver-registry/ai-service.d.ts +23 -1
  3. package/dist/driver-registry/ai-service.d.ts.map +1 -1
  4. package/dist/driver-registry/ai-service.js +44 -10
  5. package/dist/driver-registry/ai-service.js.map +1 -1
  6. package/dist/driver-registry/config-based-factory.d.ts.map +1 -1
  7. package/dist/driver-registry/config-based-factory.js +16 -0
  8. package/dist/driver-registry/config-based-factory.js.map +1 -1
  9. package/dist/driver-registry/factory-helper.d.ts +2 -0
  10. package/dist/driver-registry/factory-helper.d.ts.map +1 -1
  11. package/dist/driver-registry/factory-helper.js +21 -3
  12. package/dist/driver-registry/factory-helper.js.map +1 -1
  13. package/dist/driver-registry/index.d.ts +2 -2
  14. package/dist/driver-registry/index.d.ts.map +1 -1
  15. package/dist/driver-registry/index.js +1 -1
  16. package/dist/driver-registry/index.js.map +1 -1
  17. package/dist/driver-registry/registry.d.ts.map +1 -1
  18. package/dist/driver-registry/registry.js +3 -1
  19. package/dist/driver-registry/registry.js.map +1 -1
  20. package/dist/driver-registry/types.d.ts +8 -2
  21. package/dist/driver-registry/types.d.ts.map +1 -1
  22. package/dist/index.d.ts +10 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +9 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/local-inference/adapters.d.ts +66 -0
  27. package/dist/local-inference/adapters.d.ts.map +1 -0
  28. package/dist/local-inference/adapters.js +2 -0
  29. package/dist/local-inference/adapters.js.map +1 -0
  30. package/dist/local-inference/driver.d.ts +51 -0
  31. package/dist/local-inference/driver.d.ts.map +1 -0
  32. package/dist/local-inference/driver.js +309 -0
  33. package/dist/local-inference/driver.js.map +1 -0
  34. package/dist/local-inference/index.d.ts +22 -0
  35. package/dist/local-inference/index.d.ts.map +1 -0
  36. package/dist/local-inference/index.js +17 -0
  37. package/dist/local-inference/index.js.map +1 -0
  38. package/dist/local-inference/process-client.d.ts +50 -0
  39. package/dist/local-inference/process-client.d.ts.map +1 -0
  40. package/dist/local-inference/process-client.js +92 -0
  41. package/dist/local-inference/process-client.js.map +1 -0
  42. package/dist/local-inference/process-communication.d.ts +41 -0
  43. package/dist/local-inference/process-communication.d.ts.map +1 -0
  44. package/dist/{mlx-ml/process → local-inference}/process-communication.js +25 -61
  45. package/dist/local-inference/process-communication.js.map +1 -0
  46. package/dist/local-inference/process-port.d.ts +12 -0
  47. package/dist/local-inference/process-port.d.ts.map +1 -0
  48. package/dist/local-inference/process-port.js +2 -0
  49. package/dist/local-inference/process-port.js.map +1 -0
  50. package/dist/local-inference/prompt-utils.d.ts +6 -0
  51. package/dist/local-inference/prompt-utils.d.ts.map +1 -0
  52. package/dist/local-inference/prompt-utils.js +17 -0
  53. package/dist/local-inference/prompt-utils.js.map +1 -0
  54. package/dist/local-inference/protocol.d.ts +192 -0
  55. package/dist/local-inference/protocol.d.ts.map +1 -0
  56. package/dist/local-inference/protocol.js +2 -0
  57. package/dist/local-inference/protocol.js.map +1 -0
  58. package/dist/local-inference/queue-types.d.ts +54 -0
  59. package/dist/local-inference/queue-types.d.ts.map +1 -0
  60. package/dist/local-inference/queue-types.js +2 -0
  61. package/dist/local-inference/queue-types.js.map +1 -0
  62. package/dist/local-inference/request-queue.d.ts +36 -0
  63. package/dist/local-inference/request-queue.d.ts.map +1 -0
  64. package/dist/{mlx-ml/process/queue.js → local-inference/request-queue.js} +83 -56
  65. package/dist/local-inference/request-queue.js.map +1 -0
  66. package/dist/local-inference/stream-utils.d.ts +19 -0
  67. package/dist/local-inference/stream-utils.d.ts.map +1 -0
  68. package/dist/local-inference/stream-utils.js +76 -0
  69. package/dist/local-inference/stream-utils.js.map +1 -0
  70. package/dist/mlx-ml/mlx-cache-support.d.ts +23 -0
  71. package/dist/mlx-ml/mlx-cache-support.d.ts.map +1 -0
  72. package/dist/mlx-ml/mlx-cache-support.js +45 -0
  73. package/dist/mlx-ml/mlx-cache-support.js.map +1 -0
  74. package/dist/mlx-ml/mlx-driver.d.ts +20 -59
  75. package/dist/mlx-ml/mlx-driver.d.ts.map +1 -1
  76. package/dist/mlx-ml/mlx-driver.js +86 -460
  77. package/dist/mlx-ml/mlx-driver.js.map +1 -1
  78. package/dist/mlx-ml/mlx-local-inference-adapters.d.ts +3 -0
  79. package/dist/mlx-ml/mlx-local-inference-adapters.d.ts.map +1 -0
  80. package/dist/mlx-ml/mlx-local-inference-adapters.js +19 -0
  81. package/dist/mlx-ml/mlx-local-inference-adapters.js.map +1 -0
  82. package/dist/mlx-ml/mlx-options.d.ts +19 -0
  83. package/dist/mlx-ml/mlx-options.d.ts.map +1 -0
  84. package/dist/mlx-ml/mlx-options.js +30 -0
  85. package/dist/mlx-ml/mlx-options.js.map +1 -0
  86. package/dist/mlx-ml/process/index.d.ts +10 -8
  87. package/dist/mlx-ml/process/index.d.ts.map +1 -1
  88. package/dist/mlx-ml/process/index.js +73 -54
  89. package/dist/mlx-ml/process/index.js.map +1 -1
  90. package/dist/mlx-ml/process/model-specific.d.ts +2 -1
  91. package/dist/mlx-ml/process/model-specific.d.ts.map +1 -1
  92. package/dist/mlx-ml/process/model-specific.js.map +1 -1
  93. package/dist/mlx-ml/process/prompt-builder.d.ts +11 -0
  94. package/dist/mlx-ml/process/prompt-builder.d.ts.map +1 -0
  95. package/dist/mlx-ml/process/prompt-builder.js +51 -0
  96. package/dist/mlx-ml/process/prompt-builder.js.map +1 -0
  97. package/dist/mlx-ml/process/types.d.ts +15 -183
  98. package/dist/mlx-ml/process/types.d.ts.map +1 -1
  99. package/dist/mlx-ml/types.d.ts +2 -45
  100. package/dist/mlx-ml/types.d.ts.map +1 -1
  101. package/dist/models-config/index.d.ts +8 -0
  102. package/dist/models-config/index.d.ts.map +1 -0
  103. package/dist/models-config/index.js +7 -0
  104. package/dist/models-config/index.js.map +1 -0
  105. package/dist/models-config/loader.d.ts +20 -0
  106. package/dist/models-config/loader.d.ts.map +1 -0
  107. package/dist/models-config/loader.js +85 -0
  108. package/dist/models-config/loader.js.map +1 -0
  109. package/dist/models-config/paths.d.ts +7 -0
  110. package/dist/models-config/paths.d.ts.map +1 -0
  111. package/dist/models-config/paths.js +11 -0
  112. package/dist/models-config/paths.js.map +1 -0
  113. package/dist/models-config/resolve.d.ts +57 -0
  114. package/dist/models-config/resolve.d.ts.map +1 -0
  115. package/dist/models-config/resolve.js +187 -0
  116. package/dist/models-config/resolve.js.map +1 -0
  117. package/dist/models-config/types.d.ts +60 -0
  118. package/dist/models-config/types.d.ts.map +1 -0
  119. package/dist/models-config/types.js +5 -0
  120. package/dist/models-config/types.js.map +1 -0
  121. package/dist/pytorch/process/index.d.ts +35 -0
  122. package/dist/pytorch/process/index.d.ts.map +1 -0
  123. package/dist/pytorch/process/index.js +69 -0
  124. package/dist/pytorch/process/index.js.map +1 -0
  125. package/dist/pytorch/pytorch-driver.d.ts +35 -0
  126. package/dist/pytorch/pytorch-driver.d.ts.map +1 -0
  127. package/dist/pytorch/pytorch-driver.js +48 -0
  128. package/dist/pytorch/pytorch-driver.js.map +1 -0
  129. package/dist/pytorch/pytorch-local-inference-adapters.d.ts +3 -0
  130. package/dist/pytorch/pytorch-local-inference-adapters.d.ts.map +1 -0
  131. package/dist/pytorch/pytorch-local-inference-adapters.js +19 -0
  132. package/dist/pytorch/pytorch-local-inference-adapters.js.map +1 -0
  133. package/dist/pytorch/pytorch-options.d.ts +8 -0
  134. package/dist/pytorch/pytorch-options.d.ts.map +1 -0
  135. package/dist/pytorch/pytorch-options.js +21 -0
  136. package/dist/pytorch/pytorch-options.js.map +1 -0
  137. package/dist/query-logger.js +1 -1
  138. package/dist/query-logger.js.map +1 -1
  139. package/dist/runtime/check.d.ts +10 -0
  140. package/dist/runtime/check.d.ts.map +1 -0
  141. package/dist/runtime/check.js +24 -0
  142. package/dist/runtime/check.js.map +1 -0
  143. package/dist/runtime/index.d.ts +4 -0
  144. package/dist/runtime/index.d.ts.map +1 -0
  145. package/dist/runtime/index.js +4 -0
  146. package/dist/runtime/index.js.map +1 -0
  147. package/dist/runtime/manifest-core.d.mts +27 -0
  148. package/dist/runtime/manifest-core.d.mts.map +1 -0
  149. package/dist/runtime/manifest-core.mjs +68 -0
  150. package/dist/runtime/manifest-core.mjs.map +1 -0
  151. package/dist/runtime/manifest.d.ts +18 -0
  152. package/dist/runtime/manifest.d.ts.map +1 -0
  153. package/dist/runtime/manifest.js +9 -0
  154. package/dist/runtime/manifest.js.map +1 -0
  155. package/dist/runtime/paths-core.d.mts +17 -0
  156. package/dist/runtime/paths-core.d.mts.map +1 -0
  157. package/dist/runtime/paths-core.mjs +67 -0
  158. package/dist/runtime/paths-core.mjs.map +1 -0
  159. package/dist/runtime/paths.d.ts +12 -0
  160. package/dist/runtime/paths.d.ts.map +1 -0
  161. package/dist/runtime/paths.js +17 -0
  162. package/dist/runtime/paths.js.map +1 -0
  163. package/dist/types.d.ts +11 -1
  164. package/dist/types.d.ts.map +1 -1
  165. package/dist/types.js.map +1 -1
  166. package/package.json +10 -7
  167. package/scripts/download-model.js +25 -9
  168. package/scripts/runtime-cli.js +315 -0
  169. package/src/mlx-ml/python/__main__.py +43 -4
  170. package/src/mlx-ml/python/handlers/__init__.py +2 -1
  171. package/src/mlx-ml/python/handlers/completion.py +3 -27
  172. package/src/mlx-ml/python/handlers/{chat.py → generate.py} +33 -106
  173. package/src/mlx-ml/python/handlers/render.py +40 -0
  174. package/src/mlx-ml/python/pyproject.toml +3 -2
  175. package/src/mlx-ml/python/server.py +28 -8
  176. package/src/mlx-ml/python/utils/template_render.py +80 -0
  177. package/src/mlx-ml/python/utils/token_utils.py +2 -2
  178. package/src/mlx-ml/python/uv.lock +549 -454
  179. package/src/pytorch/python/__main__.py +19 -0
  180. package/src/pytorch/python/backends/__init__.py +3 -0
  181. package/src/pytorch/python/backends/base.py +84 -0
  182. package/src/pytorch/python/backends/transformers_lm.py +127 -0
  183. package/src/pytorch/python/handlers/__init__.py +6 -0
  184. package/src/pytorch/python/handlers/cancel.py +53 -0
  185. package/src/pytorch/python/handlers/capabilities.py +6 -0
  186. package/src/pytorch/python/handlers/completion.py +15 -0
  187. package/src/pytorch/python/handlers/format_test.py +70 -0
  188. package/src/pytorch/python/handlers/generate.py +68 -0
  189. package/src/pytorch/python/handlers/render.py +40 -0
  190. package/src/pytorch/python/handlers/tokenize.py +63 -0
  191. package/src/pytorch/python/pyproject.toml +36 -0
  192. package/src/pytorch/python/server.py +140 -0
  193. package/src/pytorch/python/utils/__init__.py +0 -0
  194. package/src/pytorch/python/utils/chat_template_constraints.py +164 -0
  195. package/src/pytorch/python/utils/prompt_builder.py +54 -0
  196. package/src/pytorch/python/utils/template_render.py +80 -0
  197. package/src/pytorch/python/utils/token_utils.py +376 -0
  198. package/src/pytorch/python/uv.lock +694 -0
  199. package/dist/mlx-ml/process/process-communication.d.ts +0 -45
  200. package/dist/mlx-ml/process/process-communication.d.ts.map +0 -1
  201. package/dist/mlx-ml/process/process-communication.js.map +0 -1
  202. package/dist/mlx-ml/process/queue.d.ts +0 -35
  203. package/dist/mlx-ml/process/queue.d.ts.map +0 -1
  204. package/dist/mlx-ml/process/queue.js.map +0 -1
  205. package/scripts/setup-mlx.js +0 -53
@@ -1,22 +1,23 @@
1
- import type { AIDriver, QueryOptions, QueryResult, StreamResult } from '../types.js';
2
- import type { FormatterOptions } from '../formatter/types.js';
3
- import type { MlxMlModelOptions, MlxModelCapabilities } from './types.js';
4
- import type { CompiledPrompt } from '@modular-prompt/core';
1
+ import type { MlxBackendMode } from '../driver-registry/types.js';
2
+ import { LocalInferenceDriver } from '../local-inference/driver.js';
3
+ import { hasMessageElement } from '../local-inference/prompt-utils.js';
5
4
  import type { PromptCacheController } from '../cache-controller.js';
6
- /**
7
- * Check if the prompt contains MessageElement
8
- */
9
- export declare function hasMessageElement(prompt: CompiledPrompt): boolean;
5
+ import type { MlxModelCapabilities } from './types.js';
6
+ import type { MlxQueryOptions } from './mlx-options.js';
7
+ import type { FormatterOptions } from '../formatter/types.js';
8
+ export { hasMessageElement };
10
9
  /**
11
10
  * MLX ML driver configuration
12
11
  */
13
12
  export interface MlxDriverConfig {
14
13
  model: string;
15
- defaultOptions?: Partial<MlxMlModelOptions>;
14
+ defaultOptions?: Partial<MlxQueryOptions>;
16
15
  formatterOptions?: FormatterOptions;
17
16
  /** VLM画像の最大辺ピクセル数(デフォルト: 768) */
18
17
  maxImageSize?: number;
19
- /** VLMモデルをtext-onlyモードで使用する(VLM判定を抑制) */
18
+ /** MLX Python バックエンド(デフォルト: auto) */
19
+ backend?: MlxBackendMode;
20
+ /** VLMモデルをtext-onlyモードで使用する(backend: lm と同等。後方互換) */
20
21
  textOnly?: boolean;
21
22
  /** Speculative decoding用のdrafter model名 */
22
23
  drafterModel?: string;
@@ -26,63 +27,23 @@ export interface MlxDriverConfig {
26
27
  cacheController?: PromptCacheController;
27
28
  }
28
29
  /**
29
- * MLX ML driver using Python subprocess
30
+ * MLX ML driver using Python subprocess.
31
+ * 共通ロジックは LocalInferenceDriver に委譲する。
30
32
  */
31
- export declare class MlxDriver implements AIDriver {
32
- private process;
33
- private model;
34
- private _defaultOptions;
35
- private runtimeInfo;
36
- private modelProcessor;
37
- private formatterOptions;
38
- private maxImageSize;
39
- private queryLogger;
40
- private cacheController?;
41
- private cacheControllerBound;
42
- get defaultOptions(): Partial<MlxMlModelOptions>;
43
- set defaultOptions(value: Partial<MlxMlModelOptions>);
33
+ export declare class MlxDriver extends LocalInferenceDriver {
34
+ private cacheControllerRaw?;
35
+ private cacheDisabledForVlm;
36
+ private readonly cacheBindingState;
44
37
  constructor(config: MlxDriverConfig);
45
- /**
46
- * Initialize process and cache runtime info
47
- */
48
- private ensureInitialized;
49
- /**
50
- * VLMモデルかどうかを判定
51
- */
52
- private isVLM;
53
- /**
54
- * Determine which API to use (chat or completion)
55
- * Simple logic based on runtime info only
56
- */
57
- private determineApi;
58
- /**
59
- * モデルがnativeツール対応かを判定
60
- * tool_call_format(Python側検出結果)を唯一の判断基準とする
61
- */
62
- private hasNativeToolSupport;
63
- /**
64
- * Execute query and return stream
65
- * Common logic for query and streamQuery
66
- */
67
- private executeQuery;
68
- /**
69
- * Query the AI model with a compiled prompt
70
- */
71
- query(prompt: CompiledPrompt, options?: QueryOptions): Promise<QueryResult>;
72
- /**
73
- * Stream query implementation
74
- */
75
- streamQuery(prompt: CompiledPrompt, options?: QueryOptions): Promise<StreamResult>;
38
+ get defaultOptions(): Partial<MlxQueryOptions>;
39
+ set defaultOptions(value: Partial<MlxQueryOptions>);
76
40
  /**
77
41
  * Get model capabilities (public API)
78
42
  *
79
43
  * Returns runtime information converted to camelCase
80
44
  */
81
45
  getCapabilities(): Promise<MlxModelCapabilities>;
82
- private logCacheStats;
83
- /**
84
- * Close the process
85
- */
86
46
  close(): Promise<void>;
47
+ private logCacheStats;
87
48
  }
88
49
  //# sourceMappingURL=mlx-driver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mlx-driver.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,aAAa,CAAC;AAEnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAcpE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAYjE;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAyFD;;GAEG;AACH,qBAAa,SAAU,YAAW,QAAQ;IACxC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAwB;IAChD,OAAO,CAAC,oBAAoB,CAAS;IAErC,IAAI,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAE/C;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAEnD;gBAEW,MAAM,EAAE,eAAe;IAiBnC;;OAEG;YACW,iBAAiB;IA2C/B;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;;OAGG;IACH,OAAO,CAAC,YAAY;IASpB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;;OAGG;YACW,YAAY;IAuG1B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAajF;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC;IAuJxB;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAsCtD,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
1
+ {"version":3,"file":"mlx-driver.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAS9D,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED;;;GAGG;AACH,qBAAa,SAAU,SAAQ,oBAAoB;IACjD,OAAO,CAAC,kBAAkB,CAAC,CAAwB;IACnD,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;gBAE1C,MAAM,EAAE,eAAe;IA6CnC,IAAI,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAE7C;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,EAEjD;IAED;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;IA8CvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrC,OAAO,CAAC,aAAa;CAoBtB"}