@goatlab/fluent-firebase 0.8.3 → 0.9.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.
@@ -16,6 +16,8 @@ export declare class FirebaseConnector<ModelDTO extends admin.firestore.Document
16
16
  private collection;
17
17
  private readonly entity;
18
18
  constructor({ entity, inputSchema, outputSchema }: FirebaseConnectorParams<InputDTO, OutputDTO>);
19
+ private _initialized;
20
+ private _relationshipBuilder;
19
21
  initDB(): number;
20
22
  /**
21
23
  * Insert the data object into the database.
@@ -21,8 +21,13 @@ class FirebaseConnector extends fluent_2.BaseConnector {
21
21
  outputSchema || inputSchema;
22
22
  this.entity = entity;
23
23
  }
24
+ _initialized = false;
25
+ _relationshipBuilder;
24
26
  initDB() {
27
+ if (this._initialized)
28
+ return 1;
25
29
  const relationShipBuilder = fluent_1.modelGeneratorDataSource.getRepository(this.entity);
30
+ this._relationshipBuilder = relationShipBuilder;
26
31
  const name = relationShipBuilder.metadata.givenTableName;
27
32
  if (!name) {
28
33
  throw new Error(`Could not find table by name. Did you include @f.entity in your model?`);
@@ -33,6 +38,7 @@ class FirebaseConnector extends fluent_2.BaseConnector {
33
38
  const { relations } = (0, fluent_1.getRelationsFromModelGenerator)(relationShipBuilder);
34
39
  this.modelRelations = relations;
35
40
  this.outputKeys = (0, fluent_2.getOutputKeys)(relationShipBuilder) || [];
41
+ this._initialized = true;
36
42
  return 1;
37
43
  }
38
44
  // CREATE
@@ -63,18 +69,28 @@ class FirebaseConnector extends fluent_2.BaseConnector {
63
69
  this.initDB();
64
70
  const validatedData = this.inputSchema.array().parse(data);
65
71
  const batch = admin.firestore().batch();
66
- const batchInserted = [];
67
- validatedData.forEach(d => {
72
+ // Pre-allocate array for better performance
73
+ const dataLength = validatedData.length;
74
+ const batchInserted = new Array(dataLength);
75
+ for (let i = 0; i < dataLength; i++) {
76
+ const d = validatedData[i];
77
+ if (!d)
78
+ continue;
68
79
  const id = d['id'] || js_utils_1.Ids.uuid();
69
80
  const item = { id, ...d };
70
- const insert = this.collection.doc(id);
71
- batch.set(insert, item);
72
- batchInserted.push(item);
73
- });
81
+ batch.set(this.collection.doc(id), item);
82
+ batchInserted[i] = item;
83
+ }
74
84
  await batch.commit();
75
- return this.outputSchema.array().parse(batchInserted.map(d => {
76
- return js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(d));
77
- }));
85
+ const resultLength = batchInserted.length;
86
+ const cleanedResults = new Array(resultLength);
87
+ for (let i = 0; i < resultLength; i++) {
88
+ const item = batchInserted[i];
89
+ if (item) {
90
+ cleanedResults[i] = js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(item));
91
+ }
92
+ }
93
+ return this.outputSchema.array().parse(cleanedResults);
78
94
  }
79
95
  // READ
80
96
  async findMany(query) {
@@ -83,40 +99,88 @@ class FirebaseConnector extends fluent_2.BaseConnector {
83
99
  const results = [];
84
100
  if (andQuery) {
85
101
  const snapshot = await andQuery.get();
86
- snapshot.forEach(doc => {
87
- results.push(doc.data());
88
- });
89
- }
90
- const promises = [];
91
- for (const orQuery of orQueries) {
92
- promises.push(orQuery.get());
102
+ const docs = snapshot.docs;
103
+ const docLength = docs.length;
104
+ // Pre-allocate space for better performance
105
+ const startIdx = results.length;
106
+ results.length = startIdx + docLength;
107
+ for (let i = 0; i < docLength; i++) {
108
+ const doc = docs[i];
109
+ if (doc) {
110
+ results[startIdx + i] = doc.data();
111
+ }
112
+ }
93
113
  }
94
- const orSnapshots = await Promise.all(promises);
95
- for (const orSnapshot of orSnapshots) {
96
- orSnapshot.forEach(doc => {
97
- results.push(doc.data());
98
- });
114
+ // Execute OR queries in parallel if there are any
115
+ if (orQueries.length > 0) {
116
+ const orSnapshots = await Promise.all(orQueries.map(q => q.get()));
117
+ // Count total docs for pre-allocation
118
+ let totalOrDocs = 0;
119
+ for (let i = 0; i < orSnapshots.length; i++) {
120
+ const snapshot = orSnapshots[i];
121
+ if (snapshot) {
122
+ totalOrDocs += snapshot.docs.length;
123
+ }
124
+ }
125
+ // Pre-allocate space
126
+ const startIdx = results.length;
127
+ results.length = startIdx + totalOrDocs;
128
+ let currentIdx = startIdx;
129
+ for (let i = 0; i < orSnapshots.length; i++) {
130
+ const orSnapshot = orSnapshots[i];
131
+ if (!orSnapshot)
132
+ continue;
133
+ const docs = orSnapshot.docs;
134
+ const docLength = docs.length;
135
+ for (let j = 0; j < docLength; j++) {
136
+ const doc = docs[j];
137
+ if (doc) {
138
+ results[currentIdx++] = doc.data();
139
+ }
140
+ }
141
+ }
99
142
  }
100
143
  // As there might be duplicated results from the queries,
101
- // we will deduplicate by ID
102
- let found = [...new Map(results.map(v => [v.id, v])).values()];
103
- found.map(d => {
104
- js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(d));
105
- });
144
+ // we will deduplicate by ID using a more efficient approach
145
+ let found;
146
+ if (results.length > 0) {
147
+ const dedupeMap = new Map();
148
+ const resultsLength = results.length;
149
+ for (let i = 0; i < resultsLength; i++) {
150
+ const item = results[i];
151
+ if (item && !dedupeMap.has(item.id)) {
152
+ dedupeMap.set(item.id, item);
153
+ }
154
+ }
155
+ found = Array.from(dedupeMap.values());
156
+ }
157
+ else {
158
+ found = [];
159
+ }
160
+ // Process data cleaning in-place
161
+ const foundLength = found.length;
162
+ for (let i = 0; i < foundLength; i++) {
163
+ const item = found[i];
164
+ if (item) {
165
+ js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(item));
166
+ }
167
+ }
106
168
  if (query?.include) {
107
- found = await this.loadRelatedData(found, js_utils_1.Objects.flatten(query?.include || {}));
169
+ found = await this.loadRelatedData(found, js_utils_1.Objects.flatten(query.include));
108
170
  }
109
171
  if (query?.paginated) {
172
+ const perPage = query.paginated.perPage;
173
+ const page = query.paginated.page;
110
174
  const paginationInfo = {
111
175
  total: 0,
112
- perPage: query.paginated.perPage,
113
- currentPage: query.paginated.page,
114
- nextPage: query.paginated.page + 1,
176
+ perPage,
177
+ currentPage: page,
178
+ nextPage: page + 1,
115
179
  firstPage: 1,
116
- lastPage: Math.ceil(0 / query.paginated.perPage),
117
- prevPage: query.paginated.page === 1 ? null : query.paginated.page - 1,
118
- from: (query.paginated.page - 1) * query.paginated.perPage + 1,
119
- to: query.paginated.perPage * query.paginated.page,
180
+ lastPage: Math.ceil(0 / perPage),
181
+ prevPage: page === 1 ? null : page - 1,
182
+ from: (page - 1) * perPage + 1,
183
+ to: perPage * page,
120
184
  data: found
121
185
  };
122
186
  return paginationInfo;
@@ -138,7 +202,7 @@ class FirebaseConnector extends fluent_2.BaseConnector {
138
202
  const dataToInsert = this.outputKeys.includes('updated')
139
203
  ? {
140
204
  ...data,
141
- ...{ updated: new Date() }
205
+ updated: new Date()
142
206
  }
143
207
  : data;
144
208
  const validatedData = this.inputSchema.parse(dataToInsert);
@@ -164,10 +228,19 @@ class FirebaseConnector extends fluent_2.BaseConnector {
164
228
  async replaceById(id, data) {
165
229
  this.initDB();
166
230
  const value = await this.findById(id);
167
- const flatValue = js_utils_1.Objects.flatten(JSON.parse(JSON.stringify(value)));
168
- Object.keys(flatValue).forEach(key => {
169
- flatValue[key] = null;
170
- });
231
+ // Avoid JSON parse/stringify overhead - use structured clone if available
232
+ const clonedValue = typeof structuredClone !== 'undefined' ? structuredClone(value) : JSON.parse(JSON.stringify(value));
233
+ const flatValue = js_utils_1.Objects.flatten(clonedValue);
234
+ const keys = Object.keys(flatValue);
235
+ const keysLength = keys.length;
236
+ // Use a more efficient nullification approach
237
+ const nullValue = null;
238
+ for (let i = 0; i < keysLength; i++) {
239
+ const key = keys[i];
240
+ if (key) {
241
+ flatValue[key] = nullValue;
242
+ }
243
+ }
171
244
  const nullObject = js_utils_1.Objects.nest(flatValue);
172
245
  const newValue = { ...nullObject, ...data };
173
246
  delete newValue._id;
@@ -177,7 +250,7 @@ class FirebaseConnector extends fluent_2.BaseConnector {
177
250
  const dataToInsert = this.outputKeys.includes('updated')
178
251
  ? {
179
252
  ...data,
180
- ...{ updated: new Date() }
253
+ updated: new Date()
181
254
  }
182
255
  : data;
183
256
  const validatedData = this.inputSchema.parse(dataToInsert);
@@ -247,34 +320,34 @@ class FirebaseConnector extends fluent_2.BaseConnector {
247
320
  this.initDB();
248
321
  return admin.firestore();
249
322
  }
250
- deleteQueryBatch(db, query, batchSize, resolve, reject) {
323
+ async deleteQueryBatch(db, query, batchSize, resolve, reject) {
251
324
  this.initDB();
252
- query
253
- .get()
254
- .then(snapshot => {
325
+ try {
326
+ const snapshot = await query.get();
255
327
  // When there are no documents left, we are done
256
- if (snapshot.size == 0) {
257
- return 0;
328
+ if (snapshot.size === 0) {
329
+ resolve(true);
330
+ return;
258
331
  }
259
332
  // Delete documents in a batch
260
333
  const batch = db.batch();
261
- snapshot.docs.forEach(doc => {
262
- batch.delete(doc.ref);
263
- });
264
- return batch.commit().then(() => snapshot.size);
265
- })
266
- .then(numDeleted => {
267
- if (numDeleted === 0) {
268
- resolve();
269
- return;
334
+ const docs = snapshot.docs;
335
+ const docsLength = docs.length;
336
+ for (let i = 0; i < docsLength; i++) {
337
+ const doc = docs[i];
338
+ if (doc) {
339
+ batch.delete(doc.ref);
340
+ }
270
341
  }
271
- // Recurse on the next process tick, to avoid
272
- // exploding the stack.
273
- process.nextTick(() => {
342
+ await batch.commit();
343
+ // Use setImmediate for better performance than process.nextTick
344
+ setImmediate(() => {
274
345
  this.deleteQueryBatch(db, query, batchSize, resolve, reject);
275
346
  });
276
- })
277
- .catch(reject);
347
+ }
348
+ catch (error) {
349
+ reject(error);
350
+ }
278
351
  }
279
352
  /**
280
353
  * Creates a Clone of the current instance of the class
@@ -282,7 +355,11 @@ class FirebaseConnector extends fluent_2.BaseConnector {
282
355
  */
