@auto-engineer/information-architect 0.4.4 → 0.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.
@@ -1,6 +1,5 @@
1
-
2
- 
3
- > @auto-engineer/information-architect@0.4.4 build /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
4
- > tsc && tsx ../../scripts/fix-esm-imports.ts && cp src/auto-ux-schema.json dist/
5
-
6
- Fixed ESM imports in dist/
1
+
2
+ > @auto-engineer/information-architect@0.5.0 build /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
3
+ > tsc && tsx ../../scripts/fix-esm-imports.ts && cp src/auto-ux-schema.json dist/
4
+
5
+ Fixed ESM imports in dist/
@@ -1,14 +1,16 @@
1
1
 
2
2
  
3
- > @auto-engineer/information-architect@0.4.4 format /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
3
+ > @auto-engineer/information-architect@0.5.0 format /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
4
4
  > prettier --write "**/*.{js,ts,json,md,yml,yaml}" --ignore-path ../../.prettierignore
5
5
 
6
- CHANGELOG.mdCHANGELOG.md 22ms (unchanged)
7
- DEBUG.mdDEBUG.md 4ms (unchanged)
8
- package.jsonpackage.json 22ms (unchanged)
9
- src/auto-ux-schema.jsonsrc/auto-ux-schema.json 15ms (unchanged)
10
- src/commands/generate-ia.tssrc/commands/generate-ia.ts 58ms (unchanged)
11
- src/generate-ia-schema.tssrc/generate-ia-schema.ts 7ms (unchanged)
6
+ CHANGELOG.mdCHANGELOG.md 43ms (unchanged)
7
+ DEBUG.mdDEBUG.md 7ms (unchanged)
8
+ package.jsonpackage.json 41ms (unchanged)
9
+ README.mdREADME.md 85ms (unchanged)
10
+ src/auto-ux-schema.jsonsrc/auto-ux-schema.json 14ms (unchanged)
11
+ src/cli-manifest.tssrc/cli-manifest.ts 12ms (unchanged)
12
+ src/commands/generate-ia.tssrc/commands/generate-ia.ts 40ms (unchanged)
13
+ src/generate-ia-schema.tssrc/generate-ia-schema.ts 19ms (unchanged)
12
14
  src/index.tssrc/index.ts 7ms (unchanged)
13
15
  src/types.tssrc/types.ts 1ms (unchanged)
14
16
  tsconfig.jsontsconfig.json 1ms (unchanged)
@@ -1,5 +1,5 @@
1
1
 
2
2
  
3
- > @auto-engineer/information-architect@0.4.4 lint /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
3
+ > @auto-engineer/information-architect@0.5.0 lint /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
4
4
  > eslint 'src/**/*.ts' --max-warnings 0 --config ../../eslint.config.ts
5
5
 
