@shapeshiftoss/hdwallet-ledger 1.55.4-alpha.1 → 1.55.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bitcoin.js CHANGED
@@ -1,75 +1,132 @@
1
- import * as core from "@shapeshiftoss/hdwallet-core";
2
- import Base64 from "base64-js";
3
- import * as bchAddr from "bchaddrjs";
4
- import * as bitcoin from "bitcoinjs-lib";
5
- import * as bitcoinMsg from "bitcoinjs-message";
6
- import _ from "lodash";
7
- import { currencies } from "./currencies";
8
- import { handleError, networksUtil, translateScriptType } from "./utils";
9
- import { convertXpubVersion, scriptTypeToAccountType } from "./utxoUtils";
10
- export const supportedCoins = ["Testnet", "Bitcoin", "BitcoinCash", "Litecoin", "Dash", "DigiByte", "Dogecoin"];
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.supportedCoins = void 0;
39
+ exports.btcSupportsCoin = btcSupportsCoin;
40
+ exports.btcSupportsScriptType = btcSupportsScriptType;
41
+ exports.btcGetAddress = btcGetAddress;
42
+ exports.btcGetPublicKeys = btcGetPublicKeys;
43
+ exports.btcSignTx = btcSignTx;
44
+ exports.btcSupportsSecureTransfer = btcSupportsSecureTransfer;
45
+ exports.btcSupportsNativeShapeShift = btcSupportsNativeShapeShift;
46
+ exports.btcSignMessage = btcSignMessage;
47
+ exports.btcVerifyMessage = btcVerifyMessage;
48
+ exports.btcGetAccountPaths = btcGetAccountPaths;
49
+ exports.btcIsSameAccount = btcIsSameAccount;
50
+ const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
51
+ const base64_js_1 = __importDefault(require("base64-js"));
52
+ const bchAddr = __importStar(require("bchaddrjs"));
53
+ const bitcoin = __importStar(require("bitcoinjs-lib"));
54
+ const bitcoinMsg = __importStar(require("bitcoinjs-message"));
55
+ const lodash_1 = __importDefault(require("lodash"));
56
+ const currencies_1 = require("./currencies");
57
+ const utils_1 = require("./utils");
58
+ const utxoUtils_1 = require("./utxoUtils");
59
+ exports.supportedCoins = ["Testnet", "Bitcoin", "BitcoinCash", "Litecoin", "Dash", "DigiByte", "Dogecoin"];
11
60
  const segwitCoins = ["Bitcoin", "DigiByte", "Litecoin", "BitcoinGold", "Testnet"];
12
- export async function btcSupportsCoin(coin) {
13
- return supportedCoins.includes(coin);
61
+ function btcSupportsCoin(coin) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ return exports.supportedCoins.includes(coin);
64
+ });
14
65
  }
15
- export async function btcSupportsScriptType(coin, scriptType) {
16
- const supported = {
17
- Bitcoin: [
18
- core.BTCInputScriptType.SpendAddress,
19
- core.BTCInputScriptType.SpendWitness,
20
- core.BTCInputScriptType.SpendP2SHWitness,
21
- ],
22
- BitcoinCash: [core.BTCInputScriptType.SpendAddress],
23
- };
24
- const scriptTypes = supported[coin];
25
- return !!scriptTypes && !!scriptType && scriptTypes.includes(scriptType);
66
+ function btcSupportsScriptType(coin, scriptType) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ const supported = {
69
+ Bitcoin: [
70
+ core.BTCInputScriptType.SpendAddress,
71
+ core.BTCInputScriptType.SpendWitness,
72
+ core.BTCInputScriptType.SpendP2SHWitness,
73
+ ],
74
+ BitcoinCash: [core.BTCInputScriptType.SpendAddress],
75
+ };
76
+ const scriptTypes = supported[coin];
77
+ return !!scriptTypes && !!scriptType && scriptTypes.includes(scriptType);
78
+ });
26
79
  }
