@illuma-ai/codeviz 1.0.0 → 1.0.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.
- package/dist/CodeViz.d.ts +1 -1
- package/dist/CodeViz.d.ts.map +1 -1
- package/dist/ErrorPanel.d.ts +16 -0
- package/dist/ErrorPanel.d.ts.map +1 -0
- package/dist/PreviewPane.d.ts.map +1 -1
- package/dist/StatusBar.d.ts +8 -1
- package/dist/StatusBar.d.ts.map +1 -1
- package/dist/Toolbar.d.ts +16 -6
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/__tests__/transpiler-scenarios.test.d.ts +2 -0
- package/dist/__tests__/transpiler-scenarios.test.d.ts.map +1 -0
- package/dist/__tests__/transpiler.test.d.ts +2 -0
- package/dist/__tests__/transpiler.test.d.ts.map +1 -0
- package/dist/__tests__/ui-components.test.d.ts +2 -0
- package/dist/__tests__/ui-components.test.d.ts.map +1 -0
- package/dist/__tests__/utils.test.d.ts +2 -0
- package/dist/__tests__/utils.test.d.ts.map +1 -0
- package/dist/agentContext.d.ts +19 -1
- package/dist/agentContext.d.ts.map +1 -1
- package/dist/constants.d.ts +11 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/importMap.d.ts.map +1 -1
- package/dist/index.cjs +860 -769
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9671 -5428
- package/dist/index.js.map +1 -1
- package/dist/previewTemplate.d.ts +4 -0
- package/dist/previewTemplate.d.ts.map +1 -1
- package/dist/templates.d.ts +23 -12
- package/dist/templates.d.ts.map +1 -1
- package/dist/transpiler.d.ts +26 -4
- package/dist/transpiler.d.ts.map +1 -1
- package/dist/types.d.ts +26 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/components.d.ts +21 -0
- package/dist/ui/components.d.ts.map +1 -0
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/theme.d.ts +14 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/utils.d.ts +17 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +8 -3
package/dist/CodeViz.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { CodeVizProps, CodeVizHandle } from './types';
|
|
|
4
4
|
/**
|
|
5
5
|
* CodeViz — A lightweight single-file React/HTML preview component.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* Multi-format code & content preview component. Features:
|
|
8
8
|
* - Monaco editor with syntax highlighting and VS Code-style diff decorations
|
|
9
9
|
* - Sucrase in-browser JSX/TSX transpilation (no remote bundler)
|
|
10
10
|
* - Import maps + esm.sh CDN for dependency resolution
|
package/dist/CodeViz.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeViz.d.ts","sourceRoot":"","sources":["../src/CodeViz.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"CodeViz.d.ts","sourceRoot":"","sources":["../src/CodeViz.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AAsBzE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,OAAO,+GAulBnB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { PreviewError } from './types';
|
|
3
|
+
|
|
4
|
+
/** Props for the {@link ErrorPanel} component. */
|
|
5
|
+
export interface ErrorPanelProps {
|
|
6
|
+
/** Structured errors to display */
|
|
7
|
+
errors: PreviewError[];
|
|
8
|
+
/** Light or dark theme */
|
|
9
|
+
theme: 'light' | 'dark';
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Full-pane error display — replaces preview when errors exist after streaming.
|
|
13
|
+
* Shows structured error details (category, line, message) in a styled panel.
|
|
14
|
+
*/
|
|
15
|
+
export declare const ErrorPanel: React.NamedExoticComponent<ErrorPanelProps>;
|
|
16
|
+
//# sourceMappingURL=ErrorPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorPanel.d.ts","sourceRoot":"","sources":["../src/ErrorPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM5C,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,0BAA0B;IAC1B,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACzB;AAMD;;;GAGG;AACH,eAAO,MAAM,UAAU,6CA0GrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewPane.d.ts","sourceRoot":"","sources":["../src/PreviewPane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAiB,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAmBD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"PreviewPane.d.ts","sourceRoot":"","sources":["../src/PreviewPane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAiB,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAmBD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,8CAoJtB,CAAC"}
|
package/dist/StatusBar.d.ts
CHANGED
|
@@ -7,9 +7,16 @@ interface StatusBarProps {
|
|
|
7
7
|
isStreaming: boolean;
|
|
8
8
|
language: string;
|
|
9
9
|
theme: 'light' | 'dark';
|
|
10
|
+
/** Current view mode — suppresses "Building..." when preview isn't visible */
|
|
11
|
+
view?: 'code' | 'preview' | 'split';
|
|
12
|
+
/** Filename to display in the center of the status bar */
|
|
13
|
+
filename?: string;
|
|
14
|
+
/** Custom React node rendered after the copy button (e.g., version controls) */
|
|
15
|
+
footerSlot?: React.ReactNode;
|
|
10
16
|
}
|
|
11
17
|
/**
|
|
12
|
-
*
|
|
18
|
+
* Compact status bar — left: status, center: filename, right: copy + language + footerSlot.
|
|
19
|
+
* Error indicator is clickable — shows a right-aligned popover with error details.
|
|
13
20
|
*/
|
|
14
21
|
export declare const StatusBar: React.NamedExoticComponent<StatusBarProps>;
|
|
15
22
|
export {};
|
package/dist/StatusBar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../src/StatusBar.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../src/StatusBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,UAAU,cAAc;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,4CA4OpB,CAAC"}
|
package/dist/Toolbar.d.ts
CHANGED
|
@@ -1,27 +1,37 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
|
|
3
3
|
export type ViewMode = 'split' | 'code' | 'preview';
|
|
4
|
+
export interface DownloadOption {
|
|
5
|
+
label: string;
|
|
6
|
+
action: () => void;
|
|
7
|
+
}
|
|
4
8
|
interface ToolbarProps {
|
|
5
9
|
view: ViewMode;
|
|
6
10
|
onViewChange: (view: ViewMode) => void;
|
|
7
11
|
onRefresh: () => void;
|
|
8
|
-
errorCount: number;
|
|
9
12
|
isLoading: boolean;
|
|
10
13
|
theme: 'light' | 'dark';
|
|
14
|
+
/** Whether content is currently being streamed — disables preview tab */
|
|
15
|
+
isStreaming?: boolean;
|
|
11
16
|
/** Whether the component is in fullscreen mode */
|
|
12
17
|
isFullscreen?: boolean;
|
|
13
18
|
/** Toggle fullscreen on the container */
|
|
14
19
|
onFullscreenToggle?: () => void;
|
|
15
|
-
/** Download the current content */
|
|
20
|
+
/** Download the current content — single action */
|
|
16
21
|
onDownload?: () => void;
|
|
17
|
-
/**
|
|
22
|
+
/** Multiple download options — shows a dropdown menu instead of single button */
|
|
23
|
+
downloadOptions?: DownloadOption[];
|
|
24
|
+
/** Close button — emits event for parent app to handle */
|
|
18
25
|
onClose?: () => void;
|
|
26
|
+
/** Hide the split view option — reusable across any panel embedding CodeViz */
|
|
27
|
+
hideSplit?: boolean;
|
|
19
28
|
}
|
|
20
29
|
/**
|
|
21
|
-
*
|
|
30
|
+
* Compact toolbar with sleek view switcher tabs + window controls.
|
|
22
31
|
*
|
|
23
|
-
* Split view
|
|
24
|
-
*
|
|
32
|
+
* Split view available at wide screen (>=768px) or in fullscreen,
|
|
33
|
+
* and can be entirely hidden via the generic `hideSplit` prop.
|
|
34
|
+
* Right side has refresh, fullscreen toggle, and close.
|
|
25
35
|
*/
|
|
26
36
|
export declare const Toolbar: React.NamedExoticComponent<ToolbarProps>;
|
|
27
37
|
export {};
|
package/dist/Toolbar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../src/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../src/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAGtE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,iFAAiF;IACjF,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,0CAuSlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transpiler-scenarios.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/transpiler-scenarios.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transpiler.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/transpiler.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-components.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ui-components.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/utils.test.ts"],"names":[],"mappings":""}
|
package/dist/agentContext.d.ts
CHANGED
|
@@ -45,6 +45,24 @@ export declare const RENDERABLE_TYPES: {
|
|
|
45
45
|
readonly template: "json";
|
|
46
46
|
readonly example: "{\"users\": [{\"name\": \"Alice\", \"role\": \"admin\"}]}";
|
|
47
47
|
};
|
|
48
|
+
readonly 'text/vnd.graphviz': {
|
|
49
|
+
readonly description: "Graphviz DOT diagram with zoom/pan viewer (digraph, subgraph, clusters)";
|
|
50
|
+
readonly extension: ".dot";
|
|
51
|
+
readonly template: "dot";
|
|
52
|
+
readonly example: "digraph G {\n A -> B -> C;\n B -> D;\n}";
|
|
53
|
+
};
|
|
54
|
+
readonly 'application/x-latex': {
|
|
55
|
+
readonly description: "LaTeX math equations rendered with KaTeX (inline $...$ and display $$...$$)";
|
|
56
|
+
readonly extension: ".tex";
|
|
57
|
+
readonly template: "latex";
|
|
58
|
+
readonly example: "The quadratic formula: $$x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}$$";
|
|
59
|
+
};
|
|
60
|
+
readonly 'application/vnd.architecture': {
|
|
61
|
+
readonly description: "Architecture diagram using Draw.io XML (mxGraphModel). Supports AWS, GCP, Azure, K8s shapes and all draw.io stencils.";
|
|
62
|
+
readonly extension: ".drawio";
|
|
63
|
+
readonly template: "architecture";
|
|
64
|
+
readonly example: "<mxGraphModel><root><mxCell id=\"0\"/><mxCell id=\"1\" parent=\"0\"/></root></mxGraphModel>";
|
|
65
|
+
};
|
|
48
66
|
};
|
|
49
67
|
export type RenderableType = keyof typeof RENDERABLE_TYPES;
|
|
50
68
|
/**
|
|
@@ -65,7 +83,7 @@ export declare function getRenderableTypes(): typeof RENDERABLE_TYPES;
|
|
|
65
83
|
export declare function getAgentSystemPrompt(): string;
|
|
66
84
|
/**
|
|
67
85
|
* Pick the best template for a user query.
|
|
68
|
-
* Convenience re-export
|
|
86
|
+
* Convenience re-export.
|
|
69
87
|
*/
|
|
70
88
|
export { pickTemplate } from './templates';
|
|
71
89
|
//# sourceMappingURL=agentContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentContext.d.ts","sourceRoot":"","sources":["../src/agentContext.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"agentContext.d.ts","sourceRoot":"","sources":["../src/agentContext.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE3D;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,gBAAgB,CAE5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAmF7C;AAED;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Templates that have preview rendering support in CodeViz */
|
|
2
|
+
export declare const PREVIEW_TEMPLATES: Set<string>;
|
|
3
|
+
/** Debounce/timing constants used across CodeViz components */
|
|
4
|
+
export declare const TIMINGS: {
|
|
5
|
+
readonly EDITOR_DEBOUNCE_MS: 400;
|
|
6
|
+
readonly PREVIEW_SWITCH_DELAY_MS: 800;
|
|
7
|
+
readonly COPY_CONFIRMATION_MS: 2000;
|
|
8
|
+
};
|
|
9
|
+
/** Breakpoint below which Split view is hidden */
|
|
10
|
+
export declare const SPLIT_BREAKPOINT = 768;
|
|
11
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,aAG5B,CAAC;AAEH,+DAA+D;AAC/D,eAAO,MAAM,OAAO;;;;CAIV,CAAC;AAEX,kDAAkD;AAClD,eAAO,MAAM,gBAAgB,MAAM,CAAC"}
|
package/dist/importMap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importMap.d.ts","sourceRoot":"","sources":["../src/importMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIzC;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,SAAS,CAAC;CAClB,GACL,SAAS,
|
|
1
|
+
{"version":3,"file":"importMap.d.ts","sourceRoot":"","sources":["../src/importMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIzC;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,SAAS,CAAC;CAClB,GACL,SAAS,CAiOX;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CA+B7C"}
|