@cardano-sdk/projection-typeorm 0.1.1-nightly.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/LICENSE +201 -0
- package/NOTICE +5 -0
- package/README.md +3 -0
- package/dist/cjs/TypeormStabilityWindowBuffer.d.ts +19 -0
- package/dist/cjs/TypeormStabilityWindowBuffer.d.ts.map +1 -0
- package/dist/cjs/TypeormStabilityWindowBuffer.js +152 -0
- package/dist/cjs/TypeormStabilityWindowBuffer.js.map +1 -0
- package/dist/cjs/createDataSource.d.ts +19 -0
- package/dist/cjs/createDataSource.d.ts.map +1 -0
- package/dist/cjs/createDataSource.js +98 -0
- package/dist/cjs/createDataSource.js.map +1 -0
- package/dist/cjs/createSinks.d.ts +19 -0
- package/dist/cjs/createSinks.d.ts.map +1 -0
- package/dist/cjs/createSinks.js +101 -0
- package/dist/cjs/createSinks.js.map +1 -0
- package/dist/cjs/entity/Block.entity.d.ts +10 -0
- package/dist/cjs/entity/Block.entity.d.ts.map +1 -0
- package/dist/cjs/entity/Block.entity.js +44 -0
- package/dist/cjs/entity/Block.entity.js.map +1 -0
- package/dist/cjs/entity/BlockData.entity.d.ts +8 -0
- package/dist/cjs/entity/BlockData.entity.d.ts.map +1 -0
- package/dist/cjs/entity/BlockData.entity.js +36 -0
- package/dist/cjs/entity/BlockData.entity.js.map +1 -0
- package/dist/cjs/entity/StakeKey.entity.d.ts +5 -0
- package/dist/cjs/entity/StakeKey.entity.d.ts.map +1 -0
- package/dist/cjs/entity/StakeKey.entity.js +25 -0
- package/dist/cjs/entity/StakeKey.entity.js.map +1 -0
- package/dist/cjs/entity/index.d.ts +4 -0
- package/dist/cjs/entity/index.d.ts.map +1 -0
- package/dist/cjs/entity/index.js +20 -0
- package/dist/cjs/entity/index.js.map +1 -0
- package/dist/cjs/entity/transformers.d.ts +5 -0
- package/dist/cjs/entity/transformers.d.ts.map +1 -0
- package/dist/cjs/entity/transformers.js +29 -0
- package/dist/cjs/entity/transformers.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +20 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/logger.d.ts +15 -0
- package/dist/cjs/logger.d.ts.map +1 -0
- package/dist/cjs/logger.js +45 -0
- package/dist/cjs/logger.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/sinks/index.d.ts +2 -0
- package/dist/cjs/sinks/index.d.ts.map +1 -0
- package/dist/cjs/sinks/index.js +6 -0
- package/dist/cjs/sinks/index.js.map +1 -0
- package/dist/cjs/sinks/stakeKeys.sink.d.ts +4 -0
- package/dist/cjs/sinks/stakeKeys.sink.d.ts.map +1 -0
- package/dist/cjs/sinks/stakeKeys.sink.js +15 -0
- package/dist/cjs/sinks/stakeKeys.sink.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/cjs/types.d.ts +14 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/util.d.ts +2 -0
- package/dist/cjs/util.d.ts.map +1 -0
- package/dist/cjs/util.js +25 -0
- package/dist/cjs/util.js.map +1 -0
- package/dist/esm/TypeormStabilityWindowBuffer.d.ts +19 -0
- package/dist/esm/TypeormStabilityWindowBuffer.d.ts.map +1 -0
- package/dist/esm/TypeormStabilityWindowBuffer.js +148 -0
- package/dist/esm/TypeormStabilityWindowBuffer.js.map +1 -0
- package/dist/esm/createDataSource.d.ts +19 -0
- package/dist/esm/createDataSource.d.ts.map +1 -0
- package/dist/esm/createDataSource.js +68 -0
- package/dist/esm/createDataSource.js.map +1 -0
- package/dist/esm/createSinks.d.ts +19 -0
- package/dist/esm/createSinks.d.ts.map +1 -0
- package/dist/esm/createSinks.js +70 -0
- package/dist/esm/createSinks.js.map +1 -0
- package/dist/esm/entity/Block.entity.d.ts +10 -0
- package/dist/esm/entity/Block.entity.d.ts.map +1 -0
- package/dist/esm/entity/Block.entity.js +41 -0
- package/dist/esm/entity/Block.entity.js.map +1 -0
- package/dist/esm/entity/BlockData.entity.d.ts +8 -0
- package/dist/esm/entity/BlockData.entity.d.ts.map +1 -0
- package/dist/esm/entity/BlockData.entity.js +33 -0
- package/dist/esm/entity/BlockData.entity.js.map +1 -0
- package/dist/esm/entity/StakeKey.entity.d.ts +5 -0
- package/dist/esm/entity/StakeKey.entity.d.ts.map +1 -0
- package/dist/esm/entity/StakeKey.entity.js +22 -0
- package/dist/esm/entity/StakeKey.entity.js.map +1 -0
- package/dist/esm/entity/index.d.ts +4 -0
- package/dist/esm/entity/index.d.ts.map +1 -0
- package/dist/esm/entity/index.js +4 -0
- package/dist/esm/entity/index.js.map +1 -0
- package/dist/esm/entity/transformers.d.ts +5 -0
- package/dist/esm/entity/transformers.d.ts.map +1 -0
- package/dist/esm/entity/transformers.js +26 -0
- package/dist/esm/entity/transformers.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/logger.d.ts +15 -0
- package/dist/esm/logger.d.ts.map +1 -0
- package/dist/esm/logger.js +41 -0
- package/dist/esm/logger.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/sinks/index.d.ts +2 -0
- package/dist/esm/sinks/index.d.ts.map +1 -0
- package/dist/esm/sinks/index.js +2 -0
- package/dist/esm/sinks/index.js.map +1 -0
- package/dist/esm/sinks/stakeKeys.sink.d.ts +4 -0
- package/dist/esm/sinks/stakeKeys.sink.d.ts.map +1 -0
- package/dist/esm/sinks/stakeKeys.sink.js +12 -0
- package/dist/esm/sinks/stakeKeys.sink.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/types.d.ts +14 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/util.d.ts +2 -0
- package/dist/esm/util.d.ts.map +1 -0
- package/dist/esm/util.js +21 -0
- package/dist/esm/util.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entity/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../../src/entity/transformers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,eAAO,MAAM,WAAW,EAAE,gBAOzB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,gBAOlB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,gBAO7B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { fromSerializableObject, toSerializableObject } from '@cardano-sdk/util';
|
|
2
|
+
export const stringBytea = {
|
|
3
|
+
from(bytea) {
|
|
4
|
+
return bytea.toString('utf8');
|
|
5
|
+
},
|
|
6
|
+
to(str) {
|
|
7
|
+
return Buffer.from(str, 'utf8');
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
export const json = {
|
|
11
|
+
from(str) {
|
|
12
|
+
return JSON.parse(str);
|
|
13
|
+
},
|
|
14
|
+
to(obj) {
|
|
15
|
+
return JSON.stringify(obj);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
export const serializableObj = {
|
|
19
|
+
from(obj) {
|
|
20
|
+
return fromSerializableObject(obj);
|
|
21
|
+
},
|
|
22
|
+
to(obj) {
|
|
23
|
+
return toSerializableObject(obj);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=transformers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformers.js","sourceRoot":"","sources":["../../../src/entity/transformers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEjF,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,IAAI,CAAC,KAAa;QAChB,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,EAAE,CAAC,GAAW;QACZ,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAqB;IACpC,IAAI,CAAC,GAAW;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,EAAE,CAAC,GAAQ;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,IAAI,CAAC,GAAQ;QACX,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,EAAE,CAAC,GAAQ;QACT,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Logger } from 'ts-log';
|
|
2
|
+
import { QueryRunner, Logger as TypeormLogger } from 'typeorm';
|
|
3
|
+
declare class MappedLogger implements TypeormLogger {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(logger: Logger);
|
|
6
|
+
logQuery(query: string, parameters?: any[] | undefined, _queryRunner?: QueryRunner | undefined): void;
|
|
7
|
+
logQueryError(error: string | Error, query: string, parameters?: any[] | undefined, _queryRunner?: QueryRunner | undefined): void;
|
|
8
|
+
logQuerySlow(time: number, query: string, parameters?: any[] | undefined, _queryRunner?: QueryRunner | undefined): void;
|
|
9
|
+
logSchemaBuild(message: string, _queryRunner?: QueryRunner | undefined): void;
|
|
10
|
+
logMigration(message: string, _queryRunner?: QueryRunner | undefined): void;
|
|
11
|
+
log(level: 'log' | 'info' | 'warn', message: any, _queryRunner?: QueryRunner | undefined): void;
|
|
12
|
+
}
|
|
13
|
+
export declare const typeormLogger: (logger: Logger) => MappedLogger;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAG/D,cAAM,YAAa,YAAW,aAAa;;gBAG7B,MAAM,EAAE,MAAM;IAG1B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,SAAS;IAG9F,aAAa,CACX,KAAK,EAAE,MAAM,GAAG,KAAK,EACrB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,EAC9B,YAAY,CAAC,EAAE,WAAW,GAAG,SAAS;IAIxC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,SAAS;IAGhH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,SAAS;IAGtE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,SAAS;IAGpE,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,SAAS;CAIzF;AAED,eAAO,MAAM,aAAa,WAAY,MAAM,iBAA6B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _MappedLogger_logger;
|
|
13
|
+
import { contextLogger } from '@cardano-sdk/util';
|
|
14
|
+
class MappedLogger {
|
|
15
|
+
constructor(logger) {
|
|
16
|
+
_MappedLogger_logger.set(this, void 0);
|
|
17
|
+
__classPrivateFieldSet(this, _MappedLogger_logger, contextLogger(logger, 'typeorm'), "f");
|
|
18
|
+
}
|
|
19
|
+
logQuery(query, parameters, _queryRunner) {
|
|
20
|
+
__classPrivateFieldGet(this, _MappedLogger_logger, "f").debug('Query', query, parameters);
|
|
21
|
+
}
|
|
22
|
+
logQueryError(error, query, parameters, _queryRunner) {
|
|
23
|
+
__classPrivateFieldGet(this, _MappedLogger_logger, "f").error('QueryError', query, parameters, error);
|
|
24
|
+
}
|
|
25
|
+
logQuerySlow(time, query, parameters, _queryRunner) {
|
|
26
|
+
__classPrivateFieldGet(this, _MappedLogger_logger, "f").warn(`SlowQuery: took ${time}ms`, query, parameters);
|
|
27
|
+
}
|
|
28
|
+
logSchemaBuild(message, _queryRunner) {
|
|
29
|
+
__classPrivateFieldGet(this, _MappedLogger_logger, "f").info('SchemaBuild', message);
|
|
30
|
+
}
|
|
31
|
+
logMigration(message, _queryRunner) {
|
|
32
|
+
__classPrivateFieldGet(this, _MappedLogger_logger, "f").info('Migration', message);
|
|
33
|
+
}
|
|
34
|
+
log(level, message, _queryRunner) {
|
|
35
|
+
const method = level === 'log' ? 'debug' : level;
|
|
36
|
+
__classPrivateFieldGet(this, _MappedLogger_logger, "f")[method](message);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
_MappedLogger_logger = new WeakMap();
|
|
40
|
+
export const typeormLogger = (logger) => new MappedLogger(logger);
|
|
41
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,YAAY;IAGhB,YAAY,MAAc;QAF1B,uCAAgB;QAGd,uBAAA,IAAI,wBAAW,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,MAAA,CAAC;IAClD,CAAC;IACD,QAAQ,CAAC,KAAa,EAAE,UAA8B,EAAE,YAAsC;QAC5F,uBAAA,IAAI,4BAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IACD,aAAa,CACX,KAAqB,EACrB,KAAa,EACb,UAA8B,EAC9B,YAAsC;QAEtC,uBAAA,IAAI,4BAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IACD,YAAY,CAAC,IAAY,EAAE,KAAa,EAAE,UAA8B,EAAE,YAAsC;QAC9G,uBAAA,IAAI,4BAAQ,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IACD,cAAc,CAAC,OAAe,EAAE,YAAsC;QACpE,uBAAA,IAAI,4BAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,YAAY,CAAC,OAAe,EAAE,YAAsC;QAClE,uBAAA,IAAI,4BAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,GAAG,CAAC,KAA8B,EAAE,OAAY,EAAE,YAAsC;QACtF,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QACjD,uBAAA,IAAI,4BAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sinks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sinks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakeKeys.sink.d.ts","sourceRoot":"","sources":["../../../src/sinks/stakeKeys.sink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAQlE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { StakeKeyEntity } from '../entity/StakeKey.entity';
|
|
2
|
+
import { from, map } from 'rxjs';
|
|
3
|
+
export const stakeKeys = {
|
|
4
|
+
entities: [StakeKeyEntity],
|
|
5
|
+
sink({ stakeKeys: { insert, del }, queryRunner }) {
|
|
6
|
+
const repository = queryRunner.manager.getRepository(StakeKeyEntity);
|
|
7
|
+
const createAll = insert.length > 0 ? repository.insert(insert.map((hash) => ({ hash }))) : Promise.resolve();
|
|
8
|
+
const deleteAll = del.length > 0 ? repository.delete(del) : Promise.resolve();
|
|
9
|
+
return from(Promise.all([createAll, deleteAll])).pipe(map(() => void 0));
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=stakeKeys.sink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakeKeys.sink.js","sourceRoot":"","sources":["../../../src/sinks/stakeKeys.sink.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,CAAC,MAAM,SAAS,GAAiD;IACrE,QAAQ,EAAE,CAAC,cAAc,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE;QAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9G,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF,CAAC"}
|