27
- export async function btcGetAddress(transport, msg) {
28
- const bip32path = core.addressNListToBIP32(msg.addressNList);
29
- const scriptTypeish = (() => {
30
- if (msg.coin === "BitcoinCash")
31
- return core.BTCInputScriptType.CashAddr;
32
- if (msg.scriptType)
33
- return msg.scriptType;
34
- return core.BTCInputScriptType.SpendAddress;
35
- })();
36
- const opts = {
37
- verify: !!msg.showDisplay,
38
- format: translateScriptType(scriptTypeish),
39
- };
40
- const res = await transport.call("Btc", "getWalletPublicKey", bip32path, opts);
41
- handleError(res, transport, "Unable to obtain BTC address from device");
42
- const address = res.payload.bitcoinAddress;
43
- return msg.coin.toLowerCase() === "bitcoincash" ? bchAddr.toCashAddress(address) : address;
80
+ function btcGetAddress(transport, msg) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ const bip32path = core.addressNListToBIP32(msg.addressNList);
83
+ const scriptTypeish = (() => {
84
+ if (msg.coin === "BitcoinCash")
85
+ return core.BTCInputScriptType.CashAddr;
86
+ if (msg.scriptType)
87
+ return msg.scriptType;
88
+ return core.BTCInputScriptType.SpendAddress;
89
+ })();
90
+ const opts = {
91
+ verify: !!msg.showDisplay,
92
+ format: (0, utils_1.translateScriptType)(scriptTypeish),
93
+ };
94
+ const res = yield transport.call("Btc", "getWalletPublicKey", bip32path, opts);
95
+ (0, utils_1.handleError)(res, transport, "Unable to obtain BTC address from device");
96
+ const address = res.payload.bitcoinAddress;
97
+ return msg.coin.toLowerCase() === "bitcoincash" ? bchAddr.toCashAddress(address) : address;
98
+ });
44
99
  }
45
100
  // Adapted from https://github.com/LedgerHQ/ledger-wallet-webtool
46
- export async function btcGetPublicKeys(transport, msg) {
47
- const xpubs = [];
48
- for (const getPublicKey of msg) {
49
- const { addressNList, coin } = getPublicKey;
50
- if (!coin)
51
- throw new Error("coin is required");
52
- if (!getPublicKey.scriptType)
53
- throw new Error("scriptType is required");
54
- const parentBip32path = core.addressNListToBIP32(addressNList);
55
- const getWalletXpubResponse = await transport.call("Btc", "getWalletXpub", {
56
- path: parentBip32path,
57
- xpubVersion: currencies[getPublicKey.coin].xpubVersion,
58
- });
59
- handleError(getWalletXpubResponse, transport, "Unable to obtain public key from device.");
60
- const { payload: _xpub } = getWalletXpubResponse;
61
- // Ledger returns
62
- // - LTC pubkeys in Ltub format for all scriptTypes.
63
- // - BTC pubkeys in xpub format for all scriptTypes
64
- // - Doge pubkeys in xpub format instead of dgub
65
- // They *are* the correct accounts, but not in the format we want.
66
- // We need to convert SegWit pubkeys to Mtubs/ypubs, and SegWit native to zpubs, and Doge xpubs to dgubs.
67
- const xpub = convertXpubVersion(_xpub, scriptTypeToAccountType[getPublicKey.scriptType], getPublicKey.coin);
68
- xpubs.push({
69
- xpub,
70
- });
71
- }
72
- return xpubs;
101
+ function btcGetPublicKeys(transport, msg) {
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ const xpubs = [];
104
+ for (const getPublicKey of msg) {
105
+ const { addressNList, coin } = getPublicKey;
106
+ if (!coin)
107
+ throw new Error("coin is required");
108
+ if (!getPublicKey.scriptType)
109
+ throw new Error("scriptType is required");
110
+ const parentBip32path = core.addressNListToBIP32(addressNList);
111
+ const getWalletXpubResponse = yield transport.call("Btc", "getWalletXpub", {
112
+ path: parentBip32path,
113
+ xpubVersion: currencies_1.currencies[getPublicKey.coin].xpubVersion,
114
+ });
115
+ (0, utils_1.handleError)(getWalletXpubResponse, transport, "Unable to obtain public key from device.");
116
+ const { payload: _xpub } = getWalletXpubResponse;
117
+ // Ledger returns
118
+ // - LTC pubkeys in Ltub format for all scriptTypes.
119
+ // - BTC pubkeys in xpub format for all scriptTypes
120
+ // - Doge pubkeys in xpub format instead of dgub
121
+ // They *are* the correct accounts, but not in the format we want.
122
+ // We need to convert SegWit pubkeys to Mtubs/ypubs, and SegWit native to zpubs, and Doge xpubs to dgubs.
123
+ const xpub = (0, utxoUtils_1.convertXpubVersion)(_xpub, utxoUtils_1.scriptTypeToAccountType[getPublicKey.scriptType], getPublicKey.coin);
124
+ xpubs.push({
125
+ xpub,
126
+ });
127
+ }
128
+ return xpubs;
129
+ });
73
130
  }
