@pioneer-platform/eth-network 8.5.7 → 8.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/lib/utils.js DELETED
@@ -1,471 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.erc20ABI = exports.filterSelfTxs = exports.getPrefix = exports.getDefaultGasPrices = exports.getDefaultFees = exports.estimateDefaultFeesWithGasPricesAndLimits = exports.getFee = exports.getTxFromEthTransaction = exports.getTxFromTokenTransaction = exports.validateSymbol = exports.getTokenAddress = exports.validateAddress = exports.ethNetworkToXchains = exports.xchainNetworkToEths = exports.MAX_APPROVAL = exports.ETHAddress = exports.DEFAULT_GAS_PRICE = exports.BASE_TOKEN_GAS_COST = exports.SIMPLE_GAS_COST = exports.ETHPLORER_FREEKEY = exports.ETH_DECIMAL = void 0;
4
- const xchain_util_1 = require("@xchainjs/xchain-util");
5
- const types_1 = require("./types");
6
- const bignumber_1 = require("@ethersproject/bignumber");
7
- const ethers_1 = require("ethers");
8
- const utils_1 = require("ethers/lib/utils");
9
- exports.ETH_DECIMAL = 18;
10
- exports.ETHPLORER_FREEKEY = 'freekey';
11
- // from https://github.com/MetaMask/metamask-extension/blob/ee205b893fe61dc4736efc576e0663189a9d23da/ui/app/pages/send/send.constants.js#L39
12
- // and based on recommendations of https://ethgasstation.info/blog/gas-limit/
13
- exports.SIMPLE_GAS_COST = bignumber_1.BigNumber.from(21000);
14
- exports.BASE_TOKEN_GAS_COST = bignumber_1.BigNumber.from(100000);
15
- // default gas price in gwei
16
- exports.DEFAULT_GAS_PRICE = 50;
17
- exports.ETHAddress = '0x0000000000000000000000000000000000000000';
18
- exports.MAX_APPROVAL = bignumber_1.BigNumber.from(2).pow(256).sub(1);
19
- /**
20
- * XChainNetwork -> EthNetwork
21
- *
22
- * @param {XChainNetwork} network
23
- * @returns {EthNetwork}
24
- */
25
- const xchainNetworkToEths = (network) => {
26
- switch (network) {
27
- // DO NOT use switch/case's default branch
28
- // to be sure that ALL possible cases are
29
- // processed in a similar way to reverted ethNetworkToXchains
30
- case 'mainnet':
31
- return types_1.Network.MAIN;
32
- case 'testnet':
33
- return types_1.Network.TEST;
34
- default:
35
- return types_1.Network.MAIN;
36
- }
37
- };
38
- exports.xchainNetworkToEths = xchainNetworkToEths;
39
- /**
40
- * EthNetwork -> XChainNetwork
41
- *
42
- * @param {EthNetwork} network
43
- * @returns {XChainNetwork}
44
- */
45
- const ethNetworkToXchains = (network) => {
46
- switch (network) {
47
- // DO NOT use switch/case's default branch
48
- // to be sure that ALL possible cases are
49
- // processed in a similar way to reverted xchainNetworkToEths
50
- case types_1.Network.MAIN:
51
- return 'mainnet';
52
- case types_1.Network.TEST:
53
- return 'testnet';
54
- }
55
- };
56
- exports.ethNetworkToXchains = ethNetworkToXchains;
57
- /**
58
- * Validate the given address.
59
- *
60
- * @param {Address} address
61
- * @returns {boolean} `true` or `false`
62
- */
63
- const validateAddress = (address) => {
64
- try {
65
- ethers_1.ethers.utils.getAddress(address);
66
- return true;
67
- }
68
- catch (error) {
69
- return false;
70
- }
71
- };
72
- exports.validateAddress = validateAddress;
73
- /**
74
- * Get token address from asset.
75
- *
76
- * @param {Asset} asset
77
- * @returns {string|null} The token address.
78
- */
79
- const getTokenAddress = (asset) => {
80
- try {
81
- // strip 0X only - 0x is still valid
82
- return ethers_1.ethers.utils.getAddress(asset.symbol.slice(asset.ticker.length + 1).replace(/^0X/, ''));
83
- }
84
- catch (err) {
85
- return null;
86
- }
87
- };
88
- exports.getTokenAddress = getTokenAddress;
89
- /**
90
- * Check if the symbol is valid.
91
- *
92
- * @param {string|null|undefined} symbol
93
- * @returns {boolean} `true` or `false`.
94
- */
95
- const validateSymbol = (symbol) => (symbol ? symbol.length >= 3 : false);
96
- exports.validateSymbol = validateSymbol;
97
- /**
98
- * Get transactions from token tx
99
- *
100
- * @param {TokenTransactionInfo} tx
101
- * @returns {Tx|null} The parsed transaction.
102
- */
103
- const getTxFromTokenTransaction = (tx) => {
104
- const decimals = parseInt(tx.tokenDecimal) || exports.ETH_DECIMAL;
105
- const symbol = tx.tokenSymbol;
106
- const address = tx.contractAddress;
107
- if ((0, exports.validateSymbol)(symbol) && (0, exports.validateAddress)(address)) {
108
- const tokenAsset = (0, xchain_util_1.assetFromString)(`${xchain_util_1.ETHChain}.${symbol}-${address}`);
109
- if (tokenAsset) {
110
- return {
111
- asset: tokenAsset,
112
- from: [
113
- {
114
- from: tx.from,
115
- amount: (0, xchain_util_1.baseAmount)(tx.value, decimals),
116
- },
117
- ],
118
- to: [
119
- {
120
- to: tx.to,
121
- amount: (0, xchain_util_1.baseAmount)(tx.value, decimals),
122
- },
123
- ],
124
- date: new Date(parseInt(tx.timeStamp) * 1000),
125
- type: 'transfer',
126
- hash: tx.hash,
127
- };
128
- }
129
- }
130
- return null;
131
- };
132
- exports.getTxFromTokenTransaction = getTxFromTokenTransaction;
133
- /**
134
- * Get transactions from ETH transaction
135
- *
136
- * @param {ETHTransactionInfo} tx
137
- * @returns {Tx} The parsed transaction.
138
- */
139
- const getTxFromEthTransaction = (tx) => {
140
- return {
141
- asset: xchain_util_1.AssetETH,
142
- from: [
143
- {
144
- from: tx.from,
145
- amount: (0, xchain_util_1.baseAmount)(tx.value, exports.ETH_DECIMAL),
146
- },
147
- ],
148
- to: [
149
- {
150
- to: tx.to,
151
- amount: (0, xchain_util_1.baseAmount)(tx.value, exports.ETH_DECIMAL),
152
- },
153
- ],
154
- date: new Date(parseInt(tx.timeStamp) * 1000),
155
- type: 'transfer',
156
- hash: tx.hash,
157
- };
158
- };
159
- exports.getTxFromEthTransaction = getTxFromEthTransaction;
160
- /**
161
- * Calculate fees by multiplying .
162
- *
163
- * @returns {Fees} The default gas price.
164
- */
165
- const getFee = ({ gasPrice, gasLimit }) => (0, xchain_util_1.baseAmount)(gasPrice.amount().multipliedBy(gasLimit.toString()), exports.ETH_DECIMAL);
166
- exports.getFee = getFee;
167
- const estimateDefaultFeesWithGasPricesAndLimits = (asset) => {
168
- const gasPrices = {
169
- average: (0, xchain_util_1.baseAmount)((0, utils_1.parseUnits)(exports.DEFAULT_GAS_PRICE.toString(), 'gwei').toString(), exports.ETH_DECIMAL),
170
- fast: (0, xchain_util_1.baseAmount)((0, utils_1.parseUnits)((exports.DEFAULT_GAS_PRICE * 2).toString(), 'gwei').toString(), exports.ETH_DECIMAL),
171
- fastest: (0, xchain_util_1.baseAmount)((0, utils_1.parseUnits)((exports.DEFAULT_GAS_PRICE * 3).toString(), 'gwei').toString(), exports.ETH_DECIMAL),
172
- };
173
- const { fast: fastGP, fastest: fastestGP, average: averageGP } = gasPrices;
174
- let assetAddress;
175
- if (asset && (0, xchain_util_1.assetToString)(asset) !== (0, xchain_util_1.assetToString)(xchain_util_1.AssetETH)) {
176
- assetAddress = (0, exports.getTokenAddress)(asset);
177
- }
178
- let gasLimit;
179
- if (assetAddress && assetAddress !== exports.ETHAddress) {
180
- gasLimit = bignumber_1.BigNumber.from(exports.BASE_TOKEN_GAS_COST);
181
- }
182
- else {
183
- gasLimit = bignumber_1.BigNumber.from(exports.SIMPLE_GAS_COST);
184
- }
185
- return {
186
- gasPrices,
187
- gasLimit,
188
- fees: {
189
- type: 'byte',
190
- average: (0, exports.getFee)({ gasPrice: averageGP, gasLimit }),
191
- fast: (0, exports.getFee)({ gasPrice: fastGP, gasLimit }),
192
- fastest: (0, exports.getFee)({ gasPrice: fastestGP, gasLimit }),
193
- },
194
- };
195
- };
196
- exports.estimateDefaultFeesWithGasPricesAndLimits = estimateDefaultFeesWithGasPricesAndLimits;
197
- /**
198
- * Get the default fees.
199
- *
200
- * @returns {Fees} The default gas price.
201
- */
202
- const getDefaultFees = (asset) => {
203
- const { fees } = (0, exports.estimateDefaultFeesWithGasPricesAndLimits)(asset);
204
- return fees;
205
- };
206
- exports.getDefaultFees = getDefaultFees;
207
- /**
208
- * Get the default gas price.
209
- *
210
- * @returns {Fees} The default gas prices.
211
- */
212
- const getDefaultGasPrices = (asset) => {
213
- const { gasPrices } = (0, exports.estimateDefaultFeesWithGasPricesAndLimits)(asset);
214
- return gasPrices;
215
- };
216
- exports.getDefaultGasPrices = getDefaultGasPrices;
217
- /**
218
- * Get address prefix based on the network.
219
- *
220
- * @returns {string} The address prefix based on the network.
221
- *
222
- **/
223
- const getPrefix = () => '0x';
224
- exports.getPrefix = getPrefix;
225
- /**
226
- * Filter self txs
227
- *
228
- * @returns {T[]}
229
- *
230
- **/
231
- const filterSelfTxs = (txs) => {
232
- const filterTxs = txs.filter((tx) => tx.from !== tx.to);
233
- let selfTxs = txs.filter((tx) => tx.from === tx.to);
234
- while (selfTxs.length) {
235
- const selfTx = selfTxs[0];
236
- filterTxs.push(selfTx);
237
- selfTxs = selfTxs.filter((tx) => tx.hash !== selfTx.hash);
238
- }
239
- return filterTxs;
240
- };
241
- exports.filterSelfTxs = filterSelfTxs;
242
- exports.erc20ABI = [
243
- {
244
- "inputs": [],
245
- "stateMutability": "nonpayable",
246
- "type": "constructor"
247
- },
248
- {
249
- "anonymous": false,
250
- "inputs": [
251
- {
252
- "indexed": true,
253
- "internalType": "address",
254
- "name": "owner",
255
- "type": "address"
256
- },
257
- {
258
- "indexed": true,
259
- "internalType": "address",
260
- "name": "spender",
261
- "type": "address"
262
- },
263
- {
264
- "indexed": false,
265
- "internalType": "uint256",
266
- "name": "value",
267
- "type": "uint256"
268
- }
269
- ],
270
- "name": "Approval",
271
- "type": "event"
272
- },
273
- {
274
- "anonymous": false,
275
- "inputs": [
276
- {
277
- "indexed": true,
278
- "internalType": "address",
279
- "name": "from",
280
- "type": "address"
281
- },
282
- {
283
- "indexed": true,
284
- "internalType": "address",
285
- "name": "to",
286
- "type": "address"
287
- },
288
- {
289
- "indexed": false,
290
- "internalType": "uint256",
291
- "name": "value",
292
- "type": "uint256"
293
- }
294
- ],
295
- "name": "Transfer",
296
- "type": "event"
297
- },
298
- {
299
- "inputs": [
300
- {
301
- "internalType": "address",
302
- "name": "",
303
- "type": "address"
304
- },
305
- {
306
- "internalType": "address",
307
- "name": "",
308
- "type": "address"
309
- }
310
- ],
311
- "name": "allowance",
312
- "outputs": [
313
- {
314
- "internalType": "uint256",
315
- "name": "",
316
- "type": "uint256"
317
- }
318
- ],
319
- "stateMutability": "view",
320
- "type": "function"
321
- },
322
- {
323
- "inputs": [
324
- {
325
- "internalType": "address",
326
- "name": "spender",
327
- "type": "address"
328
- },
329
- {
330
- "internalType": "uint256",
331
- "name": "value",
332
- "type": "uint256"
333
- }
334
- ],
335
- "name": "approve",
336
- "outputs": [
337
- {
338
- "internalType": "bool",
339
- "name": "success",
340
- "type": "bool"
341
- }
342
- ],
343
- "stateMutability": "nonpayable",
344
- "type": "function"
345
- },
346
- {
347
- "inputs": [
348
- {
349
- "internalType": "address",
350
- "name": "",
351
- "type": "address"
352
- }
353
- ],
354
- "name": "balanceOf",
355
- "outputs": [
356
- {
357
- "internalType": "uint256",
358
- "name": "",
359
- "type": "uint256"
360
- }
361
- ],
362
- "stateMutability": "view",
363
- "type": "function"
364
- },
365
- {
366
- "inputs": [],
367
- "name": "decimals",
368
- "outputs": [
369
- {
370
- "internalType": "uint256",
371
- "name": "",
372
- "type": "uint256"
373
- }
374
- ],
375
- "stateMutability": "view",
376
- "type": "function"
377
- },
378
- {
379
- "inputs": [],
380
- "name": "name",
381
- "outputs": [
382
- {
383
- "internalType": "string",
384
- "name": "",
385
- "type": "string"
386
- }
387
- ],
388
- "stateMutability": "view",
389
- "type": "function"
390
- },
391
- {
392
- "inputs": [],
393
- "name": "symbol",
394
- "outputs": [
395
- {
396
- "internalType": "string",
397
- "name": "",
398
- "type": "string"
399
- }
400
- ],
401
- "stateMutability": "view",
402
- "type": "function"
403
- },
404
- {
405
- "inputs": [],
406
- "name": "totalSupply",
407
- "outputs": [
408
- {
409
- "internalType": "uint256",
410
- "name": "",
411
- "type": "uint256"
412
- }
413
- ],
414
- "stateMutability": "view",
415
- "type": "function"
416
- },
417
- {
418
- "inputs": [
419
- {
420
- "internalType": "address",
421
- "name": "to",
422
- "type": "address"
423
- },
424
- {
425
- "internalType": "uint256",
426
- "name": "value",
427
- "type": "uint256"
428
- }
429
- ],
430
- "name": "transfer",
431
- "outputs": [
432
- {
433
- "internalType": "bool",
434
- "name": "success",
435
- "type": "bool"
436
- }
437
- ],
438
- "stateMutability": "nonpayable",
439
- "type": "function"
440
- },
441
- {
442
- "inputs": [
443
- {
444
- "internalType": "address",
445
- "name": "from",
446
- "type": "address"
447
- },
448
- {
449
- "internalType": "address",
450
- "name": "to",
451
- "type": "address"
452
- },
453
- {
454
- "internalType": "uint256",
455
- "name": "value",
456
- "type": "uint256"
457
- }
458
- ],
459
- "name": "transferFrom",
460
- "outputs": [
461
- {
462
- "internalType": "bool",
463
- "name": "success",
464
- "type": "bool"
465
- }
466
- ],
467
- "stateMutability": "nonpayable",
468
- "type": "function"
469
- }
470
- ];
471
- //# sourceMappingURL=utils.js.map
package/lib/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AACA,uDAQ8B;AAC9B,mCAOgB;AAChB,wDAAoD;AACpD,mCAA+B;AAC/B,4CAA6C;AAEhC,QAAA,WAAW,GAAG,EAAE,CAAA;AAChB,QAAA,iBAAiB,GAAG,SAAS,CAAA;AAE1C,4IAA4I;AAC5I,6EAA6E;AAChE,QAAA,eAAe,GAAG,qBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACvC,QAAA,mBAAmB,GAAG,qBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAEzD,4BAA4B;AACf,QAAA,iBAAiB,GAAG,EAAE,CAAA;AAEtB,QAAA,UAAU,GAAG,4CAA4C,CAAA;AACzD,QAAA,YAAY,GAAG,qBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAE7D;;;;;GAKG;AACI,MAAM,mBAAmB,GAAG,CAAC,OAAsB,EAAc,EAAE;IACxE,QAAQ,OAAO,EAAE,CAAC;QAChB,0CAA0C;QAC1C,yCAAyC;QACzC,6DAA6D;QAC7D,KAAK,SAAS;YACZ,OAAO,eAAU,CAAC,IAAI,CAAA;QACxB,KAAK,SAAS;YACZ,OAAO,eAAU,CAAC,IAAI,CAAA;QACxB;YACE,OAAO,eAAU,CAAC,IAAI,CAAA;IAC1B,CAAC;AACH,CAAC,CAAA;AAZY,QAAA,mBAAmB,uBAY/B;AAED;;;;;GAKG;AACI,MAAM,mBAAmB,GAAG,CAAC,OAAmB,EAAiB,EAAE;IACxE,QAAQ,OAAO,EAAE,CAAC;QAChB,0CAA0C;QAC1C,yCAAyC;QACzC,6DAA6D;QAC7D,KAAK,eAAU,CAAC,IAAI;YAClB,OAAO,SAAS,CAAA;QAClB,KAAK,eAAU,CAAC,IAAI;YAClB,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC,CAAA;AAVY,QAAA,mBAAmB,uBAU/B;AAED;;;;;GAKG;AACI,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAW,EAAE;IAC3D,IAAI,CAAC;QACH,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAPY,QAAA,eAAe,mBAO3B;AAED;;;;;GAKG;AACI,MAAM,eAAe,GAAG,CAAC,KAAY,EAAiB,EAAE;IAC7D,IAAI,CAAC;QACH,oCAAoC;QACpC,OAAO,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;IAChG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAPY,QAAA,eAAe,mBAO3B;AAED;;;;;GAKG;AACI,MAAM,cAAc,GAAG,CAAC,MAAsB,EAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAA3F,QAAA,cAAc,kBAA6E;AAExG;;;;;GAKG;AACI,MAAM,yBAAyB,GAAG,CAAC,EAAwB,EAAa,EAAE;IAC/E,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,mBAAW,CAAA;IACzD,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAA;IAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,eAAe,CAAA;IAClC,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,IAAI,IAAA,uBAAe,EAAC,OAAO,CAAC,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,IAAA,6BAAe,EAAC,GAAG,sBAAQ,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC,CAAA;QACtE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;gBACL,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE;oBACJ;wBACE,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,MAAM,EAAE,IAAA,wBAAU,EAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;qBACvC;iBACF;gBACD,EAAE,EAAE;oBACF;wBACE,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,MAAM,EAAE,IAAA,wBAAU,EAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;qBACvC;iBACF;gBACD,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;gBAC7C,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,EAAE,CAAC,IAAI;aACd,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AA7BY,QAAA,yBAAyB,6BA6BrC;AAED;;;;;GAKG;AACI,MAAM,uBAAuB,GAAG,CAAC,EAAsB,EAAM,EAAE;IACpE,OAAO;QACL,KAAK,EAAE,sBAAQ;QACf,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,MAAM,EAAE,IAAA,wBAAU,EAAC,EAAE,CAAC,KAAK,EAAE,mBAAW,CAAC;aAC1C;SACF;QACD,EAAE,EAAE;YACF;gBACE,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,MAAM,EAAE,IAAA,wBAAU,EAAC,EAAE,CAAC,KAAK,EAAE,mBAAW,CAAC;aAC1C;SACF;QACD,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAC7C,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,EAAE,CAAC,IAAI;KACd,CAAA;AACH,CAAC,CAAA;AAnBY,QAAA,uBAAuB,2BAmBnC;AAGD;;;;GAIG;AACI,MAAM,MAAM,GAAwF,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAiD,EAAE,EAAE,CACnL,IAAA,wBAAU,EAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,mBAAW,CAAC,CAAA;AADjE,QAAA,MAAM,UAC2D;AAEvE,MAAM,yCAAyC,GAAG,CAAC,KAAa,EAA8B,EAAE;IACrG,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,IAAA,wBAAU,EAAC,IAAA,kBAAU,EAAC,yBAAiB,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,mBAAW,CAAC;QAC7F,IAAI,EAAE,IAAA,wBAAU,EAAC,IAAA,kBAAU,EAAC,CAAC,yBAAiB,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,mBAAW,CAAC;QAChG,OAAO,EAAE,IAAA,wBAAU,EAAC,IAAA,kBAAU,EAAC,CAAC,yBAAiB,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,mBAAW,CAAC;KACpG,CAAA;IACD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,CAAA;IAE1E,IAAI,YAAY,CAAA;IAChB,IAAI,KAAK,IAAI,IAAA,2BAAa,EAAC,KAAK,CAAC,KAAK,IAAA,2BAAa,EAAC,sBAAQ,CAAC,EAAE,CAAC;QAC9D,YAAY,GAAG,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,QAAQ,CAAA;IACZ,IAAI,YAAY,IAAI,YAAY,KAAK,kBAAU,EAAE,CAAC;QAChD,QAAQ,GAAG,qBAAS,CAAC,IAAI,CAAC,2BAAmB,CAAC,CAAA;IAChD,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,qBAAS,CAAC,IAAI,CAAC,uBAAe,CAAC,CAAA;IAC5C,CAAC;IAED,OAAO;QACL,SAAS;QACT,QAAQ;QACR,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YAClD,IAAI,EAAE,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC5C,OAAO,EAAE,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;SACnD;KACF,CAAA;AACH,CAAC,CAAA;AA9BY,QAAA,yCAAyC,6CA8BrD;AAED;;;;GAIG;AACI,MAAM,cAAc,GAAG,CAAC,KAAa,EAAQ,EAAE;IACpD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,iDAAyC,EAAC,KAAK,CAAC,CAAA;IACjE,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAHY,QAAA,cAAc,kBAG1B;AAED;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAa,EAAE;IAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,iDAAyC,EAAC,KAAK,CAAC,CAAA;IACtE,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAHY,QAAA,mBAAmB,uBAG/B;AAED;;;;;IAKI;AACG,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA;AAAtB,QAAA,SAAS,aAAa;AAEnC;;;;;IAKI;AACG,MAAM,aAAa,GAAG,CAAuD,GAAQ,EAAO,EAAE;IACnG,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;IACvD,IAAI,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;IACnD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACzB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAVY,QAAA,aAAa,iBAUzB;AAEY,QAAA,QAAQ,GAAG;IACtB;QACE,QAAQ,EAAE,EAAE;QACZ,iBAAiB,EAAE,YAAY;QAC/B,MAAM,EAAE,aAAa;KACtB;IACD;QACE,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE;YACR;gBACE,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,SAAS,EAAE,KAAK;gBAChB,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,SAAS;aAClB;SACF;QACD,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,OAAO;KAChB;IACD;QACE,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE;YACR;gBACE,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,SAAS,EAAE,KAAK;gBAChB,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,SAAS;aAClB;SACF;QACD,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,OAAO;KAChB;IACD;QACE,QAAQ,EAAE;YACR;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,SAAS;aAClB;SACF;QACD,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,SAAS;aAClB;SACF;QACD,iBAAiB,EAAE,MAAM;QACzB,MAAM,EAAE,UAAU;KACnB;IACD;QACE,QAAQ,EAAE;YACR;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,SAAS;aAClB;SACF;QACD,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,MAAM;gBACtB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,MAAM;aACf;SACF;QACD,iBAAiB,EAAE,YAAY;QAC/B,MAAM,EAAE,UAAU;KACnB;IACD;QACE,QAAQ,EAAE;YACR;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,SAAS;aAClB;SACF;QACD,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,SAAS;aAClB;SACF;QACD,iBAAiB,EAAE,MAAM;QACzB,MAAM,EAAE,UAAU;KACnB;IACD;QACE,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,SAAS;aAClB;SACF;QACD,iBAAiB,EAAE,MAAM;QACzB,MAAM,EAAE,UAAU;KACnB;IACD;QACE,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,MAAM;QACd,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,QAAQ;gBACxB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,QAAQ;aACjB;SACF;QACD,iBAAiB,EAAE,MAAM;QACzB,MAAM,EAAE,UAAU;KACnB;IACD;QACE,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,QAAQ;gBACxB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,QAAQ;aACjB;SACF;QACD,iBAAiB,EAAE,MAAM;QACzB,MAAM,EAAE,UAAU;KACnB;IACD;QACE,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,SAAS;aAClB;SACF;QACD,iBAAiB,EAAE,MAAM;QACzB,MAAM,EAAE,UAAU;KACnB;IACD;QACE,QAAQ,EAAE;YACR;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,SAAS;aAClB;SACF;QACD,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,MAAM;gBACtB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,MAAM;aACf;SACF;QACD,iBAAiB,EAAE,YAAY;QAC/B,MAAM,EAAE,UAAU;KACnB;IACD;QACE,QAAQ,EAAE;YACR;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,SAAS;aAClB;SACF;QACD,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,MAAM;gBACtB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,MAAM;aACf;SACF;QACD,iBAAiB,EAAE,YAAY;QAC/B,MAAM,EAAE,UAAU;KACnB;CACF,CAAA"}