@ledgerhq/hw-app-btc 6.11.1 → 6.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -48
- package/lib/Btc.d.ts.map +1 -1
- package/lib/Btc.js +4 -2
- package/lib/Btc.js.map +1 -1
- package/lib/BtcNew.d.ts.map +1 -1
- package/lib/BtcNew.js +35 -164
- package/lib/BtcNew.js.map +1 -1
- package/lib/newops/accounttype.d.ts +110 -0
- package/lib/newops/accounttype.d.ts.map +1 -0
- package/lib/newops/accounttype.js +233 -0
- package/lib/newops/accounttype.js.map +1 -0
- package/lib/newops/clientCommands.d.ts.map +1 -1
- package/lib/newops/clientCommands.js +14 -9
- package/lib/newops/clientCommands.js.map +1 -1
- package/lib-es/Btc.d.ts.map +1 -1
- package/lib-es/Btc.js +4 -2
- package/lib-es/Btc.js.map +1 -1
- package/lib-es/BtcNew.d.ts.map +1 -1
- package/lib-es/BtcNew.js +38 -167
- package/lib-es/BtcNew.js.map +1 -1
- package/lib-es/newops/accounttype.d.ts +110 -0
- package/lib-es/newops/accounttype.d.ts.map +1 -0
- package/lib-es/newops/accounttype.js +230 -0
- package/lib-es/newops/accounttype.js.map +1 -0
- package/lib-es/newops/clientCommands.d.ts.map +1 -1
- package/lib-es/newops/clientCommands.js +14 -9
- package/lib-es/newops/clientCommands.js.map +1 -1
- package/package.json +3 -3
- package/src/Btc.ts +33 -2
- package/src/BtcNew.ts +61 -163
- package/src/newops/accounttype.ts +370 -0
- package/src/newops/clientCommands.ts +15 -9
- package/tests/Btc.test.ts +5 -0
- package/tests/newops/BtcNew.test.ts +10 -10
- package/tests/newops/integrationtools.ts +17 -17
package/lib-es/BtcNew.js
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -47,12 +36,11 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
47
36
|
};
|
|
48
37
|
import { crypto } from "bitcoinjs-lib";
|
|
49
38
|
import semver from "semver";
|
|
50
|
-
import {
|
|
39
|
+
import { pointCompress } from "tiny-secp256k1";
|
|
51
40
|
import { getXpubComponents, hardenedPathOf, pathArrayToString, pathStringToArray, pubkeyFromXpub, } from "./bip32";
|
|
52
|
-
import { BufferReader
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
import { createKey, WalletPolicy } from "./newops/policy";
|
|
41
|
+
import { BufferReader } from "./buffertools";
|
|
42
|
+
import { p2pkh, p2tr, p2wpkh, p2wpkhWrapped, } from "./newops/accounttype";
|
|
43
|
+
import { createKey, WalletPolicy, } from "./newops/policy";
|
|
56
44
|
import { extract } from "./newops/psbtExtractor";
|
|
57
45
|
import { finalize } from "./newops/psbtFinalizer";
|
|
58
46
|
import { psbtIn, PsbtV2 } from "./newops/psbtv2";
|
|
@@ -148,7 +136,7 @@ var BtcNew = /** @class */ (function () {
|
|
|
148
136
|
case 1:
|
|
149
137
|
xpub = _c.sent();
|
|
150
138
|
display = (_a = opts === null || opts === void 0 ? void 0 : opts.verify) !== null && _a !== void 0 ? _a : false;
|
|
151
|
-
return [4 /*yield*/, this.getWalletAddress(pathElements,
|
|
139
|
+
return [4 /*yield*/, this.getWalletAddress(pathElements, descrTemplFrom((_b = opts === null || opts === void 0 ? void 0 : opts.format) !== null && _b !== void 0 ? _b : "legacy"), display)];
|
|
152
140
|
case 2:
|
|
153
141
|
address = _c.sent();
|
|
154
142
|
components = getXpubComponents(xpub);
|
|
@@ -177,7 +165,7 @@ var BtcNew = /** @class */ (function () {
|
|
|
177
165
|
* way to get the address from the device. In this case we have to create it
|
|
178
166
|
* ourselves, but we don't at this time, and instead return an empty ("") address.
|
|
179
167
|
*/
|
|
180
|
-
BtcNew.prototype.getWalletAddress = function (pathElements,
|
|
168
|
+
BtcNew.prototype.getWalletAddress = function (pathElements, descrTempl, display) {
|
|
181
169
|
return __awaiter(this, void 0, void 0, function () {
|
|
182
170
|
var accountPath, accountXpub, masterFingerprint, policy, changeAndIndex;
|
|
183
171
|
return __generator(this, function (_a) {
|
|
@@ -193,7 +181,7 @@ var BtcNew = /** @class */ (function () {
|
|
|
193
181
|
return [4 /*yield*/, this.client.getMasterFingerprint()];
|
|
194
182
|
case 2:
|
|
195
183
|
masterFingerprint = _a.sent();
|
|
196
|
-
policy = new WalletPolicy(
|
|
184
|
+
policy = new WalletPolicy(descrTempl, createKey(masterFingerprint, accountPath, accountXpub));
|
|
197
185
|
changeAndIndex = pathElements.slice(-2, pathElements.length);
|
|
198
186
|
return [2 /*return*/, this.client.getWalletAddress(policy, Buffer.alloc(32, 0), changeAndIndex[0], changeAndIndex[1], display)];
|
|
199
187
|
}
|
|
@@ -210,7 +198,7 @@ var BtcNew = /** @class */ (function () {
|
|
|
210
198
|
*/
|
|
211
199
|
BtcNew.prototype.createPaymentTransactionNew = function (arg) {
|
|
212
200
|
return __awaiter(this, void 0, void 0, function () {
|
|
213
|
-
var inputCount, psbt, accountType, notifyCount, progress,
|
|
201
|
+
var inputCount, psbt, masterFp, accountType, notifyCount, progress, accountXpub, accountPath, i, pathElems, outputsConcat, outputsBufferReader, outputCount, changeData, changeFound, i, amount, outputScript, isChange, changePath, pubkey, key, p, firstSigned, progressCallback, serializedTx;
|
|
214
202
|
return __generator(this, function (_a) {
|
|
215
203
|
switch (_a.label) {
|
|
216
204
|
case 0:
|
|
@@ -219,7 +207,10 @@ var BtcNew = /** @class */ (function () {
|
|
|
219
207
|
throw Error("No inputs");
|
|
220
208
|
}
|
|
221
209
|
psbt = new PsbtV2();
|
|
222
|
-
|
|
210
|
+
return [4 /*yield*/, this.client.getMasterFingerprint()];
|
|
211
|
+
case 1:
|
|
212
|
+
masterFp = _a.sent();
|
|
213
|
+
accountType = accountTypeFromArg(arg, psbt, masterFp);
|
|
223
214
|
if (arg.lockTime) {
|
|
224
215
|
// The signer will assume locktime 0 if unset
|
|
225
216
|
psbt.setGlobalFallbackLocktime(arg.lockTime);
|
|
@@ -237,9 +228,6 @@ var BtcNew = /** @class */ (function () {
|
|
|
237
228
|
progress: ++notifyCount / (2 * inputCount)
|
|
238
229
|
});
|
|
239
230
|
};
|
|
240
|
-
return [4 /*yield*/, this.client.getMasterFingerprint()];
|
|
241
|
-
case 1:
|
|
242
|
-
masterFp = _a.sent();
|
|
243
231
|
accountXpub = "";
|
|
244
232
|
accountPath = [];
|
|
245
233
|
i = 0;
|
|
@@ -277,33 +265,20 @@ var BtcNew = /** @class */ (function () {
|
|
|
277
265
|
outputScript = outputsBufferReader.readVarSlice();
|
|
278
266
|
psbt.setOutputAmount(i, amount);
|
|
279
267
|
psbt.setOutputScript(i, outputScript);
|
|
280
|
-
isChange = changeData && outputScript.equals(changeData === null || changeData === void 0 ? void 0 : changeData.
|
|
268
|
+
isChange = changeData && outputScript.equals(changeData === null || changeData === void 0 ? void 0 : changeData.cond.scriptPubKey);
|
|
281
269
|
if (isChange) {
|
|
282
270
|
changeFound = true;
|
|
283
271
|
changePath = pathStringToArray(arg.changePath);
|
|
284
272
|
pubkey = changeData.pubkey;
|
|
285
|
-
|
|
286
|
-
psbt.setOutputBip32Derivation(i, pubkey, masterFp, changePath);
|
|
287
|
-
}
|
|
288
|
-
else if (accountType == AccountType.p2wpkh) {
|
|
289
|
-
psbt.setOutputBip32Derivation(i, pubkey, masterFp, changePath);
|
|
290
|
-
}
|
|
291
|
-
else if (accountType == AccountType.p2wpkhWrapped) {
|
|
292
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
293
|
-
psbt.setOutputRedeemScript(i, changeData.redeemScript);
|
|
294
|
-
psbt.setOutputBip32Derivation(i, pubkey, masterFp, changePath);
|
|
295
|
-
}
|
|
296
|
-
else if (accountType == AccountType.p2tr) {
|
|
297
|
-
psbt.setOutputTapBip32Derivation(i, pubkey, [], masterFp, changePath);
|
|
298
|
-
}
|
|
273
|
+
accountType.setOwnOutput(i, changeData.cond, [pubkey], [changePath]);
|
|
299
274
|
}
|
|
300
275
|
}
|
|
301
276
|
if (!changeFound) {
|
|
302
277
|
throw new Error("Change script not found among outputs! " +
|
|
303
|
-
(changeData === null || changeData === void 0 ? void 0 : changeData.
|
|
278
|
+
(changeData === null || changeData === void 0 ? void 0 : changeData.cond.scriptPubKey.toString("hex")));
|
|
304
279
|
}
|
|
305
280
|
key = createKey(masterFp, accountPath, accountXpub);
|
|
306
|
-
p = new WalletPolicy(accountType, key);
|
|
281
|
+
p = new WalletPolicy(accountType.getDescriptorTemplate(), key);
|
|
307
282
|
// This is cheating, because it's not actually requested on the
|
|
308
283
|
// device yet, but it will be, soonish.
|
|
309
284
|
if (arg.onDeviceSignatureRequested)
|
|
@@ -336,7 +311,7 @@ var BtcNew = /** @class */ (function () {
|
|
|
336
311
|
*/
|
|
337
312
|
BtcNew.prototype.outputScriptAt = function (accountPath, accountType, path) {
|
|
338
313
|
return __awaiter(this, void 0, void 0, function () {
|
|
339
|
-
var pathElems, i, xpub, pubkey,
|
|
314
|
+
var pathElems, i, xpub, pubkey, cond;
|
|
340
315
|
return __generator(this, function (_a) {
|
|
341
316
|
switch (_a.label) {
|
|
342
317
|
case 0:
|
|
@@ -354,11 +329,8 @@ var BtcNew = /** @class */ (function () {
|
|
|
354
329
|
case 1:
|
|
355
330
|
xpub = _a.sent();
|
|
356
331
|
pubkey = pubkeyFromXpub(xpub);
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
}
|
|
360
|
-
script = outputScriptOf(pubkey, accountType);
|
|
361
|
-
return [2 /*return*/, __assign(__assign({}, script), { pubkey: pubkey })];
|
|
332
|
+
cond = accountType.spendingCondition([pubkey]);
|
|
333
|
+
return [2 /*return*/, { cond: cond, pubkey: pubkey }];
|
|
362
334
|
}
|
|
363
335
|
});
|
|
364
336
|
});
|
|
@@ -370,13 +342,13 @@ var BtcNew = /** @class */ (function () {
|
|
|
370
342
|
*/
|
|
371
343
|
BtcNew.prototype.setInput = function (psbt, i, input, pathElements, accountType, masterFP, sigHashType) {
|
|
372
344
|
return __awaiter(this, void 0, void 0, function () {
|
|
373
|
-
var inputTx, spentOutputIndex, redeemScript, sequence, inputTxBuffer, inputTxid, xpubBase58, pubkey,
|
|
345
|
+
var inputTx, spentOutputIndex, redeemScript, sequence, inputTxBuffer, inputTxid, xpubBase58, pubkey, spentTxOutput, spendCondition, spentOutput;
|
|
374
346
|
return __generator(this, function (_a) {
|
|
375
347
|
switch (_a.label) {
|
|
376
348
|
case 0:
|
|
377
349
|
inputTx = input[0];
|
|
378
350
|
spentOutputIndex = input[1];
|
|
379
|
-
redeemScript = input[2];
|
|
351
|
+
redeemScript = input[2] ? Buffer.from(input[2], "hex") : undefined;
|
|
380
352
|
sequence = input[3];
|
|
381
353
|
if (sequence) {
|
|
382
354
|
psbt.setInputSequence(i, sequence);
|
|
@@ -392,33 +364,13 @@ var BtcNew = /** @class */ (function () {
|
|
|
392
364
|
pubkey = pubkeyFromXpub(xpubBase58);
|
|
393
365
|
if (!inputTx.outputs)
|
|
394
366
|
throw Error("Missing outputs array in transaction to sign");
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
psbt.setInputBip32Derivation(i, pubkey, masterFP, pathElements);
|
|
403
|
-
psbt.setInputWitnessUtxo(i, spentOutput.amount, spentOutput.script);
|
|
404
|
-
}
|
|
405
|
-
else if (accountType == AccountType.p2wpkhWrapped) {
|
|
406
|
-
psbt.setInputNonWitnessUtxo(i, inputTxBuffer);
|
|
407
|
-
psbt.setInputBip32Derivation(i, pubkey, masterFP, pathElements);
|
|
408
|
-
if (redeemScript) {
|
|
409
|
-
// At what point might a user set the redeemScript on its own?
|
|
410
|
-
psbt.setInputRedeemScript(i, Buffer.from(redeemScript, "hex"));
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
413
|
-
psbt.setInputRedeemScript(i, createRedeemScript(pubkey));
|
|
414
|
-
}
|
|
415
|
-
psbt.setInputWitnessUtxo(i, spentOutput.amount, spentOutput.script);
|
|
416
|
-
}
|
|
417
|
-
else if (accountType == AccountType.p2tr) {
|
|
418
|
-
xonly = pubkey.slice(1);
|
|
419
|
-
psbt.setInputTapBip32Derivation(i, xonly, [], masterFP, pathElements);
|
|
420
|
-
psbt.setInputWitnessUtxo(i, spentOutput.amount, spentOutput.script);
|
|
421
|
-
}
|
|
367
|
+
spentTxOutput = inputTx.outputs[spentOutputIndex];
|
|
368
|
+
spendCondition = {
|
|
369
|
+
scriptPubKey: spentTxOutput.script,
|
|
370
|
+
redeemScript: redeemScript
|
|
371
|
+
};
|
|
372
|
+
spentOutput = { cond: spendCondition, amount: spentTxOutput.amount };
|
|
373
|
+
accountType.setInput(i, inputTxBuffer, spentOutput, [pubkey], [pathElements]);
|
|
422
374
|
psbt.setInputPreviousTxId(i, inputTxid);
|
|
423
375
|
psbt.setInputOutputIndex(i, spentOutputIndex);
|
|
424
376
|
return [2 /*return*/];
|
|
@@ -469,105 +421,24 @@ var BtcNew = /** @class */ (function () {
|
|
|
469
421
|
return BtcNew;
|
|
470
422
|
}());
|
|
471
423
|
export default BtcNew;
|
|
472
|
-
|
|
473
|
-
(function (AccountType) {
|
|
474
|
-
AccountType["p2pkh"] = "pkh(@0)";
|
|
475
|
-
AccountType["p2wpkh"] = "wpkh(@0)";
|
|
476
|
-
AccountType["p2wpkhWrapped"] = "sh(wpkh(@0))";
|
|
477
|
-
AccountType["p2tr"] = "tr(@0)";
|
|
478
|
-
})(AccountType || (AccountType = {}));
|
|
479
|
-
function createRedeemScript(pubkey) {
|
|
480
|
-
var pubkeyHash = hashPublicKey(pubkey);
|
|
481
|
-
return Buffer.concat([Buffer.from("0014", "hex"), pubkeyHash]);
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* Generates a single signature scriptPubKey (output script) from a public key.
|
|
485
|
-
* This is done differently depending on account type.
|
|
486
|
-
*
|
|
487
|
-
* If accountType is p2tr, the public key must be a 32 byte x-only taproot
|
|
488
|
-
* pubkey, otherwise it's expected to be a 33 byte ecdsa compressed pubkey.
|
|
489
|
-
*/
|
|
490
|
-
function outputScriptOf(pubkey, accountType) {
|
|
491
|
-
var buf = new BufferWriter();
|
|
492
|
-
var pubkeyHash = hashPublicKey(pubkey);
|
|
493
|
-
var redeemScript;
|
|
494
|
-
if (accountType == AccountType.p2pkh) {
|
|
495
|
-
buf.writeSlice(Buffer.of(OP_DUP, OP_HASH160, HASH_SIZE));
|
|
496
|
-
buf.writeSlice(pubkeyHash);
|
|
497
|
-
buf.writeSlice(Buffer.of(OP_EQUALVERIFY, OP_CHECKSIG));
|
|
498
|
-
}
|
|
499
|
-
else if (accountType == AccountType.p2wpkhWrapped) {
|
|
500
|
-
redeemScript = createRedeemScript(pubkey);
|
|
501
|
-
var scriptHash = hashPublicKey(redeemScript);
|
|
502
|
-
buf.writeSlice(Buffer.of(OP_HASH160, HASH_SIZE));
|
|
503
|
-
buf.writeSlice(scriptHash);
|
|
504
|
-
buf.writeUInt8(OP_EQUAL);
|
|
505
|
-
}
|
|
506
|
-
else if (accountType == AccountType.p2wpkh) {
|
|
507
|
-
buf.writeSlice(Buffer.of(0, HASH_SIZE));
|
|
508
|
-
buf.writeSlice(pubkeyHash);
|
|
509
|
-
}
|
|
510
|
-
else if (accountType == AccountType.p2tr) {
|
|
511
|
-
var outputKey = getTaprootOutputKey(pubkey);
|
|
512
|
-
buf.writeSlice(Buffer.of(0x51, 32)); // push1, pubkeylen
|
|
513
|
-
buf.writeSlice(outputKey);
|
|
514
|
-
}
|
|
515
|
-
return { script: buf.buffer(), redeemScript: redeemScript };
|
|
516
|
-
}
|
|
517
|
-
function accountTypeFrom(addressFormat) {
|
|
424
|
+
function descrTemplFrom(addressFormat) {
|
|
518
425
|
if (addressFormat == "legacy")
|
|
519
|
-
return
|
|
426
|
+
return "pkh(@0)";
|
|
520
427
|
if (addressFormat == "p2sh")
|
|
521
|
-
return
|
|
428
|
+
return "sh(wpkh(@0))";
|
|
522
429
|
if (addressFormat == "bech32")
|
|
523
|
-
return
|
|
430
|
+
return "wpkh(@0)";
|
|
524
431
|
if (addressFormat == "bech32m")
|
|
525
|
-
return
|
|
432
|
+
return "tr(@0)";
|
|
526
433
|
throw new Error("Unsupported address format " + addressFormat);
|
|
527
434
|
}
|
|
528
|
-
function accountTypeFromArg(arg) {
|
|
435
|
+
function accountTypeFromArg(arg, psbt, masterFp) {
|
|
529
436
|
if (arg.additionals.includes("bech32m"))
|
|
530
|
-
return
|
|
437
|
+
return new p2tr(psbt, masterFp);
|
|
531
438
|
if (arg.additionals.includes("bech32"))
|
|
532
|
-
return
|
|
439
|
+
return new p2wpkh(psbt, masterFp);
|
|
533
440
|
if (arg.segwit)
|
|
534
|
-
return
|
|
535
|
-
return
|
|
536
|
-
}
|
|
537
|
-
/*
|
|
538
|
-
The following two functions are copied from wallet-btc and adapted.
|
|
539
|
-
They should be moved to a library to avoid code reuse.
|
|
540
|
-
*/
|
|
541
|
-
function hashTapTweak(x) {
|
|
542
|
-
// hash_tag(x) = SHA256(SHA256(tag) || SHA256(tag) || x), see BIP340
|
|
543
|
-
// See https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#specification
|
|
544
|
-
var h = crypto.sha256(Buffer.from("TapTweak", "utf-8"));
|
|
545
|
-
return crypto.sha256(Buffer.concat([h, h, x]));
|
|
546
|
-
}
|
|
547
|
-
/**
|
|
548
|
-
* Calculates a taproot output key from an internal key. This output key will be
|
|
549
|
-
* used as witness program in a taproot output. The internal key is tweaked
|
|
550
|
-
* according to recommendation in BIP341:
|
|
551
|
-
* https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite_ref-22-0
|
|
552
|
-
*
|
|
553
|
-
* @param internalPubkey A 32 byte x-only taproot internal key
|
|
554
|
-
* @returns The output key
|
|
555
|
-
*/
|
|
556
|
-
function getTaprootOutputKey(internalPubkey) {
|
|
557
|
-
if (internalPubkey.length != 32) {
|
|
558
|
-
throw new Error("Expected 32 byte pubkey. Got " + internalPubkey.length);
|
|
559
|
-
}
|
|
560
|
-
// A BIP32 derived key can be converted to a schnorr pubkey by dropping
|
|
561
|
-
// the first byte, which represent the oddness/evenness. In schnorr all
|
|
562
|
-
// pubkeys are even.
|
|
563
|
-
// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#public-key-conversion
|
|
564
|
-
var evenEcdsaPubkey = Buffer.concat([Buffer.of(0x02), internalPubkey]);
|
|
565
|
-
var tweak = hashTapTweak(internalPubkey);
|
|
566
|
-
// Q = P + int(hash_TapTweak(bytes(P)))G
|
|
567
|
-
var outputEcdsaKey = Buffer.from(pointAddScalar(evenEcdsaPubkey, tweak));
|
|
568
|
-
// Convert to schnorr.
|
|
569
|
-
var outputSchnorrKey = outputEcdsaKey.slice(1);
|
|
570
|
-
// Create address
|
|
571
|
-
return outputSchnorrKey;
|
|
441
|
+
return new p2wpkhWrapped(psbt, masterFp);
|
|
442
|
+
return new p2pkh(psbt, masterFp);
|
|
572
443
|
}
|
|
573
444
|
//# sourceMappingURL=BtcNew.js.map
|
package/lib-es/BtcNew.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BtcNew.js","sourceRoot":"","sources":["../src/BtcNew.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,SAAS,EACT,WAAW,EACX,MAAM,EACN,QAAQ,EACR,cAAc,EACd,UAAU,GACX,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,IAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAErD,MAAM,UAAU,aAAa,CAAC,aAA4B;IACxD,OAAO,CACL,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CACzC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH;IACE,gBAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,8BAAa,GAAnB,UAAoB,EAMnB;YALC,IAAI,UAAA,EACJ,WAAW,iBAAA;;;;;;wBAKL,YAAY,GAAa,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBAC1C,qBAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,EAAA;;wBAA/D,IAAI,GAAG,SAAwD;wBAC/D,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBAC/C,IAAI,cAAc,CAAC,OAAO,IAAI,WAAW,EAAE;4BACzC,MAAM,IAAI,KAAK,CACb,2BAAyB,WAAW,wDAAmD,cAAc,CAAC,OAAS,CAChH,CAAC;yBACH;wBACD,sBAAO,IAAI,EAAC;;;;KACb;IAED;;;;;;OAMG;IACG,mCAAkB,GAAxB,UACE,IAAY,EACZ,IAGC;;;;;;;wBAMK,YAAY,GAAa,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBAC1C,qBAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,EAAA;;wBAA/D,IAAI,GAAG,SAAwD;wBAE/D,OAAO,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,KAAK,CAAC;wBAEtB,qBAAM,IAAI,CAAC,gBAAgB,CACzC,YAAY,EACZ,eAAe,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,QAAQ,CAAC,EACzC,OAAO,CACR,EAAA;;wBAJK,OAAO,GAAG,SAIf;wBACK,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBACrC,kBAAkB,GAAG,MAAM,CAAC,IAAI,CACpC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CACxC,CAAC;wBACF,sBAAO;gCACL,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;gCAC7C,cAAc,EAAE,OAAO;gCACvB,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;6BAChD,EAAC;;;;KACH;IAED;;;;;;;;;;;;;;OAcG;IACW,iCAAgB,GAA9B,UACE,YAAsB,EACtB,WAAwB,EACxB,OAAgB;;;;;;wBAEV,WAAW,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;wBACjD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE;4BACjD,sBAAO,EAAE,EAAC;yBACX;wBACmB,qBAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,EAAA;;wBAArE,WAAW,GAAG,SAAuD;wBACjD,qBAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAA;;wBAA5D,iBAAiB,GAAG,SAAwC;wBAC5D,MAAM,GAAG,IAAI,YAAY,CAC7B,WAAW,EACX,SAAS,CAAC,iBAAiB,EAAE,WAAW,EAAE,WAAW,CAAC,CACvD,CAAC;wBACI,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;wBACnE,sBAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CACjC,MAAM,EACN,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EACnB,cAAc,CAAC,CAAC,CAAC,EACjB,cAAc,CAAC,CAAC,CAAC,EACjB,OAAO,CACR,EAAC;;;;KACH;IAED;;;;;;;OAOG;IACG,4CAA2B,GAAjC,UACE,GAAyB;;;;;;wBAEnB,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;wBACrC,IAAI,UAAU,IAAI,CAAC,EAAE;4BACnB,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;yBAC1B;wBACK,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;wBAEpB,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;wBAE5C,IAAI,GAAG,CAAC,QAAQ,EAAE;4BAChB,6CAA6C;4BAC7C,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;yBAC9C;wBACD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;wBACrC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;wBAC7B,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;wBAEvB,WAAW,GAAG,CAAC,CAAC;wBACd,QAAQ,GAAG;4BACf,IAAI,CAAC,GAAG,CAAC,iBAAiB;gCAAE,OAAO;4BACnC,GAAG,CAAC,iBAAiB,CAAC;gCACpB,KAAK,EAAE,CAAC,GAAG,UAAU;gCACrB,KAAK,EAAE,WAAW;gCAClB,QAAQ,EAAE,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;6BAC3C,CAAC,CAAC;wBACL,CAAC,CAAC;wBAIe,qBAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAA;;wBAAnD,QAAQ,GAAG,SAAwC;wBACrD,WAAW,GAAG,EAAE,CAAC;wBACjB,WAAW,GAAa,EAAE,CAAC;wBACtB,CAAC,GAAG,CAAC;;;6BAAE,CAAA,CAAC,GAAG,UAAU,CAAA;wBAC5B,QAAQ,EAAE,CAAC;wBACL,SAAS,GAAa,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;6BACpE,CAAA,WAAW,IAAI,EAAE,CAAA,EAAjB,wBAAiB;wBACnB,4DAA4D;wBAC5D,sDAAsD;wBACtD,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACvB,qBAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,EAAA;;wBAArE,WAAW,GAAG,SAAuD,CAAC;;4BAExE,qBAAM,IAAI,CAAC,QAAQ,CACjB,IAAI,EACJ,CAAC,EACD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EACb,SAAS,EACT,WAAW,EACX,QAAQ,EACR,GAAG,CAAC,WAAW,CAChB,EAAA;;wBARD,SAQC,CAAC;;;wBAjB4B,CAAC,EAAE,CAAA;;;wBAoB7B,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;wBACxD,mBAAmB,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;wBACtD,WAAW,GAAG,mBAAmB,CAAC,UAAU,EAAE,CAAC;wBACrD,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;wBACpB,qBAAM,IAAI,CAAC,cAAc,CAC1C,WAAW,EACX,WAAW,EACX,GAAG,CAAC,UAAU,CACf,EAAA;;wBAJK,UAAU,GAAG,SAIlB;wBAGG,WAAW,GAAG,CAAC,UAAU,CAAC;wBAC9B,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;4BAC9B,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC;4BAClD,YAAY,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC;4BACxD,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;4BAChC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;4BAKhC,QAAQ,GAAG,UAAU,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAC,CAAC;4BACvE,IAAI,QAAQ,EAAE;gCACZ,WAAW,GAAG,IAAI,CAAC;gCAEb,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAW,CAAC,CAAC;gCAChD,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;gCAEjC,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;oCACpC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;iCAChE;qCAAM,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;oCAC5C,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;iCAChE;qCAAM,IAAI,WAAW,IAAI,WAAW,CAAC,aAAa,EAAE;oCACnD,oEAAoE;oCACpE,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,UAAU,CAAC,YAAa,CAAC,CAAC;oCACxD,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;iCAChE;qCAAM,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE;oCAC1C,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;iCACvE;6BACF;yBACF;wBACD,IAAI,CAAC,WAAW,EAAE;4BAChB,MAAM,IAAI,KAAK,CACb,yCAAyC;iCACvC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,CACrC,CAAC;yBACH;wBAEK,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;wBACpD,CAAC,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;wBAC7C,+DAA+D;wBAC/D,uCAAuC;wBACvC,IAAI,GAAG,CAAC,0BAA0B;4BAAE,GAAG,CAAC,0BAA0B,EAAE,CAAC;wBAEjE,WAAW,GAAG,KAAK,CAAC;wBAElB,gBAAgB,GAAG;4BACvB,IAAI,CAAC,WAAW,EAAE;gCAChB,WAAW,GAAG,IAAI,CAAC;gCACnB,GAAG,CAAC,wBAAwB,IAAI,GAAG,CAAC,wBAAwB,EAAE,CAAC;6BAChE;4BACD,QAAQ,EAAE,CAAC;wBACb,CAAC,CAAC;wBAEF,qBAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,gBAAgB,CAAC,EAAA;;wBAA9C,SAA8C,CAAC;wBAC/C,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACT,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;wBACnC,sBAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAC;;;;KACrC;IAED;;;;;;;OAOG;IACW,+BAAc,GAA5B,UACE,WAAqB,EACrB,WAAwB,EACxB,IAAwB;;;;;;wBAIxB,IAAI,CAAC,IAAI;4BAAE,sBAAO,SAAS,EAAC;wBACtB,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBAC1C,0EAA0E;wBAC1E,YAAY;wBACZ,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC3C,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;gCAClC,MAAM,IAAI,KAAK,CACb,UAAQ,IAAI,wBAAmB,iBAAiB,CAAC,WAAW,CAAG,CAChE,CAAC;6BACH;yBACF;wBACY,qBAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAA;;wBAA5D,IAAI,GAAG,SAAqD;wBAC9D,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;wBAClC,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE;4BACnC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;yBAC1B;wBACK,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;wBACnD,4CAAY,MAAM,KAAE,MAAM,QAAA,KAAG;;;;KAC9B;IAED;;;;OAIG;IACW,yBAAQ,GAAtB,UACE,IAAY,EACZ,CAAS,EACT,KAKC,EACD,YAAsB,EACtB,WAAwB,EACxB,QAAgB,EAChB,WAAoB;;;;;;wBAEd,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBACnB,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBAG5B,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBACxB,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC1B,IAAI,QAAQ,EAAE;4BACZ,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;yBACpC;wBACD,IAAI,WAAW,EAAE;4BACf,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;yBAC1C;wBACK,aAAa,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;wBACpD,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;wBAC7B,qBAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,EAAA;;wBAArE,UAAU,GAAG,SAAwD;wBAErE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;wBAC1C,IAAI,CAAC,OAAO,CAAC,OAAO;4BAClB,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;wBACxD,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;wBAEtD,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;4BACpC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;4BAC9C,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;yBACjE;6BAAM,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;4BAC5C,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;4BAC9C,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;4BAChE,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;yBACrE;6BAAM,IAAI,WAAW,IAAI,WAAW,CAAC,aAAa,EAAE;4BACnD,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;4BAC9C,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;4BAChE,IAAI,YAAY,EAAE;gCAChB,8DAA8D;gCAC9D,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;6BAChE;iCAAM;gCACL,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;6BAC1D;4BACD,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;yBACrE;6BAAM,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE;4BACpC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4BAC9B,IAAI,CAAC,0BAA0B,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;4BACtE,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;yBACrE;wBAED,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;wBACxC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;;;;;KAC/C;IAED;;;;;;;;OAQG;IACW,yBAAQ,GAAtB,UACE,IAAY,EACZ,YAA0B,EAC1B,gBAA4B;;;;;4BAEM,qBAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAC1D,IAAI,EACJ,YAAY,EACZ,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EACnB,gBAAgB,CACjB,EAAA;;wBALK,IAAI,GAAwB,SAKjC;wBACD,IAAI,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC;4BAChB,uEAAuE;4BACvE,2DAA2D;4BAC3D,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;4BAClE,IAAI,MAAM,CAAC;4BACX,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;gCACvB,0DAA0D;gCAC1D,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;gCAC/D,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;oCACtB,MAAM,KAAK,CAAC,yCAAuC,CAAG,CAAC,CAAC;iCACzD;gCACD,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BAC9B;iCAAM;gCACL,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gCACpB,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;6BACvC;wBACH,CAAC,CAAC,CAAC;;;;;KACJ;IACH,aAAC;AAAD,CAAC,AAlZD,IAkZC;;AAED,IAAK,WAKJ;AALD,WAAK,WAAW;IACd,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;IACnB,6CAA8B,CAAA;IAC9B,8BAAe,CAAA;AACjB,CAAC,EALI,WAAW,KAAX,WAAW,QAKf;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,IAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,MAAc,EACd,WAAwB;IAExB,IAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;IAC/B,IAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,YAAgC,CAAC;IACrC,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;QACpC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QACzD,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC3B,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;KACxD;SAAM,IAAI,WAAW,IAAI,WAAW,CAAC,aAAa,EAAE;QACnD,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC/C,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC3B,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KAC1B;SAAM,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;QAC5C,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QACxC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;KAC5B;SAAM,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE;QAC1C,IAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC9C,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB;QACxD,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KAC3B;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,cAAA,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,aAA4B;IACnD,IAAI,aAAa,IAAI,QAAQ;QAAE,OAAO,WAAW,CAAC,KAAK,CAAC;IACxD,IAAI,aAAa,IAAI,MAAM;QAAE,OAAO,WAAW,CAAC,aAAa,CAAC;IAC9D,IAAI,aAAa,IAAI,QAAQ;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC;IACzD,IAAI,aAAa,IAAI,SAAS;QAAE,OAAO,WAAW,CAAC,IAAI,CAAC;IACxD,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,aAAa,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAyB;IACnD,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,WAAW,CAAC,IAAI,CAAC;IACjE,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC;IAClE,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC,aAAa,CAAC;IACjD,OAAO,WAAW,CAAC,KAAK,CAAC;AAC3B,CAAC;AAED;;;EAGE;AACF,SAAS,YAAY,CAAC,CAAS;IAC7B,oEAAoE;IACpE,mFAAmF;IACnF,IAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,cAAsB;IACjD,IAAI,cAAc,CAAC,MAAM,IAAI,EAAE,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;KAC1E;IACD,uEAAuE;IACvE,uEAAuE;IACvE,oBAAoB;IACpB,uFAAuF;IACvF,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IACzE,IAAM,KAAK,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IAE3C,wCAAwC;IACxC,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3E,sBAAsB;IACtB,IAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,iBAAiB;IACjB,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"BtcNew.js","sourceRoot":"","sources":["../src/BtcNew.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { DefaultDescriptorTemplate } from "./policy";
|
|
3
|
+
import { PsbtV2 } from "./psbtv2";
|
|
4
|
+
export declare type SpendingCondition = {
|
|
5
|
+
scriptPubKey: Buffer;
|
|
6
|
+
redeemScript?: Buffer;
|
|
7
|
+
};
|
|
8
|
+
export declare type SpentOutput = {
|
|
9
|
+
cond: SpendingCondition;
|
|
10
|
+
amount: Buffer;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Encapsulates differences between account types, for example p2wpkh,
|
|
14
|
+
* p2wpkhWrapped, p2tr.
|
|
15
|
+
*/
|
|
16
|
+
export interface AccountType {
|
|
17
|
+
/**
|
|
18
|
+
* Generates a scriptPubKey (output script) from a list of public keys. If a
|
|
19
|
+
* p2sh redeemScript or a p2wsh witnessScript is needed it will also be set on
|
|
20
|
+
* the returned SpendingCondition.
|
|
21
|
+
*
|
|
22
|
+
* The pubkeys are expected to be 33 byte ecdsa compressed pubkeys.
|
|
23
|
+
*/
|
|
24
|
+
spendingCondition(pubkeys: Buffer[]): SpendingCondition;
|
|
25
|
+
/**
|
|
26
|
+
* Populates the psbt with account type-specific data for an input.
|
|
27
|
+
* @param i The index of the input map to populate
|
|
28
|
+
* @param inputTx The full transaction containing the spent output. This may
|
|
29
|
+
* be omitted for taproot.
|
|
30
|
+
* @param spentOutput The amount and spending condition of the spent output
|
|
31
|
+
* @param pubkeys The 33 byte ecdsa compressed public keys involved in the input
|
|
32
|
+
* @param pathElems The paths corresponding to the pubkeys, in same order.
|
|
33
|
+
*/
|
|
34
|
+
setInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkeys: Buffer[], pathElems: number[][]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Populates the psbt with account type-specific data for an output. This is typically
|
|
37
|
+
* done for change outputs and other outputs that goes to the same account as
|
|
38
|
+
* being spent from.
|
|
39
|
+
* @param i The index of the output map to populate
|
|
40
|
+
* @param cond The spending condition for this output
|
|
41
|
+
* @param pubkeys The 33 byte ecdsa compressed public keys involved in this output
|
|
42
|
+
* @param paths The paths corresponding to the pubkeys, in same order.
|
|
43
|
+
*/
|
|
44
|
+
setOwnOutput(i: number, cond: SpendingCondition, pubkeys: Buffer[], paths: number[][]): void;
|
|
45
|
+
/**
|
|
46
|
+
* Returns the descriptor template for this account type. Currently only
|
|
47
|
+
* DefaultDescriptorTemplates are allowed, but that might be changed in the
|
|
48
|
+
* future. See class WalletPolicy for more information on descriptor
|
|
49
|
+
* templates.
|
|
50
|
+
*/
|
|
51
|
+
getDescriptorTemplate(): DefaultDescriptorTemplate;
|
|
52
|
+
}
|
|
53
|
+
interface BaseAccount extends AccountType {
|
|
54
|
+
}
|
|
55
|
+
declare abstract class BaseAccount implements AccountType {
|
|
56
|
+
protected psbt: PsbtV2;
|
|
57
|
+
protected masterFp: Buffer;
|
|
58
|
+
constructor(psbt: PsbtV2, masterFp: Buffer);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Superclass for single signature accounts. This will make sure that the pubkey
|
|
62
|
+
* arrays and path arrays in the method arguments contains exactly one element
|
|
63
|
+
* and calls an abstract method to do the actual work.
|
|
64
|
+
*/
|
|
65
|
+
declare abstract class SingleKeyAccount extends BaseAccount {
|
|
66
|
+
spendingCondition(pubkeys: Buffer[]): SpendingCondition;
|
|
67
|
+
protected abstract singleKeyCondition(pubkey: Buffer): SpendingCondition;
|
|
68
|
+
setInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkeys: Buffer[], pathElems: number[][]): void;
|
|
69
|
+
protected abstract setSingleKeyInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkey: Buffer, path: number[]): any;
|
|
70
|
+
setOwnOutput(i: number, cond: SpendingCondition, pubkeys: Buffer[], paths: number[][]): void;
|
|
71
|
+
protected abstract setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): any;
|
|
72
|
+
}
|
|
73
|
+
export declare class p2pkh extends SingleKeyAccount {
|
|
74
|
+
singleKeyCondition(pubkey: Buffer): SpendingCondition;
|
|
75
|
+
setSingleKeyInput(i: number, inputTx: Buffer | undefined, _spentOutput: SpentOutput, pubkey: Buffer, path: number[]): void;
|
|
76
|
+
setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): void;
|
|
77
|
+
getDescriptorTemplate(): DefaultDescriptorTemplate;
|
|
78
|
+
}
|
|
79
|
+
export declare class p2tr extends SingleKeyAccount {
|
|
80
|
+
singleKeyCondition(pubkey: Buffer): SpendingCondition;
|
|
81
|
+
setSingleKeyInput(i: number, _inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkey: Buffer, path: number[]): void;
|
|
82
|
+
setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): void;
|
|
83
|
+
getDescriptorTemplate(): DefaultDescriptorTemplate;
|
|
84
|
+
private hashTapTweak;
|
|
85
|
+
/**
|
|
86
|
+
* Calculates a taproot output key from an internal key. This output key will be
|
|
87
|
+
* used as witness program in a taproot output. The internal key is tweaked
|
|
88
|
+
* according to recommendation in BIP341:
|
|
89
|
+
* https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite_ref-22-0
|
|
90
|
+
*
|
|
91
|
+
* @param internalPubkey A 32 byte x-only taproot internal key
|
|
92
|
+
* @returns The output key
|
|
93
|
+
*/
|
|
94
|
+
getTaprootOutputKey(internalPubkey: Buffer): Buffer;
|
|
95
|
+
}
|
|
96
|
+
export declare class p2wpkhWrapped extends SingleKeyAccount {
|
|
97
|
+
singleKeyCondition(pubkey: Buffer): SpendingCondition;
|
|
98
|
+
setSingleKeyInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkey: Buffer, path: number[]): void;
|
|
99
|
+
setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): void;
|
|
100
|
+
getDescriptorTemplate(): DefaultDescriptorTemplate;
|
|
101
|
+
private createRedeemScript;
|
|
102
|
+
}
|
|
103
|
+
export declare class p2wpkh extends SingleKeyAccount {
|
|
104
|
+
singleKeyCondition(pubkey: Buffer): SpendingCondition;
|
|
105
|
+
setSingleKeyInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkey: Buffer, path: number[]): void;
|
|
106
|
+
setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): void;
|
|
107
|
+
getDescriptorTemplate(): DefaultDescriptorTemplate;
|
|
108
|
+
}
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=accounttype.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounttype.d.ts","sourceRoot":"","sources":["../../src/newops/accounttype.ts"],"names":[],"mappings":"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"}
|