@billfn/core 0.2.0 → 0.3.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/dist/errors.d.ts +3 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +12 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/service.d.ts +19 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +545 -48
- package/dist/service.js.map +1 -1
- package/dist/types.d.ts +92 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SuperfunctionError, type ErrorRegistry } from '@superfunctions/errors';
|
|
2
2
|
declare const definitions: readonly [{
|
|
3
3
|
readonly code: "BILLFN_VALIDATION_ERROR";
|
|
4
4
|
readonly httpStatus: 400;
|
|
@@ -53,6 +53,8 @@ export declare function createBillFnError(input: {
|
|
|
53
53
|
code: (typeof definitions)[number]['code'];
|
|
54
54
|
message?: string;
|
|
55
55
|
details?: Record<string, unknown>;
|
|
56
|
+
/** Overrides the code's registered retryability for an error a retry recovers from. */
|
|
57
|
+
retryable?: boolean;
|
|
56
58
|
}): SuperfunctionError;
|
|
57
59
|
export {};
|
|
58
60
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAEhC,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6DP,CAAC;AAEX,eAAO,MAAM,mBAAmB,EAAE,aAAqD,CAAC;AAExF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,uFAAuF;IACvF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,kBAAkB,CAiBrB"}
|
package/dist/errors.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createErrorRegistry, createTypedError } from '@superfunctions/errors';
|
|
1
|
+
import { createErrorRegistry, createTypedError, SuperfunctionError } from '@superfunctions/errors';
|
|
2
2
|
const definitions = [
|
|
3
3
|
{
|
|
4
4
|
code: 'BILLFN_VALIDATION_ERROR',
|
|
@@ -63,11 +63,21 @@ const definitions = [
|
|
|
63
63
|
];
|
|
64
64
|
export const billFnErrorRegistry = createErrorRegistry([...definitions]);
|
|
65
65
|
export function createBillFnError(input) {
|
|
66
|
-
|
|
66
|
+
const error = createTypedError({
|
|
67
67
|
code: input.code,
|
|
68
68
|
message: input.message,
|
|
69
69
|
details: input.details,
|
|
70
70
|
registry: billFnErrorRegistry
|
|
71
71
|
});
|
|
72
|
+
if (input.retryable === undefined || input.retryable === error.retryable) {
|
|
73
|
+
return error;
|
|
74
|
+
}
|
|
75
|
+
return new SuperfunctionError({
|
|
76
|
+
code: error.code,
|
|
77
|
+
message: error.message,
|
|
78
|
+
status: error.status,
|
|
79
|
+
retryable: input.retryable,
|
|
80
|
+
details: error.details
|
|
81
|
+
});
|
|
72
82
|
}
|
|
73
83
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,GAAG;IAClB;QACE,IAAI,EAAE,yBAAyB;QAC/B,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,IAAI;KAChB;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,kCAAkC;QACxC,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,KAAK;KACjB;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAkB,mBAAmB,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AAExF,MAAM,UAAU,iBAAiB,CAAC,KAMjC;IACC,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,mBAAmB;KAC9B,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,kBAAkB,CAAC;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ import type { BillFnConfig, BillFnInstance } from './types.js';
|
|
|
2
2
|
export type * from './types.js';
|
|
3
3
|
export { getSchema, getSchemaMap } from './schema.js';
|
|
4
4
|
export { createBillFnError, billFnErrorRegistry } from './errors.js';
|
|
5
|
-
export { createBillFnReconciliationWorker } from './service.js';
|
|
5
|
+
export { BILLFN_IMPORTED_AT_METADATA_KEY, BILLFN_IMPORT_PENDING_METADATA_KEY, BILLFN_IMPORT_REPLAY_UNFINISHED_REASON, createBillFnReconciliationWorker } from './service.js';
|
|
6
6
|
export declare function createBillFn(config: BillFnConfig): BillFnInstance;
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,sCAAsC,EACtC,gCAAgC,EACjC,MAAM,cAAc,CAAC;AAEtB,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CA8BjE"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { getSchema } from './schema.js';
|
|
|
3
3
|
import { createBillFnService } from './service.js';
|
|
4
4
|
export { getSchema, getSchemaMap } from './schema.js';
|
|
5
5
|
export { createBillFnError, billFnErrorRegistry } from './errors.js';
|
|
6
|
-
export { createBillFnReconciliationWorker } from './service.js';
|
|
6
|
+
export { BILLFN_IMPORTED_AT_METADATA_KEY, BILLFN_IMPORT_PENDING_METADATA_KEY, BILLFN_IMPORT_REPLAY_UNFINISHED_REASON, createBillFnReconciliationWorker } from './service.js';
|
|
7
7
|
export function createBillFn(config) {
|
|
8
8
|
const service = createBillFnService(config);
|
|
9
9
|
const router = createBillFnRouter(config);
|
|
@@ -25,6 +25,11 @@ export function createBillFn(config) {
|
|
|
25
25
|
enqueueReconciliationJob: service.enqueueReconciliationJob,
|
|
26
26
|
getReconciliationJob: service.getReconciliationJob,
|
|
27
27
|
runReconciliationJob: service.runReconciliationJob,
|
|
28
|
+
services: {
|
|
29
|
+
subscriptions: {
|
|
30
|
+
import: service.importSubscription
|
|
31
|
+
}
|
|
32
|
+
},
|
|
28
33
|
subscriptionProvider: service.subscriptionProvider,
|
|
29
34
|
quotaProvider: service.quotaProvider
|
|
30
35
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,sCAAsC,EACtC,gCAAgC,EACjC,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO;QACL,MAAM;QACN,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;QAC1D,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,QAAQ,EAAE;YACR,aAAa,EAAE;gBACb,MAAM,EAAE,OAAO,CAAC,kBAAkB;aACnC;SACF;QACD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC;AACJ,CAAC"}
|
package/dist/service.d.ts
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
|
-
import type { BillFnCancelSubscriptionRequest, BillFnCancelSubscriptionResponse, BillFnCatalog, BillFnChangeSubscriptionRequest, BillFnChangeSubscriptionResponse, BillFnCheckoutCreateRequest, BillFnConfig, BillFnCreateCheckoutResponse, BillFnEnqueueReconciliationJobRequest, BillFnEntitlementSnapshot, BillFnEntitlementsResponse, BillFnGetReconciliationJobRequest, BillFnQueuedJob, BillFnReconciliationJob, BillFnReconciliationJobResponse, BillFnRefundChargeRequest, BillFnRefundChargeResponse, BillFnRestorePurchasesRequest, BillFnRestorePurchasesResponse, BillFnResumeSubscriptionRequest, BillFnResumeSubscriptionResponse, BillFnRunReconciliationJobRequest, BillFnSubscription, BillFnSyncSubscriptionRequest, BillFnSyncSubscriptionResponse, BillFnUsageResponse, BillFnVerifyCheckoutRequest, BillFnVerifyCheckoutResponse, BillFnWebhookRequest, BillFnWebhookResponse, BillableSubject } from './types.js';
|
|
1
|
+
import type { BillFnCancelSubscriptionRequest, BillFnCancelSubscriptionResponse, BillFnCatalog, BillFnChangeSubscriptionRequest, BillFnChangeSubscriptionResponse, BillFnCheckoutCreateRequest, BillFnConfig, BillFnCreateCheckoutResponse, BillFnEnqueueReconciliationJobRequest, BillFnEntitlementSnapshot, BillFnEntitlementsResponse, BillFnGetReconciliationJobRequest, BillFnImportSubscriptionRequest, BillFnImportSubscriptionResponse, BillFnQueuedJob, BillFnReconciliationJob, BillFnReconciliationJobResponse, BillFnRefundChargeRequest, BillFnRefundChargeResponse, BillFnRestorePurchasesRequest, BillFnRestorePurchasesResponse, BillFnResumeSubscriptionRequest, BillFnResumeSubscriptionResponse, BillFnRunReconciliationJobRequest, BillFnSubscription, BillFnSyncSubscriptionRequest, BillFnSyncSubscriptionResponse, BillFnUsageResponse, BillFnVerifyCheckoutRequest, BillFnVerifyCheckoutResponse, BillFnWebhookRequest, BillFnWebhookResponse, BillableSubject } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Subscription metadata key set when an operator imported the subscription:
|
|
4
|
+
* when it was first imported. Its binding to the billing account is the
|
|
5
|
+
* operator's, so a provider adapter does not expect the BillFn ownership
|
|
6
|
+
* metadata a subscription created outside BillFn lacks.
|
|
7
|
+
*/
|
|
8
|
+
export declare const BILLFN_IMPORTED_AT_METADATA_KEY = "billfnImportedAt";
|
|
9
|
+
/**
|
|
10
|
+
* Subscription metadata key set on the row an import creates until its
|
|
11
|
+
* binding is accepted (`settleImportBinding`). A pending row is not usable:
|
|
12
|
+
* webhooks and replays leave events for it unlinked, other writes refuse it
|
|
13
|
+
* (retryably) and subject, account and sync lookups skip it. A refusal deletes
|
|
14
|
+
* it, on the import's first run or on any rerun, so it never becomes durable.
|
|
15
|
+
*/
|
|
16
|
+
export declare const BILLFN_IMPORT_PENDING_METADATA_KEY = "billfnImportPending";
|
|
17
|
+
/** `details.reason` of the retryable `BILLFN_CONFLICT` an import raises when its replay did not finish. */
|
|
18
|
+
export declare const BILLFN_IMPORT_REPLAY_UNFINISHED_REASON = "import_replay_unfinished";
|
|
2
19
|
export declare function createBillFnService(config: BillFnConfig): {
|
|
3
20
|
namespace: string;
|
|
4
21
|
getCatalog(): Promise<BillFnCatalog>;
|
|
@@ -10,6 +27,7 @@ export declare function createBillFnService(config: BillFnConfig): {
|
|
|
10
27
|
refundCharge(input: BillFnRefundChargeRequest): Promise<BillFnRefundChargeResponse>;
|
|
11
28
|
syncSubscription(input: BillFnSyncSubscriptionRequest): Promise<BillFnSyncSubscriptionResponse>;
|
|
12
29
|
restorePurchases(input: BillFnRestorePurchasesRequest): Promise<BillFnRestorePurchasesResponse>;
|
|
30
|
+
importSubscription(input: BillFnImportSubscriptionRequest): Promise<BillFnImportSubscriptionResponse>;
|
|
13
31
|
getEntitlements(subject: BillableSubject): Promise<BillFnEntitlementsResponse>;
|
|
14
32
|
getUsage(subject: BillableSubject, resource?: string): Promise<BillFnUsageResponse>;
|
|
15
33
|
handleWebhook(input: BillFnWebhookRequest): Promise<BillFnWebhookResponse>;
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAGV,+BAA+B,EAC/B,gCAAgC,EAChC,aAAa,EACb,+BAA+B,EAC/B,gCAAgC,EAChC,2BAA2B,EAE3B,YAAY,EACZ,4BAA4B,EAE5B,qCAAqC,EACrC,yBAAyB,EACzB,0BAA0B,EAG1B,iCAAiC,EAEjC,+BAA+B,EAC/B,gCAAgC,EAKhC,eAAe,EAEf,uBAAuB,EAEvB,+BAA+B,EAE/B,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,EAC7B,8BAA8B,EAE9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,kBAAkB,EAElB,6BAA6B,EAC7B,8BAA8B,EAO9B,mBAAmB,EAEnB,2BAA2B,EAC3B,4BAA4B,EAE5B,oBAAoB,EACpB,qBAAqB,EAErB,eAAe,EAKhB,MAAM,YAAY,CAAC;AAiCpB;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,qBAAqB,CAAC;AAClE;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,wBAAwB,CAAC;AACxE,2GAA2G;AAC3G,eAAO,MAAM,sCAAsC,6BAA6B,CAAC;AAuHjF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY;;;0BAmfxB,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC;0BA6DnE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC;8BAqD/D,+BAA+B,GAAG,OAAO,CAAC,gCAAgC,CAAC;8BAoC3E,+BAA+B,GAAG,OAAO,CAAC,gCAAgC,CAAC;8BAkE3E,+BAA+B,GAAG,OAAO,CAAC,gCAAgC,CAAC;wBAwBjF,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;4BAyF3D,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;4BAmBvE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;8BAgGrE,+BAA+B,GAAG,OAAO,CAAC,gCAAgC,CAAC;6BA2I5E,eAAe,GAAG,OAAO,CAAC,0BAA0B,CAAC;sBAmB5D,eAAe,aAAa,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;yBAwB9D,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;oCAsH1C,qCAAqC,GAAG,OAAO,CAAC,+BAA+B,CAAC;gCAUpF,iCAAiC,GAAG,OAAO,CAAC,+BAA+B,CAAC;gCAU5E,iCAAiC,GAAG,OAAO,CAAC,+BAA+B,CAAC;;yCAttCvE,eAAe;0CAOd,eAAe;4BAO7B,eAAe;8BAIb,eAAe,WAAW,MAAM;;;4BAWlC;YACxB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,cAAc,EAAE,MAAM,CAAC;YACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB;;;;;;;;;;;6BAgC0B;YACzB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB;iCAQ8B,MAAM,aAAa,MAAM;;;;;EAtG3D;AAiwCD,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,YAAY;aAwBlD,eAAe;;EAyEjC"}
|