@@ -1,14 +1,12 @@
1
-
2
- 
3
- > @auto-engineer/information-architect@0.4.4 test /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
4
- > vitest run
5
-
6
- [?25l
7
-  RUN  v3.2.4 /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
8
-
9
- No test files found, exiting with code 0
10
-
11
- include: **/*.specs.{js,ts}
12
- exclude: **/.tmp/**, **/node_modules/**, **/dist/**
13
- 
14
- [?25h
1
+
2
+ > @auto-engineer/information-architect@0.5.1 test /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
3
+ > vitest run
4
+
5
+
6
+ RUN v3.2.4 /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
7
+
8
+ No test files found, exiting with code 0
9
+
10
+ include: **/*.specs.{js,ts}
11
+ exclude: **/.tmp/**, **/node_modules/**, **/dist/**
12
+
@@ -1,5 +1,4 @@
1
-
2
- 
3
- > @auto-engineer/information-architect@0.4.4 type-check /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
4
- > tsc --noEmit
5
-
1
+
2
+ > @auto-engineer/information-architect@0.5.1 type-check /Users/sam/WebstormProjects/top/auto-engineer/packages/information-architect
3
+ > tsc --noEmit
4
+
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @auto-engineer/information-architect
2
2
 
3
+ ## 0.5.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Uses AI with a default provider
8
+ - Updated dependencies
9
+ - @auto-engineer/ai-gateway@0.5.1
10
+
11
+ ## 0.5.0
12
+
13
+ ### Minor Changes
14
+
15
+ - • All cli commands now use commands and emit events on the bus
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+ - @auto-engineer/ai-gateway@0.5.0
21
+ - @auto-engineer/message-bus@0.4.0
22
+
3
23
  ## 0.4.3
4
24
 
5
25
  ### Patch Changes
package/README.md ADDED
@@ -0,0 +1,408 @@
1
+ # @auto-engineer/information-architect
2
+
3
+ AI-powered information architecture generation plugin for the Auto Engineer CLI that transforms business requirements into structured application blueprints. This plugin creates information architectures, user experience flows, and content hierarchies from high-level requirements.
4
+
5
+ ## Installation
6
+
7
+ This is a plugin for the Auto Engineer CLI. Install both the CLI and this plugin:
8
+
9
+ ```bash
10
+ npm install -g @auto-engineer/cli
11
+ npm install @auto-engineer/information-architect
12
+ ```
13
+
14
+ ## Configuration
15
+
16
+ Add this plugin to your `auto.config.ts`:
17
+
18
+ ```typescript
19
+ export default {
20
+ plugins: [
21
+ '@auto-engineer/information-architect',
22
+ // ... other plugins
23
+ ],
24
+ };
25
+ ```
26
+
27
+ ## Commands
28
+
29
+ This plugin provides the following commands:
30
+
31
+ - `generate:ia` - Generate information architecture from requirements
32
+
33
+ ## What does this plugin do?
34
+
35
+ The Information Architect plugin analyzes business requirements and generates structured information architectures that serve as blueprints for application development. It creates user experience flows, content hierarchies, navigation structures, and interaction patterns that guide the development of frontend and backend systems.
36
+
37
+ ## Key Features
38
+
39
+ ### Requirements Analysis
40
+
41
+ - Parses business requirements
42
+ - Identifies user personas and use cases
43
+ - Extracts functional and non-functional requirements
44
+ - Maps business processes to application features
45
+
46
+ ### Information Architecture Generation
47
+
48
+ - Creates content structures
49
+ - Defines navigation patterns and user flows
50
+ - Establishes data relationships and dependencies
51
+ - Generates wireframes and interaction specifications
52
+
53
+ ### User Experience Design
54
+
55
+ - Maps user journeys and task flows
56
+ - Identifies key interaction points and decision moments
57
+ - Defines responsive design requirements
58
+ - Creates accessibility and usability guidelines
59
+
60
+ ### Technical Specifications
61
+
62
+ - Generates API requirements and data models
63
+ - Creates component hierarchies for frontend development
64
+ - Defines integration points and external dependencies
65
+ - Establishes performance and scalability requirements
66
+
67
+ ## Generated Architecture Components
68
+
69
+ ### Site Map and Navigation
70
+
71
+ Creates comprehensive navigation structures:
72
+
73
+ ```json
74
+ {
75
+ "siteMap": {
76
+ "root": "/",
77
+ "sections": [
78
+ {
79
+ "name": "Dashboard",
80
+ "path": "/dashboard",
81
+ "access": "authenticated",
82
+ "children": [
83
+ {
84
+ "name": "Analytics",
85
+ "path": "/dashboard/analytics",
86
+ "description": "Performance metrics and insights"
87
+ },
88
+ {
89
+ "name": "Settings",
90
+ "path": "/dashboard/settings",
91
+ "description": "Account and application settings"
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "name": "Products",
97
+ "path": "/products",
98
+ "access": "public",
99
+ "children": [
100
+ {
101
+ "name": "Catalog",
102
+ "path": "/products/catalog",
103
+ "description": "Browse all available products"
104
+ },
105
+ {
106
+ "name": "Product Details",
107
+ "path": "/products/:id",
108
+ "description": "Detailed product information and purchasing options"
109
+ }
110
+ ]
111
+ }
112
+ ]
113
+ }
114
+ }
115
+ ```
116
+
117
+ ### User Personas and Journeys
118
+
119
+ Defines target users and their interaction patterns:
120
+
121
+ ```json
122
+ {
123
+ "personas": [
124
+ {
125
+ "name": "End Consumer",
126
+ "description": "Individual purchasing products for personal use",
127
+ "goals": ["Find products quickly", "Compare options easily", "Complete purchases securely"],
128
+ "painPoints": ["Complex checkout process", "Limited product information", "Poor mobile experience"],
129
+ "journeys": [
130
+ {
131
+ "name": "Product Purchase",
132
+ "steps": [
133
+ {
134
+ "stage": "Discovery",
135
+ "actions": ["Browse catalog", "Search products", "Filter results"],
136
+ "touchpoints": ["/products", "/search"],
137
+ "requirements": ["Fast search", "Intuitive filters", "Product recommendations"]
138
+ },
139
+ {
140
+ "stage": "Evaluation",
141
+ "actions": ["View details", "Compare products", "Read reviews"],
142
+ "touchpoints": ["/products/:id", "/compare"],
143
+ "requirements": ["Detailed information", "High-quality images", "Social proof"]
144
+ },
145
+ {
146
+ "stage": "Purchase",
147
+ "actions": ["Add to cart", "Checkout", "Payment"],
148
+ "touchpoints": ["/cart", "/checkout"],
149
+ "requirements": ["Simple checkout", "Multiple payment options", "Security indicators"]
150
+ }
151
+ ]
152
+ }
153
+ ]
154
+ }
155
+ ]
156
+ }
157
+ ```
158
+
159
+ ### Page Specifications
160
+
161
+ Detailed specifications for each application page:
162
+
163
+ ```json
164
+ {
165
+ "pages": [
166
+ {
167
+ "name": "Product Catalog",
168
+ "path": "/products",
169
+ "purpose": "Allow users to browse and discover products",
170
+ "layout": {
171
+ "type": "grid",
172
+ "responsive": true,
173
+ "components": [
174
+ {
175
+ "name": "SearchBar",
176
+ "position": "header",
177
+ "functionality": "Real-time product search with autocomplete"
178
+ },
179
+ {
180
+ "name": "FilterSidebar",
181
+ "position": "left",
182
+ "functionality": "Category, price, and attribute filtering"
183
+ },
184
+ {
185
+ "name": "ProductGrid",
186
+ "position": "main",
187
+ "functionality": "Paginated grid of product cards with sorting options"
188
+ },
189
+ {
190
+ "name": "Pagination",
191
+ "position": "footer",
192
+ "functionality": "Navigate through product results"
193
+ }
194
+ ]
195
+ },
196
+ "dataRequirements": [
197
+ "Product catalog with metadata",
198
+ "Category hierarchy",
199
+ "Search indexing",
200
+ "User preferences"
201
+ ],
202
+ "apiEndpoints": ["GET /api/products", "GET /api/categories", "GET /api/search"]
203
+ }
204
+ ]
205
+ }
206
+ ```
207
+
208
+ ### Component Architecture
209
+
210
+ Defines reusable component specifications:
211
+
212
+ ```json
213
+ {
214
+ "components": [
215
+ {
216
+ "name": "ProductCard",
217
+ "type": "organism",
218
+ "purpose": "Display product information in a card format",
219
+ "props": [
220
+ {
221
+ "name": "product",
222
+ "type": "Product",
223
+ "required": true,
224
+ "description": "Product data object"
225
+ },
226
+ {
227
+ "name": "onAddToCart",
228
+ "type": "function",
229
+ "required": false,
230
+ "description": "Callback when add to cart is clicked"
231
+ }
232
+ ],
233
+ "composition": ["ProductImage", "ProductTitle", "ProductPrice", "AddToCartButton", "ProductRating"],
234
+ "states": ["loading", "outOfStock", "onSale"],
235
+ "interactions": [
236
+ "hover: show quick actions",
237
+ "click: navigate to product details",
238
+ "cart button: add to cart with feedback"
239
+ ]
240
+ }
241
+ ]
242
+ }
243
+ ```
244
+
245
+ ### Data Models and Relationships
246
+
247
+ Defines backend data structure requirements:
248
+
249
+ ```json
250
+ {
251
+ "dataModels": [
252
+ {
253
+ "name": "Product",
254
+ "description": "Core product entity",
255
+ "fields": [
256
+ {
257
+ "name": "id",
258
+ "type": "string",
259
+ "required": true,
260
+ "description": "Unique product identifier"
261
+ },
262
+ {
263
+ "name": "name",
264
+ "type": "string",
265
+ "required": true,
266
+ "description": "Product display name"
267
+ },
268
+ {
269
+ "name": "price",
270
+ "type": "decimal",
271
+ "required": true,
272
+ "description": "Product price in base currency"
273
+ },
274
+ {
275
+ "name": "category",
276
+ "type": "Category",
277
+ "required": true,
278
+ "relationship": "many-to-one"
279
+ }
280
+ ],
281
+ "relationships": [
282
+ {
283
+ "type": "one-to-many",
284
+ "target": "Review",
285
+ "description": "Products can have multiple reviews"
286
+ },
287
+ {
288
+ "type": "many-to-many",
289
+ "target": "Tag",
290
+ "description": "Products can have multiple tags for categorization"
291
+ }
292
+ ]
293
+ }
294
+ ]
295
+ }
296
+ ```
297
+
298
+ ## Configuration Options
299
+
300
+ Customize IA generation behavior:
301
+
302
+ ```typescript
303
+ // auto.config.ts
304
+ export default {
305
+ plugins: [
306
+ [
307
+ '@auto-engineer/information-architect',
308
+ {
309
+ // Analysis preferences
310
+ includeUserPersonas: true,
311
+ includeUserJourneys: true,
312
+ includeWireframes: false,
313
+
314
+ // Output format
315
+ outputFormat: 'json', // or 'markdown', 'html'
316
+
317
+ // Detail level
318
+ detailLevel: 'comprehensive', // or 'basic', 'detailed'
319
+
320
+ // Target platforms
321
+ platforms: ['web', 'mobile'],
322
+
323
+ // Design system integration
324
+ useDesignSystem: true,
325
+ designSystemPath: './design-system',
326
+ },
327
+ ],
328
+ ],
329
+ };
330
+ ```
331
+
332
+ ## Integration with Other Plugins
333
+
334
+ The Information Architect serves as a foundation for other plugins:
335
+
336
+ - **@auto-engineer/flowlang**: Uses IA specifications to generate business flows
337
+ - **@auto-engineer/emmett-generator**: Creates backend models from IA data specifications
338
+ - **@auto-engineer/react-graphql-generator**: Generates frontend structure based on IA navigation
339
+ - **@auto-engineer/design-system-importer**: Applies design system constraints to IA components
340
+ - **@auto-engineer/frontend-implementation**: Implements pages and components per IA specifications
341
+
342
+ ## Workflow
343
+
344
+ ### 1. Requirements Input
345
+
346
+ Provide business requirements as natural language:
347
+
348
+ ```bash
349
+ auto generate:ia --requirements="Create an e-commerce platform for selling handmade crafts. Users should be able to browse products, add items to cart, and complete purchases. Include user accounts, order history, and seller management."
350
+ ```
351
+
352
+ ### 2. IA Generation
353
+
354
+ The plugin analyzes requirements and generates:
355
+
356
+ - Complete site map and navigation structure
357
+ - User personas and journey maps
358
+ - Page specifications with component breakdowns
359
+ - Data model requirements
360
+ - API endpoint specifications
361
+ - Technical requirements and constraints
362
+
363
+ ### 3. Architecture Review
364
+
365
+ Generated architecture includes:
366
+
367
+ - Visual site map diagrams
368
+ - User flow documentation
369
+ - Component hierarchy specifications
370
+ - Database schema recommendations
371
+ - Integration requirements
372
+
373
+ ### 4. Development Guidance
374
+
375
+ The IA serves as input for subsequent development phases:
376
+
377
+ - Frontend scaffolding follows navigation structure
378
+ - Backend models implement data specifications
379
+ - Component implementations follow IA component specs
380
+ - User testing validates against defined user journeys
381
+
382
+ ## Quality Assurance
383
+
384
+ The plugin ensures architecture through:
385
+
386
+ - Requirements Coverage: All stated requirements are addressed in the IA
387
+ - User Experience Validation: Generated flows support identified user goals
388
+ - Technical Feasibility: Architecture recommendations are technically sound
389
+ - Scalability Considerations: Structure supports growth and feature expansion
390
+ - Accessibility Standards: IA includes accessibility requirements and guidelines
391
+
392
+ ## Advanced Features
393
+
394
+ ### Iterative Refinement
395
+
396
+ - Analyzes feedback and refines architecture
397
+ - Supports incremental requirement additions
398
+ - Maintains architecture consistency across changes
399
+ - Tracks requirement evolution and impact
400
+
401
+ ### Multi-Platform Support
402
+
403
+ - Generates platform-specific considerations
404
+ - Addresses responsive design requirements
405
+ - Includes mobile-first considerations
406
+ - Plans for progressive web app features
407
+
408
+ The Information Architect plugin transforms high-level business requirements into actionable development blueprints, ensuring that applications are built with clear structure, user experience, and technical soundness from the start.
@@ -0,0 +1,3 @@
1
+ import type { CliManifest } from '@auto-engineer/cli/manifest-types';
2
+ export declare const CLI_MANIFEST: CliManifest;
3
+ //# sourceMappingURL=cli-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-manifest.d.ts","sourceRoot":"","sources":["../src/cli-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE,eAAO,MAAM,YAAY,EAAE,WAc1B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export const CLI_MANIFEST = {
2
+ category: '@auto-engineer/information-architect',
3
+ commands: {
4
+ 'generate:ia': {
5
+ handler: () => import('./commands/generate-ia.js'),
6
+ description: 'Generate Information Architecture',
7
+ usage: 'generate:ia <context> <flows...>',
8
+ examples: ['$ auto generate:ia ./.context ./flows/*.flow.ts'],
9
+ args: [
10
+ { name: 'context', description: 'Context directory', required: true },
11
+ { name: 'flows...', description: 'Flow files to analyze', required: true },
12
+ ],
13
+ },
14
+ },
15
+ };
16
+ //# sourceMappingURL=cli-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-manifest.js","sourceRoot":"","sources":["../src/cli-manifest.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,QAAQ,EAAE,sCAAsC;IAChD,QAAQ,EAAE;QACR,aAAa,EAAE;YACb,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC;YAC/C,WAAW,EAAE,mCAAmC;YAChD,KAAK,EAAE,kCAAkC;YACzC,QAAQ,EAAE,CAAC,iDAAiD,CAAC;YAC7D,IAAI,EAAE;gBACJ,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACrE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC3E;SACF;KACF;CACF,CAAC"}
@@ -13,6 +13,11 @@ export type IAGenerationFailedEvent = Event<'IAGenerationFailed', {
13
13
  outputDir: string;
14
14
  flowFiles: string[];
15
15
  }>;
16
- export declare function handleGenerateIACommand(command: GenerateIACommand): Promise<IAGeneratedEvent | IAGenerationFailedEvent>;
17
16
  export declare const generateIACommandHandler: CommandHandler<GenerateIACommand>;
17
+ interface CliArgs {
18
+ _: string[];
19
+ [key: string]: unknown;
20
+ }
21
+ declare const _default: (commandOrArgs: GenerateIACommand | CliArgs) => Promise<void>;
22
+ export default _default;
18
23
  //# sourceMappingURL=generate-ia.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-ia.d.ts","sourceRoot":"","sources":["../../src/commands/generate-ia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAiB3F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,YAAY,EACZ;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAClC,aAAa,EACb;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,KAAK,CACzC,oBAAoB,EACpB;IACE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CACF,CAAC;AAqFF,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,GAAG,uBAAuB,CAAC,CA6FrD;AAED,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,iBAAiB,CAUtE,CAAC"}
1
+ {"version":3,"file":"generate-ia.d.ts","sourceRoot":"","sources":["../../src/commands/generate-ia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAkB3F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,YAAY,EACZ;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAClC,aAAa,EACb;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,KAAK,CACzC,oBAAoB,EACpB;IACE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CACF,CAAC;AA0JF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,iBAAiB,CAUtE,CAAC;AAGF,UAAU,OAAO;IACf,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;wCA8EoC,iBAAiB,GAAG,OAAO;AAAhE,wBA0BE"}