@coinflowlabs/angular 1.6.0 → 1.6.1
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/README.md
CHANGED
|
@@ -4,6 +4,10 @@ This library was generated with [Angular CLI](https://github.com/angular/angular
|
|
|
4
4
|
|
|
5
5
|
# Changelog
|
|
6
6
|
|
|
7
|
+
## 1.6.1
|
|
8
|
+
|
|
9
|
+
- Added support for custom pay-in fees via `customPayInFees` in the JWT token or URL parameters. This allows merchants to add custom fee line items (fixed or percentage-based) that are displayed during checkout.
|
|
10
|
+
|
|
7
11
|
## 1.6.0
|
|
8
12
|
|
|
9
13
|
- New Blockchain Support: The SDK now supports Stellar, a fast and low-cost blockchain for payments. Pass blockchain='stellar' to enable Stellar payment processing.
|
|
@@ -530,7 +530,7 @@ class CoinflowUtils {
|
|
|
530
530
|
return 'http://localhost:5000';
|
|
531
531
|
return `https://api-${env}.coinflow.cash`;
|
|
532
532
|
}
|
|
533
|
-
static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain = 'solana', webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, zeroAuthorizationConfig, baseUrl, }) {
|
|
533
|
+
static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, customPayInFees, presentment, transaction, blockchain = 'solana', webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, zeroAuthorizationConfig, baseUrl, }) {
|
|
534
534
|
const prefix = routePrefix
|
|
535
535
|
? `/${routePrefix}/${blockchain}`
|
|
536
536
|
: `/${blockchain}`;
|
|
@@ -557,6 +557,9 @@ class CoinflowUtils {
|
|
|
557
557
|
url.searchParams.append('amount', subtotal.amount.toString());
|
|
558
558
|
}
|
|
559
559
|
}
|
|
560
|
+
if (customPayInFees && customPayInFees.length > 0) {
|
|
561
|
+
url.searchParams.append('customPayInFees', encodeURIComponent(JSON.stringify(customPayInFees)));
|
|
562
|
+
}
|
|
560
563
|
if (presentment)
|
|
561
564
|
url.searchParams.append('presentment', presentment);
|
|
562
565
|
if (webhookInfo) {
|
|
@@ -1264,8 +1267,8 @@ class CoinflowIFrameComponent {
|
|
|
1264
1267
|
this.isLoading = false;
|
|
1265
1268
|
this.onLoad?.();
|
|
1266
1269
|
}
|
|
1267
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1268
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1270
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowIFrameComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1271
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowIFrameComponent, isStandalone: true, selector: "lib-coinflow-iframe", inputs: { iframeProps: "iframeProps", messageHandlers: "messageHandlers", onLoad: "onLoad", waitForLoadedMessage: "waitForLoadedMessage" }, outputs: { messageEvent: "messageEvent" }, host: { listeners: { "window:message": "onPostMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }], ngImport: i0, template: ` <iframe
|
|
1269
1272
|
width="100%"
|
|
1270
1273
|
height="100%"
|
|
1271
1274
|
#iframe
|
|
@@ -1278,7 +1281,7 @@ class CoinflowIFrameComponent {
|
|
|
1278
1281
|
(load)="handleIframeLoad()"
|
|
1279
1282
|
></iframe>`, isInline: true }); }
|
|
1280
1283
|
}
|
|
1281
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1284
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowIFrameComponent, decorators: [{
|
|
1282
1285
|
type: Component,
|
|
1283
1286
|
args: [{
|
|
1284
1287
|
selector: 'lib-coinflow-iframe',
|
|
@@ -1330,10 +1333,10 @@ class CoinflowPurchaseComponent {
|
|
|
1330
1333
|
handleHeightChangeId,
|
|
1331
1334
|
};
|
|
1332
1335
|
}
|
|
1333
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1334
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1336
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowPurchaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1337
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowPurchaseComponent, isStandalone: true, selector: "lib-coinflow-purchase", inputs: { purchaseProps: "purchaseProps" }, ngImport: i0, template: ' <lib-coinflow-iframe ng-if="iframeProps && messageHandlers" [iframeProps]="iframeProps!" [messageHandlers]="messageHandlers!" [onLoad]="purchaseProps?.onLoad" [waitForLoadedMessage]="true"></lib-coinflow-iframe> ', isInline: true, dependencies: [{ kind: "component", type: CoinflowIFrameComponent, selector: "lib-coinflow-iframe", inputs: ["iframeProps", "messageHandlers", "onLoad", "waitForLoadedMessage"], outputs: ["messageEvent"] }] }); }
|
|
1335
1338
|
}
|
|
1336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1339
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowPurchaseComponent, decorators: [{
|
|
1337
1340
|
type: Component,
|
|
1338
1341
|
args: [{
|
|
1339
1342
|
selector: 'lib-coinflow-purchase',
|
|
@@ -1346,10 +1349,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
1346
1349
|
}] } });
|
|
1347
1350
|
|
|
1348
1351
|
class CoinflowPurchaseHistoryComponent {
|
|
1349
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1350
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1352
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowPurchaseHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1353
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowPurchaseHistoryComponent, isStandalone: true, selector: "lib-coinflow-purchase-history", ngImport: i0, template: ' <p>coinflow-purchase-history works!</p> ', isInline: true }); }
|
|
1351
1354
|
}
|
|
1352
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1355
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowPurchaseHistoryComponent, decorators: [{
|
|
1353
1356
|
type: Component,
|
|
1354
1357
|
args: [{
|
|
1355
1358
|
selector: 'lib-coinflow-purchase-history',
|
|
@@ -1360,10 +1363,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
1360
1363
|
}] });
|
|
1361
1364
|
|
|
1362
1365
|
class CoinflowPurchaseProtectionComponent {
|
|
1363
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1364
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1366
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowPurchaseProtectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1367
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowPurchaseProtectionComponent, isStandalone: true, selector: "lib-coinflow-purchase-protection", ngImport: i0, template: ' <p>coinflow-purchase-protection works!</p> ', isInline: true }); }
|
|
1365
1368
|
}
|
|
1366
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1369
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowPurchaseProtectionComponent, decorators: [{
|
|
1367
1370
|
type: Component,
|
|
1368
1371
|
args: [{
|
|
1369
1372
|
selector: 'lib-coinflow-purchase-protection',
|
|
@@ -1388,10 +1391,10 @@ class CoinflowWithdrawComponent {
|
|
|
1388
1391
|
handleHeightChangeId,
|
|
1389
1392
|
};
|
|
1390
1393
|
}
|
|
1391
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1392
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1394
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowWithdrawComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1395
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowWithdrawComponent, isStandalone: true, selector: "lib-coinflow-withdraw", inputs: { withdrawProps: "withdrawProps" }, ngImport: i0, template: ' <lib-coinflow-iframe ng-if="iframeProps && messageHandlers" [iframeProps]="iframeProps!" [messageHandlers]="messageHandlers!" [onLoad]="withdrawProps?.onLoad"></lib-coinflow-iframe> ', isInline: true, dependencies: [{ kind: "component", type: CoinflowIFrameComponent, selector: "lib-coinflow-iframe", inputs: ["iframeProps", "messageHandlers", "onLoad", "waitForLoadedMessage"], outputs: ["messageEvent"] }] }); }
|
|
1393
1396
|
}
|
|
1394
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1397
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowWithdrawComponent, decorators: [{
|
|
1395
1398
|
type: Component,
|
|
1396
1399
|
args: [{
|
|
1397
1400
|
selector: 'lib-coinflow-withdraw',
|
|
@@ -1404,10 +1407,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
1404
1407
|
}] } });
|
|
1405
1408
|
|
|
1406
1409
|
class CoinflowWithdrawHistoryComponent {
|
|
1407
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1408
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1410
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowWithdrawHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1411
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowWithdrawHistoryComponent, isStandalone: true, selector: "lib-coinflow-withdraw-history", ngImport: i0, template: ' <p>coinflow-withdraw-history works!</p> ', isInline: true }); }
|
|
1409
1412
|
}
|
|
1410
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1413
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowWithdrawHistoryComponent, decorators: [{
|
|
1411
1414
|
type: Component,
|
|
1412
1415
|
args: [{
|
|
1413
1416
|
selector: 'lib-coinflow-withdraw-history',
|
|
@@ -1468,10 +1471,10 @@ class CardFormService {
|
|
|
1468
1471
|
iframe.load();
|
|
1469
1472
|
return iframe;
|
|
1470
1473
|
}
|
|
1471
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1472
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
1474
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CardFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1475
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CardFormService, providedIn: 'root' }); }
|
|
1473
1476
|
}
|
|
1474
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1477
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CardFormService, decorators: [{
|
|
1475
1478
|
type: Injectable,
|
|
1476
1479
|
args: [{
|
|
1477
1480
|
providedIn: 'root',
|
|
@@ -1512,10 +1515,10 @@ class CoinflowCardNumberInput {
|
|
|
1512
1515
|
tokenize() {
|
|
1513
1516
|
return this.iframe.tokenize();
|
|
1514
1517
|
}
|
|
1515
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1516
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1518
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowCardNumberInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1519
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowCardNumberInput, isStandalone: true, selector: "lib-coinflow-card-number-input", inputs: { args: "args" }, ngImport: i0, template: '<div id="{{TokenExCardNumberIframeId}}"></div>', isInline: true }); }
|
|
1517
1520
|
}
|
|
1518
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowCardNumberInput, decorators: [{
|
|
1519
1522
|
type: Component,
|
|
1520
1523
|
args: [{
|
|
1521
1524
|
selector: 'lib-coinflow-card-number-input',
|
|
@@ -1561,10 +1564,10 @@ class CoinflowCardNumberOnlyInput {
|
|
|
1561
1564
|
tokenize() {
|
|
1562
1565
|
return this.iframe.tokenize();
|
|
1563
1566
|
}
|
|
1564
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1565
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1567
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowCardNumberOnlyInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1568
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowCardNumberOnlyInput, isStandalone: true, selector: "lib-coinflow-card-number-only-input", inputs: { args: "args" }, ngImport: i0, template: '<div id="{{TokenExCardNumberIframeId}}"></div>', isInline: true }); }
|
|
1566
1569
|
}
|
|
1567
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1570
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowCardNumberOnlyInput, decorators: [{
|
|
1568
1571
|
type: Component,
|
|
1569
1572
|
args: [{
|
|
1570
1573
|
selector: 'lib-coinflow-card-number-only-input',
|
|
@@ -1580,10 +1583,10 @@ class CoinflowCvvInputComponent {
|
|
|
1580
1583
|
constructor() {
|
|
1581
1584
|
this.TokenExCvvContainerID = TokenExCvvContainerID;
|
|
1582
1585
|
}
|
|
1583
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1584
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1586
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowCvvInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1587
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowCvvInputComponent, isStandalone: true, selector: "lib-coinflow-cvv-input", ngImport: i0, template: '<div id="{{TokenExCvvContainerID}}" ></div>', isInline: true }); }
|
|
1585
1588
|
}
|
|
1586
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1589
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowCvvInputComponent, decorators: [{
|
|
1587
1590
|
type: Component,
|
|
1588
1591
|
args: [{
|
|
1589
1592
|
selector: 'lib-coinflow-cvv-input',
|
|
@@ -1644,10 +1647,10 @@ class CoinflowCvvOnlyInputComponent {
|
|
|
1644
1647
|
tokenize() {
|
|
1645
1648
|
return this.iframe.tokenize();
|
|
1646
1649
|
}
|
|
1647
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1648
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1650
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowCvvOnlyInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1651
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowCvvOnlyInputComponent, isStandalone: true, selector: "lib-coinflow-cvv-only-input", inputs: { args: "args" }, usesOnChanges: true, ngImport: i0, template: '<div id="{{TokenExCvvContainerID}}"></div>', isInline: true }); }
|
|
1649
1652
|
}
|
|
1650
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1653
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowCvvOnlyInputComponent, decorators: [{
|
|
1651
1654
|
type: Component,
|
|
1652
1655
|
args: [{
|
|
1653
1656
|
selector: 'lib-coinflow-cvv-only-input',
|
|
@@ -1696,8 +1699,8 @@ class CoinflowMobileWalletButtonComponent {
|
|
|
1696
1699
|
handleHeightChangeId,
|
|
1697
1700
|
};
|
|
1698
1701
|
}
|
|
1699
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1700
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1702
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowMobileWalletButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1703
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowMobileWalletButtonComponent, isStandalone: true, selector: "lib-coinflow-mobile-wallet-button", inputs: { purchaseProps: "purchaseProps", route: "route", overlayDisplayOverride: "overlayDisplayOverride", alignItems: "alignItems" }, ngImport: i0, template: ` <div style="position: relative; height: 100%;">
|
|
1701
1704
|
<div
|
|
1702
1705
|
[style.background-color]="purchaseProps.color"
|
|
1703
1706
|
[style.display]="overlayDisplayOverride ?? display"
|
|
@@ -1719,7 +1722,7 @@ class CoinflowMobileWalletButtonComponent {
|
|
|
1719
1722
|
</div>
|
|
1720
1723
|
</div>`, isInline: true, dependencies: [{ kind: "component", type: CoinflowIFrameComponent, selector: "lib-coinflow-iframe", inputs: ["iframeProps", "messageHandlers", "onLoad", "waitForLoadedMessage"], outputs: ["messageEvent"] }] }); }
|
|
1721
1724
|
}
|
|
1722
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1725
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowMobileWalletButtonComponent, decorators: [{
|
|
1723
1726
|
type: Component,
|
|
1724
1727
|
args: [{
|
|
1725
1728
|
selector: 'lib-coinflow-mobile-wallet-button',
|
|
@@ -1761,8 +1764,8 @@ class CoinflowApplePayButtonComponent {
|
|
|
1761
1764
|
fill() {
|
|
1762
1765
|
return this.purchaseProps.color === 'white' ? '#000' : '#FFF';
|
|
1763
1766
|
}
|
|
1764
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1765
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1767
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowApplePayButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1768
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowApplePayButtonComponent, isStandalone: true, selector: "lib-coinflow-apple-pay-button", inputs: { purchaseProps: "purchaseProps" }, ngImport: i0, template: ` <lib-coinflow-mobile-wallet-button
|
|
1766
1769
|
ng-if="iframeProps && messageHandlers"
|
|
1767
1770
|
[purchaseProps]="purchaseProps"
|
|
1768
1771
|
route="apple-pay"
|
|
@@ -1804,7 +1807,7 @@ class CoinflowApplePayButtonComponent {
|
|
|
1804
1807
|
</svg>
|
|
1805
1808
|
</lib-coinflow-mobile-wallet-button>`, isInline: true, dependencies: [{ kind: "component", type: CoinflowMobileWalletButtonComponent, selector: "lib-coinflow-mobile-wallet-button", inputs: ["purchaseProps", "route", "overlayDisplayOverride", "alignItems"] }] }); }
|
|
1806
1809
|
}
|
|
1807
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1810
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowApplePayButtonComponent, decorators: [{
|
|
1808
1811
|
type: Component,
|
|
1809
1812
|
args: [{
|
|
1810
1813
|
selector: 'lib-coinflow-apple-pay-button',
|
|
@@ -1857,8 +1860,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
1857
1860
|
}] } });
|
|
1858
1861
|
|
|
1859
1862
|
class CoinflowGooglePayOverlayComponent {
|
|
1860
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1861
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
1863
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowGooglePayOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1864
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: CoinflowGooglePayOverlayComponent, isStandalone: true, selector: "coinflow-google-pay-overlay", inputs: { color: "color" }, ngImport: i0, template: `
|
|
1862
1865
|
@if (color === 'white') {
|
|
1863
1866
|
<svg xmlns="http://www.w3.org/2000/svg" width="41" height="17">
|
|
1864
1867
|
<g fill="none" fill-rule="evenodd">
|
|
@@ -1913,7 +1916,7 @@ class CoinflowGooglePayOverlayComponent {
|
|
|
1913
1916
|
}
|
|
1914
1917
|
`, isInline: true }); }
|
|
1915
1918
|
}
|
|
1916
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1919
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowGooglePayOverlayComponent, decorators: [{
|
|
1917
1920
|
type: Component,
|
|
1918
1921
|
args: [{
|
|
1919
1922
|
selector: 'coinflow-google-pay-overlay',
|
|
@@ -1979,8 +1982,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
1979
1982
|
}] } });
|
|
1980
1983
|
|
|
1981
1984
|
class CoinflowGooglePayButtonComponent {
|
|
1982
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1983
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
1985
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowGooglePayButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1986
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CoinflowGooglePayButtonComponent, isStandalone: true, selector: "lib-coinflow-google-pay-button", inputs: { purchaseProps: "purchaseProps" }, ngImport: i0, template: `<lib-coinflow-mobile-wallet-button
|
|
1984
1987
|
ng-if="iframeProps && messageHandlers"
|
|
1985
1988
|
[purchaseProps]="purchaseProps"
|
|
1986
1989
|
route="google-pay"
|
|
@@ -1992,7 +1995,7 @@ class CoinflowGooglePayButtonComponent {
|
|
|
1992
1995
|
></coinflow-google-pay-overlay>
|
|
1993
1996
|
</lib-coinflow-mobile-wallet-button> `, isInline: true, dependencies: [{ kind: "component", type: CoinflowMobileWalletButtonComponent, selector: "lib-coinflow-mobile-wallet-button", inputs: ["purchaseProps", "route", "overlayDisplayOverride", "alignItems"] }, { kind: "component", type: CoinflowGooglePayOverlayComponent, selector: "coinflow-google-pay-overlay", inputs: ["color"] }] }); }
|
|
1994
1997
|
}
|
|
1995
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1998
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CoinflowGooglePayButtonComponent, decorators: [{
|
|
1996
1999
|
type: Component,
|
|
1997
2000
|
args: [{
|
|
1998
2001
|
selector: 'lib-coinflow-google-pay-button',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coinflowlabs-angular.mjs","sources":["../../../projects/coinflowlabs/src/lib/common/CoinflowTypes.ts","../../../projects/coinflowlabs/src/lib/common/SolanaPeerDeps.ts","../../../projects/coinflowlabs/src/lib/common/types/Subtotal.ts","../../../projects/coinflowlabs/src/lib/common/NSure.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowUtils.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowLibMessageHandlers.ts","../../../projects/coinflowlabs/src/lib/common/EventBus.ts","../../../projects/coinflowlabs/src/lib/common/card-form/TokenEx.ts","../../../projects/coinflowlabs/src/lib/common/card-form/tokenexHelpers.ts","../../../projects/coinflowlabs/src/lib/common/types/nftCartItem.ts","../../../projects/coinflowlabs/src/lib/coinflow-iframe.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-history.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-protection.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw-history.component.ts","../../../projects/coinflowlabs/src/lib/card-form/CardFormService.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-only-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-only-input.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-mobile-wallet-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-apple-pay-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/google-pay-overlay.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-google-pay-button.component.ts","../../../projects/coinflowlabs/src/public-api.ts","../../../projects/coinflowlabs/src/coinflowlabs-angular.ts"],"sourcesContent":["import type {\n Connection,\n VersionedTransaction,\n PublicKey,\n Signer,\n Transaction,\n} from '@solana/web3.js';\nimport {Currency, Subtotal} from './types/Subtotal';\nimport {GiftCardCartItem} from './types/giftCardCartItem';\nimport {nftCartItem} from './types/nftCartItem';\nimport {CryptoCartItem} from './types/cryptoCartItem';\nimport {MoneyTopUpCartItem} from './types/moneyTopUpCartItem';\n\nexport enum WithdrawCategory {\n USER = 'user',\n BUSINESS = 'business',\n}\n\nexport enum WithdrawSpeed {\n ASAP = 'asap',\n SAME_DAY = 'same_day',\n STANDARD = 'standard',\n CARD = 'card',\n IBAN = 'iban',\n PIX = 'pix',\n EFT = 'eft',\n VENMO = 'venmo',\n PAYPAL = 'paypal',\n WIRE = 'wire',\n INTERAC = 'interac',\n}\n\nexport enum SettlementType {\n Credits = 'Credits',\n USDC = 'USDC',\n Bank = 'Bank', // Deprecated, is the same as USDC\n}\n\n/**\n * Configuration for zero authorization flow - controls saved payment method visibility.\n */\nexport interface ZeroAuthSavedPaymentMethods {\n disableSavedPaymentMethods: boolean;\n}\n\n/**\n * Configuration for zero authorization flow - verify existing card mode.\n * Shows the \"Verify Card\" flow for a specific saved card.\n * The card token will be validated to ensure it belongs to the current user's wallet.\n * If the card doesn't belong to the user, falls back to \"Add New Card\" view.\n */\nexport interface ZeroAuthVerifyCard {\n cardToken: string;\n}\n\n/**\n * Configuration for zero authorization flow.\n * The presence of this object indicates the checkout is in zero auth mode.\n *\n * Two mutually exclusive modes:\n * - Saved payment methods: `{ disableSavedPaymentMethods: boolean }` - show or hide saved methods\n * - Verify card: `{ cardToken: \"token\" }` - verify a specific saved card\n */\nexport type ZeroAuthorizationConfig =\n | ZeroAuthSavedPaymentMethods\n | ZeroAuthVerifyCard;\n\nexport function isZeroAuthVerifyCard(\n config: ZeroAuthorizationConfig\n): config is ZeroAuthVerifyCard {\n return 'cardToken' in config;\n}\n\nexport function isZeroAuthSavedPaymentMethods(\n config: ZeroAuthorizationConfig\n): config is ZeroAuthSavedPaymentMethods {\n return 'disableSavedPaymentMethods' in config;\n}\n\nexport enum MerchantStyle {\n Rounded = 'rounded',\n Sharp = 'sharp',\n Pill = 'pill',\n}\n\nexport type MerchantTheme = {\n primary?: string;\n background?: string;\n backgroundAccent?: string;\n backgroundAccent2?: string;\n textColor?: string;\n textColorAccent?: string;\n textColorAction?: string;\n ctaColor?: string;\n font?: string;\n style?: MerchantStyle;\n};\n\ninterface BaseCustomerInfo {\n verificationId?: string;\n displayName?: string;\n address?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n ip?: string;\n lat?: string;\n lng?: string;\n /**\n * Date of birth in YYYY-MM-DD format\n */\n dob?: string;\n email?: string;\n}\n\nexport interface NameCustomerInfo extends BaseCustomerInfo {\n /**\n * @hidden\n */\n name?: string;\n}\n\nexport interface SplitNameCustomerInfo extends BaseCustomerInfo {\n /**\n * @minLength 1\n */\n firstName: string;\n /**\n * @minLength 1\n */\n lastName: string;\n}\n\nexport type CustomerInfo = SplitNameCustomerInfo | NameCustomerInfo;\n\n/** Coinflow Types **/\nexport type CoinflowBlockchain =\n | 'solana'\n | 'eth'\n | 'polygon'\n | 'base'\n | 'arbitrum'\n | 'stellar'\n | 'monad'\n | 'user';\nexport type CoinflowEnvs =\n | 'prod'\n | 'staging'\n | 'staging-live'\n | 'sandbox'\n | 'local';\n\nexport interface CoinflowTypes {\n merchantId: string;\n env?: CoinflowEnvs;\n loaderBackground?: string;\n blockchain?: CoinflowBlockchain | undefined;\n handleHeightChange?: (height: string) => void;\n theme?: MerchantTheme;\n}\n\nexport type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport type MergeWithOptionalDiff<A, B> =\n // shared fields (required)\n Pick<A, Extract<keyof A, keyof B>> &\n Pick<B, Extract<keyof B, keyof A>> &\n // A-only fields (optional)\n Partial<Omit<A, keyof B>> &\n // B-only fields (optional)\n Partial<Omit<B, keyof A>>;\n\nexport type OnSuccessMethod = (\n args:\n | {\n paymentId: string;\n hash?: string | undefined;\n }\n | string\n) => void | Promise<void>;\n\nexport type AuthDeclinedWalletCallInfo = {\n title: string;\n code: string;\n action: string;\n message: string;\n total: string;\n};\n\nexport type OnAuthDeclinedMethod = (\n args: AuthDeclinedWalletCallInfo\n) => void | Promise<void>;\n\n/** Wallets **/\nexport interface SolanaWallet {\n publicKey: PublicKey | null;\n signTransaction?: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<T>;\n sendTransaction: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<string>;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\ntype AccessList = Array<{address: string; storageKeys: Array<string>}>;\ntype AccessListish =\n | AccessList\n | Array<[string, Array<string>]>\n | Record<string, Array<string>>;\n\nexport type EthWallet = {\n address: string | null | undefined;\n sendTransaction: (transaction: {\n to: string;\n from?: string;\n nonce?: Bytes | bigint | string | number;\n\n gasLimit?: Bytes | bigint | string | number;\n gasPrice?: Bytes | bigint | string | number;\n\n data?: BytesLike;\n value?: Bytes | bigint | string | number;\n chainId?: number;\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: Bytes | bigint | string | number;\n maxFeePerGas?: Bytes | bigint | string | number;\n\n customData?: Record<string, any>;\n ccipReadEnabled?: boolean;\n }) => Promise<{hash: string}>;\n signMessage: (message: string) => Promise<string>;\n};\n\nexport interface StellarWallet {\n address: string | null;\n sendTransaction: (base64Xdr: string) => Promise<string>;\n signTransaction: (base64Xdr: string) => Promise<string>;\n signMessage: (message: string) => Promise<string>;\n}\n\n/** History **/\nexport interface CoinflowSolanaHistoryProps extends CoinflowTypes {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport interface CoinflowSessionKeyHistoryProps extends CoinflowTypes {\n sessionKey: string;\n blockchain?: undefined;\n}\n\nexport interface CoinflowEvmHistoryProps extends CoinflowTypes {\n wallet: EthWallet;\n blockchain: 'eth' | 'polygon' | 'base' | 'arbitrum' | 'monad';\n}\n\nexport interface CoinflowEthHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowPolygonHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowBaseHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'arbitrum';\n}\n\nexport interface CoinflowStellarHistoryProps extends CoinflowTypes {\n wallet: StellarWallet;\n blockchain: 'stellar';\n}\n\nexport interface CoinflowMonadHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps\n | CoinflowStellarHistoryProps\n | CoinflowMonadHistoryProps\n | CoinflowSessionKeyHistoryProps;\n\ntype Bytes = ArrayLike<number>;\ntype BytesLike = Bytes | string;\n\n/** Purchase **/\n\nexport type CartClassOmitted = CartItemClassOmitted[];\nexport type ChargebackProtectionData = CartClassOmitted;\n\nexport type CartItemClassOmitted =\n | NftCartItemClassOmitted\n | Omit<GiftCardCartItem, 'listPrice'>\n | CryptoCartItem\n | MoneyTopUpCartItem;\nexport type ChargebackProtectionItem = CartItemClassOmitted;\n\nexport type NftCartItemClassOmitted = Omit<\n nftCartItem,\n 'sellingPrice' | 'itemClass'\n>;\n\nexport type Cart = CartItem[];\nexport type CartItem =\n | Omit<nftCartItem, 'listPrice' | 'sellingPrice'>\n | Omit<GiftCardCartItem, 'listPrice'>\n | CryptoCartItem\n | MoneyTopUpCartItem;\n\nexport enum ThreeDsChallengePreference {\n NoPreference = 'NoPreference',\n Frictionless = 'Frictionless',\n Challenge = 'Challenge',\n}\n\nexport enum PaymentMethods {\n card = 'card',\n ach = 'ach',\n fasterPayments = 'fasterPayments',\n sepa = 'sepa',\n pix = 'pix',\n usdc = 'usdc',\n googlePay = 'googlePay',\n applePay = 'applePay',\n credits = 'credits',\n crypto = 'crypto',\n instantBankTransfer = 'instantBankTransfer',\n wire = 'wire',\n}\n\nexport const paymentMethodLabels: Record<PaymentMethods, string> = {\n [PaymentMethods.card]: 'Card',\n [PaymentMethods.ach]: 'ACH',\n [PaymentMethods.fasterPayments]: 'Faster Payments',\n [PaymentMethods.sepa]: 'SEPA',\n [PaymentMethods.pix]: 'PIX',\n [PaymentMethods.usdc]: 'USDC',\n [PaymentMethods.googlePay]: 'Google Pay',\n [PaymentMethods.applePay]: 'Apple Pay',\n [PaymentMethods.credits]: 'Credits',\n [PaymentMethods.crypto]: 'Crypto',\n [PaymentMethods.instantBankTransfer]: 'Instant Bank Transfer',\n [PaymentMethods.wire]: 'Wire Transfer',\n};\n\nexport interface CoinflowCommonPurchaseProps extends CoinflowTypes {\n subtotal?: Subtotal;\n presentment?: Currency;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined?: OnAuthDeclinedMethod;\n webhookInfo?: {\n [key: string]: any;\n };\n email?: string;\n chargebackProtectionData?: ChargebackProtectionData;\n planCode?: string;\n /**\n * The payment methods displayed on the UI. If omitted, all available payment methods will be displayed.\n */\n allowedPaymentMethods?: PaymentMethods[];\n customerInfo?: CustomerInfo;\n settlementType?: SettlementType;\n authOnly?: boolean;\n /**\n * @deprecated Use zeroAuthorizationConfig instead for more control over zero auth behavior.\n * Simple boolean flag for zero authorization mode. When true, defaults to showing saved payment methods.\n */\n isZeroAuthorization?: boolean;\n /**\n * Configuration for zero authorization flow. Takes precedence over isZeroAuthorization if both are provided.\n * Use this to control whether saved payment methods are shown and to pre-select a specific card for verification.\n */\n zeroAuthorizationConfig?: ZeroAuthorizationConfig;\n /**\n * If true, pre-checks the partial USDC payment checkbox when USDC balance is available.\n * If false or undefined, maintains default behavior (unchecked).\n */\n partialUsdcChecked?: boolean;\n /**\n * The DeviceID gotten from the Coinflow SDK:\n * https://docs.coinflow.cash/guides/checkout/fraud-protection/chargeback-protection/implement-chargeback-protection#how-to-add-chargeback-protection\n *\n * nSureSDK.getDeviceId()\n */\n deviceId?: string;\n jwtToken?: string;\n /**\n * Your company email address that the customer can contact.\n */\n supportEmail?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n threeDsChallengePreference?: ThreeDsChallengePreference;\n destinationAuthKey?: string;\n accountFundingTransaction?: AccountFundingTransaction;\n}\n\n/**\n * Used for Account Funding Transactions\n */\nexport interface AccountFundingTransaction {\n /**\n * Recipient information for Account Funding Transactions (AFT).\n * Required when AFT is enabled and type requires it.\n */\n recipientAftInfo?: RecipientAftInfo;\n}\n\nexport interface CoinflowSolanaPurchaseProps extends CoinflowCommonPurchaseProps {\n wallet: SolanaWallet;\n transaction?: Transaction | VersionedTransaction;\n partialSigners?: Signer[];\n debugTx?: boolean;\n connection: Connection;\n blockchain: 'solana';\n rent?: {lamports: string | number};\n nativeSolToConvert?: {lamports: string | number};\n redemptionCheck?: boolean;\n}\n\nexport interface CoinflowSessionKeyPurchaseProps extends CoinflowCommonPurchaseProps {\n sessionKey: string;\n wallet?: undefined;\n blockchain?: CoinflowBlockchain | undefined;\n}\n\nexport interface CoinflowEvmPurchaseProps extends CoinflowCommonPurchaseProps {\n transaction?: EvmTransactionData;\n wallet: EthWallet;\n}\n\nexport interface CoinflowPolygonPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowEthPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowBasePurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport interface CoinflowStellarPurchaseProps extends CoinflowCommonPurchaseProps {\n wallet: StellarWallet;\n transaction?: string;\n blockchain: 'stellar';\n}\n\nexport interface CoinflowMonadPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps\n | CoinflowStellarPurchaseProps\n | CoinflowMonadPurchaseProps;\n\n/** Withdraw **/\n\nexport interface CoinflowCommonWithdrawProps extends CoinflowTypes {\n onSuccess?: OnSuccessMethod;\n tokens?: string[];\n lockDefaultToken?: boolean;\n amount?: number;\n email?: string;\n bankAccountLinkRedirect?: string;\n additionalWallets?: {\n wallet: string;\n blockchain:\n | 'solana'\n | 'eth'\n | 'polygon'\n | 'base'\n | 'arbitrum'\n | 'monad'\n | 'stellar';\n }[];\n lockAmount?: boolean;\n transactionSigner?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n /**\n * If the withdrawer is authenticated with a sessionKey pass it here.\n */\n sessionKey?: string;\n /**\n * Array of allowed withdrawal speeds. If not provided, all speeds are allowed.\n */\n allowedWithdrawSpeeds?: WithdrawSpeed[];\n}\n\nexport type WalletTypes = SolanaWallet | EthWallet | StellarWallet;\n\nexport interface SolanaWalletProps {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport type CoinflowSolanaWithdrawProps = CoinflowCommonWithdrawProps &\n SolanaWalletProps;\n\ninterface EvmWalletProps {\n wallet: EthWallet;\n usePermit?: boolean;\n}\n\ntype CoinflowEvmWithdrawProps = CoinflowCommonWithdrawProps & EvmWalletProps;\n\nexport interface EthWalletProps {\n blockchain: 'eth';\n}\n\nexport type CoinflowEthWithdrawProps = CoinflowEvmWithdrawProps &\n EthWalletProps;\n\nexport interface PolygonWalletProps {\n blockchain: 'polygon';\n}\n\nexport type CoinflowPolygonWithdrawProps = CoinflowEvmWithdrawProps &\n PolygonWalletProps;\n\nexport interface BaseWalletProps {\n blockchain: 'base';\n}\n\nexport type CoinflowBaseWithdrawProps = CoinflowEvmWithdrawProps &\n BaseWalletProps;\n\nexport interface ArbitrumWalletProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowArbitrumWithdrawProps = CoinflowEvmWithdrawProps &\n ArbitrumWalletProps;\n\nexport interface StellarWalletProps {\n wallet: StellarWallet;\n blockchain: 'stellar';\n}\n\nexport type CoinflowStellarWithdrawProps = CoinflowCommonWithdrawProps &\n StellarWalletProps;\n\nexport interface MonadWalletProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowMonadWithdrawProps = CoinflowEvmWithdrawProps &\n MonadWalletProps;\n\nexport type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps\n | CoinflowStellarWithdrawProps\n | CoinflowMonadWithdrawProps;\n\nexport interface CommonEvmRedeem {\n /**\n * Whether the UI should wait\n * for the transaction to be sent and\n * the hash to be returned.\n */\n waitForHash?: boolean;\n}\n\n/**\n * (EVM only) If your contract sends the item/service being purchased via a custom \"receiver\" field, then utilize this object.\n *\n * The coinflow contract calls the \"to\" contract, which transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n */\nexport interface NormalRedeem extends CommonEvmRedeem {\n /**\n * Transaction to be called.\n */\n transaction: {\n /**\n * The merchant's whitelisted contract\n */\n to: string;\n /**\n * The data to call this contract with, HEX encoded.\n *\n * The coinflow contract calls the \"to\" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n */\n data: string;\n };\n}\n\n/**\n * (EVM only) If your know the ID of the NFT being purchased, then utilize this object.\n *\n * The contract transfers the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract fwd's the NFT to the end user's wallet.\n */\nexport interface KnownTokenIdRedeem extends NormalRedeem {\n /**\n * The address of the Nft's Contract\n *\n * @minLength 42 Please provide a valid EVM Address (42 Characters Long)\n * @maxLength 42 Please provide a valid EVM Address (42 Characters Long)\n */\n nftContract: string;\n /**\n * The ID of the NFT being purchased. Will be forwarded by the Coinflow contract to the customer's wallet.\n *\n * @minLength 1 Please provide a valid Nft Id\n */\n nftId: string;\n}\n\n/**\n * (EVM only) If your contract mints an NFT via a OpenZeppelin Safe Mint Call, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the SafeMint event, and fwd's the NFT to the end user's wallet.\n */\nexport interface SafeMintRedeem extends NormalRedeem {\n type: 'safeMint';\n nftContract?: string;\n}\n\n/**\n * (EVM only) If your contract returns the NFT ID, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the returned NFT ID, and fwd's the NFT to the end user's wallet.\n */\nexport interface ReturnedTokenIdRedeem extends NormalRedeem {\n type: 'returned';\n nftContract?: string;\n}\n\nexport interface TokenRedeem extends CommonEvmRedeem {\n type: 'token';\n destination: string;\n}\n\n/**\n * If your contract exists on a chain supported by Decent, pass this object in order to call it.\n */\nexport interface DecentRedeem extends CommonEvmRedeem {\n type: 'decent';\n /**\n * ID of the destination chain you will be using\n * Find your chain ID here: https://chainlist.org/\n */\n dstChainId: number;\n /**\n * Address on that chain of the token you will be receiving\n */\n dstToken: string;\n /**\n * The contract address which will be called on the destination chain\n */\n contractAddress: string;\n contractData: string;\n /**\n * Amount of the token on the destination chain you will be receiving\n */\n cost: {\n /**\n * This is the raw amount of the token\n * ex: 50000000000000n\n */\n amount: string;\n /**\n * Whether or not the token is the native token for the chain (ex: Ethereum - ETH, Polygon - POL).\n * If native dstToken should be the 0 address (0x00...)\n */\n isNative: boolean;\n };\n}\n\n/**\n * (EVM only) if you want to execute an EVM transaction on a successful purchase, you can pass a transaction request here.\n *\n * Gas fees for the transaction will be automatically calculated and added to the total charged to the customer. Optionally the merchant can opt to pay for these gas fees.\n */\nexport type EvmTransactionData =\n | SafeMintRedeem\n | ReturnedTokenIdRedeem\n | KnownTokenIdRedeem\n | NormalRedeem\n | TokenRedeem\n | DecentRedeem;\n\nexport interface CoinflowIFrameProps\n extends\n Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>,\n Pick<\n CoinflowCommonPurchaseProps,\n | 'chargebackProtectionData'\n | 'webhookInfo'\n | 'subtotal'\n | 'presentment'\n | 'customerInfo'\n | 'settlementType'\n | 'email'\n | 'planCode'\n | 'deviceId'\n | 'jwtToken'\n | 'origins'\n | 'threeDsChallengePreference'\n | 'supportEmail'\n | 'allowedPaymentMethods'\n | 'accountFundingTransaction'\n | 'partialUsdcChecked'\n | 'isZeroAuthorization'\n | 'zeroAuthorizationConfig'\n >,\n Pick<\n CoinflowCommonWithdrawProps,\n | 'bankAccountLinkRedirect'\n | 'additionalWallets'\n | 'transactionSigner'\n | 'lockAmount'\n | 'lockDefaultToken'\n | 'origins'\n | 'allowedWithdrawSpeeds'\n >,\n Pick<CoinflowEvmPurchaseProps, 'authOnly'>,\n Pick<\n CoinflowSolanaPurchaseProps,\n 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'\n > {\n walletPubkey: string | null | undefined;\n sessionKey?: string;\n route: string;\n routePrefix?: string;\n transaction?: string;\n tokens?: string[] | PublicKey[];\n merchantCss?: string;\n color?: 'white' | 'black';\n disableApplePay?: boolean;\n disableGooglePay?: boolean;\n theme?: MerchantTheme;\n usePermit?: boolean;\n handleHeightChangeId: string | number;\n}\n\nexport enum CardType {\n VISA = 'VISA',\n MASTERCARD = 'MSTR',\n AMEX = 'AMEX',\n DISCOVER = 'DISC',\n}\n\nexport interface RecipientAftInfo {\n /**\n * @minLength 2\n */\n firstName: string;\n /**\n * @minLength 2\n */\n lastName: string;\n /**\n * @minLength 2\n */\n address1: string;\n /**\n * @minLength 2\n */\n city: string;\n /**\n * @minLength 2\n */\n postalCode: string;\n /**\n * @minLength 2\n */\n state?: string;\n /**\n * @minLength 2\n * @maxLength 2\n */\n countryCode: string;\n /**\n * Recipients Date Of Birth in YYYMMDD format.\n * @pattern ^\\d{8}$\n */\n dateOfBirth?: string;\n /**\n * @pattern ^\\d+$\n */\n phoneNumber?: string;\n documentReference?: string;\n}\n\nexport const RN_REDIRECT_MESSAGE_NAME = 'rnredirect'; // DO NOT CHANGE\n","// This works in angular, but not react\n// let web3: typeof import('@solana/web3.js') | undefined;\n// let base58: typeof import('bs58') | undefined;\n//\n// try {\n// web3 = require('@solana/web3.js');\n// base58 = require('bs58');\n// } catch (e) {}\n//\n// export {web3, base58};\n\n// This works in react, but not angular\nimport * as SolanaWeb3Js from '@solana/web3.js';\nimport base58Imported from 'bs58';\n\nconst web3: typeof SolanaWeb3Js | undefined = SolanaWeb3Js;\nconst base58: typeof base58Imported | undefined = base58Imported;\nexport {web3, base58};\n","export enum Currency {\n USD = 'USD',\n AED = 'AED',\n AFN = 'AFN',\n ALL = 'ALL',\n AMD = 'AMD',\n ANG = 'ANG',\n AOA = 'AOA',\n ARS = 'ARS',\n AUD = 'AUD',\n AWG = 'AWG',\n AZN = 'AZN',\n BAM = 'BAM',\n BBD = 'BBD',\n BDT = 'BDT',\n BGN = 'BGN',\n BHD = 'BHD',\n BIF = 'BIF',\n BMD = 'BMD',\n BND = 'BND',\n BOB = 'BOB',\n BRL = 'BRL',\n BSD = 'BSD',\n BTN = 'BTN',\n BWP = 'BWP',\n BYN = 'BYN',\n BZD = 'BZD',\n CAD = 'CAD',\n CHF = 'CHF',\n CLF = 'CLF',\n CLP = 'CLP',\n CNY = 'CNY',\n COP = 'COP',\n CRC = 'CRC',\n CUP = 'CUP',\n CVE = 'CVE',\n CZK = 'CZK',\n DJF = 'DJF',\n DKK = 'DKK',\n DOP = 'DOP',\n DZD = 'DZD',\n EGP = 'EGP',\n ETB = 'ETB',\n EUR = 'EUR',\n FJD = 'FJD',\n GBP = 'GBP',\n GEL = 'GEL',\n GHS = 'GHS',\n GMD = 'GMD',\n GNF = 'GNF',\n GTQ = 'GTQ',\n GYD = 'GYD',\n HKD = 'HKD',\n HNL = 'HNL',\n HTG = 'HTG',\n HUF = 'HUF',\n IDR = 'IDR',\n ILS = 'ILS',\n INR = 'INR',\n IQD = 'IQD',\n IRR = 'IRR',\n ISK = 'ISK',\n JMD = 'JMD',\n JOD = 'JOD',\n JPY = 'JPY',\n KES = 'KES',\n KGS = 'KGS',\n KHR = 'KHR',\n KMF = 'KMF',\n KRW = 'KRW',\n KWD = 'KWD',\n KYD = 'KYD',\n KZT = 'KZT',\n LAK = 'LAK',\n LBP = 'LBP',\n LKR = 'LKR',\n LRD = 'LRD',\n LSL = 'LSL',\n LYD = 'LYD',\n MAD = 'MAD',\n MDL = 'MDL',\n MGA = 'MGA',\n MKD = 'MKD',\n MMK = 'MMK',\n MNT = 'MNT',\n MOP = 'MOP',\n MRU = 'MRU',\n MUR = 'MUR',\n MWK = 'MWK',\n MVR = 'MVR',\n MXN = 'MXN',\n MYR = 'MYR',\n MZN = 'MZN',\n NAD = 'NAD',\n NGN = 'NGN',\n NIO = 'NIO',\n NOK = 'NOK',\n NPR = 'NPR',\n NZD = 'NZD',\n OMR = 'OMR',\n PAB = 'PAB',\n PEN = 'PEN',\n PGK = 'PGK',\n PHP = 'PHP',\n PKR = 'PKR',\n PLN = 'PLN',\n PYG = 'PYG',\n QAR = 'QAR',\n RON = 'RON',\n RSD = 'RSD',\n RWF = 'RWF',\n SAR = 'SAR',\n SCR = 'SCR',\n SDG = 'SDG',\n SEK = 'SEK',\n SGD = 'SGD',\n SLE = 'SLE',\n SLL = 'SLL',\n SOS = 'SOS',\n SRD = 'SRD',\n STN = 'STN',\n SVC = 'SVC',\n SYP = 'SYP',\n SZL = 'SZL',\n THB = 'THB',\n TJS = 'TJS',\n TMT = 'TMT',\n TND = 'TND',\n TOP = 'TOP',\n TRY = 'TRY',\n TTD = 'TTD',\n TWD = 'TWD',\n TZS = 'TZS',\n UAH = 'UAH',\n UGX = 'UGX',\n UYU = 'UYU',\n UZS = 'UZS',\n VND = 'VND',\n VUV = 'VUV',\n WST = 'WST',\n XAF = 'XAF',\n XCD = 'XCD',\n XOF = 'XOF',\n XPF = 'XPF',\n YER = 'YER',\n ZAR = 'ZAR',\n ZMW = 'ZMW',\n ZWL = 'ZWL',\n\n CDF = 'CDF',\n ERN = 'ERN',\n FKP = 'FKP',\n KPW = 'KPW',\n RUB = 'RUB',\n SBD = 'SBD',\n SHP = 'SHP',\n SSP = 'SSP',\n VES = 'VES',\n}\n\nexport const CurrencyToISO4217: Record<Currency, string> = {\n [Currency.AED]: '784',\n [Currency.AFN]: '971',\n [Currency.ALL]: '008',\n [Currency.AMD]: '051',\n [Currency.ANG]: '532',\n [Currency.AOA]: '973',\n [Currency.AUD]: '036',\n [Currency.AWG]: '533',\n [Currency.AZN]: '944',\n [Currency.BAM]: '977',\n [Currency.BBD]: '052',\n [Currency.BDT]: '050',\n [Currency.BGN]: '975',\n [Currency.BHD]: '048',\n [Currency.BIF]: '108',\n [Currency.BND]: '096',\n [Currency.BOB]: '068',\n [Currency.BRL]: '986',\n [Currency.BTN]: '064',\n [Currency.BWP]: '072',\n [Currency.BZD]: '084',\n [Currency.CAD]: '124',\n [Currency.CHF]: '756',\n [Currency.CLP]: '152',\n [Currency.CNY]: '156',\n [Currency.COP]: '170',\n [Currency.CRC]: '188',\n [Currency.CVE]: '132',\n [Currency.CZK]: '203',\n [Currency.DJF]: '262',\n [Currency.DKK]: '208',\n [Currency.DOP]: '214',\n [Currency.DZD]: '012',\n [Currency.EGP]: '818',\n [Currency.ETB]: '230',\n [Currency.EUR]: '978',\n [Currency.GBP]: '826',\n [Currency.GEL]: '981',\n [Currency.GHS]: '936',\n [Currency.GMD]: '270',\n [Currency.GNF]: '324',\n [Currency.GTQ]: '320',\n [Currency.GYD]: '328',\n [Currency.HKD]: '344',\n [Currency.HNL]: '340',\n [Currency.HTG]: '332',\n [Currency.HUF]: '348',\n [Currency.IDR]: '360',\n [Currency.INR]: '356',\n [Currency.IQD]: '368',\n [Currency.IRR]: '364',\n [Currency.ISK]: '352',\n [Currency.JMD]: '388',\n [Currency.JOD]: '400',\n [Currency.JPY]: '392',\n [Currency.KES]: '404',\n [Currency.KGS]: '417',\n [Currency.KHR]: '116',\n [Currency.KMF]: '174',\n [Currency.KRW]: '410',\n [Currency.KWD]: '414',\n [Currency.KYD]: '136',\n [Currency.KZT]: '398',\n [Currency.LKR]: '144',\n [Currency.LRD]: '430',\n [Currency.LSL]: '426',\n [Currency.LYD]: '434',\n [Currency.MAD]: '504',\n [Currency.MDL]: '498',\n [Currency.MGA]: '969',\n [Currency.MKD]: '807',\n [Currency.MMK]: '104',\n [Currency.MNT]: '496',\n [Currency.MOP]: '446',\n [Currency.MRU]: '929',\n [Currency.MUR]: '480',\n [Currency.MVR]: '462',\n [Currency.MXN]: '484',\n [Currency.MYR]: '458',\n [Currency.NAD]: '516',\n [Currency.NGN]: '566',\n [Currency.NIO]: '558',\n [Currency.NOK]: '578',\n [Currency.NPR]: '524',\n [Currency.NZD]: '554',\n [Currency.OMR]: '512',\n [Currency.PAB]: '590',\n [Currency.PEN]: '604',\n [Currency.PHP]: '608',\n [Currency.PKR]: '586',\n [Currency.PLN]: '985',\n [Currency.PYG]: '600',\n [Currency.QAR]: '634',\n [Currency.RON]: '946',\n [Currency.RSD]: '941',\n [Currency.RWF]: '646',\n [Currency.SAR]: '682',\n [Currency.SCR]: '690',\n [Currency.SDG]: '938',\n [Currency.SEK]: '752',\n [Currency.SGD]: '702',\n [Currency.SLE]: '925',\n [Currency.SLL]: '694',\n [Currency.SOS]: '706',\n [Currency.STN]: '930',\n [Currency.SVC]: '222',\n [Currency.SYP]: '760',\n [Currency.SZL]: '748',\n [Currency.THB]: '764',\n [Currency.TJS]: '972',\n [Currency.TMT]: '934',\n [Currency.TND]: '788',\n [Currency.TRY]: '949',\n [Currency.TTD]: '780',\n [Currency.TWD]: '901',\n [Currency.TZS]: '834',\n [Currency.UAH]: '980',\n [Currency.UGX]: '800',\n [Currency.USD]: '840',\n [Currency.UYU]: '858',\n [Currency.UZS]: '860',\n [Currency.VND]: '704',\n [Currency.XAF]: '950',\n [Currency.XCD]: '951',\n [Currency.XOF]: '952',\n [Currency.XPF]: '953',\n [Currency.YER]: '886',\n [Currency.ZAR]: '710',\n [Currency.ZMW]: '967',\n [Currency.ARS]: '032',\n [Currency.BMD]: '060',\n [Currency.BSD]: '044',\n [Currency.BYN]: '933',\n [Currency.CUP]: '192',\n [Currency.FJD]: '242',\n [Currency.ILS]: '376',\n [Currency.LAK]: '418',\n [Currency.LBP]: '422',\n [Currency.MWK]: '454',\n [Currency.MZN]: '943',\n [Currency.PGK]: '598',\n [Currency.SRD]: '968',\n [Currency.TOP]: '776',\n [Currency.VUV]: '548',\n [Currency.WST]: '882',\n [Currency.ZWL]: '932',\n [Currency.CLF]: '990',\n [Currency.CDF]: '976',\n [Currency.ERN]: '232',\n [Currency.FKP]: '238',\n [Currency.KPW]: '408',\n [Currency.RUB]: '643',\n [Currency.SBD]: '090',\n [Currency.SHP]: '654',\n [Currency.SSP]: '728',\n [Currency.VES]: '928',\n};\n\nexport type WithdrawCurrency =\n | Currency.USD\n | Currency.EUR\n | Currency.GBP\n | Currency.BRL\n | Currency.CAD;\n\nexport const WithdrawCurrencies = {\n [Currency.USD]: Currency.USD,\n [Currency.EUR]: Currency.EUR,\n [Currency.GBP]: Currency.GBP,\n [Currency.BRL]: Currency.BRL,\n [Currency.CAD]: Currency.CAD,\n} as const;\n\nexport function isWithdrawCurrency(\n currency: Currency\n): currency is WithdrawCurrency {\n return currency in WithdrawCurrencies;\n}\n\nexport type BankingCurrency =\n | Currency.USD\n | Currency.EUR\n | Currency.GBP\n | Currency.CAD\n | Currency.BRL;\n\nexport const BankingCurrencies = {\n [Currency.USD]: Currency.USD,\n [Currency.EUR]: Currency.EUR,\n [Currency.GBP]: Currency.GBP,\n [Currency.CAD]: Currency.CAD,\n [Currency.BRL]: Currency.BRL,\n} as const;\n\nexport function isBankingCurrency(\n currency: Currency\n): currency is BankingCurrency {\n return currency in BankingCurrencies;\n}\n\nconst FourDecimalCurrencies = new Set<Currency>([Currency.CLF]);\n\nconst ThreeDecimalCurrencies = new Set<Currency>([\n Currency.BHD,\n Currency.IQD,\n Currency.JOD,\n Currency.KWD,\n Currency.LYD,\n Currency.OMR,\n Currency.TND,\n]);\n\nconst ZeroDecimalCurrencies = new Set<Currency>([\n Currency.BIF,\n Currency.CLP,\n Currency.DJF,\n Currency.GNF,\n Currency.ISK,\n Currency.JPY,\n Currency.KMF,\n Currency.PYG,\n Currency.RWF,\n Currency.UGX,\n Currency.VND,\n Currency.VUV,\n Currency.XAF,\n Currency.XOF,\n Currency.XPF,\n]);\n\nexport function getCurrencyDecimals(currency: Currency): number {\n if (FourDecimalCurrencies.has(currency)) return 4;\n if (ThreeDecimalCurrencies.has(currency)) return 3;\n if (ZeroDecimalCurrencies.has(currency)) return 0;\n return 2;\n}\n\nexport interface Cents {\n /**\n * @isInt Cents must be an integer\n * @minimum 0 Minimum Cents is 0\n */\n cents: number;\n}\n\nexport interface CurrencyCents extends Cents {\n currency: Currency;\n}\n\nexport interface TypedCurrencyCents<T extends Currency> extends Cents {\n currency: T;\n}\n\nexport function isTypedCurrencyCents<T extends Currency>(\n cents: CurrencyCents,\n currency: T\n): cents is TypedCurrencyCents<T> {\n return cents.currency === currency;\n}\n\nexport interface TokenSubtotal {\n /**\n * The tokens address\n *\n * Solana - Token Mint Address\n * Evm - Token Contract Address\n */\n address: string;\n /**\n * Number of tokens\n */\n amount: number | string;\n /**\n * Number of decimals for the token\n */\n decimals?: number;\n}\n\nexport type Subtotal = CurrencyCents | Cents | TokenSubtotal;\n","import nsureSDK from '@nsure-ai/web-client-sdk';\n\nfunction fun(): string | null {\n if (nsureSDK) return nsureSDK.getDeviceId();\n return null;\n}\n\nexport default fun;\n","import {\n CoinflowBlockchain,\n CoinflowEnvs,\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CustomerInfo,\n} from './CoinflowTypes';\nimport {web3, base58} from './SolanaPeerDeps';\nimport LZString from 'lz-string';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {Currency} from './types/Subtotal';\nimport getNSureDeviceId from './NSure';\n\nexport class CoinflowUtils {\n env: CoinflowEnvs;\n url: string;\n\n constructor(env?: CoinflowEnvs) {\n this.env = env ?? 'prod';\n if (this.env === 'prod') this.url = 'https://api.coinflow.cash';\n else if (this.env === 'local') this.url = 'http://localhost:5000';\n else this.url = `https://api-${this.env}.coinflow.cash`;\n }\n\n async getNSurePartnerId(merchantId: string): Promise<string | undefined> {\n return fetch(this.url + `/merchant/view/${merchantId}`)\n .then(response => response.json())\n .then(\n (json: {\n nSurePartnerId: string | undefined;\n nSureSettings: {nSurePartnerId: string | undefined};\n }) => json.nSureSettings?.nSurePartnerId || json.nSurePartnerId\n )\n .catch(e => {\n console.error(e);\n return undefined;\n });\n }\n\n static getCoinflowBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://coinflow.cash';\n // @ts-expect-error This is for testing\n if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n if (env === 'local') return 'http://localhost:3000';\n\n return `https://${env}.coinflow.cash`;\n }\n\n static getCoinflowAppBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://app.coinflow.cash';\n // @ts-expect-error This is for testing\n if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n if (env === 'local') return 'http://localhost:3003';\n\n return `https://app-${env}.coinflow.cash`;\n }\n\n static getCoinflowApiUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://api.coinflow.cash';\n if (env === 'local') return 'http://localhost:5000';\n\n return `https://api-${env}.coinflow.cash`;\n }\n\n static getCoinflowUrl({\n walletPubkey,\n sessionKey,\n route,\n routePrefix,\n env,\n subtotal,\n presentment,\n transaction,\n blockchain = 'solana',\n webhookInfo,\n email,\n loaderBackground,\n handleHeightChangeId,\n bankAccountLinkRedirect,\n additionalWallets,\n chargebackProtectionData,\n merchantCss,\n color,\n rent,\n lockDefaultToken,\n tokens,\n planCode,\n disableApplePay,\n disableGooglePay,\n customerInfo,\n settlementType,\n lockAmount,\n nativeSolToConvert,\n theme,\n usePermit,\n transactionSigner,\n authOnly,\n deviceId,\n jwtToken,\n origins,\n threeDsChallengePreference,\n supportEmail,\n destinationAuthKey,\n allowedPaymentMethods,\n accountFundingTransaction,\n partialUsdcChecked,\n redemptionCheck,\n allowedWithdrawSpeeds,\n isZeroAuthorization,\n zeroAuthorizationConfig,\n baseUrl,\n }: CoinflowIFrameProps & {baseUrl?: string}): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(\n prefix + route,\n baseUrl ?? CoinflowUtils.getCoinflowBaseUrl(env)\n );\n\n if (walletPubkey) url.searchParams.append('pubkey', walletPubkey);\n if (sessionKey) url.searchParams.append('sessionKey', sessionKey);\n\n if (transaction) {\n url.searchParams.append('transaction', transaction);\n }\n\n if (subtotal) {\n if ('cents' in subtotal) {\n url.searchParams.append('cents', subtotal.cents.toString());\n if ('currency' in subtotal) {\n url.searchParams.append('currency', subtotal.currency.toString());\n } else {\n url.searchParams.append('currency', Currency.USD);\n }\n } else {\n url.searchParams.append('token', subtotal.address.toString());\n url.searchParams.append('amount', subtotal.amount.toString());\n }\n }\n\n if (presentment) url.searchParams.append('presentment', presentment);\n\n if (webhookInfo) {\n url.searchParams.append(\n 'webhookInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(webhookInfo))\n );\n }\n\n if (theme) {\n url.searchParams.append(\n 'theme',\n LZString.compressToEncodedURIComponent(JSON.stringify(theme))\n );\n }\n\n if (customerInfo) {\n url.searchParams.append(\n 'customerInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(customerInfo))\n );\n }\n\n if (email) {\n url.searchParams.append('email', email);\n }\n if (supportEmail) url.searchParams.append('supportEmail', supportEmail);\n\n if (tokens) {\n url.searchParams.append('tokens', tokens.toString());\n }\n\n if (loaderBackground) {\n url.searchParams.append('loaderBackground', loaderBackground);\n }\n\n if (handleHeightChangeId) {\n url.searchParams.append(\n 'useHeightChange',\n handleHeightChangeId.toString()\n );\n }\n\n if (bankAccountLinkRedirect) {\n url.searchParams.append(\n 'bankAccountLinkRedirect',\n bankAccountLinkRedirect\n );\n }\n\n if (additionalWallets)\n url.searchParams.append(\n 'additionalWallets',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(additionalWallets)\n )\n );\n\n if (chargebackProtectionData)\n url.searchParams.append(\n 'chargebackProtectionData',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(chargebackProtectionData)\n )\n );\n if (deviceId) {\n url.searchParams.append('deviceId', deviceId);\n } else {\n const deviceId = getNSureDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\n\n if (merchantCss) url.searchParams.append('merchantCss', merchantCss);\n if (color) url.searchParams.append('color', color);\n if (rent) url.searchParams.append('rent', rent.lamports.toString());\n if (redemptionCheck) url.searchParams.append('redemptionCheck', 'true');\n if (nativeSolToConvert)\n url.searchParams.append(\n 'nativeSolToConvert',\n nativeSolToConvert.lamports.toString()\n );\n if (lockDefaultToken) url.searchParams.append('lockDefaultToken', 'true');\n if (planCode) url.searchParams.append('planCode', planCode);\n\n if (disableApplePay) url.searchParams.append('disableApplePay', 'true');\n if (disableGooglePay) url.searchParams.append('disableGooglePay', 'true');\n if (settlementType)\n url.searchParams.append('settlementType', settlementType);\n\n if (lockAmount) url.searchParams.append('lockAmount', 'true');\n\n if (usePermit === false) url.searchParams.append('usePermit', 'false');\n if (transactionSigner)\n url.searchParams.append('transactionSigner', transactionSigner);\n if (authOnly === true) url.searchParams.append('authOnly', 'true');\n\n // zeroAuthorizationConfig takes precedence over isZeroAuthorization\n if (zeroAuthorizationConfig) {\n url.searchParams.append(\n 'zeroAuthorizationConfig',\n JSON.stringify(zeroAuthorizationConfig)\n );\n } else if (isZeroAuthorization === true) {\n url.searchParams.append('isZeroAuthorization', 'true');\n }\n\n if (partialUsdcChecked === true)\n url.searchParams.append('partialUsdcChecked', 'true');\n if (jwtToken) url.searchParams.append('jwtToken', jwtToken);\n if (origins)\n url.searchParams.append(\n 'origins',\n LZString.compressToEncodedURIComponent(JSON.stringify(origins))\n );\n\n if (allowedPaymentMethods)\n url.searchParams.append(\n 'allowedPaymentMethods',\n allowedPaymentMethods.join(',')\n );\n\n if (threeDsChallengePreference)\n url.searchParams.append(\n 'threeDsChallengePreference',\n threeDsChallengePreference\n );\n\n if (destinationAuthKey)\n url.searchParams.append('destinationAuthKey', destinationAuthKey);\n\n if (accountFundingTransaction)\n url.searchParams.append(\n 'accountFundingTransaction',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(accountFundingTransaction)\n )\n );\n\n if (allowedWithdrawSpeeds)\n url.searchParams.append(\n 'allowedWithdrawSpeeds',\n allowedWithdrawSpeeds.join(',')\n );\n\n return url.toString();\n }\n\n static getTransaction(props: CoinflowPurchaseProps): string | undefined {\n if (!props.blockchain) return undefined;\n\n return this.byBlockchain<() => string | undefined>(props.blockchain, {\n solana: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n if (!web3)\n throw new Error('@solana/web3.js dependency is required for Solana');\n if (!base58) throw new Error('bs58 dependency is required for Solana');\n if (!transaction) return undefined;\n return base58.encode(\n Uint8Array.from(\n (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n )\n );\n },\n polygon: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n eth: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n base: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n arbitrum: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n stellar: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n if (!transaction) return undefined;\n // Transaction is already base64 XDR string, pass through directly\n return transaction as string;\n },\n monad: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n user: () => {\n return undefined;\n },\n })();\n }\n\n static byBlockchain<T>(\n blockchain: CoinflowBlockchain,\n args: {\n solana: T;\n eth: T;\n polygon: T;\n base: T;\n arbitrum: T;\n stellar: T;\n monad: T;\n user: T;\n }\n ): T {\n switch (blockchain) {\n case 'solana':\n return args.solana;\n case 'polygon':\n return args.polygon;\n case 'eth':\n return args.eth;\n case 'base':\n return args.base;\n case 'arbitrum':\n return args.arbitrum;\n case 'stellar':\n return args.stellar;\n case 'monad':\n return args.monad;\n case 'user':\n return args.user;\n default:\n throw new Error('blockchain not supported!');\n }\n }\n}\n\nexport interface FullName {\n firstName: string;\n lastName: string;\n}\n\nexport function getCustomerName(\n info: CustomerInfo | undefined\n): FullName | undefined {\n if (!info) return undefined;\n\n let firstName: string | undefined, lastName: string | undefined;\n if ('name' in info && info.name) {\n firstName = info.name.split(' ')[0];\n lastName = info.name.split(' ').slice(1).join(' ');\n }\n\n if ('firstName' in info && info.firstName) firstName = info.firstName;\n\n if ('lastName' in info && info.lastName) lastName = info.lastName;\n\n if (firstName && lastName)\n return {\n firstName,\n lastName,\n };\n return undefined;\n}\n","import {\n AuthDeclinedWalletCallInfo,\n CoinflowBlockchain,\n CoinflowPurchaseProps,\n EthWallet,\n OnAuthDeclinedMethod,\n OnSuccessMethod,\n SolanaWallet,\n StellarWallet,\n WalletTypes,\n} from './CoinflowTypes';\nimport {CoinflowUtils} from './CoinflowUtils';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {web3, base58} from './SolanaPeerDeps';\n\nexport type WalletCall =\n | {method: IFrameMessageMethods; data: string}\n | SuccessWalletCall;\n\ntype SuccessWalletCall = {\n method: IFrameMessageMethods.Success;\n data: string;\n info: {paymentId: string; hash?: string};\n};\n\ntype AuthDeclinedWalletCall = {\n method: IFrameMessageMethods.AuthDeclined;\n data: string;\n info: AuthDeclinedWalletCallInfo;\n};\n\nexport interface IFrameMessageHandlers {\n handleSendTransaction: (transaction: string) => Promise<string>;\n handleSignMessage?: (message: string) => Promise<string>;\n handleSignTransaction?: (transaction: string) => Promise<string>;\n handleHeightChange?: (height: string) => void;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}\n\nexport enum IFrameMessageMethods {\n SignMessage = 'signMessage',\n SignTransaction = 'signTransaction',\n SendTransaction = 'sendTransaction',\n HeightChange = 'heightChange',\n Success = 'success',\n AuthDeclined = 'authDeclined',\n Loaded = 'loaded',\n AccountLinked = 'accountLinked',\n}\n\nexport function getWalletPubkey(\n input: Pick<CoinflowPurchaseProps, 'wallet' | 'blockchain'>\n): string | null | undefined {\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in input &&\n typeof input.signer === 'object' &&\n input.signer &&\n 'wallet' in input.signer\n )\n wallet = input.signer.wallet as WalletTypes;\n else if ('wallet' in input && input.wallet) wallet = input.wallet;\n\n if (!wallet) return;\n\n if (typeof wallet === 'string') return wallet;\n\n if (typeof wallet === 'object') {\n if ('publicKey' in wallet)\n return wallet.publicKey ? wallet.publicKey.toString() : undefined;\n\n if ('address' in wallet)\n return wallet.address ? (wallet.address as string) : undefined;\n }\n\n return null;\n}\n\nexport function handleIFrameMessage(\n rawMessage: string,\n handlers: IFrameMessageHandlers,\n handleHeightChangeId: string | number\n): Promise<string> | void {\n let walletCall: WalletCall;\n try {\n walletCall = JSON.parse(rawMessage);\n if (!('method' in walletCall) || !('data' in walletCall)) return;\n } catch (e) {\n console.error('handleIFrameMessage JSON parse', e);\n return;\n }\n\n const {data, method} = walletCall;\n switch (method) {\n case IFrameMessageMethods.SignMessage:\n if (!handlers.handleSignMessage) return;\n return handlers.handleSignMessage(data);\n case IFrameMessageMethods.SignTransaction:\n if (!handlers.handleSignTransaction) return;\n return handlers.handleSignTransaction(data);\n case IFrameMessageMethods.SendTransaction:\n return handlers.handleSendTransaction(data);\n case IFrameMessageMethods.HeightChange + ':' + handleHeightChangeId:\n if (!handlers.handleHeightChange) return;\n return handlers.handleHeightChange(data);\n case IFrameMessageMethods.Success:\n if (!handlers.onSuccess) return;\n handlers.onSuccess((walletCall as SuccessWalletCall).info);\n return;\n case IFrameMessageMethods.AuthDeclined:\n if (!handlers.onAuthDeclined) return;\n handlers.onAuthDeclined((walletCall as AuthDeclinedWalletCall).info);\n return;\n case IFrameMessageMethods.Loaded:\n return;\n case IFrameMessageMethods.AccountLinked:\n return;\n }\n\n console.warn(\n `Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`\n );\n}\n\nexport function getHandlers(\n props: Pick<\n CoinflowPurchaseProps,\n 'wallet' | 'blockchain' | 'onSuccess' | 'onAuthDeclined'\n >\n): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n let chain: CoinflowBlockchain | undefined;\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in props &&\n typeof props.signer === 'object' &&\n props.signer &&\n 'blockchain' in props.signer &&\n 'wallet' in props.signer\n ) {\n chain = props.signer.blockchain as CoinflowBlockchain;\n wallet = props.signer.wallet as WalletTypes;\n } else if ('blockchain' in props && props.blockchain) {\n chain = props.blockchain;\n wallet = props.wallet;\n }\n\n if (!chain) {\n return {\n handleSendTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignMessage: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n };\n }\n\n return CoinflowUtils.byBlockchain(chain, {\n solana: () =>\n getSolanaWalletHandlers({\n wallet: wallet as SolanaWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n eth: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n polygon: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n base: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n arbitrum: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n stellar: () =>\n getStellarWalletHandlers({\n wallet: wallet as StellarWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n monad: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n user: () => getSessionKeyHandlers(props),\n })();\n}\n\nfunction getSolanaWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: SolanaWallet;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = getSolanaTransaction(transaction);\n return await wallet.sendTransaction(tx);\n },\n handleSignMessage: async (message: string) => {\n const signMessage = wallet.signMessage;\n if (!signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n\n const signedMessage = await signMessage(\n new TextEncoder().encode(message)\n );\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(signedMessage);\n },\n handleSignTransaction: async (transaction: string) => {\n const signTransaction = wallet.signTransaction;\n if (!signTransaction) {\n throw new Error('signTransaction is not supported by this wallet');\n }\n const tx = getSolanaTransaction(transaction);\n const signedTransaction = await signTransaction(tx);\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(\n Uint8Array.from(\n signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n )\n );\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getSolanaTransaction(\n data: string\n): Transaction | VersionedTransaction {\n if (!web3)\n throw new Error(\n '@solana/web3.js is not defined. Please install @solana/web3.js into your project'\n );\n\n if (!base58)\n throw new Error(\n 'bs58 is not defined. Please install bs58 into your project'\n );\n\n const parsedUInt8Array = base58.decode(data);\n const vtx = web3.VersionedTransaction.deserialize(parsedUInt8Array);\n if (vtx.version === 'legacy') return web3.Transaction.from(parsedUInt8Array);\n return vtx;\n}\n\nfunction getEvmWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: EthWallet;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());\n const {hash} = await wallet.sendTransaction(tx);\n return hash;\n },\n handleSignMessage: async (message: string) => {\n return wallet.signMessage(message);\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getStellarWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: StellarWallet;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n // transaction is unsigned base64 XDR\n // dapp needs to handle sending and confirming\n throw new Error(\n `sendTransaction is not supported on stellar, error when sending: ${transaction}`\n );\n },\n handleSignMessage: async (message: string) => {\n if (!wallet.signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n // Returns base64-encoded signature\n return await wallet.signMessage(message);\n },\n handleSignTransaction: async (transaction: string) => {\n if (!wallet.signTransaction) {\n throw new Error('signTransaction is not supported by this wallet');\n }\n // Returns signed base64 XDR\n return await wallet.signTransaction(transaction);\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getSessionKeyHandlers({\n onSuccess,\n onAuthDeclined,\n}: Pick<CoinflowPurchaseProps, 'onSuccess' | 'onAuthDeclined'>): Omit<\n IFrameMessageHandlers,\n 'handleHeightChange'\n> {\n return {\n handleSendTransaction: async () => {\n return Promise.resolve('');\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n","export type EventBusCallback = (event: Event) => void;\n\nexport class EventBus {\n public static on(type: string, callback: EventBusCallback) {\n document.addEventListener(type, callback);\n }\n\n public static dispatch(type: string, data: any) {\n document.dispatchEvent(new CustomEvent(type, {detail: data}));\n }\n\n public static remove(type: string, callback: EventBusCallback) {\n document.removeEventListener(type, callback);\n }\n}\n","// Type definitions for TokenEx iframe integration\n/// <reference path=\"./TokenEx.global.d.ts\" />\n\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\nimport type {Properties as CSSProperties} from 'csstype';\n\nexport const TokenExCardNumberIframeId = 'tokenExCardNumber';\nexport const TokenExCvvContainerID = 'tokenExCardCvv';\nexport interface TokenExIframe extends ReturnType<typeof TokenEx.Iframe> {\n tokenize: () => Promise<TokenizationResponse>;\n}\n\nexport const CARD_TYPE_MAPPING: Record<CardType, string> = {\n [CardType.VISA]: 'visa',\n [CardType.MASTERCARD]: 'masterCard',\n [CardType.AMEX]: 'americanExpress',\n [CardType.DISCOVER]: 'discover',\n};\n\nexport interface TokenExIFrameConfiguration {\n origin: string;\n timestamp: string;\n tokenExID: string;\n tokenScheme: string;\n authenticationKey: string;\n pci: true;\n token?: string;\n use3DS?: boolean;\n threeDSMethodNotificationUrl?: string;\n}\n\nexport interface CardFormInputStyles {\n base: CSSProperties | string;\n placeholder?: CSSProperties | string;\n focus?: CSSProperties | string;\n error?: CSSProperties | string;\n}\n\nexport type CoinflowCardTokenResponse = {\n token: string;\n};\n\nexport interface CoinflowCardNumberInputProps {\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins: string[];\n font?: string;\n}\n\nexport interface CoinflowCvvOnlyInputProps {\n token: string;\n cardType: CardType;\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins: string[];\n font?: string;\n}\n\nexport interface VersionDetail {\n threeDSMethodURL: string;\n acsStartProtocolVersion: string;\n acsEndProtocolVersion: string;\n threeDSServerStartVersion: string;\n threeDSServerEndVersion?: string;\n acsInfoInd: [string];\n directoryServerID: string;\n dsStartProtocolVersion: string;\n dsEndProtocolVersion: string;\n dsIdentifier: string;\n threeDSServerTransID: string;\n}\n\nexport interface TokenizationResponse {\n cardType: string;\n cvvIncluded: true;\n firstSix: string;\n lastFour: string;\n referenceNumber: string;\n token: string;\n tokenHMAC: string;\n recommended3dsVersion?: Record<string, string>;\n threeDSecureResponse?: VersionDetail[];\n}\n","import type {Properties as CSSProperties} from 'csstype';\nimport {\n TokenizationResponse,\n TokenExCvvContainerID,\n TokenExIframe,\n TokenExIFrameConfiguration,\n CARD_TYPE_MAPPING,\n TokenExCardNumberIframeId,\n} from './TokenEx';\nimport {CoinflowUtils} from '../CoinflowUtils';\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\n\nexport type MerchantIdOrCheckoutJwt =\n | {checkoutJwt: string}\n | {merchantId: string};\n\nexport interface CommonDoInitializeTokenExIframeArgs {\n css: string;\n debug?: boolean;\n font?: string;\n origins: string[];\n tokenExScriptLoaded: boolean;\n env: CoinflowEnvs;\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n}\n\nexport type DoInitializeTokenExIframeArgs =\n CommonDoInitializeTokenExIframeArgs & MerchantIdOrCheckoutJwt;\n\nexport type DoInitializeCvvOnlyTokenExIframeArgs =\n DoInitializeTokenExIframeArgs & {\n token: string;\n cardType: CardType;\n };\n\nexport type GetIFrameConfigArgs = {\n token?: string;\n origins: string[];\n env: CoinflowEnvs;\n} & MerchantIdOrCheckoutJwt;\n\nexport async function getIframeConfig(\n args: GetIFrameConfigArgs\n): Promise<TokenExIFrameConfiguration> {\n const {token, origins, env} = args;\n return new Promise((resolve, reject) => {\n fetch(new CoinflowUtils(env).url + '/api/tokenize/iframe/config', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n origins,\n token,\n merchantId: 'merchantId' in args ? args.merchantId : undefined,\n checkoutJwt: 'checkoutJwt' in args ? args.checkoutJwt : undefined,\n }),\n })\n .then(async res => {\n resolve((await res.json()) as TokenExIFrameConfiguration);\n })\n .catch(e => reject(e));\n });\n}\n\nexport function setTokenExScriptTag({\n env,\n setTokenExScriptLoaded,\n}: {\n env: CoinflowEnvs;\n setTokenExScriptLoaded: (b: boolean) => void;\n}) {\n const scriptTagId = 'tokenex-script';\n if (document.head.querySelector(`#${scriptTagId}`)) {\n setTokenExScriptLoaded(true);\n }\n\n const sdkScriptTag = document.createElement('script');\n sdkScriptTag.src =\n env === 'prod'\n ? 'https://htp.tokenex.com/iframe/iframe-v3.min.js'\n : 'https://test-htp.tokenex.com/iframe/iframe-v3.min.js';\n sdkScriptTag.id = scriptTagId;\n\n document.head.appendChild(sdkScriptTag);\n\n document.getElementById(scriptTagId)!.addEventListener('load', () => {\n console.log('Setting tokenExScriptLoaded to true!');\n setTokenExScriptLoaded(true);\n });\n}\n\nfunction loadIframe({\n iframe,\n setCachedToken,\n setLoaded,\n}: {\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n iframe: ReturnType<typeof TokenEx.Iframe>;\n}): TokenExIframe {\n const tokenize = async (): Promise<TokenizationResponse> => {\n iframe.tokenize();\n return await new Promise<TokenizationResponse>((resolve, reject) => {\n iframe.on('tokenize', (data: TokenizationResponse) => {\n setCachedToken(data.token);\n resolve(data);\n });\n iframe.on('validate', (data: {isValid: boolean; isCvvValid: boolean}) => {\n // noinspection PointlessBooleanExpressionJS\n const isInvalid = !data.isValid || data.isCvvValid === false;\n if (isInvalid) reject(data);\n });\n });\n };\n\n iframe.on('change', () => setCachedToken(undefined));\n iframe.on('cvvChange', () => setCachedToken(undefined));\n\n iframe.on('load', () => {\n setTimeout(() => setLoaded(true), 350);\n const el: HTMLIFrameElement | null = document.querySelector(\n '#tx_iframe_tokenExCardNumber'\n );\n if (el) {\n // noinspection JSDeprecatedSymbols\n el.scrolling = 'no';\n }\n });\n\n iframe.on('focus', () => {\n iframe.focus();\n });\n iframe.on('cvvFocus', () => {\n iframe.cvvFocus();\n });\n\n setLoaded(false);\n iframe.load();\n\n return {...iframe, tokenize};\n}\n\nexport async function doInitializeCvvOnlyTokenExIframe(\n args: DoInitializeCvvOnlyTokenExIframeArgs\n) {\n const {token, cardType} = args;\n return await doInitialize(TokenExCvvContainerID, args, {\n cvvOnly: true,\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n placeholder: 'CVV',\n token,\n cardType: CARD_TYPE_MAPPING[cardType],\n });\n}\n\nexport async function doInitializeTokenExIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n cvvPlaceholder: 'CVV',\n });\n}\n\nexport async function doInitializeTokenExCardOnlyIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {cvv: false});\n}\n\nasync function doInitialize(\n id: string,\n args: DoInitializeTokenExIframeArgs,\n configOverrides: Partial<TokenEx.Config>\n) {\n const {tokenExScriptLoaded, css, debug, font, setCachedToken, setLoaded} =\n args;\n if (!tokenExScriptLoaded && typeof TokenEx === 'undefined') {\n console.warn(\n 'Warning Unable to load TokenEx on first attempt waiting for load event from document.head.script#tokenex-script'\n );\n return;\n }\n const iframeConfig = await getIframeConfig({\n ...args,\n token: configOverrides.token,\n });\n const {styles} = getStyles(css);\n const config = {\n ...iframeConfig,\n placeholder: '0000 0000 0000 0000',\n enablePrettyFormat: true,\n styles,\n font,\n debug: debug ?? false,\n ...configOverrides,\n };\n const iframe: ReturnType<typeof TokenEx.Iframe> = TokenEx.Iframe(id, config);\n\n return loadIframe({iframe, setCachedToken, setLoaded});\n}\n\nfunction getStyles(s: string) {\n const css = JSON.parse(s);\n const styles = {\n base: CSSPropertiesToComponent(css.base),\n focus: CSSPropertiesToComponent(css.focus),\n error: CSSPropertiesToComponent(css.error),\n placeholder: CSSPropertiesToComponent(css.placeholder),\n cvv: {\n base: CSSPropertiesToComponent(css.cvv?.base),\n focus: CSSPropertiesToComponent(css.cvv?.focus),\n error: CSSPropertiesToComponent(css.cvv?.error),\n placeholder: CSSPropertiesToComponent(css?.placeholder),\n },\n };\n\n return {styles};\n}\n\nfunction CSSPropertiesToComponent(\n dict: CSSProperties | string | undefined\n): string {\n if (!dict) return '';\n if (typeof dict === 'string') return dict;\n\n let str = '';\n for (const [key, value] of Object.entries(dict)) {\n let clo = '';\n key.split('').forEach(lt => {\n if (lt.toUpperCase() === lt) {\n clo += '-' + lt.toLowerCase();\n } else {\n clo += lt;\n }\n });\n str += clo + ':' + value + ';';\n }\n return str;\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* oxlint-disable */\n\nimport {AnyObject} from './AnyObject';\nimport {SellerInfo} from './CartitemCommon';\n\n/**\n * An nft cart item\n */\nexport type nftCartItem = {\n /**\n * Denotes the cart item class. The item schema is chosen based on this value\n */\n itemClass: 'nft';\n /**\n * The name of the related product\n *\n * @minLength 1\n */\n productName: string;\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n productType: productType;\n /**\n * The item's list price\n */\n listPrice?: {\n /**\n * The amount in the currency, which is specified in the `currency` property\n */\n valueInCurrency?: number;\n /**\n * Currency specified as a three letter code according to ISO 4217\n */\n currency?: string;\n };\n /**\n * The item's list price\n */\n sellingPrice: {\n /**\n * The amount in the currency, which is specified in the `currency` property\n */\n valueInCurrency?: number;\n /**\n * Currency specified as a three-letter code according to ISO 4217\n */\n currency?: string;\n };\n /**\n * The number of units sold\n */\n quantity: number;\n /**\n * Any additional data that the store can provide on the product, e.g. description, link to image, etc.\n */\n rawProductData?: AnyObject;\n seller?: SellerInfo;\n transactionHistory?: TransactionHistoryItem[];\n};\n\ntype TransactionHistoryItem = {\n txHash: string;\n blockNumber: number;\n txTime: string;\n assetID: string;\n registryContract: string;\n from: string;\n to: string;\n paymentToken: string;\n paymentAmount: string;\n chain: string;\n txType: string;\n};\n\nexport type productType =\n | 'inGameProduct'\n | 'gameOfSkill'\n | 'dataStorage'\n | 'computingResources'\n | 'sportsTicket'\n | 'eSportsTicket'\n | 'musicTicket'\n | 'conferenceTicket'\n | 'virtualSportsTicket'\n | 'virtualESportsTicket'\n | 'virtualMusicTicket'\n | 'virtualConferenceTicket'\n | 'alcohol'\n | 'DLC'\n | 'subscription'\n | 'fundACause'\n | 'realEstate'\n | 'computingContract'\n | 'digitalArt'\n | 'topUp'\n | 'ownershipContract'\n | 'inGameCurrency'\n | 'digitalCollectibles'\n | 'digitalCollectiblesMarketplace'\n | 'digitalGiftingMarketplace'\n | 'sweepstakes'\n | 'virtualSportsEvents'\n | 'contractInvoicing'\n | 'onlineCasino'\n | 'cryptoOnramp'\n | 'gaming'\n | 'travelDocuments'\n | 'musicStreaming'\n | 'digitalContent'\n | 'eBooks'\n | 'digitalSubscriptionContent';\n\nexport namespace nftCartItem {\n /**\n * Denotes the cart item class. The item schema is chosen based on this value\n */\n export enum itemClass {\n NFT = 'nft',\n }\n\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n export enum productType {\n IN_GAME_PRODUCT = 'inGameProduct',\n GAME_OF_SKILL = 'gameOfSkill',\n DATA_STORAGE = 'dataStorage',\n COMPUTING_RESOURCES = 'computingResources',\n SPORTS_TICKET = 'sportsTicket',\n E_SPORTS_TICKET = 'eSportsTicket',\n MUSIC_TICKET = 'musicTicket',\n CONFERENCE_TICKET = 'conferenceTicket',\n VIRTUAL_SPORTS_TICKET = 'virtualSportsTicket',\n VIRTUAL_ESPORTS_TICKET = 'virtualESportsTicket',\n VIRTUAL_MUSIC_TICKET = 'virtualMusicTicket',\n VIRTUAL_CONFERENCE_TICKET = 'virtualConferenceTicket',\n ALCOHOL = 'alcohol',\n DLC = 'DLC',\n SUBSCRIPTION = 'subscription',\n FUND_ACAUSE = 'fundACause',\n REAL_ESTATE = 'realEstate',\n COMPUTING_CONTRACT = 'computingContract',\n DIGITAL_ART = 'digitalArt',\n TOP_UP = 'topUp',\n OWNERSHIP_CONTRACT = 'ownershipContract',\n IN_GAME_CURRENCY = 'inGameCurrency',\n MONEY_TOP_UP_CART_ITEM = 'moneyTopUpCartItem',\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowUtils,\n handleIFrameMessage,\n IFrameMessageHandlers,\n} from './common';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-coinflow-iframe',\n standalone: true,\n imports: [],\n template: ` <iframe\n width=\"100%\"\n height=\"100%\"\n #iframe\n scrolling=\"{{ iframeProps?.handleHeightChangeId ? 'no' : 'yes' }}\"\n allow=\"payment;camera;clipboard-write\"\n title=\"withdraw\"\n frameBorder=\"0\"\n [src]=\"dynamicUrl\"\n credentialless\n (load)=\"handleIframeLoad()\"\n ></iframe>`,\n})\nexport class CoinflowIFrameComponent {\n @Input() iframeProps!: CoinflowIFrameProps;\n @Input() messageHandlers!: IFrameMessageHandlers;\n @Input() onLoad?: () => void | Promise<void>;\n @Input() waitForLoadedMessage?: boolean;\n\n @Output() messageEvent = new EventEmitter<any>();\n\n dynamicUrl?: SafeResourceUrl;\n @ViewChild('iframe') iframe?: ElementRef<HTMLIFrameElement>;\n private isLoading = true;\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnInit() {\n const coinflowUrl = CoinflowUtils.getCoinflowUrl(this.iframeProps);\n this.dynamicUrl =\n this.sanitizer.bypassSecurityTrustResourceUrl(coinflowUrl);\n }\n\n @HostListener('window:message', ['$event']) onPostMessage(event: any) {\n if (\n !event.origin.includes(\n CoinflowUtils.getCoinflowBaseUrl(this.iframeProps.env)\n )\n )\n return;\n\n this.messageEvent.emit(event);\n\n if (this.waitForLoadedMessage) {\n try {\n const message = JSON.parse(event.data);\n if (\n message &&\n typeof message === 'object' &&\n message.method === 'loaded'\n ) {\n this.isLoading = false;\n this.onLoad?.();\n }\n } catch (error) {\n // Ignore parse errors\n }\n }\n\n const promise = handleIFrameMessage(\n event.data,\n this.messageHandlers,\n this.iframeProps.handleHeightChangeId\n );\n if (!promise) return;\n promise\n .then(this.sendMessage.bind(this))\n .catch(e => this.sendMessage('ERROR ' + e.message));\n }\n\n sendMessage(message: string) {\n if (!this.iframe || !this.iframe.nativeElement) return;\n this.iframe.nativeElement.contentWindow!.postMessage(message, '*');\n }\n\n handleIframeLoad() {\n if (this.waitForLoadedMessage) return;\n\n this.isLoading = false;\n this.onLoad?.();\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CoinflowUtils,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\n\n@Component({\n selector: 'lib-coinflow-purchase',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"purchaseProps?.onLoad\" [waitForLoadedMessage]=\"true\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowPurchaseComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & WithOnLoad;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/purchase-v2/${this.purchaseProps?.merchantId}`,\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n handleHeightChangeId,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-history works!</p> ',\n})\nexport class CoinflowPurchaseHistoryComponent {}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-protection',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-protection works!</p> ',\n})\nexport class CoinflowPurchaseProtectionComponent {}\n","import {Component, Input} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowWithdrawProps,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\n\n@Component({\n selector: 'lib-coinflow-withdraw',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"withdrawProps?.onLoad\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowWithdrawComponent {\n @Input() withdrawProps!: CoinflowWithdrawProps & WithOnLoad;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.withdrawProps);\n this.messageHandlers = getHandlers(this.withdrawProps);\n this.messageHandlers.handleHeightChange =\n this.withdrawProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.withdrawProps,\n walletPubkey,\n route: `/withdraw/${this.withdrawProps?.merchantId}`,\n transaction: undefined,\n handleHeightChangeId,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-withdraw-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-withdraw-history works!</p> ',\n})\nexport class CoinflowWithdrawHistoryComponent {}\n","import {\n doInitializeCvvOnlyTokenExIframe,\n doInitializeTokenExCardOnlyIframe,\n doInitializeTokenExIframe,\n MerchantIdOrCheckoutJwt,\n TokenExIframe,\n} from '../common';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CardFormService {\n loaded = false;\n tokenExIframe: TokenExIframe | undefined = undefined;\n\n setTokenExIframe(iframe: TokenExIframe | undefined) {\n this.tokenExIframe = iframe;\n }\n\n setCachedToken() {}\n\n setLoaded(input: boolean) {\n this.loaded = input;\n }\n\n async initializeCvvOnlyTokenExIframe(\n args: Omit<\n Parameters<typeof doInitializeCvvOnlyTokenExIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n const iframe = await doInitializeCvvOnlyTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n\n async initializeTokenExIframe(\n args: Omit<\n Parameters<typeof doInitializeTokenExIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n console.log('initializeTokenExIframe');\n const iframe = await doInitializeTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n console.log('iframe', iframe);\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n console.log('LOADED');\n return iframe;\n }\n\n async initializeTokenExCardOnlyIframe(\n args: Omit<\n Parameters<typeof doInitializeTokenExCardOnlyIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n const iframe = await doInitializeTokenExCardOnlyIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberInput implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeTokenExIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n public reinitialize() {\n this.iframe = undefined;\n this.initializeTokenEx();\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberOnlyInput implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeTokenExCardOnlyIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n public reinitialize() {\n this.iframe = undefined;\n this.initializeTokenEx();\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component} from '@angular/core';\nimport {TokenExCvvContainerID} from '../common';\n\n@Component({\n selector: 'lib-coinflow-cvv-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\" ></div>',\n})\nexport class CoinflowCvvInputComponent {\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {\n Component,\n inject,\n Input,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport {\n CoinflowCvvOnlyInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCvvContainerID,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-cvv-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\"></div>',\n})\nexport class CoinflowCvvOnlyInputComponent implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCvvOnlyInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeCvvOnlyTokenExIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => {\n this.iframe = iframe;\n })\n .catch(e => console.error(e));\n }\n\n private cleanup() {\n if (this.iframe) {\n const iframeElement = document.querySelector(`#${TokenExCvvContainerID}`);\n if (iframeElement) iframeElement.innerHTML = '';\n this.iframe = undefined;\n }\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.args && !changes.args.firstChange) {\n this.reinitialize();\n }\n }\n\n public reinitialize() {\n this.cleanup();\n setTimeout(() => {\n this.initializeTokenEx();\n }, 500);\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from '../coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CoinflowUtils,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from '../common';\nimport {WithOnLoad} from '../../public-api';\n\n@Component({\n selector: 'lib-coinflow-mobile-wallet-button',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template: ` <div style=\"position: relative; height: 100%;\">\n <div\n [style.background-color]=\"purchaseProps.color\"\n [style.display]=\"overlayDisplayOverride ?? display\"\n [style.opacity]=\"opacity\"\n [style.align-items]=\"alignItems\"\n style=\"width: 100%; height: 40px; position: absolute; top: 0; bottom: 0; left: 0; z-index: 20; justify-content: center; pointer-events: none;\"\n >\n <ng-content></ng-content>\n </div>\n <div style=\"position: relative; z-index: 10; height: 100%;\">\n <lib-coinflow-iframe\n (messageEvent)=\"handleMessage($event)\"\n ng-if=\"iframeProps && messageHandlers\"\n [iframeProps]=\"iframeProps!\"\n [messageHandlers]=\"messageHandlers!\"\n [onLoad]=\"purchaseProps?.onLoad\"\n [waitForLoadedMessage]=\"true\"\n ></lib-coinflow-iframe>\n </div>\n </div>`,\n})\nexport class CoinflowMobileWalletButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps &\n WithOnLoad & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n @Input() route!: string;\n @Input() overlayDisplayOverride: string | undefined;\n @Input() alignItems: string | undefined;\n opacity: number = 0.8;\n display: string = 'flex';\n\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n handleMessage({data}: {data: string}) {\n try {\n const res = JSON.parse(data);\n\n console.log({data});\n if ('method' in res && res.data.startsWith('ERROR')) {\n this.purchaseProps.onError?.(res.info);\n return;\n }\n\n if ('method' in res && res.method === 'loaded') {\n this.opacity = 1;\n setTimeout(() => {\n this.display = 'none';\n }, 2000);\n }\n } catch (e) {}\n }\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/${this.route}/${this.purchaseProps?.merchantId}`,\n routePrefix: 'form',\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n handleHeightChangeId,\n };\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\n\n@Component({\n selector: 'lib-coinflow-apple-pay-button',\n standalone: true,\n imports: [CoinflowMobileWalletButtonComponent],\n template: ` <lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"apple-pay\"\n >\n <svg id=\"svg-logo\" viewBox=\"0 0 35 15\">\n <svg\n id=\"svg-logo\"\n x=\"0\"\n y=\"3.85\"\n height=\"7.3\"\n width=\"35\"\n className=\"logo\"\n viewBox=\"0 0 105 43\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Apple Logo</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g [attr.fill]=\"fill()\">\n <path\n d=\"M19.4028,5.5674 C20.6008,4.0684 21.4138,2.0564 21.1998,0.0004 C19.4458,0.0874 17.3058,1.1574 16.0668,2.6564 C14.9538,3.9414 13.9688,6.0374 14.2258,8.0074 C16.1948,8.1784 18.1618,7.0244 19.4028,5.5674\"\n ></path>\n <path\n d=\"M21.1772,8.3926 C18.3182,8.2226 15.8872,10.0156 14.5212,10.0156 C13.1552,10.0156 11.0642,8.4786 8.8022,8.5196 C5.8592,8.5626 3.1282,10.2276 1.6342,12.8746 C-1.4378,18.1696 0.8232,26.0246 3.8112,30.3376 C5.2622,32.4716 7.0102,34.8206 9.3142,34.7366 C11.4912,34.6506 12.3442,33.3266 14.9902,33.3266 C17.6352,33.3266 18.4042,34.7366 20.7082,34.6936 C23.0972,34.6506 24.5922,32.5586 26.0422,30.4226 C27.7072,27.9906 28.3882,25.6426 28.4312,25.5126 C28.3882,25.4706 23.8232,23.7186 23.7812,18.4676 C23.7382,14.0706 27.3652,11.9786 27.5362,11.8496 C25.4882,8.8196 22.2872,8.4786 21.1772,8.3926\"\n ></path>\n <path\n d=\"M85.5508,43.0381 L85.5508,39.1991 C85.8628,39.2421 86.6158,39.2871 87.0158,39.2871 C89.2138,39.2871 90.4558,38.3551 91.2108,35.9581 L91.6548,34.5371 L83.2428,11.2321 L88.4368,11.2321 L94.2958,30.1421 L94.4068,30.1421 L100.2668,11.2321 L105.3278,11.2321 L96.6048,35.7141 C94.6078,41.3291 92.3208,43.1721 87.4828,43.1721 C87.1048,43.1721 85.8838,43.1271 85.5508,43.0381\"\n ></path>\n <path\n d=\"M42.6499,19.3555 L48.3549,19.3555 C52.6829,19.3555 55.1469,17.0255 55.1469,12.9855 C55.1469,8.9455 52.6829,6.6375 48.3769,6.6375 L42.6499,6.6375 L42.6499,19.3555 Z M49.6869,2.4425 C55.9009,2.4425 60.2289,6.7265 60.2289,12.9625 C60.2289,19.2225 55.8129,23.5285 49.5309,23.5285 L42.6499,23.5285 L42.6499,34.4705 L37.6779,34.4705 L37.6779,2.4425 L49.6869,2.4425 Z\"\n ></path>\n <path\n d=\"M76.5547,25.7705 L76.5547,23.9715 L71.0287,24.3275 C67.9207,24.5275 66.3007,25.6815 66.3007,27.7015 C66.3007,29.6545 67.9887,30.9195 70.6287,30.9195 C74.0027,30.9195 76.5547,28.7665 76.5547,25.7705 M61.4617,27.8345 C61.4617,23.7285 64.5917,21.3755 70.3627,21.0205 L76.5547,20.6425 L76.5547,18.8675 C76.5547,16.2705 74.8457,14.8495 71.8057,14.8495 C69.2967,14.8495 67.4777,16.1375 67.0997,18.1125 L62.6167,18.1125 C62.7497,13.9615 66.6567,10.9435 71.9387,10.9435 C77.6207,10.9435 81.3267,13.9175 81.3267,18.5345 L81.3267,34.4705 L76.7327,34.4705 L76.7327,30.6305 L76.6217,30.6305 C75.3127,33.1395 72.4267,34.7145 69.2967,34.7145 C64.6807,34.7145 61.4617,31.9625 61.4617,27.8345\"\n ></path>\n </g>\n </g>\n </svg>\n </svg>\n </lib-coinflow-mobile-wallet-button>`,\n})\nexport class CoinflowApplePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n fill() {\n return this.purchaseProps.color === 'white' ? '#000' : '#FFF';\n }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'coinflow-google-pay-overlay',\n standalone: true,\n imports: [],\n template: `\n @if (color === 'white') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#5F6368\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n <path d=\"M0 0h41.285v18H0z\" />\n </g>\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#FFF\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n </g>\n </svg>\n }\n `,\n})\nexport class CoinflowGooglePayOverlayComponent {\n @Input() color!: 'white' | 'black';\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\nimport {CoinflowGooglePayOverlayComponent} from './google-pay-overlay.component';\n\n@Component({\n selector: 'lib-coinflow-google-pay-button',\n standalone: true,\n imports: [\n CoinflowMobileWalletButtonComponent,\n CoinflowGooglePayOverlayComponent,\n ],\n template: `<lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"google-pay\"\n alignItems=\"center\"\n overlayDisplayOverride=\"flex\"\n >\n <coinflow-google-pay-overlay\n [color]=\"purchaseProps.color\"\n ></coinflow-google-pay-overlay>\n </lib-coinflow-mobile-wallet-button> `,\n})\nexport class CoinflowGooglePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n}\n","/*\n * Public API Surface of coinflowlabs\n */\n\nexport * from './lib/coinflow-iframe.component';\nexport * from './lib/coinflow-purchase.component';\nexport * from './lib/coinflow-purchase-history.component';\nexport * from './lib/coinflow-purchase-protection.component';\nexport * from './lib/coinflow-withdraw.component';\nexport * from './lib/coinflow-withdraw-history.component';\n\nexport * from './lib/card-form/coinflow-card-number-input.component';\nexport * from './lib/card-form/coinflow-card-number-only-input.component';\nexport * from './lib/card-form/coinflow-cvv-input.component';\nexport * from './lib/card-form/coinflow-cvv-only-input.component';\n\nexport * from './lib/mobile-wallet/coinflow-apple-pay-button.component';\nexport * from './lib/mobile-wallet/coinflow-google-pay-button.component';\n\nexport * from './lib/common';\n\nexport type WithOnLoad = {\n onLoad?: () => void | Promise<void>;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getNSureDeviceId"],"mappings":"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A,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AAEX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EA9JW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;AAgKb,MAAM,iBAAiB,GAA6B;AACzD,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;;AAUhB,MAAM,kBAAkB,GAAG;AAChC,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;;AAGxB,SAAU,kBAAkB,CAChC,QAAkB,EAAA;IAElB,OAAO,QAAQ,IAAI,kBAAkB;AACvC;AASO,MAAM,iBAAiB,GAAG;AAC/B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;;AAGxB,SAAU,iBAAiB,CAC/B,QAAkB,EAAA;IAElB,OAAO,QAAQ,IAAI,iBAAiB;AACtC;AAEA,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAE/D,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAW;AAC/C,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACb,CAAA,CAAC;AAEF,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAW;AAC9C,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACZ,IAAA,QAAQ,CAAC,GAAG;AACb,CAAA,CAAC;AAEI,SAAU,mBAAmB,CAAC,QAAkB,EAAA;AACpD,IAAA,IAAI,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAAE,QAAA,OAAO,CAAC;AACjD,IAAA,IAAI,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAAE,QAAA,OAAO,CAAC;AAClD,IAAA,IAAI,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAAE,QAAA,OAAO,CAAC;AACjD,IAAA,OAAO,CAAC;AACV;AAkBM,SAAU,oBAAoB,CAClC,KAAoB,EACpB,QAAW,EAAA;AAEX,IAAA,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;AACpC;;ACjaA,SAAS,GAAG,GAAA;AACV,IAAA,IAAI,QAAQ;AAAE,QAAA,OAAO,QAAQ,CAAC,WAAW,EAAE;AAC3C,IAAA,OAAO,IAAI;AACb;;MCQa,aAAa,CAAA;AAIxB,IAAA,WAAA,CAAY,GAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,MAAM;AACxB,QAAA,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM;AAAE,YAAA,IAAI,CAAC,GAAG,GAAG,2BAA2B;AAC1D,aAAA,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO;AAAE,YAAA,IAAI,CAAC,GAAG,GAAG,uBAAuB;;YAC5D,IAAI,CAAC,GAAG,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,GAAG,gBAAgB;IACzD;IAEA,MAAM,iBAAiB,CAAC,UAAkB,EAAA;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA,eAAA,EAAkB,UAAU,CAAA,CAAE;aACnD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAChC,aAAA,IAAI,CACH,CAAC,IAGA,KAAK,IAAI,CAAC,aAAa,EAAE,cAAc,IAAI,IAAI,CAAC,cAAc;aAEhE,KAAK,CAAC,CAAC,IAAG;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,CAAC;IACN;IAEA,OAAO,kBAAkB,CAAC,GAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;AAAE,YAAA,OAAO,uBAAuB;;QAE1D,IAAI,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,4BAA4B;QACxD,IAAI,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,uBAAuB;QAEnD,OAAO,CAAA,QAAA,EAAW,GAAG,CAAA,cAAA,CAAgB;IACvC;IAEA,OAAO,qBAAqB,CAAC,GAAkB,EAAA;AAC7C,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;AAAE,YAAA,OAAO,2BAA2B;;QAE9D,IAAI,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,4BAA4B;QACxD,IAAI,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,uBAAuB;QAEnD,OAAO,CAAA,YAAA,EAAe,GAAG,CAAA,cAAA,CAAgB;IAC3C;IAEA,OAAO,iBAAiB,CAAC,GAAkB,EAAA;AACzC,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;AAAE,YAAA,OAAO,2BAA2B;QAC9D,IAAI,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,uBAAuB;QAEnD,OAAO,CAAA,YAAA,EAAe,GAAG,CAAA,cAAA,CAAgB;IAC3C;IAEA,OAAO,cAAc,CAAC,EACpB,YAAY,EACZ,UAAU,EACV,KAAK,EACL,WAAW,EACX,GAAG,EACH,QAAQ,EACR,WAAW,EACX,WAAW,EACX,UAAU,GAAG,QAAQ,EACrB,WAAW,EACX,KAAK,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,wBAAwB,EACxB,WAAW,EACX,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,OAAO,GACkC,EAAA;QACzC,MAAM,MAAM,GAAG;AACb,cAAE,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,UAAU,CAAA;AAC/B,cAAE,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,MAAM,GAAG,KAAK,EACd,OAAO,IAAI,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,CACjD;AAED,QAAA,IAAI,YAAY;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;AACjE,QAAA,IAAI,UAAU;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC;QAEjE,IAAI,WAAW,EAAE;YACf,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;QACrD;QAEA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;AACvB,gBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC3D,gBAAA,IAAI,UAAU,IAAI,QAAQ,EAAE;AAC1B,oBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACnE;qBAAO;oBACL,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;gBACnD;YACF;iBAAO;AACL,gBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC7D,gBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC/D;QACF;AAEA,QAAA,IAAI,WAAW;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;QAEpE,IAAI,WAAW,EAAE;AACf,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,aAAa,EACb,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CACpE;QACH;QAEA,IAAI,KAAK,EAAE;AACT,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,OAAO,EACP,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC9D;QACH;QAEA,IAAI,YAAY,EAAE;AAChB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,cAAc,EACd,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CACrE;QACH;QAEA,IAAI,KAAK,EAAE;YACT,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;QACzC;AACA,QAAA,IAAI,YAAY;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC;QAEvE,IAAI,MAAM,EAAE;AACV,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtD;QAEA,IAAI,gBAAgB,EAAE;YACpB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;QAC/D;QAEA,IAAI,oBAAoB,EAAE;AACxB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,iBAAiB,EACjB,oBAAoB,CAAC,QAAQ,EAAE,CAChC;QACH;QAEA,IAAI,uBAAuB,EAAE;YAC3B,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,yBAAyB,EACzB,uBAAuB,CACxB;QACH;AAEA,QAAA,IAAI,iBAAiB;AACnB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,mBAAmB,EACnB,QAAQ,CAAC,6BAA6B,CACpC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAClC,CACF;AAEH,QAAA,IAAI,wBAAwB;AAC1B,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,0BAA0B,EAC1B,QAAQ,CAAC,6BAA6B,CACpC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CACzC,CACF;QACH,IAAI,QAAQ,EAAE;YACZ,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC/C;aAAO;AACL,YAAA,MAAM,QAAQ,GAAGA,GAAgB,EAAE;AACnC,YAAA,IAAI,QAAQ;gBAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC7D;AAEA,QAAA,IAAI,WAAW;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;AACpE,QAAA,IAAI,KAAK;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AAClD,QAAA,IAAI,IAAI;AAAE,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACnE,QAAA,IAAI,eAAe;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC;AACvE,QAAA,IAAI,kBAAkB;AACpB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,oBAAoB,EACpB,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CACvC;AACH,QAAA,IAAI,gBAAgB;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC;AACzE,QAAA,IAAI,QAAQ;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;AAE3D,QAAA,IAAI,eAAe;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC;AACvE,QAAA,IAAI,gBAAgB;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC;AACzE,QAAA,IAAI,cAAc;YAChB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC;AAE3D,QAAA,IAAI,UAAU;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC;QAE7D,IAAI,SAAS,KAAK,KAAK;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;AACtE,QAAA,IAAI,iBAAiB;YACnB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;QACjE,IAAI,QAAQ,KAAK,IAAI;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;;QAGlE,IAAI,uBAAuB,EAAE;AAC3B,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,yBAAyB,EACzB,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CACxC;QACH;AAAO,aAAA,IAAI,mBAAmB,KAAK,IAAI,EAAE;YACvC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACxD;QAEA,IAAI,kBAAkB,KAAK,IAAI;YAC7B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC;AACvD,QAAA,IAAI,QAAQ;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC3D,QAAA,IAAI,OAAO;AACT,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,SAAS,EACT,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAChE;AAEH,QAAA,IAAI,qBAAqB;AACvB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,uBAAuB,EACvB,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAChC;AAEH,QAAA,IAAI,0BAA0B;YAC5B,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,4BAA4B,EAC5B,0BAA0B,CAC3B;AAEH,QAAA,IAAI,kBAAkB;YACpB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;AAEnE,QAAA,IAAI,yBAAyB;AAC3B,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,2BAA2B,EAC3B,QAAQ,CAAC,6BAA6B,CACpC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAC1C,CACF;AAEH,QAAA,IAAI,qBAAqB;AACvB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,uBAAuB,EACvB,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAChC;AAEH,QAAA,OAAO,GAAG,CAAC,QAAQ,EAAE;IACvB;IAEA,OAAO,cAAc,CAAC,KAA4B,EAAA;QAChD,IAAI,CAAC,KAAK,CAAC,UAAU;AAAE,YAAA,OAAO,SAAS;AAEvC,QAAA,OAAO,IAAI,CAAC,YAAY,CAA2B,KAAK,CAAC,UAAU,EAAE;YACnE,MAAM,EAAE,MAAK;AACX,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;AAC3B,gBAAA,IAAI,CAAC,IAAI;AACP,oBAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;AACtE,gBAAA,IAAI,CAAC,MAAM;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AACtE,gBAAA,IAAI,CAAC,WAAW;AAAE,oBAAA,OAAO,SAAS;gBAClC,OAAO,MAAM,CAAC,MAAM,CAClB,UAAU,CAAC,IAAI,CACZ,WAAkD,CAAC,SAAS,CAAC;AAC5D,oBAAA,oBAAoB,EAAE,KAAK;AAC3B,oBAAA,gBAAgB,EAAE,KAAK;iBACxB,CAAC,CACH,CACF;YACH,CAAC;YACD,OAAO,EAAE,MAAK;AACZ,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;gBAC3B,OAAO,QAAQ,CAAC,6BAA6B,CAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;YACH,CAAC;YACD,GAAG,EAAE,MAAK;AACR,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;gBAC3B,OAAO,QAAQ,CAAC,6BAA6B,CAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;YACH,CAAC;YACD,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;gBAC3B,OAAO,QAAQ,CAAC,6BAA6B,CAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;YACH,CAAC;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;gBAC3B,OAAO,QAAQ,CAAC,6BAA6B,CAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;YACH,CAAC;YACD,OAAO,EAAE,MAAK;AACZ,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;AAC3B,gBAAA,IAAI,CAAC,WAAW;AAAE,oBAAA,OAAO,SAAS;;AAElC,gBAAA,OAAO,WAAqB;YAC9B,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;gBAC3B,OAAO,QAAQ,CAAC,6BAA6B,CAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;YACH,CAAC;YACD,IAAI,EAAE,MAAK;AACT,gBAAA,OAAO,SAAS;YAClB,CAAC;AACF,SAAA,CAAC,EAAE;IACN;AAEA,IAAA,OAAO,YAAY,CACjB,UAA8B,EAC9B,IASC,EAAA;QAED,QAAQ,UAAU;AAChB,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM;AACpB,YAAA,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,OAAO;AACrB,YAAA,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG;AACjB,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI;AAClB,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,QAAQ;AACtB,YAAA,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,OAAO;AACrB,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,KAAK;AACnB,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI;AAClB,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;;IAElD;AACD;AAOK,SAAU,eAAe,CAC7B,IAA8B,EAAA;AAE9B,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,SAAS;IAE3B,IAAI,SAA6B,EAAE,QAA4B;IAC/D,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AAC/B,QAAA,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACpD;AAEA,IAAA,IAAI,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS;AAAE,QAAA,SAAS,GAAG,IAAI,CAAC,SAAS;AAErE,IAAA,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;AAAE,QAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ;IAEjE,IAAI,SAAS,IAAI,QAAQ;QACvB,OAAO;YACL,SAAS;YACT,QAAQ;SACT;AACH,IAAA,OAAO,SAAS;AAClB;;IC1XY;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,oBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,oBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,oBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,oBAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AACjC,CAAC,EATW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AAW1B,SAAU,eAAe,CAC7B,KAA2D,EAAA;AAE3D,IAAA,IAAI,MAA+B;IACnC,IACE,QAAQ,IAAI,KAAK;AACjB,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;AAChC,QAAA,KAAK,CAAC,MAAM;QACZ,QAAQ,IAAI,KAAK,CAAC,MAAM;AAExB,QAAA,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAqB;AACxC,SAAA,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM;AAAE,QAAA,MAAM,GAAG,KAAK,CAAC,MAAM;AAEjE,IAAA,IAAI,CAAC,MAAM;QAAE;IAEb,IAAI,OAAO,MAAM,KAAK,QAAQ;AAAE,QAAA,OAAO,MAAM;AAE7C,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,IAAI,WAAW,IAAI,MAAM;AACvB,YAAA,OAAO,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,SAAS;QAEnE,IAAI,SAAS,IAAI,MAAM;AACrB,YAAA,OAAO,MAAM,CAAC,OAAO,GAAI,MAAM,CAAC,OAAkB,GAAG,SAAS;IAClE;AAEA,IAAA,OAAO,IAAI;AACb;SAEgB,mBAAmB,CACjC,UAAkB,EAClB,QAA+B,EAC/B,oBAAqC,EAAA;AAErC,IAAA,IAAI,UAAsB;AAC1B,IAAA,IAAI;AACF,QAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACnC,QAAA,IAAI,EAAE,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,UAAU,CAAC;YAAE;IAC5D;IAAE,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,CAAC;QAClD;IACF;AAEA,IAAA,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,UAAU;IACjC,QAAQ,MAAM;QACZ,KAAK,oBAAoB,CAAC,WAAW;YACnC,IAAI,CAAC,QAAQ,CAAC,iBAAiB;gBAAE;AACjC,YAAA,OAAO,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACzC,KAAK,oBAAoB,CAAC,eAAe;YACvC,IAAI,CAAC,QAAQ,CAAC,qBAAqB;gBAAE;AACrC,YAAA,OAAO,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAC7C,KAAK,oBAAoB,CAAC,eAAe;AACvC,YAAA,OAAO,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC7C,QAAA,KAAK,oBAAoB,CAAC,YAAY,GAAG,GAAG,GAAG,oBAAoB;YACjE,IAAI,CAAC,QAAQ,CAAC,kBAAkB;gBAAE;AAClC,YAAA,OAAO,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC1C,KAAK,oBAAoB,CAAC,OAAO;YAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS;gBAAE;AACzB,YAAA,QAAQ,CAAC,SAAS,CAAE,UAAgC,CAAC,IAAI,CAAC;YAC1D;QACF,KAAK,oBAAoB,CAAC,YAAY;YACpC,IAAI,CAAC,QAAQ,CAAC,cAAc;gBAAE;AAC9B,YAAA,QAAQ,CAAC,cAAc,CAAE,UAAqC,CAAC,IAAI,CAAC;YACpE;QACF,KAAK,oBAAoB,CAAC,MAAM;YAC9B;QACF,KAAK,oBAAoB,CAAC,aAAa;YACrC;;AAGJ,IAAA,OAAO,CAAC,IAAI,CACV,CAAA,sDAAA,EAAyD,MAAM,CAAA,eAAA,EAAkB,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA,CAAE,CACvH;AACH;AAEM,SAAU,WAAW,CACzB,KAGC,EAAA;AAED,IAAA,IAAI,KAAqC;AACzC,IAAA,IAAI,MAA+B;IACnC,IACE,QAAQ,IAAI,KAAK;AACjB,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;AAChC,QAAA,KAAK,CAAC,MAAM;QACZ,YAAY,IAAI,KAAK,CAAC,MAAM;AAC5B,QAAA,QAAQ,IAAI,KAAK,CAAC,MAAM,EACxB;AACA,QAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAgC;AACrD,QAAA,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAqB;IAC7C;SAAO,IAAI,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE;AACpD,QAAA,KAAK,GAAG,KAAK,CAAC,UAAU;AACxB,QAAA,MAAM,GAAG,KAAK,CAAC,MAAM;IACvB;IAEA,IAAI,CAAC,KAAK,EAAE;QACV,OAAO;YACL,qBAAqB,EAAE,MAAK;AAC1B,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;YAC1D,CAAC;YACD,iBAAiB,EAAE,MAAK;AACtB,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;YAC1D,CAAC;YACD,qBAAqB,EAAE,MAAK;AAC1B,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;YAC1D,CAAC;YACD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC;IACH;AAEA,IAAA,OAAO,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE;AACvC,QAAA,MAAM,EAAE,MACN,uBAAuB,CAAC;AACtB,YAAA,MAAM,EAAE,MAAsB;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,GAAG,EAAE,MACH,oBAAoB,CAAC;AACnB,YAAA,MAAM,EAAE,MAAmB;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,OAAO,EAAE,MACP,oBAAoB,CAAC;AACnB,YAAA,MAAM,EAAE,MAAmB;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,IAAI,EAAE,MACJ,oBAAoB,CAAC;AACnB,YAAA,MAAM,EAAE,MAAmB;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,QAAQ,EAAE,MACR,oBAAoB,CAAC;AACnB,YAAA,MAAM,EAAE,MAAmB;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,OAAO,EAAE,MACP,wBAAwB,CAAC;AACvB,YAAA,MAAM,EAAE,MAAuB;YAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,KAAK,EAAE,MACL,oBAAoB,CAAC;AACnB,YAAA,MAAM,EAAE,MAAmB;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,IAAI,EAAE,MAAM,qBAAqB,CAAC,KAAK,CAAC;AACzC,KAAA,CAAC,EAAE;AACN;AAEA,SAAS,uBAAuB,CAAC,EAC/B,MAAM,EACN,SAAS,EACT,cAAc,GAKf,EAAA;IACC,OAAO;AACL,QAAA,qBAAqB,EAAE,OAAO,WAAmB,KAAI;AACnD,YAAA,MAAM,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC;AAC5C,YAAA,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACzC,CAAC;AACD,QAAA,iBAAiB,EAAE,OAAO,OAAe,KAAI;AAC3C,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW;YACtC,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;YAChE;AAEA,YAAA,MAAM,aAAa,GAAG,MAAM,WAAW,CACrC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAClC;AACD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AAC3D,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;QACrC,CAAC;AACD,QAAA,qBAAqB,EAAE,OAAO,WAAmB,KAAI;AACnD,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe;YAC9C,IAAI,CAAC,eAAe,EAAE;AACpB,gBAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;YACpE;AACA,YAAA,MAAM,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC;AAC5C,YAAA,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;YAC3D,OAAO,MAAM,CAAC,MAAM,CAClB,UAAU,CAAC,IAAI,CACb,iBAAiB,CAAC,SAAS,CAAC;AAC1B,gBAAA,oBAAoB,EAAE,KAAK;AAC3B,gBAAA,gBAAgB,EAAE,KAAK;aACxB,CAAC,CACH,CACF;QACH,CAAC;QACD,SAAS;QACT,cAAc;KACf;AACH;AAEA,SAAS,oBAAoB,CAC3B,IAAY,EAAA;AAEZ,IAAA,IAAI,CAAC,IAAI;AACP,QAAA,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF;AAEH,IAAA,IAAI,CAAC,MAAM;AACT,QAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D;IAEH,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,gBAAgB,CAAC;AACnE,IAAA,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC5E,IAAA,OAAO,GAAG;AACZ;AAEA,SAAS,oBAAoB,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,cAAc,GAKf,EAAA;IACC,OAAO;AACL,QAAA,qBAAqB,EAAE,OAAO,WAAmB,KAAI;AACnD,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpE,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;AAC/C,YAAA,OAAO,IAAI;QACb,CAAC;AACD,QAAA,iBAAiB,EAAE,OAAO,OAAe,KAAI;AAC3C,YAAA,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;QACpC,CAAC;QACD,SAAS;QACT,cAAc;KACf;AACH;AAEA,SAAS,wBAAwB,CAAC,EAChC,MAAM,EACN,SAAS,EACT,cAAc,GAKf,EAAA;IACC,OAAO;AACL,QAAA,qBAAqB,EAAE,OAAO,WAAmB,KAAI;;;AAGnD,YAAA,MAAM,IAAI,KAAK,CACb,oEAAoE,WAAW,CAAA,CAAE,CAClF;QACH,CAAC;AACD,QAAA,iBAAiB,EAAE,OAAO,OAAe,KAAI;AAC3C,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACvB,gBAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;YAChE;;AAEA,YAAA,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1C,CAAC;AACD,QAAA,qBAAqB,EAAE,OAAO,WAAmB,KAAI;AACnD,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAC3B,gBAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;YACpE;;AAEA,YAAA,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC;QAClD,CAAC;QACD,SAAS;QACT,cAAc;KACf;AACH;AAEA,SAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,cAAc,GAC8C,EAAA;IAI5D,OAAO;QACL,qBAAqB,EAAE,YAAW;AAChC,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,CAAC;QACD,SAAS;QACT,cAAc;KACf;AACH;;MC5Va,QAAQ,CAAA;AACZ,IAAA,OAAO,EAAE,CAAC,IAAY,EAAE,QAA0B,EAAA;AACvD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC3C;AAEO,IAAA,OAAO,QAAQ,CAAC,IAAY,EAAE,IAAS,EAAA;AAC5C,QAAA,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;IAC/D;AAEO,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,QAA0B,EAAA;AAC3D,QAAA,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC9C;AACD;;ACdD;AACA;AAKO,MAAM,yBAAyB,GAAG;AAClC,MAAM,qBAAqB,GAAG;AAK9B,MAAM,iBAAiB,GAA6B;AACzD,IAAA,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM;AACvB,IAAA,CAAC,QAAQ,CAAC,UAAU,GAAG,YAAY;AACnC,IAAA,CAAC,QAAQ,CAAC,IAAI,GAAG,iBAAiB;AAClC,IAAA,CAAC,QAAQ,CAAC,QAAQ,GAAG,UAAU;;;AC0B1B,eAAe,eAAe,CACnC,IAAyB,EAAA;IAEzB,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAC,GAAG,IAAI;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;QACrC,KAAK,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,6BAA6B,EAAE;AAChE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,kBAAkB;AACnC,aAAA;AACD,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO;gBACP,KAAK;AACL,gBAAA,UAAU,EAAE,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS;AAC9D,gBAAA,WAAW,EAAE,aAAa,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS;aAClE,CAAC;SACH;AACE,aAAA,IAAI,CAAC,OAAM,GAAG,KAAG;YAChB,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,EAAgC;AAC3D,QAAA,CAAC;aACA,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAA,CAAC,CAAC;AACJ;SAEgB,mBAAmB,CAAC,EAClC,GAAG,EACH,sBAAsB,GAIvB,EAAA;IACC,MAAM,WAAW,GAAG,gBAAgB;IACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,CAAC,EAAE;QAClD,sBAAsB,CAAC,IAAI,CAAC;IAC9B;IAEA,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACrD,IAAA,YAAY,CAAC,GAAG;AACd,QAAA,GAAG,KAAK;AACN,cAAE;cACA,sDAAsD;AAC5D,IAAA,YAAY,CAAC,EAAE,GAAG,WAAW;AAE7B,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IAEvC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAClE,QAAA,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC;QACnD,sBAAsB,CAAC,IAAI,CAAC;AAC9B,IAAA,CAAC,CAAC;AACJ;AAEA,SAAS,UAAU,CAAC,EAClB,MAAM,EACN,cAAc,EACd,SAAS,GAKV,EAAA;AACC,IAAA,MAAM,QAAQ,GAAG,YAA0C;QACzD,MAAM,CAAC,QAAQ,EAAE;QACjB,OAAO,MAAM,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,KAAI;YACjE,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAA0B,KAAI;AACnD,gBAAA,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC;AACf,YAAA,CAAC,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAA6C,KAAI;;AAEtE,gBAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;AAC5D,gBAAA,IAAI,SAAS;oBAAE,MAAM,CAAC,IAAI,CAAC;AAC7B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;AACpD,IAAA,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;AAEvD,IAAA,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAK;QACrB,UAAU,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QACtC,MAAM,EAAE,GAA6B,QAAQ,CAAC,aAAa,CACzD,8BAA8B,CAC/B;QACD,IAAI,EAAE,EAAE;;AAEN,YAAA,EAAE,CAAC,SAAS,GAAG,IAAI;QACrB;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;QACtB,MAAM,CAAC,KAAK,EAAE;AAChB,IAAA,CAAC,CAAC;AACF,IAAA,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAK;QACzB,MAAM,CAAC,QAAQ,EAAE;AACnB,IAAA,CAAC,CAAC;IAEF,SAAS,CAAC,KAAK,CAAC;IAChB,MAAM,CAAC,IAAI,EAAE;AAEb,IAAA,OAAO,EAAC,GAAG,MAAM,EAAE,QAAQ,EAAC;AAC9B;AAEO,eAAe,gCAAgC,CACpD,IAA0C,EAAA;AAE1C,IAAA,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,IAAI;AAC9B,IAAA,OAAO,MAAM,YAAY,CAAC,qBAAqB,EAAE,IAAI,EAAE;AACrD,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,cAAc,EAAE,qBAAqB;AACrC,QAAA,WAAW,EAAE,KAAK;QAClB,KAAK;AACL,QAAA,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;AACtC,KAAA,CAAC;AACJ;AAEO,eAAe,yBAAyB,CAC7C,IAAmC,EAAA;AAEnC,IAAA,OAAO,MAAM,YAAY,CAAC,yBAAyB,EAAE,IAAI,EAAE;AACzD,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,cAAc,EAAE,qBAAqB;AACrC,QAAA,cAAc,EAAE,KAAK;AACtB,KAAA,CAAC;AACJ;AAEO,eAAe,iCAAiC,CACrD,IAAmC,EAAA;AAEnC,IAAA,OAAO,MAAM,YAAY,CAAC,yBAAyB,EAAE,IAAI,EAAE,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC;AAC1E;AAEA,eAAe,YAAY,CACzB,EAAU,EACV,IAAmC,EACnC,eAAwC,EAAA;AAExC,IAAA,MAAM,EAAC,mBAAmB,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAC,GACtE,IAAI;IACN,IAAI,CAAC,mBAAmB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AAC1D,QAAA,OAAO,CAAC,IAAI,CACV,iHAAiH,CAClH;QACD;IACF;AACA,IAAA,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AACzC,QAAA,GAAG,IAAI;QACP,KAAK,EAAE,eAAe,CAAC,KAAK;AAC7B,KAAA,CAAC;IACF,MAAM,EAAC,MAAM,EAAC,GAAG,SAAS,CAAC,GAAG,CAAC;AAC/B,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,GAAG,YAAY;AACf,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,kBAAkB,EAAE,IAAI;QACxB,MAAM;QACN,IAAI;QACJ,KAAK,EAAE,KAAK,IAAI,KAAK;AACrB,QAAA,GAAG,eAAe;KACnB;IACD,MAAM,MAAM,GAAsC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC;IAE5E,OAAO,UAAU,CAAC,EAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAC,CAAC;AACxD;AAEA,SAAS,SAAS,CAAC,CAAS,EAAA;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,IAAI,EAAE,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC,QAAA,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1C,QAAA,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1C,QAAA,WAAW,EAAE,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC;AACtD,QAAA,GAAG,EAAE;YACH,IAAI,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;YAC7C,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;YAC/C,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/C,YAAA,WAAW,EAAE,wBAAwB,CAAC,GAAG,EAAE,WAAW,CAAC;AACxD,SAAA;KACF;IAED,OAAO,EAAC,MAAM,EAAC;AACjB;AAEA,SAAS,wBAAwB,CAC/B,IAAwC,EAAA;AAExC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;IACpB,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI;IAEzC,IAAI,GAAG,GAAG,EAAE;AACZ,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC/C,IAAI,GAAG,GAAG,EAAE;QACZ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAG;AACzB,YAAA,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;AAC3B,gBAAA,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE;YAC/B;iBAAO;gBACL,GAAG,IAAI,EAAE;YACX;AACF,QAAA,CAAC,CAAC;QACF,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG;IAChC;AACA,IAAA,OAAO,GAAG;AACZ;;ACnPA;AACA;AACA;AACA;AAiHM,IAAW;AAAjB,CAAA,UAAiB,WAAW,EAAA;AAC1B;;AAEG;AACH,IAAA,IAAY,SAEX;AAFD,IAAA,CAAA,UAAY,SAAS,EAAA;AACnB,QAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,IAAA,CAAC,EAFW,SAAS,GAAT,WAAA,CAAA,SAAS,KAAT,qBAAS,GAAA,EAAA,CAAA,CAAA;AAIrB;;AAEG;AACH,IAAA,IAAY,WAwBX;AAxBD,IAAA,CAAA,UAAY,WAAW,EAAA;AACrB,QAAA,WAAA,CAAA,iBAAA,CAAA,GAAA,eAAiC;AACjC,QAAA,WAAA,CAAA,eAAA,CAAA,GAAA,aAA6B;AAC7B,QAAA,WAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,QAAA,WAAA,CAAA,qBAAA,CAAA,GAAA,oBAA0C;AAC1C,QAAA,WAAA,CAAA,eAAA,CAAA,GAAA,cAA8B;AAC9B,QAAA,WAAA,CAAA,iBAAA,CAAA,GAAA,eAAiC;AACjC,QAAA,WAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,QAAA,WAAA,CAAA,mBAAA,CAAA,GAAA,kBAAsC;AACtC,QAAA,WAAA,CAAA,uBAAA,CAAA,GAAA,qBAA6C;AAC7C,QAAA,WAAA,CAAA,wBAAA,CAAA,GAAA,sBAA+C;AAC/C,QAAA,WAAA,CAAA,sBAAA,CAAA,GAAA,oBAA2C;AAC3C,QAAA,WAAA,CAAA,2BAAA,CAAA,GAAA,yBAAqD;AACrD,QAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,QAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,QAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,QAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,QAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,QAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,mBAAwC;AACxC,QAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,QAAA,WAAA,CAAA,QAAA,CAAA,GAAA,OAAgB;AAChB,QAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,mBAAwC;AACxC,QAAA,WAAA,CAAA,kBAAA,CAAA,GAAA,gBAAmC;AACnC,QAAA,WAAA,CAAA,wBAAA,CAAA,GAAA,oBAA6C;AAC/C,IAAA,CAAC,EAxBW,WAAW,GAAX,WAAA,CAAA,WAAW,KAAX,uBAAW,GAAA,EAAA,CAAA,CAAA;AAyBzB,CAAC,EApCgB,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;;MClFf,uBAAuB,CAAA;AAYlC,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAA,CAAA,SAAS,GAAT,SAAS;AANnB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO;QAIxC,IAAA,CAAA,SAAS,GAAG,IAAI;IAEsB;IAE9C,QAAQ,GAAA;QACN,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,WAAW,CAAC;IAC9D;AAE4C,IAAA,aAAa,CAAC,KAAU,EAAA;AAClE,QAAA,IACE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CACpB,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CACvD;YAED;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAE7B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AACtC,gBAAA,IACE,OAAO;oBACP,OAAO,OAAO,KAAK,QAAQ;AAC3B,oBAAA,OAAO,CAAC,MAAM,KAAK,QAAQ,EAC3B;AACA,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,oBAAA,IAAI,CAAC,MAAM,IAAI;gBACjB;YACF;YAAE,OAAO,KAAK,EAAE;;YAEhB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,mBAAmB,CACjC,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,WAAW,CAAC,oBAAoB,CACtC;AACD,QAAA,IAAI,CAAC,OAAO;YAAE;QACd;aACG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,aAAA,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACvD;AAEA,IAAA,WAAW,CAAC,OAAe,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAc,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC;IACpE;IAEA,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,oBAAoB;YAAE;AAE/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,MAAM,IAAI;IACjB;8GAnEW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbxB,CAAA;;;;;;;;;;;AAWC,YAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEA,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWC,YAAA,CAAA;AACZ,iBAAA;;sBAEE;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAGA,SAAS;uBAAC,QAAQ;;sBAWlB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MCnC/B,yBAAyB,CAAA;IAKpC,QAAQ,GAAA;QACN,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,kBAAkB;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAEvC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpE,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,aAAa;YACrB,YAAY;AACZ,YAAA,KAAK,EAAE,CAAA,aAAA,EAAgB,IAAI,CAAC,aAAa,EAAE,UAAU,CAAA,CAAE;YACvD,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;YAC7D,oBAAoB;SACrB;IACH;8GApBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAFlC,uNAAuN,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAF/M,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAItB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AAClC,oBAAA,QAAQ,EACN,uNAAuN;AAC1N,iBAAA;;sBAEE;;;MCZU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,yFAFjC,2CAA2C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE1C,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,2CAA2C;AACtD,iBAAA;;;MCCY,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,4FAFpC,8CAA8C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE7C,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAN/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,8CAA8C;AACzD,iBAAA;;;MCWY,yBAAyB,CAAA;IAKpC,QAAQ,GAAA;QACN,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,kBAAkB;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAEvC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpE,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,aAAa;YACrB,YAAY;AACZ,YAAA,KAAK,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,aAAa,EAAE,UAAU,CAAA,CAAE;AACpD,YAAA,WAAW,EAAE,SAAS;YACtB,oBAAoB;SACrB;IACH;8GApBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAFlC,0LAA0L,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAFlL,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAItB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AAClC,oBAAA,QAAQ,EACN,0LAA0L;AAC7L,iBAAA;;sBAEE;;;MCXU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,yFAFjC,2CAA2C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE1C,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,2CAA2C;AACtD,iBAAA;;;MCKY,eAAe,CAAA;AAH5B,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,aAAa,GAA8B,SAAS;AAoErD,IAAA;AAlEC,IAAA,gBAAgB,CAAC,MAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;IAC7B;AAEA,IAAA,cAAc,KAAI;AAElB,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;IAEA,MAAM,8BAA8B,CAClC,IAIyB,EAAA;AAEzB,QAAA,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC;AACpD,YAAA,GAAG,IAAI;AACP,YAAA,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,EAAE;AACzB,QAAA,OAAO,MAAM;IACf;IAEA,MAAM,uBAAuB,CAC3B,IAIyB,EAAA;AAEzB,QAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;AACtC,QAAA,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC;AAC7C,YAAA,GAAG,IAAI;AACP,YAAA,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,SAAA,CAAC;AACF,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,EAAE;AACzB,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrB,QAAA,OAAO,MAAM;IACf;IAEA,MAAM,+BAA+B,CACnC,IAIyB,EAAA;AAEzB,QAAA,MAAM,MAAM,GAAG,MAAM,iCAAiC,CAAC;AACrD,YAAA,GAAG,IAAI;AACP,YAAA,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,EAAE;AACzB,QAAA,OAAO,MAAM;IACf;8GArEW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCKY,uBAAuB,CAAA;AANpC,IAAA,WAAA,GAAA;AAOU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAEzC,IAAA,CAAA,MAAM,GAA8B,SAAS;QAoClC,IAAA,CAAA,yBAAyB,GAAG,yBAAyB;AACzE,IAAA;IAnCS,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC;AACF,aAAA,uBAAuB,CAAC;YACvB,GAAG,IAAI,CAAC,IAAI;YACZ,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACnC;AACA,aAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrC,aAAA,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC;IAEQ,iBAAiB,GAAA;AACvB,QAAA,mBAAmB,CAAC;AAClB,YAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YAClB,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,SAAA,CAAC;IACJ;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QACvB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;IACzB;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAO,CAAC,QAAQ,EAAE;IAChC;8GArCW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,oHAFxB,gDAAgD,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE/C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,gDAAgD;AAC3D,iBAAA;;sBAGE;;;MCFU,2BAA2B,CAAA;AANxC,IAAA,WAAA,GAAA;AAOU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAEzC,IAAA,CAAA,MAAM,GAA8B,SAAS;QAoClC,IAAA,CAAA,yBAAyB,GAAG,yBAAyB;AACzE,IAAA;IAnCS,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC;AACF,aAAA,+BAA+B,CAAC;YAC/B,GAAG,IAAI,CAAC,IAAI;YACZ,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACnC;AACA,aAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrC,aAAA,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC;IAEQ,iBAAiB,GAAA;AACvB,QAAA,mBAAmB,CAAC;AAClB,YAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YAClB,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,SAAA,CAAC;IACJ;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QACvB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;IACzB;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAO,CAAC,QAAQ,EAAE;IAChC;8GArCW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,yHAF5B,gDAAgD,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE/C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,gDAAgD;AAC3D,iBAAA;;sBAGE;;;MCTU,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;QAOqB,IAAA,CAAA,qBAAqB,GAAG,qBAAqB;AACjE,IAAA;8GAFY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,kFAF1B,6CAA6C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE5C,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,6CAA6C;AACxD,iBAAA;;;MCcY,6BAA6B,CAAA;AAN1C,IAAA,WAAA,GAAA;AAOU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAEzC,IAAA,CAAA,MAAM,GAA8B,SAAS;QAsDlC,IAAA,CAAA,qBAAqB,GAAG,qBAAqB;AACjE,IAAA;IArDS,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC;AACF,aAAA,8BAA8B,CAAC;YAC9B,GAAG,IAAI,CAAC,IAAI;YACZ,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACnC;aACA,IAAI,CAAC,MAAM,IAAG;AACb,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACtB,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,qBAAqB,CAAA,CAAE,CAAC;AACzE,YAAA,IAAI,aAAa;AAAE,gBAAA,aAAa,CAAC,SAAS,GAAG,EAAE;AAC/C,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QACzB;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,mBAAmB,CAAC;AAClB,YAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YAClB,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,SAAA,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;YAC7C,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEO,YAAY,GAAA;QACjB,IAAI,CAAC,OAAO,EAAE;QACd,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,iBAAiB,EAAE;QAC1B,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;IACzB;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAO,CAAC,QAAQ,EAAE;IAChC;8GAvDW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,sIAF9B,4CAA4C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE3C,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,4CAA4C;AACvD,iBAAA;;sBAGE;;;MCcU,mCAAmC,CAAA;AA1BhD,IAAA,WAAA,GAAA;QAoCE,IAAA,CAAA,OAAO,GAAW,GAAG;QACrB,IAAA,CAAA,OAAO,GAAW,MAAM;AAyCzB,IAAA;IApCC,aAAa,CAAC,EAAC,IAAI,EAAiB,EAAA;AAClC,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAE5B,YAAA,OAAO,CAAC,GAAG,CAAC,EAAC,IAAI,EAAC,CAAC;AACnB,YAAA,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACnD,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtC;YACF;YAEA,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC9C,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC;gBAChB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,OAAO,GAAG,MAAM;gBACvB,CAAC,EAAE,IAAI,CAAC;YACV;QACF;AAAE,QAAA,OAAO,CAAC,EAAE,EAAC;IACf;IAEA,QAAQ,GAAA;QACN,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,kBAAkB;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAEvC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpE,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,aAAa;YACrB,YAAY;YACZ,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,EAAE,UAAU,CAAA,CAAE;AACzD,YAAA,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;YAC7D,oBAAoB;SACrB;IACH;8GAnDW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBpC,CAAA;;;;;;;;;;;;;;;;;;;;AAoBH,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArBG,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAuBtB,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBA1B/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;AAoBH,QAAA,CAAA;AACR,iBAAA;;sBAEE;;sBAMA;;sBACA;;sBACA;;;MCGU,+BAA+B,CAAA;IAM1C,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM;IAC/D;8GARW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1ChC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwC2B,sCAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAzC3B,mCAAmC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FA2ClC,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBA9C3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,mCAAmC,CAAC;AAC9C,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwC2B,sCAAA,CAAA;AACtC,iBAAA;;sBAEE;;;MCUU,iCAAiC,CAAA;8GAAjC,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvDlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEU,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBA3D7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA;AACF,iBAAA;;sBAEE;;;MCtCU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZjC,CAAA;;;;;;;;;;wCAU4B,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbpC,mCAAmC,0JACnC,iCAAiC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAcxB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAnB5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,mCAAmC;wBACnC,iCAAiC;AAClC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAU4B,uCAAA,CAAA;AACvC,iBAAA;;sBAEE;;;ACzBH;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"coinflowlabs-angular.mjs","sources":["../../../projects/coinflowlabs/src/lib/common/CoinflowTypes.ts","../../../projects/coinflowlabs/src/lib/common/SolanaPeerDeps.ts","../../../projects/coinflowlabs/src/lib/common/types/Subtotal.ts","../../../projects/coinflowlabs/src/lib/common/NSure.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowUtils.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowLibMessageHandlers.ts","../../../projects/coinflowlabs/src/lib/common/EventBus.ts","../../../projects/coinflowlabs/src/lib/common/card-form/TokenEx.ts","../../../projects/coinflowlabs/src/lib/common/card-form/tokenexHelpers.ts","../../../projects/coinflowlabs/src/lib/common/types/nftCartItem.ts","../../../projects/coinflowlabs/src/lib/coinflow-iframe.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-history.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-protection.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw-history.component.ts","../../../projects/coinflowlabs/src/lib/card-form/CardFormService.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-only-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-only-input.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-mobile-wallet-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-apple-pay-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/google-pay-overlay.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-google-pay-button.component.ts","../../../projects/coinflowlabs/src/public-api.ts","../../../projects/coinflowlabs/src/coinflowlabs-angular.ts"],"sourcesContent":["import type {\n Connection,\n VersionedTransaction,\n PublicKey,\n Signer,\n Transaction,\n} from '@solana/web3.js';\nimport {Currency, Subtotal} from './types/Subtotal';\nimport {GiftCardCartItem} from './types/giftCardCartItem';\nimport {nftCartItem} from './types/nftCartItem';\nimport {CryptoCartItem} from './types/cryptoCartItem';\nimport {MoneyTopUpCartItem} from './types/moneyTopUpCartItem';\n\nexport enum WithdrawCategory {\n USER = 'user',\n BUSINESS = 'business',\n}\n\nexport enum WithdrawSpeed {\n ASAP = 'asap',\n SAME_DAY = 'same_day',\n STANDARD = 'standard',\n CARD = 'card',\n IBAN = 'iban',\n PIX = 'pix',\n EFT = 'eft',\n VENMO = 'venmo',\n PAYPAL = 'paypal',\n WIRE = 'wire',\n INTERAC = 'interac',\n}\n\nexport enum SettlementType {\n Credits = 'Credits',\n USDC = 'USDC',\n Bank = 'Bank', // Deprecated, is the same as USDC\n}\n\n/**\n * Configuration for a single custom pay-in fee line item.\n * Use with customPayInFees prop on purchase flows.\n */\nexport interface PurchaseCustomPayInFee {\n lineItemLabel: string;\n fee:\n | {\n isFixed: true;\n percent: null;\n currency: Currency;\n cents: number;\n }\n | {\n isFixed: false;\n percent: number;\n currency: null;\n cents: null;\n };\n}\n\n/**\n * Configuration for zero authorization flow - controls saved payment method visibility.\n */\nexport interface ZeroAuthSavedPaymentMethods {\n disableSavedPaymentMethods: boolean;\n}\n\n/**\n * Configuration for zero authorization flow - verify existing card mode.\n * Shows the \"Verify Card\" flow for a specific saved card.\n * The card token will be validated to ensure it belongs to the current user's wallet.\n * If the card doesn't belong to the user, falls back to \"Add New Card\" view.\n */\nexport interface ZeroAuthVerifyCard {\n cardToken: string;\n}\n\n/**\n * Configuration for zero authorization flow.\n * The presence of this object indicates the checkout is in zero auth mode.\n *\n * Two mutually exclusive modes:\n * - Saved payment methods: `{ disableSavedPaymentMethods: boolean }` - show or hide saved methods\n * - Verify card: `{ cardToken: \"token\" }` - verify a specific saved card\n */\nexport type ZeroAuthorizationConfig =\n | ZeroAuthSavedPaymentMethods\n | ZeroAuthVerifyCard;\n\nexport function isZeroAuthVerifyCard(\n config: ZeroAuthorizationConfig\n): config is ZeroAuthVerifyCard {\n return 'cardToken' in config;\n}\n\nexport function isZeroAuthSavedPaymentMethods(\n config: ZeroAuthorizationConfig\n): config is ZeroAuthSavedPaymentMethods {\n return 'disableSavedPaymentMethods' in config;\n}\n\nexport enum MerchantStyle {\n Rounded = 'rounded',\n Sharp = 'sharp',\n Pill = 'pill',\n}\n\nexport type MerchantTheme = {\n primary?: string;\n background?: string;\n backgroundAccent?: string;\n backgroundAccent2?: string;\n textColor?: string;\n textColorAccent?: string;\n textColorAction?: string;\n ctaColor?: string;\n font?: string;\n style?: MerchantStyle;\n};\n\ninterface BaseCustomerInfo {\n verificationId?: string;\n displayName?: string;\n address?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n ip?: string;\n lat?: string;\n lng?: string;\n /**\n * Date of birth in YYYY-MM-DD format\n */\n dob?: string;\n email?: string;\n}\n\nexport interface NameCustomerInfo extends BaseCustomerInfo {\n /**\n * @hidden\n */\n name?: string;\n}\n\nexport interface SplitNameCustomerInfo extends BaseCustomerInfo {\n /**\n * @minLength 1\n */\n firstName: string;\n /**\n * @minLength 1\n */\n lastName: string;\n}\n\nexport type CustomerInfo = SplitNameCustomerInfo | NameCustomerInfo;\n\n/** Coinflow Types **/\nexport type CoinflowBlockchain =\n | 'solana'\n | 'eth'\n | 'polygon'\n | 'base'\n | 'arbitrum'\n | 'stellar'\n | 'monad'\n | 'user';\nexport type CoinflowEnvs =\n | 'prod'\n | 'staging'\n | 'staging-live'\n | 'sandbox'\n | 'local';\n\nexport interface CoinflowTypes {\n merchantId: string;\n env?: CoinflowEnvs;\n loaderBackground?: string;\n blockchain?: CoinflowBlockchain | undefined;\n handleHeightChange?: (height: string) => void;\n theme?: MerchantTheme;\n}\n\nexport type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport type MergeWithOptionalDiff<A, B> =\n // shared fields (required)\n Pick<A, Extract<keyof A, keyof B>> &\n Pick<B, Extract<keyof B, keyof A>> &\n // A-only fields (optional)\n Partial<Omit<A, keyof B>> &\n // B-only fields (optional)\n Partial<Omit<B, keyof A>>;\n\nexport type OnSuccessMethod = (\n args:\n | {\n paymentId: string;\n hash?: string | undefined;\n }\n | string\n) => void | Promise<void>;\n\nexport type AuthDeclinedWalletCallInfo = {\n title: string;\n code: string;\n action: string;\n message: string;\n total: string;\n};\n\nexport type OnAuthDeclinedMethod = (\n args: AuthDeclinedWalletCallInfo\n) => void | Promise<void>;\n\n/** Wallets **/\nexport interface SolanaWallet {\n publicKey: PublicKey | null;\n signTransaction?: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<T>;\n sendTransaction: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<string>;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\ntype AccessList = Array<{address: string; storageKeys: Array<string>}>;\ntype AccessListish =\n | AccessList\n | Array<[string, Array<string>]>\n | Record<string, Array<string>>;\n\nexport type EthWallet = {\n address: string | null | undefined;\n sendTransaction: (transaction: {\n to: string;\n from?: string;\n nonce?: Bytes | bigint | string | number;\n\n gasLimit?: Bytes | bigint | string | number;\n gasPrice?: Bytes | bigint | string | number;\n\n data?: BytesLike;\n value?: Bytes | bigint | string | number;\n chainId?: number;\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: Bytes | bigint | string | number;\n maxFeePerGas?: Bytes | bigint | string | number;\n\n customData?: Record<string, any>;\n ccipReadEnabled?: boolean;\n }) => Promise<{hash: string}>;\n signMessage: (message: string) => Promise<string>;\n};\n\nexport interface StellarWallet {\n address: string | null;\n sendTransaction: (base64Xdr: string) => Promise<string>;\n signTransaction: (base64Xdr: string) => Promise<string>;\n signMessage: (message: string) => Promise<string>;\n}\n\n/** History **/\nexport interface CoinflowSolanaHistoryProps extends CoinflowTypes {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport interface CoinflowSessionKeyHistoryProps extends CoinflowTypes {\n sessionKey: string;\n blockchain?: undefined;\n}\n\nexport interface CoinflowEvmHistoryProps extends CoinflowTypes {\n wallet: EthWallet;\n blockchain: 'eth' | 'polygon' | 'base' | 'arbitrum' | 'monad';\n}\n\nexport interface CoinflowEthHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowPolygonHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowBaseHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'arbitrum';\n}\n\nexport interface CoinflowStellarHistoryProps extends CoinflowTypes {\n wallet: StellarWallet;\n blockchain: 'stellar';\n}\n\nexport interface CoinflowMonadHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps\n | CoinflowStellarHistoryProps\n | CoinflowMonadHistoryProps\n | CoinflowSessionKeyHistoryProps;\n\ntype Bytes = ArrayLike<number>;\ntype BytesLike = Bytes | string;\n\n/** Purchase **/\n\nexport type CartClassOmitted = CartItemClassOmitted[];\nexport type ChargebackProtectionData = CartClassOmitted;\n\nexport type CartItemClassOmitted =\n | NftCartItemClassOmitted\n | Omit<GiftCardCartItem, 'listPrice'>\n | CryptoCartItem\n | MoneyTopUpCartItem;\nexport type ChargebackProtectionItem = CartItemClassOmitted;\n\nexport type NftCartItemClassOmitted = Omit<\n nftCartItem,\n 'sellingPrice' | 'itemClass'\n>;\n\nexport type Cart = CartItem[];\nexport type CartItem =\n | Omit<nftCartItem, 'listPrice' | 'sellingPrice'>\n | Omit<GiftCardCartItem, 'listPrice'>\n | CryptoCartItem\n | MoneyTopUpCartItem;\n\nexport enum ThreeDsChallengePreference {\n NoPreference = 'NoPreference',\n Frictionless = 'Frictionless',\n Challenge = 'Challenge',\n}\n\nexport enum PaymentMethods {\n card = 'card',\n ach = 'ach',\n fasterPayments = 'fasterPayments',\n sepa = 'sepa',\n pix = 'pix',\n usdc = 'usdc',\n googlePay = 'googlePay',\n applePay = 'applePay',\n credits = 'credits',\n crypto = 'crypto',\n instantBankTransfer = 'instantBankTransfer',\n wire = 'wire',\n}\n\nexport const paymentMethodLabels: Record<PaymentMethods, string> = {\n [PaymentMethods.card]: 'Card',\n [PaymentMethods.ach]: 'ACH',\n [PaymentMethods.fasterPayments]: 'Faster Payments',\n [PaymentMethods.sepa]: 'SEPA',\n [PaymentMethods.pix]: 'PIX',\n [PaymentMethods.usdc]: 'USDC',\n [PaymentMethods.googlePay]: 'Google Pay',\n [PaymentMethods.applePay]: 'Apple Pay',\n [PaymentMethods.credits]: 'Credits',\n [PaymentMethods.crypto]: 'Crypto',\n [PaymentMethods.instantBankTransfer]: 'Instant Bank Transfer',\n [PaymentMethods.wire]: 'Wire Transfer',\n};\n\nexport interface CoinflowCommonPurchaseProps extends CoinflowTypes {\n subtotal?: Subtotal;\n /**\n * Custom pay-in fees to add to checkout. Each fee appears as a separate line item.\n * These fees are added to the subtotal and displayed to the customer.\n */\n customPayInFees?: PurchaseCustomPayInFee[];\n presentment?: Currency;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined?: OnAuthDeclinedMethod;\n webhookInfo?: {\n [key: string]: any;\n };\n email?: string;\n chargebackProtectionData?: ChargebackProtectionData;\n planCode?: string;\n /**\n * The payment methods displayed on the UI. If omitted, all available payment methods will be displayed.\n */\n allowedPaymentMethods?: PaymentMethods[];\n customerInfo?: CustomerInfo;\n settlementType?: SettlementType;\n authOnly?: boolean;\n /**\n * @deprecated Use zeroAuthorizationConfig instead for more control over zero auth behavior.\n * Simple boolean flag for zero authorization mode. When true, defaults to showing saved payment methods.\n */\n isZeroAuthorization?: boolean;\n /**\n * Configuration for zero authorization flow. Takes precedence over isZeroAuthorization if both are provided.\n * Use this to control whether saved payment methods are shown and to pre-select a specific card for verification.\n */\n zeroAuthorizationConfig?: ZeroAuthorizationConfig;\n /**\n * If true, pre-checks the partial USDC payment checkbox when USDC balance is available.\n * If false or undefined, maintains default behavior (unchecked).\n */\n partialUsdcChecked?: boolean;\n /**\n * The DeviceID gotten from the Coinflow SDK:\n * https://docs.coinflow.cash/guides/checkout/fraud-protection/chargeback-protection/implement-chargeback-protection#how-to-add-chargeback-protection\n *\n * nSureSDK.getDeviceId()\n */\n deviceId?: string;\n jwtToken?: string;\n /**\n * Your company email address that the customer can contact.\n */\n supportEmail?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n threeDsChallengePreference?: ThreeDsChallengePreference;\n destinationAuthKey?: string;\n accountFundingTransaction?: AccountFundingTransaction;\n}\n\n/**\n * Used for Account Funding Transactions\n */\nexport interface AccountFundingTransaction {\n /**\n * Recipient information for Account Funding Transactions (AFT).\n * Required when AFT is enabled and type requires it.\n */\n recipientAftInfo?: RecipientAftInfo;\n}\n\nexport interface CoinflowSolanaPurchaseProps extends CoinflowCommonPurchaseProps {\n wallet: SolanaWallet;\n transaction?: Transaction | VersionedTransaction;\n partialSigners?: Signer[];\n debugTx?: boolean;\n connection: Connection;\n blockchain: 'solana';\n rent?: {lamports: string | number};\n nativeSolToConvert?: {lamports: string | number};\n redemptionCheck?: boolean;\n}\n\nexport interface CoinflowSessionKeyPurchaseProps extends CoinflowCommonPurchaseProps {\n sessionKey: string;\n wallet?: undefined;\n blockchain?: CoinflowBlockchain | undefined;\n}\n\nexport interface CoinflowEvmPurchaseProps extends CoinflowCommonPurchaseProps {\n transaction?: EvmTransactionData;\n wallet: EthWallet;\n}\n\nexport interface CoinflowPolygonPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowEthPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowBasePurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport interface CoinflowStellarPurchaseProps extends CoinflowCommonPurchaseProps {\n wallet: StellarWallet;\n transaction?: string;\n blockchain: 'stellar';\n}\n\nexport interface CoinflowMonadPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps\n | CoinflowStellarPurchaseProps\n | CoinflowMonadPurchaseProps;\n\n/** Withdraw **/\n\nexport interface CoinflowCommonWithdrawProps extends CoinflowTypes {\n onSuccess?: OnSuccessMethod;\n tokens?: string[];\n lockDefaultToken?: boolean;\n amount?: number;\n email?: string;\n bankAccountLinkRedirect?: string;\n additionalWallets?: {\n wallet: string;\n blockchain:\n | 'solana'\n | 'eth'\n | 'polygon'\n | 'base'\n | 'arbitrum'\n | 'monad'\n | 'stellar';\n }[];\n lockAmount?: boolean;\n transactionSigner?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n /**\n * If the withdrawer is authenticated with a sessionKey pass it here.\n */\n sessionKey?: string;\n /**\n * Array of allowed withdrawal speeds. If not provided, all speeds are allowed.\n */\n allowedWithdrawSpeeds?: WithdrawSpeed[];\n}\n\nexport type WalletTypes = SolanaWallet | EthWallet | StellarWallet;\n\nexport interface SolanaWalletProps {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport type CoinflowSolanaWithdrawProps = CoinflowCommonWithdrawProps &\n SolanaWalletProps;\n\ninterface EvmWalletProps {\n wallet: EthWallet;\n usePermit?: boolean;\n}\n\ntype CoinflowEvmWithdrawProps = CoinflowCommonWithdrawProps & EvmWalletProps;\n\nexport interface EthWalletProps {\n blockchain: 'eth';\n}\n\nexport type CoinflowEthWithdrawProps = CoinflowEvmWithdrawProps &\n EthWalletProps;\n\nexport interface PolygonWalletProps {\n blockchain: 'polygon';\n}\n\nexport type CoinflowPolygonWithdrawProps = CoinflowEvmWithdrawProps &\n PolygonWalletProps;\n\nexport interface BaseWalletProps {\n blockchain: 'base';\n}\n\nexport type CoinflowBaseWithdrawProps = CoinflowEvmWithdrawProps &\n BaseWalletProps;\n\nexport interface ArbitrumWalletProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowArbitrumWithdrawProps = CoinflowEvmWithdrawProps &\n ArbitrumWalletProps;\n\nexport interface StellarWalletProps {\n wallet: StellarWallet;\n blockchain: 'stellar';\n}\n\nexport type CoinflowStellarWithdrawProps = CoinflowCommonWithdrawProps &\n StellarWalletProps;\n\nexport interface MonadWalletProps {\n blockchain: 'monad';\n}\n\nexport type CoinflowMonadWithdrawProps = CoinflowEvmWithdrawProps &\n MonadWalletProps;\n\nexport type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps\n | CoinflowStellarWithdrawProps\n | CoinflowMonadWithdrawProps;\n\nexport interface CommonEvmRedeem {\n /**\n * Whether the UI should wait\n * for the transaction to be sent and\n * the hash to be returned.\n */\n waitForHash?: boolean;\n}\n\n/**\n * (EVM only) If your contract sends the item/service being purchased via a custom \"receiver\" field, then utilize this object.\n *\n * The coinflow contract calls the \"to\" contract, which transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n */\nexport interface NormalRedeem extends CommonEvmRedeem {\n /**\n * Transaction to be called.\n */\n transaction: {\n /**\n * The merchant's whitelisted contract\n */\n to: string;\n /**\n * The data to call this contract with, HEX encoded.\n *\n * The coinflow contract calls the \"to\" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n */\n data: string;\n };\n}\n\n/**\n * (EVM only) If your know the ID of the NFT being purchased, then utilize this object.\n *\n * The contract transfers the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract fwd's the NFT to the end user's wallet.\n */\nexport interface KnownTokenIdRedeem extends NormalRedeem {\n /**\n * The address of the Nft's Contract\n *\n * @minLength 42 Please provide a valid EVM Address (42 Characters Long)\n * @maxLength 42 Please provide a valid EVM Address (42 Characters Long)\n */\n nftContract: string;\n /**\n * The ID of the NFT being purchased. Will be forwarded by the Coinflow contract to the customer's wallet.\n *\n * @minLength 1 Please provide a valid Nft Id\n */\n nftId: string;\n}\n\n/**\n * (EVM only) If your contract mints an NFT via a OpenZeppelin Safe Mint Call, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the SafeMint event, and fwd's the NFT to the end user's wallet.\n */\nexport interface SafeMintRedeem extends NormalRedeem {\n type: 'safeMint';\n nftContract?: string;\n}\n\n/**\n * (EVM only) If your contract returns the NFT ID, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the returned NFT ID, and fwd's the NFT to the end user's wallet.\n */\nexport interface ReturnedTokenIdRedeem extends NormalRedeem {\n type: 'returned';\n nftContract?: string;\n}\n\nexport interface TokenRedeem extends CommonEvmRedeem {\n type: 'token';\n destination: string;\n}\n\n/**\n * If your contract exists on a chain supported by Decent, pass this object in order to call it.\n */\nexport interface DecentRedeem extends CommonEvmRedeem {\n type: 'decent';\n /**\n * ID of the destination chain you will be using\n * Find your chain ID here: https://chainlist.org/\n */\n dstChainId: number;\n /**\n * Address on that chain of the token you will be receiving\n */\n dstToken: string;\n /**\n * The contract address which will be called on the destination chain\n */\n contractAddress: string;\n contractData: string;\n /**\n * Amount of the token on the destination chain you will be receiving\n */\n cost: {\n /**\n * This is the raw amount of the token\n * ex: 50000000000000n\n */\n amount: string;\n /**\n * Whether or not the token is the native token for the chain (ex: Ethereum - ETH, Polygon - POL).\n * If native dstToken should be the 0 address (0x00...)\n */\n isNative: boolean;\n };\n}\n\n/**\n * (EVM only) if you want to execute an EVM transaction on a successful purchase, you can pass a transaction request here.\n *\n * Gas fees for the transaction will be automatically calculated and added to the total charged to the customer. Optionally the merchant can opt to pay for these gas fees.\n */\nexport type EvmTransactionData =\n | SafeMintRedeem\n | ReturnedTokenIdRedeem\n | KnownTokenIdRedeem\n | NormalRedeem\n | TokenRedeem\n | DecentRedeem;\n\nexport interface CoinflowIFrameProps\n extends\n Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>,\n Pick<\n CoinflowCommonPurchaseProps,\n | 'chargebackProtectionData'\n | 'webhookInfo'\n | 'subtotal'\n | 'customPayInFees'\n | 'presentment'\n | 'customerInfo'\n | 'settlementType'\n | 'email'\n | 'planCode'\n | 'deviceId'\n | 'jwtToken'\n | 'origins'\n | 'threeDsChallengePreference'\n | 'supportEmail'\n | 'allowedPaymentMethods'\n | 'accountFundingTransaction'\n | 'partialUsdcChecked'\n | 'isZeroAuthorization'\n | 'zeroAuthorizationConfig'\n >,\n Pick<\n CoinflowCommonWithdrawProps,\n | 'bankAccountLinkRedirect'\n | 'additionalWallets'\n | 'transactionSigner'\n | 'lockAmount'\n | 'lockDefaultToken'\n | 'origins'\n | 'allowedWithdrawSpeeds'\n >,\n Pick<CoinflowEvmPurchaseProps, 'authOnly'>,\n Pick<\n CoinflowSolanaPurchaseProps,\n 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'\n > {\n walletPubkey: string | null | undefined;\n sessionKey?: string;\n route: string;\n routePrefix?: string;\n transaction?: string;\n tokens?: string[] | PublicKey[];\n merchantCss?: string;\n color?: 'white' | 'black';\n disableApplePay?: boolean;\n disableGooglePay?: boolean;\n theme?: MerchantTheme;\n usePermit?: boolean;\n handleHeightChangeId: string | number;\n}\n\nexport enum CardType {\n VISA = 'VISA',\n MASTERCARD = 'MSTR',\n AMEX = 'AMEX',\n DISCOVER = 'DISC',\n}\n\nexport interface RecipientAftInfo {\n /**\n * @minLength 2\n */\n firstName: string;\n /**\n * @minLength 2\n */\n lastName: string;\n /**\n * @minLength 2\n */\n address1: string;\n /**\n * @minLength 2\n */\n city: string;\n /**\n * @minLength 2\n */\n postalCode: string;\n /**\n * @minLength 2\n */\n state?: string;\n /**\n * @minLength 2\n * @maxLength 2\n */\n countryCode: string;\n /**\n * Recipients Date Of Birth in YYYMMDD format.\n * @pattern ^\\d{8}$\n */\n dateOfBirth?: string;\n /**\n * @pattern ^\\d+$\n */\n phoneNumber?: string;\n documentReference?: string;\n}\n\nexport const RN_REDIRECT_MESSAGE_NAME = 'rnredirect'; // DO NOT CHANGE\n","// This works in angular, but not react\n// let web3: typeof import('@solana/web3.js') | undefined;\n// let base58: typeof import('bs58') | undefined;\n//\n// try {\n// web3 = require('@solana/web3.js');\n// base58 = require('bs58');\n// } catch (e) {}\n//\n// export {web3, base58};\n\n// This works in react, but not angular\nimport * as SolanaWeb3Js from '@solana/web3.js';\nimport base58Imported from 'bs58';\n\nconst web3: typeof SolanaWeb3Js | undefined = SolanaWeb3Js;\nconst base58: typeof base58Imported | undefined = base58Imported;\nexport {web3, base58};\n","export enum Currency {\n USD = 'USD',\n AED = 'AED',\n AFN = 'AFN',\n ALL = 'ALL',\n AMD = 'AMD',\n ANG = 'ANG',\n AOA = 'AOA',\n ARS = 'ARS',\n AUD = 'AUD',\n AWG = 'AWG',\n AZN = 'AZN',\n BAM = 'BAM',\n BBD = 'BBD',\n BDT = 'BDT',\n BGN = 'BGN',\n BHD = 'BHD',\n BIF = 'BIF',\n BMD = 'BMD',\n BND = 'BND',\n BOB = 'BOB',\n BRL = 'BRL',\n BSD = 'BSD',\n BTN = 'BTN',\n BWP = 'BWP',\n BYN = 'BYN',\n BZD = 'BZD',\n CAD = 'CAD',\n CHF = 'CHF',\n CLF = 'CLF',\n CLP = 'CLP',\n CNY = 'CNY',\n COP = 'COP',\n CRC = 'CRC',\n CUP = 'CUP',\n CVE = 'CVE',\n CZK = 'CZK',\n DJF = 'DJF',\n DKK = 'DKK',\n DOP = 'DOP',\n DZD = 'DZD',\n EGP = 'EGP',\n ETB = 'ETB',\n EUR = 'EUR',\n FJD = 'FJD',\n GBP = 'GBP',\n GEL = 'GEL',\n GHS = 'GHS',\n GMD = 'GMD',\n GNF = 'GNF',\n GTQ = 'GTQ',\n GYD = 'GYD',\n HKD = 'HKD',\n HNL = 'HNL',\n HTG = 'HTG',\n HUF = 'HUF',\n IDR = 'IDR',\n ILS = 'ILS',\n INR = 'INR',\n IQD = 'IQD',\n IRR = 'IRR',\n ISK = 'ISK',\n JMD = 'JMD',\n JOD = 'JOD',\n JPY = 'JPY',\n KES = 'KES',\n KGS = 'KGS',\n KHR = 'KHR',\n KMF = 'KMF',\n KRW = 'KRW',\n KWD = 'KWD',\n KYD = 'KYD',\n KZT = 'KZT',\n LAK = 'LAK',\n LBP = 'LBP',\n LKR = 'LKR',\n LRD = 'LRD',\n LSL = 'LSL',\n LYD = 'LYD',\n MAD = 'MAD',\n MDL = 'MDL',\n MGA = 'MGA',\n MKD = 'MKD',\n MMK = 'MMK',\n MNT = 'MNT',\n MOP = 'MOP',\n MRU = 'MRU',\n MUR = 'MUR',\n MWK = 'MWK',\n MVR = 'MVR',\n MXN = 'MXN',\n MYR = 'MYR',\n MZN = 'MZN',\n NAD = 'NAD',\n NGN = 'NGN',\n NIO = 'NIO',\n NOK = 'NOK',\n NPR = 'NPR',\n NZD = 'NZD',\n OMR = 'OMR',\n PAB = 'PAB',\n PEN = 'PEN',\n PGK = 'PGK',\n PHP = 'PHP',\n PKR = 'PKR',\n PLN = 'PLN',\n PYG = 'PYG',\n QAR = 'QAR',\n RON = 'RON',\n RSD = 'RSD',\n RWF = 'RWF',\n SAR = 'SAR',\n SCR = 'SCR',\n SDG = 'SDG',\n SEK = 'SEK',\n SGD = 'SGD',\n SLE = 'SLE',\n SLL = 'SLL',\n SOS = 'SOS',\n SRD = 'SRD',\n STN = 'STN',\n SVC = 'SVC',\n SYP = 'SYP',\n SZL = 'SZL',\n THB = 'THB',\n TJS = 'TJS',\n TMT = 'TMT',\n TND = 'TND',\n TOP = 'TOP',\n TRY = 'TRY',\n TTD = 'TTD',\n TWD = 'TWD',\n TZS = 'TZS',\n UAH = 'UAH',\n UGX = 'UGX',\n UYU = 'UYU',\n UZS = 'UZS',\n VND = 'VND',\n VUV = 'VUV',\n WST = 'WST',\n XAF = 'XAF',\n XCD = 'XCD',\n XOF = 'XOF',\n XPF = 'XPF',\n YER = 'YER',\n ZAR = 'ZAR',\n ZMW = 'ZMW',\n ZWL = 'ZWL',\n\n CDF = 'CDF',\n ERN = 'ERN',\n FKP = 'FKP',\n KPW = 'KPW',\n RUB = 'RUB',\n SBD = 'SBD',\n SHP = 'SHP',\n SSP = 'SSP',\n VES = 'VES',\n}\n\nexport const CurrencyToISO4217: Record<Currency, string> = {\n [Currency.AED]: '784',\n [Currency.AFN]: '971',\n [Currency.ALL]: '008',\n [Currency.AMD]: '051',\n [Currency.ANG]: '532',\n [Currency.AOA]: '973',\n [Currency.AUD]: '036',\n [Currency.AWG]: '533',\n [Currency.AZN]: '944',\n [Currency.BAM]: '977',\n [Currency.BBD]: '052',\n [Currency.BDT]: '050',\n [Currency.BGN]: '975',\n [Currency.BHD]: '048',\n [Currency.BIF]: '108',\n [Currency.BND]: '096',\n [Currency.BOB]: '068',\n [Currency.BRL]: '986',\n [Currency.BTN]: '064',\n [Currency.BWP]: '072',\n [Currency.BZD]: '084',\n [Currency.CAD]: '124',\n [Currency.CHF]: '756',\n [Currency.CLP]: '152',\n [Currency.CNY]: '156',\n [Currency.COP]: '170',\n [Currency.CRC]: '188',\n [Currency.CVE]: '132',\n [Currency.CZK]: '203',\n [Currency.DJF]: '262',\n [Currency.DKK]: '208',\n [Currency.DOP]: '214',\n [Currency.DZD]: '012',\n [Currency.EGP]: '818',\n [Currency.ETB]: '230',\n [Currency.EUR]: '978',\n [Currency.GBP]: '826',\n [Currency.GEL]: '981',\n [Currency.GHS]: '936',\n [Currency.GMD]: '270',\n [Currency.GNF]: '324',\n [Currency.GTQ]: '320',\n [Currency.GYD]: '328',\n [Currency.HKD]: '344',\n [Currency.HNL]: '340',\n [Currency.HTG]: '332',\n [Currency.HUF]: '348',\n [Currency.IDR]: '360',\n [Currency.INR]: '356',\n [Currency.IQD]: '368',\n [Currency.IRR]: '364',\n [Currency.ISK]: '352',\n [Currency.JMD]: '388',\n [Currency.JOD]: '400',\n [Currency.JPY]: '392',\n [Currency.KES]: '404',\n [Currency.KGS]: '417',\n [Currency.KHR]: '116',\n [Currency.KMF]: '174',\n [Currency.KRW]: '410',\n [Currency.KWD]: '414',\n [Currency.KYD]: '136',\n [Currency.KZT]: '398',\n [Currency.LKR]: '144',\n [Currency.LRD]: '430',\n [Currency.LSL]: '426',\n [Currency.LYD]: '434',\n [Currency.MAD]: '504',\n [Currency.MDL]: '498',\n [Currency.MGA]: '969',\n [Currency.MKD]: '807',\n [Currency.MMK]: '104',\n [Currency.MNT]: '496',\n [Currency.MOP]: '446',\n [Currency.MRU]: '929',\n [Currency.MUR]: '480',\n [Currency.MVR]: '462',\n [Currency.MXN]: '484',\n [Currency.MYR]: '458',\n [Currency.NAD]: '516',\n [Currency.NGN]: '566',\n [Currency.NIO]: '558',\n [Currency.NOK]: '578',\n [Currency.NPR]: '524',\n [Currency.NZD]: '554',\n [Currency.OMR]: '512',\n [Currency.PAB]: '590',\n [Currency.PEN]: '604',\n [Currency.PHP]: '608',\n [Currency.PKR]: '586',\n [Currency.PLN]: '985',\n [Currency.PYG]: '600',\n [Currency.QAR]: '634',\n [Currency.RON]: '946',\n [Currency.RSD]: '941',\n [Currency.RWF]: '646',\n [Currency.SAR]: '682',\n [Currency.SCR]: '690',\n [Currency.SDG]: '938',\n [Currency.SEK]: '752',\n [Currency.SGD]: '702',\n [Currency.SLE]: '925',\n [Currency.SLL]: '694',\n [Currency.SOS]: '706',\n [Currency.STN]: '930',\n [Currency.SVC]: '222',\n [Currency.SYP]: '760',\n [Currency.SZL]: '748',\n [Currency.THB]: '764',\n [Currency.TJS]: '972',\n [Currency.TMT]: '934',\n [Currency.TND]: '788',\n [Currency.TRY]: '949',\n [Currency.TTD]: '780',\n [Currency.TWD]: '901',\n [Currency.TZS]: '834',\n [Currency.UAH]: '980',\n [Currency.UGX]: '800',\n [Currency.USD]: '840',\n [Currency.UYU]: '858',\n [Currency.UZS]: '860',\n [Currency.VND]: '704',\n [Currency.XAF]: '950',\n [Currency.XCD]: '951',\n [Currency.XOF]: '952',\n [Currency.XPF]: '953',\n [Currency.YER]: '886',\n [Currency.ZAR]: '710',\n [Currency.ZMW]: '967',\n [Currency.ARS]: '032',\n [Currency.BMD]: '060',\n [Currency.BSD]: '044',\n [Currency.BYN]: '933',\n [Currency.CUP]: '192',\n [Currency.FJD]: '242',\n [Currency.ILS]: '376',\n [Currency.LAK]: '418',\n [Currency.LBP]: '422',\n [Currency.MWK]: '454',\n [Currency.MZN]: '943',\n [Currency.PGK]: '598',\n [Currency.SRD]: '968',\n [Currency.TOP]: '776',\n [Currency.VUV]: '548',\n [Currency.WST]: '882',\n [Currency.ZWL]: '932',\n [Currency.CLF]: '990',\n [Currency.CDF]: '976',\n [Currency.ERN]: '232',\n [Currency.FKP]: '238',\n [Currency.KPW]: '408',\n [Currency.RUB]: '643',\n [Currency.SBD]: '090',\n [Currency.SHP]: '654',\n [Currency.SSP]: '728',\n [Currency.VES]: '928',\n};\n\nexport type WithdrawCurrency =\n | Currency.USD\n | Currency.EUR\n | Currency.GBP\n | Currency.BRL\n | Currency.CAD;\n\nexport const WithdrawCurrencies = {\n [Currency.USD]: Currency.USD,\n [Currency.EUR]: Currency.EUR,\n [Currency.GBP]: Currency.GBP,\n [Currency.BRL]: Currency.BRL,\n [Currency.CAD]: Currency.CAD,\n} as const;\n\nexport function isWithdrawCurrency(\n currency: Currency\n): currency is WithdrawCurrency {\n return currency in WithdrawCurrencies;\n}\n\nexport type BankingCurrency =\n | Currency.USD\n | Currency.EUR\n | Currency.GBP\n | Currency.CAD\n | Currency.BRL;\n\nexport const BankingCurrencies = {\n [Currency.USD]: Currency.USD,\n [Currency.EUR]: Currency.EUR,\n [Currency.GBP]: Currency.GBP,\n [Currency.CAD]: Currency.CAD,\n [Currency.BRL]: Currency.BRL,\n} as const;\n\nexport function isBankingCurrency(\n currency: Currency\n): currency is BankingCurrency {\n return currency in BankingCurrencies;\n}\n\nconst FourDecimalCurrencies = new Set<Currency>([Currency.CLF]);\n\nconst ThreeDecimalCurrencies = new Set<Currency>([\n Currency.BHD,\n Currency.IQD,\n Currency.JOD,\n Currency.KWD,\n Currency.LYD,\n Currency.OMR,\n Currency.TND,\n]);\n\nconst ZeroDecimalCurrencies = new Set<Currency>([\n Currency.BIF,\n Currency.CLP,\n Currency.DJF,\n Currency.GNF,\n Currency.ISK,\n Currency.JPY,\n Currency.KMF,\n Currency.PYG,\n Currency.RWF,\n Currency.UGX,\n Currency.VND,\n Currency.VUV,\n Currency.XAF,\n Currency.XOF,\n Currency.XPF,\n]);\n\nexport function getCurrencyDecimals(currency: Currency): number {\n if (FourDecimalCurrencies.has(currency)) return 4;\n if (ThreeDecimalCurrencies.has(currency)) return 3;\n if (ZeroDecimalCurrencies.has(currency)) return 0;\n return 2;\n}\n\nexport interface Cents {\n /**\n * @isInt Cents must be an integer\n * @minimum 0 Minimum Cents is 0\n */\n cents: number;\n}\n\nexport interface CurrencyCents extends Cents {\n currency: Currency;\n}\n\nexport interface RemainingLimit extends CurrencyCents {\n type: 'single transaction' | 'daily' | 'monthly';\n}\n\nexport interface TypedCurrencyCents<T extends Currency> extends Cents {\n currency: T;\n}\n\nexport function isTypedCurrencyCents<T extends Currency>(\n cents: CurrencyCents,\n currency: T\n): cents is TypedCurrencyCents<T> {\n return cents.currency === currency;\n}\n\nexport interface TokenSubtotal {\n /**\n * The tokens address\n *\n * Solana - Token Mint Address\n * Evm - Token Contract Address\n */\n address: string;\n /**\n * Number of tokens\n */\n amount: number | string;\n /**\n * Number of decimals for the token\n */\n decimals?: number;\n}\n\nexport type Subtotal = CurrencyCents | Cents | TokenSubtotal;\n","import nsureSDK from '@nsure-ai/web-client-sdk';\n\nfunction fun(): string | null {\n if (nsureSDK) return nsureSDK.getDeviceId();\n return null;\n}\n\nexport default fun;\n","import {\n CoinflowBlockchain,\n CoinflowEnvs,\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CustomerInfo,\n} from './CoinflowTypes';\nimport {web3, base58} from './SolanaPeerDeps';\nimport LZString from 'lz-string';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {Currency} from './types/Subtotal';\nimport getNSureDeviceId from './NSure';\n\nexport class CoinflowUtils {\n env: CoinflowEnvs;\n url: string;\n\n constructor(env?: CoinflowEnvs) {\n this.env = env ?? 'prod';\n if (this.env === 'prod') this.url = 'https://api.coinflow.cash';\n else if (this.env === 'local') this.url = 'http://localhost:5000';\n else this.url = `https://api-${this.env}.coinflow.cash`;\n }\n\n async getNSurePartnerId(merchantId: string): Promise<string | undefined> {\n return fetch(this.url + `/merchant/view/${merchantId}`)\n .then(response => response.json())\n .then(\n (json: {\n nSurePartnerId: string | undefined;\n nSureSettings: {nSurePartnerId: string | undefined};\n }) => json.nSureSettings?.nSurePartnerId || json.nSurePartnerId\n )\n .catch(e => {\n console.error(e);\n return undefined;\n });\n }\n\n static getCoinflowBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://coinflow.cash';\n // @ts-expect-error This is for testing\n if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n if (env === 'local') return 'http://localhost:3000';\n\n return `https://${env}.coinflow.cash`;\n }\n\n static getCoinflowAppBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://app.coinflow.cash';\n // @ts-expect-error This is for testing\n if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n if (env === 'local') return 'http://localhost:3003';\n\n return `https://app-${env}.coinflow.cash`;\n }\n\n static getCoinflowApiUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://api.coinflow.cash';\n if (env === 'local') return 'http://localhost:5000';\n\n return `https://api-${env}.coinflow.cash`;\n }\n\n static getCoinflowUrl({\n walletPubkey,\n sessionKey,\n route,\n routePrefix,\n env,\n subtotal,\n customPayInFees,\n presentment,\n transaction,\n blockchain = 'solana',\n webhookInfo,\n email,\n loaderBackground,\n handleHeightChangeId,\n bankAccountLinkRedirect,\n additionalWallets,\n chargebackProtectionData,\n merchantCss,\n color,\n rent,\n lockDefaultToken,\n tokens,\n planCode,\n disableApplePay,\n disableGooglePay,\n customerInfo,\n settlementType,\n lockAmount,\n nativeSolToConvert,\n theme,\n usePermit,\n transactionSigner,\n authOnly,\n deviceId,\n jwtToken,\n origins,\n threeDsChallengePreference,\n supportEmail,\n destinationAuthKey,\n allowedPaymentMethods,\n accountFundingTransaction,\n partialUsdcChecked,\n redemptionCheck,\n allowedWithdrawSpeeds,\n isZeroAuthorization,\n zeroAuthorizationConfig,\n baseUrl,\n }: CoinflowIFrameProps & {baseUrl?: string}): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(\n prefix + route,\n baseUrl ?? CoinflowUtils.getCoinflowBaseUrl(env)\n );\n\n if (walletPubkey) url.searchParams.append('pubkey', walletPubkey);\n if (sessionKey) url.searchParams.append('sessionKey', sessionKey);\n\n if (transaction) {\n url.searchParams.append('transaction', transaction);\n }\n\n if (subtotal) {\n if ('cents' in subtotal) {\n url.searchParams.append('cents', subtotal.cents.toString());\n if ('currency' in subtotal) {\n url.searchParams.append('currency', subtotal.currency.toString());\n } else {\n url.searchParams.append('currency', Currency.USD);\n }\n } else {\n url.searchParams.append('token', subtotal.address.toString());\n url.searchParams.append('amount', subtotal.amount.toString());\n }\n }\n\n if (customPayInFees && customPayInFees.length > 0) {\n url.searchParams.append(\n 'customPayInFees',\n encodeURIComponent(JSON.stringify(customPayInFees))\n );\n }\n\n if (presentment) url.searchParams.append('presentment', presentment);\n\n if (webhookInfo) {\n url.searchParams.append(\n 'webhookInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(webhookInfo))\n );\n }\n\n if (theme) {\n url.searchParams.append(\n 'theme',\n LZString.compressToEncodedURIComponent(JSON.stringify(theme))\n );\n }\n\n if (customerInfo) {\n url.searchParams.append(\n 'customerInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(customerInfo))\n );\n }\n\n if (email) {\n url.searchParams.append('email', email);\n }\n if (supportEmail) url.searchParams.append('supportEmail', supportEmail);\n\n if (tokens) {\n url.searchParams.append('tokens', tokens.toString());\n }\n\n if (loaderBackground) {\n url.searchParams.append('loaderBackground', loaderBackground);\n }\n\n if (handleHeightChangeId) {\n url.searchParams.append(\n 'useHeightChange',\n handleHeightChangeId.toString()\n );\n }\n\n if (bankAccountLinkRedirect) {\n url.searchParams.append(\n 'bankAccountLinkRedirect',\n bankAccountLinkRedirect\n );\n }\n\n if (additionalWallets)\n url.searchParams.append(\n 'additionalWallets',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(additionalWallets)\n )\n );\n\n if (chargebackProtectionData)\n url.searchParams.append(\n 'chargebackProtectionData',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(chargebackProtectionData)\n )\n );\n if (deviceId) {\n url.searchParams.append('deviceId', deviceId);\n } else {\n const deviceId = getNSureDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\n\n if (merchantCss) url.searchParams.append('merchantCss', merchantCss);\n if (color) url.searchParams.append('color', color);\n if (rent) url.searchParams.append('rent', rent.lamports.toString());\n if (redemptionCheck) url.searchParams.append('redemptionCheck', 'true');\n if (nativeSolToConvert)\n url.searchParams.append(\n 'nativeSolToConvert',\n nativeSolToConvert.lamports.toString()\n );\n if (lockDefaultToken) url.searchParams.append('lockDefaultToken', 'true');\n if (planCode) url.searchParams.append('planCode', planCode);\n\n if (disableApplePay) url.searchParams.append('disableApplePay', 'true');\n if (disableGooglePay) url.searchParams.append('disableGooglePay', 'true');\n if (settlementType)\n url.searchParams.append('settlementType', settlementType);\n\n if (lockAmount) url.searchParams.append('lockAmount', 'true');\n\n if (usePermit === false) url.searchParams.append('usePermit', 'false');\n if (transactionSigner)\n url.searchParams.append('transactionSigner', transactionSigner);\n if (authOnly === true) url.searchParams.append('authOnly', 'true');\n\n // zeroAuthorizationConfig takes precedence over isZeroAuthorization\n if (zeroAuthorizationConfig) {\n url.searchParams.append(\n 'zeroAuthorizationConfig',\n JSON.stringify(zeroAuthorizationConfig)\n );\n } else if (isZeroAuthorization === true) {\n url.searchParams.append('isZeroAuthorization', 'true');\n }\n\n if (partialUsdcChecked === true)\n url.searchParams.append('partialUsdcChecked', 'true');\n if (jwtToken) url.searchParams.append('jwtToken', jwtToken);\n if (origins)\n url.searchParams.append(\n 'origins',\n LZString.compressToEncodedURIComponent(JSON.stringify(origins))\n );\n\n if (allowedPaymentMethods)\n url.searchParams.append(\n 'allowedPaymentMethods',\n allowedPaymentMethods.join(',')\n );\n\n if (threeDsChallengePreference)\n url.searchParams.append(\n 'threeDsChallengePreference',\n threeDsChallengePreference\n );\n\n if (destinationAuthKey)\n url.searchParams.append('destinationAuthKey', destinationAuthKey);\n\n if (accountFundingTransaction)\n url.searchParams.append(\n 'accountFundingTransaction',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(accountFundingTransaction)\n )\n );\n\n if (allowedWithdrawSpeeds)\n url.searchParams.append(\n 'allowedWithdrawSpeeds',\n allowedWithdrawSpeeds.join(',')\n );\n\n return url.toString();\n }\n\n static getTransaction(props: CoinflowPurchaseProps): string | undefined {\n if (!props.blockchain) return undefined;\n\n return this.byBlockchain<() => string | undefined>(props.blockchain, {\n solana: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n if (!web3)\n throw new Error('@solana/web3.js dependency is required for Solana');\n if (!base58) throw new Error('bs58 dependency is required for Solana');\n if (!transaction) return undefined;\n return base58.encode(\n Uint8Array.from(\n (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n )\n );\n },\n polygon: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n eth: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n base: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n arbitrum: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n stellar: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n if (!transaction) return undefined;\n // Transaction is already base64 XDR string, pass through directly\n return transaction as string;\n },\n monad: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n user: () => {\n return undefined;\n },\n })();\n }\n\n static byBlockchain<T>(\n blockchain: CoinflowBlockchain,\n args: {\n solana: T;\n eth: T;\n polygon: T;\n base: T;\n arbitrum: T;\n stellar: T;\n monad: T;\n user: T;\n }\n ): T {\n switch (blockchain) {\n case 'solana':\n return args.solana;\n case 'polygon':\n return args.polygon;\n case 'eth':\n return args.eth;\n case 'base':\n return args.base;\n case 'arbitrum':\n return args.arbitrum;\n case 'stellar':\n return args.stellar;\n case 'monad':\n return args.monad;\n case 'user':\n return args.user;\n default:\n throw new Error('blockchain not supported!');\n }\n }\n}\n\nexport interface FullName {\n firstName: string;\n lastName: string;\n}\n\nexport function getCustomerName(\n info: CustomerInfo | undefined\n): FullName | undefined {\n if (!info) return undefined;\n\n let firstName: string | undefined, lastName: string | undefined;\n if ('name' in info && info.name) {\n firstName = info.name.split(' ')[0];\n lastName = info.name.split(' ').slice(1).join(' ');\n }\n\n if ('firstName' in info && info.firstName) firstName = info.firstName;\n\n if ('lastName' in info && info.lastName) lastName = info.lastName;\n\n if (firstName && lastName)\n return {\n firstName,\n lastName,\n };\n return undefined;\n}\n","import {\n AuthDeclinedWalletCallInfo,\n CoinflowBlockchain,\n CoinflowPurchaseProps,\n EthWallet,\n OnAuthDeclinedMethod,\n OnSuccessMethod,\n SolanaWallet,\n StellarWallet,\n WalletTypes,\n} from './CoinflowTypes';\nimport {CoinflowUtils} from './CoinflowUtils';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {web3, base58} from './SolanaPeerDeps';\n\nexport type WalletCall =\n | {method: IFrameMessageMethods; data: string}\n | SuccessWalletCall;\n\ntype SuccessWalletCall = {\n method: IFrameMessageMethods.Success;\n data: string;\n info: {paymentId: string; hash?: string};\n};\n\ntype AuthDeclinedWalletCall = {\n method: IFrameMessageMethods.AuthDeclined;\n data: string;\n info: AuthDeclinedWalletCallInfo;\n};\n\nexport interface IFrameMessageHandlers {\n handleSendTransaction: (transaction: string) => Promise<string>;\n handleSignMessage?: (message: string) => Promise<string>;\n handleSignTransaction?: (transaction: string) => Promise<string>;\n handleHeightChange?: (height: string) => void;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}\n\nexport enum IFrameMessageMethods {\n SignMessage = 'signMessage',\n SignTransaction = 'signTransaction',\n SendTransaction = 'sendTransaction',\n HeightChange = 'heightChange',\n Success = 'success',\n AuthDeclined = 'authDeclined',\n Loaded = 'loaded',\n AccountLinked = 'accountLinked',\n}\n\nexport function getWalletPubkey(\n input: Pick<CoinflowPurchaseProps, 'wallet' | 'blockchain'>\n): string | null | undefined {\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in input &&\n typeof input.signer === 'object' &&\n input.signer &&\n 'wallet' in input.signer\n )\n wallet = input.signer.wallet as WalletTypes;\n else if ('wallet' in input && input.wallet) wallet = input.wallet;\n\n if (!wallet) return;\n\n if (typeof wallet === 'string') return wallet;\n\n if (typeof wallet === 'object') {\n if ('publicKey' in wallet)\n return wallet.publicKey ? wallet.publicKey.toString() : undefined;\n\n if ('address' in wallet)\n return wallet.address ? (wallet.address as string) : undefined;\n }\n\n return null;\n}\n\nexport function handleIFrameMessage(\n rawMessage: string,\n handlers: IFrameMessageHandlers,\n handleHeightChangeId: string | number\n): Promise<string> | void {\n let walletCall: WalletCall;\n try {\n walletCall = JSON.parse(rawMessage);\n if (!('method' in walletCall) || !('data' in walletCall)) return;\n } catch (e) {\n console.error('handleIFrameMessage JSON parse', e);\n return;\n }\n\n const {data, method} = walletCall;\n switch (method) {\n case IFrameMessageMethods.SignMessage:\n if (!handlers.handleSignMessage) return;\n return handlers.handleSignMessage(data);\n case IFrameMessageMethods.SignTransaction:\n if (!handlers.handleSignTransaction) return;\n return handlers.handleSignTransaction(data);\n case IFrameMessageMethods.SendTransaction:\n return handlers.handleSendTransaction(data);\n case IFrameMessageMethods.HeightChange + ':' + handleHeightChangeId:\n if (!handlers.handleHeightChange) return;\n return handlers.handleHeightChange(data);\n case IFrameMessageMethods.Success:\n if (!handlers.onSuccess) return;\n handlers.onSuccess((walletCall as SuccessWalletCall).info);\n return;\n case IFrameMessageMethods.AuthDeclined:\n if (!handlers.onAuthDeclined) return;\n handlers.onAuthDeclined((walletCall as AuthDeclinedWalletCall).info);\n return;\n case IFrameMessageMethods.Loaded:\n return;\n case IFrameMessageMethods.AccountLinked:\n return;\n }\n\n console.warn(\n `Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`\n );\n}\n\nexport function getHandlers(\n props: Pick<\n CoinflowPurchaseProps,\n 'wallet' | 'blockchain' | 'onSuccess' | 'onAuthDeclined'\n >\n): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n let chain: CoinflowBlockchain | undefined;\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in props &&\n typeof props.signer === 'object' &&\n props.signer &&\n 'blockchain' in props.signer &&\n 'wallet' in props.signer\n ) {\n chain = props.signer.blockchain as CoinflowBlockchain;\n wallet = props.signer.wallet as WalletTypes;\n } else if ('blockchain' in props && props.blockchain) {\n chain = props.blockchain;\n wallet = props.wallet;\n }\n\n if (!chain) {\n return {\n handleSendTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignMessage: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n };\n }\n\n return CoinflowUtils.byBlockchain(chain, {\n solana: () =>\n getSolanaWalletHandlers({\n wallet: wallet as SolanaWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n eth: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n polygon: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n base: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n arbitrum: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n stellar: () =>\n getStellarWalletHandlers({\n wallet: wallet as StellarWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n monad: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n onAuthDeclined: props.onAuthDeclined,\n }),\n user: () => getSessionKeyHandlers(props),\n })();\n}\n\nfunction getSolanaWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: SolanaWallet;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = getSolanaTransaction(transaction);\n return await wallet.sendTransaction(tx);\n },\n handleSignMessage: async (message: string) => {\n const signMessage = wallet.signMessage;\n if (!signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n\n const signedMessage = await signMessage(\n new TextEncoder().encode(message)\n );\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(signedMessage);\n },\n handleSignTransaction: async (transaction: string) => {\n const signTransaction = wallet.signTransaction;\n if (!signTransaction) {\n throw new Error('signTransaction is not supported by this wallet');\n }\n const tx = getSolanaTransaction(transaction);\n const signedTransaction = await signTransaction(tx);\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(\n Uint8Array.from(\n signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n )\n );\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getSolanaTransaction(\n data: string\n): Transaction | VersionedTransaction {\n if (!web3)\n throw new Error(\n '@solana/web3.js is not defined. Please install @solana/web3.js into your project'\n );\n\n if (!base58)\n throw new Error(\n 'bs58 is not defined. Please install bs58 into your project'\n );\n\n const parsedUInt8Array = base58.decode(data);\n const vtx = web3.VersionedTransaction.deserialize(parsedUInt8Array);\n if (vtx.version === 'legacy') return web3.Transaction.from(parsedUInt8Array);\n return vtx;\n}\n\nfunction getEvmWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: EthWallet;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());\n const {hash} = await wallet.sendTransaction(tx);\n return hash;\n },\n handleSignMessage: async (message: string) => {\n return wallet.signMessage(message);\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getStellarWalletHandlers({\n wallet,\n onSuccess,\n onAuthDeclined,\n}: {\n wallet: StellarWallet;\n onSuccess: OnSuccessMethod | undefined;\n onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n // transaction is unsigned base64 XDR\n // dapp needs to handle sending and confirming\n throw new Error(\n `sendTransaction is not supported on stellar, error when sending: ${transaction}`\n );\n },\n handleSignMessage: async (message: string) => {\n if (!wallet.signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n // Returns base64-encoded signature\n return await wallet.signMessage(message);\n },\n handleSignTransaction: async (transaction: string) => {\n if (!wallet.signTransaction) {\n throw new Error('signTransaction is not supported by this wallet');\n }\n // Returns signed base64 XDR\n return await wallet.signTransaction(transaction);\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n\nfunction getSessionKeyHandlers({\n onSuccess,\n onAuthDeclined,\n}: Pick<CoinflowPurchaseProps, 'onSuccess' | 'onAuthDeclined'>): Omit<\n IFrameMessageHandlers,\n 'handleHeightChange'\n> {\n return {\n handleSendTransaction: async () => {\n return Promise.resolve('');\n },\n onSuccess,\n onAuthDeclined,\n };\n}\n","export type EventBusCallback = (event: Event) => void;\n\nexport class EventBus {\n public static on(type: string, callback: EventBusCallback) {\n document.addEventListener(type, callback);\n }\n\n public static dispatch(type: string, data: any) {\n document.dispatchEvent(new CustomEvent(type, {detail: data}));\n }\n\n public static remove(type: string, callback: EventBusCallback) {\n document.removeEventListener(type, callback);\n }\n}\n","// Type definitions for TokenEx iframe integration\n/// <reference path=\"./TokenEx.global.d.ts\" />\n\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\nimport type {Properties as CSSProperties} from 'csstype';\n\nexport const TokenExCardNumberIframeId = 'tokenExCardNumber';\nexport const TokenExCvvContainerID = 'tokenExCardCvv';\nexport interface TokenExIframe extends ReturnType<typeof TokenEx.Iframe> {\n tokenize: () => Promise<TokenizationResponse>;\n}\n\nexport const CARD_TYPE_MAPPING: Record<CardType, string> = {\n [CardType.VISA]: 'visa',\n [CardType.MASTERCARD]: 'masterCard',\n [CardType.AMEX]: 'americanExpress',\n [CardType.DISCOVER]: 'discover',\n};\n\nexport interface TokenExIFrameConfiguration {\n origin: string;\n timestamp: string;\n tokenExID: string;\n tokenScheme: string;\n authenticationKey: string;\n pci: true;\n token?: string;\n use3DS?: boolean;\n threeDSMethodNotificationUrl?: string;\n}\n\nexport interface CardFormInputStyles {\n base: CSSProperties | string;\n placeholder?: CSSProperties | string;\n focus?: CSSProperties | string;\n error?: CSSProperties | string;\n}\n\nexport type CoinflowCardTokenResponse = {\n token: string;\n};\n\nexport interface CoinflowCardNumberInputProps {\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins: string[];\n font?: string;\n}\n\nexport interface CoinflowCvvOnlyInputProps {\n token: string;\n cardType: CardType;\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins: string[];\n font?: string;\n}\n\nexport interface VersionDetail {\n threeDSMethodURL: string;\n acsStartProtocolVersion: string;\n acsEndProtocolVersion: string;\n threeDSServerStartVersion: string;\n threeDSServerEndVersion?: string;\n acsInfoInd: [string];\n directoryServerID: string;\n dsStartProtocolVersion: string;\n dsEndProtocolVersion: string;\n dsIdentifier: string;\n threeDSServerTransID: string;\n}\n\nexport interface TokenizationResponse {\n cardType: string;\n cvvIncluded: true;\n firstSix: string;\n lastFour: string;\n referenceNumber: string;\n token: string;\n tokenHMAC: string;\n recommended3dsVersion?: Record<string, string>;\n threeDSecureResponse?: VersionDetail[];\n}\n","import type {Properties as CSSProperties} from 'csstype';\nimport {\n TokenizationResponse,\n TokenExCvvContainerID,\n TokenExIframe,\n TokenExIFrameConfiguration,\n CARD_TYPE_MAPPING,\n TokenExCardNumberIframeId,\n} from './TokenEx';\nimport {CoinflowUtils} from '../CoinflowUtils';\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\n\nexport type MerchantIdOrCheckoutJwt =\n | {checkoutJwt: string}\n | {merchantId: string};\n\nexport interface CommonDoInitializeTokenExIframeArgs {\n css: string;\n debug?: boolean;\n font?: string;\n origins: string[];\n tokenExScriptLoaded: boolean;\n env: CoinflowEnvs;\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n}\n\nexport type DoInitializeTokenExIframeArgs =\n CommonDoInitializeTokenExIframeArgs & MerchantIdOrCheckoutJwt;\n\nexport type DoInitializeCvvOnlyTokenExIframeArgs =\n DoInitializeTokenExIframeArgs & {\n token: string;\n cardType: CardType;\n };\n\nexport type GetIFrameConfigArgs = {\n token?: string;\n origins: string[];\n env: CoinflowEnvs;\n} & MerchantIdOrCheckoutJwt;\n\nexport async function getIframeConfig(\n args: GetIFrameConfigArgs\n): Promise<TokenExIFrameConfiguration> {\n const {token, origins, env} = args;\n return new Promise((resolve, reject) => {\n fetch(new CoinflowUtils(env).url + '/api/tokenize/iframe/config', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n origins,\n token,\n merchantId: 'merchantId' in args ? args.merchantId : undefined,\n checkoutJwt: 'checkoutJwt' in args ? args.checkoutJwt : undefined,\n }),\n })\n .then(async res => {\n resolve((await res.json()) as TokenExIFrameConfiguration);\n })\n .catch(e => reject(e));\n });\n}\n\nexport function setTokenExScriptTag({\n env,\n setTokenExScriptLoaded,\n}: {\n env: CoinflowEnvs;\n setTokenExScriptLoaded: (b: boolean) => void;\n}) {\n const scriptTagId = 'tokenex-script';\n if (document.head.querySelector(`#${scriptTagId}`)) {\n setTokenExScriptLoaded(true);\n }\n\n const sdkScriptTag = document.createElement('script');\n sdkScriptTag.src =\n env === 'prod'\n ? 'https://htp.tokenex.com/iframe/iframe-v3.min.js'\n : 'https://test-htp.tokenex.com/iframe/iframe-v3.min.js';\n sdkScriptTag.id = scriptTagId;\n\n document.head.appendChild(sdkScriptTag);\n\n document.getElementById(scriptTagId)!.addEventListener('load', () => {\n console.log('Setting tokenExScriptLoaded to true!');\n setTokenExScriptLoaded(true);\n });\n}\n\nfunction loadIframe({\n iframe,\n setCachedToken,\n setLoaded,\n}: {\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n iframe: ReturnType<typeof TokenEx.Iframe>;\n}): TokenExIframe {\n const tokenize = async (): Promise<TokenizationResponse> => {\n iframe.tokenize();\n return await new Promise<TokenizationResponse>((resolve, reject) => {\n iframe.on('tokenize', (data: TokenizationResponse) => {\n setCachedToken(data.token);\n resolve(data);\n });\n iframe.on('validate', (data: {isValid: boolean; isCvvValid: boolean}) => {\n // noinspection PointlessBooleanExpressionJS\n const isInvalid = !data.isValid || data.isCvvValid === false;\n if (isInvalid) reject(data);\n });\n });\n };\n\n iframe.on('change', () => setCachedToken(undefined));\n iframe.on('cvvChange', () => setCachedToken(undefined));\n\n iframe.on('load', () => {\n setTimeout(() => setLoaded(true), 350);\n const el: HTMLIFrameElement | null = document.querySelector(\n '#tx_iframe_tokenExCardNumber'\n );\n if (el) {\n // noinspection JSDeprecatedSymbols\n el.scrolling = 'no';\n }\n });\n\n iframe.on('focus', () => {\n iframe.focus();\n });\n iframe.on('cvvFocus', () => {\n iframe.cvvFocus();\n });\n\n setLoaded(false);\n iframe.load();\n\n return {...iframe, tokenize};\n}\n\nexport async function doInitializeCvvOnlyTokenExIframe(\n args: DoInitializeCvvOnlyTokenExIframeArgs\n) {\n const {token, cardType} = args;\n return await doInitialize(TokenExCvvContainerID, args, {\n cvvOnly: true,\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n placeholder: 'CVV',\n token,\n cardType: CARD_TYPE_MAPPING[cardType],\n });\n}\n\nexport async function doInitializeTokenExIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n cvvPlaceholder: 'CVV',\n });\n}\n\nexport async function doInitializeTokenExCardOnlyIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {cvv: false});\n}\n\nasync function doInitialize(\n id: string,\n args: DoInitializeTokenExIframeArgs,\n configOverrides: Partial<TokenEx.Config>\n) {\n const {tokenExScriptLoaded, css, debug, font, setCachedToken, setLoaded} =\n args;\n if (!tokenExScriptLoaded && typeof TokenEx === 'undefined') {\n console.warn(\n 'Warning Unable to load TokenEx on first attempt waiting for load event from document.head.script#tokenex-script'\n );\n return;\n }\n const iframeConfig = await getIframeConfig({\n ...args,\n token: configOverrides.token,\n });\n const {styles} = getStyles(css);\n const config = {\n ...iframeConfig,\n placeholder: '0000 0000 0000 0000',\n enablePrettyFormat: true,\n styles,\n font,\n debug: debug ?? false,\n ...configOverrides,\n };\n const iframe: ReturnType<typeof TokenEx.Iframe> = TokenEx.Iframe(id, config);\n\n return loadIframe({iframe, setCachedToken, setLoaded});\n}\n\nfunction getStyles(s: string) {\n const css = JSON.parse(s);\n const styles = {\n base: CSSPropertiesToComponent(css.base),\n focus: CSSPropertiesToComponent(css.focus),\n error: CSSPropertiesToComponent(css.error),\n placeholder: CSSPropertiesToComponent(css.placeholder),\n cvv: {\n base: CSSPropertiesToComponent(css.cvv?.base),\n focus: CSSPropertiesToComponent(css.cvv?.focus),\n error: CSSPropertiesToComponent(css.cvv?.error),\n placeholder: CSSPropertiesToComponent(css?.placeholder),\n },\n };\n\n return {styles};\n}\n\nfunction CSSPropertiesToComponent(\n dict: CSSProperties | string | undefined\n): string {\n if (!dict) return '';\n if (typeof dict === 'string') return dict;\n\n let str = '';\n for (const [key, value] of Object.entries(dict)) {\n let clo = '';\n key.split('').forEach(lt => {\n if (lt.toUpperCase() === lt) {\n clo += '-' + lt.toLowerCase();\n } else {\n clo += lt;\n }\n });\n str += clo + ':' + value + ';';\n }\n return str;\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* oxlint-disable */\n\nimport {AnyObject} from './AnyObject';\nimport {SellerInfo} from './CartitemCommon';\n\n/**\n * An nft cart item\n */\nexport type nftCartItem = {\n /**\n * Denotes the cart item class. The item schema is chosen based on this value\n */\n itemClass: 'nft';\n /**\n * The name of the related product\n *\n * @minLength 1\n */\n productName: string;\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n productType: productType;\n /**\n * The item's list price\n */\n listPrice?: {\n /**\n * The amount in the currency, which is specified in the `currency` property\n */\n valueInCurrency?: number;\n /**\n * Currency specified as a three letter code according to ISO 4217\n */\n currency?: string;\n };\n /**\n * The item's list price\n */\n sellingPrice: {\n /**\n * The amount in the currency, which is specified in the `currency` property\n */\n valueInCurrency?: number;\n /**\n * Currency specified as a three-letter code according to ISO 4217\n */\n currency?: string;\n };\n /**\n * The number of units sold\n */\n quantity: number;\n /**\n * Any additional data that the store can provide on the product, e.g. description, link to image, etc.\n */\n rawProductData?: AnyObject;\n seller?: SellerInfo;\n transactionHistory?: TransactionHistoryItem[];\n};\n\ntype TransactionHistoryItem = {\n txHash: string;\n blockNumber: number;\n txTime: string;\n assetID: string;\n registryContract: string;\n from: string;\n to: string;\n paymentToken: string;\n paymentAmount: string;\n chain: string;\n txType: string;\n};\n\nexport type productType =\n | 'inGameProduct'\n | 'gameOfSkill'\n | 'dataStorage'\n | 'computingResources'\n | 'sportsTicket'\n | 'eSportsTicket'\n | 'musicTicket'\n | 'conferenceTicket'\n | 'virtualSportsTicket'\n | 'virtualESportsTicket'\n | 'virtualMusicTicket'\n | 'virtualConferenceTicket'\n | 'alcohol'\n | 'DLC'\n | 'subscription'\n | 'fundACause'\n | 'realEstate'\n | 'computingContract'\n | 'digitalArt'\n | 'topUp'\n | 'ownershipContract'\n | 'inGameCurrency'\n | 'digitalCollectibles'\n | 'digitalCollectiblesMarketplace'\n | 'digitalGiftingMarketplace'\n | 'sweepstakes'\n | 'virtualSportsEvents'\n | 'contractInvoicing'\n | 'onlineCasino'\n | 'cryptoOnramp'\n | 'gaming'\n | 'travelDocuments'\n | 'musicStreaming'\n | 'digitalContent'\n | 'eBooks'\n | 'digitalSubscriptionContent';\n\nexport namespace nftCartItem {\n /**\n * Denotes the cart item class. The item schema is chosen based on this value\n */\n export enum itemClass {\n NFT = 'nft',\n }\n\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n export enum productType {\n IN_GAME_PRODUCT = 'inGameProduct',\n GAME_OF_SKILL = 'gameOfSkill',\n DATA_STORAGE = 'dataStorage',\n COMPUTING_RESOURCES = 'computingResources',\n SPORTS_TICKET = 'sportsTicket',\n E_SPORTS_TICKET = 'eSportsTicket',\n MUSIC_TICKET = 'musicTicket',\n CONFERENCE_TICKET = 'conferenceTicket',\n VIRTUAL_SPORTS_TICKET = 'virtualSportsTicket',\n VIRTUAL_ESPORTS_TICKET = 'virtualESportsTicket',\n VIRTUAL_MUSIC_TICKET = 'virtualMusicTicket',\n VIRTUAL_CONFERENCE_TICKET = 'virtualConferenceTicket',\n ALCOHOL = 'alcohol',\n DLC = 'DLC',\n SUBSCRIPTION = 'subscription',\n FUND_ACAUSE = 'fundACause',\n REAL_ESTATE = 'realEstate',\n COMPUTING_CONTRACT = 'computingContract',\n DIGITAL_ART = 'digitalArt',\n TOP_UP = 'topUp',\n OWNERSHIP_CONTRACT = 'ownershipContract',\n IN_GAME_CURRENCY = 'inGameCurrency',\n MONEY_TOP_UP_CART_ITEM = 'moneyTopUpCartItem',\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowUtils,\n handleIFrameMessage,\n IFrameMessageHandlers,\n} from './common';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-coinflow-iframe',\n standalone: true,\n imports: [],\n template: ` <iframe\n width=\"100%\"\n height=\"100%\"\n #iframe\n scrolling=\"{{ iframeProps?.handleHeightChangeId ? 'no' : 'yes' }}\"\n allow=\"payment;camera;clipboard-write\"\n title=\"withdraw\"\n frameBorder=\"0\"\n [src]=\"dynamicUrl\"\n credentialless\n (load)=\"handleIframeLoad()\"\n ></iframe>`,\n})\nexport class CoinflowIFrameComponent {\n @Input() iframeProps!: CoinflowIFrameProps;\n @Input() messageHandlers!: IFrameMessageHandlers;\n @Input() onLoad?: () => void | Promise<void>;\n @Input() waitForLoadedMessage?: boolean;\n\n @Output() messageEvent = new EventEmitter<any>();\n\n dynamicUrl?: SafeResourceUrl;\n @ViewChild('iframe') iframe?: ElementRef<HTMLIFrameElement>;\n private isLoading = true;\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnInit() {\n const coinflowUrl = CoinflowUtils.getCoinflowUrl(this.iframeProps);\n this.dynamicUrl =\n this.sanitizer.bypassSecurityTrustResourceUrl(coinflowUrl);\n }\n\n @HostListener('window:message', ['$event']) onPostMessage(event: any) {\n if (\n !event.origin.includes(\n CoinflowUtils.getCoinflowBaseUrl(this.iframeProps.env)\n )\n )\n return;\n\n this.messageEvent.emit(event);\n\n if (this.waitForLoadedMessage) {\n try {\n const message = JSON.parse(event.data);\n if (\n message &&\n typeof message === 'object' &&\n message.method === 'loaded'\n ) {\n this.isLoading = false;\n this.onLoad?.();\n }\n } catch (error) {\n // Ignore parse errors\n }\n }\n\n const promise = handleIFrameMessage(\n event.data,\n this.messageHandlers,\n this.iframeProps.handleHeightChangeId\n );\n if (!promise) return;\n promise\n .then(this.sendMessage.bind(this))\n .catch(e => this.sendMessage('ERROR ' + e.message));\n }\n\n sendMessage(message: string) {\n if (!this.iframe || !this.iframe.nativeElement) return;\n this.iframe.nativeElement.contentWindow!.postMessage(message, '*');\n }\n\n handleIframeLoad() {\n if (this.waitForLoadedMessage) return;\n\n this.isLoading = false;\n this.onLoad?.();\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CoinflowUtils,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\n\n@Component({\n selector: 'lib-coinflow-purchase',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"purchaseProps?.onLoad\" [waitForLoadedMessage]=\"true\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowPurchaseComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & WithOnLoad;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/purchase-v2/${this.purchaseProps?.merchantId}`,\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n handleHeightChangeId,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-history works!</p> ',\n})\nexport class CoinflowPurchaseHistoryComponent {}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-protection',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-protection works!</p> ',\n})\nexport class CoinflowPurchaseProtectionComponent {}\n","import {Component, Input} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowWithdrawProps,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\n\n@Component({\n selector: 'lib-coinflow-withdraw',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"withdrawProps?.onLoad\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowWithdrawComponent {\n @Input() withdrawProps!: CoinflowWithdrawProps & WithOnLoad;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.withdrawProps);\n this.messageHandlers = getHandlers(this.withdrawProps);\n this.messageHandlers.handleHeightChange =\n this.withdrawProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.withdrawProps,\n walletPubkey,\n route: `/withdraw/${this.withdrawProps?.merchantId}`,\n transaction: undefined,\n handleHeightChangeId,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-withdraw-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-withdraw-history works!</p> ',\n})\nexport class CoinflowWithdrawHistoryComponent {}\n","import {\n doInitializeCvvOnlyTokenExIframe,\n doInitializeTokenExCardOnlyIframe,\n doInitializeTokenExIframe,\n MerchantIdOrCheckoutJwt,\n TokenExIframe,\n} from '../common';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CardFormService {\n loaded = false;\n tokenExIframe: TokenExIframe | undefined = undefined;\n\n setTokenExIframe(iframe: TokenExIframe | undefined) {\n this.tokenExIframe = iframe;\n }\n\n setCachedToken() {}\n\n setLoaded(input: boolean) {\n this.loaded = input;\n }\n\n async initializeCvvOnlyTokenExIframe(\n args: Omit<\n Parameters<typeof doInitializeCvvOnlyTokenExIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n const iframe = await doInitializeCvvOnlyTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n\n async initializeTokenExIframe(\n args: Omit<\n Parameters<typeof doInitializeTokenExIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n console.log('initializeTokenExIframe');\n const iframe = await doInitializeTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n console.log('iframe', iframe);\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n console.log('LOADED');\n return iframe;\n }\n\n async initializeTokenExCardOnlyIframe(\n args: Omit<\n Parameters<typeof doInitializeTokenExCardOnlyIframe>[0],\n 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n > &\n MerchantIdOrCheckoutJwt\n ) {\n const iframe = await doInitializeTokenExCardOnlyIframe({\n ...args,\n tokenExScriptLoaded: true,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberInput implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeTokenExIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n public reinitialize() {\n this.iframe = undefined;\n this.initializeTokenEx();\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberOnlyInput implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeTokenExCardOnlyIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n public reinitialize() {\n this.iframe = undefined;\n this.initializeTokenEx();\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component} from '@angular/core';\nimport {TokenExCvvContainerID} from '../common';\n\n@Component({\n selector: 'lib-coinflow-cvv-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\" ></div>',\n})\nexport class CoinflowCvvInputComponent {\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {\n Component,\n inject,\n Input,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport {\n CoinflowCvvOnlyInputProps,\n MerchantIdOrCheckoutJwt,\n setTokenExScriptTag,\n TokenExCvvContainerID,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-cvv-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\"></div>',\n})\nexport class CoinflowCvvOnlyInputComponent implements OnDestroy {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCvvOnlyInputProps & MerchantIdOrCheckoutJwt;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeCvvOnlyTokenExIframe({\n ...this.args,\n css: JSON.stringify(this.args.css),\n })\n .then(iframe => {\n this.iframe = iframe;\n })\n .catch(e => console.error(e));\n }\n\n private cleanup() {\n if (this.iframe) {\n const iframeElement = document.querySelector(`#${TokenExCvvContainerID}`);\n if (iframeElement) iframeElement.innerHTML = '';\n this.iframe = undefined;\n }\n }\n\n private initializeTokenEx() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.args && !changes.args.firstChange) {\n this.reinitialize();\n }\n }\n\n public reinitialize() {\n this.cleanup();\n setTimeout(() => {\n this.initializeTokenEx();\n }, 500);\n }\n\n ngOnInit() {\n this.initializeTokenEx();\n }\n\n ngOnDestroy() {\n this.iframe = undefined;\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from '../coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CoinflowUtils,\n getHandlers,\n getWalletPubkey,\n IFrameMessageHandlers,\n} from '../common';\nimport {WithOnLoad} from '../../public-api';\n\n@Component({\n selector: 'lib-coinflow-mobile-wallet-button',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template: ` <div style=\"position: relative; height: 100%;\">\n <div\n [style.background-color]=\"purchaseProps.color\"\n [style.display]=\"overlayDisplayOverride ?? display\"\n [style.opacity]=\"opacity\"\n [style.align-items]=\"alignItems\"\n style=\"width: 100%; height: 40px; position: absolute; top: 0; bottom: 0; left: 0; z-index: 20; justify-content: center; pointer-events: none;\"\n >\n <ng-content></ng-content>\n </div>\n <div style=\"position: relative; z-index: 10; height: 100%;\">\n <lib-coinflow-iframe\n (messageEvent)=\"handleMessage($event)\"\n ng-if=\"iframeProps && messageHandlers\"\n [iframeProps]=\"iframeProps!\"\n [messageHandlers]=\"messageHandlers!\"\n [onLoad]=\"purchaseProps?.onLoad\"\n [waitForLoadedMessage]=\"true\"\n ></lib-coinflow-iframe>\n </div>\n </div>`,\n})\nexport class CoinflowMobileWalletButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps &\n WithOnLoad & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n @Input() route!: string;\n @Input() overlayDisplayOverride: string | undefined;\n @Input() alignItems: string | undefined;\n opacity: number = 0.8;\n display: string = 'flex';\n\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n handleMessage({data}: {data: string}) {\n try {\n const res = JSON.parse(data);\n\n console.log({data});\n if ('method' in res && res.data.startsWith('ERROR')) {\n this.purchaseProps.onError?.(res.info);\n return;\n }\n\n if ('method' in res && res.method === 'loaded') {\n this.opacity = 1;\n setTimeout(() => {\n this.display = 'none';\n }, 2000);\n }\n } catch (e) {}\n }\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/${this.route}/${this.purchaseProps?.merchantId}`,\n routePrefix: 'form',\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n handleHeightChangeId,\n };\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\n\n@Component({\n selector: 'lib-coinflow-apple-pay-button',\n standalone: true,\n imports: [CoinflowMobileWalletButtonComponent],\n template: ` <lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"apple-pay\"\n >\n <svg id=\"svg-logo\" viewBox=\"0 0 35 15\">\n <svg\n id=\"svg-logo\"\n x=\"0\"\n y=\"3.85\"\n height=\"7.3\"\n width=\"35\"\n className=\"logo\"\n viewBox=\"0 0 105 43\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Apple Logo</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g [attr.fill]=\"fill()\">\n <path\n d=\"M19.4028,5.5674 C20.6008,4.0684 21.4138,2.0564 21.1998,0.0004 C19.4458,0.0874 17.3058,1.1574 16.0668,2.6564 C14.9538,3.9414 13.9688,6.0374 14.2258,8.0074 C16.1948,8.1784 18.1618,7.0244 19.4028,5.5674\"\n ></path>\n <path\n d=\"M21.1772,8.3926 C18.3182,8.2226 15.8872,10.0156 14.5212,10.0156 C13.1552,10.0156 11.0642,8.4786 8.8022,8.5196 C5.8592,8.5626 3.1282,10.2276 1.6342,12.8746 C-1.4378,18.1696 0.8232,26.0246 3.8112,30.3376 C5.2622,32.4716 7.0102,34.8206 9.3142,34.7366 C11.4912,34.6506 12.3442,33.3266 14.9902,33.3266 C17.6352,33.3266 18.4042,34.7366 20.7082,34.6936 C23.0972,34.6506 24.5922,32.5586 26.0422,30.4226 C27.7072,27.9906 28.3882,25.6426 28.4312,25.5126 C28.3882,25.4706 23.8232,23.7186 23.7812,18.4676 C23.7382,14.0706 27.3652,11.9786 27.5362,11.8496 C25.4882,8.8196 22.2872,8.4786 21.1772,8.3926\"\n ></path>\n <path\n d=\"M85.5508,43.0381 L85.5508,39.1991 C85.8628,39.2421 86.6158,39.2871 87.0158,39.2871 C89.2138,39.2871 90.4558,38.3551 91.2108,35.9581 L91.6548,34.5371 L83.2428,11.2321 L88.4368,11.2321 L94.2958,30.1421 L94.4068,30.1421 L100.2668,11.2321 L105.3278,11.2321 L96.6048,35.7141 C94.6078,41.3291 92.3208,43.1721 87.4828,43.1721 C87.1048,43.1721 85.8838,43.1271 85.5508,43.0381\"\n ></path>\n <path\n d=\"M42.6499,19.3555 L48.3549,19.3555 C52.6829,19.3555 55.1469,17.0255 55.1469,12.9855 C55.1469,8.9455 52.6829,6.6375 48.3769,6.6375 L42.6499,6.6375 L42.6499,19.3555 Z M49.6869,2.4425 C55.9009,2.4425 60.2289,6.7265 60.2289,12.9625 C60.2289,19.2225 55.8129,23.5285 49.5309,23.5285 L42.6499,23.5285 L42.6499,34.4705 L37.6779,34.4705 L37.6779,2.4425 L49.6869,2.4425 Z\"\n ></path>\n <path\n d=\"M76.5547,25.7705 L76.5547,23.9715 L71.0287,24.3275 C67.9207,24.5275 66.3007,25.6815 66.3007,27.7015 C66.3007,29.6545 67.9887,30.9195 70.6287,30.9195 C74.0027,30.9195 76.5547,28.7665 76.5547,25.7705 M61.4617,27.8345 C61.4617,23.7285 64.5917,21.3755 70.3627,21.0205 L76.5547,20.6425 L76.5547,18.8675 C76.5547,16.2705 74.8457,14.8495 71.8057,14.8495 C69.2967,14.8495 67.4777,16.1375 67.0997,18.1125 L62.6167,18.1125 C62.7497,13.9615 66.6567,10.9435 71.9387,10.9435 C77.6207,10.9435 81.3267,13.9175 81.3267,18.5345 L81.3267,34.4705 L76.7327,34.4705 L76.7327,30.6305 L76.6217,30.6305 C75.3127,33.1395 72.4267,34.7145 69.2967,34.7145 C64.6807,34.7145 61.4617,31.9625 61.4617,27.8345\"\n ></path>\n </g>\n </g>\n </svg>\n </svg>\n </lib-coinflow-mobile-wallet-button>`,\n})\nexport class CoinflowApplePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n fill() {\n return this.purchaseProps.color === 'white' ? '#000' : '#FFF';\n }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'coinflow-google-pay-overlay',\n standalone: true,\n imports: [],\n template: `\n @if (color === 'white') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#5F6368\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n <path d=\"M0 0h41.285v18H0z\" />\n </g>\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#FFF\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n </g>\n </svg>\n }\n `,\n})\nexport class CoinflowGooglePayOverlayComponent {\n @Input() color!: 'white' | 'black';\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\nimport {CoinflowGooglePayOverlayComponent} from './google-pay-overlay.component';\n\n@Component({\n selector: 'lib-coinflow-google-pay-button',\n standalone: true,\n imports: [\n CoinflowMobileWalletButtonComponent,\n CoinflowGooglePayOverlayComponent,\n ],\n template: `<lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"google-pay\"\n alignItems=\"center\"\n overlayDisplayOverride=\"flex\"\n >\n <coinflow-google-pay-overlay\n [color]=\"purchaseProps.color\"\n ></coinflow-google-pay-overlay>\n </lib-coinflow-mobile-wallet-button> `,\n})\nexport class CoinflowGooglePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n}\n","/*\n * Public API Surface of coinflowlabs\n */\n\nexport * from './lib/coinflow-iframe.component';\nexport * from './lib/coinflow-purchase.component';\nexport * from './lib/coinflow-purchase-history.component';\nexport * from './lib/coinflow-purchase-protection.component';\nexport * from './lib/coinflow-withdraw.component';\nexport * from './lib/coinflow-withdraw-history.component';\n\nexport * from './lib/card-form/coinflow-card-number-input.component';\nexport * from './lib/card-form/coinflow-card-number-only-input.component';\nexport * from './lib/card-form/coinflow-cvv-input.component';\nexport * from './lib/card-form/coinflow-cvv-only-input.component';\n\nexport * from './lib/mobile-wallet/coinflow-apple-pay-button.component';\nexport * from './lib/mobile-wallet/coinflow-google-pay-button.component';\n\nexport * from './lib/common';\n\nexport type WithOnLoad = {\n onLoad?: () => void | Promise<void>;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getNSureDeviceId"],"mappings":"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A,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AAEX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EA9JW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;AAgKb,MAAM,iBAAiB,GAA6B;AACzD,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ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"}
|
package/package.json
CHANGED
|
@@ -192,6 +192,9 @@ interface Cents {
|
|
|
192
192
|
interface CurrencyCents extends Cents {
|
|
193
193
|
currency: Currency;
|
|
194
194
|
}
|
|
195
|
+
interface RemainingLimit extends CurrencyCents {
|
|
196
|
+
type: 'single transaction' | 'daily' | 'monthly';
|
|
197
|
+
}
|
|
195
198
|
interface TypedCurrencyCents<T extends Currency> extends Cents {
|
|
196
199
|
currency: T;
|
|
197
200
|
}
|
|
@@ -677,6 +680,24 @@ declare enum SettlementType {
|
|
|
677
680
|
USDC = "USDC",
|
|
678
681
|
Bank = "Bank"
|
|
679
682
|
}
|
|
683
|
+
/**
|
|
684
|
+
* Configuration for a single custom pay-in fee line item.
|
|
685
|
+
* Use with customPayInFees prop on purchase flows.
|
|
686
|
+
*/
|
|
687
|
+
interface PurchaseCustomPayInFee {
|
|
688
|
+
lineItemLabel: string;
|
|
689
|
+
fee: {
|
|
690
|
+
isFixed: true;
|
|
691
|
+
percent: null;
|
|
692
|
+
currency: Currency;
|
|
693
|
+
cents: number;
|
|
694
|
+
} | {
|
|
695
|
+
isFixed: false;
|
|
696
|
+
percent: number;
|
|
697
|
+
currency: null;
|
|
698
|
+
cents: null;
|
|
699
|
+
};
|
|
700
|
+
}
|
|
680
701
|
/**
|
|
681
702
|
* Configuration for zero authorization flow - controls saved payment method visibility.
|
|
682
703
|
*/
|
|
@@ -885,6 +906,11 @@ declare enum PaymentMethods {
|
|
|
885
906
|
declare const paymentMethodLabels: Record<PaymentMethods, string>;
|
|
886
907
|
interface CoinflowCommonPurchaseProps extends CoinflowTypes {
|
|
887
908
|
subtotal?: Subtotal;
|
|
909
|
+
/**
|
|
910
|
+
* Custom pay-in fees to add to checkout. Each fee appears as a separate line item.
|
|
911
|
+
* These fees are added to the subtotal and displayed to the customer.
|
|
912
|
+
*/
|
|
913
|
+
customPayInFees?: PurchaseCustomPayInFee[];
|
|
888
914
|
presentment?: Currency;
|
|
889
915
|
onSuccess?: OnSuccessMethod;
|
|
890
916
|
onAuthDeclined?: OnAuthDeclinedMethod;
|
|
@@ -1179,7 +1205,7 @@ interface DecentRedeem extends CommonEvmRedeem {
|
|
|
1179
1205
|
* Gas fees for the transaction will be automatically calculated and added to the total charged to the customer. Optionally the merchant can opt to pay for these gas fees.
|
|
1180
1206
|
*/
|
|
1181
1207
|
type EvmTransactionData = SafeMintRedeem | ReturnedTokenIdRedeem | KnownTokenIdRedeem | NormalRedeem | TokenRedeem | DecentRedeem;
|
|
1182
|
-
interface CoinflowIFrameProps extends Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>, Pick<CoinflowCommonPurchaseProps, 'chargebackProtectionData' | 'webhookInfo' | 'subtotal' | 'presentment' | 'customerInfo' | 'settlementType' | 'email' | 'planCode' | 'deviceId' | 'jwtToken' | 'origins' | 'threeDsChallengePreference' | 'supportEmail' | 'allowedPaymentMethods' | 'accountFundingTransaction' | 'partialUsdcChecked' | 'isZeroAuthorization' | 'zeroAuthorizationConfig'>, Pick<CoinflowCommonWithdrawProps, 'bankAccountLinkRedirect' | 'additionalWallets' | 'transactionSigner' | 'lockAmount' | 'lockDefaultToken' | 'origins' | 'allowedWithdrawSpeeds'>, Pick<CoinflowEvmPurchaseProps, 'authOnly'>, Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'> {
|
|
1208
|
+
interface CoinflowIFrameProps extends Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>, Pick<CoinflowCommonPurchaseProps, 'chargebackProtectionData' | 'webhookInfo' | 'subtotal' | 'customPayInFees' | 'presentment' | 'customerInfo' | 'settlementType' | 'email' | 'planCode' | 'deviceId' | 'jwtToken' | 'origins' | 'threeDsChallengePreference' | 'supportEmail' | 'allowedPaymentMethods' | 'accountFundingTransaction' | 'partialUsdcChecked' | 'isZeroAuthorization' | 'zeroAuthorizationConfig'>, Pick<CoinflowCommonWithdrawProps, 'bankAccountLinkRedirect' | 'additionalWallets' | 'transactionSigner' | 'lockAmount' | 'lockDefaultToken' | 'origins' | 'allowedWithdrawSpeeds'>, Pick<CoinflowEvmPurchaseProps, 'authOnly'>, Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'> {
|
|
1183
1209
|
walletPubkey: string | null | undefined;
|
|
1184
1210
|
sessionKey?: string;
|
|
1185
1211
|
route: string;
|
|
@@ -1251,7 +1277,7 @@ declare class CoinflowUtils {
|
|
|
1251
1277
|
static getCoinflowBaseUrl(env?: CoinflowEnvs): string;
|
|
1252
1278
|
static getCoinflowAppBaseUrl(env?: CoinflowEnvs): string;
|
|
1253
1279
|
static getCoinflowApiUrl(env?: CoinflowEnvs): string;
|
|
1254
|
-
static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain, webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, zeroAuthorizationConfig, baseUrl, }: CoinflowIFrameProps & {
|
|
1280
|
+
static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, customPayInFees, presentment, transaction, blockchain, webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, zeroAuthorizationConfig, baseUrl, }: CoinflowIFrameProps & {
|
|
1255
1281
|
baseUrl?: string;
|
|
1256
1282
|
}): string;
|
|
1257
1283
|
static getTransaction(props: CoinflowPurchaseProps): string | undefined;
|
|
@@ -1547,4 +1573,4 @@ type WithOnLoad = {
|
|
|
1547
1573
|
};
|
|
1548
1574
|
|
|
1549
1575
|
export { BankingCurrencies, CARD_TYPE_MAPPING, CardType, CoinflowApplePayButtonComponent, CoinflowCardNumberInput, CoinflowCardNumberOnlyInput, CoinflowCvvInputComponent, CoinflowCvvOnlyInputComponent, CoinflowGooglePayButtonComponent, CoinflowIFrameComponent, CoinflowPurchaseComponent, CoinflowPurchaseHistoryComponent, CoinflowPurchaseProtectionComponent, CoinflowUtils, CoinflowWithdrawComponent, CoinflowWithdrawHistoryComponent, Currency, CurrencyToISO4217, EventBus, IFrameMessageMethods, MerchantStyle, PaymentMethods, RN_REDIRECT_MESSAGE_NAME, SettlementType, ThreeDsChallengePreference, TokenExCardNumberIframeId, TokenExCvvContainerID, WithdrawCategory, WithdrawCurrencies, WithdrawSpeed, doInitializeCvvOnlyTokenExIframe, doInitializeTokenExCardOnlyIframe, doInitializeTokenExIframe, getCurrencyDecimals, getCustomerName, getHandlers, getIframeConfig, getWalletPubkey, handleIFrameMessage, isBankingCurrency, isTypedCurrencyCents, isWithdrawCurrency, isZeroAuthSavedPaymentMethods, isZeroAuthVerifyCard, nftCartItem, paymentMethodLabels, productType, setTokenExScriptTag };
|
|
1550
|
-
export type { AccountFundingTransaction, AnyObject, ArbitrumWalletProps, AuthDeclinedWalletCallInfo, BankingCurrency, BaseWalletProps, CardFormInputStyles, Cart, CartClassOmitted, CartItem, CartItemClassOmitted, Cents, ChargebackProtectionData, ChargebackProtectionItem, CoinflowArbitrumHistoryProps, CoinflowArbitrumPurchaseProps, CoinflowArbitrumWithdrawProps, CoinflowBaseHistoryProps, CoinflowBasePurchaseProps, CoinflowBaseWithdrawProps, CoinflowBlockchain, CoinflowCardNumberInputProps, CoinflowCardTokenResponse, CoinflowCommonPurchaseProps, CoinflowCommonWithdrawProps, CoinflowCvvOnlyInputProps, CoinflowEnvs, CoinflowEthHistoryProps, CoinflowEthPurchaseProps, CoinflowEthWithdrawProps, CoinflowEvmHistoryProps, CoinflowEvmPurchaseProps, CoinflowHistoryProps, CoinflowIFrameProps, CoinflowMonadHistoryProps, CoinflowMonadPurchaseProps, CoinflowMonadWithdrawProps, CoinflowPolygonHistoryProps, CoinflowPolygonPurchaseProps, CoinflowPolygonWithdrawProps, CoinflowPurchaseProps, CoinflowSessionKeyHistoryProps, CoinflowSessionKeyPurchaseProps, CoinflowSolanaHistoryProps, CoinflowSolanaPurchaseProps, CoinflowSolanaWithdrawProps, CoinflowStellarHistoryProps, CoinflowStellarPurchaseProps, CoinflowStellarWithdrawProps, CoinflowTypes, CoinflowWithdrawProps, CommonDoInitializeTokenExIframeArgs, CommonEvmRedeem, CryptoCartItem, CurrencyCents, CustomerInfo, DecentRedeem, DoInitializeCvvOnlyTokenExIframeArgs, DoInitializeTokenExIframeArgs, EthWallet, EthWalletProps, EventBusCallback, EvmTransactionData, FullName, GetIFrameConfigArgs, GiftCardCartItem, IFrameMessageHandlers, KnownTokenIdRedeem, MerchantIdOrCheckoutJwt, MerchantTheme, MergeWithOptionalDiff, MonadWalletProps, NameCustomerInfo, NftCartItemClassOmitted, NormalRedeem, OnAuthDeclinedMethod, OnSuccessMethod, PartialBy, PolygonWalletProps, RecipientAftInfo, ReturnedTokenIdRedeem, SafeMintRedeem, SolanaWallet, SolanaWalletProps, SplitNameCustomerInfo, StellarWallet, StellarWalletProps, Subtotal, TokenExIFrameConfiguration, TokenExIframe, TokenRedeem, TokenSubtotal, TokenizationResponse, TypedCurrencyCents, VersionDetail, WalletCall, WalletTypes, WithOnLoad, WithdrawCurrency, ZeroAuthSavedPaymentMethods, ZeroAuthVerifyCard, ZeroAuthorizationConfig };
|
|
1576
|
+
export type { AccountFundingTransaction, AnyObject, ArbitrumWalletProps, AuthDeclinedWalletCallInfo, BankingCurrency, BaseWalletProps, CardFormInputStyles, Cart, CartClassOmitted, CartItem, CartItemClassOmitted, Cents, ChargebackProtectionData, ChargebackProtectionItem, CoinflowArbitrumHistoryProps, CoinflowArbitrumPurchaseProps, CoinflowArbitrumWithdrawProps, CoinflowBaseHistoryProps, CoinflowBasePurchaseProps, CoinflowBaseWithdrawProps, CoinflowBlockchain, CoinflowCardNumberInputProps, CoinflowCardTokenResponse, CoinflowCommonPurchaseProps, CoinflowCommonWithdrawProps, CoinflowCvvOnlyInputProps, CoinflowEnvs, CoinflowEthHistoryProps, CoinflowEthPurchaseProps, CoinflowEthWithdrawProps, CoinflowEvmHistoryProps, CoinflowEvmPurchaseProps, CoinflowHistoryProps, CoinflowIFrameProps, CoinflowMonadHistoryProps, CoinflowMonadPurchaseProps, CoinflowMonadWithdrawProps, CoinflowPolygonHistoryProps, CoinflowPolygonPurchaseProps, CoinflowPolygonWithdrawProps, CoinflowPurchaseProps, CoinflowSessionKeyHistoryProps, CoinflowSessionKeyPurchaseProps, CoinflowSolanaHistoryProps, CoinflowSolanaPurchaseProps, CoinflowSolanaWithdrawProps, CoinflowStellarHistoryProps, CoinflowStellarPurchaseProps, CoinflowStellarWithdrawProps, CoinflowTypes, CoinflowWithdrawProps, CommonDoInitializeTokenExIframeArgs, CommonEvmRedeem, CryptoCartItem, CurrencyCents, CustomerInfo, DecentRedeem, DoInitializeCvvOnlyTokenExIframeArgs, DoInitializeTokenExIframeArgs, EthWallet, EthWalletProps, EventBusCallback, EvmTransactionData, FullName, GetIFrameConfigArgs, GiftCardCartItem, IFrameMessageHandlers, KnownTokenIdRedeem, MerchantIdOrCheckoutJwt, MerchantTheme, MergeWithOptionalDiff, MonadWalletProps, NameCustomerInfo, NftCartItemClassOmitted, NormalRedeem, OnAuthDeclinedMethod, OnSuccessMethod, PartialBy, PolygonWalletProps, PurchaseCustomPayInFee, RecipientAftInfo, RemainingLimit, ReturnedTokenIdRedeem, SafeMintRedeem, SolanaWallet, SolanaWalletProps, SplitNameCustomerInfo, StellarWallet, StellarWalletProps, Subtotal, TokenExIFrameConfiguration, TokenExIframe, TokenRedeem, TokenSubtotal, TokenizationResponse, TypedCurrencyCents, VersionDetail, WalletCall, WalletTypes, WithOnLoad, WithdrawCurrency, ZeroAuthSavedPaymentMethods, ZeroAuthVerifyCard, ZeroAuthorizationConfig };
|