@spinajs/orm-http 2.0.102 → 2.0.103

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,347 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- var __metadata = (this && this.__metadata) || function (k, v) {
32
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
- };
34
- var __param = (this && this.__param) || function (paramIndex, decorator) {
35
- return function (target, key) { decorator(target, key, paramIndex); }
36
- };
37
- var __importDefault = (this && this.__importDefault) || function (mod) {
38
- return (mod && mod.__esModule) ? mod : { "default": mod };
39
- };
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.JsonApi = void 0;
42
- const di_1 = require("@spinajs/di");
43
- const http_1 = require("@spinajs/http");
44
- const http_2 = require("@spinajs/http");
45
- const orm_1 = require("@spinajs/orm");
46
- const lodash_1 = __importDefault(require("lodash"));
47
- const express = __importStar(require("express"));
48
- const middleware_js_1 = require("../middleware.js");
49
- const interfaces_js_1 = require("../interfaces.js");
50
- class IncludesHydrator extends http_1.ArgHydrator {
51
- async hydrate(input) {
52
- return new Includes(input ? input.split(',').map((x) => x.split('.')) : []);
53
- }
54
- }
55
- class FiltersHydrator extends http_1.ArgHydrator {
56
- async hydrate(input) {
57
- return new Filters(input ? JSON.parse(input) : []);
58
- }
59
- }
60
- class ModelParamHydrator extends http_1.ArgHydrator {
61
- async hydrate(input) {
62
- const model = this.Orm.Models.find((x) => x.name.toLowerCase() === input.toLowerCase());
63
- if (!model) {
64
- return null;
65
- }
66
- const desc = (0, orm_1.extractModelDescriptor)(model.type);
67
- const param = new Model();
68
- param.Descriptor = desc;
69
- param.Type = model.type;
70
- return param;
71
- }
72
- }
73
- __decorate([
74
- (0, di_1.Autoinject)(orm_1.Orm),
75
- __metadata("design:type", orm_1.Orm)
76
- ], ModelParamHydrator.prototype, "Orm", void 0);
77
- function dehydrate(model, omit) {
78
- const dObj = {
79
- type: model.constructor.name,
80
- id: model.PrimaryKeyValue,
81
- attributes: model.dehydrate(omit),
82
- relationships: lodash_1.default.mapValues(lodash_1.default.groupBy(model.getFlattenRelationModels(false), '__relationKey__'), (x) => {
83
- return x.map((xx) => {
84
- return {
85
- type: xx.constructor.name,
86
- id: xx.PrimaryKeyValue,
87
- };
88
- });
89
- }),
90
- };
91
- return dObj;
92
- }
93
- function modelToJsonApi(model) {
94
- return {
95
- data: Array.isArray(model) ? model.map((m) => dehydrate(m)) : dehydrate(model),
96
- included: Array.isArray(model) ? lodash_1.default.flatMap(model, extractIncluded) : extractIncluded(model),
97
- };
98
- }
99
- function extractIncluded(model) {
100
- return model.getFlattenRelationModels(true).map((m) => dehydrate(m));
101
- }
102
- function applyQueryIncludes(includes, query) {
103
- let currQuery = null;
104
- includes.Param.forEach((i) => {
105
- currQuery = query;
106
- i.forEach((ii) => {
107
- currQuery.populate(ii, function () {
108
- currQuery = this;
109
- });
110
- });
111
- });
112
- }
113
- let Includes = class Includes {
114
- constructor(Param) {
115
- this.Param = Param;
116
- }
117
- };
118
- Includes = __decorate([
119
- (0, http_1.Hydrator)(IncludesHydrator),
120
- __metadata("design:paramtypes", [Array])
121
- ], Includes);
122
- let Filters = class Filters {
123
- constructor(Param) {
124
- this.Param = Param;
125
- }
126
- };
127
- Filters = __decorate([
128
- (0, http_1.Hydrator)(FiltersHydrator),
129
- __metadata("design:paramtypes", [Object])
130
- ], Filters);
131
- let Model = class Model {
132
- get SelectQuery() {
133
- return (0, orm_1.createQuery)(this.Type, orm_1.SelectQueryBuilder).query;
134
- }
135
- get InserQuery() {
136
- return (0, orm_1.createQuery)(this.Type, orm_1.InsertQueryBuilder).query;
137
- }
138
- get DeleteQuery() {
139
- return (0, orm_1.createQuery)(this.Type, orm_1.DeleteQueryBuilder).query;
140
- }
141
- get UpdateQueryBuilder() {
142
- return (0, orm_1.createQuery)(this.Type, orm_1.UpdateQueryBuilder).query;
143
- }
144
- };
145
- Model = __decorate([
146
- (0, http_1.Hydrator)(ModelParamHydrator)
147
- ], Model);
148
- const PrimaryKeySchema = {
149
- $id: 'JsonApiPrimaryKeySchema',
150
- title: 'Json api primary key schema for id parameter',
151
- anyOf: [
152
- { type: 'string', minLength: 0, maxLength: 16 },
153
- { type: 'number', minimum: 0 },
154
- { type: 'string', pattern: '^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$', minLength: 32, maxLength: 36 },
155
- ],
156
- };
157
- const modelSchema = {
158
- $id: 'JsonApiModelSchema',
159
- title: 'Json api modele/resource schema',
160
- type: 'string',
161
- minLength: 0,
162
- maxLength: 32,
163
- };
164
- const genericStringSchema = {
165
- $id: 'JsonApiIncludeSchema',
166
- title: 'Json api modele/resource schema',
167
- type: 'string',
168
- minLength: 0,
169
- maxLength: 256,
170
- };
171
- let JsonApi = class JsonApi extends http_1.BaseController {
172
- constructor(Orm) {
173
- super();
174
- this.Orm = Orm;
175
- }
176
- async resolve() {
177
- super.resolve();
178
- this.Middlewares = await di_1.DI.resolve(Array.ofType(middleware_js_1.RepositoryMiddleware));
179
- }
180
- async get(model, id, include, _filters, req) {
181
- await Promise.all(this.Middlewares.map((m) => m.onGetMiddlewareStart(id, req)));
182
- const query = model.SelectQuery.select('*').where(model.Descriptor.PrimaryKey, id);
183
- applyQueryIncludes(include, query);
184
- this.Middlewares.forEach((m) => m.onGetMiddlewareQuery(query, model.Type, req));
185
- const result = await query.firstOrFail();
186
- let jResult = modelToJsonApi(result);
187
- this.Middlewares.forEach((m) => {
188
- jResult = m.onGetMiddlewareResult(jResult, req);
189
- });
190
- return new http_1.Ok(jResult);
191
- }
192
- async getAll(model, page, perPage, order, orderDirection, include, _filters, req) {
193
- await Promise.all(this.Middlewares.map((m) => m.onGetAllMiddlewareStart(req)));
194
- const query = model.SelectQuery.select('*')
195
- .take(perPage)
196
- .skip(page * perPage);
197
- if (order) {
198
- query.order(order, orderDirection ?? 'ASC');
199
- }
200
- applyQueryIncludes(include, query);
201
- this.Middlewares.forEach((m) => m.onGetAllMiddlewareQuery(query, model.Type, req));
202
- const result = await query;
203
- let jResult = modelToJsonApi(result);
204
- this.Middlewares.forEach((m) => {
205
- jResult = m.onGetAllMiddlewareResult(jResult, req);
206
- });
207
- return new http_1.Ok(jResult);
208
- }
209
- async del(model, id, req) {
210
- await Promise.all(this.Middlewares.map((m) => m.onDeleteMiddlewareStart(id, req)));
211
- const entity = await model.SelectQuery.where(model.Descriptor.PrimaryKey, id).firstOrFail();
212
- await entity.destroy();
213
- this.Middlewares.forEach((m) => m.onDeleteMiddlewareResult(req));
214
- return new http_1.Ok();
215
- }
216
- async patch(model, id, incoming, req) {
217
- await Promise.all(this.Middlewares.map((m) => m.onUpdateMiddlewareStart(id, incoming, req)));
218
- const entity = await model.SelectQuery.where(model.Descriptor.PrimaryKey, id).firstOrFail();
219
- await this.updateOneToOneRelations(incoming, model, entity);
220
- if (incoming.data.attributes) {
221
- entity.hydrate(incoming.data.attributes);
222
- }
223
- await entity.update();
224
- await this.updateOneToMany(incoming, model, entity);
225
- let jResult = modelToJsonApi(entity);
226
- this.Middlewares.forEach((m) => {
227
- jResult = m.onUpdateMiddlewareResult(jResult, req);
228
- });
229
- return new http_1.Ok(jResult);
230
- }
231
- async insert(model, incoming, req) {
232
- await Promise.all(this.Middlewares.map((m) => m.onInsertMiddlewareStart(incoming, req)));
233
- const entity = new model.Type();
234
- entity.hydrate(incoming.data.attributes);
235
- await this.updateOneToOneRelations(incoming, model, entity);
236
- await entity.insert();
237
- await this.updateOneToMany(incoming, model, entity);
238
- let jResult = modelToJsonApi(entity);
239
- this.Middlewares.forEach((m) => {
240
- jResult = m.onInsertMiddlewareResult(jResult, req);
241
- });
242
- return new http_1.Ok(jResult);
243
- }
244
- async updateOneToOneRelations(incoming, model, entity) {
245
- // fillout one to one relations if possible
246
- if (incoming.data.relationships) {
247
- for (const key in incoming.data.relationships) {
248
- const relation = model.Descriptor.Relations.get(key);
249
- if (relation.Type === orm_1.RelationType.One) {
250
- entity[relation.ForeignKey] = incoming.data.relationships[key].data.id;
251
- }
252
- }
253
- }
254
- }
255
- async updateOneToMany(incoming, model, entity) {
256
- if (incoming.data.relationships) {
257
- for (const key in incoming.data.relationships) {
258
- const relation = model.Descriptor.Relations.get(key);
259
- if (relation.Type === orm_1.RelationType.Many) {
260
- const rQuery = (0, orm_1.createQuery)(relation.TargetModel, orm_1.UpdateQueryBuilder).query;
261
- await rQuery
262
- .update({
263
- [relation.ForeignKey]: entity.PrimaryKeyValue,
264
- })
265
- .whereIn(relation.PrimaryKey, incoming.data.relationships[key].data.map((x) => x.id));
266
- }
267
- }
268
- }
269
- }
270
- };
271
- __decorate([
272
- (0, http_2.Get)(':model/:id', {
273
- model: modelSchema,
274
- id: PrimaryKeySchema,
275
- include: genericStringSchema,
276
- _filters: genericStringSchema,
277
- }),
278
- __param(0, (0, http_2.Param)()),
279
- __param(1, (0, http_2.Param)()),
280
- __param(2, (0, http_1.Query)()),
281
- __param(3, (0, http_1.Query)()),
282
- __param(4, (0, http_1.Req)()),
283
- __metadata("design:type", Function),
284
- __metadata("design:paramtypes", [Model, Object, Includes, Filters, Object]),
285
- __metadata("design:returntype", Promise)
286
- ], JsonApi.prototype, "get", null);
287
- __decorate([
288
- (0, http_2.Get)(':model', {
289
- model: modelSchema,
290
- include: genericStringSchema,
291
- _filters: genericStringSchema,
292
- }),
293
- __param(0, (0, http_2.Param)()),
294
- __param(1, (0, http_1.Query)()),
295
- __param(2, (0, http_1.Query)()),
296
- __param(3, (0, http_1.Query)()),
297
- __param(4, (0, http_1.Query)()),
298
- __param(5, (0, http_1.Query)()),
299
- __param(6, (0, http_1.Query)()),
300
- __param(7, (0, http_1.Req)()),
301
- __metadata("design:type", Function),
302
- __metadata("design:paramtypes", [Model, Number, Number, String, String, Includes, Filters, Object]),
303
- __metadata("design:returntype", Promise)
304
- ], JsonApi.prototype, "getAll", null);
305
- __decorate([
306
- (0, http_1.Del)(':model/:id', {
307
- model: modelSchema,
308
- id: PrimaryKeySchema,
309
- }),
310
- __param(0, (0, http_2.Param)()),
311
- __param(1, (0, http_2.Param)()),
312
- __param(2, (0, http_1.Req)()),
313
- __metadata("design:type", Function),
314
- __metadata("design:paramtypes", [Model, Object, Object]),
315
- __metadata("design:returntype", Promise)
316
- ], JsonApi.prototype, "del", null);
317
- __decorate([
318
- (0, http_2.Patch)(':model/:id', {
319
- model: modelSchema,
320
- id: PrimaryKeySchema,
321
- }),
322
- __param(0, (0, http_2.Param)()),
323
- __param(1, (0, http_2.Param)()),
324
- __param(2, (0, http_2.Body)()),
325
- __param(3, (0, http_1.Req)()),
326
- __metadata("design:type", Function),
327
- __metadata("design:paramtypes", [Model, Object, interfaces_js_1.JsonApiIncomingObject, Object]),
328
- __metadata("design:returntype", Promise)
329
- ], JsonApi.prototype, "patch", null);
330
- __decorate([
331
- (0, http_1.Post)(':model', {
332
- model: modelSchema,
333
- }),
334
- __param(0, (0, http_2.Param)()),
335
- __param(1, (0, http_2.Body)()),
336
- __param(2, (0, http_1.Req)()),
337
- __metadata("design:type", Function),
338
- __metadata("design:paramtypes", [Model, interfaces_js_1.JsonApiIncomingObject, Object]),
339
- __metadata("design:returntype", Promise)
340
- ], JsonApi.prototype, "insert", null);
341
- JsonApi = __decorate([
342
- (0, http_2.BasePath)('repository'),
343
- (0, di_1.Inject)(orm_1.Orm),
344
- __metadata("design:paramtypes", [orm_1.Orm])
345
- ], JsonApi);
346
- exports.JsonApi = JsonApi;
347
- //# sourceMappingURL=JsonApi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JsonApi.js","sourceRoot":"","sources":["../../../src/controllers/JsonApi.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- declare const ormHttp: {
2
- system: {
3
- dirs: {
4
- controllers: string[];
5
- schemas: string[];
6
- };
7
- };
8
- };
9
- export default ormHttp;
10
- //# sourceMappingURL=orm-http.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orm-http.d.ts","sourceRoot":"","sources":["../../../src/config/orm-http.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,OAAO;;;;;;;CAOZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,14 +0,0 @@
1
- import { join, normalize, resolve } from 'path';
2
- function dir(path) {
3
- return resolve(normalize(join(process.cwd(), path)));
4
- }
5
- const ormHttp = {
6
- system: {
7
- dirs: {
8
- controllers: [dir('./../controllers')],
9
- schemas: [dir('./../schemas')],
10
- },
11
- },
12
- };
13
- export default ormHttp;
14
- //# sourceMappingURL=orm-http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orm-http.js","sourceRoot":"","sources":["../../../src/config/orm-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEhD,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,OAAO,GAAG;IACd,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,WAAW,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACtC,OAAO,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;SAC/B;KACF;CACF,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,37 +0,0 @@
1
- import { Constructor } from '@spinajs/di';
2
- import { BaseController, Ok } from '@spinajs/http';
3
- import { ModelBase, SelectQueryBuilder, Orm, DeleteQueryBuilder, UpdateQueryBuilder, InsertQueryBuilder, IModelDescriptor } from '@spinajs/orm';
4
- import * as express from 'express';
5
- import { RepositoryMiddleware } from '../middleware.js';
6
- import { JsonApiIncomingObject } from '../interfaces.js';
7
- declare class Includes {
8
- Param: string[][];
9
- constructor(Param: string[][]);
10
- }
11
- declare class Filters {
12
- Param: any;
13
- constructor(Param: any);
14
- }
15
- declare class Model {
16
- Type: Constructor<ModelBase>;
17
- Descriptor: IModelDescriptor;
18
- get SelectQuery(): SelectQueryBuilder<ModelBase<unknown>>;
19
- get InserQuery(): InsertQueryBuilder;
20
- get DeleteQuery(): DeleteQueryBuilder<unknown>;
21
- get UpdateQueryBuilder(): UpdateQueryBuilder<unknown>;
22
- }
23
- export declare class JsonApi extends BaseController {
24
- protected Orm: Orm;
25
- protected Middlewares: RepositoryMiddleware[];
26
- constructor(Orm: Orm);
27
- resolve(): Promise<void>;
28
- get(model: Model, id: string | number, include: Includes, _filters: Filters, req: express.Request): Promise<Ok>;
29
- getAll(model: Model, page: number, perPage: number, order: string, orderDirection: 'ASC' | 'DESC', include: Includes, _filters: Filters, req: express.Request): Promise<Ok>;
30
- del(model: Model, id: string | number, req: express.Request): Promise<Ok>;
31
- patch(model: Model, id: string | number, incoming: JsonApiIncomingObject, req: express.Request): Promise<Ok>;
32
- insert(model: Model, incoming: JsonApiIncomingObject, req: express.Request): Promise<Ok>;
33
- protected updateOneToOneRelations(incoming: JsonApiIncomingObject, model: Model, entity: ModelBase): Promise<void>;
34
- protected updateOneToMany(incoming: JsonApiIncomingObject, model: Model, entity: ModelBase): Promise<void>;
35
- }
36
- export {};
37
- //# sourceMappingURL=JsonApi.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JsonApi.d.ts","sourceRoot":"","sources":["../../../src/controllers/JsonApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAc,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,cAAc,EAAyB,EAAE,EAAyB,MAAM,eAAe,CAAC;AAEjG,OAAO,EAA0B,SAAS,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB,EAAe,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAgB,MAAM,cAAc,CAAC;AAEnM,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AA0EzD,cACM,QAAQ;IACO,KAAK,EAAE,MAAM,EAAE,EAAE;gBAAjB,KAAK,EAAE,MAAM,EAAE,EAAE;CACrC;AAED,cACM,OAAO;IACQ,KAAK,EAAE,GAAG;gBAAV,KAAK,EAAE,GAAG;CAC9B;AAED,cACM,KAAK;IACF,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7B,UAAU,EAAE,gBAAgB,CAAC;IAEpC,IAAW,WAAW,2CAErB;IAED,IAAW,UAAU,uBAEpB;IAED,IAAW,WAAW,gCAErB;IAED,IAAW,kBAAkB,gCAE5B;CACF;AA4BD,qBAEa,OAAQ,SAAQ,cAAc;IAG7B,SAAS,CAAC,GAAG,EAAE,GAAG;IAF9B,SAAS,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC;gBAExB,GAAG,EAAE,GAAG;IAIjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxB,GAAG,CAAU,KAAK,EAAE,KAAK,EAAW,EAAE,EAAE,MAAM,GAAG,MAAM,EAAW,OAAO,EAAE,QAAQ,EAAW,QAAQ,EAAE,OAAO,EAAS,GAAG,EAAE,OAAO,CAAC,OAAO;IAuB5I,MAAM,CAAU,KAAK,EAAE,KAAK,EAAW,IAAI,EAAE,MAAM,EAAW,OAAO,EAAE,MAAM,EAAW,KAAK,EAAE,MAAM,EAAW,cAAc,EAAE,KAAK,GAAG,MAAM,EAAW,OAAO,EAAE,QAAQ,EAAW,QAAQ,EAAE,OAAO,EAAS,GAAG,EAAE,OAAO,CAAC,OAAO;IA4BnO,GAAG,CAAU,KAAK,EAAE,KAAK,EAAW,EAAE,EAAE,MAAM,GAAG,MAAM,EAAS,GAAG,EAAE,OAAO,CAAC,OAAO;IAepF,KAAK,CAAU,KAAK,EAAE,KAAK,EAAW,EAAE,EAAE,MAAM,GAAG,MAAM,EAAU,QAAQ,EAAE,qBAAqB,EAAS,GAAG,EAAE,OAAO,CAAC,OAAO;IAyB/H,MAAM,CAAU,KAAK,EAAE,KAAK,EAAU,QAAQ,EAAE,qBAAqB,EAAS,GAAG,EAAE,OAAO,CAAC,OAAO;cAkB/F,uBAAuB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS;cAYxF,eAAe,CAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS;CAkBjG"}