283
356
  clone() {
284
357
  this.initDB();
285
- return new this.constructor();
358
+ return new this.constructor({
359
+ entity: this.entity,
360
+ inputSchema: this.inputSchema,
361
+ outputSchema: this.outputSchema
362
+ });
286
363
  }
287
364
  //////////////////////////////////////////////////////////////
288
365
  // ALL OF THESE METHODS PROBABLY SHOULD BE IN SOMEWHERE ELSE
@@ -302,36 +379,52 @@ class FirebaseConnector extends fluent_2.BaseConnector {
302
379
  *
303
380
  */
304
381
  getGeneratedQueries(query) {
305
- let { andWhere, orWhere } = this.getFirebaseWhereQuery(query?.where);
306
- let mergedQueries = [];
382
+ const { andWhere, orWhere } = this.getFirebaseWhereQuery(query?.where);
383
+ let mergedQueries;
307
384
  if (andWhere) {
308
385
  mergedQueries = [andWhere, ...orWhere];
309
386
  }
310
387
  else {
311
388
  mergedQueries = orWhere;
312
389
  }
313
- const select = Object.keys(js_utils_1.Objects.flatten(query?.select || {}));
314
- for (const [index] of mergedQueries.entries()) {
315
- if (select?.length > 0) {
390
+ const selectKeys = query?.select ? Object.keys(js_utils_1.Objects.flatten(query.select)) : null;
391
+ const limit = query?.limit || 10;
392
+ const offset = query?.offset || 0;
393
+ const orderBy = query?.orderBy;
394
+ const queriesLength = mergedQueries.length;
395
+ for (let i = 0; i < queriesLength; i++) {
396
+ let currentQuery = mergedQueries[i];
397
+ if (!currentQuery)
398
+ continue;
399
+ if (selectKeys && selectKeys.length > 0) {
316
400
  // Force select the ID
317
- mergedQueries[index] = mergedQueries[index].select(...['id', ...select]);
401
+ currentQuery = currentQuery.select('id', ...selectKeys);
318
402
  }
319
- mergedQueries[index] = mergedQueries[index].limit(query?.limit || 10);
320
- mergedQueries[index] = mergedQueries[index].offset(query?.offset || 0);
321
- if (query?.orderBy) {
322
- for (const order of query?.orderBy) {
323
- const flattenObject = js_utils_1.Objects.flatten(order);
324
- for (const attribute of Object.keys(flattenObject)) {
325
- mergedQueries[index] = mergedQueries[index].orderBy(attribute, flattenObject[attribute]);
403
+ currentQuery = currentQuery.limit(limit).offset(offset);
404
+ if (orderBy) {
405
+ const orderLength = orderBy.length;
406
+ for (let j = 0; j < orderLength; j++) {
407
+ const orderItem = orderBy[j];
408
+ if (orderItem) {
409
+ const flattenObject = js_utils_1.Objects.flatten(orderItem);
410
+ const attributes = Object.keys(flattenObject);
411
+ const attrLength = attributes.length;
412
+ for (let k = 0; k < attrLength; k++) {
413
+ const attribute = attributes[k];
414
+ if (attribute) {
415
+ currentQuery = currentQuery.orderBy(attribute, flattenObject[attribute]);
416
+ }
417
+ }
326
418
  }
327
419
  }
328
420
  }
421
+ mergedQueries[i] = currentQuery;
329
422
  }
330
- const cloned = [...mergedQueries];
331
423
  if (andWhere) {
332
- cloned.shift();
424
+ const orQueries = mergedQueries.slice(1);
425
+ return [mergedQueries[0], orQueries];
333
426
  }
334
- return [andWhere ? mergedQueries[0] : undefined, cloned];
427
+ return [undefined, mergedQueries];
335
428
  }
336
429
  getFirebaseWhereQuery(where) {
337
430
  if (!where || Object.keys(where).length === 0) {
@@ -339,139 +432,55 @@ class FirebaseConnector extends fluent_2.BaseConnector {
339
432
  }
340
433
  // Every element of the array is an OR
341
434
  let andWhereQuery = this.collection;
342
- let orWhereQueries = [];
343
- const orConditions = (0, fluent_1.extractConditions)((where['OR'] || []));
344
- const andConditions = (0, fluent_1.extractConditions)((where['AND'] || []));
345
- const copy = js_utils_1.Objects.clone(where);
346
- if (!!copy['AND']) {
347
- delete copy['AND'];
348
- }
349
- if (!!copy['OR']) {
350
- delete copy['OR'];
351
- }
352
- const rootLevelConditions = (0, fluent_1.extractConditions)([copy]);
353
- // We can merge root level and And conditions in the same query
354
- for (const condition of andConditions) {
435
+ const orWhereQueries = [];
436
+ // Avoid cloning overhead - work with original object
437
+ const { AND, OR, ...rootConditions } = where;
438
+ const orConditions = (0, fluent_1.extractConditions)((OR || []));
439
+ const andConditions = (0, fluent_1.extractConditions)((AND || []));
440
+ const rootLevelConditions = (0, fluent_1.extractConditions)([rootConditions]);
441
+ // Helper function to apply conditions to a query - use a map for O(1) lookup
442
+ const operatorMap = new Map([
443
+ [fluent_1.LogicOperator.equals, '=='],
444
+ [fluent_1.LogicOperator.isNot, '!='],
445
+ [fluent_1.LogicOperator.greaterThan, '>'],
446
+ [fluent_1.LogicOperator.greaterOrEqualThan, '>='],
447
+ [fluent_1.LogicOperator.lessThan, '<'],
448
+ [fluent_1.LogicOperator.lessOrEqualThan, '<='],
449
+ [fluent_1.LogicOperator.in, 'in'],
450
+ [fluent_1.LogicOperator.arrayContains, 'array-contains'],
451
+ [fluent_1.LogicOperator.notIn, 'not-in']
452
+ ]);
453
+ const applyCondition = (query, condition) => {
355
454
  const { element, operator, value } = condition;
356
- switch (operator) {
357
- case fluent_1.LogicOperator.equals:
358
- andWhereQuery = andWhereQuery.where(element, '==', value);
359
- break;
360
- case fluent_1.LogicOperator.isNot:
361
- andWhereQuery = andWhereQuery.where(element, '!=', value);
362
- break;
363
- case fluent_1.LogicOperator.greaterThan:
364
- andWhereQuery = andWhereQuery.where(element, '>', value);
365
- break;
366
- case fluent_1.LogicOperator.greaterOrEqualThan:
367
- andWhereQuery = andWhereQuery.where(element, '>=', value);
368
- break;
369
- case fluent_1.LogicOperator.lessThan:
370
- andWhereQuery = andWhereQuery.where(element, '<', value);
371
- break;
372
- case fluent_1.LogicOperator.lessOrEqualThan:
373
- andWhereQuery = andWhereQuery.where(element, '<=', value);
374
- break;
375
- case fluent_1.LogicOperator.in:
376
- andWhereQuery = andWhereQuery.where(element, 'in', value);
377
- break;
378
- case fluent_1.LogicOperator.arrayContains:
379
- andWhereQuery = andWhereQuery.where(element, 'array-contains', value);
380
- break;
381
- case fluent_1.LogicOperator.notIn:
382
- andWhereQuery = andWhereQuery.where(element, 'not-in', value);
383
- break;
384
- case fluent_1.LogicOperator.exists:
385
- throw new Error('The nin Operator cannot be used in Firabase');
386
- case fluent_1.LogicOperator.notExists:
387
- throw new Error('The !exists Operator cannot be used in Firabase');
388
- case fluent_1.LogicOperator.regexp:
389
- throw new Error('The regexp Operator cannot be used in Firabase');
390
- default:
391
- throw new Error('The regexp Operator cannot be used in Firabase');
455
+ const firebaseOp = operatorMap.get(operator);
456
+ if (firebaseOp) {
457
+ return query.where(element, firebaseOp, value);
392
458
  }
393
- }
394
- for (const condition of rootLevelConditions) {
395
- const { element, operator, value } = condition;
396
459
  switch (operator) {
397
- case fluent_1.LogicOperator.equals:
398
- andWhereQuery = andWhereQuery.where(element, '==', value);
399
- break;
400
- case fluent_1.LogicOperator.isNot:
401
- andWhereQuery = andWhereQuery.where(element, '!=', value);
402
- break;
403
- case fluent_1.LogicOperator.greaterThan:
404
- andWhereQuery = andWhereQuery.where(element, '>', value);
405
- break;
406
- case fluent_1.LogicOperator.greaterOrEqualThan:
407
- andWhereQuery = andWhereQuery.where(element, '>=', value);
408
- break;
409
- case fluent_1.LogicOperator.lessThan:
410
- andWhereQuery = andWhereQuery.where(element, '<', value);
411
- break;
412
- case fluent_1.LogicOperator.lessOrEqualThan:
413
- andWhereQuery = andWhereQuery.where(element, '<=', value);
414
- break;
415
- case fluent_1.LogicOperator.in:
416
- andWhereQuery = andWhereQuery.where(element, 'in', value);
417
- break;
418
- case fluent_1.LogicOperator.arrayContains:
419
- andWhereQuery = andWhereQuery.where(element, 'array-contains', value);
420
- break;
421
- case fluent_1.LogicOperator.notIn:
422
- andWhereQuery = andWhereQuery.where(element, 'not-in', value);
423
- break;
424
460
  case fluent_1.LogicOperator.exists:
425
- throw new Error('The nin Operator cannot be used in Firabase');
461
+ throw new Error('The exists Operator cannot be used in Firebase');
426
462
  case fluent_1.LogicOperator.notExists:
427
- throw new Error('The !exists Operator cannot be used in Firabase');
463
+ throw new Error('The !exists Operator cannot be used in Firebase');
428
464
  case fluent_1.LogicOperator.regexp:
429
- throw new Error('The regexp Operator cannot be used in Firabase');
465
+ throw new Error('The regexp Operator cannot be used in Firebase');
430
466
  default:
431
- throw new Error('The regexp Operator cannot be used in Firabase');
467
+ throw new Error(`Unknown operator: ${operator}`);
432
468
  }
469
+ };
470
+ // Apply AND conditions
471
+ const andLength = andConditions.length;
472
+ for (let i = 0; i < andLength; i++) {
473
+ andWhereQuery = applyCondition(andWhereQuery, andConditions[i]);
474
+ }
475
+ // Apply root level conditions
476
+ const rootLength = rootLevelConditions.length;
477
+ for (let i = 0; i < rootLength; i++) {
478
+ andWhereQuery = applyCondition(andWhereQuery, rootLevelConditions[i]);
433
479
  }
434
480
  // Each or query needs to be an independent query in Firebase
435
- for (const condition of orConditions) {
436
- const { element, operator, value } = condition;
437
- let orQuery = this.collection;
438
- switch (operator) {
439
- case fluent_1.LogicOperator.equals:
440
- orQuery = orQuery.where(element, '==', value);
441
- break;
442
- case fluent_1.LogicOperator.isNot:
443
- orQuery = orQuery.where(element, '!=', value);
444
- break;
445
- case fluent_1.LogicOperator.greaterThan:
446
- orQuery = orQuery.where(element, '>', value);
447
- break;
448
- case fluent_1.LogicOperator.greaterOrEqualThan:
449
- orQuery = orQuery.where(element, '>=', value);
450
- break;
451
- case fluent_1.LogicOperator.lessThan:
452
- orQuery = orQuery.where(element, '<', value);
453
- break;
454
- case fluent_1.LogicOperator.lessOrEqualThan:
455
- orQuery = orQuery.where(element, '<=', value);
456
- break;
457
- case fluent_1.LogicOperator.in:
458
- orQuery = orQuery.where(element, 'in', value);
459
- break;
460
- case fluent_1.LogicOperator.arrayContains:
461
- orQuery = orQuery.where(element, 'array-contains', value);
462
- break;
463
- case fluent_1.LogicOperator.notIn:
464
- orQuery = orQuery.where(element, 'not-in', value);
465
- break;
466
- case fluent_1.LogicOperator.exists:
467
- throw new Error('The nin Operator cannot be used in Firabase');
468
- case fluent_1.LogicOperator.notExists:
469
- throw new Error('The !exists Operator cannot be used in Firabase');
470
- case fluent_1.LogicOperator.regexp:
471
- throw new Error('The regexp Operator cannot be used in Firabase');
472
- default:
473
- throw new Error('The regexp Operator cannot be used in Firabase');
474
- }
481
+ const orLength = orConditions.length;
482
+ for (let i = 0; i < orLength; i++) {
483
+ const orQuery = applyCondition(this.collection, orConditions[i]);
475
484
  orWhereQueries.push(orQuery);
476
485
  }
477
486
  let andWhereCondition = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"FirebaseConnector.js","sourceRoot":"","sources":["../src/FirebaseConnector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FirebaseConnector.js","sourceRoot":"","sources":["../src/FirebaseConnector.ts"],"names":[],"mappings":";;;;AAAA,wCAAuC;AAEvC,4CAUwB;AACxB,4CAKwB;AACxB,gDAAsD;AAStD;;GAEG;AACH,MAAa,iBAKX,SAAQ,sBAA4C;IAGnC,WAAW,CAAqB;IAEhC,YAAY,CAAsB;IAE3C,UAAU,CAAiD;IAElD,MAAM,CAAK;IAE5B,YAAY,EACV,MAAM,EACN,WAAW,EACX,YAAY,EACiC;QAC7C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,YAAY;YACf,YAAY,IAAK,WAA+C,CAAA;QAElE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEO,YAAY,GAAG,KAAK,CAAA;IACpB,oBAAoB,CAAK;IAGjC,MAAM;QACJ,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,CAAC,CAAA;QAE/B,MAAM,mBAAmB,GAAG,iCAAwB,CAAC,aAAa,CAChE,IAAI,CAAC,MAAM,CACZ,CAAA;QACD,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAA;QAE/C,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,cAAc,CAAA;QAExD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAA;QACH,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK;aACpB,SAAS,EAAE;aACX,UAAU,CAAC,IAAI,CAAoD,CAAA;QAEtE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,uCAA8B,EAAC,mBAAmB,CAAC,CAAA;QAEzE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAE/B,IAAI,CAAC,UAAU,GAAG,IAAA,sBAAa,EAAC,mBAAmB,CAAC,IAAI,EAAE,CAAA;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,OAAO,CAAC,CAAA;IACV,CAAC;IACD,SAAS;IAET;;;OAGG;IACI,KAAK,CAAC,MAAM,CAAC,IAAc;QAChC,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,iBAAiB;QACjB,MAAM,aAAa,GAAI,IAAI,CAAC,WAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAE3D,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAE7C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YACzE,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,cAAG,CAAC,IAAI,EAAE,CAAA;QAC3C,MAAM,IAAI,GAAG;YACX,EAAE;YACF,GAAG,aAAa;SACM,CAAA;QAExB,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEvC,kBAAkB;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAC5B,kBAAO,CAAC,YAAY,CAAC,kBAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAChD,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,IAAgB;QACtC,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAE1D,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAA;QACvC,4CAA4C;QAC5C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAA;QACvC,MAAM,aAAa,GAAe,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;QAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,CAAC,CAAC;gBAAE,SAAQ;YAChB,MAAM,EAAE,GAAW,CAAC,CAAC,IAAI,CAAC,IAAI,cAAG,CAAC,IAAI,EAAE,CAAA;YACxC,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAyB,CAAA;YAChD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;YACxC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;QAED,MAAM,KAAK,CAAC,MAAM,EAAE,CAAA;QAEpB,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAA;QACzC,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,IAAI,EAAE,CAAC;gBACT,cAAc,CAAC,CAAC,CAAC,GAAG,kBAAO,CAAC,YAAY,CAAC,kBAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YACrE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IACxD,CAAC;IAED,OAAO;IAEA,KAAK,CAAC,QAAQ,CACnB,KAAS;QAET,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAC7D,MAAM,OAAO,GAAmC,EAAE,CAAA;QAElD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAA;YACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAA;YAC7B,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAA;YAC/B,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAA;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAC5B,CAAA;YAED,sCAAsC;YACtC,IAAI,WAAW,GAAG,CAAC,CAAA;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;gBAC/B,IAAI,QAAQ,EAAE,CAAC;oBACb,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA;gBACrC,CAAC;YACH,CAAC;YAED,qBAAqB;YACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAA;YAC/B,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAA;YAEvC,IAAI,UAAU,GAAG,QAAQ,CAAA;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;gBACjC,IAAI,CAAC,UAAU;oBAAE,SAAQ;gBACzB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAA;gBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;oBACnB,IAAI,GAAG,EAAE,CAAC;wBACR,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,4DAA4D;QAC5D,IAAI,KAAqC,CAAA;QACzC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwC,CAAA;YACjE,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAA;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;gBACvB,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBACpC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;gBAC9B,CAAC;YACH,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,EAAE,CAAA;QACZ,CAAC;QAED,iCAAiC;QACjC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAA;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,IAAI,IAAI,EAAE,CAAC;gBACT,kBAAO,CAAC,YAAY,CAAC,kBAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;QAED,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;YACnB,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAChC,KAAK,EACL,kBAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAC/B,CAAA;QACH,CAAC;QAED,IAAI,KAAK,EAAE,SAAS,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAA;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAA;YACjC,MAAM,cAAc,GAA4C;gBAC9D,KAAK,EAAE,CAAC;gBACR,OAAO;gBACP,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE,IAAI,GAAG,CAAC;gBAClB,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;gBAChC,QAAQ,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACtC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;gBAC9B,EAAE,EAAE,OAAO,GAAG,IAAI;gBAClB,IAAI,EAAE,KAA8C;aACrD,CAAA;YAED,OAAO,cAAgE,CAAA;QACzE,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YAClB,gDAAgD;YAChD,OAAO,KAA8C,CAAA;QACvD,CAAC;QACD,iCAAiC;QACjC,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAG1C,CAAA;IACL,CAAC;IAED,SAAS;IAET;;;OAGG;IACI,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,IAAc;QAChD,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;YACtD,CAAC,CAAC;gBACE,GAAG,IAAI;gBACP,OAAO,EAAE,IAAI,IAAI,EAAE;aACpB;YACH,CAAC,CAAC,IAAI,CAAA;QAER,MAAM,aAAa,GAAI,IAAI,CAAC,WAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAEnE,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;YACnC,GAAG,aAAa;YAChB,EAAE;SACgC,CAAC,CAAA;QAErC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,kBAAkB;QAClB,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,CAC7B,kBAAO,CAAC,YAAY,CAAC,kBAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CACpD,CAAA;IACH,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,IAAc;QACjD,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAErC,0EAA0E;QAC1E,MAAM,WAAW,GAAG,OAAO,eAAe,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QACvH,MAAM,SAAS,GAAG,kBAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9B,8CAA8C;QAC9C,MAAM,SAAS,GAAG,IAAW,CAAA;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,IAAI,GAAG,EAAE,CAAC;gBACR,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;YAC5B,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,kBAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE1C,MAAM,QAAQ,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE,CAAA;QAE3C,OAAO,QAAQ,CAAC,GAAG,CAAA;QACnB,OAAO,QAAQ,CAAC,EAAE,CAAA;QAClB,OAAO,QAAQ,CAAC,OAAO,CAAA;QACvB,OAAO,QAAQ,CAAC,OAAO,CAAA;QAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;YACtD,CAAC,CAAC;gBACE,GAAG,IAAI;gBACP,OAAO,EAAE,IAAI,IAAI,EAAE;aACpB;YACH,CAAC,CAAC,IAAI,CAAA;QAER,MAAM,aAAa,GAAI,IAAI,CAAC,WAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAEnE,MAAM,IAAI,CAAC,UAAU;aAClB,GAAG,CAAC,EAAE,CAAC;aACP,MAAM,CAAC,aAAgD,CAAC,CAAA;QAE3D,2CAA2C;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAEtC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAC5B,kBAAO,CAAC,YAAY,CAAC,kBAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC/C,CAAA;IACH,CAAC;IAED,SAAS;IAEF,KAAK,CAAC,UAAU,CAAC,EAAU;QAChC,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;QACtC,OAAO,EAAE,CAAA;IACX,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACvE,CAAC,CAAqB,CAAA;IACxB,CAAC;IAED,YAAY;IAEL,SAAS,CAAC,KAA6B;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,uCAAuC;QACvC,+CAA+C;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QAEhC,WAAW,CAAC,eAAe,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE;gBACL,GAAG,KAAK;gBACR,KAAK,EAAE,CAAC;aACT;SACF,CAAC,CAAA;QAEF,OAAO,WAAiC,CAAA;IAC1C,CAAC;IAEM,QAAQ,CAAC,EAAU;QACxB,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,4DAA4D;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QAEhC,WAAW,CAAC,eAAe,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE;gBACL,KAAK,EAAE;oBACL,EAAE;iBACH;aACkC;SACtC,CAAC,CAAA;QAEF,OAAO,WAAiC,CAAA;IAC1C,CAAC;IAED;;;;;;OAMG;IACI,GAAG;QACR,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,OAAO,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1B,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,EAA6B,EAAE,KAA8B,EAAE,SAAiB,EAAE,OAAiB,EAAE,MAAgB;QAClJ,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAA;YAClC,gDAAgD;YAChD,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,CAAA;gBACb,OAAM;YACR,CAAC;YAED,8BAA8B;YAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA;YACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,IAAI,GAAG,EAAE,CAAC;oBACR,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACvB,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAC,MAAM,EAAE,CAAA;YAEpB,gEAAgE;YAChE,YAAY,CAAC,GAAG,EAAE;gBAChB,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;YAC9D,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,KAAK;QACb,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,OAAO,IAAU,IAAI,CAAC,WAAY,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAA;IACJ,CAAC;IACD,8DAA8D;IAC9D,4DAA4D;IAC5D,8DAA8D;IAEpD,KAAK,CAAC,eAAe,CAC7B,IAAW,EACX,UAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAa,EAAC;YACjC,IAAI;YACJ,SAAS,EAAE,UAAU;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;QAEF,OAAO,MAAmD,CAAA;IAC5D,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,KAA6B;QAE7B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAEtE,IAAI,aAAwC,CAAA;QAE5C,IAAI,QAAQ,EAAE,CAAC;YACb,aAAa,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,OAAO,CAAA;QACzB,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACpF,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,EAAE,CAAA;QAChC,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAA;QAE9B,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAA;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;YACnC,IAAI,CAAC,YAAY;gBAAE,SAAQ;YAE3B,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,sBAAsB;gBACtB,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAA;YACzD,CAAC;YAED,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAEvD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAA;gBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;oBAC5B,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,aAAa,GAAG,kBAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;wBAChD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;wBAC7C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAA;wBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;4BACpC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;4BAC/B,IAAI,SAAS,EAAE,CAAC;gCACd,YAAY,GAAG,YAAY,CAAC,OAAO,CACjC,SAAS,EACT,aAAa,CAAC,SAAS,CAAuC,CAC/D,CAAA;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,aAAa,CAAC,CAAC,CAAC,GAAG,YAAY,CAAA;QACjC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACxC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IACnC,CAAC;IAEO,qBAAqB,CAAC,KAAsC;QAIlE,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QACnD,CAAC;QAED,sCAAsC;QACtC,IAAI,aAAa,GAA4B,IAAI,CAAC,UAAiB,CAAA;QACnE,MAAM,cAAc,GAA8B,EAAE,CAAA;QAEpD,qDAAqD;QACrD,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,KAAK,CAAA;QAE5C,MAAM,YAAY,GAAG,IAAA,0BAAiB,EAAC,CAAC,EAAE,IAAI,EAAE,CAAQ,CAAC,CAAA;QACzD,MAAM,aAAa,GAAG,IAAA,0BAAiB,EAAC,CAAC,GAAG,IAAI,EAAE,CAAQ,CAAC,CAAA;QAE3D,MAAM,mBAAmB,GAAG,IAAA,0BAAiB,EAAC,CAAC,cAAc,CAAC,CAAC,CAAA;QAE/D,6EAA6E;QAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAwB;YACjD,CAAC,sBAAa,CAAC,MAAM,EAAE,IAAI,CAAC;YAC5B,CAAC,sBAAa,CAAC,KAAK,EAAE,IAAI,CAAC;YAC3B,CAAC,sBAAa,CAAC,WAAW,EAAE,GAAG,CAAC;YAChC,CAAC,sBAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC;YACxC,CAAC,sBAAa,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC7B,CAAC,sBAAa,CAAC,eAAe,EAAE,IAAI,CAAC;YACrC,CAAC,sBAAa,CAAC,EAAE,EAAE,IAAI,CAAC;YACxB,CAAC,sBAAa,CAAC,aAAa,EAAE,gBAAgB,CAAC;YAC/C,CAAC,sBAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;SAChC,CAAC,CAAA;QAEF,MAAM,cAAc,GAAG,CAAC,KAA8B,EAAE,SAAc,EAA2B,EAAE;YACjG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS,CAAA;YAE9C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC5C,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,UAAiB,EAAE,KAAK,CAAC,CAAA;YACvD,CAAC;YAED,QAAQ,QAAQ,EAAE,CAAC;gBACjB,KAAK,sBAAa,CAAC,MAAM;oBACvB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;gBACnE,KAAK,sBAAa,CAAC,SAAS;oBAC1B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;gBACpE,KAAK,sBAAa,CAAC,MAAM;oBACvB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;gBACnE;oBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAA;YACpD,CAAC;QACH,CAAC,CAAA;QAED,uBAAuB;QACvB,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAA;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,aAAa,GAAG,cAAc,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,8BAA8B;QAC9B,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAA;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,aAAa,GAAG,cAAc,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAA;QACvE,CAAC;QAED,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAA;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,UAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;YACvE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9B,CAAC;QAED,IAAI,iBAAiB,GAAwC,SAAS,CAAA;QAEtE,mDAAmD;QACnD,IACE,CAAC,aAAa,EAAE,MAAM;YACtB,CAAC,mBAAmB,EAAE,MAAM;YAC5B,CAAC,YAAY,EAAE,MAAM,EACrB,CAAC;YACD,iBAAiB,GAAG,IAAI,CAAC,UAAiB,CAAA;QAC5C,CAAC;QAED,IAAI,aAAa,EAAE,MAAM,IAAI,mBAAmB,EAAE,MAAM,EAAE,CAAC;YACzD,iBAAiB,GAAG,aAAa,CAAA;QACnC,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,iBAAiB;YAC3B,OAAO,EAAE,cAAc;SACxB,CAAA;IACH,CAAC;CACF;AAtnBD,8CAsnBC;AArlBC;IADC,eAAI,CAAC,UAAU,EAAE;;;;+CA4BjB"}