@entropic-bond/firebase 1.12.1 → 1.13.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.
Files changed (48) hide show
  1. package/.firebaserc +5 -0
  2. package/.github/workflows/release.yml +27 -0
  3. package/CHANGELOG.md +331 -0
  4. package/firebase.json +30 -0
  5. package/firestore.indexes.json +4 -0
  6. package/firestore.rules +8 -0
  7. package/functions/package-lock.json +2344 -0
  8. package/functions/package.json +26 -0
  9. package/functions/src/index.ts +33 -0
  10. package/functions/tsconfig.json +19 -0
  11. package/package.json +15 -12
  12. package/src/auth/firebase-auth.spec.ts +90 -0
  13. package/src/auth/firebase-auth.ts +212 -0
  14. package/src/cloud-functions/firebase-cloud-functions.spec.ts +47 -0
  15. package/src/cloud-functions/firebase-cloud-functions.ts +25 -0
  16. package/src/cloud-storage/firebase-cloud-storage.spec.ts +135 -0
  17. package/src/cloud-storage/firebase-cloud-storage.ts +67 -0
  18. package/src/firebase-helper.ts +92 -0
  19. package/src/index.ts +5 -0
  20. package/src/mocks/mock-data.json +148 -0
  21. package/src/mocks/test-user.ts +121 -0
  22. package/src/store/firebase-datasource.spec.ts +555 -0
  23. package/src/store/firebase-datasource.ts +146 -0
  24. package/storage.rules +8 -0
  25. package/tsconfig-build.json +7 -0
  26. package/tsconfig.json +30 -0
  27. package/vite.config.ts +23 -0
  28. package/lib/auth/firebase-auth.d.ts +0 -20
  29. package/lib/auth/firebase-auth.js +0 -186
  30. package/lib/auth/firebase-auth.js.map +0 -1
  31. package/lib/cloud-functions/firebase-cloud-functions.d.ts +0 -7
  32. package/lib/cloud-functions/firebase-cloud-functions.js +0 -26
  33. package/lib/cloud-functions/firebase-cloud-functions.js.map +0 -1
  34. package/lib/cloud-storage/firebase-cloud-storage.d.ts +0 -10
  35. package/lib/cloud-storage/firebase-cloud-storage.js +0 -66
  36. package/lib/cloud-storage/firebase-cloud-storage.js.map +0 -1
  37. package/lib/firebase-helper.d.ts +0 -38
  38. package/lib/firebase-helper.js +0 -57
  39. package/lib/firebase-helper.js.map +0 -1
  40. package/lib/index.d.ts +0 -5
  41. package/lib/index.js +0 -22
  42. package/lib/index.js.map +0 -1
  43. package/lib/mocks/test-user.d.ts +0 -49
  44. package/lib/mocks/test-user.js +0 -134
  45. package/lib/mocks/test-user.js.map +0 -1
  46. package/lib/store/firebase-datasource.d.ts +0 -19
  47. package/lib/store/firebase-datasource.js +0 -115
  48. package/lib/store/firebase-datasource.js.map +0 -1
