@did-btcr2/method 0.48.0 → 0.50.0
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/.tsbuildinfo +1 -1
- package/dist/browser.js +58 -72
- package/dist/browser.mjs +58 -72
- package/dist/cjs/index.js +61 -73
- package/dist/esm/core/beacon/beacon.js +74 -8
- package/dist/esm/core/beacon/beacon.js.map +1 -1
- package/dist/esm/core/identifier.js +68 -130
- package/dist/esm/core/identifier.js.map +1 -1
- package/dist/types/core/beacon/beacon.d.ts +44 -0
- package/dist/types/core/beacon/beacon.d.ts.map +1 -1
- package/dist/types/core/identifier.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/core/beacon/beacon.ts +82 -12
- package/src/core/identifier.ts +77 -149
package/dist/browser.mjs
CHANGED
|
@@ -20138,23 +20138,37 @@ function changeOutputKind(changeAddress, network) {
|
|
|
20138
20138
|
function opReturnScript(signalBytes) {
|
|
20139
20139
|
return Script.encode(["RETURN", signalBytes]);
|
|
20140
20140
|
}
|
|
20141
|
-
|
|
20142
|
-
|
|
20141
|
+
var SPENDABLE_DUST_LIMIT_SATS = 546;
|
|
20142
|
+
function byDepthThenId(a, b) {
|
|
20143
|
+
if (a.status.block_height !== b.status.block_height) {
|
|
20144
|
+
return a.status.block_height - b.status.block_height;
|
|
20145
|
+
}
|
|
20146
|
+
const txidOrder = a.txid.localeCompare(b.txid);
|
|
20147
|
+
return txidOrder !== 0 ? txidOrder : a.vout - b.vout;
|
|
20148
|
+
}
|
|
20149
|
+
function selectSpendableUtxo(utxos, address) {
|
|
20143
20150
|
if (!utxos.length) {
|
|
20144
20151
|
throw new BeaconError(
|
|
20145
20152
|
"No UTXOs found, please fund address!",
|
|
20146
20153
|
"UNFUNDED_BEACON_ADDRESS",
|
|
20147
|
-
{ address
|
|
20154
|
+
{ address }
|
|
20148
20155
|
);
|
|
20149
20156
|
}
|
|
20150
|
-
const
|
|
20151
|
-
|
|
20157
|
+
const confirmed = utxos.filter((utxo) => utxo.status.confirmed === true);
|
|
20158
|
+
const spendable = confirmed.filter((utxo) => utxo.value > SPENDABLE_DUST_LIMIT_SATS);
|
|
20159
|
+
if (!spendable.length) {
|
|
20160
|
+
const reason = confirmed.length === 0 ? `all ${utxos.length} UTXO(s) are unconfirmed` : `all ${confirmed.length} confirmed UTXO(s) are at or below the ${SPENDABLE_DUST_LIMIT_SATS}-sat dust limit`;
|
|
20152
20161
|
throw new BeaconError(
|
|
20153
|
-
|
|
20154
|
-
"
|
|
20155
|
-
{ address:
|
|
20162
|
+
`No spendable UTXO at beacon address: ${reason}.`,
|
|
20163
|
+
"NO_SPENDABLE_BEACON_UTXO",
|
|
20164
|
+
{ address, total: utxos.length, confirmed: confirmed.length, dustLimit: SPENDABLE_DUST_LIMIT_SATS }
|
|
20156
20165
|
);
|
|
20157
20166
|
}
|
|
20167
|
+
return [...spendable].sort(byDepthThenId)[0];
|
|
20168
|
+
}
|
|
20169
|
+
async function fetchSpendableUtxo(bitcoinAddress, bitcoin) {
|
|
20170
|
+
const utxos = await bitcoin.rest.address.getUtxos(bitcoinAddress);
|
|
20171
|
+
const utxo = selectSpendableUtxo(utxos, bitcoinAddress);
|
|
20158
20172
|
const prevTxHex = await bitcoin.rest.transaction.getHex(utxo.txid);
|
|
20159
20173
|
return { utxo, prevTxBytes: hexToBytes(prevTxHex) };
|
|
20160
20174
|
}
|
|
@@ -38915,18 +38929,19 @@ var Identifier = class _Identifier {
|
|
|
38915
38929
|
* @returns {string} The new did:btcr2 identifier.
|
|
38916
38930
|
*/
|
|
38917
38931
|
static encode(genesisBytes, options) {
|
|
38918
|
-
const { idType, version = 1, network } = options;
|
|
38932
|
+
const { idType, version = 1, network = "bitcoin" } = options;
|
|
38919
38933
|
if (!(idType in IdentifierTypes)) {
|
|
38920
38934
|
throw new IdentifierError('Expected "idType" to be "KEY" or "EXTERNAL"', INVALID_DID, { idType });
|
|
38921
38935
|
}
|
|
38922
|
-
if (
|
|
38936
|
+
if (version !== 1) {
|
|
38923
38937
|
throw new IdentifierError('Expected "version" to be 1', INVALID_DID, { version });
|
|
38924
38938
|
}
|
|
38925
|
-
if (typeof network
|
|
38926
|
-
throw new IdentifierError('
|
|
38939
|
+
if (typeof network !== "string") {
|
|
38940
|
+
throw new IdentifierError('Expected "network" to be a known network name', INVALID_DID, { network });
|
|
38927
38941
|
}
|
|
38928
|
-
|
|
38929
|
-
|
|
38942
|
+
const networkValue = BitcoinNetworkNames[network];
|
|
38943
|
+
if (networkValue === void 0) {
|
|
38944
|
+
throw new IdentifierError('Invalid "network" name', INVALID_DID, { network });
|
|
38930
38945
|
}
|
|
38931
38946
|
if (idType === "KEY") {
|
|
38932
38947
|
try {
|
|
@@ -38938,28 +38953,16 @@ var Identifier = class _Identifier {
|
|
|
38938
38953
|
{ genesisBytes }
|
|
38939
38954
|
);
|
|
38940
38955
|
}
|
|
38956
|
+
} else if (genesisBytes.length !== 32) {
|
|
38957
|
+
throw new IdentifierError(
|
|
38958
|
+
'Expected "genesisBytes" to be a 32-byte hash for EXTERNAL identifiers',
|
|
38959
|
+
INVALID_DID,
|
|
38960
|
+
{ genesisBytes }
|
|
38961
|
+
);
|
|
38941
38962
|
}
|
|
38942
38963
|
const hrp = idType === "KEY" ? "k" : "x";
|
|
38943
|
-
const
|
|
38944
|
-
const
|
|
38945
|
-
for (let i = 0; i < fCount; i++) {
|
|
38946
|
-
nibbles.push(15);
|
|
38947
|
-
}
|
|
38948
|
-
nibbles.push((version - 1) % 15);
|
|
38949
|
-
if (typeof network === "string") {
|
|
38950
|
-
nibbles.push(BitcoinNetworkNames[network]);
|
|
38951
|
-
} else if (typeof network === "number") {
|
|
38952
|
-
nibbles.push(network + 11);
|
|
38953
|
-
}
|
|
38954
|
-
if (nibbles.length % 2 !== 0) {
|
|
38955
|
-
nibbles.push(0);
|
|
38956
|
-
}
|
|
38957
|
-
if (fCount !== 0) {
|
|
38958
|
-
for (const index in Array.from({ length: nibbles.length / 2 - 1 })) {
|
|
38959
|
-
throw new IdentifierError("Not implemented", "NOT_IMPLEMENTED", { index });
|
|
38960
|
-
}
|
|
38961
|
-
}
|
|
38962
|
-
const dataBytes = new Uint8Array([nibbles[2 * 0] << 4 | nibbles[2 * 0 + 1], ...genesisBytes]);
|
|
38964
|
+
const firstByte = version - 1 << 4 | networkValue;
|
|
38965
|
+
const dataBytes = new Uint8Array([firstByte, ...genesisBytes]);
|
|
38963
38966
|
return `did:btcr2:${bech32m.encodeFromBytes(hrp, dataBytes)}`;
|
|
38964
38967
|
}
|
|
38965
38968
|
/**
|
|
@@ -38989,53 +38992,34 @@ var Identifier = class _Identifier {
|
|
|
38989
38992
|
if (!["x", "k"].includes(hrp)) {
|
|
38990
38993
|
throw new IdentifierError(`Invalid hrp: ${hrp}`, INVALID_DID, { identifier });
|
|
38991
38994
|
}
|
|
38992
|
-
if (!dataBytes) {
|
|
38995
|
+
if (!dataBytes || dataBytes.length < 1) {
|
|
38993
38996
|
throw new IdentifierError(`Failed to decode id: ${encoded}`, INVALID_DID, { identifier });
|
|
38994
38997
|
}
|
|
38995
38998
|
const idType = hrp === "k" ? "KEY" : "EXTERNAL";
|
|
38996
|
-
|
|
38997
|
-
|
|
38998
|
-
|
|
38999
|
-
|
|
39000
|
-
|
|
39001
|
-
|
|
39002
|
-
|
|
39003
|
-
|
|
39004
|
-
|
|
39005
|
-
|
|
39006
|
-
|
|
39007
|
-
|
|
39008
|
-
|
|
39009
|
-
|
|
39010
|
-
if (version > 1) {
|
|
39011
|
-
throw new IdentifierError(`Invalid version: ${version}`, INVALID_DID, { identifier });
|
|
39012
|
-
}
|
|
39013
|
-
}
|
|
39014
|
-
version += versionNibble;
|
|
39015
|
-
nibblesConsumed += 1;
|
|
39016
|
-
let networkValue = nibblesConsumed % 2 === 0 ? dataBytes[++byteIndex] >>> 4 : currentByte & 15;
|
|
39017
|
-
nibblesConsumed += 1;
|
|
39018
|
-
let network = BitcoinNetworkNames[networkValue];
|
|
39019
|
-
if (!network) {
|
|
39020
|
-
if (networkValue >= 8 && networkValue <= 15) {
|
|
39021
|
-
network = networkValue - 11;
|
|
39022
|
-
} else {
|
|
39023
|
-
throw new IdentifierError(`Invalid did: ${identifier}`, INVALID_DID, { identifier });
|
|
39024
|
-
}
|
|
39025
|
-
}
|
|
39026
|
-
if (nibblesConsumed % 2 === 1) {
|
|
39027
|
-
const fillerNibble = currentByte & 15;
|
|
39028
|
-
if (fillerNibble !== 0) {
|
|
39029
|
-
throw new IdentifierError(`Invalid did: ${identifier}`, INVALID_DID, { identifier });
|
|
39030
|
-
}
|
|
38999
|
+
const btcr2Version = dataBytes[0] >>> 4;
|
|
39000
|
+
if (btcr2Version !== 0) {
|
|
39001
|
+
throw new IdentifierError(`Invalid btcr2_version (expected 0): ${btcr2Version}`, INVALID_DID, { identifier });
|
|
39002
|
+
}
|
|
39003
|
+
const version = 1;
|
|
39004
|
+
const networkValue = dataBytes[0] & 15;
|
|
39005
|
+
const networkName = BitcoinNetworkNames[networkValue];
|
|
39006
|
+
let network;
|
|
39007
|
+
if (typeof networkName === "string") {
|
|
39008
|
+
network = networkName;
|
|
39009
|
+
} else if (networkValue >= 12 && networkValue <= 14) {
|
|
39010
|
+
network = networkValue - 11;
|
|
39011
|
+
} else {
|
|
39012
|
+
throw new IdentifierError(`Invalid network: ${networkValue}`, INVALID_DID, { identifier });
|
|
39031
39013
|
}
|
|
39032
|
-
const genesisBytes = dataBytes.slice(
|
|
39014
|
+
const genesisBytes = dataBytes.slice(1);
|
|
39033
39015
|
if (idType === "KEY") {
|
|
39034
39016
|
try {
|
|
39035
39017
|
new CompressedSecp256k1PublicKey(genesisBytes);
|
|
39036
39018
|
} catch {
|
|
39037
39019
|
throw new IdentifierError(`Invalid genesisBytes: ${genesisBytes}`, INVALID_DID, { identifier });
|
|
39038
39020
|
}
|
|
39021
|
+
} else if (genesisBytes.length !== 32) {
|
|
39022
|
+
throw new IdentifierError(`Invalid genesisBytes: ${genesisBytes}`, INVALID_DID, { identifier });
|
|
39039
39023
|
}
|
|
39040
39024
|
return { idType, hrp, version, network, genesisBytes };
|
|
39041
39025
|
}
|
|
@@ -41545,6 +41529,7 @@ export {
|
|
|
41545
41529
|
SINGLETON_BEACON_TX_VSIZE,
|
|
41546
41530
|
SMTBeacon,
|
|
41547
41531
|
SMTBeaconError,
|
|
41532
|
+
SPENDABLE_DUST_LIMIT_SATS,
|
|
41548
41533
|
SinglePartyBeacon,
|
|
41549
41534
|
SingletonBeacon,
|
|
41550
41535
|
SingletonBeaconError,
|
|
@@ -41558,7 +41543,8 @@ export {
|
|
|
41558
41543
|
isMultikeyVerificationMethod,
|
|
41559
41544
|
opReturnScript,
|
|
41560
41545
|
resolveBtcr2SenderPk,
|
|
41561
|
-
resolveChangeAddress
|
|
41546
|
+
resolveChangeAddress,
|
|
41547
|
+
selectSpendableUtxo
|
|
41562
41548
|
};
|
|
41563
41549
|
/*! Bundled license information:
|
|
41564
41550
|
|
package/dist/cjs/index.js
CHANGED
|
@@ -50,6 +50,7 @@ __export(index_exports, {
|
|
|
50
50
|
SINGLETON_BEACON_TX_VSIZE: () => SINGLETON_BEACON_TX_VSIZE,
|
|
51
51
|
SMTBeacon: () => SMTBeacon,
|
|
52
52
|
SMTBeaconError: () => SMTBeaconError,
|
|
53
|
+
SPENDABLE_DUST_LIMIT_SATS: () => SPENDABLE_DUST_LIMIT_SATS,
|
|
53
54
|
SinglePartyBeacon: () => SinglePartyBeacon,
|
|
54
55
|
SingletonBeacon: () => SingletonBeacon,
|
|
55
56
|
SingletonBeaconError: () => SingletonBeaconError,
|
|
@@ -63,7 +64,8 @@ __export(index_exports, {
|
|
|
63
64
|
isMultikeyVerificationMethod: () => isMultikeyVerificationMethod,
|
|
64
65
|
opReturnScript: () => opReturnScript,
|
|
65
66
|
resolveBtcr2SenderPk: () => resolveBtcr2SenderPk,
|
|
66
|
-
resolveChangeAddress: () => resolveChangeAddress
|
|
67
|
+
resolveChangeAddress: () => resolveChangeAddress,
|
|
68
|
+
selectSpendableUtxo: () => selectSpendableUtxo
|
|
67
69
|
});
|
|
68
70
|
module.exports = __toCommonJS(index_exports);
|
|
69
71
|
|
|
@@ -165,23 +167,37 @@ function changeOutputKind(changeAddress, network) {
|
|
|
165
167
|
function opReturnScript(signalBytes) {
|
|
166
168
|
return import_btc_signer.Script.encode(["RETURN", signalBytes]);
|
|
167
169
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
+
var SPENDABLE_DUST_LIMIT_SATS = 546;
|
|
171
|
+
function byDepthThenId(a, b) {
|
|
172
|
+
if (a.status.block_height !== b.status.block_height) {
|
|
173
|
+
return a.status.block_height - b.status.block_height;
|
|
174
|
+
}
|
|
175
|
+
const txidOrder = a.txid.localeCompare(b.txid);
|
|
176
|
+
return txidOrder !== 0 ? txidOrder : a.vout - b.vout;
|
|
177
|
+
}
|
|
178
|
+
function selectSpendableUtxo(utxos, address) {
|
|
170
179
|
if (!utxos.length) {
|
|
171
180
|
throw new BeaconError(
|
|
172
181
|
"No UTXOs found, please fund address!",
|
|
173
182
|
"UNFUNDED_BEACON_ADDRESS",
|
|
174
|
-
{ address
|
|
183
|
+
{ address }
|
|
175
184
|
);
|
|
176
185
|
}
|
|
177
|
-
const
|
|
178
|
-
|
|
186
|
+
const confirmed = utxos.filter((utxo) => utxo.status.confirmed === true);
|
|
187
|
+
const spendable = confirmed.filter((utxo) => utxo.value > SPENDABLE_DUST_LIMIT_SATS);
|
|
188
|
+
if (!spendable.length) {
|
|
189
|
+
const reason = confirmed.length === 0 ? `all ${utxos.length} UTXO(s) are unconfirmed` : `all ${confirmed.length} confirmed UTXO(s) are at or below the ${SPENDABLE_DUST_LIMIT_SATS}-sat dust limit`;
|
|
179
190
|
throw new BeaconError(
|
|
180
|
-
|
|
181
|
-
"
|
|
182
|
-
{ address:
|
|
191
|
+
`No spendable UTXO at beacon address: ${reason}.`,
|
|
192
|
+
"NO_SPENDABLE_BEACON_UTXO",
|
|
193
|
+
{ address, total: utxos.length, confirmed: confirmed.length, dustLimit: SPENDABLE_DUST_LIMIT_SATS }
|
|
183
194
|
);
|
|
184
195
|
}
|
|
196
|
+
return [...spendable].sort(byDepthThenId)[0];
|
|
197
|
+
}
|
|
198
|
+
async function fetchSpendableUtxo(bitcoinAddress, bitcoin) {
|
|
199
|
+
const utxos = await bitcoin.rest.address.getUtxos(bitcoinAddress);
|
|
200
|
+
const utxo = selectSpendableUtxo(utxos, bitcoinAddress);
|
|
185
201
|
const prevTxHex = await bitcoin.rest.transaction.getHex(utxo.txid);
|
|
186
202
|
return { utxo, prevTxBytes: (0, import_utils.hexToBytes)(prevTxHex) };
|
|
187
203
|
}
|
|
@@ -844,18 +860,19 @@ var Identifier = class _Identifier {
|
|
|
844
860
|
* @returns {string} The new did:btcr2 identifier.
|
|
845
861
|
*/
|
|
846
862
|
static encode(genesisBytes, options) {
|
|
847
|
-
const { idType, version = 1, network } = options;
|
|
863
|
+
const { idType, version = 1, network = "bitcoin" } = options;
|
|
848
864
|
if (!(idType in import_common6.IdentifierTypes)) {
|
|
849
865
|
throw new import_common6.IdentifierError('Expected "idType" to be "KEY" or "EXTERNAL"', import_common6.INVALID_DID, { idType });
|
|
850
866
|
}
|
|
851
|
-
if (
|
|
867
|
+
if (version !== 1) {
|
|
852
868
|
throw new import_common6.IdentifierError('Expected "version" to be 1', import_common6.INVALID_DID, { version });
|
|
853
869
|
}
|
|
854
|
-
if (typeof network
|
|
855
|
-
throw new import_common6.IdentifierError('
|
|
870
|
+
if (typeof network !== "string") {
|
|
871
|
+
throw new import_common6.IdentifierError('Expected "network" to be a known network name', import_common6.INVALID_DID, { network });
|
|
856
872
|
}
|
|
857
|
-
|
|
858
|
-
|
|
873
|
+
const networkValue = import_common6.BitcoinNetworkNames[network];
|
|
874
|
+
if (networkValue === void 0) {
|
|
875
|
+
throw new import_common6.IdentifierError('Invalid "network" name', import_common6.INVALID_DID, { network });
|
|
859
876
|
}
|
|
860
877
|
if (idType === "KEY") {
|
|
861
878
|
try {
|
|
@@ -867,28 +884,16 @@ var Identifier = class _Identifier {
|
|
|
867
884
|
{ genesisBytes }
|
|
868
885
|
);
|
|
869
886
|
}
|
|
887
|
+
} else if (genesisBytes.length !== 32) {
|
|
888
|
+
throw new import_common6.IdentifierError(
|
|
889
|
+
'Expected "genesisBytes" to be a 32-byte hash for EXTERNAL identifiers',
|
|
890
|
+
import_common6.INVALID_DID,
|
|
891
|
+
{ genesisBytes }
|
|
892
|
+
);
|
|
870
893
|
}
|
|
871
894
|
const hrp = idType === "KEY" ? "k" : "x";
|
|
872
|
-
const
|
|
873
|
-
const
|
|
874
|
-
for (let i = 0; i < fCount; i++) {
|
|
875
|
-
nibbles.push(15);
|
|
876
|
-
}
|
|
877
|
-
nibbles.push((version - 1) % 15);
|
|
878
|
-
if (typeof network === "string") {
|
|
879
|
-
nibbles.push(import_common6.BitcoinNetworkNames[network]);
|
|
880
|
-
} else if (typeof network === "number") {
|
|
881
|
-
nibbles.push(network + 11);
|
|
882
|
-
}
|
|
883
|
-
if (nibbles.length % 2 !== 0) {
|
|
884
|
-
nibbles.push(0);
|
|
885
|
-
}
|
|
886
|
-
if (fCount !== 0) {
|
|
887
|
-
for (const index in Array.from({ length: nibbles.length / 2 - 1 })) {
|
|
888
|
-
throw new import_common6.IdentifierError("Not implemented", "NOT_IMPLEMENTED", { index });
|
|
889
|
-
}
|
|
890
|
-
}
|
|
891
|
-
const dataBytes = new Uint8Array([nibbles[2 * 0] << 4 | nibbles[2 * 0 + 1], ...genesisBytes]);
|
|
895
|
+
const firstByte = version - 1 << 4 | networkValue;
|
|
896
|
+
const dataBytes = new Uint8Array([firstByte, ...genesisBytes]);
|
|
892
897
|
return `did:btcr2:${import_base.bech32m.encodeFromBytes(hrp, dataBytes)}`;
|
|
893
898
|
}
|
|
894
899
|
/**
|
|
@@ -918,53 +923,34 @@ var Identifier = class _Identifier {
|
|
|
918
923
|
if (!["x", "k"].includes(hrp)) {
|
|
919
924
|
throw new import_common6.IdentifierError(`Invalid hrp: ${hrp}`, import_common6.INVALID_DID, { identifier });
|
|
920
925
|
}
|
|
921
|
-
if (!dataBytes) {
|
|
926
|
+
if (!dataBytes || dataBytes.length < 1) {
|
|
922
927
|
throw new import_common6.IdentifierError(`Failed to decode id: ${encoded}`, import_common6.INVALID_DID, { identifier });
|
|
923
928
|
}
|
|
924
929
|
const idType = hrp === "k" ? "KEY" : "EXTERNAL";
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
if (version > 1) {
|
|
940
|
-
throw new import_common6.IdentifierError(`Invalid version: ${version}`, import_common6.INVALID_DID, { identifier });
|
|
941
|
-
}
|
|
942
|
-
}
|
|
943
|
-
version += versionNibble;
|
|
944
|
-
nibblesConsumed += 1;
|
|
945
|
-
let networkValue = nibblesConsumed % 2 === 0 ? dataBytes[++byteIndex] >>> 4 : currentByte & 15;
|
|
946
|
-
nibblesConsumed += 1;
|
|
947
|
-
let network = import_common6.BitcoinNetworkNames[networkValue];
|
|
948
|
-
if (!network) {
|
|
949
|
-
if (networkValue >= 8 && networkValue <= 15) {
|
|
950
|
-
network = networkValue - 11;
|
|
951
|
-
} else {
|
|
952
|
-
throw new import_common6.IdentifierError(`Invalid did: ${identifier}`, import_common6.INVALID_DID, { identifier });
|
|
953
|
-
}
|
|
954
|
-
}
|
|
955
|
-
if (nibblesConsumed % 2 === 1) {
|
|
956
|
-
const fillerNibble = currentByte & 15;
|
|
957
|
-
if (fillerNibble !== 0) {
|
|
958
|
-
throw new import_common6.IdentifierError(`Invalid did: ${identifier}`, import_common6.INVALID_DID, { identifier });
|
|
959
|
-
}
|
|
930
|
+
const btcr2Version = dataBytes[0] >>> 4;
|
|
931
|
+
if (btcr2Version !== 0) {
|
|
932
|
+
throw new import_common6.IdentifierError(`Invalid btcr2_version (expected 0): ${btcr2Version}`, import_common6.INVALID_DID, { identifier });
|
|
933
|
+
}
|
|
934
|
+
const version = 1;
|
|
935
|
+
const networkValue = dataBytes[0] & 15;
|
|
936
|
+
const networkName = import_common6.BitcoinNetworkNames[networkValue];
|
|
937
|
+
let network;
|
|
938
|
+
if (typeof networkName === "string") {
|
|
939
|
+
network = networkName;
|
|
940
|
+
} else if (networkValue >= 12 && networkValue <= 14) {
|
|
941
|
+
network = networkValue - 11;
|
|
942
|
+
} else {
|
|
943
|
+
throw new import_common6.IdentifierError(`Invalid network: ${networkValue}`, import_common6.INVALID_DID, { identifier });
|
|
960
944
|
}
|
|
961
|
-
const genesisBytes = dataBytes.slice(
|
|
945
|
+
const genesisBytes = dataBytes.slice(1);
|
|
962
946
|
if (idType === "KEY") {
|
|
963
947
|
try {
|
|
964
948
|
new import_keypair.CompressedSecp256k1PublicKey(genesisBytes);
|
|
965
949
|
} catch {
|
|
966
950
|
throw new import_common6.IdentifierError(`Invalid genesisBytes: ${genesisBytes}`, import_common6.INVALID_DID, { identifier });
|
|
967
951
|
}
|
|
952
|
+
} else if (genesisBytes.length !== 32) {
|
|
953
|
+
throw new import_common6.IdentifierError(`Invalid genesisBytes: ${genesisBytes}`, import_common6.INVALID_DID, { identifier });
|
|
968
954
|
}
|
|
969
955
|
return { idType, hrp, version, network, genesisBytes };
|
|
970
956
|
}
|
|
@@ -2735,6 +2721,7 @@ var DidDocumentBuilder = class {
|
|
|
2735
2721
|
SINGLETON_BEACON_TX_VSIZE,
|
|
2736
2722
|
SMTBeacon,
|
|
2737
2723
|
SMTBeaconError,
|
|
2724
|
+
SPENDABLE_DUST_LIMIT_SATS,
|
|
2738
2725
|
SinglePartyBeacon,
|
|
2739
2726
|
SingletonBeacon,
|
|
2740
2727
|
SingletonBeaconError,
|
|
@@ -2748,5 +2735,6 @@ var DidDocumentBuilder = class {
|
|
|
2748
2735
|
isMultikeyVerificationMethod,
|
|
2749
2736
|
opReturnScript,
|
|
2750
2737
|
resolveBtcr2SenderPk,
|
|
2751
|
-
resolveChangeAddress
|
|
2738
|
+
resolveChangeAddress,
|
|
2739
|
+
selectSpendableUtxo
|
|
2752
2740
|
});
|
|
@@ -146,18 +146,84 @@ export function opReturnScript(signalBytes) {
|
|
|
146
146
|
return Script.encode(['RETURN', signalBytes]);
|
|
147
147
|
}
|
|
148
148
|
/**
|
|
149
|
-
*
|
|
150
|
-
*
|
|
149
|
+
* Minimum value (sats) a beacon UTXO must exceed for {@link selectSpendableUtxo} to
|
|
150
|
+
* treat it as spendable. This is a fixed, conservative, script-kind-agnostic floor:
|
|
151
|
+
* an output at or below it is too small to be worth spending, so selection discards
|
|
152
|
+
* it in favor of a larger confirmed UTXO. Keeping the floor a constant (rather than
|
|
153
|
+
* deriving it from a fee estimate) keeps selection pure and fee-estimator-independent.
|
|
154
|
+
*
|
|
155
|
+
* The floor is a coarse pre-filter, not the fee-coverage boundary: whether a selected
|
|
156
|
+
* UTXO actually covers the transaction fee is a separate check, enforced against the
|
|
157
|
+
* live {@link FeeEstimator} by the builders' `value <= feeSats` guard
|
|
158
|
+
* ({@link SinglePartyBeacon.buildSinglePartyTx} and {@link buildAggregationBeaconTx}).
|
|
159
|
+
* At the default 5 sat/vB rate that fee (roughly 775 to 1200 sats across the three
|
|
160
|
+
* script kinds) sits above this floor, so a UTXO can clear the dust filter and still
|
|
161
|
+
* be rejected as insufficient; conversely, at a very low fee rate an output near the
|
|
162
|
+
* floor could cover the fee. The floor's job is only to skip trivially small inputs.
|
|
163
|
+
*
|
|
164
|
+
* The value is the standard Bitcoin Core P2PKH dust threshold, the largest of the
|
|
165
|
+
* three singleton beacon script kinds (P2PKH 546, P2TR 330, P2WPKH 294 per
|
|
166
|
+
* {@link DUST_LIMIT_SATS}): a UTXO above it is non-dust under any beacon address kind.
|
|
167
|
+
* Distinct from {@link DUST_LIMIT_SATS}, which sizes the outgoing change output by
|
|
168
|
+
* kind; this bounds the incoming UTXO chosen to fund the transaction.
|
|
151
169
|
*/
|
|
152
|
-
|
|
153
|
-
|
|
170
|
+
export const SPENDABLE_DUST_LIMIT_SATS = 546;
|
|
171
|
+
/**
|
|
172
|
+
* Deterministic ordering for spendable UTXO selection: deepest first (ascending
|
|
173
|
+
* block height, so the most-confirmed UTXO sorts first), tie-broken by `txid` then
|
|
174
|
+
* `vout`. The tie-break makes the winner independent of the order the REST API
|
|
175
|
+
* returns UTXOs in, so retries and independent resolvers converge on the same input.
|
|
176
|
+
*/
|
|
177
|
+
function byDepthThenId(a, b) {
|
|
178
|
+
if (a.status.block_height !== b.status.block_height) {
|
|
179
|
+
return a.status.block_height - b.status.block_height;
|
|
180
|
+
}
|
|
181
|
+
const txidOrder = a.txid.localeCompare(b.txid);
|
|
182
|
+
return txidOrder !== 0 ? txidOrder : a.vout - b.vout;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Select the beacon UTXO to fund a signal transaction from the set of UTXOs at a
|
|
186
|
+
* beacon address. Pure and deterministic: the same address state always yields the
|
|
187
|
+
* same input, across broadcast retries and across independent resolvers.
|
|
188
|
+
*
|
|
189
|
+
* Filters to confirmed UTXOs (an unconfirmed input is reorg- and RBF-unsafe: a
|
|
190
|
+
* signal built on it can be orphaned or double-spent before it confirms), then drops
|
|
191
|
+
* dust at or below {@link SPENDABLE_DUST_LIMIT_SATS}, then picks the deepest via
|
|
192
|
+
* {@link byDepthThenId}. The did:btcr2 spec does not mandate a selection rule or a
|
|
193
|
+
* confirmation depth (only the security considerations favor deeper confirmations),
|
|
194
|
+
* so this is an implementation policy: prefer safety and reproducibility over
|
|
195
|
+
* spending the newest or largest output.
|
|
196
|
+
*
|
|
197
|
+
* @param utxos UTXOs reported at the beacon address.
|
|
198
|
+
* @param address Beacon address, used only to annotate thrown errors.
|
|
199
|
+
* @returns The confirmed, non-dust, deepest UTXO.
|
|
200
|
+
* @throws {BeaconError} `UNFUNDED_BEACON_ADDRESS` when no UTXOs exist at all;
|
|
201
|
+
* `NO_SPENDABLE_BEACON_UTXO` when UTXOs exist but none are both confirmed and above
|
|
202
|
+
* the dust limit (the message distinguishes all-unconfirmed from all-dust).
|
|
203
|
+
*/
|
|
204
|
+
export function selectSpendableUtxo(utxos, address) {
|
|
154
205
|
if (!utxos.length) {
|
|
155
|
-
throw new BeaconError('No UTXOs found, please fund address!', 'UNFUNDED_BEACON_ADDRESS', { address
|
|
206
|
+
throw new BeaconError('No UTXOs found, please fund address!', 'UNFUNDED_BEACON_ADDRESS', { address });
|
|
156
207
|
}
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
208
|
+
const confirmed = utxos.filter(utxo => utxo.status.confirmed === true);
|
|
209
|
+
const spendable = confirmed.filter(utxo => utxo.value > SPENDABLE_DUST_LIMIT_SATS);
|
|
210
|
+
if (!spendable.length) {
|
|
211
|
+
const reason = confirmed.length === 0
|
|
212
|
+
? `all ${utxos.length} UTXO(s) are unconfirmed`
|
|
213
|
+
: `all ${confirmed.length} confirmed UTXO(s) are at or below the ${SPENDABLE_DUST_LIMIT_SATS}-sat dust limit`;
|
|
214
|
+
throw new BeaconError(`No spendable UTXO at beacon address: ${reason}.`, 'NO_SPENDABLE_BEACON_UTXO', { address, total: utxos.length, confirmed: confirmed.length, dustLimit: SPENDABLE_DUST_LIMIT_SATS });
|
|
160
215
|
}
|
|
216
|
+
return [...spendable].sort(byDepthThenId)[0];
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Fetch the deepest confirmed, non-dust spendable UTXO at `bitcoinAddress` plus the
|
|
220
|
+
* raw bytes of its parent transaction (needed by PSBT inputs). Selection is delegated
|
|
221
|
+
* to {@link selectSpendableUtxo}; throws {@link BeaconError} when the address is
|
|
222
|
+
* unfunded or has no confirmed, non-dust UTXO.
|
|
223
|
+
*/
|
|
224
|
+
async function fetchSpendableUtxo(bitcoinAddress, bitcoin) {
|
|
225
|
+
const utxos = await bitcoin.rest.address.getUtxos(bitcoinAddress);
|
|
226
|
+
const utxo = selectSpendableUtxo(utxos, bitcoinAddress);
|
|
161
227
|
const prevTxHex = await bitcoin.rest.transaction.getHex(utxo.txid);
|
|
162
228
|
return { utxo, prevTxBytes: hexToBytes(prevTxHex) };
|
|
163
229
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/beacon.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG1G,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAY3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,iEAAiE;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAkD;IACtF,KAAK,EAAI,qBAAqB;IAC9B,MAAM,EAAG,sBAAsB;IAC/B,IAAI,EAAK,oBAAoB;CAC9B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkD;IACjF,KAAK,EAAI,EAAE;IACX,MAAM,EAAG,EAAE;IACX,IAAI,EAAK,EAAE;CACZ,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkD;IAC5E,KAAK,EAAI,GAAG;IACZ,MAAM,EAAG,GAAG;IACZ,IAAI,EAAK,GAAG;CACb,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAC3B,UAA+B,EAC/B,UAA+B;IAE/B,MAAM,IAAI,GAAG,yBAAyB,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtF,OAAO,IAAI,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,cAAsB,EACtB,OAAmB;IAEnB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxD,IAAG,OAAO,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC5C,IAAG,OAAO,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,IAAI,WAAW,CACnB,8CAA8C,OAAO,CAAC,IAAI,KAAK;UAC7D,qDAAqD,EACvD,iCAAiC,EACjC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAChD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAyB,EACzB,MAAgB,EAChB,OAAmB;IAEnB,IAAG,IAAI,KAAK,OAAO;QAAG,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAQ,CAAC;IAC7D,IAAG,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAQ,CAAC;IAC9D,iEAAiE;IACjE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAQ,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,aAAqB,EACrB,OAAmB,EACnB,aAAsB;IAEtB,IAAG,CAAC,aAAa,IAAI,aAAa,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IAC3E,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,WAAW,CACnB,2BAA2B,aAAa,kBAAkB,OAAO,IAAI,EACrE,wBAAwB,EACxB,EAAE,aAAa,EAAE,OAAO,EAAE,CAC3B,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,aAAqB,EAAE,OAAmB;IAClE,IAAI,CAAC;QACH,OAAO,yBAAyB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AA0CD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,WAAuB;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAC/B,cAAsB,EACtB,OAA0B;IAE1B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClE,IAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,WAAW,CACnB,sCAAsC,EACtC,yBAAyB,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CACvD,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;IACzF,IAAG,CAAC,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,WAAW,CACnB,uDAAuD,EACvD,yBAAyB,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CACvD,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAoB9C;IACC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,qBAAqB,CAAC;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEjG,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,+EAA+E;IAC/E,8EAA8E;IAC9E,yDAAyD;IACzD,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAEzF,8EAA8E;IAC9E,iFAAiF;IACjF,sFAAsF;IACtF,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAClF,IAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,WAAW,CACnB,eAAe,IAAI,CAAC,KAAK,gCAAgC,OAAO,IAAI,EACpE,oBAAoB,EACpB,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAChE,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,QAAQ,CAAC;QACV,IAAI,EAAa,IAAI,CAAC,IAAI;QAC1B,KAAK,EAAY,IAAI,CAAC,IAAI;QAC1B,cAAc,EAAG,WAAW;QAC5B,WAAW,EAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE;QACtE,cAAc,EAAG,IAAI,CAAC,cAAc;KACrC,CAAC,CAAC;IACH,+EAA+E;IAC/E,kFAAkF;IAClF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IACjD,IAAG,WAAW,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACtD,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAEvE,OAAO;QACL,EAAE;QACF,cAAc,EAAG,CAAC,aAAa,CAAC;QAChC,aAAa,EAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,aAAa,EAAI,IAAI,CAAC,aAAa;QACnC,aAAa;QACb,IAAI;QACJ,OAAO;QACP,UAAU,EAAO,MAAM;KACxB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,kBAAkB,CAC/B,EAAe,EACf,QAAgB,EAChB,IAAyB,EACzB,MAAc,EACd,aAAyB,EACzB,MAAc;IAEd,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAEhC,IAAG,IAAI,KAAK,OAAO,EAAE,CAAC;QACpB,qEAAqE;QACrE,6EAA6E;QAC7E,yEAAyE;QACzE,6EAA6E;QAC7E,yEAAyE;QACzE,yDAAyD;QACzD,yEAAyE;QACzE,8EAA8E;QAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,OAAO,GAAI,EAEf,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,EAAE,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC,GAAG,CAAC;IAChB,CAAC;IAED,IAAG,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrB,+EAA+E;QAC/E,kFAAkF;QAClF,qEAAqE;QACrE,EAAE;QACF,gFAAgF;QAChF,+EAA+E;QAC/E,4EAA4E;QAC5E,6DAA6D;QAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChD,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CACnB,4CAA4C,OAAO,CAAC,IAAI,IAAI,EAC5D,yBAAyB,EACzB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,IAAI,EAAE,CAC3C,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,OAAO,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,EAAE,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC,GAAG,CAAC;IAChB,CAAC;IAED,0EAA0E;IAC1E,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,OAAO,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,EAAE,CAAC,QAAQ,EAAE,CAAC;IACd,OAAO,EAAE,CAAC,GAAG,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAgB,iBAAiB;IACrC;;OAEG;IACM,OAAO,CAAgB;IAEhC,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAmCD;;;;;;;;;;;;;;;;;OAiBG;IACO,KAAK,CAAC,qBAAqB,CACnC,WAAuB,EACvB,MAAc,EACd,OAA0B,EAC1B,OAA0B;QAE1B,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,qBAAqB,CAAC;QACpE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC;YACzC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;YAC5E,aAAa,EAAG,OAAO,EAAE,aAAa;SACvC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;;;OAUG;IACO,KAAK,CAAC,kBAAkB,CAAC,IASlC;QACC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACrC,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAE5F,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACrE,IAAG,cAAc,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,IAAI,WAAW,CACnB,0BAA0B,IAAI,CAAC,WAAW,EAAE,aAAa,cAAc,6BAA6B,IAAI,CAAC,aAAa,IAAI,EAC1H,qBAAqB,EACrB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,CACtD,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAG,MAAM,IAAI,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,WAAW,CACnB,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,gCAAgC,OAAO,IAAI,EACzE,oBAAoB,EACpB,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CACrE,CAAC;QACJ,CAAC;QAED,6EAA6E;QAC7E,2EAA2E;QAC3E,4EAA4E;QAC5E,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1D,yEAAyE;QACzE,8EAA8E;QAC9E,IAAI,aAAyB,CAAC;QAC9B,IAAG,IAAI,KAAK,OAAO,EAAE,CAAC;YACpB,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;YAC9C,EAAE,CAAC,QAAQ,CAAC;gBACV,IAAI,EAAa,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,KAAK,EAAY,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,cAAc,EAAG,IAAI,CAAC,WAAW;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,IAAG,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;YAC/C,EAAE,CAAC,QAAQ,CAAC;gBACV,IAAI,EAAa,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,KAAK,EAAY,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,cAAc,EAAG,IAAI,CAAC,WAAW;gBACjC,WAAW,EAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE;aACnD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,gBAAgB;YAChB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;YAC7D,EAAE,CAAC,QAAQ,CAAC;gBACV,IAAI,EAAa,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,KAAK,EAAY,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,cAAc,EAAG,IAAI,CAAC,WAAW;gBACjC,WAAW,EAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE;gBAClD,cAAc,EAAG,WAAW;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,+EAA+E;QAC/E,kFAAkF;QAClF,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;QACrC,IAAG,WAAW,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACtD,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvE,OAAO;YACL,EAAE;YACF,cAAc,EAAG,CAAC,aAAa,CAAC;YAChC,aAAa,EAAI,CAAC,MAAM,CAAC;YACzB,aAAa,EAAI,IAAI,CAAC,aAAa;YACnC,aAAa;YACb,IAAI,EAAa,IAAI,CAAC,IAAI;YAC1B,OAAO;YACP,UAAU,EAAO,IAAI;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,iBAAiB,CAAC,IAAkB,EAAE,MAAc;QAClE,OAAO,kBAAkB,CACvB,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EACnC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAE,CAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,cAAc,CAAC,OAA0B,EAAE,MAAc;QACvE,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/beacon.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG1G,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAY3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,iEAAiE;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAkD;IACtF,KAAK,EAAI,qBAAqB;IAC9B,MAAM,EAAG,sBAAsB;IAC/B,IAAI,EAAK,oBAAoB;CAC9B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkD;IACjF,KAAK,EAAI,EAAE;IACX,MAAM,EAAG,EAAE;IACX,IAAI,EAAK,EAAE;CACZ,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkD;IAC5E,KAAK,EAAI,GAAG;IACZ,MAAM,EAAG,GAAG;IACZ,IAAI,EAAK,GAAG;CACb,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAC3B,UAA+B,EAC/B,UAA+B;IAE/B,MAAM,IAAI,GAAG,yBAAyB,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtF,OAAO,IAAI,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,cAAsB,EACtB,OAAmB;IAEnB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxD,IAAG,OAAO,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC5C,IAAG,OAAO,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,IAAI,WAAW,CACnB,8CAA8C,OAAO,CAAC,IAAI,KAAK;UAC7D,qDAAqD,EACvD,iCAAiC,EACjC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAChD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAyB,EACzB,MAAgB,EAChB,OAAmB;IAEnB,IAAG,IAAI,KAAK,OAAO;QAAG,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAQ,CAAC;IAC7D,IAAG,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAQ,CAAC;IAC9D,iEAAiE;IACjE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAQ,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,aAAqB,EACrB,OAAmB,EACnB,aAAsB;IAEtB,IAAG,CAAC,aAAa,IAAI,aAAa,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IAC3E,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,WAAW,CACnB,2BAA2B,aAAa,kBAAkB,OAAO,IAAI,EACrE,wBAAwB,EACxB,EAAE,aAAa,EAAE,OAAO,EAAE,CAC3B,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,aAAqB,EAAE,OAAmB;IAClE,IAAI,CAAC;QACH,OAAO,yBAAyB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AA0CD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,WAAuB;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C;;;;;GAKG;AACH,SAAS,aAAa,CAAC,CAAc,EAAE,CAAc;IACnD,IAAG,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACnD,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;IACvD,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAyB,EAAE,OAAgB;IAC7E,IAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,WAAW,CACnB,sCAAsC,EACtC,yBAAyB,EAAE,EAAE,OAAO,EAAE,CACvC,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,yBAAyB,CAAC,CAAC;IACnF,IAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC;YACnC,CAAC,CAAC,OAAO,KAAK,CAAC,MAAM,0BAA0B;YAC/C,CAAC,CAAC,OAAO,SAAS,CAAC,MAAM,0CAA0C,yBAAyB,iBAAiB,CAAC;QAChH,MAAM,IAAI,WAAW,CACnB,wCAAwC,MAAM,GAAG,EACjD,0BAA0B,EAC1B,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,yBAAyB,EAAE,CACpG,CAAC;IACJ,CAAC;IACD,OAAO,CAAE,GAAG,SAAS,CAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAC/B,cAAsB,EACtB,OAA0B;IAE1B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAoB9C;IACC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,qBAAqB,CAAC;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEjG,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,+EAA+E;IAC/E,8EAA8E;IAC9E,yDAAyD;IACzD,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAEzF,8EAA8E;IAC9E,iFAAiF;IACjF,sFAAsF;IACtF,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAClF,IAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,WAAW,CACnB,eAAe,IAAI,CAAC,KAAK,gCAAgC,OAAO,IAAI,EACpE,oBAAoB,EACpB,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAChE,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,QAAQ,CAAC;QACV,IAAI,EAAa,IAAI,CAAC,IAAI;QAC1B,KAAK,EAAY,IAAI,CAAC,IAAI;QAC1B,cAAc,EAAG,WAAW;QAC5B,WAAW,EAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE;QACtE,cAAc,EAAG,IAAI,CAAC,cAAc;KACrC,CAAC,CAAC;IACH,+EAA+E;IAC/E,kFAAkF;IAClF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IACjD,IAAG,WAAW,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACtD,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAEvE,OAAO;QACL,EAAE;QACF,cAAc,EAAG,CAAC,aAAa,CAAC;QAChC,aAAa,EAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,aAAa,EAAI,IAAI,CAAC,aAAa;QACnC,aAAa;QACb,IAAI;QACJ,OAAO;QACP,UAAU,EAAO,MAAM;KACxB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,kBAAkB,CAC/B,EAAe,EACf,QAAgB,EAChB,IAAyB,EACzB,MAAc,EACd,aAAyB,EACzB,MAAc;IAEd,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAEhC,IAAG,IAAI,KAAK,OAAO,EAAE,CAAC;QACpB,qEAAqE;QACrE,6EAA6E;QAC7E,yEAAyE;QACzE,6EAA6E;QAC7E,yEAAyE;QACzE,yDAAyD;QACzD,yEAAyE;QACzE,8EAA8E;QAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,OAAO,GAAI,EAEf,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,EAAE,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC,GAAG,CAAC;IAChB,CAAC;IAED,IAAG,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrB,+EAA+E;QAC/E,kFAAkF;QAClF,qEAAqE;QACrE,EAAE;QACF,gFAAgF;QAChF,+EAA+E;QAC/E,4EAA4E;QAC5E,6DAA6D;QAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChD,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CACnB,4CAA4C,OAAO,CAAC,IAAI,IAAI,EAC5D,yBAAyB,EACzB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,IAAI,EAAE,CAC3C,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,OAAO,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,EAAE,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC,GAAG,CAAC;IAChB,CAAC;IAED,0EAA0E;IAC1E,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,OAAO,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,EAAE,CAAC,QAAQ,EAAE,CAAC;IACd,OAAO,EAAE,CAAC,GAAG,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAgB,iBAAiB;IACrC;;OAEG;IACM,OAAO,CAAgB;IAEhC,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAmCD;;;;;;;;;;;;;;;;;OAiBG;IACO,KAAK,CAAC,qBAAqB,CACnC,WAAuB,EACvB,MAAc,EACd,OAA0B,EAC1B,OAA0B;QAE1B,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,qBAAqB,CAAC;QACpE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC;YACzC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;YAC5E,aAAa,EAAG,OAAO,EAAE,aAAa;SACvC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;;;OAUG;IACO,KAAK,CAAC,kBAAkB,CAAC,IASlC;QACC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACrC,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAE5F,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACrE,IAAG,cAAc,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,IAAI,WAAW,CACnB,0BAA0B,IAAI,CAAC,WAAW,EAAE,aAAa,cAAc,6BAA6B,IAAI,CAAC,aAAa,IAAI,EAC1H,qBAAqB,EACrB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,CACtD,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAG,MAAM,IAAI,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,WAAW,CACnB,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,gCAAgC,OAAO,IAAI,EACzE,oBAAoB,EACpB,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CACrE,CAAC;QACJ,CAAC;QAED,6EAA6E;QAC7E,2EAA2E;QAC3E,4EAA4E;QAC5E,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1D,yEAAyE;QACzE,8EAA8E;QAC9E,IAAI,aAAyB,CAAC;QAC9B,IAAG,IAAI,KAAK,OAAO,EAAE,CAAC;YACpB,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;YAC9C,EAAE,CAAC,QAAQ,CAAC;gBACV,IAAI,EAAa,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,KAAK,EAAY,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,cAAc,EAAG,IAAI,CAAC,WAAW;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,IAAG,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;YAC/C,EAAE,CAAC,QAAQ,CAAC;gBACV,IAAI,EAAa,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,KAAK,EAAY,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,cAAc,EAAG,IAAI,CAAC,WAAW;gBACjC,WAAW,EAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE;aACnD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,gBAAgB;YAChB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;YAC7D,EAAE,CAAC,QAAQ,CAAC;gBACV,IAAI,EAAa,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,KAAK,EAAY,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC/B,cAAc,EAAG,IAAI,CAAC,WAAW;gBACjC,WAAW,EAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE;gBAClD,cAAc,EAAG,WAAW;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,+EAA+E;QAC/E,kFAAkF;QAClF,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;QACrC,IAAG,WAAW,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACtD,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvE,OAAO;YACL,EAAE;YACF,cAAc,EAAG,CAAC,aAAa,CAAC;YAChC,aAAa,EAAI,CAAC,MAAM,CAAC;YACzB,aAAa,EAAI,IAAI,CAAC,aAAa;YACnC,aAAa;YACb,IAAI,EAAa,IAAI,CAAC,IAAI;YAC1B,OAAO;YACP,UAAU,EAAO,IAAI;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,iBAAiB,CAAC,IAAkB,EAAE,MAAc;QAClE,OAAO,kBAAkB,CACvB,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EACnC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAE,CAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,cAAc,CAAC,OAA0B,EAAE,MAAc;QACvE,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF"}
|