74
131
  /*
75
132
  Sign Transaction UTXO's
@@ -112,126 +169,135 @@ Parameters
112
169
  * expiryHeight is an optional Buffer for zec overwinter / sapling Txs
113
170
  * useTrustedInputForSegwit trust inputs for segwit transactions
114
171
  */
115
- export async function btcSignTx(wallet, transport, msg) {
116
- const supportsSecureTransfer = await wallet.btcSupportsSecureTransfer();
117
- const slip44 = core.mustBeDefined(core.slip44ByCoin(msg.coin));
118
- const txBuilder = new bitcoin.TransactionBuilder(networksUtil[slip44].bitcoinjs);
119
- const indexes = [];
120
- const txs = [];
121
- const associatedKeysets = [];
122
- let segwit = false;
123
- for (const output of msg.outputs) {
124
- let outputAddress;
125
- if (output.addressNList !== undefined && output.isChange) {
126
- const maybeOutputAddress = await wallet.btcGetAddress({
127
- addressNList: output.addressNList,
128
- scriptType: output.scriptType,
129
- coin: msg.coin,
130
- });
131
- if (!maybeOutputAddress)
132
- throw new Error("could not determine output address from addressNList");
133
- outputAddress = maybeOutputAddress;
172
+ function btcSignTx(wallet, transport, msg) {
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ const supportsSecureTransfer = yield wallet.btcSupportsSecureTransfer();
175
+ const slip44 = core.mustBeDefined(core.slip44ByCoin(msg.coin));
176
+ const txBuilder = new bitcoin.TransactionBuilder(utils_1.networksUtil[slip44].bitcoinjs);
177
+ const indexes = [];
178
+ const txs = [];
179
+ const associatedKeysets = [];
180
+ let segwit = false;
181
+ for (const output of msg.outputs) {
182
+ let outputAddress;
183
+ if (output.addressNList !== undefined && output.isChange) {
184
+ const maybeOutputAddress = yield wallet.btcGetAddress({
185
+ addressNList: output.addressNList,
186
+ scriptType: output.scriptType,
187
+ coin: msg.coin,
188
+ });
189
+ if (!maybeOutputAddress)
190
+ throw new Error("could not determine output address from addressNList");
191
+ outputAddress = maybeOutputAddress;
192
+ }
193
+ else if (output.addressNList !== undefined &&
194
+ output.addressType === core.BTCOutputAddressType.Transfer &&
195
+ !supportsSecureTransfer) {
196
+ throw new Error("Ledger does not support SecureTransfer");
197
+ }
198
+ else if (output.address !== undefined) {
199
+ outputAddress = output.address;
200
+ }
201
+ else {
202
+ throw new Error("could not determine output address");
203
+ }
204
+ if (msg.coin === "BitcoinCash" && bchAddr.isCashAddress(outputAddress)) {
205
+ outputAddress = bchAddr.toLegacyAddress(outputAddress);
206
+ }
207
+ txBuilder.addOutput(outputAddress, Number(output.amount));
134
208
  }
135
- else if (output.addressNList !== undefined &&
136
- output.addressType === core.BTCOutputAddressType.Transfer &&
137
- !supportsSecureTransfer) {
138
- throw new Error("Ledger does not support SecureTransfer");
209
+ if (msg.opReturnData) {
210
+ if (msg.opReturnData.length > 80) {
211
+ throw new Error("OP_RETURN data must be less than 80 chars.");
212
+ }
213
+ const ret = bitcoin.script.compile([bitcoin.opcodes.OP_RETURN, Buffer.from(msg.opReturnData)]);
214
+ txBuilder.addOutput(ret, 0);
139
215
  }
140
- else if (output.address !== undefined) {
141
- outputAddress = output.address;
216
+ const unsignedHex = txBuilder.buildIncomplete().toHex();
217
+ const splitTxRes = yield transport.call("Btc", "splitTransaction", unsignedHex);
218
+ (0, utils_1.handleError)(splitTxRes, transport, "splitTransaction failed");
219
+ const outputScriptRes = yield transport.call("Btc", "serializeTransactionOutputs", splitTxRes.payload);
220
+ (0, utils_1.handleError)(outputScriptRes, transport, "serializeTransactionOutputs failed");
221
+ const outputScriptHex = outputScriptRes.payload.toString("hex");
222
+ for (let i = 0; i < msg.inputs.length; i++) {
223
+ if (msg.inputs[i].scriptType === core.BTCInputScriptType.SpendWitness ||
224
+ msg.inputs[i].scriptType === core.BTCInputScriptType.SpendP2SHWitness)
225
+ segwit = true;
226
+ const keySet = core.addressNListToBIP32(msg.inputs[i].addressNList).replace(/^m\//, "");
227
+ const vout = msg.inputs[i].vout;
228
+ const tx = yield transport.call("Btc", "splitTransaction", msg.inputs[i].hex, utils_1.networksUtil[slip44].isSegwitSupported, utils_1.networksUtil[slip44].areTransactionTimestamped);
229
+ (0, utils_1.handleError)(tx, transport, "splitTransaction failed");
230
+ indexes.push(vout);
231
+ txs.push(tx.payload);
232
+ associatedKeysets.push(keySet);
142
233
  }
143
- else {
144
- throw new Error("could not determine output address");
234
+ if (txs.length !== indexes.length)
235
+ throw new Error("tx/index array length mismatch");
236
+ const inputs = lodash_1.default.zip(txs, indexes, [], []);
237
+ const txArgs = {
238
+ inputs,
239
+ associatedKeysets,
240
+ outputScriptHex,
241
+ additionals: (() => {
242
+ if (msg.coin === "BitcoinCash")
243
+ return ["abc"];
244
+ if (msg.inputs.some((input) => input.scriptType === core.BTCInputScriptType.SpendWitness))
245
+ return ["bech32"];
246
+ return [];
247
+ })(),
248
+ segwit,
249
+ useTrustedInputForSegwit: Boolean(segwit),
250
+ };
251
+ // "invalid data received" error from Ledger if not done this way:
252
+ if (utils_1.networksUtil[slip44].sigHash) {
253
+ txArgs.sigHashType = utils_1.networksUtil[slip44].sigHash;
145
254
  }
146
- if (msg.coin === "BitcoinCash" && bchAddr.isCashAddress(outputAddress)) {
147
- outputAddress = bchAddr.toLegacyAddress(outputAddress);
148
- }
149
- txBuilder.addOutput(outputAddress, Number(output.amount));
150
- }
151
- if (msg.opReturnData) {
152
- if (msg.opReturnData.length > 80) {
153
- throw new Error("OP_RETURN data must be less than 80 chars.");
154
- }
155
- const ret = bitcoin.script.compile([bitcoin.opcodes.OP_RETURN, Buffer.from(msg.opReturnData)]);
156
- txBuilder.addOutput(ret, 0);
157
- }
158
- const unsignedHex = txBuilder.buildIncomplete().toHex();
159
- const splitTxRes = await transport.call("Btc", "splitTransaction", unsignedHex);
160
- handleError(splitTxRes, transport, "splitTransaction failed");
161
- const outputScriptRes = await transport.call("Btc", "serializeTransactionOutputs", splitTxRes.payload);
162
- handleError(outputScriptRes, transport, "serializeTransactionOutputs failed");
163
- const outputScriptHex = outputScriptRes.payload.toString("hex");
164
- for (let i = 0; i < msg.inputs.length; i++) {
165
- if (msg.inputs[i].scriptType === core.BTCInputScriptType.SpendWitness ||
166
- msg.inputs[i].scriptType === core.BTCInputScriptType.SpendP2SHWitness)
167
- segwit = true;
168
- const keySet = core.addressNListToBIP32(msg.inputs[i].addressNList).replace(/^m\//, "");
169
- const vout = msg.inputs[i].vout;
170
- const tx = await transport.call("Btc", "splitTransaction", msg.inputs[i].hex, networksUtil[slip44].isSegwitSupported, networksUtil[slip44].areTransactionTimestamped);
171
- handleError(tx, transport, "splitTransaction failed");
172
- indexes.push(vout);
173
- txs.push(tx.payload);
174
- associatedKeysets.push(keySet);
175
- }
176
- if (txs.length !== indexes.length)
177
- throw new Error("tx/index array length mismatch");
178
- const inputs = _.zip(txs, indexes, [], []);
179
- const txArgs = {
180
- inputs,
181
- associatedKeysets,
182
- outputScriptHex,
183
- additionals: (() => {
184
- if (msg.coin === "BitcoinCash")
185
- return ["abc"];
186
- if (msg.inputs.some((input) => input.scriptType === core.BTCInputScriptType.SpendWitness))
187
- return ["bech32"];
188
- return [];
189
- })(),
190
- segwit,
191
- useTrustedInputForSegwit: Boolean(segwit),
192
- };
193
- // "invalid data received" error from Ledger if not done this way:
194
- if (networksUtil[slip44].sigHash) {
195
- txArgs.sigHashType = networksUtil[slip44].sigHash;
196
- }
197
- const signedTx = await transport.call("Btc", "createPaymentTransaction", txArgs);
198
- handleError(signedTx, transport, "Could not sign transaction with device");
199
- return {
200
- serializedTx: signedTx.payload,
201
- signatures: [],
202
- };
255
+ const signedTx = yield transport.call("Btc", "createPaymentTransaction", txArgs);
256
+ (0, utils_1.handleError)(signedTx, transport, "Could not sign transaction with device");
257
+ return {
258
+ serializedTx: signedTx.payload,
259
+ signatures: [],
260
+ };
261
+ });
203
262
  }
204
- export async function btcSupportsSecureTransfer() {
205
- return false;
263
+ function btcSupportsSecureTransfer() {
264
+ return __awaiter(this, void 0, void 0, function* () {
265
+ return false;
266
+ });
206
267
  }
207
- export function btcSupportsNativeShapeShift() {
268
+ function btcSupportsNativeShapeShift() {
208
269
  return false;
209
270
  }
210
- export async function btcSignMessage(wallet, transport, msg) {
211
- const bip32path = core.addressNListToBIP32(msg.addressNList);
212
- const res = await transport.call("Btc", "signMessage", bip32path, Buffer.from(msg.message).toString("hex"));
213
- handleError(res, transport, "Could not sign message with device");
214
- const v = res.payload["v"] + 27 + 4;
215
- const signature = Buffer.from(v.toString(16) + res.payload["r"] + res.payload["s"], "hex").toString("hex");
216
- const coin = msg.coin;
217
- if (!coin)
218
- throw new Error("could not determine type of coin");
219
- const address = await btcGetAddress(transport, {
220
- addressNList: msg.addressNList,
221
- coin,
222
- showDisplay: false,
223
- scriptType: msg.scriptType ?? core.BTCInputScriptType.SpendAddress,
271
+ function btcSignMessage(wallet, transport, msg) {
272
+ return __awaiter(this, void 0, void 0, function* () {
273
+ var _a;
274
+ const bip32path = core.addressNListToBIP32(msg.addressNList);
275
+ const res = yield transport.call("Btc", "signMessage", bip32path, Buffer.from(msg.message).toString("hex"));
276
+ (0, utils_1.handleError)(res, transport, "Could not sign message with device");
277
+ const v = res.payload["v"] + 27 + 4;
278
+ const signature = Buffer.from(v.toString(16) + res.payload["r"] + res.payload["s"], "hex").toString("hex");
279
+ const coin = msg.coin;
280
+ if (!coin)
281
+ throw new Error("could not determine type of coin");
282
+ const address = yield btcGetAddress(transport, {
283
+ addressNList: msg.addressNList,
284
+ coin,
285
+ showDisplay: false,
286
+ scriptType: (_a = msg.scriptType) !== null && _a !== void 0 ? _a : core.BTCInputScriptType.SpendAddress,
287
+ });
288
+ return {
289
+ address,
290
+ signature,
291
+ };
224
292
  });
225
- return {
226
- address,
227
- signature,
228
- };
229
293
  }
230
- export async function btcVerifyMessage(msg) {
231
- const signature = Base64.fromByteArray(core.fromHexString(msg.signature));
232
- return bitcoinMsg.verify(msg.message, msg.address, signature);
294
+ function btcVerifyMessage(msg) {
295
+ return __awaiter(this, void 0, void 0, function* () {
296
+ const signature = base64_js_1.default.fromByteArray(core.fromHexString(msg.signature));
297
+ return bitcoinMsg.verify(msg.message, msg.address, signature);
298
+ });
233
299
  }
234
- export function btcGetAccountPaths(msg) {
300
+ function btcGetAccountPaths(msg) {
235
301
  const slip44 = core.slip44ByCoin(msg.coin);
236
302
  if (slip44 === undefined)
237
303
  return [];
@@ -262,7 +328,7 @@ export function btcGetAccountPaths(msg) {
262
328
  return paths;
263
329
  }
264
330
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
265
- export function btcIsSameAccount(msg) {
331
+ function btcIsSameAccount(msg) {
266
332
  // TODO: There's no way this is correct.
267
333
  return true;
268
334
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../src/bitcoin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../src/bitcoin.ts"],"names":[],"mappings":"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"}