@@ -1,134 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.DerivedUser = exports.TestUser = exports.SubClass = void 0;
10
- const entropic_bond_1 = require("entropic-bond");
11
- let SubClass = class SubClass extends entropic_bond_1.Persistent {
12
- set year(value) {
13
- this._year = value;
14
- }
15
- get year() {
16
- return this._year;
17
- }
18
- };
19
- exports.SubClass = SubClass;
20
- __decorate([
21
- entropic_bond_1.persistent
22
- ], SubClass.prototype, "_year", void 0);
23
- exports.SubClass = SubClass = __decorate([
24
- (0, entropic_bond_1.registerPersistentClass)('SubClass')
25
- ], SubClass);
26
- let TestUser = class TestUser extends entropic_bond_1.Persistent {
27
- constructor() {
28
- super(...arguments);
29
- this._colleagues = [];
30
- this._manyRefs = [];
31
- }
32
- set name(value) {
33
- this._name = value;
34
- }
35
- get name() {
36
- return this._name;
37
- }
38
- set age(value) {
39
- this._age = value;
40
- }
41
- get age() {
42
- return this._age;
43
- }
44
- set admin(value) {
45
- this._admin = value;
46
- }
47
- get admin() {
48
- return this._admin;
49
- }
50
- set skills(value) {
51
- this._skills = value;
52
- }
53
- get skills() {
54
- return this._skills;
55
- }
56
- set documentRef(value) {
57
- this._documentRef = value;
58
- }
59
- get documentRef() {
60
- return this._documentRef;
61
- }
62
- set manyRefs(value) {
63
- this._manyRefs = value;
64
- }
65
- get manyRefs() {
66
- return this._manyRefs;
67
- }
68
- set derived(value) {
69
- this._derived = value;
70
- }
71
- get derived() {
72
- return this._derived;
73
- }
74
- set manyDerived(value) {
75
- this._manyDerived = value;
76
- }
77
- get manyDerived() {
78
- return this._manyDerived;
79
- }
80
- set colleagues(value) {
81
- this._colleagues = value;
82
- }
83
- get colleagues() {
84
- return this._colleagues;
85
- }
86
- };
87
- exports.TestUser = TestUser;
88
- __decorate([
89
- entropic_bond_1.persistent,
90
- entropic_bond_1.searchableArray
91
- ], TestUser.prototype, "_colleagues", void 0);
92
- __decorate([
93
- entropic_bond_1.persistent
94
- ], TestUser.prototype, "_name", void 0);
95
- __decorate([
96
- entropic_bond_1.persistent
97
- ], TestUser.prototype, "_age", void 0);
98
- __decorate([
99
- entropic_bond_1.persistent
100
- ], TestUser.prototype, "_admin", void 0);
101
- __decorate([
102
- entropic_bond_1.persistent
103
- ], TestUser.prototype, "_skills", void 0);
104
- __decorate([
105
- entropic_bond_1.persistentReference
106
- ], TestUser.prototype, "_documentRef", void 0);
107
- __decorate([
108
- entropic_bond_1.persistentReference
109
- ], TestUser.prototype, "_manyRefs", void 0);
110
- __decorate([
111
- (0, entropic_bond_1.persistentReferenceAt)('TestUser')
112
- ], TestUser.prototype, "_derived", void 0);
113
- __decorate([
114
- (0, entropic_bond_1.persistentReferenceAt)('TestUser')
115
- ], TestUser.prototype, "_manyDerived", void 0);
116
- exports.TestUser = TestUser = __decorate([
117
- (0, entropic_bond_1.registerPersistentClass)('TestUser')
118
- ], TestUser);
119
- let DerivedUser = class DerivedUser extends TestUser {
120
- set salary(value) {
121
- this._salary = value;
122
- }
123
- get salary() {
124
- return this._salary;
125
- }
126
- };
127
- exports.DerivedUser = DerivedUser;
128
- __decorate([
129
- entropic_bond_1.persistent
130
- ], DerivedUser.prototype, "_salary", void 0);
131
- exports.DerivedUser = DerivedUser = __decorate([
132
- (0, entropic_bond_1.registerPersistentClass)('DerivedUser')
133
- ], DerivedUser);
134
- //# sourceMappingURL=test-user.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-user.js","sourceRoot":"","sources":["../../src/mocks/test-user.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { WhereFilterOp } from 'firebase/firestore';
2
- import { Collections, DataSource, DocumentObject, QueryObject, QueryOperator } from 'entropic-bond';
3
- import { EmulatorConfig } from '../firebase-helper';
4
- export declare class FirebaseDatasource extends DataSource {
5
- constructor(emulator?: EmulatorConfig);
6
- findById(id: string, collectionName: string): Promise<DocumentObject>;
7
- save(collections: Collections): Promise<void>;
8
- find(queryObject: QueryObject<DocumentObject>, collectionName: string): Promise<DocumentObject[]>;
9
- count(queryObject: QueryObject<DocumentObject>, collectionName: string): Promise<number>;
10
- delete(id: string, collectionName: string): Promise<void>;
11
- next(maxDocs?: number): Promise<DocumentObject[]>;
12
- private queryObjectToQueryConstraints;
13
- toFirebaseOperator(operator: QueryOperator): WhereFilterOp;
14
- private getFromQuery;
15
- private _lastDocRetrieved;
16
- private _lastConstraints;
17
- private _lastLimit;
18
- private _lastCollectionName;
19
- }
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FirebaseDatasource = void 0;
4
- const firestore_1 = require("firebase/firestore");
5
- const entropic_bond_1 = require("entropic-bond");
6
- const firebase_helper_1 = require("../firebase-helper");
7
- class FirebaseDatasource extends entropic_bond_1.DataSource {
8
- constructor(emulator) {
9
- super();
10
- this._lastLimit = 0;
11
- if (emulator)
12
- firebase_helper_1.FirebaseHelper.useEmulator(emulator);
13
- if (firebase_helper_1.FirebaseHelper.emulator?.emulate) {
14
- const { host, firestorePort } = firebase_helper_1.FirebaseHelper.emulator;
15
- (0, firestore_1.connectFirestoreEmulator)(firebase_helper_1.FirebaseHelper.instance.firestore(), host, firestorePort);
16
- }
17
- }
18
- findById(id, collectionName) {
19
- const db = firebase_helper_1.FirebaseHelper.instance.firestore();
20
- return new Promise(async (resolve) => {
21
- try {
22
- const docSnap = await (0, firestore_1.getDoc)((0, firestore_1.doc)(db, collectionName, id));
23
- resolve(docSnap.data());
24
- }
25
- catch (error) {
26
- console.log(error);
27
- return null;
28
- }
29
- });
30
- }
31
- save(collections) {
32
- const db = firebase_helper_1.FirebaseHelper.instance.firestore();
33
- const batch = (0, firestore_1.writeBatch)(db);
34
- Object.entries(collections).forEach(([collectionName, collection]) => {
35
- collection?.forEach(document => {
36
- const ref = (0, firestore_1.doc)(db, collectionName, document.id);
37
- batch.set(ref, document);
38
- });
39
- });
40
- return batch.commit();
41
- }
42
- find(queryObject, collectionName) {
43
- const query = this.queryObjectToQueryConstraints(queryObject, collectionName);
44
- return this.getFromQuery(query);
45
- }
46
- async count(queryObject, collectionName) {
47
- const query = this.queryObjectToQueryConstraints(queryObject, collectionName);
48
- const snapShot = await (0, firestore_1.getCountFromServer)(query);
49
- return snapShot.data().count;
50
- }
51
- delete(id, collectionName) {
52
- const db = firebase_helper_1.FirebaseHelper.instance.firestore();
53
- return (0, firestore_1.deleteDoc)((0, firestore_1.doc)(db, collectionName, id));
54
- }
55
- next(maxDocs) {
56
- if (!this._lastConstraints || !this._lastCollectionName)
57
- throw new Error('You should perform a query prior to using method next');
58
- const db = firebase_helper_1.FirebaseHelper.instance.firestore();
59
- this._lastLimit = maxDocs || this._lastLimit;
60
- const constraints = this._lastConstraints.nonFilterConstraints.concat((0, firestore_1.limit)(this._lastLimit), (0, firestore_1.startAfter)(this._lastDocRetrieved));
61
- return this.getFromQuery((0, firestore_1.query)((0, firestore_1.collection)(db, this._lastCollectionName), ...constraints));
62
- }
63
- // prev should be used with next in reverse order
64
- // prev( limit?: number ): Promise< DocumentObject[] > {
65
- // }
66
- queryObjectToQueryConstraints(queryObject, collectionName) {
67
- const db = firebase_helper_1.FirebaseHelper.instance.firestore();
68
- const andConstraints = [];
69
- const orConstraints = [];
70
- const nonFilterConstraints = [];
71
- entropic_bond_1.DataSource.toPropertyPathOperations(queryObject.operations).forEach(operation => {
72
- const operator = this.toFirebaseOperator(operation.operator);
73
- if (operation.aggregate)
74
- orConstraints.push((0, firestore_1.where)(operation.property, operator, operation.value));
75
- else
76
- andConstraints.push((0, firestore_1.where)(operation.property, operator, operation.value));
77
- });
78
- if (queryObject.sort?.propertyName) {
79
- nonFilterConstraints.push((0, firestore_1.orderBy)(queryObject.sort.propertyName, queryObject.sort.order));
80
- }
81
- this._lastConstraints = {
82
- orConstraints,
83
- andConstraints,
84
- nonFilterConstraints
85
- };
86
- this._lastCollectionName = collectionName;
87
- if (queryObject.limit) {
88
- this._lastLimit = queryObject.limit;
89
- nonFilterConstraints.push((0, firestore_1.limit)(queryObject.limit));
90
- }
91
- return (0, firestore_1.query)((0, firestore_1.collection)(db, collectionName), (0, firestore_1.or)(...orConstraints, (0, firestore_1.and)(...andConstraints)), ...nonFilterConstraints);
92
- }
93
- toFirebaseOperator(operator) {
94
- switch (operator) {
95
- case '==':
96
- case '!=':
97
- case '<':
98
- case '<=':
99
- case '>':
100
- case '>=': return operator;
101
- case 'contains': return 'array-contains';
102
- case 'containsAny': return 'array-contains-any';
103
- default: return operator;
104
- }
105
- }
106
- getFromQuery(query) {
107
- return new Promise(async (resolve) => {
108
- const doc = await (0, firestore_1.getDocs)(query);
109
- this._lastDocRetrieved = doc.docs[doc.docs.length - 1];
110
- resolve(doc.docs.map(doc => doc.data()));
111
- });
112
- }
113
- }
114
- exports.FirebaseDatasource = FirebaseDatasource;
115
- //# sourceMappingURL=firebase-datasource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"firebase-datasource.js","sourceRoot":"","sources":["../../src/store/firebase-datasource.ts"],"names":[],"mappings":";;;AAAA,kDAA8S;AAC9S,iDAAmG;AACnG,wDAAkF;AAQlF,MAAa,kBAAmB,SAAQ,0BAAU;IACjD,YAAa,QAAyB;QACrC,KAAK,EAAE,CAAA;QAmIA,eAAU,GAAW,CAAC,CAAA;QAlI7B,IAAK,QAAQ;YAAG,gCAAc,CAAC,WAAW,CAAE,QAAQ,CAAE,CAAA;QAEtD,IAAK,gCAAc,CAAC,QAAQ,EAAE,OAAO,EAAG,CAAC;YACxC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAA;YACvD,IAAA,oCAAwB,EAAE,gCAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,CAAE,CAAA;QACrF,CAAC;IACF,CAAC;IAED,QAAQ,CAAE,EAAU,EAAE,cAAsB;QAC3C,MAAM,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAE9C,OAAO,IAAI,OAAO,CAAkB,KAAK,EAAC,OAAO,EAAC,EAAE;YACnD,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAM,EAAE,IAAA,eAAG,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,CAAE,CAAE,CAAA;gBAC7D,OAAO,CAAE,OAAO,CAAC,IAAI,EAAoB,CAAE,CAAA;YAC5C,CAAC;YACD,OAAO,KAAK,EAAG,CAAC;gBACf,OAAO,CAAC,GAAG,CAAE,KAAK,CAAE,CAAA;gBACpB,OAAO,IAAI,CAAA;YACZ,CAAC;QACF,CAAC,CAAC,CAAA;IACH,CAAC;IAED,IAAI,CAAE,WAAwB;QAC7B,MAAM,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC9C,MAAM,KAAK,GAAG,IAAA,sBAAU,EAAE,EAAE,CAAE,CAAA;QAE9B,MAAM,CAAC,OAAO,CAAE,WAAW,CAAE,CAAC,OAAO,CAAC,CAAC,CAAE,cAAc,EAAE,UAAU,CAAE,EAAE,EAAE;YACxE,UAAU,EAAE,OAAO,CAAE,QAAQ,CAAC,EAAE;gBAC9B,MAAM,GAAG,GAAG,IAAA,eAAG,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAE,CAAA;gBAClD,KAAK,CAAC,GAAG,CAAE,GAAG,EAAE,QAAQ,CAAE,CAAA;YAC5B,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,KAAK,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;IAED,IAAI,CAAE,WAAwC,EAAE,cAAsB;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAE,WAAW,EAAE,cAAc,CAAE,CAAA;QAC/E,OAAO,IAAI,CAAC,YAAY,CAAE,KAAK,CAAE,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAE,WAAwC,EAAE,cAAsB;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAE,WAAW,EAAE,cAAc,CAAE,CAAA;QAE/E,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAkB,EAAE,KAAK,CAAE,CAAA;QAClD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;IAC7B,CAAC;IAED,MAAM,CAAE,EAAU,EAAE,cAAsB;QACzC,MAAM,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAE9C,OAAO,IAAA,qBAAS,EAAE,IAAA,eAAG,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,CAAE,CAAE,CAAA;IAClD,CAAC;IAED,IAAI,CAAE,OAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAG,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAElI,MAAM,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC9C,IAAI,CAAC,UAAU,GAAG,OAAO,IAAI,IAAI,CAAC,UAAU,CAAA;QAE5C,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,CACpE,IAAA,iBAAK,EAAE,IAAI,CAAC,UAAU,CAAE,EACxB,IAAA,sBAAU,EAAE,IAAI,CAAC,iBAAiB,CAAE,CACpC,CAAA;QAED,OAAO,IAAI,CAAC,YAAY,CAAE,IAAA,iBAAK,EAAE,IAAA,sBAAU,EAAE,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAE,EAAE,GAAG,WAAW,CAAE,CAAE,CAAA;IAChG,CAAC;IAED,iDAAiD;IACjD,wDAAwD;IACxD,IAAI;IAEI,6BAA6B,CAAE,WAAwC,EAAE,cAAsB;QACtG,MAAM,EAAE,GAAG,gCAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC9C,MAAM,cAAc,GAAiC,EAAE,CAAA;QACvD,MAAM,aAAa,GAAiC,EAAE,CAAA;QACtD,MAAM,oBAAoB,GAA+B,EAAE,CAAA;QAE3D,0BAAU,CAAC,wBAAwB,CAAE,WAAW,CAAC,UAAiB,CAAE,CAAC,OAAO,CAAE,SAAS,CAAC,EAAE;YACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAE,SAAS,CAAC,QAAQ,CAAE,CAAA;YAC9D,IAAK,SAAS,CAAC,SAAS;gBAAG,aAAa,CAAC,IAAI,CAAE,IAAA,iBAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAE,CAAE,CAAA;;gBAClG,cAAc,CAAC,IAAI,CAAE,IAAA,iBAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAE,CAAE,CAAA;QACnF,CAAC,CAAC,CAAA;QAEF,IAAK,WAAW,CAAC,IAAI,EAAE,YAAY,EAAG,CAAC;YACtC,oBAAoB,CAAC,IAAI,CAAE,IAAA,mBAAO,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAE,CAAE,CAAA;QAC9F,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG;YACvB,aAAa;YACb,cAAc;YACd,oBAAoB;SACpB,CAAA;QAED,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAA;QAEzC,IAAI,WAAW,CAAC,KAAK,EAAG,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,KAAK,CAAA;YACnC,oBAAoB,CAAC,IAAI,CAAE,IAAA,iBAAK,EAAE,WAAW,CAAC,KAAK,CAAE,CAAE,CAAA;QACxD,CAAC;QAED,OAAO,IAAA,iBAAK,EAAE,IAAA,sBAAU,EAAE,EAAE,EAAE,cAAc,CAAE,EAAE,IAAA,cAAE,EAAE,GAAG,aAAa,EAAE,IAAA,eAAG,EAAE,GAAG,cAAc,CAAE,CAAE,EAAE,GAAG,oBAAoB,CAAE,CAAA;IAC5H,CAAC;IAED,kBAAkB,CAAE,QAAuB;QAC1C,QAAQ,QAAQ,EAAG,CAAC;YACnB,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,GAAG,CAAC;YACT,KAAK,IAAI,CAAC;YACV,KAAK,GAAG,CAAC;YACT,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAA;YAC1B,KAAK,UAAU,CAAC,CAAC,OAAO,gBAAgB,CAAA;YACxC,KAAK,aAAa,CAAC,CAAC,OAAO,oBAAoB,CAAA;YAC/C,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAA;QACzB,CAAC;IACF,CAAC;IAEO,YAAY,CAAE,KAAoB;QACzC,OAAO,IAAI,OAAO,CAAsB,KAAK,EAAC,OAAO,EAAC,EAAE;YACvD,MAAM,GAAG,GAAG,MAAM,IAAA,mBAAO,EAAE,KAAK,CAAE,CAAA;YAClC,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAE,GAAG,CAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAE,CAAA;YAEtD,OAAO,CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAoB,CAAE,CAAE,CAAA;QAC/D,CAAC,CAAC,CAAA;IACH,CAAC;CAMD;AAvID,gDAuIC"}