@steroidsjs/nest 3.0.2 → 3.1.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.
- package/infrastructure/applications/rest/RestApplication.js +1 -0
- package/infrastructure/applications/rest/RestApplication.js.map +1 -1
- package/infrastructure/decorators/fields/ExtendField.js +1 -1
- package/infrastructure/decorators/fields/ExtendField.js.map +1 -1
- package/infrastructure/repositories/CrudRepository.d.ts +5 -5
- package/infrastructure/repositories/CrudRepository.js +6 -7
- package/infrastructure/repositories/CrudRepository.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/usecases/exceptions/ClassValidatorException.d.ts +5 -0
- package/usecases/exceptions/ClassValidatorException.js +10 -0
- package/usecases/exceptions/ClassValidatorException.js.map +1 -0
- package/usecases/helpers/ValidationHelper.d.ts +1 -0
- package/usecases/helpers/ValidationHelper.js +57 -6
- package/usecases/helpers/ValidationHelper.js.map +1 -1
- package/usecases/interfaces/ICrudRepository.d.ts +4 -3
- package/usecases/interfaces/ISaveManager.d.ts +2 -2
- package/usecases/services/CrudService.d.ts +1 -1
- package/usecases/services/CrudService.js +7 -6
- package/usecases/services/CrudService.js.map +1 -1
- package/usecases/validators/Validator.d.ts +5 -5
- package/usecases/validators/Validator.js +16 -8
- package/usecases/validators/Validator.js.map +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClassValidatorException = void 0;
|
|
4
|
+
class ClassValidatorException {
|
|
5
|
+
constructor(params) {
|
|
6
|
+
this.params = params;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.ClassValidatorException = ClassValidatorException;
|
|
10
|
+
//# sourceMappingURL=ClassValidatorException.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassValidatorException.js","sourceRoot":"","sources":["../../../src/usecases/exceptions/ClassValidatorException.ts"],"names":[],"mappings":";;;AAEA,MAAa,uBAAuB;IAGhC,YAAY,MAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CACJ;AAND,0DAMC"}
|
|
@@ -34,5 +34,6 @@ export declare class ValidationHelper {
|
|
|
34
34
|
*/
|
|
35
35
|
static getSteroidsErrors(dto: any, params?: IValidatorParams, validatorsInstances?: IValidator[]): Promise<IErrorsCompositeObject | null>;
|
|
36
36
|
protected static getSteroidsFieldValidatorsErrors(dto: any, key: string, params: IValidatorParams, validatorsInstances: IValidator[]): Promise<string[]>;
|
|
37
|
+
protected static getSteroidsClassValidatorsErrors(dto: any, params: IValidatorParams, validatorsInstances: IValidator[]): Promise<IErrorsCompositeObject>;
|
|
37
38
|
static parseClassValidatorErrors(errors: ValidationError[]): IErrorsCompositeObject;
|
|
38
39
|
}
|
|
@@ -7,10 +7,23 @@ const exceptions_1 = require("../exceptions");
|
|
|
7
7
|
const FieldValidatorException_1 = require("../exceptions/FieldValidatorException");
|
|
8
8
|
const BaseField_1 = require("../../infrastructure/decorators/fields/BaseField");
|
|
9
9
|
const Validator_1 = require("../validators/Validator");
|
|
10
|
+
const ClassValidatorException_1 = require("../exceptions/ClassValidatorException");
|
|
10
11
|
const defaultValidatorOptions = {
|
|
11
12
|
whitelist: false,
|
|
12
13
|
forbidUnknownValues: false,
|
|
13
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Merge two objects of IErrorsCompositeObject into one, the fields with arrays are merged, not rewritten
|
|
17
|
+
* @param object
|
|
18
|
+
* @param source
|
|
19
|
+
*/
|
|
20
|
+
function mergeErrorsCompositeObjects(object, source) {
|
|
21
|
+
return (0, lodash_1.mergeWith)(object, source, (objValue, srcValue) => {
|
|
22
|
+
if (Array.isArray(objValue)) {
|
|
23
|
+
return objValue.concat(srcValue);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
14
27
|
/**
|
|
15
28
|
* @deprecated Use ValidationHelper.validate()
|
|
16
29
|
* @throws {ValidationException}
|
|
@@ -41,11 +54,7 @@ class ValidationHelper {
|
|
|
41
54
|
var _a;
|
|
42
55
|
const classValidatorErrors = await this.getClassValidatorErrors(dto);
|
|
43
56
|
const steroidsValidatorsErrors = await this.getSteroidsErrors(dto, params, allValidators);
|
|
44
|
-
const errors = (
|
|
45
|
-
if (Array.isArray(objValue)) {
|
|
46
|
-
return objValue.concat(srcValue);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
57
|
+
const errors = mergeErrorsCompositeObjects(classValidatorErrors, steroidsValidatorsErrors);
|
|
49
58
|
if (errors && ((_a = Object.keys(errors)) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
50
59
|
throw new exceptions_1.ValidationException(errors);
|
|
51
60
|
}
|
|
@@ -101,6 +110,10 @@ class ValidationHelper {
|
|
|
101
110
|
errors[key] = fieldValidatorsErrors;
|
|
102
111
|
}
|
|
103
112
|
}
|
|
113
|
+
const classValidatorsErrors = await this.getSteroidsClassValidatorsErrors(dto, params, validatorsInstances);
|
|
114
|
+
if (Object.keys(classValidatorsErrors).length > 0) {
|
|
115
|
+
return mergeErrorsCompositeObjects(errors, classValidatorsErrors);
|
|
116
|
+
}
|
|
104
117
|
// Has errors?
|
|
105
118
|
if (Object.keys(errors).length > 0) {
|
|
106
119
|
return errors;
|
|
@@ -110,7 +123,7 @@ class ValidationHelper {
|
|
|
110
123
|
static async getSteroidsFieldValidatorsErrors(dto, key, params, validatorsInstances) {
|
|
111
124
|
let fieldValidatorErrors = [];
|
|
112
125
|
// Get field validators
|
|
113
|
-
const fieldValidators = (0, Validator_1.
|
|
126
|
+
const fieldValidators = (0, Validator_1.getValidators)(dto.constructor, key);
|
|
114
127
|
for (const fieldValidator of fieldValidators) {
|
|
115
128
|
try {
|
|
116
129
|
// Find validator instance
|
|
@@ -145,6 +158,44 @@ class ValidationHelper {
|
|
|
145
158
|
}
|
|
146
159
|
return fieldValidatorErrors;
|
|
147
160
|
}
|
|
161
|
+
static async getSteroidsClassValidatorsErrors(dto, params, validatorsInstances) {
|
|
162
|
+
let classValidatorErrors = {};
|
|
163
|
+
// Get class validators
|
|
164
|
+
const classValidators = (0, Validator_1.getValidators)(dto.constructor);
|
|
165
|
+
for (const classValidator of classValidators) {
|
|
166
|
+
try {
|
|
167
|
+
// Find validator instance
|
|
168
|
+
const validator = (validatorsInstances || []).find(item => {
|
|
169
|
+
try {
|
|
170
|
+
return item instanceof classValidator;
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
if (!validator && typeof classValidator === 'function') {
|
|
177
|
+
await classValidator(dto, params);
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
if (!validator) {
|
|
181
|
+
throw new Error(`Not found validator instance for "${dto.constructor.name}"`
|
|
182
|
+
+ ' Please add it to CrudService.validators array.');
|
|
183
|
+
}
|
|
184
|
+
// Run validator
|
|
185
|
+
await validator.validate(dto, params);
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
// Check validator is throw specific exception
|
|
189
|
+
if (error instanceof ClassValidatorException_1.ClassValidatorException) {
|
|
190
|
+
classValidatorErrors = mergeErrorsCompositeObjects(classValidatorErrors, error.params);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
throw error;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return classValidatorErrors;
|
|
198
|
+
}
|
|
148
199
|
static parseClassValidatorErrors(errors) {
|
|
149
200
|
var _a;
|
|
150
201
|
if (!Array.isArray(errors)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationHelper.js","sourceRoot":"","sources":["../../../src/usecases/helpers/ValidationHelper.ts"],"names":[],"mappings":";;;AAAA,mCAAsE;AACtE,qDAA4E;AAC5E,8CAAkD;AAElD,mFAA8E;AAC9E,gFAA4F;AAC5F,
|
|
1
|
+
{"version":3,"file":"ValidationHelper.js","sourceRoot":"","sources":["../../../src/usecases/helpers/ValidationHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,15 @@ import { SearchResultDto } from '../dtos/SearchResultDto';
|
|
|
2
2
|
import { SearchInputDto } from '../dtos/SearchInputDto';
|
|
3
3
|
import SearchQuery, { ISearchQueryConfig } from '../base/SearchQuery';
|
|
4
4
|
import { ICondition } from '../../infrastructure/helpers/typeORM/ConditionHelperTypeORM';
|
|
5
|
+
export type TransactionHandler<TModel> = (callback: () => Promise<TModel>) => Promise<TModel>;
|
|
5
6
|
export interface ICrudRepository<TModel> {
|
|
6
7
|
search: <TItem>(dto: SearchInputDto, searchQuery: SearchQuery<TModel>) => Promise<SearchResultDto<TModel | TItem>>;
|
|
7
8
|
findOne: (conditionOrQuery: ICondition | SearchQuery<TModel>, eagerLoading?: boolean) => Promise<TModel | null>;
|
|
8
9
|
findMany: (conditionOrQuery: ICondition | SearchQuery<TModel>, eagerLoading?: boolean) => Promise<TModel[]>;
|
|
9
|
-
create: (model: TModel, transactionHandler?:
|
|
10
|
+
create: (model: TModel, transactionHandler?: TransactionHandler<TModel>) => Promise<TModel>;
|
|
10
11
|
createQuery: (config?: ISearchQueryConfig<TModel>) => SearchQuery<TModel>;
|
|
11
12
|
remove: (id: number, transactionHandler?: (callback: any) => Promise<void>) => Promise<void>;
|
|
12
|
-
save: (model: TModel, transactionHandler?:
|
|
13
|
+
save: (model: TModel, transactionHandler?: TransactionHandler<TModel>) => Promise<TModel>;
|
|
13
14
|
softRemove: (id: number, transactionHandler?: (callback: () => Promise<void>) => Promise<void>) => Promise<void>;
|
|
14
|
-
update: (id: number, model: TModel, transactionHandler?:
|
|
15
|
+
update: (id: number, model: TModel, transactionHandler?: TransactionHandler<TModel>) => Promise<TModel>;
|
|
15
16
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export interface ISaveManager {
|
|
2
|
-
save: (model: any) => Promise<
|
|
1
|
+
export interface ISaveManager<TModel> {
|
|
2
|
+
save: (model: any) => Promise<TModel>;
|
|
3
3
|
}
|
|
@@ -22,7 +22,7 @@ TSaveDto = TModel> extends ReadService<TModel, TSearchDto> {
|
|
|
22
22
|
* @param diffModel
|
|
23
23
|
* @param context
|
|
24
24
|
*/
|
|
25
|
-
saveInternal(prevModel: TModel | null, nextModel: TModel, diffModel: TModel, context?: ContextDto): Promise<
|
|
25
|
+
saveInternal(prevModel: TModel | null, nextModel: TModel, diffModel: TModel, context?: ContextDto): Promise<TModel>;
|
|
26
26
|
checkHasRelatedModels(id: string | number, service: CrudService<any>): Promise<void>;
|
|
27
27
|
/**
|
|
28
28
|
* Remove model
|
|
@@ -84,11 +84,11 @@ class CrudService extends ReadService_1.ReadService {
|
|
|
84
84
|
context,
|
|
85
85
|
});
|
|
86
86
|
// Save
|
|
87
|
-
await this.saveInternal(prevModel, nextModel, diffModel, context);
|
|
87
|
+
const savedModel = await this.saveInternal(prevModel, nextModel, diffModel, context);
|
|
88
88
|
// Convert to schema, if need
|
|
89
89
|
return schemaClass
|
|
90
|
-
? this.findById(
|
|
91
|
-
:
|
|
90
|
+
? this.findById(savedModel[this.primaryKey], context, schemaClass)
|
|
91
|
+
: savedModel;
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
94
|
* Internal save method for overwrite in project
|
|
@@ -99,14 +99,15 @@ class CrudService extends ReadService_1.ReadService {
|
|
|
99
99
|
*/
|
|
100
100
|
async saveInternal(prevModel, nextModel, diffModel, context) {
|
|
101
101
|
// you code outside transaction before save
|
|
102
|
-
//
|
|
102
|
+
// return this.repository.save(diffModel, async (save) => {
|
|
103
103
|
// you code inside transaction before save
|
|
104
|
-
//
|
|
104
|
+
// const savedModel = save();
|
|
105
105
|
// you code inside transaction after save
|
|
106
|
+
// return savedModel;
|
|
106
107
|
// });
|
|
107
108
|
// you code outside transaction after save
|
|
108
109
|
// or save() call without transaction
|
|
109
|
-
|
|
110
|
+
return this.repository.save(diffModel);
|
|
110
111
|
}
|
|
111
112
|
async checkHasRelatedModels(id, service) {
|
|
112
113
|
const relations = (0, BaseField_1.getRelationsByFilter)(this.modelClass, (relation) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrudService.js","sourceRoot":"","sources":["../../../src/usecases/services/CrudService.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAE/C,sDAAiD;AAEjD,qDAA8C;AAE9C,gFAAwG;AACxG,0EAAqE;AACrE,8CAA4C;AAC5C,+CAA0C;AAG1C;;GAEG;AACH,MAAa,WAKX,SAAQ,yBAA+B;IASrC;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CACR,GAAwB,EACxB,UAAsB,IAAI,EAC1B,cAA8B,IAAI;QAElC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IAUD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CACR,KAAsB,EACtB,GAAwB,EACxB,UAAsB,IAAI,EAC1B,cAA8B,IAAI;QAElC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAUD;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI,CACN,KAA6B,EAC7B,GAAwB,EACxB,UAAsB,IAAI,EAC1B,cAA8B,IAAI;QAElC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;SACnE;QAED,MAAM,EAAE,GAAW,KAAK,CAAC,CAAC,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpD,6BAA6B;QAC7B,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,EAAE,EAAE;YACJ,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;iBAC/B,IAAI,CAAC,IAAA,4BAAgB,EAAC,GAAG,CAAC,WAAW,CAAC,CAAC;iBACvC,KAAK,CAAC,EAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAC,CAAC;iBAC9B,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;aACnD;SACJ;QAED,0BAA0B;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;QAEnC,qDAAqD;QACrD,IAAI,SAAS,EAAE;YACX,uBAAU,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;SAChD;QAED,8BAA8B;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAEvC,mEAAmE;QACnE,IAAI,EAAE,EAAE;YACJ,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;SACnC;QAED,6BAA6B;QAC7B,uBAAU,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAE7C,eAAe;QACf,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACrB,SAAS;YACT,SAAS;YACT,OAAO;SACV,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC3B,SAAS;YACT,SAAS;YACT,OAAO;SACV,CAAC,CAAC;QAEH,OAAO;QACP,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CrudService.js","sourceRoot":"","sources":["../../../src/usecases/services/CrudService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IValidatorParams } from '../interfaces/IValidator';
|
|
1
|
+
import { IValidator, IValidatorParams } from '../interfaces/IValidator';
|
|
2
|
+
import { IType } from '../interfaces/IType';
|
|
2
3
|
export declare const STEROIDS_META_VALIDATORS = "steroids_meta_validators";
|
|
3
|
-
type
|
|
4
|
-
export declare const
|
|
5
|
-
export declare function Validator(validatorInstance:
|
|
6
|
-
export {};
|
|
4
|
+
export type ValidateFunctionType = (dto: any, params?: IValidatorParams) => Promise<void> | void;
|
|
5
|
+
export declare const getValidators: (MetaClass: any, fieldName?: string) => any;
|
|
6
|
+
export declare function Validator(validatorInstance: ValidateFunctionType | IType<IValidator>): (target: any, fieldName?: string) => void;
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Validator = exports.
|
|
3
|
+
exports.Validator = exports.getValidators = exports.STEROIDS_META_VALIDATORS = void 0;
|
|
4
4
|
exports.STEROIDS_META_VALIDATORS = 'steroids_meta_validators';
|
|
5
|
-
const
|
|
6
|
-
|
|
5
|
+
const getValidators = (MetaClass, fieldName) => {
|
|
6
|
+
const metadataParams = fieldName
|
|
7
|
+
? [exports.STEROIDS_META_VALIDATORS, MetaClass.prototype, fieldName]
|
|
8
|
+
: [exports.STEROIDS_META_VALIDATORS, MetaClass];
|
|
9
|
+
return Reflect.getMetadata(...metadataParams) || [];
|
|
7
10
|
};
|
|
8
|
-
exports.
|
|
11
|
+
exports.getValidators = getValidators;
|
|
9
12
|
function Validator(validatorInstance) {
|
|
10
|
-
return (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
return (target, fieldName) => {
|
|
14
|
+
const getMetadataParams = fieldName
|
|
15
|
+
? [exports.STEROIDS_META_VALIDATORS, target, fieldName]
|
|
16
|
+
: [exports.STEROIDS_META_VALIDATORS, target];
|
|
17
|
+
const validators = Reflect.getMetadata(...getMetadataParams) || [];
|
|
13
18
|
if (!validators.includes(validatorInstance)) {
|
|
14
19
|
validators.push(validatorInstance);
|
|
15
20
|
}
|
|
16
|
-
|
|
21
|
+
const defineMetadataParams = fieldName
|
|
22
|
+
? [exports.STEROIDS_META_VALIDATORS, validators, target, fieldName]
|
|
23
|
+
: [exports.STEROIDS_META_VALIDATORS, validators, target];
|
|
24
|
+
Reflect.defineMetadata(...defineMetadataParams);
|
|
17
25
|
};
|
|
18
26
|
}
|
|
19
27
|
exports.Validator = Validator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../../src/usecases/validators/Validator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../../src/usecases/validators/Validator.ts"],"names":[],"mappings":";;;AAGa,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AAI5D,MAAM,aAAa,GAAG,CAAC,SAAc,EAAE,SAAkB,EAAE,EAAE;IAChE,MAAM,cAAc,GAA2B,SAAS;QACpD,CAAC,CAAC,CAAC,gCAAwB,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;QAC5D,CAAC,CAAC,CAAC,gCAAwB,EAAE,SAAS,CAAC,CAAC;IAE5C,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;AACxD,CAAC,CAAA;AANY,QAAA,aAAa,iBAMzB;AAED,SAAgB,SAAS,CAAC,iBAA2D;IACjF,OAAO,CAAC,MAAW,EAAE,SAAkB,EAAE,EAAE;QACvC,MAAM,iBAAiB,GAA2B,SAAS;YACvD,CAAC,CAAC,CAAC,gCAAwB,EAAE,MAAM,EAAE,SAAS,CAAC;YAC/C,CAAC,CAAC,CAAC,gCAAwB,EAAE,MAAM,CAAC,CAAC;QAEzC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAEnE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YACzC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACtC;QAED,MAAM,oBAAoB,GAAgC,SAAS;YAC/D,CAAC,CAAC,CAAC,gCAAwB,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC;YAC3D,CAAC,CAAC,CAAC,gCAAwB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAErD,OAAO,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACpD,CAAC,CAAC;AACN,CAAC;AAlBD,8BAkBC"}
|