accounts 0.8.9 → 0.8.10
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# accounts
|
|
2
2
|
|
|
3
|
+
## 0.8.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- fc3d61c: Optimized `Handler.relay`'s `eth_fillTransaction` path with a speculative sponsored fill (skipping fee-token resolution when the sponsor accepts), KV-cached `Actions.fee.getUserToken` lookups, and a `capabilities.balanceDiffs: false` opt-out that skips the post-fill `tempo_simulateV1` round trip.
|
|
8
|
+
|
|
3
9
|
## 0.8.9
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../../../src/server/internal/handlers/relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAe,MAAM,IAAI,CAAA;AAE3D,OAAO,EAGL,KAAK,KAAK,EAOV,KAAK,SAAS,EAEf,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAGjD,OAAO,EAA0C,WAAW,EAAE,MAAM,YAAY,CAAA;AAIhF,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../../../src/server/internal/handlers/relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAe,MAAM,IAAI,CAAA;AAE3D,OAAO,EAGL,KAAK,KAAK,EAOV,KAAK,SAAS,EAEf,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAGjD,OAAO,EAA0C,WAAW,EAAE,MAAM,YAAY,CAAA;AAIhF,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAA;AAO5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY,GAAG,OAAO,CAwc1D;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG;QACnC;;WAEG;QACH,QAAQ,CAAC,EACL,KAAK,GACL;YACE,yDAAyD;YACzD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC9B,GACD,SAAS,CAAA;QACb;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC7B;;;;WAIG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;QACjD;;;WAGG;QACH,QAAQ,CAAC,EACL;YACE,uCAAuC;YACvC,OAAO,EAAE,YAAY,CAAA;YACrB;;;eAGG;YACH,QAAQ,CAAC,EACL,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,kBAAkB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GACzE,SAAS,CAAA;YACb,gEAAgE;YAChE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YACzB,uDAAuD;YACvD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SACzB,GACD,SAAS,CAAA;QACb;;;;;WAKG;QACH,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,SAAS,CAAA;QACtB;;;;;WAKG;QACH,aAAa,CAAC,EACV,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,GACvF,SAAS,CAAA;QACb;;;;;;WAMG;QACH,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;QAC5B,oDAAoD;QACpD,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;QAC3E,gDAAgD;QAChD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,yEAAyE;QACzE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAA;KACnD,CAAA;CACF"}
|
|
@@ -8,6 +8,7 @@ import * as ExecutionError from '../../../core/ExecutionError.js';
|
|
|
8
8
|
import * as Schema from '../../../core/Schema.js';
|
|
9
9
|
import { from } from '../../Handler.js';
|
|
10
10
|
import * as Kv from '../../Kv.js';
|
|
11
|
+
import { cached } from '../kv.js';
|
|
11
12
|
import * as Tokenlist from '../tokenlist.js';
|
|
12
13
|
import * as Sponsorship from './sponsorship.js';
|
|
13
14
|
import * as Utils from './utils.js';
|
|
@@ -106,6 +107,11 @@ export function relay(options = {}) {
|
|
|
106
107
|
const requestFeeToken = typeof parameters.feeToken === 'string' ? parameters.feeToken : undefined;
|
|
107
108
|
const externalFeePayerUrl = typeof parameters.feePayer === 'string' ? parameters.feePayer : undefined;
|
|
108
109
|
const requestsSponsorship = (!!feePayerOptions || !!externalFeePayerUrl) && parameters.feePayer !== false;
|
|
110
|
+
const capabilities = (parameters.capabilities ?? {});
|
|
111
|
+
// Default to `true`. Dapps that don't render diffs can pass
|
|
112
|
+
// `capabilities.balanceDiffs: false` to skip the post-fill
|
|
113
|
+
// `tempo_simulateV1` round trip (~250-400ms).
|
|
114
|
+
const requireBalanceDiffs = capabilities.balanceDiffs !== false;
|
|
109
115
|
const { feePayer: _feePayer, ...normalized } = Utils.normalizeFillTransactionRequest(parameters);
|
|
110
116
|
const baseTx = {
|
|
111
117
|
...normalized,
|
|
@@ -120,6 +126,7 @@ export function relay(options = {}) {
|
|
|
120
126
|
? async (insufficientToken) => resolveFeeToken(client, {
|
|
121
127
|
account: from,
|
|
122
128
|
feeToken: undefined,
|
|
129
|
+
kv,
|
|
123
130
|
tokens: (await getTokens(chainId)).filter((t) => t.toLowerCase() !== insufficientToken.toLowerCase()),
|
|
124
131
|
})
|
|
125
132
|
: undefined;
|
|
@@ -156,6 +163,7 @@ export function relay(options = {}) {
|
|
|
156
163
|
filled = await fill(fillClient, {
|
|
157
164
|
autoSwap,
|
|
158
165
|
feeToken,
|
|
166
|
+
kv,
|
|
159
167
|
resolveFeeToken: resolveFeeTokenForSwap,
|
|
160
168
|
transaction,
|
|
161
169
|
});
|
|
@@ -163,8 +171,11 @@ export function relay(options = {}) {
|
|
|
163
171
|
sponsored = true;
|
|
164
172
|
}
|
|
165
173
|
else if (requestsSponsorship && feePayerOptions?.validate) {
|
|
166
|
-
// Path B: sponsorship possible but may be rejected
|
|
167
|
-
//
|
|
174
|
+
// Path B: sponsorship possible but may be rejected.
|
|
175
|
+
// Speculatively fill the sponsored variant, validate, and only
|
|
176
|
+
// fall back to the unsponsored path on rejection. The accept
|
|
177
|
+
// case (common) avoids the upfront `resolveFeeToken` round
|
|
178
|
+
// trips and the second `eth_fillTransaction`.
|
|
168
179
|
const sponsoredTx = { ...baseTx, feePayer: true };
|
|
169
180
|
if (Sponsorship.isPreparedTransaction(sponsoredTx)) {
|
|
170
181
|
// Already prepared — skip fills, just validate sponsorship.
|
|
@@ -180,39 +191,45 @@ export function relay(options = {}) {
|
|
|
180
191
|
filled = prepared;
|
|
181
192
|
}
|
|
182
193
|
else {
|
|
183
|
-
|
|
184
|
-
// node doesn't pick one the user has zero balance of.
|
|
185
|
-
const unsponsoredFeeToken = features.feeTokenResolution
|
|
186
|
-
? await resolveFeeToken(client, {
|
|
187
|
-
account: from,
|
|
188
|
-
feeToken: requestFeeToken,
|
|
189
|
-
tokens: unsponsoredTokens,
|
|
190
|
-
})
|
|
191
|
-
: requestFeeToken;
|
|
192
|
-
const unsponsoredTx = {
|
|
193
|
-
...baseTx,
|
|
194
|
-
...(unsponsoredFeeToken ? { feeToken: unsponsoredFeeToken } : {}),
|
|
195
|
-
};
|
|
196
|
-
const fillOptions = {
|
|
194
|
+
const options = {
|
|
197
195
|
autoSwap,
|
|
196
|
+
kv,
|
|
198
197
|
resolveFeeToken: resolveFeeTokenForSwap,
|
|
199
198
|
};
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
transaction: unsponsoredTx,
|
|
206
|
-
}),
|
|
207
|
-
]);
|
|
199
|
+
const fill_sponsored = await fill(fillClient, {
|
|
200
|
+
...options,
|
|
201
|
+
feeToken,
|
|
202
|
+
transaction: sponsoredTx,
|
|
203
|
+
});
|
|
208
204
|
sponsored = await Sponsorship.shouldSponsor({
|
|
209
205
|
sender: from,
|
|
210
|
-
transaction:
|
|
206
|
+
transaction: fill_sponsored.transaction,
|
|
211
207
|
validate: feePayerOptions.validate,
|
|
212
208
|
});
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
209
|
+
if (sponsored) {
|
|
210
|
+
filled = fill_sponsored;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// Sponsor rejected — resolve fee token and fill unsponsored.
|
|
214
|
+
const feeToken_unsponsored = features.feeTokenResolution
|
|
215
|
+
? await resolveFeeToken(client, {
|
|
216
|
+
account: from,
|
|
217
|
+
feeToken: requestFeeToken,
|
|
218
|
+
kv,
|
|
219
|
+
tokens: unsponsoredTokens,
|
|
220
|
+
})
|
|
221
|
+
: requestFeeToken;
|
|
222
|
+
const tx_unsponsored = {
|
|
223
|
+
...baseTx,
|
|
224
|
+
...(feeToken_unsponsored ? { feeToken: feeToken_unsponsored } : {}),
|
|
225
|
+
};
|
|
226
|
+
filled = await fill(client, {
|
|
227
|
+
...options,
|
|
228
|
+
feeToken: feeToken_unsponsored,
|
|
229
|
+
transaction: tx_unsponsored,
|
|
230
|
+
});
|
|
231
|
+
feeToken = feeToken_unsponsored;
|
|
232
|
+
}
|
|
216
233
|
}
|
|
217
234
|
}
|
|
218
235
|
else {
|
|
@@ -221,6 +238,7 @@ export function relay(options = {}) {
|
|
|
221
238
|
? await resolveFeeToken(client, {
|
|
222
239
|
account: from,
|
|
223
240
|
feeToken: requestFeeToken,
|
|
241
|
+
kv,
|
|
224
242
|
tokens: unsponsoredTokens,
|
|
225
243
|
})
|
|
226
244
|
: requestFeeToken;
|
|
@@ -228,6 +246,7 @@ export function relay(options = {}) {
|
|
|
228
246
|
filled = await fill(client, {
|
|
229
247
|
autoSwap,
|
|
230
248
|
feeToken,
|
|
249
|
+
kv,
|
|
231
250
|
resolveFeeToken: resolveFeeTokenForSwap,
|
|
232
251
|
transaction,
|
|
233
252
|
});
|
|
@@ -242,26 +261,41 @@ export function relay(options = {}) {
|
|
|
242
261
|
transaction_filled.feePayerSignature != null;
|
|
243
262
|
const [{ balanceDiffs, fee }, transaction_final, autoSwap_] = await Promise.all([
|
|
244
263
|
// Simulate and compute balance diffs + fee.
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
264
|
+
// When `capabilities.balanceDiffs` is `false`, skip simulate
|
|
265
|
+
// and compute fee directly from cached metadata.
|
|
266
|
+
(async () => {
|
|
267
|
+
if (!features.simulate)
|
|
268
|
+
return { balanceDiffs: undefined, fee: undefined };
|
|
269
|
+
if (requireBalanceDiffs)
|
|
270
|
+
return simulateAndParseDiffs(client, {
|
|
271
|
+
account: from,
|
|
272
|
+
calls: extractCalls(transaction_filled),
|
|
273
|
+
swap,
|
|
274
|
+
feeToken,
|
|
275
|
+
gas: transaction_filled.gas,
|
|
276
|
+
kv,
|
|
277
|
+
maxFeePerGas: transaction_filled.maxFeePerGas,
|
|
278
|
+
});
|
|
279
|
+
const fee = await computeFee(client, {
|
|
250
280
|
feeToken,
|
|
251
281
|
gas: transaction_filled.gas,
|
|
282
|
+
kv,
|
|
252
283
|
maxFeePerGas: transaction_filled.maxFeePerGas,
|
|
253
|
-
})
|
|
254
|
-
|
|
284
|
+
}).catch(() => undefined);
|
|
285
|
+
return { balanceDiffs: undefined, fee };
|
|
286
|
+
})(),
|
|
255
287
|
// Sign as fee payer (if sponsored and not already signed).
|
|
256
|
-
|
|
257
|
-
|
|
288
|
+
(async () => {
|
|
289
|
+
if (!(sponsored && feePayerOptions && !alreadySigned))
|
|
290
|
+
return transaction_filled;
|
|
291
|
+
return Sponsorship.sign({
|
|
258
292
|
account: feePayerOptions.account,
|
|
259
293
|
sender: from,
|
|
260
294
|
transaction: transaction_filled,
|
|
261
|
-
})
|
|
262
|
-
|
|
295
|
+
});
|
|
296
|
+
})(),
|
|
263
297
|
// Resolve autoSwap metadata (when AMM path was taken).
|
|
264
|
-
resolveAutoSwapMetadata(client, { autoSwap, swap }),
|
|
298
|
+
resolveAutoSwapMetadata(client, { autoSwap, kv, swap }),
|
|
265
299
|
]);
|
|
266
300
|
const sponsor = (() => {
|
|
267
301
|
if (!sponsored)
|
|
@@ -311,13 +345,14 @@ export function relay(options = {}) {
|
|
|
311
345
|
? await simulateAndParseDiffs(client, {
|
|
312
346
|
account: zeroAddress,
|
|
313
347
|
calls: optimisticCalls,
|
|
348
|
+
kv,
|
|
314
349
|
})
|
|
315
350
|
: { balanceDiffs: undefined };
|
|
316
351
|
// Re-key balance diffs from zero address to the real sender.
|
|
317
352
|
const senderDiffs = parameters.from && balanceDiffs
|
|
318
353
|
? { [parameters.from]: balanceDiffs[zeroAddress] ?? [] }
|
|
319
354
|
: balanceDiffs;
|
|
320
|
-
const metadata = await resolveTokenMetadata(client, token).catch(() => undefined);
|
|
355
|
+
const metadata = await resolveTokenMetadata(client, { token, kv }).catch(() => undefined);
|
|
321
356
|
const deficit = required - available;
|
|
322
357
|
return RpcResponse.from({
|
|
323
358
|
result: {
|
|
@@ -409,7 +444,7 @@ export function relay(options = {}) {
|
|
|
409
444
|
}
|
|
410
445
|
// TODO: cleanup
|
|
411
446
|
async function fill(client, options) {
|
|
412
|
-
const { autoSwap, feeToken, transaction: request } = options;
|
|
447
|
+
const { autoSwap, feeToken, kv, transaction: request } = options;
|
|
413
448
|
// Skip re-formatting if already in RPC format (e.g. from viem's fillTransaction).
|
|
414
449
|
const format = (value) => value.type === '0x76' ? value : Utils.formatFillTransactionRequest(client, value);
|
|
415
450
|
// Re-fill the transaction with prepended swap calls so the user can
|
|
@@ -505,7 +540,7 @@ async function fill(client, options) {
|
|
|
505
540
|
Actions.token
|
|
506
541
|
.getBalance(client, { account: fromAddress, token: resolvedFeeToken })
|
|
507
542
|
.catch(() => 0n),
|
|
508
|
-
resolveTokenMetadata(client, resolvedFeeToken).catch(() => undefined),
|
|
543
|
+
resolveTokenMetadata(client, { token: resolvedFeeToken, kv }).catch(() => undefined),
|
|
509
544
|
]);
|
|
510
545
|
if (metadata) {
|
|
511
546
|
const requiredFee = (gas * maxFeePerGas) / 10n ** BigInt(Math.max(0, 18 - metadata.decimals));
|
|
@@ -545,13 +580,26 @@ async function fill(client, options) {
|
|
|
545
580
|
}
|
|
546
581
|
}
|
|
547
582
|
async function resolveFeeToken(client, options) {
|
|
548
|
-
const { feeToken, account, tokens } = options;
|
|
583
|
+
const { feeToken, account, kv, tokens } = options;
|
|
549
584
|
if (feeToken)
|
|
550
585
|
return feeToken;
|
|
551
586
|
if (!account)
|
|
552
587
|
return undefined;
|
|
588
|
+
// Cache the user's preferred fee token for `userTokenCacheTtl` seconds.
|
|
589
|
+
// The on-chain preference rarely changes; a short TTL avoids the
|
|
590
|
+
// ~150-250ms `userTokens` multicall on every unsponsored fill while
|
|
591
|
+
// still picking up updates within a minute. The cached value is just a
|
|
592
|
+
// hint — if the user's balance is 0 we fall back to the highest-balance
|
|
593
|
+
// token from the configured list.
|
|
594
|
+
const getUserToken = () => Actions.fee.getUserToken(client, { account }).catch(() => null);
|
|
595
|
+
const userTokenPromise = kv
|
|
596
|
+
? cached(kv, `fee.userToken:${client.chain?.id ?? 0}:${account.toLowerCase()}`, async () => {
|
|
597
|
+
const result = await getUserToken();
|
|
598
|
+
return result ? { address: result.address } : null;
|
|
599
|
+
}, { ttl: options.userTokenCacheTtl ?? 60 })
|
|
600
|
+
: getUserToken();
|
|
553
601
|
const [userToken, balances] = await Promise.all([
|
|
554
|
-
|
|
602
|
+
userTokenPromise,
|
|
555
603
|
tokens
|
|
556
604
|
? Promise.all(tokens.map(async (token) => ({
|
|
557
605
|
address: token,
|
|
@@ -656,7 +704,7 @@ async function simulate(client, options) {
|
|
|
656
704
|
}
|
|
657
705
|
}
|
|
658
706
|
async function simulateAndParseDiffs(client, options) {
|
|
659
|
-
const { account, calls, swap, feeToken, gas, maxFeePerGas } = options;
|
|
707
|
+
const { account, calls, swap, feeToken, gas, kv, maxFeePerGas } = options;
|
|
660
708
|
try {
|
|
661
709
|
const { results, tokenMetadata } = await simulate(client, {
|
|
662
710
|
account: account === zeroAddress ? undefined : account,
|
|
@@ -671,6 +719,7 @@ async function simulateAndParseDiffs(client, options) {
|
|
|
671
719
|
const balanceDiffs = account
|
|
672
720
|
? await buildBalanceDiffs(client, {
|
|
673
721
|
account,
|
|
722
|
+
kv,
|
|
674
723
|
logs,
|
|
675
724
|
swap,
|
|
676
725
|
tokenMetadata: tokenMetadata,
|
|
@@ -680,6 +729,7 @@ async function simulateAndParseDiffs(client, options) {
|
|
|
680
729
|
const fee = await computeFee(client, {
|
|
681
730
|
feeToken,
|
|
682
731
|
gas,
|
|
732
|
+
kv,
|
|
683
733
|
maxFeePerGas,
|
|
684
734
|
tokenMetadata: tokenMetadata,
|
|
685
735
|
}).catch(() => undefined);
|
|
@@ -688,12 +738,12 @@ async function simulateAndParseDiffs(client, options) {
|
|
|
688
738
|
catch {
|
|
689
739
|
// Simulation failures should not block the fill response —
|
|
690
740
|
// return empty diffs with fee computed from transaction fields.
|
|
691
|
-
const fee = await computeFee(client, { feeToken, gas, maxFeePerGas });
|
|
741
|
+
const fee = await computeFee(client, { feeToken, gas, kv, maxFeePerGas });
|
|
692
742
|
return { balanceDiffs: undefined, fee };
|
|
693
743
|
}
|
|
694
744
|
}
|
|
695
745
|
async function buildBalanceDiffs(client, options) {
|
|
696
|
-
const { account, logs, swap, tokenMetadata } = options;
|
|
746
|
+
const { account, kv, logs, swap, tokenMetadata } = options;
|
|
697
747
|
const accountLower = account.toLowerCase();
|
|
698
748
|
const dexLower = Addresses.stablecoinDex.toLowerCase();
|
|
699
749
|
const swapTokenIn = swap?.tokenIn.toLowerCase();
|
|
@@ -772,7 +822,11 @@ async function buildBalanceDiffs(client, options) {
|
|
|
772
822
|
const metadataMap = new Map();
|
|
773
823
|
await Promise.all(entries.map(async (entry) => {
|
|
774
824
|
try {
|
|
775
|
-
const metadata = await resolveTokenMetadata(client,
|
|
825
|
+
const metadata = await resolveTokenMetadata(client, {
|
|
826
|
+
token: entry.token,
|
|
827
|
+
tokenMetadata,
|
|
828
|
+
kv,
|
|
829
|
+
});
|
|
776
830
|
metadataMap.set(entry.token.toLowerCase(), metadata);
|
|
777
831
|
}
|
|
778
832
|
catch { }
|
|
@@ -799,9 +853,17 @@ async function buildBalanceDiffs(client, options) {
|
|
|
799
853
|
}
|
|
800
854
|
return { [account]: diffs };
|
|
801
855
|
}
|
|
802
|
-
async function resolveTokenMetadata(client,
|
|
856
|
+
async function resolveTokenMetadata(client, options) {
|
|
857
|
+
const { token, tokenMetadata, kv } = options;
|
|
803
858
|
const meta = tokenMetadata?.[token] ?? tokenMetadata?.[token.toLowerCase()];
|
|
804
|
-
|
|
859
|
+
// TIP-20 metadata (decimals/symbol/name) is immutable per token, so cache
|
|
860
|
+
// long-term in KV. Skips the multicall RPC on cache hits.
|
|
861
|
+
const fetcher = () => Actions.token.getMetadata(client, { token });
|
|
862
|
+
const fallback = kv
|
|
863
|
+
? await cached(kv, `tokenMetadata:${client.chain?.id ?? 0}:${token.toLowerCase()}`, fetcher, {
|
|
864
|
+
ttl: 24 * 60 * 60,
|
|
865
|
+
})
|
|
866
|
+
: await fetcher();
|
|
805
867
|
return {
|
|
806
868
|
decimals: fallback.decimals ?? 6,
|
|
807
869
|
symbol: meta?.symbol || fallback.symbol,
|
|
@@ -809,12 +871,12 @@ async function resolveTokenMetadata(client, token, tokenMetadata) {
|
|
|
809
871
|
};
|
|
810
872
|
}
|
|
811
873
|
async function resolveAutoSwapMetadata(client, options) {
|
|
812
|
-
const { autoSwap, swap } = options;
|
|
874
|
+
const { autoSwap, kv, swap } = options;
|
|
813
875
|
if (!autoSwap || !swap)
|
|
814
876
|
return undefined;
|
|
815
877
|
const [inMeta, outMeta] = await Promise.all([
|
|
816
|
-
resolveTokenMetadata(client, swap.tokenIn).catch(() => undefined),
|
|
817
|
-
resolveTokenMetadata(client, swap.tokenOut).catch(() => undefined),
|
|
878
|
+
resolveTokenMetadata(client, { token: swap.tokenIn, kv }).catch(() => undefined),
|
|
879
|
+
resolveTokenMetadata(client, { token: swap.tokenOut, kv }).catch(() => undefined),
|
|
818
880
|
]);
|
|
819
881
|
if (!inMeta || !outMeta)
|
|
820
882
|
return undefined;
|
|
@@ -840,11 +902,11 @@ async function resolveAutoSwapMetadata(client, options) {
|
|
|
840
902
|
};
|
|
841
903
|
}
|
|
842
904
|
async function computeFee(client, options) {
|
|
843
|
-
const { feeToken, gas, maxFeePerGas, tokenMetadata } = options;
|
|
905
|
+
const { feeToken, gas, kv, maxFeePerGas, tokenMetadata } = options;
|
|
844
906
|
if (!feeToken || !gas || !maxFeePerGas)
|
|
845
907
|
return undefined;
|
|
846
908
|
try {
|
|
847
|
-
const metadata = await resolveTokenMetadata(client, feeToken, tokenMetadata);
|
|
909
|
+
const metadata = await resolveTokenMetadata(client, { token: feeToken, tokenMetadata, kv });
|
|
848
910
|
const raw = gas * maxFeePerGas;
|
|
849
911
|
const amount = raw / 10n ** BigInt(18 - metadata.decimals);
|
|
850
912
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../../../../src/server/internal/handlers/relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAC3D,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAKL,YAAY,EACZ,WAAW,EACX,IAAI,EAEJ,cAAc,EAEd,WAAW,GACZ,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEhF,OAAO,KAAK,cAAc,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAgB,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,4EAA4E;AAC5E,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,CAAA;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,KAAK,CAAC,UAAyB,EAAE;IAC/C,MAAM,EACJ,QAAQ,GAAG,eAAe,EAC1B,MAAM,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,EAC5C,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAChB,SAAS,EACT,IAAI,GAAG,GAAG,EACV,aAAa,EACb,UAAU,GAAG,EAAE,EACf,GAAG,IAAI,EACR,GAAG,OAAO,CAAA;IACX,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAA;IAExC,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,SAAS,GAAG,KAAK,EAAE,OAAe,EAA+B,EAAE;QACvE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAA;QACxF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;QACxD,kBAAkB,EAAE,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;QACvE,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,KAAK;KACrC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAA;QACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;YAAE,OAAO,SAAS,CAAA;QAChD,OAAO;YACL,QAAQ,EACN,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI;SAC1F,CAAA;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAA;QAChD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,EAAE,EACR,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAC/E,CAAA;IACH,CAAC;IAED,SAAS,SAAS,CAAC,OAAgB;QACjC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACnC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,iBAAiB,CAAC,CAAA;YAC/D,OAAO,MAAM,CAAA;QACf,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAE,CAAA;IACpC,CAAC;IAED,KAAK,UAAU,aAAa,CAC1B,OAAyC,EACzC,OAA0C;QAE1C,MAAM,SAAS,EAAE,CAAC,OAAO,CAAC,CAAA;QAE1B,gGAAgG;QAChG,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QACzF,MAAM,KAAK,GACT,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC;YACxC,CAAC,CAAE,MAAM,CAAC,CAAC,CAA6B;YACxC,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAA;QACzF,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QAEjC,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAA4B,CAAA;oBACvD,MAAM,IAAI,GACR,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,UAAU,CAAC,IAAgB,CAAC,CAAC,CAAC,SAAS,CAAA;oBAChF,MAAM,eAAe,GACnB,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAE,UAAU,CAAC,QAAoB,CAAC,CAAC,CAAC,SAAS,CAAA;oBACxF,MAAM,mBAAmB,GACvB,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;oBAC3E,MAAM,mBAAmB,GACvB,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC,QAAQ,KAAK,KAAK,CAAA;oBAE/E,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,GAC1C,KAAK,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAA;oBACnD,MAAM,MAAM,GAAG;wBACb,GAAG,UAAU;wBACb,GAAG,CAAC,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACtD,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC1D,CAAA;oBAED,IAAI,MAAwC,CAAA;oBAC5C,IAAI,SAAS,GAAG,KAAK,CAAA;oBACrB,IAAI,QAAQ,GAAG,eAAe,CAAA;oBAE9B,8DAA8D;oBAC9D,MAAM,sBAAsB,GAAG,IAAI;wBACjC,CAAC,CAAC,KAAK,EAAE,iBAA0B,EAAE,EAAE,CACnC,eAAe,CAAC,MAAM,EAAE;4BACtB,OAAO,EAAE,IAAI;4BACb,QAAQ,EAAE,SAAS;4BACnB,MAAM,EAAE,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC,WAAW,EAAE,CAC3D;yBACF,CAAC;wBACN,CAAC,CAAC,SAAS,CAAA;oBAEb,gEAAgE;oBAChE,+DAA+D;oBAC/D,yDAAyD;oBACzD,6DAA6D;oBAC7D,4DAA4D;oBAC5D,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;oBACjD,MAAM,iBAAiB,GAAG;wBACxB,GAAG,gBAAgB;wBACnB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAC5E;qBACF,CAAA;oBAED,8DAA8D;oBAC9D,uDAAuD;oBACvD,MAAM,UAAU,GAAG,mBAAmB;wBACpC,CAAC,CAAC,YAAY,CAAC;4BACX,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;4BAC1C,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC;yBACrC,CAAC;wBACJ,CAAC,CAAC,MAAM,CAAA;oBAEV,IAAI,mBAAmB,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,CAAC;wBACtD,gEAAgE;wBAChE,kEAAkE;wBAClE,MAAM,WAAW,GAAG,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;wBACjD,IAAI,WAAW,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC;4BACnD,MAAM,GAAG;gCACP,WAAW,EAAE,KAAK,CAAC,yBAAyB,CAAC,WAAW,CAAC;gCACzD,OAAO,EAAE,SAAS;6BACnB,CAAA;wBACH,CAAC;6BAAM,CAAC;4BACN,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;gCAC9B,QAAQ;gCACR,QAAQ;gCACR,eAAe,EAAE,sBAAsB;gCACvC,WAAW;6BACZ,CAAC,CAAA;wBACJ,CAAC;wBACD,SAAS,GAAG,IAAI,CAAA;oBAClB,CAAC;yBAAM,IAAI,mBAAmB,IAAI,eAAe,EAAE,QAAQ,EAAE,CAAC;wBAC5D,+DAA+D;wBAC/D,iDAAiD;wBACjD,MAAM,WAAW,GAAG,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;wBAEjD,IAAI,WAAW,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC;4BACnD,4DAA4D;4BAC5D,MAAM,QAAQ,GAAG;gCACf,WAAW,EAAE,KAAK,CAAC,yBAAyB,CAAC,WAAW,CAAC;gCACzD,OAAO,EAAE,SAAS;6BACnB,CAAA;4BACD,SAAS,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC;gCAC1C,MAAM,EAAE,IAAI;gCACZ,WAAW,EAAE,QAAQ,CAAC,WAAW;gCACjC,QAAQ,EAAE,eAAgB,CAAC,QAAQ;6BACpC,CAAC,CAAA;4BACF,MAAM,GAAG,QAAQ,CAAA;wBACnB,CAAC;6BAAM,CAAC;4BACN,0DAA0D;4BAC1D,sDAAsD;4BACtD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,kBAAkB;gCACrD,CAAC,CAAC,MAAM,eAAe,CAAC,MAAM,EAAE;oCAC5B,OAAO,EAAE,IAAI;oCACb,QAAQ,EAAE,eAAe;oCACzB,MAAM,EAAE,iBAAiB;iCAC1B,CAAC;gCACJ,CAAC,CAAC,eAAe,CAAA;4BACnB,MAAM,aAAa,GAAG;gCACpB,GAAG,MAAM;gCACT,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;6BAClE,CAAA;4BACD,MAAM,WAAW,GAAG;gCAClB,QAAQ;gCACR,eAAe,EAAE,sBAAsB;6BACxC,CAAA;4BACD,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gCACzD,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;gCACxE,IAAI,CAAC,MAAM,EAAE;oCACX,GAAG,WAAW;oCACd,QAAQ,EAAE,mBAAmB;oCAC7B,WAAW,EAAE,aAAa;iCAC3B,CAAC;6BACH,CAAC,CAAA;4BACF,SAAS,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC;gCAC1C,MAAM,EAAE,IAAI;gCACZ,WAAW,EAAE,aAAa,CAAC,WAAW;gCACtC,QAAQ,EAAE,eAAgB,CAAC,QAAQ;6BACpC,CAAC,CAAA;4BACF,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAA;4BACpD,IAAI,CAAC,SAAS;gCAAE,QAAQ,GAAG,mBAAmB,CAAA;wBAChD,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,oEAAoE;wBACpE,QAAQ,GAAG,QAAQ,CAAC,kBAAkB;4BACpC,CAAC,CAAC,MAAM,eAAe,CAAC,MAAM,EAAE;gCAC5B,OAAO,EAAE,IAAI;gCACb,QAAQ,EAAE,eAAe;gCACzB,MAAM,EAAE,iBAAiB;6BAC1B,CAAC;4BACJ,CAAC,CAAC,eAAe,CAAA;wBACnB,MAAM,WAAW,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;wBACpE,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;4BAC1B,QAAQ;4BACR,QAAQ;4BACR,eAAe,EAAE,sBAAsB;4BACvC,WAAW;yBACZ,CAAC,CAAA;oBACJ,CAAC;oBAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAA;oBAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;oBACvD,IAAI,CAAC,QAAQ;wBACX,QAAQ;4BACL,kBAAkB,CAAC,QAAgC,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAEzF,mEAAmE;oBACnE,MAAM,aAAa,GACjB,mBAAmB,IAAI,kBAAkB;wBACzC,kBAAkB,CAAC,iBAAiB,IAAI,IAAI,CAAA;oBAE9C,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,iBAAiB,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;wBAC9E,4CAA4C;wBAC5C,QAAQ,CAAC,QAAQ;4BACf,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE;gCAC5B,OAAO,EAAE,IAAI;gCACb,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC;gCACvC,IAAI;gCACJ,QAAQ;gCACR,GAAG,EAAE,kBAAkB,CAAC,GAAG;gCAC3B,YAAY,EAAE,kBAAkB,CAAC,YAAY;6BAC9C,CAAC;4BACJ,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;wBAC/C,2DAA2D;wBAC3D,SAAS,IAAI,eAAe,IAAI,CAAC,aAAa;4BAC5C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;gCACf,OAAO,EAAE,eAAe,CAAC,OAAO;gCAChC,MAAM,EAAE,IAAI;gCACZ,WAAW,EAAE,kBAAkB;6BAChC,CAAC;4BACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;wBACvC,uDAAuD;wBACvD,uBAAuB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qBACpD,CAAC,CAAA;oBAEF,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;wBACpB,IAAI,CAAC,SAAS;4BAAE,OAAO,SAAS,CAAA;wBAChC,6EAA6E;wBAC7E,IAAI,mBAAmB;4BAAE,OAAO,MAAM,CAAC,OAAO,CAAA;wBAC9C,IAAI,eAAe;4BAAE,OAAO,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;wBACnE,OAAO,MAAM,CAAC,OAAO,CAAA;oBACvB,CAAC,CAAC,EAAE,CAAA;oBAEJ,OAAO,WAAW,CAAC,IAAI,CACrB;wBACE,MAAM,EAAE;4BACN,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/B,EAAE,EAAE,gBAAgB,CAAC,KAAK,CAAC,iBAAiD,CAAC;4BAC7E,YAAY,EAAE;gCACZ,YAAY;gCACZ,GAAG;gCACH,SAAS,EAAE,CAAC,CAAC,OAAO;gCACpB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gCAC/B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;6BAC9C;yBACF;qBACF,EACD,EAAE,OAAO,EAAE,CACZ,CAAA;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;wBAAE,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;oBAExE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;oBAE1C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;oBACpC,MAAM,IAAI,GAAG;wBACX,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,IAAI;wBACzB,GAAG,EAAE,KAAK;wBACV,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,KAAK;wBACZ,YAAY,EAAE,KAAK;wBACnB,oBAAoB,EAAE,KAAK;qBAC5B,CAAA;oBAED,IAAI,MAAM,EAAE,SAAS,KAAK,qBAAqB,EAAE,CAAC;wBAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAiC,CAAA;wBACrD,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,CAAA;wBAEzC,MAAM,UAAU,GAAG,KAAK,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAA;wBAEpE,2DAA2D;wBAC3D,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;wBACzE,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe;4BACtC,CAAC,CAAC,MAAM,qBAAqB,CAAC,MAAM,EAAE;gCAClC,OAAO,EAAE,WAAW;gCACpB,KAAK,EAAE,eAAe;6BACvB,CAAC;4BACJ,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAA;wBAE/B,6DAA6D;wBAC7D,MAAM,WAAW,GACf,UAAU,CAAC,IAAI,IAAI,YAAY;4BAC7B,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;4BACxD,CAAC,CAAC,YAAY,CAAA;wBAElB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;wBACjF,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;wBACpC,OAAO,WAAW,CAAC,IAAI,CACrB;4BACE,MAAM,EAAE;gCACN,EAAE,EAAE,IAAI;gCACR,YAAY,EAAE;oCACZ,YAAY,EAAE,WAAW;oCACzB,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC;oCACvC,YAAY,EAAE,QAAQ;wCACpB,CAAC,CAAC;4CACE,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAkB;4CAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;4CAC3B,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC;4CAClD,KAAK;4CACL,MAAM,EAAE,QAAQ,CAAC,MAAM;yCACxB;wCACH,CAAC,CAAC,SAAS;oCACb,SAAS,EAAE,KAAK;iCACjB;6BACF;yBACF,EACD,EAAE,OAAO,EAAE,CACZ,CAAA;oBACH,CAAC;oBAED,OAAO,WAAW,CAAC,IAAI,CACrB;wBACE,MAAM,EAAE;4BACN,EAAE,EAAE,IAAI;4BACR,YAAY,EAAE;gCACZ,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC;gCACvC,SAAS,EAAE,KAAK;6BACjB;yBACF;qBACF,EACD,EAAE,OAAO,EAAE,CACZ,CAAA;gBACH,CAAC;YACH,CAAC;YAED,mBAAmB;YACnB,KAAK,wBAAwB,CAAC;YAC9B,KAAK,wBAAwB,CAAC;YAC9B,KAAK,4BAA4B,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC;oBACH,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAgB,CAAC,CAAA;wBACrD,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;oBAClD,CAAC;oBAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;oBAC5B,IACE,OAAO,UAAU,KAAK,QAAQ;wBAC9B,CAAC,WAAW,CAAC,sBAAsB,CAAC,UAA2B,CAAC,EAChE,CAAC;wBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAgB,CAAC,CAAA;wBACrD,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;oBAClD,CAAC;oBAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC;wBACpD,OAAO,EAAE,eAAe,CAAC,OAAO;wBAChC,SAAS;wBACT,MAAM,EAAE,OAAO,CAAC,MAA4D;wBAC5E,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE;wBACrE,QAAQ,EAAE,eAAe,CAAC,QAAQ;qBACnC,CAAC,CAAA;oBACF,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAW,EAAE,EAAE,OAAO,EAAW,CAAC,CAAA;gBACpE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC3C,CAAC;YACH,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAgB,CAAC,CAAA;oBACrD,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;gBAClD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IAEzB,KAAK,UAAU,UAAU,CAAC,CAA4D;QACpF,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAa,CAAqC,CAAA;YAClF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,IAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAa,CAAqC,EAAE;YAChF,OAAO;SACR,CAAC,CACH,CACF,CAAA;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAmB,CAAC,CAAA;IACtC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,UAAmB,CAAC,CAAA;IAExE,OAAO,MAAM,CAAA;AACf,CAAC;AA+ED,gBAAgB;AAChB,KAAK,UAAU,IAAI,CACjB,MAAc,EACd,OAKC;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAE5D,kFAAkF;IAClF,MAAM,MAAM,GAAG,CAAC,KAA8B,EAAE,EAAE,CAChD,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAEnF,oEAAoE;IACpE,sEAAsE;IACtE,gEAAgE;IAChE,qCAAqC;IACrC,KAAK,UAAU,YAAY,CAAC,iBAA0B,EAAE,OAAe;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAA;QAC1B,MAAM,WAAW,GACf,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC,WAAW,EAAE;YACpE,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,CAAA;QACxD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC,WAAW,EAAE;YAAE,OAAO,IAAI,CAAA;QAE9F,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;QAC9F,MAAM,aAAa,GAAI,OAAO,CAAC,KAA4B,IAAI,EAAE,CAAA;QACjE,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;QAEtF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YAClC,MAAM,EAAE,qBAAqB;YAC7B,MAAM,EAAE;gBACN,MAAM,CAAC;oBACL,GAAG,OAAO;oBACV,KAAK,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,aAAa,CAAC;iBACxC,CAAU;aACZ;SACF,CAAC,CAAA;QACF,MAAM,OAAO,GAAI,MAA8B,CAAC,YAAY,EAAE,OAEjD,CAAA;QACb,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,EAA6B,EAAE;YAC3E,GAAG,OAAO;YACV,KAAK,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,aAAa,CAAC;SACxC,CAAC,CAAA;QACF,OAAO;YACL,WAAW,EAAE,KAAK,CAAC,yBAAyB,CAAC,QAAQ,CAAC;YACtD,OAAO;YACP,IAAI,EAAE;gBACJ,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,iBAAiB;gBAC3B,SAAS,EAAE,OAAO;gBAClB,WAAW;aACZ;SACF,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YAClC,MAAM,EAAE,qBAAqB;YAC7B,MAAM,EAAE,CAAC,SAAkB,CAAC;SAC7B,CAAC,CAAA;QACF,+EAA+E;QAC/E,4EAA4E;QAC5E,qEAAqE;QACrE,yEAAyE;QACzE,mBAAmB;QACnB,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB;YACnE,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAO,CAAC,CAAA;QACjE,MAAM,oBAAoB,GAAI,MAAqD,CAAC,YAAY,CAAA;QAChG,MAAM,OAAO,GAAG,oBAAoB,EAAE,OAEzB,CAAA;QACb,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,yCAAyC;QACzC,MAAM,aAAa,GAAG,oBAAoB,EAAE,KAE/B,CAAA;QACb,IAAI,aAAa,EAAE,SAAS,KAAK,qBAAqB,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,IAAI,qBAAqB,CAAC,CAAA;YAC3E,SAAS,CAAC,IAAI,GAAG,qBAAqB,CACrC;YAAC,SAAkD,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAA;YAC9E,MAAM,SAAS,CAAA;QACjB,CAAC;QACD,4EAA4E;QAC5E,uEAAuE;QACvE,0EAA0E;QAC1E,MAAM,IAAI,GAAG,2BAA2B,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAA;QACxE,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,EAA6B,EAAE,OAAO,CAAC,CAAA;QAErF,iEAAiE;QACjE,8DAA8D;QAC9D,iEAAiE;QACjE,kEAAkE;QAClE,gEAAgE;QAChE,2DAA2D;QAC3D,IAAI,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,OAAO,CAAC,IAA2B,CAAA;YACvD,MAAM,gBAAgB,GAAG,CAAE,QAAQ,CAAC,QAAgC,IAAI,QAAQ,CAEnE,CAAA;YACb,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACrE,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY;gBACxC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAA6B,CAAC;gBAChD,CAAC,CAAC,EAAE,CAAA;YACN,IAAI,WAAW,IAAI,gBAAgB,IAAI,GAAG,GAAG,EAAE,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;gBACrE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBAC5C,OAAO,CAAC,KAAK;yBACV,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;yBACrE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;oBAClB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;iBACtE,CAAC,CAAA;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,WAAW,GACf,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;oBAC3E,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;wBAC1B,4DAA4D;wBAC5D,4DAA4D;wBAC5D,wDAAwD;wBACxD,yCAAyC;wBACzC,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,KAAK,CAClF,GAAG,EAAE,CAAC,IAAI,CACX,CAAA;wBACD,IAAI,UAAU;4BAAE,OAAO,UAAU,CAAA;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,WAAW,EAAE,KAAK,CAAC,yBAAyB,CAAC,QAAQ,CAAC;YACtD,OAAO;YACP,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1B,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;YAAE,MAAM,KAAK,CAAA;QAC1C,IAAI,CAAC,QAAQ;YAAE,MAAM,KAAK,CAAA;QAE1B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,MAAM,EAAE,SAAS,KAAK,qBAAqB;YAAE,MAAM,KAAK,CAAA;QAE5D,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAA;QAChD,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,KAAK;YAAE,MAAM,KAAK,CAAA;QAE9F,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,KAAgB,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAA;QAC7E,IAAI,CAAC,UAAU;YAAE,MAAM,KAAK,CAAA;QAC5B,OAAO,UAAU,CAAA;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,MAAc,EACd,OAIC;IAED,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC7C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAC/D,MAAM;YACJ,CAAC,CAAC,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC3B,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;aACpF,CAAC,CAAC,CACJ;YACH,CAAC,CAAC,EAAE;KACP,CAAC,CAAA;IAEF,8DAA8D;IAC9D,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE,CACrF,CAAA;QACD,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,OAAO,CAAA;QAEnC,uEAAuE;QACvE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;oBACrD,OAAO;oBACP,KAAK,EAAE,SAAS,CAAC,OAAO;iBACzB,CAAC,CAAA;gBACF,IAAI,OAAO,GAAG,EAAE;oBAAE,OAAO,SAAS,CAAC,OAAO,CAAA;YAC5C,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,IAAI,IAAuD,CAAA;IAC3D,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;YAAE,SAAQ;QACjC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;YAAE,IAAI,GAAG,KAAK,CAAA;IACzD,CAAC;IACD,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,OAAO,CAAA;AAC/B,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,WAAoC;IAC5D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAgD,CAAA;IAC1E,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,MAAM,GAAG,GAAc,EAAE,CAAA;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,SAAQ;QACnB,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAA;QAChC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAQ;QACzC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAQ;QAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACf,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,uBAAuB;AACvB,SAAS,YAAY,CAAC,WAAoC;IACxD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAoC,CAAA;IAC9D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAC3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvC,CAAC,CAAoB,CAAA;IACxB,OAAO;QACL;YACE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE;KACiB,CAAA;AACtB,CAAC;AAED,uBAAuB;AACvB,KAAK,UAAU,QAAQ,CACrB,MAAc,EACd,OAGC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAClC,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;YAClD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,KAAK,EAAE,KAAe;YACtB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iEAAiE;QACjE,kEAAkE;QAClE,8CAA8C;QAC9C,MAAM,IAAI,GACP,KAAuC,CAAC,IAAI;YAC5C,KAA+D,CAAC,KAAK,EAAE,IAAI,CAAA;QAC9E,IAAI,IAAI,KAAK,CAAC,KAAK;YAAE,MAAM,KAAK,CAAA;QAChC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;YAC9C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,KAAK,EAAE,KAAe;SACvB,CAAC,CAAA;QACF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA;IAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,MAAc,EACd,OAOC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,OAAO,CAAA;IAErE,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE;YACxD,OAAO,EAAE,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;YACtD,KAAK;SACN,CAAC,CAAA;QAEF,4CAA4C;QAC5C,MAAM,IAAI,GAAqC,EAAE,CAAA;QACjD,KAAK,MAAM,MAAM,IAAI,OAA2D;YAC9E,IAAI,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAE5C,wDAAwD;QACxD,MAAM,YAAY,GAAG,OAAO;YAC1B,CAAC,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE;gBAC9B,OAAO;gBACP,IAAI;gBACJ,IAAI;gBACJ,aAAa,EAAE,aAAsB;aACtC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAA;QAEN,yBAAyB;QACzB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE;YACnC,QAAQ;YACR,GAAG;YACH,YAAY;YACZ,aAAa,EAAE,aAAsB;SACtC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAEzB,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;QAC3D,gEAAgE;QAChE,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAA;QACrE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;IACzC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAAc,EACd,OAKC;IAED,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,CAAA;IACtD,MAAM,WAAW,GAAG,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,CAAA;IAC/C,MAAM,YAAY,GAAG,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAA;IAEjD,MAAM,YAAY,GAAG,cAAc,CAAC;QAClC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC/C,SAAS,EAAE,UAAU;QACrB,IAAI;KACL,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,cAAc,CAAC;QAClC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC/C,SAAS,EAAE,UAAU;QACrB,IAAI;KACL,CAAC,CAAA;IAEF,sDAAsD;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAGrB,CAAA;IAEH,qFAAqF;IACrF,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAA;IAEtD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAA;QAEzC,2EAA2E;QAC3E,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,KAAK,KAAK,WAAW,IAAI,SAAS,KAAK,YAAY,IAAI,OAAO,KAAK,QAAQ;gBAAE,SAAQ;YACzF,IAAI,KAAK,KAAK,YAAY,IAAI,SAAS,KAAK,QAAQ,IAAI,OAAO,KAAK,YAAY;gBAAE,SAAQ;QAC5F,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;YACnC,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,IAAI,GAAG,EAAW;YAC9B,KAAK,EAAE,GAAG,CAAC,OAAO;SACnB,CAAA;QACD,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;YACjC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACjC,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,OAAO,EAAE,CAAA;YACjC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxF,CAAC;QACD,IAAI,OAAO,KAAK,YAAY;YAAE,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;QAC/D,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,yFAAyF;IACzF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,YAAY;YAAE,SAAQ;QAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;QAEvC,2EAA2E;QAC3E,IAAI,IAAI,IAAI,KAAK,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ;YAAE,SAAQ;QAE1F,MAAM,UAAU,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAA;QAC/D,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QAC9D,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,WAAW;YAAE,SAAQ;QAE5C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;YACnC,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,IAAI,GAAG,EAAW;YAC9B,KAAK,EAAE,GAAG,CAAC,OAAO;SACnB,CAAA;QACD,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAA;QAC/C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,4CAA4C;IAC5C,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAA;QACvF,OAAO,GAAG,GAAG,EAAE,CAAA;IACjB,CAAC,CAAC,CAAA;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEnC,yFAAyF;IACzF,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8D,CAAA;IACzF,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;YAC/E,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAA;QACtD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC,CAAC,CACH,CAAA;IAED,yCAAyC;IACzC,MAAM,KAAK,GAA+B,EAAE,CAAA;IAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,GAAG,GACP,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;YAC7B,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;YACjC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAErC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;QAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;QACvD,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAA;QACpC,KAAK,CAAC,IAAI,CAAC;YACT,OAAO,EAAE,KAAK,CAAC,KAAK;YACpB,QAAQ;YACR,SAAS;YACT,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;YACrC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE;YACtB,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE;YAC1B,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAc;YAC9C,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAkB;SAC5C,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;AAC7B,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAc,EACd,KAAc,EACd,aAA+F;IAE/F,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC,KAAK,CAAC,WAAW,EAAa,CAAC,CAAA;IACtF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACnE,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC;QAChC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM;QACvC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI;KAClC,CAAA;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,MAAc,EACd,OAWC;IAED,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IAClC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1C,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACjE,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;KACnE,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IACzC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,KAAK,EAAE;YACL,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAkB;YACxD,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;YACzD,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB;QACD,MAAM,EAAE;YACN,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAkB;YACtD,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC;YACxD,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAc,EACd,OAKC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;IAC9D,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAA;IAExD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;QAC5E,MAAM,GAAG,GAAG,GAAG,GAAG,YAAY,CAAA;QAC9B,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC1D,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,CAAkB;YAC/C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;YACjD,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,WAAoB,EACpB,WAAoB,EACpB,OAAe,EACf,WAAmB;IAEnB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACzC,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,SAAS,CAAC,aAAa;QAChC,MAAM,EAAE,WAAW;KACpB,CAAC,CAAA;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,OAAO;QAClB,WAAW;KACZ,CAAC,CAAA;IACF,OAAO;QACL,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACjD,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;KACjC,CAAA;AACZ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,qBAAqB,CAC5B,QAAiC,EACjC,OAAgC;IAEhC,MAAM,MAAM,GAA4B,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAA;IACnE,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAA;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAA;IAEvE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAA;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAA;QACvB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IACnC,IAAI,OAAO,EAAE,KAAK,WAAW,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK,WAAW;QAC1F,OAAO,MAAM,CAAA;IAEf,MAAM,CAAC,KAAK,GAAG;QACb;YACE,GAAG,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD;KACF,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,2BAA2B,CAAC,QAAiB;IASpD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/D,MAAM,CAAC,GAAG,QAIT,CAAA;IACD,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;QACtF,OAAO,SAAS,CAAA;IAClB,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK;QACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;QACxB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;KACnC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../../../../src/server/internal/handlers/relay.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -22,6 +22,7 @@ import * as ExecutionError from '../../../core/ExecutionError.js'
|
|
|
22
22
|
import * as Schema from '../../../core/Schema.js'
|
|
23
23
|
import { type Handler, from } from '../../Handler.js'
|
|
24
24
|
import * as Kv from '../../Kv.js'
|
|
25
|
+
import { cached } from '../kv.js'
|
|
25
26
|
import * as Tokenlist from '../tokenlist.js'
|
|
26
27
|
import * as Sponsorship from './sponsorship.js'
|
|
27
28
|
import * as Utils from './utils.js'
|
|
@@ -148,6 +149,11 @@ export function relay(options: relay.Options = {}): Handler {
|
|
|
148
149
|
typeof parameters.feePayer === 'string' ? parameters.feePayer : undefined
|
|
149
150
|
const requestsSponsorship =
|
|
150
151
|
(!!feePayerOptions || !!externalFeePayerUrl) && parameters.feePayer !== false
|
|
152
|
+
const capabilities = (parameters.capabilities ?? {}) as Record<string, unknown>
|
|
153
|
+
// Default to `true`. Dapps that don't render diffs can pass
|
|
154
|
+
// `capabilities.balanceDiffs: false` to skip the post-fill
|
|
155
|
+
// `tempo_simulateV1` round trip (~250-400ms).
|
|
156
|
+
const requireBalanceDiffs = capabilities.balanceDiffs !== false
|
|
151
157
|
|
|
152
158
|
const { feePayer: _feePayer, ...normalized } =
|
|
153
159
|
Utils.normalizeFillTransactionRequest(parameters)
|
|
@@ -167,6 +173,7 @@ export function relay(options: relay.Options = {}): Handler {
|
|
|
167
173
|
resolveFeeToken(client, {
|
|
168
174
|
account: from,
|
|
169
175
|
feeToken: undefined,
|
|
176
|
+
kv,
|
|
170
177
|
tokens: (await getTokens(chainId)).filter(
|
|
171
178
|
(t) => t.toLowerCase() !== insufficientToken.toLowerCase(),
|
|
172
179
|
),
|
|
@@ -209,14 +216,18 @@ export function relay(options: relay.Options = {}): Handler {
|
|
|
209
216
|
filled = await fill(fillClient, {
|
|
210
217
|
autoSwap,
|
|
211
218
|
feeToken,
|
|
219
|
+
kv,
|
|
212
220
|
resolveFeeToken: resolveFeeTokenForSwap,
|
|
213
221
|
transaction,
|
|
214
222
|
})
|
|
215
223
|
}
|
|
216
224
|
sponsored = true
|
|
217
225
|
} else if (requestsSponsorship && feePayerOptions?.validate) {
|
|
218
|
-
// Path B: sponsorship possible but may be rejected
|
|
219
|
-
//
|
|
226
|
+
// Path B: sponsorship possible but may be rejected.
|
|
227
|
+
// Speculatively fill the sponsored variant, validate, and only
|
|
228
|
+
// fall back to the unsponsored path on rejection. The accept
|
|
229
|
+
// case (common) avoids the upfront `resolveFeeToken` round
|
|
230
|
+
// trips and the second `eth_fillTransaction`.
|
|
220
231
|
const sponsoredTx = { ...baseTx, feePayer: true }
|
|
221
232
|
|
|
222
233
|
if (Sponsorship.isPreparedTransaction(sponsoredTx)) {
|
|
@@ -232,38 +243,44 @@ export function relay(options: relay.Options = {}): Handler {
|
|
|
232
243
|
})
|
|
233
244
|
filled = prepared
|
|
234
245
|
} else {
|
|
235
|
-
|
|
236
|
-
// node doesn't pick one the user has zero balance of.
|
|
237
|
-
const unsponsoredFeeToken = features.feeTokenResolution
|
|
238
|
-
? await resolveFeeToken(client, {
|
|
239
|
-
account: from,
|
|
240
|
-
feeToken: requestFeeToken,
|
|
241
|
-
tokens: unsponsoredTokens,
|
|
242
|
-
})
|
|
243
|
-
: requestFeeToken
|
|
244
|
-
const unsponsoredTx = {
|
|
245
|
-
...baseTx,
|
|
246
|
-
...(unsponsoredFeeToken ? { feeToken: unsponsoredFeeToken } : {}),
|
|
247
|
-
}
|
|
248
|
-
const fillOptions = {
|
|
246
|
+
const options = {
|
|
249
247
|
autoSwap,
|
|
248
|
+
kv,
|
|
250
249
|
resolveFeeToken: resolveFeeTokenForSwap,
|
|
251
250
|
}
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
transaction: unsponsoredTx,
|
|
258
|
-
}),
|
|
259
|
-
])
|
|
251
|
+
const fill_sponsored = await fill(fillClient, {
|
|
252
|
+
...options,
|
|
253
|
+
feeToken,
|
|
254
|
+
transaction: sponsoredTx,
|
|
255
|
+
})
|
|
260
256
|
sponsored = await Sponsorship.shouldSponsor({
|
|
261
257
|
sender: from,
|
|
262
|
-
transaction:
|
|
258
|
+
transaction: fill_sponsored.transaction,
|
|
263
259
|
validate: feePayerOptions!.validate,
|
|
264
260
|
})
|
|
265
|
-
|
|
266
|
-
|
|
261
|
+
if (sponsored) {
|
|
262
|
+
filled = fill_sponsored
|
|
263
|
+
} else {
|
|
264
|
+
// Sponsor rejected — resolve fee token and fill unsponsored.
|
|
265
|
+
const feeToken_unsponsored = features.feeTokenResolution
|
|
266
|
+
? await resolveFeeToken(client, {
|
|
267
|
+
account: from,
|
|
268
|
+
feeToken: requestFeeToken,
|
|
269
|
+
kv,
|
|
270
|
+
tokens: unsponsoredTokens,
|
|
271
|
+
})
|
|
272
|
+
: requestFeeToken
|
|
273
|
+
const tx_unsponsored = {
|
|
274
|
+
...baseTx,
|
|
275
|
+
...(feeToken_unsponsored ? { feeToken: feeToken_unsponsored } : {}),
|
|
276
|
+
}
|
|
277
|
+
filled = await fill(client, {
|
|
278
|
+
...options,
|
|
279
|
+
feeToken: feeToken_unsponsored,
|
|
280
|
+
transaction: tx_unsponsored,
|
|
281
|
+
})
|
|
282
|
+
feeToken = feeToken_unsponsored
|
|
283
|
+
}
|
|
267
284
|
}
|
|
268
285
|
} else {
|
|
269
286
|
// Path C: no sponsorship configured — resolve fee token, fill once.
|
|
@@ -271,6 +288,7 @@ export function relay(options: relay.Options = {}): Handler {
|
|
|
271
288
|
? await resolveFeeToken(client, {
|
|
272
289
|
account: from,
|
|
273
290
|
feeToken: requestFeeToken,
|
|
291
|
+
kv,
|
|
274
292
|
tokens: unsponsoredTokens,
|
|
275
293
|
})
|
|
276
294
|
: requestFeeToken
|
|
@@ -278,6 +296,7 @@ export function relay(options: relay.Options = {}): Handler {
|
|
|
278
296
|
filled = await fill(client, {
|
|
279
297
|
autoSwap,
|
|
280
298
|
feeToken,
|
|
299
|
+
kv,
|
|
281
300
|
resolveFeeToken: resolveFeeTokenForSwap,
|
|
282
301
|
transaction,
|
|
283
302
|
})
|
|
@@ -296,26 +315,39 @@ export function relay(options: relay.Options = {}): Handler {
|
|
|
296
315
|
|
|
297
316
|
const [{ balanceDiffs, fee }, transaction_final, autoSwap_] = await Promise.all([
|
|
298
317
|
// Simulate and compute balance diffs + fee.
|
|
299
|
-
|
|
300
|
-
|
|
318
|
+
// When `capabilities.balanceDiffs` is `false`, skip simulate
|
|
319
|
+
// and compute fee directly from cached metadata.
|
|
320
|
+
(async () => {
|
|
321
|
+
if (!features.simulate) return { balanceDiffs: undefined, fee: undefined }
|
|
322
|
+
if (requireBalanceDiffs)
|
|
323
|
+
return simulateAndParseDiffs(client, {
|
|
301
324
|
account: from,
|
|
302
325
|
calls: extractCalls(transaction_filled),
|
|
303
326
|
swap,
|
|
304
327
|
feeToken,
|
|
305
328
|
gas: transaction_filled.gas,
|
|
329
|
+
kv,
|
|
306
330
|
maxFeePerGas: transaction_filled.maxFeePerGas,
|
|
307
331
|
})
|
|
308
|
-
|
|
332
|
+
const fee = await computeFee(client, {
|
|
333
|
+
feeToken,
|
|
334
|
+
gas: transaction_filled.gas,
|
|
335
|
+
kv,
|
|
336
|
+
maxFeePerGas: transaction_filled.maxFeePerGas,
|
|
337
|
+
}).catch(() => undefined)
|
|
338
|
+
return { balanceDiffs: undefined, fee }
|
|
339
|
+
})(),
|
|
309
340
|
// Sign as fee payer (if sponsored and not already signed).
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
341
|
+
(async () => {
|
|
342
|
+
if (!(sponsored && feePayerOptions && !alreadySigned)) return transaction_filled
|
|
343
|
+
return Sponsorship.sign({
|
|
344
|
+
account: feePayerOptions.account,
|
|
345
|
+
sender: from,
|
|
346
|
+
transaction: transaction_filled,
|
|
347
|
+
})
|
|
348
|
+
})(),
|
|
317
349
|
// Resolve autoSwap metadata (when AMM path was taken).
|
|
318
|
-
resolveAutoSwapMetadata(client, { autoSwap, swap }),
|
|
350
|
+
resolveAutoSwapMetadata(client, { autoSwap, kv, swap }),
|
|
319
351
|
])
|
|
320
352
|
|
|
321
353
|
const sponsor = (() => {
|
|
@@ -370,6 +402,7 @@ export function relay(options: relay.Options = {}): Handler {
|
|
|
370
402
|
? await simulateAndParseDiffs(client, {
|
|
371
403
|
account: zeroAddress,
|
|
372
404
|
calls: optimisticCalls,
|
|
405
|
+
kv,
|
|
373
406
|
})
|
|
374
407
|
: { balanceDiffs: undefined }
|
|
375
408
|
|
|
@@ -379,7 +412,9 @@ export function relay(options: relay.Options = {}): Handler {
|
|
|
379
412
|
? { [parameters.from]: balanceDiffs[zeroAddress] ?? [] }
|
|
380
413
|
: balanceDiffs
|
|
381
414
|
|
|
382
|
-
const metadata = await resolveTokenMetadata(client, token).catch(
|
|
415
|
+
const metadata = await resolveTokenMetadata(client, { token, kv }).catch(
|
|
416
|
+
() => undefined,
|
|
417
|
+
)
|
|
383
418
|
const deficit = required - available
|
|
384
419
|
return RpcResponse.from(
|
|
385
420
|
{
|
|
@@ -569,16 +604,8 @@ export namespace relay {
|
|
|
569
604
|
}
|
|
570
605
|
|
|
571
606
|
// TODO: cleanup
|
|
572
|
-
async function fill(
|
|
573
|
-
|
|
574
|
-
options: {
|
|
575
|
-
autoSwap?: { slippage: number } | undefined
|
|
576
|
-
feeToken?: Address | undefined
|
|
577
|
-
resolveFeeToken?: ((insufficientToken: Address) => Promise<Address | undefined>) | undefined
|
|
578
|
-
transaction: Record<string, unknown>
|
|
579
|
-
},
|
|
580
|
-
) {
|
|
581
|
-
const { autoSwap, feeToken, transaction: request } = options
|
|
607
|
+
async function fill(client: Client, options: fill.Options) {
|
|
608
|
+
const { autoSwap, feeToken, kv, transaction: request } = options
|
|
582
609
|
|
|
583
610
|
// Skip re-formatting if already in RPC format (e.g. from viem's fillTransaction).
|
|
584
611
|
const format = (value: Record<string, unknown>) =>
|
|
@@ -688,7 +715,7 @@ async function fill(
|
|
|
688
715
|
Actions.token
|
|
689
716
|
.getBalance(client, { account: fromAddress, token: resolvedFeeToken })
|
|
690
717
|
.catch(() => 0n),
|
|
691
|
-
resolveTokenMetadata(client, resolvedFeeToken).catch(() => undefined),
|
|
718
|
+
resolveTokenMetadata(client, { token: resolvedFeeToken, kv }).catch(() => undefined),
|
|
692
719
|
])
|
|
693
720
|
if (metadata) {
|
|
694
721
|
const requiredFee =
|
|
@@ -728,20 +755,45 @@ async function fill(
|
|
|
728
755
|
}
|
|
729
756
|
}
|
|
730
757
|
|
|
758
|
+
declare namespace fill {
|
|
759
|
+
type Options = {
|
|
760
|
+
autoSwap?: { slippage: number } | undefined
|
|
761
|
+
feeToken?: Address | undefined
|
|
762
|
+
kv?: Kv.Kv | undefined
|
|
763
|
+
resolveFeeToken?: ((insufficientToken: Address) => Promise<Address | undefined>) | undefined
|
|
764
|
+
transaction: Record<string, unknown>
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
|
|
731
768
|
async function resolveFeeToken(
|
|
732
769
|
client: Client,
|
|
733
|
-
options:
|
|
734
|
-
feeToken?: Address | undefined
|
|
735
|
-
account?: Address | undefined
|
|
736
|
-
tokens?: readonly Address[] | undefined
|
|
737
|
-
},
|
|
770
|
+
options: resolveFeeToken.Options,
|
|
738
771
|
): Promise<Address | undefined> {
|
|
739
|
-
const { feeToken, account, tokens } = options
|
|
772
|
+
const { feeToken, account, kv, tokens } = options
|
|
740
773
|
if (feeToken) return feeToken
|
|
741
774
|
if (!account) return undefined
|
|
742
775
|
|
|
776
|
+
// Cache the user's preferred fee token for `userTokenCacheTtl` seconds.
|
|
777
|
+
// The on-chain preference rarely changes; a short TTL avoids the
|
|
778
|
+
// ~150-250ms `userTokens` multicall on every unsponsored fill while
|
|
779
|
+
// still picking up updates within a minute. The cached value is just a
|
|
780
|
+
// hint — if the user's balance is 0 we fall back to the highest-balance
|
|
781
|
+
// token from the configured list.
|
|
782
|
+
const getUserToken = () => Actions.fee.getUserToken(client, { account }).catch(() => null)
|
|
783
|
+
const userTokenPromise = kv
|
|
784
|
+
? cached(
|
|
785
|
+
kv,
|
|
786
|
+
`fee.userToken:${client.chain?.id ?? 0}:${account.toLowerCase()}`,
|
|
787
|
+
async () => {
|
|
788
|
+
const result = await getUserToken()
|
|
789
|
+
return result ? { address: result.address } : null
|
|
790
|
+
},
|
|
791
|
+
{ ttl: options.userTokenCacheTtl ?? 60 },
|
|
792
|
+
)
|
|
793
|
+
: getUserToken()
|
|
794
|
+
|
|
743
795
|
const [userToken, balances] = await Promise.all([
|
|
744
|
-
|
|
796
|
+
userTokenPromise,
|
|
745
797
|
tokens
|
|
746
798
|
? Promise.all(
|
|
747
799
|
tokens.map(async (token) => ({
|
|
@@ -780,6 +832,17 @@ async function resolveFeeToken(
|
|
|
780
832
|
if (best) return best.address
|
|
781
833
|
}
|
|
782
834
|
|
|
835
|
+
declare namespace resolveFeeToken {
|
|
836
|
+
type Options = {
|
|
837
|
+
feeToken?: Address | undefined
|
|
838
|
+
account?: Address | undefined
|
|
839
|
+
kv?: Kv.Kv | undefined
|
|
840
|
+
tokens?: readonly Address[] | undefined
|
|
841
|
+
/** TTL in seconds for the cached `userTokens` lookup. @default 60 */
|
|
842
|
+
userTokenCacheTtl?: number | undefined
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
|
|
783
846
|
/**
|
|
784
847
|
* Extracts unique TIP20 token addresses (Tempo `0x20c0…` prefix) that the
|
|
785
848
|
* transaction's calls target. Used as fallback fee-token candidates so a
|
|
@@ -821,13 +884,7 @@ function extractCalls(transaction: Record<string, unknown>): readonly Call[] {
|
|
|
821
884
|
}
|
|
822
885
|
|
|
823
886
|
// TODO: cleanup/remove
|
|
824
|
-
async function simulate(
|
|
825
|
-
client: Client,
|
|
826
|
-
options: {
|
|
827
|
-
account?: Address | undefined
|
|
828
|
-
calls: readonly Call[]
|
|
829
|
-
},
|
|
830
|
-
) {
|
|
887
|
+
async function simulate(client: Client, options: simulate.Options) {
|
|
831
888
|
const { account, calls } = options
|
|
832
889
|
try {
|
|
833
890
|
return await Actions.simulate.simulateCalls(client, {
|
|
@@ -851,18 +908,15 @@ async function simulate(
|
|
|
851
908
|
}
|
|
852
909
|
}
|
|
853
910
|
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
options: {
|
|
911
|
+
declare namespace simulate {
|
|
912
|
+
type Options = {
|
|
857
913
|
account?: Address | undefined
|
|
858
914
|
calls: readonly Call[]
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
}
|
|
864
|
-
) {
|
|
865
|
-
const { account, calls, swap, feeToken, gas, maxFeePerGas } = options
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
async function simulateAndParseDiffs(client: Client, options: simulateAndParseDiffs.Options) {
|
|
919
|
+
const { account, calls, swap, feeToken, gas, kv, maxFeePerGas } = options
|
|
866
920
|
|
|
867
921
|
try {
|
|
868
922
|
const { results, tokenMetadata } = await simulate(client, {
|
|
@@ -879,6 +933,7 @@ async function simulateAndParseDiffs(
|
|
|
879
933
|
const balanceDiffs = account
|
|
880
934
|
? await buildBalanceDiffs(client, {
|
|
881
935
|
account,
|
|
936
|
+
kv,
|
|
882
937
|
logs,
|
|
883
938
|
swap,
|
|
884
939
|
tokenMetadata: tokenMetadata as never,
|
|
@@ -889,6 +944,7 @@ async function simulateAndParseDiffs(
|
|
|
889
944
|
const fee = await computeFee(client, {
|
|
890
945
|
feeToken,
|
|
891
946
|
gas,
|
|
947
|
+
kv,
|
|
892
948
|
maxFeePerGas,
|
|
893
949
|
tokenMetadata: tokenMetadata as never,
|
|
894
950
|
}).catch(() => undefined)
|
|
@@ -897,21 +953,25 @@ async function simulateAndParseDiffs(
|
|
|
897
953
|
} catch {
|
|
898
954
|
// Simulation failures should not block the fill response —
|
|
899
955
|
// return empty diffs with fee computed from transaction fields.
|
|
900
|
-
const fee = await computeFee(client, { feeToken, gas, maxFeePerGas })
|
|
956
|
+
const fee = await computeFee(client, { feeToken, gas, kv, maxFeePerGas })
|
|
901
957
|
return { balanceDiffs: undefined, fee }
|
|
902
958
|
}
|
|
903
959
|
}
|
|
904
960
|
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
logs: Log[]
|
|
961
|
+
declare namespace simulateAndParseDiffs {
|
|
962
|
+
type Options = {
|
|
963
|
+
account?: Address | undefined
|
|
964
|
+
calls: readonly Call[]
|
|
910
965
|
swap?: { tokenIn: Address; tokenOut: Address } | undefined
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
966
|
+
feeToken?: Address | undefined
|
|
967
|
+
gas?: bigint | undefined
|
|
968
|
+
kv?: Kv.Kv | undefined
|
|
969
|
+
maxFeePerGas?: bigint | undefined
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
async function buildBalanceDiffs(client: Client, options: buildBalanceDiffs.Options) {
|
|
974
|
+
const { account, kv, logs, swap, tokenMetadata } = options
|
|
915
975
|
const accountLower = account.toLowerCase()
|
|
916
976
|
const dexLower = Addresses.stablecoinDex.toLowerCase()
|
|
917
977
|
const swapTokenIn = swap?.tokenIn.toLowerCase()
|
|
@@ -999,7 +1059,11 @@ async function buildBalanceDiffs(
|
|
|
999
1059
|
await Promise.all(
|
|
1000
1060
|
entries.map(async (entry) => {
|
|
1001
1061
|
try {
|
|
1002
|
-
const metadata = await resolveTokenMetadata(client,
|
|
1062
|
+
const metadata = await resolveTokenMetadata(client, {
|
|
1063
|
+
token: entry.token,
|
|
1064
|
+
tokenMetadata,
|
|
1065
|
+
kv,
|
|
1066
|
+
})
|
|
1003
1067
|
metadataMap.set(entry.token.toLowerCase(), metadata)
|
|
1004
1068
|
} catch {}
|
|
1005
1069
|
}),
|
|
@@ -1031,13 +1095,27 @@ async function buildBalanceDiffs(
|
|
|
1031
1095
|
return { [account]: diffs }
|
|
1032
1096
|
}
|
|
1033
1097
|
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1098
|
+
declare namespace buildBalanceDiffs {
|
|
1099
|
+
type Options = {
|
|
1100
|
+
account: Address
|
|
1101
|
+
kv?: Kv.Kv | undefined
|
|
1102
|
+
logs: Log[]
|
|
1103
|
+
swap?: { tokenIn: Address; tokenOut: Address } | undefined
|
|
1104
|
+
tokenMetadata: Record<Address, { name: string; symbol: string; currency: string }>
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
async function resolveTokenMetadata(client: Client, options: resolveTokenMetadata.Options) {
|
|
1109
|
+
const { token, tokenMetadata, kv } = options
|
|
1039
1110
|
const meta = tokenMetadata?.[token] ?? tokenMetadata?.[token.toLowerCase() as Address]
|
|
1040
|
-
|
|
1111
|
+
// TIP-20 metadata (decimals/symbol/name) is immutable per token, so cache
|
|
1112
|
+
// long-term in KV. Skips the multicall RPC on cache hits.
|
|
1113
|
+
const fetcher = () => Actions.token.getMetadata(client, { token })
|
|
1114
|
+
const fallback = kv
|
|
1115
|
+
? await cached(kv, `tokenMetadata:${client.chain?.id ?? 0}:${token.toLowerCase()}`, fetcher, {
|
|
1116
|
+
ttl: 24 * 60 * 60,
|
|
1117
|
+
})
|
|
1118
|
+
: await fetcher()
|
|
1041
1119
|
return {
|
|
1042
1120
|
decimals: fallback.decimals ?? 6,
|
|
1043
1121
|
symbol: meta?.symbol || fallback.symbol,
|
|
@@ -1045,26 +1123,20 @@ async function resolveTokenMetadata(
|
|
|
1045
1123
|
}
|
|
1046
1124
|
}
|
|
1047
1125
|
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
maxAmountIn: bigint
|
|
1059
|
-
}
|
|
1060
|
-
| undefined
|
|
1061
|
-
},
|
|
1062
|
-
) {
|
|
1063
|
-
const { autoSwap, swap } = options
|
|
1126
|
+
declare namespace resolveTokenMetadata {
|
|
1127
|
+
type Options = {
|
|
1128
|
+
token: Address
|
|
1129
|
+
tokenMetadata?: Record<Address, { name: string; symbol: string; currency: string }> | undefined
|
|
1130
|
+
kv?: Kv.Kv | undefined
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1134
|
+
async function resolveAutoSwapMetadata(client: Client, options: resolveAutoSwapMetadata.Options) {
|
|
1135
|
+
const { autoSwap, kv, swap } = options
|
|
1064
1136
|
if (!autoSwap || !swap) return undefined
|
|
1065
1137
|
const [inMeta, outMeta] = await Promise.all([
|
|
1066
|
-
resolveTokenMetadata(client, swap.tokenIn).catch(() => undefined),
|
|
1067
|
-
resolveTokenMetadata(client, swap.tokenOut).catch(() => undefined),
|
|
1138
|
+
resolveTokenMetadata(client, { token: swap.tokenIn, kv }).catch(() => undefined),
|
|
1139
|
+
resolveTokenMetadata(client, { token: swap.tokenOut, kv }).catch(() => undefined),
|
|
1068
1140
|
])
|
|
1069
1141
|
if (!inMeta || !outMeta) return undefined
|
|
1070
1142
|
return {
|
|
@@ -1089,20 +1161,28 @@ async function resolveAutoSwapMetadata(
|
|
|
1089
1161
|
}
|
|
1090
1162
|
}
|
|
1091
1163
|
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1164
|
+
declare namespace resolveAutoSwapMetadata {
|
|
1165
|
+
type Options = {
|
|
1166
|
+
autoSwap?: { slippage: number } | undefined
|
|
1167
|
+
kv?: Kv.Kv | undefined
|
|
1168
|
+
swap?:
|
|
1169
|
+
| {
|
|
1170
|
+
calls: readonly { to: Address; data: `0x${string}` }[]
|
|
1171
|
+
tokenIn: Address
|
|
1172
|
+
tokenOut: Address
|
|
1173
|
+
amountOut: bigint
|
|
1174
|
+
maxAmountIn: bigint
|
|
1175
|
+
}
|
|
1176
|
+
| undefined
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
async function computeFee(client: Client, options: computeFee.Options) {
|
|
1181
|
+
const { feeToken, gas, kv, maxFeePerGas, tokenMetadata } = options
|
|
1102
1182
|
if (!feeToken || !gas || !maxFeePerGas) return undefined
|
|
1103
1183
|
|
|
1104
1184
|
try {
|
|
1105
|
-
const metadata = await resolveTokenMetadata(client, feeToken, tokenMetadata)
|
|
1185
|
+
const metadata = await resolveTokenMetadata(client, { token: feeToken, tokenMetadata, kv })
|
|
1106
1186
|
const raw = gas * maxFeePerGas
|
|
1107
1187
|
const amount = raw / 10n ** BigInt(18 - metadata.decimals)
|
|
1108
1188
|
return {
|
|
@@ -1116,6 +1196,16 @@ async function computeFee(
|
|
|
1116
1196
|
}
|
|
1117
1197
|
}
|
|
1118
1198
|
|
|
1199
|
+
declare namespace computeFee {
|
|
1200
|
+
type Options = {
|
|
1201
|
+
feeToken?: Address | undefined
|
|
1202
|
+
gas?: bigint | undefined
|
|
1203
|
+
kv?: Kv.Kv | undefined
|
|
1204
|
+
maxFeePerGas?: bigint | undefined
|
|
1205
|
+
tokenMetadata?: Record<Address, { name: string; symbol: string; currency: string }> | undefined
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1119
1209
|
function buildSwapCalls(
|
|
1120
1210
|
sourceToken: Address,
|
|
1121
1211
|
targetToken: Address,
|