From 0319458b36a5505359b15c215f3b10f4dd91b8fa Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Fri, 18 Oct 2024 16:30:16 -0400 Subject: [PATCH 01/11] asset: add AltLeaf type and encoder In this commit, we add the AltLeaf interface, which is used to carry non-Asset data inside a Tap commitment. The Asset type meets this interface, and we add a separate encoder that removes static fields for an Asset being used as an AltLeaf. --- asset/asset.go | 137 ++++++++++++++++++++++++++++++++++++++++++++++ asset/encoding.go | 92 +++++++++++++++++++++++++++++++ 2 files changed, 229 insertions(+) diff --git a/asset/asset.go b/asset/asset.go index 32d0963fe..ad5ba6839 100644 --- a/asset/asset.go +++ b/asset/asset.go @@ -106,6 +106,9 @@ var ( // asset split leaves. ZeroPrevID PrevID + // EmptyGenesis is the empty Genesis struct used for alt leaves. + EmptyGenesis Genesis + // NUMSBytes is the NUMs point we'll use for un-spendable script keys. // It was generated via a try-and-increment approach using the phrase // "taproot-assets" with SHA2-256. The code for the try-and-increment @@ -2238,3 +2241,137 @@ type ChainAsset struct { // available for coin selection. AnchorLeaseExpiry *time.Time } + +// An AltLeaf is a type that is used to carry arbitrary data, and does not +// represent a Taproot asset. An AltLeaf can be used to anchor other protocols +// alongside Taproot Asset transactions. +type AltLeaf[T any] interface { + // Copyable asserts that the target type of this interface satisfies + // the Copyable interface. + fn.Copyable[T] + + // ValidateAltLeaf ensures that an AltLeaf is valid. + ValidateAltLeaf() error + + // EncodeAltLeaf encodes an AltLeaf into a TLV stream. + EncodeAltLeaf(w io.Writer) error + + // DecodeAltLeaf decodes an AltLeaf from a TLV stream. + DecodeAltLeaf(r io.Reader) error +} + +// NewAltLeaf instantiates a new valid AltLeaf. +func NewAltLeaf(key ScriptKey, keyVersion ScriptVersion, + prevWitness []Witness) (*Asset, error) { + + if key.PubKey == nil { + return nil, fmt.Errorf("script key must be non-nil") + } + + return &Asset{ + Version: V0, + Genesis: EmptyGenesis, + Amount: 0, + LockTime: 0, + RelativeLockTime: 0, + PrevWitnesses: prevWitness, + SplitCommitmentRoot: nil, + GroupKey: nil, + ScriptKey: key, + ScriptVersion: keyVersion, + }, nil +} + +// CopyAltLeaf performs a deep copy of an AltLeaf. +func CopyAltLeaf[T AltLeaf[T]](a AltLeaf[T]) AltLeaf[T] { + return a.Copy() +} + +// CopyAltLeaves performs a deep copy of an AltLeaf slice. +func CopyAltLeaves[T AltLeaf[T]](a []AltLeaf[T]) []AltLeaf[T] { + return fn.Map(a, CopyAltLeaf[T]) +} + +// Validate checks that an Asset is a valid AltLeaf. An Asset used as an AltLeaf +// must meet these constraints: +// - Version must be V0. +// - Genesis must be the empty Genesis. +// - Amount, LockTime, and RelativeLockTime must be 0. +// - SplitCommitmentRoot and GroupKey must be nil. +// - ScriptKey must be non-nil. +func (a *Asset) ValidateAltLeaf() error { + if a.Version != V0 { + return fmt.Errorf("alt leaf version must be 0") + } + + if a.Genesis != EmptyGenesis { + return fmt.Errorf("alt leaf genesis must be the empty genesis") + } + + if a.Amount != 0 { + return fmt.Errorf("alt leaf amount must be 0") + } + + if a.LockTime != 0 { + return fmt.Errorf("alt leaf lock time must be 0") + } + + if a.RelativeLockTime != 0 { + return fmt.Errorf("alt leaf relative lock time must be 0") + } + + if a.SplitCommitmentRoot != nil { + return fmt.Errorf( + "alt leaf split commitment root must be empty", + ) + } + + if a.GroupKey != nil { + return fmt.Errorf("alt leaf group key must be empty") + } + + if a.ScriptKey.PubKey == nil { + return fmt.Errorf("alt leaf script key must be non-nil") + } + + return nil +} + +// encodeAltLeafRecords determines the set of non-nil records to include when +// encoding an AltLeaf. Since the Genesis, Group Key, Amount, and Version fields +// are static, we can omit those fields. +func (a *Asset) encodeAltLeafRecords() []tlv.Record { + records := make([]tlv.Record, 0, 3) + + // Always use the normal witness encoding, since the asset version is + // always V0. + if len(a.PrevWitnesses) > 0 { + records = append(records, NewLeafPrevWitnessRecord( + &a.PrevWitnesses, EncodeNormal, + )) + } + records = append(records, NewLeafScriptVersionRecord(&a.ScriptVersion)) + records = append(records, NewLeafScriptKeyRecord(&a.ScriptKey.PubKey)) + + // Add any unknown odd types that were encountered during decoding. + return CombineRecords(records, a.UnknownOddTypes) +} + +// EncodeAltLeaf encodes an AltLeaf into a TLV stream. +func (a *Asset) EncodeAltLeaf(w io.Writer) error { + stream, err := tlv.NewStream(a.encodeAltLeafRecords()...) + if err != nil { + return err + } + return stream.Encode(w) +} + +// DecodeAltLeaf decodes an AltLeaf from a TLV stream. The normal Asset decoder +// can be reused here, since any Asset field not encoded in the AltLeaf will +// be set to its default value, which matches the AltLeaf validity constraints. +func (a *Asset) DecodeAltLeaf(r io.Reader) error { + return a.Decode(r) +} + +// Ensure Asset implements the AltLeaf interface. +var _ AltLeaf[*Asset] = (*Asset)(nil) diff --git a/asset/encoding.go b/asset/encoding.go index 9978af78c..c28b01db8 100644 --- a/asset/encoding.go +++ b/asset/encoding.go @@ -32,6 +32,10 @@ var ( // ErrByteSliceTooLarge is returned when an encoded byte slice is too // large. ErrByteSliceTooLarge = errors.New("bytes: too large") + + // ErrDuplicateScriptKeys is returned when two alt leaves have the same + // script key. + ErrDuplicateScriptKeys = errors.New("alt leaf: duplicate script keys") ) func VarIntEncoder(w io.Writer, val any, buf *[8]byte) error { @@ -803,3 +807,91 @@ func DecodeTapLeaf(leafData []byte) (*txscript.TapLeaf, error) { return &leaf, nil } + +func AltLeavesEncoder(w io.Writer, val any, buf *[8]byte) error { + if t, ok := val.(*[]AltLeaf[*Asset]); ok { + if err := tlv.WriteVarInt(w, uint64(len(*t)), buf); err != nil { + return err + } + + var streamBuf bytes.Buffer + leafKeys := make(map[SerializedKey]struct{}) + for _, leaf := range *t { + // Check that this leaf has a unique script key compared + // to all previous leaves. This type assertion is safe + // as we've made an equivalent assertion above. + leafKey := ToSerialized(leaf.(*Asset).ScriptKey.PubKey) + _, ok := leafKeys[leafKey] + if ok { + return fmt.Errorf("%w: %x", + ErrDuplicateScriptKeys, leafKey) + } + + leafKeys[leafKey] = struct{}{} + err := leaf.EncodeAltLeaf(&streamBuf) + if err != nil { + return err + } + streamBytes := streamBuf.Bytes() + err = InlineVarBytesEncoder(w, &streamBytes, buf) + if err != nil { + return err + } + + streamBuf.Reset() + } + return nil + } + return tlv.NewTypeForEncodingErr(val, "[]AltLeaf") +} + +func AltLeavesDecoder(r io.Reader, val any, buf *[8]byte, l uint64) error { + // There is no limit on the number of alt leaves, but the total size of + // all alt leaves must be below 64 KiB. + if l > math.MaxUint16 { + return tlv.ErrRecordTooLarge + } + + if typ, ok := val.(*[]AltLeaf[*Asset]); ok { + // Each alt leaf is at least 42 bytes, which limits the total + // number of aux leaves. So we don't need to enforce a strict + // limit here. + numItems, err := tlv.ReadVarInt(r, buf) + if err != nil { + return err + } + + leaves := make([]AltLeaf[*Asset], 0, numItems) + leafKeys := make(map[SerializedKey]struct{}) + for i := uint64(0); i < numItems; i++ { + var streamBytes []byte + err = InlineVarBytesDecoder( + r, &streamBytes, buf, math.MaxUint16, + ) + if err != nil { + return err + } + + var leaf Asset + err = leaf.DecodeAltLeaf(bytes.NewReader(streamBytes)) + if err != nil { + return err + } + + // Check that each alt leaf has a unique script key. + leafKey := ToSerialized(leaf.ScriptKey.PubKey) + _, ok := leafKeys[leafKey] + if ok { + return fmt.Errorf("%w: %x", + ErrDuplicateScriptKeys, leafKey) + } + + leafKeys[leafKey] = struct{}{} + leaves = append(leaves, AltLeaf[*Asset](&leaf)) + } + + *typ = leaves + return nil + } + return tlv.NewTypeForEncodingErr(val, "[]*AltLeaf") +} From 5c5fcf8a4bb4b7081bd6b5e7cf348d7ccf186f22 Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Fri, 18 Oct 2024 16:31:34 -0400 Subject: [PATCH 02/11] tappsbt: add AltLeaves to VInput and VOutput --- tappsbt/decode.go | 20 ++++++++++++++++++-- tappsbt/encode.go | 18 ++++++++++++++++++ tappsbt/interface.go | 21 ++++++++++++++++++++- 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/tappsbt/decode.go b/tappsbt/decode.go index 3492608ee..c36f0a9ae 100644 --- a/tappsbt/decode.go +++ b/tappsbt/decode.go @@ -179,6 +179,9 @@ func (i *VInput) decode(pIn psbt.PInput) error { }, { key: PsbtKeyTypeInputTapAssetProof, decoder: proofDecoder(&i.Proof), + }, { + key: PsbtKeyTypeInputAltLeaves, + decoder: altLeavesDecoder(&i.AltLeaves), }} for idx := range mapping { @@ -308,8 +311,10 @@ func (o *VOutput) decode(pOut psbt.POutput, txOut *wire.TxOut) error { { key: PsbtKeyTypeOutputTapAssetRelativeLockTime, decoder: tlvDecoder(&o.RelativeLockTime, tlv.DUint64), - }, - } + }, { + key: PsbtKeyTypeOutputTapAltLeaves, + decoder: altLeavesDecoder(&o.AltLeaves), + }} for idx := range mapping { unknown, err := findCustomFieldsByKeyPrefix( @@ -366,6 +371,17 @@ func proofDecoder(p **proof.Proof) decoderFunc { } } +// altLeavesDecoder returns a decoder function that can handle nil alt leaves. +func altLeavesDecoder(a *[]AltLeafAsset) decoderFunc { + return func(key, byteVal []byte) error { + if len(byteVal) == 0 { + return nil + } + + return tlvDecoder(a, asset.AltLeavesDecoder)(key, byteVal) + } +} + // assetDecoder returns a decoder function that can handle nil assets. func assetDecoder(a **asset.Asset) decoderFunc { return func(key, byteVal []byte) error { diff --git a/tappsbt/encode.go b/tappsbt/encode.go index ed9fd8810..f7342c1b1 100644 --- a/tappsbt/encode.go +++ b/tappsbt/encode.go @@ -185,6 +185,9 @@ func (i *VInput) encode() (psbt.PInput, error) { { key: PsbtKeyTypeInputTapAssetProof, encoder: proofEncoder(i.Proof), + }, { + key: PsbtKeyTypeInputAltLeaves, + encoder: altLeavesEncoder(i.AltLeaves), }, } @@ -300,6 +303,9 @@ func (o *VOutput) encode(coinType uint32) (psbt.POutput, *wire.TxOut, error) { { key: PsbtKeyTypeOutputTapAssetRelativeLockTime, encoder: tlvEncoder(&o.RelativeLockTime, tlv.EUint64), + }, { + key: PsbtKeyTypeOutputTapAltLeaves, + encoder: altLeavesEncoder(o.AltLeaves), }, } @@ -377,6 +383,18 @@ func proofEncoder(p *proof.Proof) encoderFunc { } } +// altLeavesEncoder is an encoder that does nothing if the given alt leaf slice +// is nil. +func altLeavesEncoder(a []AltLeafAsset) encoderFunc { + if a == nil { + return func([]byte) ([]*customPsbtField, error) { + return nil, nil + } + } + + return tlvEncoder(&a, asset.AltLeavesEncoder) +} + // assetEncoder is an encoder that does nothing if the given asset is nil. func assetEncoder(a *asset.Asset) encoderFunc { if a == nil { diff --git a/tappsbt/interface.go b/tappsbt/interface.go index fd1872aa1..b94bbe20f 100644 --- a/tappsbt/interface.go +++ b/tappsbt/interface.go @@ -42,6 +42,7 @@ var ( PsbtKeyTypeInputTapAnchorTapscriptSibling = []byte{0x78} PsbtKeyTypeInputTapAsset = []byte{0x79} PsbtKeyTypeInputTapAssetProof = []byte{0x7a} + PsbtKeyTypeInputAltLeaves = []byte{0x7b} PsbtKeyTypeOutputTapType = []byte{0x70} PsbtKeyTypeOutputTapIsInteractive = []byte{0x71} @@ -57,6 +58,7 @@ var ( PsbtKeyTypeOutputTapAssetProofSuffix = []byte{0x7b} PsbtKeyTypeOutputTapAssetLockTime = []byte{0x7c} PsbtKeyTypeOutputTapAssetRelativeLockTime = []byte{0x7d} + PsbtKeyTypeOutputTapAltLeaves = []byte{0x7e} ) // The following keys are used as custom fields on the BTC level anchor @@ -104,6 +106,9 @@ type bip32DerivationPredicate func(*psbt.Bip32Derivation) bool // BIP-0032 derivation paths. type taprootBip32DerivationPredicate func(*psbt.TaprootBip32Derivation) bool +// AltLeafAsset is an AltLeaf backed by an Asset object. +type AltLeafAsset = asset.AltLeaf[*asset.Asset] + var ( // VOutIsSplitRoot is a predicate that returns true if the virtual // output is a split root output. @@ -370,6 +375,12 @@ type VInput struct { // Proof is a transition proof that proves the asset being spent was // committed to in the anchor transaction above. Proof *proof.Proof + + // AltLeaves represent data used to construct an Asset commitment, that + // will be inserted in the input anchor Tap commitment. These + // data-carrying leaves are used for a purpose distinct from + // representing individual Taproot Assets. + AltLeaves []AltLeafAsset } // Copy creates a deep copy of the VInput. @@ -382,7 +393,8 @@ func (i *VInput) Copy() *VInput { // We never expect the individual fields of the proof to change // while it is assigned to a virtual input. So not deep copying // it here is fine. - Proof: i.Proof, + Proof: i.Proof, + AltLeaves: asset.CopyAltLeaves(i.AltLeaves), } } @@ -563,6 +575,12 @@ type VOutput struct { // since the header information needs to be added once the anchor // transaction was confirmed in a block. ProofSuffix *proof.Proof + + // AltLeaves represent data used to construct an Asset commitment, that + // will be inserted in the output anchor Tap commitment. These + // data-carrying leaves are used for a purpose distinct from + // representing individual Taproot Assets. + AltLeaves []AltLeafAsset } // Copy creates a deep copy of the VOutput. @@ -590,6 +608,7 @@ func (o *VOutput) Copy() *VOutput { ScriptKey: o.ScriptKey, ProofDeliveryAddress: o.ProofDeliveryAddress, ProofSuffix: o.ProofSuffix, + AltLeaves: asset.CopyAltLeaves(o.AltLeaves), } } From 4915ff5847d239254a17b5e5a8a3f520d4a0ff37 Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Fri, 18 Oct 2024 16:34:01 -0400 Subject: [PATCH 03/11] test+tappsbt: refactor asset gen for VPackets --- internal/test/helpers.go | 14 +++++++++----- tappsbt/mock.go | 24 ++++++++++++++++++------ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/internal/test/helpers.go b/internal/test/helpers.go index af6f21d0a..d5ccedeed 100644 --- a/internal/test/helpers.go +++ b/internal/test/helpers.go @@ -103,16 +103,20 @@ func RandPrivKey(_ testing.TB) *btcec.PrivateKey { return priv } +func RandKeyLoc() keychain.KeyLocator { + return keychain.KeyLocator{ + Index: RandInt[uint32](), + Family: keychain.KeyFamily(RandInt[uint32]()), + } +} + func RandKeyDesc(t testing.TB) (keychain.KeyDescriptor, *btcec.PrivateKey) { priv, err := btcec.NewPrivateKey() require.NoError(t, err) return keychain.KeyDescriptor{ - PubKey: priv.PubKey(), - KeyLocator: keychain.KeyLocator{ - Index: RandInt[uint32](), - Family: keychain.KeyFamily(RandInt[uint32]()), - }, + PubKey: priv.PubKey(), + KeyLocator: RandKeyLoc(), }, priv } diff --git a/tappsbt/mock.go b/tappsbt/mock.go index 8f052adcb..3aa390bb8 100644 --- a/tappsbt/mock.go +++ b/tappsbt/mock.go @@ -37,6 +37,22 @@ var ( ) ) + +func RandAssetForPacket(t testing.TB, assetType asset.Type, + desc keychain.KeyDescriptor) *asset.Asset { + + randAsset := asset.RandAsset(t, assetType) + randAsset.ScriptKey = asset.NewScriptKeyBip86(desc) + + // The raw key won't be serialized within the asset, so let's blank it + // out here to get a fully, byte-by-byte comparable PSBT. + randAsset.GroupKey.RawKey = keychain.KeyDescriptor{} + randAsset.GroupKey.Witness = nil + randAsset.ScriptKey.TweakedScriptKey = nil + + return randAsset +} + // RandPacket generates a random virtual packet for testing purposes. func RandPacket(t testing.TB, setVersion bool) *VPacket { testPubKey := test.RandPubKey(t) @@ -66,16 +82,12 @@ func RandPacket(t testing.TB, setVersion bool) *VPacket { testAsset := asset.RandAsset(t, asset.Normal) testAsset.ScriptKey = inputScriptKey - testOutputAsset := asset.RandAsset(t, asset.Normal) - testOutputAsset.ScriptKey = asset.NewScriptKeyBip86(keyDesc) - // The raw key won't be serialized within the asset, so let's blank it // out here to get a fully, byte-by-byte comparable PSBT. testAsset.GroupKey.RawKey = keychain.KeyDescriptor{} testAsset.GroupKey.Witness = nil - testOutputAsset.GroupKey.RawKey = keychain.KeyDescriptor{} - testOutputAsset.GroupKey.Witness = nil - testOutputAsset.ScriptKey.TweakedScriptKey = nil + + testOutputAsset := RandAssetForPacket(t, asset.Normal, keyDesc) leaf1 := txscript.TapLeaf{ LeafVersion: txscript.BaseLeafVersion, Script: []byte("not a valid script"), From 7ec8b50c748d9a16ca86ab2525c26ed3bb05d75d Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Fri, 18 Oct 2024 16:36:29 -0400 Subject: [PATCH 04/11] tappsbt: populate AltLeaves in tests --- tapchannelmsg/records_test.go | 2 +- tappsbt/decode_test.go | 6 +- tappsbt/encode_test.go | 2 +- tappsbt/mock.go | 152 ++++++++++++++++++++++------------ 4 files changed, 102 insertions(+), 60 deletions(-) diff --git a/tapchannelmsg/records_test.go b/tapchannelmsg/records_test.go index a4f087eaa..e08145aff 100644 --- a/tapchannelmsg/records_test.go +++ b/tapchannelmsg/records_test.go @@ -489,7 +489,7 @@ func TestContractResolution(t *testing.T) { testPkts := make([]*tappsbt.VPacket, numPackets) for i := 0; i < numPackets; i++ { - testPkts[i] = tappsbt.RandPacket(t, true) + testPkts[i] = tappsbt.RandPacket(t, true, false) } testRes := NewContractResolution(testPkts) diff --git a/tappsbt/decode_test.go b/tappsbt/decode_test.go index 8d8beab17..6e5537524 100644 --- a/tappsbt/decode_test.go +++ b/tappsbt/decode_test.go @@ -146,18 +146,18 @@ func TestEncodingDecoding(t *testing.T) { }, { name: "random packet", pkg: func(t *testing.T) *VPacket { - return RandPacket(t, true) + return RandPacket(t, true, true) }, }, { name: "random packet with no explicit version", pkg: func(t *testing.T) *VPacket { - return RandPacket(t, false) + return RandPacket(t, false, true) }, }, { name: "invalid packet version", pkg: func(t *testing.T) *VPacket { validVers := fn.NewSet(uint8(V0), uint8(V1)) - pkt := RandPacket(t, false) + pkt := RandPacket(t, false, true) invalidPktVersion := test.RandInt[uint8]() for validVers.Contains(invalidPktVersion) { diff --git a/tappsbt/encode_test.go b/tappsbt/encode_test.go index 672df1aea..ca0a8e700 100644 --- a/tappsbt/encode_test.go +++ b/tappsbt/encode_test.go @@ -11,7 +11,7 @@ import ( func TestEncodeAsPsbt(t *testing.T) { t.Parallel() - pkg := RandPacket(t, test.RandBool()) + pkg := RandPacket(t, test.RandBool(), test.RandBool()) packet, err := pkg.EncodeAsPsbt() require.NoError(t, err) diff --git a/tappsbt/mock.go b/tappsbt/mock.go index 3aa390bb8..647997bc4 100644 --- a/tappsbt/mock.go +++ b/tappsbt/mock.go @@ -37,6 +37,37 @@ var ( ) ) +// RandAltLeaf generates a random Asset that is a valid AltLeaf. +func RandAltLeaf(t testing.TB) *asset.Asset { + randWitness := []asset.Witness{ + {TxWitness: test.RandTxWitnesses(t)}, + } + randKey := asset.RandScriptKey(t) + randVersion := asset.ScriptVersion(test.RandInt[uint16]()) + randLeaf, err := asset.NewAltLeaf(randKey, randVersion, randWitness) + require.NoError(t, err) + + require.NoError(t, randLeaf.ValidateAltLeaf()) + + return randLeaf +} + +// RandAltLeaves generates a set of random number of random alt leaves. +func RandAltLeaves(t testing.TB) []AltLeafAsset { + // Limit the number of leaves to keep the test vectors small. + maxLeaves := int32(4) + numLeaves := test.RandInt31n(maxLeaves) + if numLeaves == 0 { + return nil + } + + altLeaves := make([]AltLeafAsset, 0, numLeaves) + for range numLeaves { + altLeaves = append(altLeaves, AltLeafAsset(RandAltLeaf(t))) + } + + return altLeaves +} func RandAssetForPacket(t testing.TB, assetType asset.Type, desc keychain.KeyDescriptor) *asset.Asset { @@ -54,7 +85,7 @@ func RandAssetForPacket(t testing.TB, assetType asset.Type, } // RandPacket generates a random virtual packet for testing purposes. -func RandPacket(t testing.TB, setVersion bool) *VPacket { +func RandPacket(t testing.TB, setVersion, altLeaves bool) *VPacket { testPubKey := test.RandPubKey(t) op := test.RandOp(t) keyDesc := keychain.KeyDescriptor{ @@ -117,61 +148,72 @@ func RandPacket(t testing.TB, setVersion bool) *VPacket { courierAddress, err := url.Parse("https://example.com") require.NoError(t, err) + randVInput := VInput{ + PrevID: asset.PrevID{ + OutPoint: op, + ID: asset.RandID(t), + ScriptKey: asset.RandSerializedKey(t), + }, + Anchor: Anchor{ + Value: 777, + PkScript: []byte("anchor pkscript"), + SigHashType: txscript.SigHashSingle, + InternalKey: testPubKey, + MerkleRoot: []byte("merkle root"), + TapscriptSibling: []byte("sibling"), + Bip32Derivation: bip32Derivations, + TrBip32Derivation: trBip32Derivations, + }, + Proof: &inputProof, + } + + randVOutput1 := VOutput{ + Amount: 123, + AssetVersion: asset.Version( + test.RandIntn(2), + ), + Type: TypeSplitRoot, + Interactive: true, + AnchorOutputIndex: 0, + AnchorOutputInternalKey: testPubKey, + AnchorOutputBip32Derivation: bip32Derivations, + AnchorOutputTaprootBip32Derivation: trBip32Derivations, + Asset: testOutputAsset, + ScriptKey: testOutputAsset.ScriptKey, + SplitAsset: testOutputAsset, + AnchorOutputTapscriptSibling: testPreimage1, + ProofDeliveryAddress: courierAddress, + ProofSuffix: &inputProof, + RelativeLockTime: 345, + LockTime: 456, + } + + randVOutput2 := VOutput{ + Amount: 345, + AssetVersion: asset.Version( + test.RandIntn(2), + ), + Type: TypeSplitRoot, + Interactive: false, + AnchorOutputIndex: 1, + AnchorOutputInternalKey: testPubKey, + AnchorOutputBip32Derivation: bip32Derivations, + AnchorOutputTaprootBip32Derivation: trBip32Derivations, + Asset: testOutputAsset, + ScriptKey: testOutputAsset.ScriptKey, + AnchorOutputTapscriptSibling: &testPreimage2, + } + + if altLeaves { + randVInput.AltLeaves = RandAltLeaves(t) + randVOutput1.AltLeaves = RandAltLeaves(t) + randVOutput2.AltLeaves = RandAltLeaves(t) + } + vPacket := &VPacket{ - Inputs: []*VInput{{ - PrevID: asset.PrevID{ - OutPoint: op, - ID: asset.RandID(t), - ScriptKey: asset.RandSerializedKey(t), - }, - Anchor: Anchor{ - Value: 777, - PkScript: []byte("anchor pkscript"), - SigHashType: txscript.SigHashSingle, - InternalKey: testPubKey, - MerkleRoot: []byte("merkle root"), - TapscriptSibling: []byte("sibling"), - Bip32Derivation: bip32Derivations, - TrBip32Derivation: trBip32Derivations, - }, - Proof: &inputProof, - }, { - // Empty input. - }}, - Outputs: []*VOutput{{ - Amount: 123, - AssetVersion: asset.Version( - test.RandIntn(2), - ), - Type: TypeSplitRoot, - Interactive: true, - AnchorOutputIndex: 0, - AnchorOutputInternalKey: testPubKey, - AnchorOutputBip32Derivation: bip32Derivations, - AnchorOutputTaprootBip32Derivation: trBip32Derivations, - Asset: testOutputAsset, - ScriptKey: testOutputAsset.ScriptKey, - SplitAsset: testOutputAsset, - AnchorOutputTapscriptSibling: testPreimage1, - ProofDeliveryAddress: courierAddress, - ProofSuffix: &inputProof, - RelativeLockTime: 345, - LockTime: 456, - }, { - Amount: 345, - AssetVersion: asset.Version( - test.RandIntn(2), - ), - Type: TypeSplitRoot, - Interactive: false, - AnchorOutputIndex: 1, - AnchorOutputInternalKey: testPubKey, - AnchorOutputBip32Derivation: bip32Derivations, - AnchorOutputTaprootBip32Derivation: trBip32Derivations, - Asset: testOutputAsset, - ScriptKey: testOutputAsset.ScriptKey, - AnchorOutputTapscriptSibling: &testPreimage2, - }}, + // Empty input. + Inputs: []*VInput{&randVInput, {}}, + Outputs: []*VOutput{&randVOutput1, &randVOutput2}, ChainParams: testParams, } vPacket.SetInputAsset(0, testAsset) From ab2c27252e036eb4d63c8b2f98f4f8e050d8ce6b Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Mon, 11 Nov 2024 19:26:01 -0500 Subject: [PATCH 05/11] tappsbt: test AltLeaves scriptkey uniqueness, size --- tappsbt/decode_test.go | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tappsbt/decode_test.go b/tappsbt/decode_test.go index 6e5537524..d6cfff1a7 100644 --- a/tappsbt/decode_test.go +++ b/tappsbt/decode_test.go @@ -16,6 +16,7 @@ import ( "github.com/lightninglabs/taproot-assets/fn" "github.com/lightninglabs/taproot-assets/internal/test" "github.com/lightninglabs/taproot-assets/mssmt" + "github.com/lightningnetwork/lnd/tlv" "github.com/stretchr/testify/require" ) @@ -168,6 +169,51 @@ func TestEncodingDecoding(t *testing.T) { return pkt }, decodeErr: ErrInvalidVPacketVersion, + }, { + name: "random packet with colliding alt leaves", + pkg: func(t *testing.T) *VPacket { + pkt := RandPacket(t, true, true) + firstLeaf := RandAltLeaf(t) + secondLeaf := RandAltLeaf(t) + + firstLeafKey := asset.ToSerialized( + firstLeaf.ScriptKey.PubKey, + ) + leafKeyCopy, err := firstLeafKey.ToPubKey() + require.NoError(t, err) + + secondLeaf.ScriptKey = asset.NewScriptKey(leafKeyCopy) + altLeaves := []AltLeafAsset{firstLeaf, secondLeaf} + + pkt.Inputs[0].AltLeaves = asset.CopyAltLeaves(altLeaves) + pkt.Outputs[0].AltLeaves = asset.CopyAltLeaves( + altLeaves, + ) + pkt.Outputs[1].AltLeaves = asset.CopyAltLeaves( + altLeaves, + ) + + return pkt + }, + encodeErr: asset.ErrDuplicateScriptKeys, + }, { + name: "random packet with excessive alt leaves", + pkg: func(t *testing.T) *VPacket { + pkt := RandPacket(t, true, true) + + numLeaves := 2000 + altLeaves := make([]AltLeafAsset, 0, numLeaves) + for range numLeaves { + altLeaves = append(altLeaves, RandAltLeaf(t)) + } + + pkt.Inputs[0].AltLeaves = altLeaves + pkt.Outputs[0].AltLeaves = altLeaves + pkt.Outputs[1].AltLeaves = altLeaves + + return pkt + }, + decodeErr: tlv.ErrRecordTooLarge, }} for _, testCase := range testCases { From 4e3e4c8894dfd97ef64dee2b28ba356f54b19c3c Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Fri, 18 Oct 2024 16:36:57 -0400 Subject: [PATCH 06/11] tappsbt: update BIP test vectors --- tappsbt/mock.go | 60 +++ tappsbt/testdata/psbt_encoding_generated.json | 494 ++++++++++++++---- 2 files changed, 447 insertions(+), 107 deletions(-) diff --git a/tappsbt/mock.go b/tappsbt/mock.go index 647997bc4..49bf2fcbc 100644 --- a/tappsbt/mock.go +++ b/tappsbt/mock.go @@ -337,6 +337,28 @@ func NewTestFromVInput(t testing.TB, i *VInput) *TestVInput { ti.Proof = proof.NewTestFromProof(t, i.Proof) } + if len(i.AltLeaves) > 0 { + // Assert that the concrete type of AltLeaf is supported. + require.IsTypef( + t, &asset.Asset{}, i.AltLeaves[0], + "AltLeaves must be of type *asset.Asset", + ) + + ti.AltLeaves = make([]*asset.TestAsset, 0, len(i.AltLeaves)) + for idx := range i.AltLeaves { + // We also need a type assertion on each leaf. + leaf, ok := i.AltLeaves[idx].(*asset.Asset) + if !ok { + t.Errorf("AltLeaf must be of type *asset.Asset") + } + + ti.AltLeaves = append( + ti.AltLeaves, + asset.NewTestFromAsset(t, leaf), + ) + } + } + return ti } @@ -349,6 +371,7 @@ type TestVInput struct { Anchor *TestAnchor `json:"anchor"` Asset *asset.TestAsset `json:"asset"` Proof *proof.TestProof `json:"proof"` + AltLeaves []*asset.TestAsset `json:"alt_leaves"` } func (ti *TestVInput) ToVInput(t testing.TB) *VInput { @@ -391,6 +414,13 @@ func (ti *TestVInput) ToVInput(t testing.TB) *VInput { vi.Proof = ti.Proof.ToProof(t) } + if len(ti.AltLeaves) > 0 { + vi.AltLeaves = make([]AltLeafAsset, len(ti.AltLeaves)) + for idx, leaf := range ti.AltLeaves { + vi.AltLeaves[idx] = leaf.ToAsset(t) + } + } + return vi } @@ -629,6 +659,28 @@ func NewTestFromVOutput(t testing.TB, v *VOutput, vo.SplitAsset = asset.NewTestFromAsset(t, v.SplitAsset) } + if len(v.AltLeaves) > 0 { + // Assert that the concrete type of AltLeaf is supported. + switch v.AltLeaves[0].(type) { + case *asset.Asset: + default: + t.Errorf("AltLeaves must be of type *asset.Asset") + } + + vo.AltLeaves = make([]*asset.TestAsset, 0, len(vo.AltLeaves)) + for idx := range v.AltLeaves { + // We also need a type assertion on each leaf. + leaf, ok := v.AltLeaves[idx].(*asset.Asset) + if !ok { + t.Errorf("AltLeaf must be of type *asset.Asset") + } + + vo.AltLeaves = append( + vo.AltLeaves, + asset.NewTestFromAsset(t, leaf), + ) + } + } return vo } @@ -654,6 +706,7 @@ type TestVOutput struct { ProofSuffix *proof.TestProof `json:"proof_suffix"` RelativeLockTime uint64 `json:"relative_lock_time"` LockTime uint64 `json:"lock_time"` + AltLeaves []*asset.TestAsset `json:"alt_leaves"` } func (to *TestVOutput) ToVOutput(t testing.TB) *VOutput { @@ -746,5 +799,12 @@ func (to *TestVOutput) ToVOutput(t testing.TB) *VOutput { ) } + if len(to.AltLeaves) > 0 { + v.AltLeaves = make([]AltLeafAsset, len(to.AltLeaves)) + for idx, leaf := range to.AltLeaves { + v.AltLeaves[idx] = leaf.ToAsset(t) + } + } + return v } diff --git a/tappsbt/testdata/psbt_encoding_generated.json b/tappsbt/testdata/psbt_encoding_generated.json index 72db4cc27..d1e3d6ed5 100644 --- a/tappsbt/testdata/psbt_encoding_generated.json +++ b/tappsbt/testdata/psbt_encoding_generated.json @@ -24,7 +24,8 @@ "tr_bip32_derivation": null }, "asset": null, - "proof": null + "proof": null, + "alt_leaves": null } ], "outputs": [ @@ -48,7 +49,8 @@ "proof_delivery_address": "", "proof_suffix": null, "relative_lock_time": 0, - "lock_time": 0 + "lock_time": 0, + "alt_leaves": null }, { "amount": 2703501726821866378, @@ -70,7 +72,8 @@ "proof_delivery_address": "hashmail://rand.hashmail.proof.courier:443", "proof_suffix": null, "relative_lock_time": 0, - "lock_time": 0 + "lock_time": 0, + "alt_leaves": null }, { "amount": 0, @@ -92,7 +95,8 @@ "proof_delivery_address": "", "proof_suffix": null, "relative_lock_time": 0, - "lock_time": 0 + "lock_time": 0, + "alt_leaves": null } ], "version": 1, @@ -382,7 +386,62 @@ "tapscript_root": "703934bf50a28da102975deda77e758579ea3dfe4136abf752b3b8271d03e944" }, "unknown_odd_types": null - } + }, + "alt_leaves": [ + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": [ + "fb4ffb0019b79bf504cf", + "b57c7601232d589bacce", + "a9d6e263e25c27741d3f", + "6c62cbbb15d9afbcbf7f" + ], + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 21403, + "script_key": "024b9113bc1d1c25ed6f09dd21245aa2fdac9c210139b17c30ff328200cb8aed00", + "group_key": null, + "unknown_odd_types": null + }, + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": [ + "eb233ac1c0e05447f4ba" + ], + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 35444, + "script_key": "025202c1f0b42c64163f217af54b6ccdcaf9589c6740f92bf5951d870bc2258802", + "group_key": null, + "unknown_odd_types": null + } + ] }, { "bip32_derivation": null, @@ -405,7 +464,8 @@ "tr_bip32_derivation": null }, "asset": null, - "proof": null + "proof": null, + "alt_leaves": null } ], "outputs": [ @@ -691,7 +751,63 @@ "unknown_odd_types": null }, "relative_lock_time": 345, - "lock_time": 456 + "lock_time": 456, + "alt_leaves": [ + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": [ + "717d3aba53af19779cb2", + "948b6570ffa0b773963c", + "130ad797ddeafe4e3ad2", + "9b5125210f0ef1c31409" + ], + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 4391, + "script_key": "020c86f9c8717be735373d5ed6f1df70d24b1e3b999a0eb963d631f857f34113c6", + "group_key": null, + "unknown_odd_types": null + }, + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": [ + "a32cbd9c2887aa113df2", + "468928d5a23b9ca740f8" + ], + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 64714, + "script_key": "0293cf788bcb2bd4216dde027b38f6644153510192097cb8f25e44e9af1f55e1d7", + "group_key": null, + "unknown_odd_types": null + } + ] }, { "amount": 345, @@ -768,13 +884,41 @@ "proof_delivery_address": "", "proof_suffix": null, "relative_lock_time": 0, - "lock_time": 0 + "lock_time": 0, + "alt_leaves": [ + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": [ + "a53dbf8e7ded323cb76f", + "0d3fac476c9fb03fc922" + ], + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 9560, + "script_key": "020fe830afb86f1b8b56c4d09cb6069ae0e4e2a09a8c0f38ebf29ce0487fc4dd02", + "group_key": null, + "unknown_odd_types": null + } + ] } ], "version": 0, "chain_params_hrp": "tapbc" }, - "expected": "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QgFAiSPLtHNohncvRWwoHQk/n7a8MULWAJb/GEUQz2aVU195KmdkhKuRntep5m+WMupCDc45iNjwaCchYvK7+IcOQw4CAAAQIQJfz4z3uiy5VzldF476bYAhPcAEeJY62tpFvtuRuEh0jxEhA2UTAl6KbpcUwff9S4huPQmJWEC1Px3/9/J106rt/TLoDKUABAAAAAACIQI3K/m5u8B9sw33y7+rryWSU8fMHe2lOCuLlVsPj3r3pgN6AUkAAQACIL+vqU644RS3UJXQrOaGM50+tQvgD4FKniYSXU0+uPAaBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8FBADAAQEN/QFOA6UABAAAAAICIQKdduJO68wj8q4t0El3US2r3Jv8RaCPKegGybH+dotn2AN6AUkAAQACIL+vqU644RS3UJXQrOaGM50+tQvgD4FKniYSXU0+uPAaBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8FBADAAQF3AAQAAAADAiECrlX4aHDxCYQOkF66cz+iW8Mbdj8klIK3zpN2KpsLjR4FTAFBARqsJUCKTSgjPNMl+u+t6e8Prnb8seNdCBQARbuqOBsw7vRuRjA1VmAu8TzvXS//Pcai7OZlf8keSwpbui3tTv8DBADAAQIEAQEuAAQAAAAEAiECNMRdtB31mzfE7bm6QkP7+dW0STw/tQdWi6dptA/0FrQFAwQBAQ+fAAQAAAAEAiEC3DSUSNywYyaZaAbttpBj5yJY+cEct5LWT8co3tD8+TwDdAFJAAEAAiC/r6lOuOEUt1CV0KzmhjOdPrUL4A+BSp4mEl1NPrjwGgQiAAD//////////////////////////////////////////wInAAEAAiIAAP//////////////////////////////////////////ER4AAQACGXF1b3RoIHRoZSByYXZlbiBuZXZlcm1vcmUVCQIDZm9vA2JhchYEAAAAKheKmiZvl2R5Szc5cBFegu1vQSXI+nMR5Nfe+pItqud4Zme+jpmBQDdmMDFm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+pItqud4Zme+jpmBQDdmMDFmMWY1NzM5ODE2NTlhNDRmZjE3YTRjNzIxNWEzYjUzOWViMWU1ODQ5YzYwNzdkYmI1NzIyZjU3MTdhMjh/AfH1c5gWWaRP8XpMchWjtTnrHlhJxgd9u1ci9XF6KCRPzTYABAEABgEBBwP9BTkJAQYLrQGrAWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAUCJI8u0c2iGdy9FbCgdCT+ftrwxQtYAlv8YRRDPZpVTX3kqZ2SEq5Ge16nmb5Yy6kINzjmI2PBoJyFi8rv4hw5DDgIAABAhAl/PjPe6LLlXOV0XjvptgCE9wAR4ljra2kW+25G4SHSPESEDZRMCXopulxTB9/1LiG49CYlYQLU/Hf/38nXTqu39MugMpQAEAAAAAAIhAjcr+bm7wH2zDffLv6uvJZJTx8wd7aU4K4uVWw+PevemA3oBSQABAAIgv6+pTrjhFLdQldCs5oYznT61C+APgUqeJhJdTT648BoEIgAA//////////////////////////////////////////8CJwABAAIiAAD//////////////////////////////////////////wUEAMABAQ39AU4DpQAEAAAAAgIhAp124k7rzCPyri3QSXdRLavcm/xFoI8p6AbJsf52i2fYA3oBSQABAAIgv6+pTrjhFLdQldCs5oYznT61C+APgUqeJhJdTT648BoEIgAA//////////////////////////////////////////8CJwABAAIiAAD//////////////////////////////////////////wUEAMABAXcABAAAAAMCIQKuVfhocPEJhA6QXrpzP6Jbwxt2PySUgrfOk3YqmwuNHgVMAUEBGqwlQIpNKCM80yX6763p7w+udvyx410IFABFu6o4GzDu9G5GMDVWYC7xPO9dL/89xqLs5mV/yR5LClu6Le1O/wMEAMABAgQBAS4ABAAAAAQCIQI0xF20HfWbN8TtubpCQ/v51bRJPD+1B1aLp2m0D/QWtAUDBAEBD58ABAAAAAQCIQLcNJRI3LBjJploBu22kGPnIlj5wRy3ktZPxyje0Pz5PAN0AUkAAQACIL+vqU644RS3UJXQrOaGM50+tQvgD4FKniYSXU0+uPAaBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8RHgABAAIZcXVvdGggdGhlIHJhdmVuIG5ldmVybW9yZRUJAgNmb28DYmFyFgQAAAAqF4qaJm+XZHlLNzlwEV6C7W9BJcj6cxHk1976ki2q53hmZ76OmYFAN2YwMWYxZjU3Mzk4MTY1OWE0NGZmMTdhNGM3MjE1YTNiNTM5ZWIxZTU4NDljNjA3N2RiYjU3MjJmNTcxN2EyOH8B8fVzmBZZpE/xekxyFaO1OeseWEnGB327VyL1cXooJE/NNgAZQQNlEwJeim6XFMH3/UuIbj0JiVhAtT8d//fyddOq7f0y6HA5NL9Qoo2hApdd7ad+dYV56j3+QTar91KzuCcdA+lEAXwIAAAAAAAAAcgBfQgAAAAAAAABWQABcAEBAXEBAAFyCAAAAAAAAAABAXMhAml5LdUxPSbf6UTgHWrYoODDjbWvR96vFZgc+d293qwbInQCaXkt1TE9Jt/pROAdatig4MONta9H3q8VmBz53b3erBsYAAAAAPkDAIAAAACAewAAgAAAAADIAQAAIXVpeS3VMT0m3+lE4B1q2KDgw421r0ferxWYHPndvd6sGxkAAAAAAPkDAIAAAACAewAAgAAAAADIAQAAAXb9kgEAAQACig8maG01TN4WB+4pSznzK3x4Irpk+Eq0PKDG5rkcH9O+Jvvym0BhMGYzY2E5OTM2ZTg0NjFmMTBkNzdjOTZlYTgwYTdhNjY1ZjYwNmY2YTYzYjdmM2RmZDI1NjdjMTg5NzllNGQ2oPPKmTboRh8Q13yW6oCnpmX2BvamO389/SVnwYl55NZBQ5CJAAQBAAYF/mycZLgLrQGrAWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAUBl3CfAGrTgMKXElbC8cFD0Sdj7ecPUxcdBiotYOjaCMmk1lax1n2+gIQEXLvB9fWcdwZG1poRoMi5wQWX5l7zSDgIAABAhAj0vVrH8STfEJrW2VeEOp7z3AxhvfOlT5rOdVUJo5ey9ESECE+F2bru8HBjIagJKHO4IlcW2NJxDZZRsEoskaFcMdyMBeEEBGXziLRK8WplYdTOvQRafodyf+GbA1NMCEVjWKTNnLREZfOItErxamVh1M69BFp+h3J/4ZsDU0wIRWNYpM2ctEQF5AQABfAgAAAAAAAAAAAF9CAAAAAAAAAAAAA==", + "expected": "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QgFAiSPLtHNohncvRWwoHQk/n7a8MULWAJb/GEUQz2aVU195KmdkhKuRntep5m+WMupCDc45iNjwaCchYvK7+IcOQw4CAAAQIQJfz4z3uiy5VzldF476bYAhPcAEeJY62tpFvtuRuEh0jxEhA2UTAl6KbpcUwff9S4huPQmJWEC1Px3/9/J106rt/TLoDKUABAAAAAACIQI3K/m5u8B9sw33y7+rryWSU8fMHe2lOCuLlVsPj3r3pgN6AUkAAQACIL+vqU644RS3UJXQrOaGM50+tQvgD4FKniYSXU0+uPAaBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8FBADAAQEN/QFOA6UABAAAAAICIQKdduJO68wj8q4t0El3US2r3Jv8RaCPKegGybH+dotn2AN6AUkAAQACIL+vqU644RS3UJXQrOaGM50+tQvgD4FKniYSXU0+uPAaBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8FBADAAQF3AAQAAAADAiECrlX4aHDxCYQOkF66cz+iW8Mbdj8klIK3zpN2KpsLjR4FTAFBARqsJUCKTSgjPNMl+u+t6e8Prnb8seNdCBQARbuqOBsw7vRuRjA1VmAu8TzvXS//Pcai7OZlf8keSwpbui3tTv8DBADAAQIEAQEuAAQAAAAEAiECNMRdtB31mzfE7bm6QkP7+dW0STw/tQdWi6dptA/0FrQFAwQBAQ+fAAQAAAAEAiEC3DSUSNywYyaZaAbttpBj5yJY+cEct5LWT8co3tD8+TwDdAFJAAEAAiC/r6lOuOEUt1CV0KzmhjOdPrUL4A+BSp4mEl1NPrjwGgQiAAD//////////////////////////////////////////wInAAEAAiIAAP//////////////////////////////////////////ER4AAQACGXF1b3RoIHRoZSByYXZlbiBuZXZlcm1vcmUVCQIDZm9vA2JhchYEAAAAKheKmiZvl2R5Szc5cBFegu1vQSXI+nMR5Nfe+pItqud4Zme+jpmBQDdmMDFm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6nLpNGpdWG8CMUYP1SrZiVvIJA2HHe9SLbM5wYbBFJhDpISJkObduaYGX0vBQir1P0vIbxsISokYn/AxbNwQUR2nHadX5VPK2p87WxQ085I2c621fYPKrDksOK8VbW/DC1X61BEt8rlVMeaBFOmtEAEecve3z9sOCv0BlgABAAKKmiZvl2R5Szc5cBFegu1vQSXI+nMR5Nfe+pItqud4Zme+jpmBQDdmMDFmMWY1NzM5ODE2NTlhNDRmZjE3YTRjNzIxNWEzYjUzOWViMWU1ODQ5YzYwNzdkYmI1NzIyZjU3MTdhMjh/AfH1c5gWWaRP8XpMchWjtTnrHlhJxgd9u1ci9XF6KCRPzTYABAEABgEBBwP9BTkJAQYLrQGrAWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAUCJI8u0c2iGdy9FbCgdCT+ftrwxQtYAlv8YRRDPZpVTX3kqZ2SEq5Ge16nmb5Yy6kINzjmI2PBoJyFi8rv4hw5DDgIAABAhAl/PjPe6LLlXOV0XjvptgCE9wAR4ljra2kW+25G4SHSPESEDZRMCXopulxTB9/1LiG49CYlYQLU/Hf/38nXTqu39MugMpQAEAAAAAAIhAjcr+bm7wH2zDffLv6uvJZJTx8wd7aU4K4uVWw+PevemA3oBSQABAAIgv6+pTrjhFLdQldCs5oYznT61C+APgUqeJhJdTT648BoEIgAA//////////////////////////////////////////8CJwABAAIiAAD//////////////////////////////////////////wUEAMABAQ39AU4DpQAEAAAAAgIhAp124k7rzCPyri3QSXdRLavcm/xFoI8p6AbJsf52i2fYA3oBSQABAAIgv6+pTrjhFLdQldCs5oYznT61C+APgUqeJhJdTT648BoEIgAA//////////////////////////////////////////8CJwABAAIiAAD//////////////////////////////////////////wUEAMABAXcABAAAAAMCIQKuVfhocPEJhA6QXrpzP6Jbwxt2PySUgrfOk3YqmwuNHgVMAUEBGqwlQIpNKCM80yX6763p7w+udvyx410IFABFu6o4GzDu9G5GMDVWYC7xPO9dL/89xqLs5mV/yR5LClu6Le1O/wMEAMABAgQBAS4ABAAAAAQCIQI0xF20HfWbN8TtubpCQ/v51bRJPD+1B1aLp2m0D/QWtAUDBAEBD58ABAAAAAQCIQLcNJRI3LBjJploBu22kGPnIlj5wRy3ktZPxyje0Pz5PAN0AUkAAQACIL+vqU644RS3UJXQrOaGM50+tQvgD4FKniYSXU0+uPAaBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8RHgABAAIZcXVvdGggdGhlIHJhdmVuIG5ldmVybW9yZRUJAgNmb28DYmFyFgQAAAAqF4qaJm+XZHlLNzlwEV6C7W9BJcj6cxHk1976ki2q53hmZ76OmYFAN2YwMWYxZjU3Mzk4MTY1OWE0NGZmMTdhNGM3MjE1YTNiNTM5ZWIxZTU4NDljNjA3N2RiYjU3MjJmNTcxN2EyOH8B8fVzmBZZpE/xekxyFaO1OeseWEnGB327VyL1cXooJE/NNgAZQQNlEwJeim6XFMH3/UuIbj0JiVhAtT8d//fyddOq7f0y6HA5NL9Qoo2hApdd7ad+dYV56j3+QTar91KzuCcdA+lEAXwIAAAAAAAAAcgBfQgAAAAAAAABWQF+oQJaCzEBLwMtBApxfTq6U68Zd5yyCpSLZXD/oLdzljwKEwrXl93q/k460gqbUSUhDw7xwxQJDgIRJxAhAgyG+chxe+c1Nz1e1vHfcNJLHjuZmg65Y9Yx+FfzQRPGRAsbARkDFwIKoyy9nCiHqhE98gpGiSjVojucp0D4DgL8yhAhApPPeIvLK9Qhbd4Cezj2ZEFTUQGSCXy48l5E6a8fVeHXAAFwAQEBcQEAAXIIAAAAAAAAAAEBcyECaXkt1TE9Jt/pROAdatig4MONta9H3q8VmBz53b3erBsidAJpeS3VMT0m3+lE4B1q2KDgw421r0ferxWYHPndvd6sGxgAAAAA+QMAgAAAAIB7AACAAAAAAMgBAAAhdWl5LdUxPSbf6UTgHWrYoODDjbWvR96vFZgc+d293qwbGQAAAAAA+QMAgAAAAIB7AACAAAAAAMgBAAABdv2SAQABAAKKDyZobTVM3hYH7ilLOfMrfHgiumT4SrQ8oMbmuRwf074m+/KbQGEwZjNjYTk5MzZlODQ2MWYxMGQ3N2M5NmVhODBhN2E2NjVmNjA2ZjZhNjNiN2YzZGZkMjU2N2MxODk3OWU0ZDag88qZNuhGHxDXfJbqgKemZfYG9qY7fz39JWfBiXnk1kFDkIkABAEABgX+bJxkuAutAasBZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0IBQGXcJ8AatOAwpcSVsLxwUPRJ2Pt5w9TFx0GKi1g6NoIyaTWVrHWfb6AhARcu8H19Zx3BkbWmhGgyLnBBZfmXvNIOAgAAECECPS9WsfxJN8QmtbZV4Q6nvPcDGG986VPms51VQmjl7L0RIQIT4XZuu7wcGMhqAkoc7giVxbY0nENllGwSiyRoVwx3IwF4QQEZfOItErxamVh1M69BFp+h3J/4ZsDU0wIRWNYpM2ctERl84i0SvFqZWHUzr0EWn6Hcn/hmwNTTAhFY1ikzZy0RAXkBAAF8CAAAAAAAAAAAAX0IAAAAAAAAAAABfkYBRAsbARkDFwIKpT2/jn3tMjy3bwoNP6xHbJ+wP8kiDgIlWBAhAg/oMK+4bxuLVsTQnLYGmuDk4qCajA846/Kc4Eh/xN0CAA==", "comment": "random packet" }, { @@ -783,7 +927,7 @@ { "bip32_derivation": [ { - "pub_key": "02dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "pub_key": "026eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "fingerprint": 0, "bip32_path": [ 2147484665, @@ -796,7 +940,7 @@ ], "tr_bip32_derivation": [ { - "pub_key": "dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "pub_key": "6eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "leaf_hashes": [], "fingerprint": 0, "bip32_path": [ @@ -808,23 +952,23 @@ ] } ], - "tr_internal_key": "dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "tr_internal_key": "6eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "tr_merkle_root": "6d65726b6c6520726f6f74", "prev_id": { - "out_point": "094f9a70e7ac7417bf383423cfcde2c269398e40b01aa47d7fbfbcafd915bb5c:1058894887", - "asset_id": "2f0fea1931a290220777a93143dfdcbfa68406e877073ff08834e197a4034aa4", - "script_key": "035acbdece5bd5f6217d6e24bca58f51d7178e7eeb57fd9f1bdfe116f934433377" + "out_point": "82a42dd96e5aefbff5b2d5a1134b5ac059483870ad5ac8820932986a20af6b41:4261387314", + "asset_id": "ee26a586ad23139d5041723470bf24a865837c9123461c41f5ff99aa99ce24eb", + "script_key": "03f867341e5ed2ec4aad13f4167d81267f4d43ba41de2f8f314d628c2cde709f77" }, "anchor": { "value": 777, "pk_script": "616e63686f7220706b736372697074", "sig_hash_type": 3, - "internal_key": "02dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "internal_key": "026eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "merkle_root": "6d65726b6c6520726f6f74", "tapscript_sibling": "7369626c696e67", "bip32_derivation": [ { - "pub_key": "02dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "pub_key": "026eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "fingerprint": 0, "bip32_path": [ 2147484665, @@ -837,7 +981,7 @@ ], "tr_bip32_derivation": [ { - "pub_key": "dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "pub_key": "6eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "leaf_hashes": [], "fingerprint": 0, "bip32_path": [ @@ -852,12 +996,12 @@ }, "asset": { "version": 1, - "genesis_first_prev_out": "67588a743a7d712e166bdfbeaa0fe2f8c1fe0aedf1a6e222f59e3bdcdc02b390:1840451127", - "genesis_tag": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "genesis_meta_hash": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "genesis_output_index": 562663220, + "genesis_first_prev_out": "aaab031f765a41e67230b027b7e0fc24541c3b6bd9c19e7792417fc3a82947a6:1240912481", + "genesis_tag": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "genesis_meta_hash": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "genesis_output_index": 1154067264, "genesis_type": 0, - "amount": 253830482, + "amount": 1936605645, "lock_time": 0, "relative_lock_time": 0, "prev_witnesses": [ @@ -868,21 +1012,21 @@ "script_key": "000000000000000000000000000000000000000000000000000000000000000000" }, "tx_witness": [ - "a1f4ef134af8f49a0a6f4d741de0ad881e3c47a976806362d4cfa64f367e448e650ce5f1be0a15396068a2034edcda194abd1600826158a28a75a1bd5a686747" + "6ba3d70a509d4604ac4c0217b26242e756a66ebb0608dd81d83072b697a00c79c4e1e7d2a854321db63ba244f1caa998eda7decf0748500ae49602589b29eb61" ], "split_commitment": null } ], "split_commitment_root": null, "script_version": 0, - "script_key": "0246d2fb7c6cd358ebc72c4da49ae1bbb4f6d3689fc3bd38eddd1d2da7f0af66e5", + "script_key": "02bbe5a56108947460be11d0c5d3cc3d0ae353d48ae850fb19b8cf68417a281f1d", "group_key": { - "group_key": "02f6dc2a521334e55313daebeb43883364575818c645e236d00608d2c27be259f8" + "group_key": "032094cd41c5f688c57534d3c2d00f02e4b5cd80a93572dce9e78815a9f22d4192" }, "unknown_odd_types": null }, "proof": { - "prev_out": "67588a743a7d712e166bdfbeaa0fe2f8c1fe0aedf1a6e222f59e3bdcdc02b390:1840451127", + "prev_out": "aaab031f765a41e67230b027b7e0fc24541c3b6bd9c19e7792417fc3a82947a6:1240912481", "block_header": { "version": 1, "prev_block": "00000000000080b66c911bd5ba14a74260057311eaeb1982802f7010f1a9f090", @@ -909,10 +1053,10 @@ }, "asset": { "version": 0, - "genesis_first_prev_out": "67588a743a7d712e166bdfbeaa0fe2f8c1fe0aedf1a6e222f59e3bdcdc02b390:1840451127", - "genesis_tag": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "genesis_meta_hash": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "genesis_output_index": 562663220, + "genesis_first_prev_out": "aaab031f765a41e67230b027b7e0fc24541c3b6bd9c19e7792417fc3a82947a6:1240912481", + "genesis_tag": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "genesis_meta_hash": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "genesis_output_index": 1154067264, "genesis_type": 0, "amount": 1, "lock_time": 1337, @@ -925,28 +1069,28 @@ "script_key": "000000000000000000000000000000000000000000000000000000000000000000" }, "tx_witness": [ - "9f3e2be2d279dfc2977323528809ca9221a9d174f26502a6a27a7301e0bfe3b9a64598d8fc06758fad13952c62f015b12bffd65f70e62085b98c61ced1b668b4" + "dc5abf2f9f946530ba8773492ad94a0255847ace62a6c209892f1adf946a5d326e68894d0c2b4805e2638999ae29b91d207d5f01d153b47265d62c3fce101a5e" ], "split_commitment": null } ], "split_commitment_root": null, "script_version": 0, - "script_key": "02f21d548d6da77105cfca8e68bc212c06503efbd6b727abc2e9e5344e3e6c397d", + "script_key": "02988c517add66938e90962cedc38b8633cf70dec970df94642c65a18b851d8b06", "group_key": { - "group_key": "03404203c494d2983cfc52c71eba0dc9908194bc22a6ecc6780580c46c6ad6701a" + "group_key": "03494cfffa38e87ad81e702d0348dde21a29d1a838176fc4c416b6594b779f771e" }, "unknown_odd_types": null }, "inclusion_proof": { "output_index": 0, - "internal_key": "02f619e5f0d7b16d3c82ae719fb65db6ff72e33c5a57417fed234a8a3bc68cab0d", + "internal_key": "02c2fef40aab5ab695af78f21c090072a295b4b37927bff672d82df04b39a0f859", "commitment_proof": { "proof": { "asset_proof": { "proof": "0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "version": 0, - "tap_key": "5dbb279034d8a6552bb17236f0eb023f14e22b41e3574bc889e7516ad54c864b", + "tap_key": "6579ab84254c95d14a40dfc4febe5726975b95d72b7c3b92b67482eddecbb6ae", "unknown_odd_types": null }, "taproot_asset_proof": { @@ -965,13 +1109,13 @@ "exclusion_proofs": [ { "output_index": 2, - "internal_key": "0242f1ecc5ad5623d056ddd1ffb463594d233f89254a5a929d033bf74e03b37735", + "internal_key": "02d622989cb99a43b627bba2575e29aef649ec7110fced3debf9fb1c56ed0bf5e8", "commitment_proof": { "proof": { "asset_proof": { "proof": "0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "version": 0, - "tap_key": "5dbb279034d8a6552bb17236f0eb023f14e22b41e3574bc889e7516ad54c864b", + "tap_key": "6579ab84254c95d14a40dfc4febe5726975b95d72b7c3b92b67482eddecbb6ae", "unknown_odd_types": null }, "taproot_asset_proof": { @@ -989,7 +1133,7 @@ }, { "output_index": 3, - "internal_key": "027ebc50c5fda1653ac7ae2f0632e64e528c44f7e219343050811323b159cb4175", + "internal_key": "02b5d17f66067232b2cc7bd021c6344eabe6d1642840e2adc920df729bd0e3c330", "commitment_proof": null, "tapscript_proof": { "tap_preimage_1": "011aac25408a4d28233cd325faefade9ef0fae76fcb1e35d08140045bbaa381b30eef46e46303556602ef13cef5d2fff3dc6a2ece6657fc91e4b0a5bba2ded4eff", @@ -1001,7 +1145,7 @@ }, { "output_index": 4, - "internal_key": "02a168ef84c21acc19cf8952cf24981a0e89cf462958bb5895fadfb1235f9f5472", + "internal_key": "02457937aeab9bdd96381b2588905adb76e96de8875a125704693aaab9ddccebd1", "commitment_proof": null, "tapscript_proof": { "tap_preimage_1": "", @@ -1014,13 +1158,13 @@ ], "split_root_proof": { "output_index": 4, - "internal_key": "028debc66be4456b625241b87ebf5c7147428b499ef217d4e8269de6208e7a471f", + "internal_key": "021ab6181e05bbe435d8ee3373866f0107ff0f71395ad02f81ac84b90e7c0ad480", "commitment_proof": { "proof": { "asset_proof": { "proof": "0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "version": 0, - "tap_key": "5dbb279034d8a6552bb17236f0eb023f14e22b41e3574bc889e7516ad54c864b", + "tap_key": "6579ab84254c95d14a40dfc4febe5726975b95d72b7c3b92b67482eddecbb6ae", "unknown_odd_types": null }, "taproot_asset_proof": { @@ -1047,18 +1191,43 @@ "626172" ], "genesis_reveal": { - "first_prev_out": "67588a743a7d712e166bdfbeaa0fe2f8c1fe0aedf1a6e222f59e3bdcdc02b390:1840451127", - "tag": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "meta_hash": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "output_index": 562663220, + "first_prev_out": "aaab031f765a41e67230b027b7e0fc24541c3b6bd9c19e7792417fc3a82947a6:1240912481", + "tag": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "meta_hash": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "output_index": 1154067264, "type": 0 }, "group_key_reveal": { - "raw_key": "03404203c494d2983cfc52c71eba0dc9908194bc22a6ecc6780580c46c6ad6701a", - "tapscript_root": "af206a329cfffd4a75e498320982c85aad70384859c05a4b13a1d5b2f5bfef5a" + "raw_key": "03494cfffa38e87ad81e702d0348dde21a29d1a838176fc4c416b6594b779f771e", + "tapscript_root": "e5e60c5ead6fc7ae77ba1d259b188a4b21c86fbc23d728b45347eada650af24c" }, "unknown_odd_types": null - } + }, + "alt_leaves": [ + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": null, + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 12757, + "script_key": "02d8d08c6a25074e4c0509e205f70e6e87c555fbcc8096e4d5dedc230aaa1432a9", + "group_key": null, + "unknown_odd_types": null + } + ] }, { "bip32_derivation": null, @@ -1081,7 +1250,8 @@ "tr_bip32_derivation": null }, "asset": null, - "proof": null + "proof": null, + "alt_leaves": null } ], "outputs": [ @@ -1091,10 +1261,10 @@ "asset_version": 1, "interactive": true, "anchor_output_index": 0, - "anchor_output_internal_key": "02dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "anchor_output_internal_key": "026eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "anchor_output_bip32_derivation": [ { - "pub_key": "02dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "pub_key": "026eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "fingerprint": 0, "bip32_path": [ 2147484665, @@ -1107,7 +1277,7 @@ ], "anchor_output_tr_bip32_derivation": [ { - "pub_key": "dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "pub_key": "6eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "leaf_hashes": [], "fingerprint": 0, "bip32_path": [ @@ -1122,12 +1292,12 @@ "anchor_output_tapscript_sibling": "00c0126e6f7420612076616c696420736372697074", "asset": { "version": 1, - "genesis_first_prev_out": "8ebf3da5475cb1f57b0bb131e8bf1faf0cf5251722cee10365790c930cf840a7:63363458", - "genesis_tag": "90a32711f3208e4e4b89cb5165ce64002cbd9c2887aa113df2468928d5a23b9c", - "genesis_meta_hash": "90a32711f3208e4e4b89cb5165ce64002cbd9c2887aa113df2468928d5a23b9c", - "genesis_output_index": 329186506, + "genesis_first_prev_out": "310facd9f5511802781b6a22b648e604214064018153da939bb8b580c8ba3ffa:665237637", + "genesis_tag": "0fea1931a290220777a93143dfdcbfa68406e877073ff08834e197a4034aa48a", + "genesis_meta_hash": "0fea1931a290220777a93143dfdcbfa68406e877073ff08834e197a4034aa48a", + "genesis_output_index": 1921998668, "genesis_type": 0, - "amount": 1409563239, + "amount": 3394868115, "lock_time": 0, "relative_lock_time": 0, "prev_witnesses": [ @@ -1138,27 +1308,27 @@ "script_key": "000000000000000000000000000000000000000000000000000000000000000000" }, "tx_witness": [ - "57e424c491cb23126b0344a0ab53f65d27a7cfb89fd9fc95c12a124a4af8e26adc4f62ed509b328a1d103e05fa284089f2514605290e2b0332ccf7cbd6f0cd87" + "f4b9eff014d1e8f3699b00437c743d762627d3a34c4c5d66f8d71ab4a66d6cc068990b24bea7f30b86a828554542b85305ec391b1fcb0b9cef8801079eeb6cbb" ], "split_commitment": null } ], "split_commitment_root": null, "script_version": 0, - "script_key": "029143f3aaf4776b2fc9b061c7bfb47480c4aa6c1bf83c2358f4da1130f1f4ee8a", + "script_key": "02bc0017e914e77d7bba59d38803af2d7b9a75952df7e5bab1ce02c03b63091b7c", "group_key": { - "group_key": "0359ab719a4d6699c036561b060895370a3c7b10e4cc6d521d6449d55bcfe72d5b" + "group_key": "03075407d639e4d96f69bb9d8c55fc2f0db2a291d1cde664fec71bd3927d4ddd86" }, "unknown_odd_types": null }, "split_asset": { "version": 1, - "genesis_first_prev_out": "8ebf3da5475cb1f57b0bb131e8bf1faf0cf5251722cee10365790c930cf840a7:63363458", - "genesis_tag": "90a32711f3208e4e4b89cb5165ce64002cbd9c2887aa113df2468928d5a23b9c", - "genesis_meta_hash": "90a32711f3208e4e4b89cb5165ce64002cbd9c2887aa113df2468928d5a23b9c", - "genesis_output_index": 329186506, + "genesis_first_prev_out": "310facd9f5511802781b6a22b648e604214064018153da939bb8b580c8ba3ffa:665237637", + "genesis_tag": "0fea1931a290220777a93143dfdcbfa68406e877073ff08834e197a4034aa48a", + "genesis_meta_hash": "0fea1931a290220777a93143dfdcbfa68406e877073ff08834e197a4034aa48a", + "genesis_output_index": 1921998668, "genesis_type": 0, - "amount": 1409563239, + "amount": 3394868115, "lock_time": 0, "relative_lock_time": 0, "prev_witnesses": [ @@ -1169,27 +1339,27 @@ "script_key": "000000000000000000000000000000000000000000000000000000000000000000" }, "tx_witness": [ - "57e424c491cb23126b0344a0ab53f65d27a7cfb89fd9fc95c12a124a4af8e26adc4f62ed509b328a1d103e05fa284089f2514605290e2b0332ccf7cbd6f0cd87" + "f4b9eff014d1e8f3699b00437c743d762627d3a34c4c5d66f8d71ab4a66d6cc068990b24bea7f30b86a828554542b85305ec391b1fcb0b9cef8801079eeb6cbb" ], "split_commitment": null } ], "split_commitment_root": null, "script_version": 0, - "script_key": "029143f3aaf4776b2fc9b061c7bfb47480c4aa6c1bf83c2358f4da1130f1f4ee8a", + "script_key": "02bc0017e914e77d7bba59d38803af2d7b9a75952df7e5bab1ce02c03b63091b7c", "group_key": { - "group_key": "0359ab719a4d6699c036561b060895370a3c7b10e4cc6d521d6449d55bcfe72d5b" + "group_key": "03075407d639e4d96f69bb9d8c55fc2f0db2a291d1cde664fec71bd3927d4ddd86" }, "unknown_odd_types": null }, - "pk_script": "51209143f3aaf4776b2fc9b061c7bfb47480c4aa6c1bf83c2358f4da1130f1f4ee8a", + "pk_script": "5120bc0017e914e77d7bba59d38803af2d7b9a75952df7e5bab1ce02c03b63091b7c", "bip32_derivation": null, "tr_bip32_derivation": null, "tr_internal_key": "", "tr_merkle_root": "", "proof_delivery_address": "https://example.com", "proof_suffix": { - "prev_out": "67588a743a7d712e166bdfbeaa0fe2f8c1fe0aedf1a6e222f59e3bdcdc02b390:1840451127", + "prev_out": "aaab031f765a41e67230b027b7e0fc24541c3b6bd9c19e7792417fc3a82947a6:1240912481", "block_header": { "version": 1, "prev_block": "00000000000080b66c911bd5ba14a74260057311eaeb1982802f7010f1a9f090", @@ -1216,10 +1386,10 @@ }, "asset": { "version": 0, - "genesis_first_prev_out": "67588a743a7d712e166bdfbeaa0fe2f8c1fe0aedf1a6e222f59e3bdcdc02b390:1840451127", - "genesis_tag": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "genesis_meta_hash": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "genesis_output_index": 562663220, + "genesis_first_prev_out": "aaab031f765a41e67230b027b7e0fc24541c3b6bd9c19e7792417fc3a82947a6:1240912481", + "genesis_tag": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "genesis_meta_hash": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "genesis_output_index": 1154067264, "genesis_type": 0, "amount": 1, "lock_time": 1337, @@ -1232,28 +1402,28 @@ "script_key": "000000000000000000000000000000000000000000000000000000000000000000" }, "tx_witness": [ - "9f3e2be2d279dfc2977323528809ca9221a9d174f26502a6a27a7301e0bfe3b9a64598d8fc06758fad13952c62f015b12bffd65f70e62085b98c61ced1b668b4" + "dc5abf2f9f946530ba8773492ad94a0255847ace62a6c209892f1adf946a5d326e68894d0c2b4805e2638999ae29b91d207d5f01d153b47265d62c3fce101a5e" ], "split_commitment": null } ], "split_commitment_root": null, "script_version": 0, - "script_key": "02f21d548d6da77105cfca8e68bc212c06503efbd6b727abc2e9e5344e3e6c397d", + "script_key": "02988c517add66938e90962cedc38b8633cf70dec970df94642c65a18b851d8b06", "group_key": { - "group_key": "03404203c494d2983cfc52c71eba0dc9908194bc22a6ecc6780580c46c6ad6701a" + "group_key": "03494cfffa38e87ad81e702d0348dde21a29d1a838176fc4c416b6594b779f771e" }, "unknown_odd_types": null }, "inclusion_proof": { "output_index": 0, - "internal_key": "02f619e5f0d7b16d3c82ae719fb65db6ff72e33c5a57417fed234a8a3bc68cab0d", + "internal_key": "02c2fef40aab5ab695af78f21c090072a295b4b37927bff672d82df04b39a0f859", "commitment_proof": { "proof": { "asset_proof": { "proof": "0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "version": 0, - "tap_key": "5dbb279034d8a6552bb17236f0eb023f14e22b41e3574bc889e7516ad54c864b", + "tap_key": "6579ab84254c95d14a40dfc4febe5726975b95d72b7c3b92b67482eddecbb6ae", "unknown_odd_types": null }, "taproot_asset_proof": { @@ -1272,13 +1442,13 @@ "exclusion_proofs": [ { "output_index": 2, - "internal_key": "0242f1ecc5ad5623d056ddd1ffb463594d233f89254a5a929d033bf74e03b37735", + "internal_key": "02d622989cb99a43b627bba2575e29aef649ec7110fced3debf9fb1c56ed0bf5e8", "commitment_proof": { "proof": { "asset_proof": { "proof": "0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "version": 0, - "tap_key": "5dbb279034d8a6552bb17236f0eb023f14e22b41e3574bc889e7516ad54c864b", + "tap_key": "6579ab84254c95d14a40dfc4febe5726975b95d72b7c3b92b67482eddecbb6ae", "unknown_odd_types": null }, "taproot_asset_proof": { @@ -1296,7 +1466,7 @@ }, { "output_index": 3, - "internal_key": "027ebc50c5fda1653ac7ae2f0632e64e528c44f7e219343050811323b159cb4175", + "internal_key": "02b5d17f66067232b2cc7bd021c6344eabe6d1642840e2adc920df729bd0e3c330", "commitment_proof": null, "tapscript_proof": { "tap_preimage_1": "011aac25408a4d28233cd325faefade9ef0fae76fcb1e35d08140045bbaa381b30eef46e46303556602ef13cef5d2fff3dc6a2ece6657fc91e4b0a5bba2ded4eff", @@ -1308,7 +1478,7 @@ }, { "output_index": 4, - "internal_key": "02a168ef84c21acc19cf8952cf24981a0e89cf462958bb5895fadfb1235f9f5472", + "internal_key": "02457937aeab9bdd96381b2588905adb76e96de8875a125704693aaab9ddccebd1", "commitment_proof": null, "tapscript_proof": { "tap_preimage_1": "", @@ -1321,13 +1491,13 @@ ], "split_root_proof": { "output_index": 4, - "internal_key": "028debc66be4456b625241b87ebf5c7147428b499ef217d4e8269de6208e7a471f", + "internal_key": "021ab6181e05bbe435d8ee3373866f0107ff0f71395ad02f81ac84b90e7c0ad480", "commitment_proof": { "proof": { "asset_proof": { "proof": "0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "version": 0, - "tap_key": "5dbb279034d8a6552bb17236f0eb023f14e22b41e3574bc889e7516ad54c864b", + "tap_key": "6579ab84254c95d14a40dfc4febe5726975b95d72b7c3b92b67482eddecbb6ae", "unknown_odd_types": null }, "taproot_asset_proof": { @@ -1354,20 +1524,101 @@ "626172" ], "genesis_reveal": { - "first_prev_out": "67588a743a7d712e166bdfbeaa0fe2f8c1fe0aedf1a6e222f59e3bdcdc02b390:1840451127", - "tag": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "meta_hash": "1e9a83fdeae0ec55eb233a9b5394cb3c7856b546d313c8a3b4c1c0e05447f4ba", - "output_index": 562663220, + "first_prev_out": "aaab031f765a41e67230b027b7e0fc24541c3b6bd9c19e7792417fc3a82947a6:1240912481", + "tag": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "meta_hash": "caa9568e5b6fe9d8a9ddd9eb09277b92cef9046efa18500944cbe800a0b1527e", + "output_index": 1154067264, "type": 0 }, "group_key_reveal": { - "raw_key": "03404203c494d2983cfc52c71eba0dc9908194bc22a6ecc6780580c46c6ad6701a", - "tapscript_root": "af206a329cfffd4a75e498320982c85aad70384859c05a4b13a1d5b2f5bfef5a" + "raw_key": "03494cfffa38e87ad81e702d0348dde21a29d1a838176fc4c416b6594b779f771e", + "tapscript_root": "e5e60c5ead6fc7ae77ba1d259b188a4b21c86fbc23d728b45347eada650af24c" }, "unknown_odd_types": null }, "relative_lock_time": 345, - "lock_time": 456 + "lock_time": 456, + "alt_leaves": [ + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": [ + "9ed9d20d573a136385cd" + ], + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 31775, + "script_key": "02e296f64f2da07ce9bd2a5a2b7b72e9d9e7df03f2b7fdc3bc491936b7c6df1cb1", + "group_key": null, + "unknown_odd_types": null + }, + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": [ + "aa1cc84c887ed3a4fe16", + "fafce23623e196c9dfff", + "7fbaff4ffe94f4589733", + "e563e19d3045aad3e226" + ], + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 23824, + "script_key": "02dedc4882998beb8bba54bf3580a8431b8423673a9145e7c310d8634b68c11ff9", + "group_key": null, + "unknown_odd_types": null + }, + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": [ + "09c4db0710c9d0096e5e", + "3ef1b570680746acd0cc" + ], + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 43968, + "script_key": "02882e716a0fccf328b3a59fea652af80965ad8f54bd6b5da8141df402f7a3b456", + "group_key": null, + "unknown_odd_types": null + } + ] }, { "amount": 345, @@ -1375,10 +1626,10 @@ "asset_version": 0, "interactive": false, "anchor_output_index": 1, - "anchor_output_internal_key": "02dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "anchor_output_internal_key": "026eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "anchor_output_bip32_derivation": [ { - "pub_key": "02dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "pub_key": "026eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "fingerprint": 0, "bip32_path": [ 2147484665, @@ -1391,7 +1642,7 @@ ], "anchor_output_tr_bip32_derivation": [ { - "pub_key": "dd756e50caeef8caba0acf73db4e5b2e7f4c229644f01d538ec4427b7b194b23", + "pub_key": "6eff82cc09998c8f7aa1d21230c4416d25c9f00dffdc24cca06ef3586aeb6ef6", "leaf_hashes": [], "fingerprint": 0, "bip32_path": [ @@ -1406,12 +1657,12 @@ "anchor_output_tapscript_sibling": "01197ce22d12bc5a99587533af41169fa1dc9ff866c0d4d3021158d62933672d11197ce22d12bc5a99587533af41169fa1dc9ff866c0d4d3021158d62933672d11", "asset": { "version": 1, - "genesis_first_prev_out": "8ebf3da5475cb1f57b0bb131e8bf1faf0cf5251722cee10365790c930cf840a7:63363458", - "genesis_tag": "90a32711f3208e4e4b89cb5165ce64002cbd9c2887aa113df2468928d5a23b9c", - "genesis_meta_hash": "90a32711f3208e4e4b89cb5165ce64002cbd9c2887aa113df2468928d5a23b9c", - "genesis_output_index": 329186506, + "genesis_first_prev_out": "310facd9f5511802781b6a22b648e604214064018153da939bb8b580c8ba3ffa:665237637", + "genesis_tag": "0fea1931a290220777a93143dfdcbfa68406e877073ff08834e197a4034aa48a", + "genesis_meta_hash": "0fea1931a290220777a93143dfdcbfa68406e877073ff08834e197a4034aa48a", + "genesis_output_index": 1921998668, "genesis_type": 0, - "amount": 1409563239, + "amount": 3394868115, "lock_time": 0, "relative_lock_time": 0, "prev_witnesses": [ @@ -1422,21 +1673,21 @@ "script_key": "000000000000000000000000000000000000000000000000000000000000000000" }, "tx_witness": [ - "57e424c491cb23126b0344a0ab53f65d27a7cfb89fd9fc95c12a124a4af8e26adc4f62ed509b328a1d103e05fa284089f2514605290e2b0332ccf7cbd6f0cd87" + "f4b9eff014d1e8f3699b00437c743d762627d3a34c4c5d66f8d71ab4a66d6cc068990b24bea7f30b86a828554542b85305ec391b1fcb0b9cef8801079eeb6cbb" ], "split_commitment": null } ], "split_commitment_root": null, "script_version": 0, - "script_key": "029143f3aaf4776b2fc9b061c7bfb47480c4aa6c1bf83c2358f4da1130f1f4ee8a", + "script_key": "02bc0017e914e77d7bba59d38803af2d7b9a75952df7e5bab1ce02c03b63091b7c", "group_key": { - "group_key": "0359ab719a4d6699c036561b060895370a3c7b10e4cc6d521d6449d55bcfe72d5b" + "group_key": "03075407d639e4d96f69bb9d8c55fc2f0db2a291d1cde664fec71bd3927d4ddd86" }, "unknown_odd_types": null }, "split_asset": null, - "pk_script": "51209143f3aaf4776b2fc9b061c7bfb47480c4aa6c1bf83c2358f4da1130f1f4ee8a", + "pk_script": "5120bc0017e914e77d7bba59d38803af2d7b9a75952df7e5bab1ce02c03b63091b7c", "bip32_derivation": null, "tr_bip32_derivation": null, "tr_internal_key": "", @@ -1444,13 +1695,42 @@ "proof_delivery_address": "", "proof_suffix": null, "relative_lock_time": 0, - "lock_time": 0 + "lock_time": 0, + "alt_leaves": [ + { + "version": 0, + "genesis_first_prev_out": "0000000000000000000000000000000000000000000000000000000000000000:0", + "genesis_tag": "", + "genesis_meta_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "genesis_output_index": 0, + "genesis_type": 0, + "amount": 0, + "lock_time": 0, + "relative_lock_time": 0, + "prev_witnesses": [ + { + "prev_id": null, + "tx_witness": [ + "01506bd8b82c30d346bc", + "4b2fa319f245a8657ec1", + "22eaf4ad5425c249ee16" + ], + "split_commitment": null + } + ], + "split_commitment_root": null, + "script_version": 14196, + "script_key": "02c5a233ffb99f1ca7f2bafb04508177e05e80cf1dc16ecdc441b4a38a5942eef0", + "group_key": null, + "unknown_odd_types": null + } + ] } ], "version": 0, "chain_params_hrp": "tapbc" }, - "expected": "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QgFAnz4r4tJ538KXcyNSiAnKkiGp0XTyZQKmonpzAeC/47mmRZjY/AZ1j60TlSxi8BWxK//WX3DmIIW5jGHO0bZotA4CAAAQIQLyHVSNbadxBc/Kjmi8ISwGUD771rcnq8Lp5TROPmw5fREhA0BCA8SU0pg8/FLHHroNyZCBlLwipuzGeAWAxGxq1nAaDKUABAAAAAACIQL2GeXw17FtPIKucZ+2Xbb/cuM8WldBf+0jSoo7xoyrDQN6AUkAAQACIF27J5A02KZVK7FyNvDrAj8U4itB41dLyInnUWrVTIZLBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8FBADAAQEN/QFOA6UABAAAAAICIQJC8ezFrVYj0Fbd0f+0Y1lNIz+JJUpakp0DO/dOA7N3NQN6AUkAAQACIF27J5A02KZVK7FyNvDrAj8U4itB41dLyInnUWrVTIZLBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8FBADAAQF3AAQAAAADAiECfrxQxf2hZTrHri8GMuZOUoxE9+IZNDBQgRMjsVnLQXUFTAFBARqsJUCKTSgjPNMl+u+t6e8Prnb8seNdCBQARbuqOBsw7vRuRjA1VmAu8TzvXS//Pcai7OZlf8keSwpbui3tTv8DBADAAQIEAQEuAAQAAAAEAiECoWjvhMIazBnPiVLPJJgaDonPRilYu1iV+t+xI1+fVHIFAwQBAQ+fAAQAAAAEAiECjevGa+RFa2JSQbh+v1xxR0KLSZ7yF9ToJp3mII56Rx8DdAFJAAEAAiBduyeQNNimVSuxcjbw6wI/FOIrQeNXS8iJ51Fq1UyGSwQiAAD//////////////////////////////////////////wInAAEAAiIAAP//////////////////////////////////////////ER4AAQACGXF1b3RoIHRoZSByYXZlbiBuZXZlcm1vcmUVCQIDZm9vA2JhchYEAAAAKheKkLMC3Nw7nvUi4qbx7Qr+wfjiD6q+32sWLnF9OnSKWGdtsw43QDFlOWE4M2ZkZWFlMGVjNTVlYjIzM2E5YjUzOTRjYjNjNzg1NmI1NDZkMzEzYzhhM2I0YzFjMGUwNTQ0N2Y0YmEemoP96uDsVesjOptTlMs8eFa1RtMTyKO0wcDgVEf0uiGJjzQAGUEDQEIDxJTSmDz8Usceug3JkIGUvCKm7MZ4BYDEbGrWcBqvIGoynP/9SnXkmDIJgsharXA4SFnAWksTodWy9b/vWgABcGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxCAAAAAAAAAAAAXIAAXMIAAAAAAAAAAABdQABeAAAAXABAQFxAQEBcggAAAAAAAAAAAFzIQLddW5Qyu74yroKz3PbTlsuf0wilkTwHVOOxEJ7exlLIyJ0At11blDK7vjKugrPc9tOWy5/TCKWRPAdU47EQnt7GUsjGAAAAAD5AwCAAAAAgHsAAIAAAAAAyAEAACF13XVuUMru+Mq6Cs9z205bLn9MIpZE8B1TjsRCe3sZSyMZAAAAAAD5AwCAAAAAgHsAAIAAAAAAyAEAAAF2/ZIBAAEBAoqnQPgMkwx5ZQPhziIXJfUMrx+/6DGxC3v1sVxHpT2/jgPG2YJAOTBhMzI3MTFmMzIwOGU0ZTRiODljYjUxNjVjZTY0MDAyY2JkOWMyODg3YWExMTNkZjI0Njg5MjhkNWEyM2I5Y5CjJxHzII5OS4nLUWXOZAAsvZwoh6oRPfJGiSjVojucE578ygAEAQAGBf5UBDpnC60BqwFlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQgFAV+QkxJHLIxJrA0Sgq1P2XSenz7if2fyVwSoSSkr44mrcT2LtUJsyih0QPgX6KECJ8lFGBSkOKwMyzPfL1vDNhw4CAAAQIQKRQ/Oq9HdrL8mwYce/tHSAxKpsG/g8I1j02hEw8fTuihEhA1mrcZpNZpnANlYbBgiVNwo8exDkzG1SHWRJ1VvP5y1bAXf9kgEAAQECiqdA+AyTDHllA+HOIhcl9QyvH7/oMbELe/WxXEelPb+OA8bZgkA5MGEzMjcxMWYzMjA4ZTRlNGI4OWNiNTE2NWNlNjQwMDJjYmQ5YzI4ODdhYTExM2RmMjQ2ODkyOGQ1YTIzYjljkKMnEfMgjk5LictRZc5kACy9nCiHqhE98kaJKNWiO5wTnvzKAAQBAAYF/lQEOmcLrQGrAWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAUBX5CTEkcsjEmsDRKCrU/ZdJ6fPuJ/Z/JXBKhJKSvjiatxPYu1QmzKKHRA+BfooQInyUUYFKQ4rAzLM98vW8M2HDgIAABAhApFD86r0d2svybBhx7+0dIDEqmwb+DwjWPTaETDx9O6KESEDWatxmk1mmcA2VhsGCJU3Cjx7EOTMbVIdZEnVW8/nLVsBeBUAwBJub3QgYSB2YWxpZCBzY3JpcHQBeQEBAXoTaHR0cHM6Ly9leGFtcGxlLmNvbQF7/dsGVEFQUAAEAAAAAAIkkLMC3Nw7nvUi4qbx7Qr+wfjiD6q+32sWLnF9OnSKWGdtsw43BFABAAAAkPCp8RBwL4CCGevqEXMFYEKnFLrVG5FstoAAAAAAAABSdSiVWPUcmWZplASuIpRzDDyfm9pTUjzlDpuV5VjaL9smG01MhgQbGrG/kwafAQAAAAGWYIzLr6FqutqQJ4DaTcNdr9evBfoNoIz4M1dfjPnoNgAAAABKSTBGAiEA2rJIiSE8r0OuatxBzxyTlsCCQMGZ9SJaz0VBYzD9fb0CIQD+N5AOBkS/V0SToH/F7boG28B8MRuUdSDC1RS8VyXctAH/////AQDyBSoBAAAAGXapFPFdGSH1LkAHsUbfpg82ntL8OTziiKwAAAAACIIEo/OsYF1eRyf06nLpNGpdWG8CMUYP1SrZiVvIJA2HHe9SLbM5wYbBFJhDpISJkObduaYGX0vBQir1P0vIbxsISokYn/AxbNwQUR2nHadX5VPK2p87WxQ085I2c621fYPKrDksOK8VbW/DC1X61BEt8rlVMeaBFOmtEAEecve3z9sOCv0BlgABAAKKkLMC3Nw7nvUi4qbx7Qr+wfjiD6q+32sWLnF9OnSKWGdtsw43QDFlOWE4M2ZkZWFlMGVjNTVlYjIzM2E5YjUzOTRjYjNjNzg1NmI1NDZkMzEzYzhhM2I0YzFjMGUwNTQ0N2Y0YmEemoP96uDsVesjOptTlMs8eFa1RtMTyKO0wcDgVEf0uiGJjzQABAEABgEBBwP9BTkJAQYLrQGrAWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAUCfPivi0nnfwpdzI1KICcqSIanRdPJlAqaienMB4L/juaZFmNj8BnWPrROVLGLwFbEr/9ZfcOYghbmMYc7Rtmi0DgIAABAhAvIdVI1tp3EFz8qOaLwhLAZQPvvWtyerwunlNE4+bDl9ESEDQEIDxJTSmDz8Usceug3JkIGUvCKm7MZ4BYDEbGrWcBoMpQAEAAAAAAIhAvYZ5fDXsW08gq5xn7Zdtv9y4zxaV0F/7SNKijvGjKsNA3oBSQABAAIgXbsnkDTYplUrsXI28OsCPxTiK0HjV0vIiedRatVMhksEIgAA//////////////////////////////////////////8CJwABAAIiAAD//////////////////////////////////////////wUEAMABAQ39AU4DpQAEAAAAAgIhAkLx7MWtViPQVt3R/7RjWU0jP4klSlqSnQM7904Ds3c1A3oBSQABAAIgXbsnkDTYplUrsXI28OsCPxTiK0HjV0vIiedRatVMhksEIgAA//////////////////////////////////////////8CJwABAAIiAAD//////////////////////////////////////////wUEAMABAXcABAAAAAMCIQJ+vFDF/aFlOseuLwYy5k5SjET34hk0MFCBEyOxWctBdQVMAUEBGqwlQIpNKCM80yX6763p7w+udvyx410IFABFu6o4GzDu9G5GMDVWYC7xPO9dL/89xqLs5mV/yR5LClu6Le1O/wMEAMABAgQBAS4ABAAAAAQCIQKhaO+EwhrMGc+JUs8kmBoOic9GKVi7WJX637EjX59UcgUDBAEBD58ABAAAAAQCIQKN68Zr5EVrYlJBuH6/XHFHQotJnvIX1OgmneYgjnpHHwN0AUkAAQACIF27J5A02KZVK7FyNvDrAj8U4itB41dLyInnUWrVTIZLBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8RHgABAAIZcXVvdGggdGhlIHJhdmVuIG5ldmVybW9yZRUJAgNmb28DYmFyFgQAAAAqF4qQswLc3Due9SLipvHtCv7B+OIPqr7faxYucX06dIpYZ22zDjdAMWU5YTgzZmRlYWUwZWM1NWViMjMzYTliNTM5NGNiM2M3ODU2YjU0NmQzMTNjOGEzYjRjMWMwZTA1NDQ3ZjRiYR6ag/3q4OxV6yM6m1OUyzx4VrVG0xPIo7TBwOBUR/S6IYmPNAAZQQNAQgPElNKYPPxSxx66DcmQgZS8IqbsxngFgMRsatZwGq8gajKc//1KdeSYMgmCyFqtcDhIWcBaSxOh1bL1v+9aAXwIAAAAAAAAAcgBfQgAAAAAAAABWQABcAEBAXEBAAFyCAAAAAAAAAABAXMhAt11blDK7vjKugrPc9tOWy5/TCKWRPAdU47EQnt7GUsjInQC3XVuUMru+Mq6Cs9z205bLn9MIpZE8B1TjsRCe3sZSyMYAAAAAPkDAIAAAACAewAAgAAAAADIAQAAIXXddW5Qyu74yroKz3PbTlsuf0wilkTwHVOOxEJ7exlLIxkAAAAAAPkDAIAAAACAewAAgAAAAADIAQAAAXb9kgEAAQECiqdA+AyTDHllA+HOIhcl9QyvH7/oMbELe/WxXEelPb+OA8bZgkA5MGEzMjcxMWYzMjA4ZTRlNGI4OWNiNTE2NWNlNjQwMDJjYmQ5YzI4ODdhYTExM2RmMjQ2ODkyOGQ1YTIzYjljkKMnEfMgjk5LictRZc5kACy9nCiHqhE98kaJKNWiO5wTnvzKAAQBAAYF/lQEOmcLrQGrAWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAUBX5CTEkcsjEmsDRKCrU/ZdJ6fPuJ/Z/JXBKhJKSvjiatxPYu1QmzKKHRA+BfooQInyUUYFKQ4rAzLM98vW8M2HDgIAABAhApFD86r0d2svybBhx7+0dIDEqmwb+DwjWPTaETDx9O6KESEDWatxmk1mmcA2VhsGCJU3Cjx7EOTMbVIdZEnVW8/nLVsBeEEBGXziLRK8WplYdTOvQRafodyf+GbA1NMCEVjWKTNnLREZfOItErxamVh1M69BFp+h3J/4ZsDU0wIRWNYpM2ctEQF5AQABfAgAAAAAAAAAAAF9CAAAAAAAAAAAAA==", + "expected": "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QgFA3Fq/L5+UZTC6h3NJKtlKAlWEes5ipsIJiS8a35RqXTJuaIlNDCtIBeJjiZmuKbkdIH1fAdFTtHJl1iw/zhAaXg4CAAAQIQKYjFF63WaTjpCWLO3Di4Yzz3DeyXDflGQsZaGLhR2LBhEhA0lM//o46HrYHnAtA0jd4hop0ag4F2/ExBa2WUt3n3ceDKUABAAAAAACIQLC/vQKq1q2la948hwJAHKilbSzeSe/9nLYLfBLOaD4WQN6AUkAAQACIGV5q4QlTJXRSkDfxP6+VyaXW5XXK3w7krZ0gu3ey7auBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8FBADAAQEN/QFOA6UABAAAAAICIQLWIpicuZpDtie7oldeKa72SexxEPztPev5+xxW7Qv16AN6AUkAAQACIGV5q4QlTJXRSkDfxP6+VyaXW5XXK3w7krZ0gu3ey7auBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8FBADAAQF3AAQAAAADAiECtdF/ZgZyMrLMe9AhxjROq+bRZChA4q3JIN9ym9DjwzAFTAFBARqsJUCKTSgjPNMl+u+t6e8Prnb8seNdCBQARbuqOBsw7vRuRjA1VmAu8TzvXS//Pcai7OZlf8keSwpbui3tTv8DBADAAQIEAQEuAAQAAAAEAiECRXk3rqub3ZY4GyWIkFrbdult6IdaElcEaTqqud3M69EFAwQBAQ+fAAQAAAAEAiECGrYYHgW75DXY7jNzhm8BB/8PcTla0C+BrIS5DnwK1IADdAFJAAEAAiBleauEJUyV0UpA38T+vlcml1uV1yt8O5K2dILt3su2rgQiAAD//////////////////////////////////////////wInAAEAAiIAAP//////////////////////////////////////////ER4AAQACGXF1b3RoIHRoZSByYXZlbiBuZXZlcm1vcmUVCQIDZm9vA2JhchYEAAAAKheKpkcpqMN/QZJ3nsHZazscVCT84LcnsDBy5kFadh8Dq6pJ9tJhQGNhYTk1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MeaBFOmtEAEecve3z9sOCv0BlgABAAKKpkcpqMN/QZJ3nsHZazscVCT84LcnsDBy5kFadh8Dq6pJ9tJhQGNhYTk1NjhlNWI2ZmU5ZDhhOWRkZDllYjA5Mjc3YjkyY2VmOTA0NmVmYTE4NTAwOTQ0Y2JlODAwYTBiMTUyN2XKqVaOW2/p2Knd2esJJ3uSzvkEbvoYUAlEy+gAoLFSfkTJq0AABAEABgEBBwP9BTkJAQYLrQGrAWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAUDcWr8vn5RlMLqHc0kq2UoCVYR6zmKmwgmJLxrflGpdMm5oiU0MK0gF4mOJma4puR0gfV8B0VO0cmXWLD/OEBpeDgIAABAhApiMUXrdZpOOkJYs7cOLhjPPcN7JcN+UZCxloYuFHYsGESEDSUz/+jjoetgecC0DSN3iGinRqDgXb8TEFrZZS3efdx4MpQAEAAAAAAIhAsL+9AqrWraVr3jyHAkAcqKVtLN5J7/2ctgt8Es5oPhZA3oBSQABAAIgZXmrhCVMldFKQN/E/r5XJpdbldcrfDuStnSC7d7Ltq4EIgAA//////////////////////////////////////////8CJwABAAIiAAD//////////////////////////////////////////wUEAMABAQ39AU4DpQAEAAAAAgIhAtYimJy5mkO2J7uiV14prvZJ7HEQ/O096/n7HFbtC/XoA3oBSQABAAIgZXmrhCVMldFKQN/E/r5XJpdbldcrfDuStnSC7d7Ltq4EIgAA//////////////////////////////////////////8CJwABAAIiAAD//////////////////////////////////////////wUEAMABAXcABAAAAAMCIQK10X9mBnIyssx70CHGNE6r5tFkKEDirckg33Kb0OPDMAVMAUEBGqwlQIpNKCM80yX6763p7w+udvyx410IFABFu6o4GzDu9G5GMDVWYC7xPO9dL/89xqLs5mV/yR5LClu6Le1O/wMEAMABAgQBAS4ABAAAAAQCIQJFeTeuq5vdljgbJYiQWtt26W3oh1oSVwRpOqq53czr0QUDBAEBD58ABAAAAAQCIQIathgeBbvkNdjuM3OGbwEH/w9xOVrQL4GshLkOfArUgAN0AUkAAQACIGV5q4QlTJXRSkDfxP6+VyaXW5XXK3w7krZ0gu3ey7auBCIAAP//////////////////////////////////////////AicAAQACIgAA//////////////////////////////////////////8RHgABAAIZcXVvdGggdGhlIHJhdmVuIG5ldmVybW9yZRUJAgNmb28DYmFyFgQAAAAqF4qmRymow39BkneewdlrOxxUJPzgtyewMHLmQVp2HwOrqkn20mFAY2FhOTU2OGU1YjZmZTlkOGE5ZGRkOWViMDkyNzdiOTJjZWY5MDQ2ZWZhMTg1MDA5NDRjYmU4MDBhMGIxNTI3ZcqpVo5bb+nYqd3Z6wkne5LO+QRu+hhQCUTL6ACgsVJ+RMmrQAAZQQNJTP/6OOh62B5wLQNI3eIaKdGoOBdvxMQWtllLd593HuXmDF6tb8eud7odJZsYikshyG+8I9cotFNH6tplCvJMAXwIAAAAAAAAAcgBfQgAAAAAAAABWQF+2wM5CxABDgMMAQqe2dINVzoTY4XNDgJ8HxAhAuKW9k8toHzpvSpaK3ty6dnn3wPyt/3DvEkZNrfG3xyxWgsxAS8DLQQKqhzITIh+06T+Fgr6/OI2I+GWyd//Cn+6/0/+lPRYlzMK5WPhnTBFqtPiJg4CXRAQIQLe3EiCmYvri7pUvzWAqEMbhCNnOpFF58MQ2GNLaMEf+UQLGwEZAxcCCgnE2wcQydAJbl4KPvG1cGgHRqzQzA4Cq8AQIQKILnFqD8zzKLOln+plKvgJZa2PVL1rXagUHfQC96O0VgABcAEBAXEBAAFyCAAAAAAAAAABAXMhAm7/gswJmYyPeqHSEjDEQW0lyfAN/9wkzKBu81hq6272InQCbv+CzAmZjI96odISMMRBbSXJ8A3/3CTMoG7zWGrrbvYYAAAAAPkDAIAAAACAewAAgAAAAADIAQAAIXVu/4LMCZmMj3qh0hIwxEFtJcnwDf/cJMygbvNYautu9hkAAAAAAPkDAIAAAACAewAAgAAAAADIAQAAAXb9kgEAAQECivo/usiAtbibk9pTgQFkQCEE5ki2ImobeAIYUfXZrA8xJ6a4hUAwZmVhMTkzMWEyOTAyMjA3NzdhOTMxNDNkZmRjYmZhNjg0MDZlODc3MDczZmYwODgzNGUxOTdhNDAzNGFhNDhhD+oZMaKQIgd3qTFD39y/poQG6HcHP/CINOGXpANKpIpyj19MAAQBAAYF/spZk5MLrQGrAWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAUD0ue/wFNHo82mbAEN8dD12JifTo0xMXWb41xq0pm1swGiZCyS+p/MLhqgoVUVCuFMF7DkbH8sLnO+IAQee62y7DgIAABAhArwAF+kU5317ulnTiAOvLXuadZUt9+W6sc4CwDtjCRt8ESEDB1QH1jnk2W9pu52MVfwvDbKikdHN5mT+xxvTkn1N3YYBeEEBGXziLRK8WplYdTOvQRafodyf+GbA1NMCEVjWKTNnLREZfOItErxamVh1M69BFp+h3J/4ZsDU0wIRWNYpM2ctEQF5AQABfAgAAAAAAAAAAAF9CAAAAAAAAAAAAX5RAU8LJgEkAyIDCgFQa9i4LDDTRrwKSy+jGfJFqGV+wQoi6vStVCXCSe4WDgI3dBAhAsWiM/+5nxyn8rr7BFCBd+BegM8dwW7NxEG0o4pZQu7wAA==", "comment": "random packet with no explicit version" } ], From 7943a3f274813e645175393cb52054aaf7a7b02e Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Thu, 31 Oct 2024 13:33:09 -0400 Subject: [PATCH 07/11] multi: remove unneeded param from RandPrivKey --- address/mock.go | 4 ++-- asset/asset_test.go | 2 +- asset/mock.go | 24 ++++++++++++++++-------- commitment/commitment_test.go | 8 ++++---- commitment/taproot_test.go | 2 +- internal/test/helpers.go | 4 ++-- itest/assets_test.go | 2 +- proof/append_test.go | 10 +++++----- proof/mint_test.go | 4 ++-- proof/proof_test.go | 4 ++-- rfqmsg/request_test.go | 2 +- tapdb/assets_store_test.go | 4 ++-- tapsend/send_test.go | 6 +++--- vm/vm_test.go | 18 +++++++++--------- 14 files changed, 51 insertions(+), 43 deletions(-) diff --git a/address/mock.go b/address/mock.go index 9cfc283c5..2faa2bda2 100644 --- a/address/mock.go +++ b/address/mock.go @@ -33,7 +33,7 @@ func RandAddr(t testing.TB, params *ChainParams, proofCourierAddr url.URL) (*AddrWithKeyInfo, *asset.Genesis, *asset.GroupKey) { - scriptKeyPriv := test.RandPrivKey(t) + scriptKeyPriv := test.RandPrivKey() scriptKey := asset.NewScriptKeyBip86(keychain.KeyDescriptor{ PubKey: scriptKeyPriv.PubKey(), KeyLocator: keychain.KeyLocator{ @@ -42,7 +42,7 @@ func RandAddr(t testing.TB, params *ChainParams, }, }) - internalKey := test.RandPrivKey(t) + internalKey := test.RandPrivKey() genesis := asset.RandGenesis(t, asset.Type(test.RandInt31n(2))) amount := test.RandInt[uint64]() diff --git a/asset/asset_test.go b/asset/asset_test.go index e09bfcae5..bc9ec42d3 100644 --- a/asset/asset_test.go +++ b/asset/asset_test.go @@ -857,7 +857,7 @@ func TestAssetGroupKey(t *testing.T) { func TestDeriveGroupKey(t *testing.T) { t.Parallel() - groupPriv := test.RandPrivKey(t) + groupPriv := test.RandPrivKey() groupPub := groupPriv.PubKey() groupKeyDesc := test.PubToKeyDesc(groupPub) genSigner := NewMockGenesisSigner(groupPriv) diff --git a/asset/mock.go b/asset/mock.go index 80f909cae..6064136d0 100644 --- a/asset/mock.go +++ b/asset/mock.go @@ -19,6 +19,7 @@ import ( "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/tlv" "github.com/stretchr/testify/require" + "pgregory.net/rapid" ) // RandGenesis creates a random genesis for testing. @@ -38,17 +39,24 @@ func RandGenesis(t testing.TB, assetType Type) Genesis { } // RandGroupKey creates a random group key for testing. -func RandGroupKey(t testing.TB, genesis Genesis, newAsset *Asset) *GroupKey { - groupKey, _ := RandGroupKeyWithSigner(t, genesis, newAsset) +func RandGroupKey(t rapid.TB, genesis Genesis, newAsset *Asset) *GroupKey { + groupKey, _ := RandGroupKeyWithSigner(t, nil, genesis, newAsset) return groupKey } // RandGroupKeyWithSigner creates a random group key for testing, and provides // the signer for reissuing assets into the same group. -func RandGroupKeyWithSigner(t testing.TB, genesis Genesis, - newAsset *Asset) (*GroupKey, []byte) { +func RandGroupKeyWithSigner(t rapid.TB, privKey *btcec.PrivateKey, + genesis Genesis, newAsset *Asset) (*GroupKey, []byte) { - privateKey := test.RandPrivKey(t) + var privateKey *btcec.PrivateKey + switch { + case privKey != nil: + privateKey = privKey + + default: + privateKey = test.RandPrivKey() + } genSigner := NewMockGenesisSigner(privateKey) genBuilder := MockGroupTxBuilder{} @@ -352,7 +360,7 @@ func AssetCustomGroupKey(t *testing.T, useHashLock, BIP86, keySpend, scriptKey := RandScriptKey(t) protoAsset := RandAssetWithValues(t, gen, nil, scriptKey) - groupPrivKey := test.RandPrivKey(t) + groupPrivKey := test.RandPrivKey() groupInternalKey := groupPrivKey.PubKey() genSigner := NewMockGenesisSigner(groupPrivKey) genBuilder := MockGroupTxBuilder{} @@ -430,12 +438,12 @@ func AssetCustomGroupKey(t *testing.T, useHashLock, BIP86, keySpend, // RandScriptKey creates a random script key for testing. func RandScriptKey(t testing.TB) ScriptKey { - return NewScriptKey(test.RandPrivKey(t).PubKey()) + return NewScriptKey(test.RandPrivKey().PubKey()) } // RandSerializedKey creates a random serialized key for testing. func RandSerializedKey(t testing.TB) SerializedKey { - return ToSerialized(test.RandPrivKey(t).PubKey()) + return ToSerialized(test.RandPrivKey().PubKey()) } // RandID creates a random asset ID. diff --git a/commitment/commitment_test.go b/commitment/commitment_test.go index 1a017897f..b84aa08b5 100644 --- a/commitment/commitment_test.go +++ b/commitment/commitment_test.go @@ -53,7 +53,7 @@ func randAssetDetails(t *testing.T, assetType asset.Type) *AssetDetails { Version: assetVersion, Type: assetType, ScriptKey: keychain.KeyDescriptor{ - PubKey: test.RandPrivKey(t).PubKey(), + PubKey: test.RandPrivKey().PubKey(), }, Amount: &amount, LockTime: rand.Uint64(), @@ -127,7 +127,7 @@ func TestNewAssetCommitment(t *testing.T) { ) group1Anchor := randAsset(t, genesis1, nil) groupKey1, group1PrivBytes := asset.RandGroupKeyWithSigner( - t, genesis1, group1Anchor, + t, nil, genesis1, group1Anchor, ) group1Anchor = asset.NewAssetNoErr( t, genesis1, group1Anchor.Amount, group1Anchor.LockTime, @@ -289,7 +289,7 @@ func TestMintTapCommitment(t *testing.T) { genesisNormal := asset.RandGenesis(t, asset.Normal) genesisCollectible := asset.RandGenesis(t, asset.Collectible) pubKey := keychain.KeyDescriptor{ - PubKey: test.RandPrivKey(t).PubKey(), + PubKey: test.RandPrivKey().PubKey(), } testCases := []struct { @@ -1008,7 +1008,7 @@ func TestUpdateAssetCommitment(t *testing.T) { genesis1collect.Type = asset.Collectible group1Anchor := randAsset(t, genesis1, nil) groupKey1, group1PrivBytes := asset.RandGroupKeyWithSigner( - t, genesis1, group1Anchor, + t, nil, genesis1, group1Anchor, ) group1Anchor = asset.NewAssetNoErr( t, genesis1, group1Anchor.Amount, group1Anchor.LockTime, diff --git a/commitment/taproot_test.go b/commitment/taproot_test.go index 88d3e52ff..67dcd79ae 100644 --- a/commitment/taproot_test.go +++ b/commitment/taproot_test.go @@ -27,7 +27,7 @@ func TestTapscriptPreimage(t *testing.T) { // Create a script tree that we'll use for our tapscript sibling test // cases. - scriptInternalKey := test.RandPrivKey(t).PubKey() + scriptInternalKey := test.RandPrivKey().PubKey() leaf1 := test.ScriptHashLock(t, []byte("foobar")) leaf1Hash := leaf1.TapHash() leaf2 := test.ScriptSchnorrSig(t, scriptInternalKey) diff --git a/internal/test/helpers.go b/internal/test/helpers.go index d5ccedeed..654fc5ca8 100644 --- a/internal/test/helpers.go +++ b/internal/test/helpers.go @@ -98,7 +98,7 @@ func RandOp(t testing.TB) wire.OutPoint { return op } -func RandPrivKey(_ testing.TB) *btcec.PrivateKey { +func RandPrivKey() *btcec.PrivateKey { priv, _ := btcec.PrivKeyFromBytes(RandBytes(32)) return priv } @@ -139,7 +139,7 @@ func SchnorrKeysEqual(t testing.TB, a, b *btcec.PublicKey) bool { } func RandPubKey(t testing.TB) *btcec.PublicKey { - return SchnorrPubKey(t, RandPrivKey(t)) + return SchnorrPubKey(t, RandPrivKey()) } func RandCommitmentKeyRing(t *testing.T) lnwallet.CommitmentKeyRing { diff --git a/itest/assets_test.go b/itest/assets_test.go index a7da341e9..e6a7224f0 100644 --- a/itest/assets_test.go +++ b/itest/assets_test.go @@ -417,7 +417,7 @@ func testMintAssetsWithTapscriptSibling(t *harnessTest) { defer cancel() // Build the tapscript tree. - sigLockPrivKey := test.RandPrivKey(t.t) + sigLockPrivKey := test.RandPrivKey() hashLockPreimage := []byte("foobar") hashLockLeaf := test.ScriptHashLock(t.t, hashLockPreimage) sigLeaf := test.ScriptSchnorrSig(t.t, sigLockPrivKey.PubKey()) diff --git a/proof/append_test.go b/proof/append_test.go index ceca240cb..962c3e012 100644 --- a/proof/append_test.go +++ b/proof/append_test.go @@ -118,7 +118,7 @@ func runAppendTransitionTest(t *testing.T, assetType asset.Type, amt uint64, require.NoError(t, err) // Transfer the asset to a new owner. - recipientPrivKey := test.RandPrivKey(t) + recipientPrivKey := test.RandPrivKey() newAsset := *genesisProof.Asset.Copy() newAsset.ScriptKey = asset.NewScriptKeyBip86( test.PubToKeyDesc(recipientPrivKey.PubKey()), @@ -156,7 +156,7 @@ func runAppendTransitionTest(t *testing.T, assetType asset.Type, amt uint64, // Add a P2TR change output to test the exclusion proof. var changeInternalKey *btcec.PublicKey if withBip86Change { - changeInternalKey = test.RandPrivKey(t).PubKey() + changeInternalKey = test.RandPrivKey().PubKey() changeTaprootKey := txscript.ComputeTaprootKeyNoScript( changeInternalKey, ) @@ -221,9 +221,9 @@ func runAppendTransitionTest(t *testing.T, assetType asset.Type, amt uint64, } // If we want to test splitting, we do that now, as a second transfer. - split1PrivKey := test.RandPrivKey(t) - split2PrivKey := test.RandPrivKey(t) - split3PrivKey := test.RandPrivKey(t) + split1PrivKey := test.RandPrivKey() + split2PrivKey := test.RandPrivKey() + split3PrivKey := test.RandPrivKey() transitionOutpoint := wire.OutPoint{ Hash: transitionProof.AnchorTx.TxHash(), Index: transitionProof.InclusionProof.OutputIndex, diff --git a/proof/mint_test.go b/proof/mint_test.go index 6e9b5e30a..03c86ae16 100644 --- a/proof/mint_test.go +++ b/proof/mint_test.go @@ -22,7 +22,7 @@ func TestNewMintingBlobs(t *testing.T) { // First, we'll create a fake, but legit looking set of minting params // to generate a proof with. - genesisPrivKey := test.RandPrivKey(t) + genesisPrivKey := test.RandPrivKey() genesisScriptKey := test.PubToKeyDesc(genesisPrivKey.PubKey()) // We'll modify the returned genesis to instead commit to some actual @@ -71,7 +71,7 @@ func TestNewMintingBlobs(t *testing.T) { ) taprootScript := test.ComputeTaprootScript(t, taprootKey) - changeInternalKey := test.RandPrivKey(t).PubKey() + changeInternalKey := test.RandPrivKey().PubKey() changeTaprootKey := txscript.ComputeTaprootKeyNoScript( changeInternalKey, ) diff --git a/proof/proof_test.go b/proof/proof_test.go index a5fd361de..028b4a725 100644 --- a/proof/proof_test.go +++ b/proof/proof_test.go @@ -234,7 +234,7 @@ func genRandomGenesisWithProof(t testing.TB, assetType asset.Type, t.Helper() - genesisPrivKey := test.RandPrivKey(t) + genesisPrivKey := test.RandPrivKey() genesisPubKey := test.PubToKeyDesc(genesisPrivKey.PubKey()) // If we have a specified meta reveal, then we'll replace the meta hash @@ -371,7 +371,7 @@ func TestGenesisProofVerification(t *testing.T) { // Create a script tree that we'll use for our tapscript sibling test // cases. - scriptInternalKey := test.RandPrivKey(t).PubKey() + scriptInternalKey := test.RandPrivKey().PubKey() leaf1 := test.ScriptHashLock(t, []byte("foobar")) leaf2 := test.ScriptSchnorrSig(t, scriptInternalKey) testLeafPreimage, err := commitment.NewPreimageFromLeaf(leaf1) diff --git a/rfqmsg/request_test.go b/rfqmsg/request_test.go index 20f5bca69..de92cd93e 100644 --- a/rfqmsg/request_test.go +++ b/rfqmsg/request_test.go @@ -139,7 +139,7 @@ func TestRequestMsgDataEncodeDecode(t *testing.T) { assetId := asset.ID(randomAssetIdBytes) // Create a random asset group key. - assetGroupKey := test.RandPrivKey(t).PubKey() + assetGroupKey := test.RandPrivKey().PubKey() // Create a zero asset ID. An asset ID of all zeros indicates BTC in the // context of the request message. diff --git a/tapdb/assets_store_test.go b/tapdb/assets_store_test.go index 3473246d6..b619454b7 100644 --- a/tapdb/assets_store_test.go +++ b/tapdb/assets_store_test.go @@ -57,7 +57,7 @@ func defaultAssetGenOpts(t *testing.T) *assetGenOptions { return &assetGenOptions{ version: asset.Version(rand.Int31n(2)), assetGen: gen, - groupKeyPriv: test.RandPrivKey(t), + groupKeyPriv: test.RandPrivKey(), amt: uint64(test.RandInt[uint32]()), genesisPoint: test.RandOp(t), scriptKey: asset.NewScriptKeyBip86(keychain.KeyDescriptor{ @@ -520,7 +520,7 @@ func newAssetGenerator(t *testing.T, groupKeys := make([]*btcec.PrivateKey, numGroupKeys) for i := 0; i < numGroupKeys; i++ { - groupKeys[i] = test.RandPrivKey(t) + groupKeys[i] = test.RandPrivKey() } return &assetGenerator{ diff --git a/tapsend/send_test.go b/tapsend/send_test.go index 0955cbb1d..2273e2ad9 100644 --- a/tapsend/send_test.go +++ b/tapsend/send_test.go @@ -2020,11 +2020,11 @@ func TestPayToAddrScript(t *testing.T) { sendAmt = 2 ) gen := asset.RandGenesis(t, asset.Normal) - ownerDescriptor := test.PubToKeyDesc(test.RandPrivKey(t).PubKey()) + ownerDescriptor := test.PubToKeyDesc(test.RandPrivKey().PubKey()) - internalKey := test.RandPrivKey(t).PubKey() + internalKey := test.RandPrivKey().PubKey() recipientScriptKey := asset.NewScriptKeyBip86(test.PubToKeyDesc( - test.RandPrivKey(t).PubKey(), + test.RandPrivKey().PubKey(), )) // Create an asset and derive a commitment for sending 2 of the 5 asset diff --git a/vm/vm_test.go b/vm/vm_test.go index 7faab3cca..c3601d678 100644 --- a/vm/vm_test.go +++ b/vm/vm_test.go @@ -194,7 +194,7 @@ func invalidGenesisStateTransitionWitness(assetType asset.Type, func collectibleStateTransition(t *testing.T) (*asset.Asset, commitment.SplitSet, commitment.InputSet, uint32) { - privKey := test.RandPrivKey(t) + privKey := test.RandPrivKey() scriptKey := txscript.ComputeTaprootKeyNoScript(privKey.PubKey()) genesisOutPoint := wire.OutPoint{} @@ -206,7 +206,7 @@ func collectibleStateTransition(t *testing.T) (*asset.Asset, ScriptKey: asset.ToSerialized(genesisAsset.ScriptKey.PubKey), } newAsset := genesisAsset.Copy() - newAsset.ScriptKey = asset.NewScriptKey(test.RandPrivKey(t).PubKey()) + newAsset.ScriptKey = asset.NewScriptKey(test.RandPrivKey().PubKey()) newAsset.PrevWitnesses = []asset.Witness{{ PrevID: prevID, TxWitness: nil, @@ -245,12 +245,12 @@ func normalStateTransition(t *testing.T, currentHeight uint32, sequence, lockTime uint64, addCsvScript, addCltvScript bool) (*asset.Asset, commitment.SplitSet, commitment.InputSet, uint32) { - privKey1 := test.RandPrivKey(t) + privKey1 := test.RandPrivKey() scriptKey1 := txscript.ComputeTaprootKeyNoScript( privKey1.PubKey(), ) - privKey2 := test.RandPrivKey(t) + privKey2 := test.RandPrivKey() builder := txscript.NewScriptBuilder(). AddData(schnorr.SerializePubKey(privKey2.PubKey())). AddOp(txscript.OP_CHECKSIG) @@ -357,7 +357,7 @@ func customScriptStateTransition(t *testing.T, currentHeight uint32, sequence, lockTime uint64, tapLeaf txscript.TapLeaf) (*asset.Asset, commitment.SplitSet, commitment.InputSet, uint32) { - privKey := test.RandPrivKey(t) + privKey := test.RandPrivKey() tapTree := txscript.AssembleTaprootScriptTree(tapLeaf) tapTreeRoot := tapTree.RootNode.TapHash() scriptKey := txscript.ComputeTaprootOutputKey( @@ -414,7 +414,7 @@ func customScriptStateTransition(t *testing.T, currentHeight uint32, sequence, func splitStateTransition(t *testing.T) (*asset.Asset, commitment.SplitSet, commitment.InputSet, uint32) { - privKey := test.RandPrivKey(t) + privKey := test.RandPrivKey() scriptKey := txscript.ComputeTaprootKeyNoScript(privKey.PubKey()) genesisOutPoint := wire.OutPoint{} @@ -470,7 +470,7 @@ func splitFullValueStateTransition(validRootLocator, return func(t *testing.T) (*asset.Asset, commitment.SplitSet, commitment.InputSet, uint32) { - privKey := test.RandPrivKey(t) + privKey := test.RandPrivKey() scriptKey := txscript.ComputeTaprootKeyNoScript(privKey.PubKey()) genesisOutPoint := wire.OutPoint{} @@ -530,7 +530,7 @@ func splitCollectibleStateTransition(validRoot bool) stateTransitionFunc { return func(t *testing.T) (*asset.Asset, commitment.SplitSet, commitment.InputSet, uint32) { - privKey := test.RandPrivKey(t) + privKey := test.RandPrivKey() scriptKey := txscript.ComputeTaprootKeyNoScript(privKey.PubKey()) genesisOutPoint := wire.OutPoint{} @@ -595,7 +595,7 @@ func groupAnchorStateTransition(useHashLock, BIP86, keySpend, valid bool, func scriptTreeSpendStateTransition(t *testing.T, useHashLock, valid bool, sigHashType txscript.SigHashType) stateTransitionFunc { - scriptPrivKey := test.RandPrivKey(t) + scriptPrivKey := test.RandPrivKey() usedLeaf, testTapScript, _, _, scriptWitness := test.BuildTapscriptTree( t, useHashLock, valid, scriptPrivKey.PubKey(), ) From 93a2f70475862d1fc211924458229f8af96a38fa Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Thu, 31 Oct 2024 14:17:03 -0400 Subject: [PATCH 08/11] asset: add prop tests for AltLeaf[Asset] In this commit, we add property tests for the AltLeaf validation logic and the AltLeaf encoder and decoder. We also add Generator functions for many types, including the Asset type. --- asset/asset_test.go | 75 + asset/generators.go | 319 ++ asset/mock.go | 129 + ..._encode_decode-20241111171921-1610587.fail | 590 +++ ..._encode_decode-20241111172000-1611032.fail | 1865 ++++++++++ ..._encode_decode-20241111172016-1611437.fail | 1793 +++++++++ ..._encode_decode-20241111172031-1611816.fail | 3255 +++++++++++++++++ ..._encode_decode-20241111172046-1612197.fail | 2064 +++++++++++ ..._encode_decode-20241111172059-1612570.fail | 2082 +++++++++++ ..._encode_decode-20241111172123-1612976.fail | 1571 ++++++++ ..._encode_decode-20241111172139-1613351.fail | 166 + docs/examples/basic-price-oracle/go.mod | 1 + 12 files changed, 13910 insertions(+) create mode 100644 asset/generators.go create mode 100644 asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111171921-1610587.fail create mode 100644 asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172000-1611032.fail create mode 100644 asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172016-1611437.fail create mode 100644 asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172031-1611816.fail create mode 100644 asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172046-1612197.fail create mode 100644 asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172059-1612570.fail create mode 100644 asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172123-1612976.fail create mode 100644 asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172139-1613351.fail diff --git a/asset/asset_test.go b/asset/asset_test.go index bc9ec42d3..449e08be8 100644 --- a/asset/asset_test.go +++ b/asset/asset_test.go @@ -4,6 +4,7 @@ import ( "bytes" "crypto/sha256" "encoding/hex" + "reflect" "testing" "github.com/btcsuite/btcd/blockchain" @@ -18,6 +19,7 @@ import ( "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/tlv" "github.com/stretchr/testify/require" + "pgregory.net/rapid" ) var ( @@ -514,6 +516,79 @@ func TestAssetEncoding(t *testing.T) { test.WriteTestVectors(t, generatedTestVectorName, testVectors) } +// TestAltLeafEncoding runs a property test for AltLeaf validation, encoding, +// and decoding. +func TestAltLeafEncoding(t *testing.T) { + t.Run("alt leaf encode/decode", rapid.MakeCheck(testAltLeafEncoding)) +} + +// testAltLeafEncoding tests the AltLeaf validation logic, and that a valid +// AltLeaf can be encoded and decoded correctly. +func testAltLeafEncoding(t *rapid.T) { + protoLeaf := AltLeafGen(t).Draw(t, "alt_leaf") + validAltLeafErr := protoLeaf.ValidateAltLeaf() + + // If validation passes, the asset must follow all alt leaf constraints. + asserts := []AssetAssert{ + AssetVersionAssert(V0), + AssetGenesisAssert(EmptyGenesis), + AssetAmountAssert(0), + AssetLockTimeAssert(0), + AssetRelativeLockTimeAssert(0), + AssetHasSplitRootAssert(false), + AssetGroupKeyAssert(nil), + AssetHasScriptKeyAssert(true), + } + assertErr := CheckAssetAsserts(&protoLeaf, asserts...) + + // If the validation method and these assertions behave differently, + // either the test or the validation method is incorrect. + switch { + case validAltLeafErr == nil && assertErr != nil: + t.Error(assertErr) + + case validAltLeafErr != nil && assertErr == nil: + t.Error(validAltLeafErr) + + default: + } + + // Don't test encoding for invalid alt leaves. + if validAltLeafErr != nil { + return + } + + // If the alt leaf is valid, check that it can be encoded without error, + // and decoded to an identical alt leaf. + // fmt.Println("valid leaf") + var buf bytes.Buffer + if err := protoLeaf.EncodeAltLeaf(&buf); err != nil { + t.Error(err) + } + + var decodedLeaf Asset + altLeafBytes := bytes.NewReader(buf.Bytes()) + if err := decodedLeaf.DecodeAltLeaf(altLeafBytes); err != nil { + t.Error(err) + } + + if !protoLeaf.DeepEqual(&decodedLeaf) { + t.Errorf("decoded leaf %v does not match input %v", decodedLeaf, + protoLeaf) + } + + // Asset.DeepEqual does not inspect UnknownOddTypes, so check for their + // equality separately. + if !reflect.DeepEqual( + protoLeaf.UnknownOddTypes, decodedLeaf.UnknownOddTypes, + ) { + + t.Errorf("decoded leaf unknown types %v does not match input "+ + "%v", decodedLeaf.UnknownOddTypes, + protoLeaf.UnknownOddTypes) + } +} + // TestTapLeafEncoding asserts that we can properly encode and decode tapLeafs // through their TLV serialization, and that invalid tapLeafs are rejected. func TestTapLeafEncoding(t *testing.T) { diff --git a/asset/generators.go b/asset/generators.go new file mode 100644 index 000000000..228b66637 --- /dev/null +++ b/asset/generators.go @@ -0,0 +1,319 @@ +package asset + +import ( + "crypto/sha256" + "fmt" + "io" + "math" + + "github.com/btcsuite/btcd/btcec/v2" + "github.com/btcsuite/btcd/wire" + "github.com/decred/dcrd/dcrec/secp256k1/v4" + "github.com/lightninglabs/taproot-assets/internal/test" + "github.com/lightninglabs/taproot-assets/mssmt" + "github.com/lightningnetwork/lnd/keychain" + "github.com/lightningnetwork/lnd/tlv" + "pgregory.net/rapid" +) + +const ( + // MaxPrevWitnesses is the maximum number of PrevWitness objects + // that will be generated when generating []Witness. + MaxPrevWitnesses = 8 + + // MaxTxWitnessElementCount is the maximum number of elements in a + MaxTxWitnessElementCount = 64 + + // MaxTxWitnessElementSize is the maximum size of a single object in a + // generated witness stack. + MaxTxWitnessElementSize = 64 +) + +var ( + // Simple generators. + + VersionGen = rapid.SampledFrom([]Version{V0, V1}) + + // This is used for fields that are uint64, but clamped to UINT32_MAX + // by other checks at runtime. + NonZeroUint32Gen = rapid.Uint64Range(1, math.MaxUint32) + HashBytesGen = NewByteSliceGen(sha256.Size) + WitnessElementGen = rapid.SliceOfN( + rapid.Byte(), 1, MaxTxWitnessElementSize, + ) + AssetIDGen = rapid.Custom(func(t *rapid.T) ID { + return (ID)(HashBytesGen.Draw(t, "asset_id")) + }) + OutPointGen = rapid.Make[wire.OutPoint]() + + // Generators for various types of keys. + + PrivKeyGen = rapid.Custom(PrivKeyInnerGen) + PubKeyGen = rapid.Custom(func(t *rapid.T) *btcec.PublicKey { + return PrivKeyGen.Draw(t, "privkey").PubKey() + }) + MaybePubKeyGen = rapid.OneOf( + PubKeyGen, rapid.Just[*btcec.PublicKey](nil), + ) + KeyLocGen = rapid.Custom(func(t *rapid.T) keychain.KeyLocator { + keyFam := rapid.Uint32().Draw(t, "key_family") + + return keychain.KeyLocator{ + Family: keychain.KeyFamily(keyFam), + Index: rapid.Uint32().Draw(t, "key_index"), + } + }) + KeyDescGen = rapid.Custom(func(t *rapid.T) keychain.KeyDescriptor { + return keychain.KeyDescriptor{ + KeyLocator: KeyLocGen.Draw(t, "key_locator"), + PubKey: MaybePubKeyGen.Draw(t, "pubkey"), + } + }) + TweakedScriptKeyGen = rapid.Custom(func(t *rapid.T) TweakedScriptKey { + return TweakedScriptKey{ + RawKey: KeyDescGen.Draw(t, "raw_key"), + Tweak: HashBytesGen.Draw(t, "tweak"), + DeclaredKnown: rapid.Bool().Draw(t, "declared_known"), + } + }) + ScriptKeyGen = rapid.Custom(func(t *rapid.T) ScriptKey { + return ScriptKey{ + PubKey: MaybePubKeyGen.Draw(t, "pubkey"), + TweakedScriptKey: rapid.Ptr( + TweakedScriptKeyGen, true, + ).Draw(t, "tweaked_script_key"), + } + }) + SerializedKeyGen = rapid.Custom(func(t *rapid.T) SerializedKey { + key := PubKeyGen.Draw(t, "serialized_key") + return ToSerialized(key) + }) + + // Generators for nested structs. + + // All TxWitness will have at least 1 element of 1 byte, or be nil. This + // helps us avoid failed equality checks for []byte{} and nil. + TxWitnessGen = rapid.Custom(func(t *rapid.T) wire.TxWitness { + witness := rapid.SliceOfN( + WitnessElementGen, 1, MaxTxWitnessElementCount, + ).Draw(t, "tx_witness_non_empty") + + // We don't use rapid.Ptr here since [][]byte is already a + // pointer type. + return rapid.SampledFrom( + []wire.TxWitness{witness, nil}, + ).Draw(t, "tx_witness") + }) + NonGenesisPrevIDGen = rapid.Custom(func(t *rapid.T) PrevID { + return PrevID{ + OutPoint: OutPointGen.Draw(t, "outpoint"), + ID: AssetIDGen.Draw(t, "asset_id"), + ScriptKey: SerializedKeyGen.Draw(t, "script_key"), + } + }) + GenesisGen = rapid.Make[Genesis]() + SplitRootGen = rapid.Custom(func(t *rapid.T) mssmt.BranchNode { + return *mssmt.NewComputedBranch( + mssmt.NodeHash(HashBytesGen.Draw(t, "split_root_hash")), + NonZeroUint32Gen.Draw(t, "split_root_sum"), + ) + }) + WitnessGen = rapid.Custom(func(t *rapid.T) Witness { + randomPrevID := NonGenesisPrevIDGen.Draw(t, "prev_id") + // Add the Genesis PrevID as an explicit possibility. + prevID := rapid.SampledFrom( + []*PrevID{&randomPrevID, {}}, + ) + + return Witness{ + PrevID: prevID.Draw(t, "witness prevID"), + TxWitness: TxWitnessGen.Draw(t, "tx_witness"), + // TODO(jhb): Implement generator for split commitments + SplitCommitment: nil, + } + }) + PrevWitnessGen = rapid.SliceOfN(WitnessGen, 0, MaxPrevWitnesses) + AssetGen = rapid.Custom(AssetInnerGen) +) + +// ByteReader is a wrapper around rapid.T that allows us to use generated random +// bytes as input for helper functions that require an io.Reader an not []byte. +type ByteReader struct { + t *rapid.T + fullRead bool + name string +} + +// NewRapidByteReader returns a new ByteReader ready for use. +func NewRapidByteReader(t *rapid.T, name string, fullRead bool) *ByteReader { + return &ByteReader{ + t: t, + fullRead: fullRead, + name: name, + } +} + +// NewByteSliceGen constructs a generator for []byte that will always create +// fully populated slices of length p. +func NewByteSliceGen(p int) *rapid.Generator[[]byte] { + return rapid.SliceOfN(rapid.Byte(), p, p) +} + +// Read implements io.Reader. If fullRead is false for the ByteReader, output +// of size less than len(p) may be returned. +func (b *ByteReader) Read(p []byte) (n int, err error) { + if b.t == nil { + return 0, fmt.Errorf("byte reader not initialized") + } + + var byteGen *rapid.Generator[[]byte] + switch b.fullRead { + case true: + byteGen = NewByteSliceGen(len(p)) + case false: + byteGen = rapid.SliceOfN(rapid.Byte(), 0, len(p)) + } + + copy(p, byteGen.Draw(b.t, b.name)) + return len(p), nil +} + +// PrivKeyInnerGen generates a valid, random secp256k1 private key for use in +// property tests. +func PrivKeyInnerGen(t *rapid.T) *btcec.PrivateKey { + randReader := NewRapidByteReader(t, "privkey", true) + + // Key generation should always succeed on the first run; our reader is + // infallible. + privKey, err := secp256k1.GeneratePrivateKeyFromRand(randReader) + if err != nil { + t.Errorf("Private key generation failed: %v", err) + } + + return privKey +} + +// AssetGenWithValues generates an Asset with some specific fields set. +func AssetGenWithValues(t *rapid.T, genesis Genesis, groupKey *GroupKey, + scriptKey ScriptKey) *Asset { + + units := NonZeroUint32Gen.Draw(t, "units") + switch genesis.Type { + case Normal: + + case Collectible: + units = 1 + + default: + t.Errorf("unhandled asset type: %v", genesis.Type) + } + + version := VersionGen.Draw(t, "asset_version") + locktime := rapid.Uint32().Draw(t, "locktime") + relocktime := rapid.Uint32().Draw(t, "relocktime") + prevWitness := PrevWitnessGen.Draw(t, "prev_witness") + + return &Asset{ + Version: version, + Genesis: genesis, + Amount: units, + LockTime: uint64(locktime), + RelativeLockTime: uint64(relocktime), + PrevWitnesses: prevWitness, + SplitCommitmentRoot: nil, + ScriptVersion: ScriptV0, + ScriptKey: scriptKey, + GroupKey: groupKey, + } +} + +// AssetInnerGen generates an Asset with random fields, that may also have a +// valid group key. +func AssetInnerGen(t *rapid.T) Asset { + genesis := GenesisGen.Draw(t, "genesis") + scriptKey := ScriptKeyGen.Draw(t, "script_key") + protoAsset := AssetGenWithValues(t, genesis, nil, scriptKey) + + hasGroupKey := rapid.Bool().Draw(t, "has_group_key") + if hasGroupKey { + // Make the asset a genesis asset before creating the group key. + protoAsset.PrevWitnesses = []Witness{{ + PrevID: &PrevID{}, + TxWitness: nil, + SplitCommitment: nil, + }} + groupPriv := PrivKeyGen.Draw(t, "group_key_priv") + groupKey, _ := RandGroupKeyWithSigner( + t, groupPriv, genesis, protoAsset, + ) + + // Set the group key and group witness. + protoAsset.GroupKey = groupKey + protoAsset.PrevWitnesses[0].TxWitness = groupKey.Witness + } + + return *protoAsset +} + +// AltLeafGen generates an Asset with mostly random fields. The generators for +// specific fields choose between a random value and a known valid value for an +// Asset that would be an AltLeaf. +func AltLeafGen(t *rapid.T) *rapid.Generator[Asset] { + // Generate a group key without checking for validity. + groupKeyGen := rapid.Custom(func(t *rapid.T) GroupKey { + return GroupKey{ + RawKey: KeyDescGen.Draw(t, "key_desc"), + GroupPubKey: *PubKeyGen.Draw(t, "group_pub_key"), + TapscriptRoot: HashBytesGen.Draw(t, "tapscript_root"), + Witness: TxWitnessGen.Draw(t, "witness"), + } + }) + maybeGroupKeyGen := rapid.Ptr(groupKeyGen, true) + + // Select between a random value and the known valid value. + geneses := []Genesis{GenesisGen.Draw(t, "genesis"), EmptyGenesis} + gen := rapid.SampledFrom(geneses) + + Uint64Gen := rapid.OneOf( + rapid.Just(uint64(0)), rapid.Uint64Range(0, math.MaxUint32), + ) + + unknownOddType := tlv.TypeMap{ + test.TestVectorAllowedUnknownType: []byte("the great unknown"), + } + unknownOddGen := rapid.SampledFrom([]tlv.TypeMap{unknownOddType, nil}) + scriptVersGen := rapid.Custom(func(t *rapid.T) ScriptVersion { + return ScriptVersion(rapid.Uint16().Draw(t, "script_version")) + }) + + return rapid.Custom(func(t *rapid.T) Asset { + newLeaf := Asset{ + Version: VersionGen.Draw(t, "version"), + Genesis: gen.Draw(t, "genesis"), + Amount: Uint64Gen.Draw(t, "amt"), + LockTime: Uint64Gen.Draw(t, "locktime"), + RelativeLockTime: Uint64Gen.Draw(t, "rel_locktime"), + PrevWitnesses: PrevWitnessGen.Draw( + t, "prev_witness", + ), + ScriptVersion: scriptVersGen.Draw(t, "script_version"), + ScriptKey: ScriptKeyGen.Draw(t, "script_key"), + GroupKey: maybeGroupKeyGen.Draw(t, "group_key"), + UnknownOddTypes: unknownOddGen.Draw( + t, "unknown_odd_types", + ), + } + + // Handle the SplitCommitmentRoot separately, as it's an + // interface, so rapid.Ptr() does not work. + if rapid.Bool().Draw(t, "has_split_root") { + splitRoot := SplitRootGen.Draw(t, "split_root") + newLeaf.SplitCommitmentRoot = &splitRoot + } + + return newLeaf + }) +} + +// Ensure ByteReader implements the io.Reader interface. +var _ io.Reader = (*ByteReader)(nil) diff --git a/asset/mock.go b/asset/mock.go index 6064136d0..7fc688aed 100644 --- a/asset/mock.go +++ b/asset/mock.go @@ -22,6 +22,135 @@ import ( "pgregory.net/rapid" ) +// AssetAssert is a function type that asserts a property of an asset. +type AssetAssert func(a *Asset) error + +// AssetAmountAssert returns an Assert that checks equality for an asset's +// amount. +func AssetAmountAssert(amt uint64) AssetAssert { + return func(a *Asset) error { + if a.Amount != amt { + return fmt.Errorf("unexpected asset amount, got %v "+ + "wanted %v", a.Amount, amt) + } + + return nil + } +} + +// AssetVersionAssert returns an Assert that checks equality for an asset's +// version. +func AssetVersionAssert(v Version) AssetAssert { + return func(a *Asset) error { + if a.Version != v { + return fmt.Errorf("unexpected asset version, got %v "+ + "wanted %v", a.Version, v) + } + + return nil + } +} + +// AssetGenesisAssert returns an Assert that checks equality for an asset's +// genesis. +func AssetGenesisAssert(g Genesis) AssetAssert { + return func(a *Asset) error { + if a.Genesis != g { + return fmt.Errorf("unexpected asset genesis, got %v "+ + "wanted %v", a.Genesis, g) + } + + return nil + } +} + +// AssetLockTimeAssert returns an Assert that checks equality for an asset's +// lock time. +func AssetLockTimeAssert(l uint64) AssetAssert { + return func(a *Asset) error { + if a.LockTime != l { + return fmt.Errorf("unexpected asset lock time, got %v "+ + "wanted %v", a.LockTime, l) + } + + return nil + } +} + +// AssetRelativeLockTimeAssert returns an Assert that checks equality for an +// asset's relative lock time. +func AssetRelativeLockTimeAssert(r uint64) AssetAssert { + return func(a *Asset) error { + if a.RelativeLockTime != r { + return fmt.Errorf("unexpected asset relative lock "+ + "time, got %v wanted %v", a.RelativeLockTime, r) + } + + return nil + } +} + +// AssetHasSplitRootAssert returns an Assert that checks the state of an asset's +// split commitment root. +func AssetHasSplitRootAssert(hasSplit bool) AssetAssert { + return func(a *Asset) error { + switch { + case hasSplit && a.SplitCommitmentRoot == nil: + return fmt.Errorf("expected asset split commitment") + + case !hasSplit && a.SplitCommitmentRoot != nil: + return fmt.Errorf("unexpected asset split "+ + "commitment, got %v", a.SplitCommitmentRoot) + + default: + return nil + } + } +} + +// AssetHasSplitRootAssert returns an Assert that checks the state of an asset's +// split commitment root. +func AssetHasScriptKeyAssert(hasKey bool) AssetAssert { + return func(a *Asset) error { + switch { + case hasKey && a.ScriptKey.PubKey == nil: + return fmt.Errorf("expected asset script key") + + case !hasKey && a.ScriptKey.PubKey != nil: + return fmt.Errorf("unexpected asset script key") + + default: + return nil + } + } +} + +// AssetGroupKeyAssert returns an Assert that checks equality for an asset's +// group key. +func AssetGroupKeyAssert(g *GroupKey) AssetAssert { + return func(a *Asset) error { + if !a.GroupKey.IsEqual(g) { + return fmt.Errorf("unexpected asset group key, got %v "+ + "wanted %v", a.GroupKey, g) + } + + return nil + } +} + +// CheckAssetAsserts runs a series of asset assertions and propagates an error +// if any of them fail. +func CheckAssetAsserts(a *Asset, checks ...AssetAssert) error { + for _, check := range checks { + err := check(a) + if err != nil { + return err + } + } + + return nil +} + // RandGenesis creates a random genesis for testing. func RandGenesis(t testing.TB, assetType Type) Genesis { t.Helper() diff --git a/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111171921-1610587.fail b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111171921-1610587.fail new file mode 100644 index 000000000..ee4aef855 --- /dev/null +++ b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111171921-1610587.fail @@ -0,0 +1,590 @@ +# 2024/11/11 17:19:21.356426 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw genesis: asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x1, 0xff, 0xce, 0x1, 0x2, 0x8b, 0x4b, 0x3d, 0x4a, 0x2, 0xa, 0x35, 0x6, 0x4, 0x2, 0x1, 0x86, 0xf, 0x9b, 0x26, 0x1, 0x42, 0x0, 0x3, 0x0, 0x1b, 0x35, 0xea, 0x6, 0x10, 0x3, 0x0}, Index:0x0}, Tag:"", MetaHash:[32]uint8{0x45, 0x8e, 0x99, 0x2, 0x88, 0x1d, 0xbd, 0xaa, 0x7b, 0x1, 0x74, 0x3, 0x5a, 0x7, 0x3, 0xeb, 0x1a, 0x2, 0xda, 0x6, 0x4d, 0xd4, 0x10, 0x8, 0xe, 0x1d, 0xc, 0xe7, 0xd7, 0xc, 0xb1, 0x6}, OutputIndex:0x1, Type:0x2} +# 2024/11/11 17:19:21.356523 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw alt_leaf: asset.Asset{Version:0x1, Genesis:asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, Index:0x0}, Tag:"", MetaHash:[32]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, OutputIndex:0x0, Type:0x0}, Amount:0x0, LockTime:0x0, RelativeLockTime:0x0, PrevWitnesses:[]asset.Witness{asset.Witness{PrevID:(*asset.PrevID)(0xc0001769a0), TxWitness:wire.TxWitness{[]uint8{0xc, 0x2, 0x2, 0x76, 0x3, 0xf6, 0x6, 0x70, 0x1, 0xe8, 0x31, 0x77, 0xe}, []uint8{0xdb}, []uint8{0x5, 0x2}, []uint8{0x76, 0x34}}, SplitCommitment:(*asset.SplitCommitment)(nil)}}, SplitCommitmentRoot:mssmt.Node(nil), ScriptVersion:0x0, ScriptKey:asset.ScriptKey{PubKey:(*secp256k1.PublicKey)(0xc0001e4550), TweakedScriptKey:(*asset.TweakedScriptKey)(nil)}, GroupKey:(*asset.GroupKey)(nil), UnknownOddTypes:tlv.TypeMap(nil)} +# 2024/11/11 17:19:21.356547 [TestAltLeafEncoding/alt_leaf_encode/decode] unexpected asset version, got 1 wanted 0 +# 2024/11/11 17:19:21.356566 [TestAltLeafEncoding/alt_leaf_encode/decode] decoded leaf {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 0 [{0xc000176a10 [[12 2 2 118 3 246 6 112 1 232 49 119 14] [219] [5 2] [118 52]] }] 0 {0xc0001e45a0 } map[]} does not match input {1 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 0 [{0xc0001769a0 [[12 2 2 118 3 246 6 112 1 232 49 119 14] [219] [5 2] [118 52]] }] 0 {0xc0001e4550 } map[]} +# +v0.4.8#14987938302502015677 +0x62acdf37d70f6 +0x1 +0x1fccfda7f24fd0 +0xffffffffffffffff +0x1c1857544ad722 +0xce +0x19a1fd202e6aa +0x1 +0xa664bb281ac28 +0x2 +0x15f513af9f210c +0x8b +0x1c94831af479e0 +0x4b +0x1dc6c10ed2d83d +0x3d +0x108897649ad636 +0x4a +0x78dedeaa81167 +0x2 +0xa4f271354023d +0xa +0x1cb54ce2a1d30d +0x35 +0xbef8fc64793a5 +0x6 +0x7160c9ffd5f8c +0x4 +0x3b0ce83821691 +0x2 +0x1faff5b66c71e +0x1 +0x1b77adfd8ce652 +0x86 +0xaaadc357c3d32 +0xf +0x1727c902f6d90c +0x9b +0xf523f4a6091b4 +0x26 +0x1752033d9552a7 +0x1 +0x1146aee4253540 +0x42 +0x307f23bfa8870 +0x0 +0xaffa5bad76de1 +0x3 +0x59a66fb200e7f +0x0 +0xe332929efb035 +0x1b +0x16de88f852fca7 +0x35 +0x14efd13266afa7 +0xea +0x97805de40df27 +0x6 +0xc2fb1f810e349 +0x10 +0x6c9ea56dce37a +0x3 +0x307dde7f988b5 +0x0 +0x1308444499f31 +0x0 +0xb3c0c1d1fe47 +0x1d66143d2bfad4 +0x45 +0x12637c6358db5e +0x8e +0x1c9930b11fab5b +0x99 +0x644ce6b76d928 +0x2 +0x1a871d53d44846 +0x88 +0xe1d0a54685376 +0x1d +0x1bb2c0ecabe1c5 +0xbd +0x134197e2d83644 +0xaa +0x1999dcf695d1a8 +0x7b +0x66f922a8cad16 +0x1 +0x12b029a4e47f27 +0x74 +0x478942a018830 +0x3 +0x11a0e7cea9fd91 +0x5a +0x716a94c8b309a +0x7 +0x8a8f294e839ad +0x3 +0x1e84f611bf6e8b +0xeb +0x17537ce5094267 +0x1a +0x9319851342921 +0x2 +0x19eee6218afda9 +0xda +0xa379fea22f4b9 +0x6 +0x1145fb24c7cbed +0x4d +0x1813a265c37a03 +0xd4 +0x1626cece3b5852 +0x10 +0x9903c3ef839e4 +0x8 +0xad04882c587ff +0xe +0x1608628ad24d0d +0x1d +0xfbf1e0bb234a5 +0xc +0x121b30451d2382 +0xe7 +0x1385cf17d39037 +0xd7 +0xae7f418338f57 +0xc +0x1edafcc29f21a5 +0xb1 +0x72ecc0ad84837 +0x6 +0x4652e243c4aae +0x1 +0xad3df05d0bab4 +0x2 +0x1ee462dc1f184b +0x1 +0x1189156ae99532 +0x1 +0x22925487bacdd +0x0 +0x40fc4c7818bdb +0x0 +0x15344c4f9b1c51 +0x0 +0xc9e33286c96e3 +0x0 +0x1d4cfd68ec8a01 +0x0 +0x1f0398d80ab20d +0x0 +0x15ae272d4edeab +0x93958a85c99ac +0x1 +0x1f7d751e9f6781 +0xffffffffffffffff +0x8575d42099d7d +0x4 +0x186b30ca889660 +0x97 +0x73dc475747603 +0x1 +0xbf6fafc410d91 +0x3 +0x51f92d67c59c8 +0x0 +0xdbbcd3568eb71 +0xb +0x1a64873cfe66df +0x65 +0x16c69542929829 +0x24 +0x168ffe79a44103 +0x72 +0x196c9bf2556efb +0x6e +0x172d9a0b9bcd8 +0x0 +0x1d4bd785592e52 +0x79 +0x13a6fac10d6055 +0x63 +0xdfcc90d99e5d8 +0x17 +0x14e3b9f6ef73da +0xcc +0x1162114d73583b +0x69 +0x877b43fb46356 +0x1 +0x18cc99a4730127 +0xe6 +0x1869ddeb3796ab +0x5f +0x1ad625fafa4f2a +0x89 +0x1c485cb9322873 +0xf3 +0xb074ff00f4fad +0x5 +0x7d496405951e1 +0x7 +0x10588c73f7b500 +0x9 +0x6582bad9d9d92 +0x2 +0x195f3fbb5f7067 +0x5f +0x1e5a1aafbe3156 +0x15 +0x15374fbb113d20 +0x4c +0xb213d82b1196b +0x2 +0x1b679d0e5019b4 +0x35 +0x7f880e2ef1f17 +0x1 +0x6ef8430b75a7a +0x124bf829e030c1 +0xd8 +0x2ef8cd9f7104e +0x160ec9294fafdb +0xac +0xe684275501873 +0x3d31cbaa98cf2 +0x2 +0xf905c3f329f81 +0xb5f6134931d89 +0x2 +0x72812e626af92 +0x1264cd0d766824 +0x9b +0x140bc798a050ea +0xe2ba830b1973b +0x2 +0x17b4f99ee8eab8 +0x9fbb3f52ee9e3 +0x8 +0x1bf1e99465ad26 +0x5db61467f732e +0x0 +0x7e682d6484c46 +0x11ec1dfd553db3 +0x2e +0x7ef0c36d16379 +0xa1c7794e4af7f +0xe +0xbaec73b2ecdc4 +0x1f2c53d6068d22 +0xffffffffffffffff +0x6809b76b83dba +0xffadc227ee3a7 +0xf +0x6fcae49c30244 +0x3f3993d506477 +0x0 +0x6d5635e850629 +0x1a7a7c492fa2f4 +0x62 +0x158c6d6f42040e +0x1642133bd5bc24 +0x3f +0xb1145c2142da3 +0x104048ef68ae83 +0x3f +0x11150dbf93983c +0x1d76f3ceb18e99 +0x28 +0xbf26dc2c71ba3 +0x34453b4c3acdb +0x0 +0x134351ca7b43e8 +0xeaef96cf74310 +0x3f +0x1e1c13c8f638fe +0x14d33ec03f5540 +0xef +0x16be65a6014c37 +0x122cebe80aa4d4 +0xa7 +0x157c94f4f4d167 +0x9f99e0107249 +0x1 +0xf487638dae6b +0x8efeff7378ef0 +0x2 +0x593b57c994ed8 +0x4939fe231f6dc +0x0 +0x1f86e60be86b1c +0x764a239ffe00c +0x2 +0x34939723ec12b +0x2231ab32674fa +0x1 +0x15de12b3d5adc1 +0x19f1cbbc7cdc61 +0x60 +0x32bda9627bef7 +0x10adb78578528b +0x10 +0x9948872026f7 +0x1685f2d294fb6e +0x98 +0x144eb6e4d44775 +0x1d46d3f15f1130 +0x1b +0x601ac466f3763 +0x1aa40ffb63c9b8 +0x8c +0x4a79e304323bb +0x1233ba82d575a6 +0xf1 +0x7ab09af65496e +0x1ef385340cdf09 +0xec480c804ad8b +0x5 +0x1c789cc4af9912 +0xfa4bcbfc08122 +0x2b +0x4c98e3a1257d +0x12bbcf6092e0ca +0x17 +0x1960c24d7c3990 +0x15a9fe0ede0024 +0x3 +0xa47ec83b30221 +0x13408c33121c82 +0x77 +0xc103c08b6463e +0xf8d38d4726bdc +0x22 +0x1110dae734cc9e +0x88d00b62e9811 +0x3 +0x117e704332108a +0xbc2e09cce1db0 +0xb +0xe69c88167d81b +0x1a0afd991d8eca +0x90 +0x1bd081f275f236 +0x13d20ef2d4623d +0xdc +0x1936c75b57958d +0x7c2280abf60c3 +0x0 +0xb803664383796 +0x152b54254b5e0c +0xd2 +0x1f2b17d66fff6e +0x17f2bd48bb7ff6 +0x11 +0x1fd5e24d401987 +0x1b3256cca54cff +0x1a +0x1379f335d41d84 +0x1e89ebd1ea2521 +0x5f +0x1d348493f7376 +0x141aaba37f0733 +0xd5 +0x150e0d80a0ea57 +0x7cd006fafed86 +0x0 +0xdedf17fc83b34 +0x11836abf346b84 +0x65 +0xaf00613db511b +0x174d2a9738a5e0 +0x3d +0xc6a5b4b323fe8 +0x16b2fb1074e5af +0xc7 +0xcaea050b3a815 +0x1f90f92c9b7781 +0xffffffffffffffff +0x138fd87a163e86 +0x9273c7026d7b8 +0x6 +0x188a509f2efc60 +0x6963ba0e971f6 +0x0 +0x47aa082ee8332 +0x11db75339bf29b +0x49 +0xa2fe2b244d95f +0xc2cdf65de1955 +0x13 +0x5ebeb599d3ddb +0x7ba4c27173db8 +0x7 +0xdbd242926b13a +0x177efa62f1fa82 +0x26 +0x178996e53770e0 +0x258ed20875aa5 +0x1 +0x1b45ed65ead70f +0x1eb0d17df6dd19 +0x36 +0x5d6a243b6514f +0x13fa42e4d15a08 +0xb8 +0x1eeb0811aac8c7 +0xfc3310f707b0a +0x21 +0x10e7aa4c252d60 +0x1a03754a580841 +0x3c +0x2d8dd5f6202e1 +0x3f0565dca7de1 +0x1 +0x118d01fae7ff30 +0x17d659e4b6cd40 +0x1b8d67adec66e9 +0xc +0x1cc179928df2ff +0xba292e80d8737 +0x2 +0x1b9a8f180cc6bd +0x6289423fc658d +0x2 +0x1bf2abf92f4fe5 +0x11e33a63ffb81b +0x76 +0x1a2a2d5613058b +0x4f721f7c598c8 +0x3 +0x1cb4c1fcb4a449 +0x141c62f62681ea +0xf6 +0x5bb8a74a6d7a3 +0xe077603e7309a +0x6 +0x12f6d70f5b1e2c +0x1cc3b5c0d29ba8 +0x70 +0x17d8582baa78ec +0x14858437b97fc3 +0x1 +0x100dd5cb26b59c +0x1669b68f3f7026 +0xe8 +0x8d2df2fc0b7d9 +0x13ff15d653555e +0x31 +0x75d71a7f050e1 +0x19a711f380ecd8 +0x77 +0x1e942ed5c8e7f4 +0xb647b5cfdf2a9 +0xe +0x11a522e100322 +0x13fb8ef83b8930 +0x3db57cc9815f1 +0x14bec9ced9760f +0xdb +0x3b4bebbcd11b +0xfd3e6a838b5e6 +0x17f31886bdabd1 +0x77874c79678ed +0x5 +0x156699f7074f2b +0x8ed40d90685d4 +0x2 +0x25b59789ff18b +0x1973c84972370c +0x1de086c7f9c7c7 +0x15410c37d1a45f +0x76 +0x6b16368b75bde +0x17e1d6560b8d23 +0x34 +0x11ba7206fcd0f +0x4bda1e61c2b00 +0x17d8c00efd6354 +0x0 +0x5fec4d8915219 +0x19437bce96ac8c +0x0 +0x148ee4c01e9bc2 +0xe11ff25b3b3dc +0x18 +0xf0e5696429263 +0x352e58fc64857 +0x0 +0x55cb066720fa +0x1889d7503ee943 +0x9 +0x13321171d5273 +0x5e5351c8c67e9 +0x0 +0x160ddf9430f426 +0x8f5ea07a8d1b9 +0x0 +0x7b1d97521c451 +0xeaaa9d3e14c4e +0x14 +0x1ff694a75e7b03 +0x1cb2593ab9ea37 +0x98 +0xf87dcec15ccf7 +0x45ecb4d9b9642 +0x2 +0x4db404a0b46e4 +0x3ecb82d0d5fa1 +0x1 +0x830b3da715102 +0x1543c9d7a6d70c +0x68 +0x161dfa24581e6d +0xff4857fc3503f +0x3f +0x1de70068fd8ce +0x5b743b5b15db2 +0x2 +0x1a1464ff9d7ba3 +0x19fd1b6c10eb20 +0x14 +0xeac747dc456ca +0x1dc2857e6d365 +0x1 +0xae832bdb46bd4 +0x1d06b574ea4629 +0xc4 +0x1d7cc77cda1f85 +0x16ca5f054c9542 +0xf +0x1020d899718846 +0x108401b162c450 +0x79 +0x1c1709bbedd360 +0x1557da49fa1e9b +0x80 +0xfbbe69c049370 +0x1a2afea1760860 +0xc3 +0x679f0894b9629 +0x2dbbca5746a60 +0x0 +0xc56f66ef79ec6 +0xd729aa3d9c906 +0x1e +0xacfe8356be196 +0x74edf284bf415 +0x6 +0x139c48eabc8adc +0x1ba8ca5e3bb42c +0x83 +0x1546f1c4601393 +0x511f6e46d00c3 +0x0 +0x156584a3185a2e +0xba17b6a0f3707 +0xe +0x3cda54b0a627 +0x78d3b408b3a9f +0x7 +0x1bb271701d1a18 +0x9bd2523bff726 +0x3 +0x1f87465a70f0f9 +0x3babb0a8c4456 +0x3 +0xb5fbcdf11361a +0x19ef1a603de12c +0xd +0x167bea0a8af6d5 +0xa652cce9f60d6 +0xb +0x1a0dcb08fccad3 +0xbacf5b6c833d4 +0xe +0xb2910c2cc3a95 +0xf055cc4170a3e +0x2f +0xcfa3f6de3c455 +0xeb595e7a88ec5 +0xb5022989926ee +0x1a9cf7ea726b75 +0x1 +0x0 \ No newline at end of file diff --git a/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172000-1611032.fail b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172000-1611032.fail new file mode 100644 index 000000000..b393ee763 --- /dev/null +++ b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172000-1611032.fail @@ -0,0 +1,1865 @@ +# 2024/11/11 17:20:00.158639 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw genesis: asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x1, 0x0, 0x1, 0x1, 0x31, 0x1c, 0x1, 0x7, 0xf0, 0x28, 0x60, 0xe, 0x13, 0x8b, 0x6, 0x4, 0xb0, 0x0, 0x3, 0x26, 0xff, 0x11, 0xe9, 0xda, 0x1, 0xc5, 0x1, 0x4b, 0xa, 0xaf, 0x23, 0x22}, Index:0x1}, Tag:"�\ue03f\r\U00108c99A᪾\r`", MetaHash:[32]uint8{0x2d, 0x89, 0x2f, 0xe3, 0x3, 0xff, 0x3c, 0xbe, 0x9e, 0xff, 0xeb, 0x1, 0x3d, 0x26, 0xa, 0x2, 0x15, 0x2, 0xeb, 0x20, 0x74, 0xff, 0xd0, 0x1, 0x4b, 0xff, 0x3, 0x2, 0x98, 0x3, 0xff, 0x8f}, OutputIndex:0x12d, Type:0x28} +# 2024/11/11 17:20:00.158861 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw alt_leaf: asset.Asset{Version:0x0, Genesis:asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x1, 0x0, 0x1, 0x1, 0x31, 0x1c, 0x1, 0x7, 0xf0, 0x28, 0x60, 0xe, 0x13, 0x8b, 0x6, 0x4, 0xb0, 0x0, 0x3, 0x26, 0xff, 0x11, 0xe9, 0xda, 0x1, 0xc5, 0x1, 0x4b, 0xa, 0xaf, 0x23, 0x22}, Index:0x1}, Tag:"�\ue03f\r\U00108c99A᪾\r`", MetaHash:[32]uint8{0x2d, 0x89, 0x2f, 0xe3, 0x3, 0xff, 0x3c, 0xbe, 0x9e, 0xff, 0xeb, 0x1, 0x3d, 0x26, 0xa, 0x2, 0x15, 0x2, 0xeb, 0x20, 0x74, 0xff, 0xd0, 0x1, 0x4b, 0xff, 0x3, 0x2, 0x98, 0x3, 0xff, 0x8f}, OutputIndex:0x12d, Type:0x28}, Amount:0x0, LockTime:0x0, RelativeLockTime:0x0, PrevWitnesses:[]asset.Witness{asset.Witness{PrevID:(*asset.PrevID)(0xc00064e070), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc00064e150), TxWitness:wire.TxWitness{[]uint8{0x8, 0x0, 0x1a, 0x1, 0x1, 0x24, 0xa6, 0xff, 0x17, 0x51, 0xef, 0x0, 0x1}, []uint8{0x0}, []uint8{0x26, 0x0}, []uint8{0xc, 0x1c, 0xad, 0xdf, 0x4, 0xbe, 0x6, 0x6d, 0x1f, 0x3, 0xd, 0xe, 0x58, 0x8b, 0x47, 0x0, 0xca, 0xf, 0x1, 0xd, 0xd1, 0x4e, 0x87, 0xff, 0x3, 0xd1, 0x1, 0x3a, 0xfd, 0x1c, 0x1, 0xc8, 0x6, 0xb8, 0x3}}, SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc00064e230), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}}, SplitCommitmentRoot:mssmt.Node(nil), ScriptVersion:0x0, ScriptKey:asset.ScriptKey{PubKey:(*secp256k1.PublicKey)(0xc000596c30), TweakedScriptKey:(*asset.TweakedScriptKey)(0xc0005fc630)}, GroupKey:(*asset.GroupKey)(nil), UnknownOddTypes:tlv.TypeMap{0x7a69:[]uint8{0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e}}} +# 2024/11/11 17:20:00.158888 [TestAltLeafEncoding/alt_leaf_encode/decode] unexpected asset genesis, got {2223af0a4b01c501dae911ff260300b004068b130e6028f007011c3101010001:1 � 􈲙A᪾ ` [45 137 47 227 3 255 60 190 158 255 235 1 61 38 10 2 21 2 235 32 116 255 208 1 75 255 3 2 152 3 255 143] 301 } wanted {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} +# 2024/11/11 17:20:00.158911 [TestAltLeafEncoding/alt_leaf_encode/decode] decoded leaf {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 } 0 0 0 [{0xc00064e310 [] } {0xc00064e380 [[8 0 26 1 1 36 166 255 23 81 239 0 1] [0] [38 0] [12 28 173 223 4 190 6 109 31 3 13 14 88 139 71 0 202 15 1 13 209 78 135 255 3 209 1 58 253 28 1 200 6 184 3]] } {0xc00064e460 [] }] 0 {0xc000596d70 } map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} does not match input {0 {2223af0a4b01c501dae911ff260300b004068b130e6028f007011c3101010001:1 � 􈲙A᪾ ` [45 137 47 227 3 255 60 190 158 255 235 1 61 38 10 2 21 2 235 32 116 255 208 1 75 255 3 2 152 3 255 143] 301 } 0 0 0 [{0xc00064e070 [] } {0xc00064e150 [[8 0 26 1 1 36 166 255 23 81 239 0 1] [0] [38 0] [12 28 173 223 4 190 6 109 31 3 13 14 88 139 71 0 202 15 1 13 209 78 135 255 3 209 1 58 253 28 1 200 6 184 3]] } {0xc00064e230 [] }] 0 {0xc000596c30 0xc0005fc630} map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} +# +v0.4.8#18335884998984539262 +0x2f481ac395558 +0x1 +0xbcaa9e29c52dd +0x0 +0x8b6d79c02482c +0x1 +0x2436c010945e5 +0x1 +0x1a87764105b970 +0x31 +0xf5012fc7e7309 +0x1c +0xdb30e7b23c2 +0x1 +0x79555aba2bdde +0x7 +0x191b36a9b6a2b6 +0xf0 +0x182e9a0459864e +0x28 +0x13e3b9d11baba2 +0x60 +0xa189c7d8b1a96 +0xe +0xccc37600ccbcc +0x13 +0x1b9f32690052dc +0x8b +0xaaa64a33997f5 +0x6 +0xa02d6775f38ce +0x4 +0x1c13024a68f4c7 +0xb0 +0x1a1712dc48587 +0x0 +0x3e19d371723a0 +0x3 +0x1272eedbd65fca +0x26 +0x1fbb8e6d1099ab +0xffffffffffffffff +0xdaab051443a96 +0x11 +0x1e4da9383c879f +0xe9 +0x1c80420dfa1ea9 +0xda +0x1a9a871c8a67c +0x1 +0x1c638184d41ecf +0xc5 +0x25e916e6c8300 +0x1 +0x172f9fb8cc08b3 +0x4b +0xb1db2a500c4a1 +0xa +0x1929a6e673eb17 +0xaf +0x15b75998d7e2b8 +0x23 +0x171170c01ac6b9 +0x22 +0x43d31eeb12427 +0x1 +0xf2f3326f8fee6 +0xa +0x1d5bde7b3208b2 +0x38 +0x27 +0xaa2ed0b9aee90 +0x27 +0x1069381e661f4c +0x3f +0xb02d74eb3ac95 +0x7 +0xcbddc095c78bc +0x16 +0x17fa07af3dfca0 +0x27 +0x1cd35e4fe14769 +0x3d19e +0x1a597 +0x13bdb9c7161309 +0xa +0x2ba421e20418f +0x0 +0xbc9bd33ce388e +0x22 +0x1207ad8fb68f93 +0x2 +0xa8de46c1dd423 +0x3 +0x1a59539ec2c1db +0x16 +0x16b11975743f09 +0x1f +0x36402568b025c +0x1 +0x207208f5e85fa +0xebae1cc98ea6a +0x2d +0x1aa9c6e3930975 +0x89 +0x1f222c1a4a6177 +0x2f +0x1a2d3e7d3d6875 +0xe3 +0x9a0cb81a2b35e +0x3 +0x1f61dc372e0887 +0xffffffffffffffff +0x101b632b18fe88 +0x3c +0x1e9bca6003baff +0xbe +0x131adc5be67983 +0x9e +0x1ff07dfc220b7b +0xffffffffffffffff +0x1efa3a50759a5f +0xeb +0x3582715be50c7 +0x1 +0x17f562b3194782 +0x3d +0x1c538e4e9809c6 +0x26 +0xf7bb16e0b85d9 +0xa +0x890d0a67d56bc +0x2 +0x10ad2e090febbb +0x15 +0x673f796dc8f4a +0x2 +0x1e46503652bc10 +0xeb +0xf007d0fb5de6d +0x20 +0x16e8339d1a059b +0x74 +0x18249cb5ec09b9 +0xff +0x14aadfb31b788b +0xd0 +0x2389c121fb1c3 +0x1 +0x13e8b1b0a991ba +0x4b +0x1fd391ba26e06f +0xffffffffffffffff +0x916e523a4910e +0x3 +0x5528d01af8a62 +0x2 +0x1b5f0bc59527fa +0x98 +0x41410e9760015 +0x3 +0x1ff8751c09fbe4 +0xffffffffffffffff +0x1b29f11cf487aa +0x8f +0x1012a19db55ed4 +0x12d +0x1771a0deb0c271 +0x28 +0x8e144242112f2 +0x0 +0x168a3269bcdb0d +0x0 +0x1ebad322e4e42d +0x0 +0x8a1a092d6ba90 +0x0 +0x31a1ec7122627 +0x0 +0x144c2d9b43fa83 +0x0 +0x849c2d4b2b2a8 +0x0 +0xea0d24fdf3d17 +0x0 +0x15191e28277339 +0x174a001ce5d0f7 +0xec +0x869461619f254 +0x5 +0xa9c79e08729ac +0xe +0x1fd6b2326b0220 +0xffffffffffffffff +0x1bdd0a3558c141 +0x18 +0x3950db855c7e8 +0x3 +0x4d94aba50d79a +0x1 +0xcfd46264b1816 +0x14 +0x1b1fba303a830d +0x75 +0x1ce6fbc1d19e39 +0x86 +0x5bc2d37926e03 +0x1 +0x1b7de03241976c +0xb4 +0x199f2fe4e0eebf +0x46 +0x134ee5349ba62c +0xec +0x14175bccb35c14 +0x2d +0x5034e8045d9ae +0x0 +0x1ed8a7bb15ba77 +0x17 +0xea5813f22f0b9 +0x11 +0x1c0960be9ef9cb +0xa5 +0x1958a71d65df45 +0x2c +0xc9c780921845e +0x1e +0x76c1b3c802871 +0x2 +0x4a7c63c665ae0 +0x0 +0xc68b533786d60 +0x5 +0x1deda053551f02 +0xc +0xaea49041d316e +0x9 +0xefd6f092c5c34 +0x1c +0x1fdc47f025d94a +0xffffffffffffffff +0x10c1194ca6465e +0x7a +0x110277e38e08e0 +0x71 +0xbf3d8b295cecf +0x9 +0x46f2c3ef94fa7 +0x1 +0xe9a5289febf9a +0x7a +0x2c8a81ed8bc9f +0xe2a7cb1e70838 +0xa +0x3e41cb022ecb1 +0x12e19c68ef273a +0x2d +0xf56783cf49a55 +0x26a24f2ce5d1d +0x1 +0x1ee0d371b1cb92 +0x1e0aa92249e36b +0xcb +0x9fdfe58b6ee72 +0x1037d55282c14f +0x36 +0x1c1adc3596616f +0x14754b0c5b8c73 +0x99 +0x15205043bdbdea +0x14fab9a85a8441 +0x3e +0x7499d8a7a3a14 +0x1270231e6e1f41 +0x30 +0x3a5f63f7a49dd +0xea3d2f45bcb12 +0x8 +0xd6a599d28801 +0x1571340fb317c7 +0x51 +0x1cc20ab818fb02 +0x1cc024d78fa53c +0xef +0x6ae0e8c2fb65f +0x1504be656197c5 +0xbc +0x7c1afd314532a +0x9b1e0b9994ab2 +0x5 +0x1f917d62322ad2 +0x144b2b889a0d02 +0xc2 +0x1fbc961abac264 +0x12cf15fc3225fb +0xd6 +0xb9df8a462b08a +0x4547b2279fc80 +0x0 +0x3f376b32f24df +0x16e0d82fb01268 +0x44 +0x99fe00facbad8 +0x28b06c3802ede +0x1 +0x18f1517e5d65ad +0x586847d62c9e7 +0x2 +0x771a42f9ccfad +0xeb520e3f2335f +0xc +0x13ad4c4fba046 +0xcc36fa2f0d320 +0x1f +0x123e753af19f67 +0x88c3f25b580b8 +0x3 +0x147c6d8dd966a6 +0x14641e297cfb8e +0x8b +0x286f7aa150adf +0x13e4d299363218 +0x7c +0x1f766d23f4778c +0xa9446bf676d7e +0x8 +0x13f8cc13c34905 +0x18491ba45bec66 +0xbd +0x1dae47fcf60f63 +0x1044f7e7235e62 +0x30 +0x5564ed918deb8 +0x2c00040fc4ed4 +0x0 +0xd2b93942b2eb0 +0x174606ab87b927 +0xda +0x12771fa7a354df +0x13c7c4173031ef +0x75 +0xdfb274ffea3f9 +0xca2179a7898fd +0x13 +0x1ac96fd18b4a4 +0x12bf07ff22ee86 +0xb +0x5b775e6baf0d3 +0x16235da2c5f7d6 +0xf80bed11426c5 +0x2f +0x4c792e2af812b +0x978cac6ed6878 +0x2 +0x1e94aad57bdd93 +0x159339f1ff4ea2 +0x19 +0x1fb46f5953a5e +0x1f2ae6067dc588 +0xc3 +0xbbb49fd9382ad +0x16a201ca8917a9 +0x32 +0x815e9694d98 +0x186cb221d4438f +0xb8 +0x25cfaa84877d8 +0x9268fe8e3042 +0x0 +0xc50c7e425b08f +0xdb57e84b4d77f +0x1e +0xb83c241ca8deb +0x1a23971a2915ad +0x76 +0x12f811c4e8e440 +0x25c3da2a0fbe +0x1 +0x13ee7fd073a8ef +0x147b1f8f769735 +0x7c +0x1e0de4e19642c0 +0x14a2baee595f75 +0x11 +0xb86cce1261cd9 +0x6bc64c570d5b2 +0x7 +0x4266a49e4fffc +0x6423b11b5e464 +0x3 +0x3eda77a13a604 +0xab5c4ad098e9b +0x6 +0x3c9db088eed7e +0xc4506b7a65451 +0x9 +0x1bf0a6441625bd +0x7a5134bfa76b9 +0x3 +0x73bb94f59767f +0x244c4678215c1 +0x1 +0x778ff8447ae7d +0x184fc820a03332 +0xbd +0xe05a75fe25ece +0x1c6b65fc1221d2 +0x32 +0x1c9420d9744e21 +0x8e59f37a25fc2 +0x2 +0x101f0b3c21cc9d +0x1bedeb790a2214 +0x4 +0xd02c38de2de5 +0x1eaae432d3103 +0x1 +0x1e0e9e376de0c3 +0xf1f358b11d24b +0x7 +0x1713dd6bad2b1a +0xd52c1a971951a +0x18 +0x19c0779b130798 +0x9377fa2d5164f +0x2 +0x1f738f62503d82 +0x4c1d5ad4b4387 +0x0 +0x69a6b4c355c76 +0x8691aad05fa22 +0x5 +0x109aea98ec4b41 +0xf5889176cf929 +0x22 +0xe4e420dff3dac +0x82be600c7bd0d +0x4 +0x6907955fa003d +0x1ed31b024df709 +0x97 +0x14a6746ddd25be +0x5ce5208c4f1f4 +0x2 +0x5930ea21f5bf0 +0x1da4270126ea8b +0x1 +0x92384b7e47862 +0x1484489279b4ff +0x18561c6cf546ae +0x6f +0x17f2b1f88466ea +0x17ef081ed4115c +0x2f +0x19a51efacbf04c +0x1da06fcc6024cb +0xe4 +0xcb7dc8d6a9760 +0x19ab51ac63e6e1 +0x6d +0x1876fa3b95ec49 +0x147a5a90d9605d +0xf0 +0x197d76245bacb7 +0xb7c720ade79bc +0x2 +0x8fa8a053e48f +0xf387f4d5f6d24 +0x198fe16db43d72 +0xfcc0a42d20eb1 +0x1 +0x1527903928e421 +0x303ae57ee0b10 +0x0 +0x18f1a89656a56d +0x1127ca29ff3454 +0x75 +0x1f86c81f12f88f +0x6438aa95c0137 +0x3 +0x4cdc59dd5e32e +0x19a80014a98044 +0x72ddbb875efa5 +0x28f182b0f1499 +0x0 +0x17a66cf3468b92 +0x1904c127204f00 +0x3f +0x1a313e1db0612b +0x1e169e8409587f +0x73 +0x3d66939a7a345 +0x13bee1338d3500 +0xcd17c8014a2ce +0x185da01676245 +0x1 +0x15919468ff940b +0xa203062533816 +0xb +0x1ebc2cc981e2a0 +0x1f96eb6d7cc5db +0xffffffffffffffff +0x1c48e88c3f4dc1 +0x10da66364aa465 +0x6e +0x1652747deecc77 +0xbcc5dc7161e75 +0x3 +0x4147c7d7255a3 +0x173fde2607b1d6 +0x1363151898268b +0x1bba4e58bcfb56 +0x68 +0x72864fc38eea8 +0x1e5d31410f5737 +0x30 +0xddfa6e817a580 +0x165c1f6adca082 +0xda +0x1344491ff92d8d +0x373625e227c8b +0x0 +0x9deb05a9c044a +0x12c2b47ff66a16 +0xa1 +0xf49c225f9455a +0x1616e7f5d054b4 +0x77 +0x14f699571f9f43 +0x11b266da2b211f +0x3c +0xc5c0d9e99f38c +0x91fcc73e85079 +0x5 +0x1a4c62ae842e4a +0x23cea8b48380e +0x1 +0x1d9ee52f169969 +0x184fa1c85b6370 +0x26 +0x4bebf3e326c06 +0x153bbe2d00822a +0x1019cb38005148 +0x12e58e32dd7467 +0xb4 +0x1c0430ed8ced4 +0x16c1108a169334 +0x17ea7689263a31 +0x7949cf1c62f90 +0x7 +0xb8a81688775c +0x1b774ef59f2201 +0x15411ac3ac969 +0xa81f804d1b503 +0x5 +0x3e390e5edf524 +0xa0a60e6ff64b7 +0x1f333524b8a887 +0x1a396f649a2798 +0xb9 +0x1f2222524cb4bb +0x80a31203a86c4 +0x1 +0x110ee9a89540c4 +0xf89aeabe17eb2 +0x33 +0x11286deac14fd0 +0x3ab2b446b8ccd +0x1 +0x1b8582795050d0 +0xeeb14ec055f0d +0xf +0x1921798ea4b08c +0x1310f54d0525e6 +0xc4 +0x19baa50a9235aa +0xeb79810876a35 +0xf +0xc0be3123c0c86 +0xe86a02bcf4fee +0x19 +0xa5139b7d2e90d +0x1a359fc3340c95 +0xe4 +0x14e38360717d1d +0x1a9f300772fd49 +0x33 +0x7f60154574eca +0x14552fe94505b3 +0xf1 +0x51edd4a4bdfae +0x152c446c9d5bcb +0x1defeafb6c0bc9 +0xee4f6d0d321f4 +0x1 +0x14c108bebf7f9e +0x1c785f7878a03d +0x57 +0x14831970961e7 +0x11ea4ef7ae0e54 +0x10401ba0e81df1 +0x787c200e26e7c +0x1 +0xd40f6290226bd +0x45c145ee29e3b +0x0 +0x766b39809ecbe +0x12803c4e7da925 +0x32 +0xcb8982f107276 +0x140a094e853079 +0x1c +0x19c5e09ee35b87 +0x608f0a4b0736a +0x2 +0x1860ea023d1288 +0x1631b76294e139 +0xb8 +0x572d9f27e5c20 +0xf328a89bf61d8 +0x3e +0x1e126b75cc6d7c +0x784df859acc76 +0x1 +0x9a60b6e30c8b6 +0xccb7dfb85e2d8 +0x6 +0x95d9b199c2ab5 +0x1c961d9326cee6 +0xe6 +0x1fb696b0818a23 +0xc54afa62f3cd0 +0x14 +0x1b4e78e99f4cbe +0x13396bfa979d3b +0x33 +0x1a3c5ed68ef207 +0x171d11f3c3d834 +0x26 +0x402ca2962e331 +0xcd3f557102a2 +0x1efc12f326af35 +0x1 +0xba27cc6b91a62 +0x2f62d33a002a2 +0x1 +0x13b3692cb9301f +0x2b +0x4275d5cc65a13 +0x3 +0x1694845927df1 +0x1 +0x19e2cab5cdfdc8 +0xbb +0x67fd535a8d604 +0x1 +0xcc10eabe4eed8 +0x1d +0x14a5ea47e44dbf +0x64 +0x19cd6e3c4b576b +0x6d +0x330563770b270 +0x1 +0x4f2fd3391ccaf +0x3 +0x581c5cb21da8f +0x0 +0x137aee8872bcc +0x0 +0x1e0e31a5fbddde +0x28 +0xf5060be183f2b +0x2b +0xe194d53ef1501 +0x1f +0xe97ddf9d0aa5e +0xf +0x1087ddf5502dc4 +0x22 +0x1a58c739fc9236 +0x16 +0x16e445b397f569 +0xdd +0x4fd3f4be1a94b +0x2 +0x1f353eec429c87 +0xffffffffffffffff +0xd410507cb3fea +0x15 +0x15a5dc25b27233 +0x19 +0x572c20078a155 +0x3 +0x9a1b9690ea7d4 +0x6 +0xe5be2c3edc284 +0x2b +0x7d10b9c9bc427 +0x3 +0x1db7091759adf5 +0x90 +0xbc3f98d42278d +0x2 +0xb20bacf5329b4 +0xb +0x9ecafce88cc01 +0x9 +0xfc32f0386fac8 +0x102 +0x9300884b06542 +0x49b4ffbf85d56 +0x0 +0x1b25097e4c50f7 +0x18bfb6e6799d59 +0x9d +0x18cd8f46df8ecb +0xfe720deb54cc9 +0x3b +0x46c292ba747a3 +0x1d73b56b9ce918 +0x44 +0x184f30aac49e95 +0x17d731d881e1e6 +0x77 +0x1444a397a0cdcf +0x113faa4d02d39a +0x29 +0x105c8bb2b39589 +0x1f0223dc309e4d +0xb6 +0xd18662c6c926 +0x1f974550fb7adb +0xffffffffffffffff +0x1b23a0d0b83e3d +0x17ba63d600ee40 +0xaa +0xf0d53fc01180e +0x32d35201d2749 +0x0 +0xdd03f99414761 +0x1ee9c8b7a61405 +0xf4 +0xb2401a0757823 +0xaad405d7cee7a +0x1 +0x12369b7db10037 +0x12cf67ac4ca614 +0x6 +0x1dded25741278c +0x10d088c62f096 +0x0 +0x4c9b2c3048459 +0x1d23aca1c0ec2c +0xad +0x1acdb824ae0816 +0x1e6136bf699ac7 +0x85 +0xa5a3fc73dba13 +0x7d5a6fba28a7f +0x3 +0x13ecc2581173a8 +0x88c3ed604b178 +0x5 +0x8952b6f709172 +0xd400d6d0eb92d +0x1a +0xfe1d1dacf3985 +0x11473a842656c7 +0x6f +0x1a3764bdd627f1 +0xb3fe5cdb39acd +0xd +0x832379fb4fc2 +0x17bcd05ef961ae +0x18 +0x1524d88d914066 +0x13250384923884 +0x16 +0x76da7a1bee6f2 +0x10f635fa346b2f +0x61 +0x1a3261fabfd343 +0x134c0909e5f5af +0x4f +0x1892bcf7cc064a +0xeec50bbc96d40 +0x19 +0x94eca96b262d7 +0x55c0bccf12b02 +0x3 +0x1595d1e8bb821f +0x128ac75f912b2b +0xc2 +0x16bf72f3ce9d76 +0x182919c5b9da17 +0x66 +0x17ea7809627287 +0x13f9817b63c371 +0x41 +0x318478b06b99f +0x12e5024fd3f7ef +0xf7 +0x3bc35bfc188d3 +0x8408693bc3ed2 +0x3 +0x82a7a134f61fb +0x21917f7abaed8 +0x27ceba5f15df9 +0x0 +0xe56fae185ba42 +0x5e22dcce759f4 +0x2 +0x7eef5f5402143 +0xff78860f06c90 +0xc +0x96ba6baff0724 +0xb55c3ea9b941e +0x3 +0x1393979b6c958e +0x13437f54a647f2 +0x10 +0x3633346cc767b +0x2bea20c05b4a +0x1 +0x12dbe14571a7be +0x1015761855dc44 +0x1d +0x46c7c00322495 +0x1a80075c2fcf37 +0x28 +0xa0706cceef1e2 +0x7419af1aeb1e7 +0x7 +0x145c18eae8d57 +0xf06332429646c +0x1e +0x1f2c5d3e9e3582 +0x14d6a1d8c21d89 +0xb3 +0x19bdc2afbf3f0b +0x776a8184482b9 +0x0 +0x8d013e903912e +0x1e894ab1a7d1bf +0xf6 +0x1f02a6b267bf1c +0xe2dd190addbe7 +0xf +0x1bfb879d75a8db +0x6cbd6dec5a8d5 +0x7 +0x12f66360e981df +0x143861595134e4 +0x76 +0xcd181db660755 +0xc21b9c6eb7de7 +0x1b +0x15489e29d394fd +0x1cc7ab2c5f8ee2 +0x7c +0x1d372242a53b27 +0x10934da24e2264 +0x1a +0x11cf6c54d47632 +0x161581dccfa09f +0x48 +0x1bf915b4f1660e +0x19e68d2819284e +0x37 +0x168b933e4b8098 +0x144234699f8cb4 +0xc8 +0x102f27c515e00e +0x1dc072c1852650 +0x5d +0xa9ee9d718c7b9 +0x14bc7fb0b2bf8 +0x0 +0x3e29146ffb51d +0xff3fd250f4435 +0x2b +0x1cf7ffcd2c51fd +0x2ff5e5881b72a +0x0 +0x1214d2741d39d9 +0x16d472e7b6cabf +0xf2 +0x129a2a72efbbc1 +0x582672f6dff23 +0x1 +0x1e64055469db0c +0x2773e54e4b0fe +0x1 +0x7d254fb8a9091 +0x37c26081c94f +0x1 +0xb5b89a44a0a5b +0x1fbf525456c927 +0xffffffffffffffff +0xa0a12429e2d93 +0x15f56d01ce484a +0xb6 +0x3ffb31fee13ed +0x11d5eb1e11ae8e +0x1 +0x2aaf6bcc8b09e +0xa0fb948aff4b8 +0xda88c242ab274 +0x8 +0x14e2c399019297 +0x26de9a0e53c31 +0x0 +0x8251671b1b059 +0x18ada1fbc9038f +0x1a +0x14b39713f0f514 +0x1e94f76f47383 +0x1 +0x16328c66e6be52 +0x7e7d85fe21850 +0x1 +0x1fa9d0850e2d8f +0x1ef28fcc27f935 +0x24 +0x10267feb66c69e +0x188f3d91db17b6 +0xa6 +0x1095932cc21dcf +0x1fe239f0e40dc3 +0xffffffffffffffff +0x1bac48df1a18fe +0xd8428807b5c12 +0x17 +0x1689286723cf48 +0x11c0b68fc5835a +0x51 +0x6db8c3cf9aebc +0x15a531b2283586 +0xef +0x1595f98bf38d78 +0x80dd09d39fb7e +0x0 +0x15f01a14575dec +0x4f1c0a50cd36a +0x1 +0x20f82a3e0f0bb +0x1e1a7b1a77614b +0xe69d54df2b899 +0x35fdba73dcbd1 +0x0 +0x3628e8cc49f62 +0x15e12fee4b13ea +0x373cf5d072db6 +0x1ee0b64359f3c4 +0x26 +0xd7e525693a4f5 +0x23677fe2e89f2 +0x0 +0xee4b2c3bf68d +0xda0868a6369d3 +0xc8b418fd25d87 +0x1065aced77efa3 +0xc +0xfb4eaa3916f91 +0xd8478d8b9c3a2 +0x1c +0xe585afc614e46 +0x1dbb3651180b80 +0xad +0xe244dfa88f716 +0x150c8567b29743 +0xdf +0x1a31dcc442bdeb +0x762e261fb9950 +0x4 +0x108060c3299918 +0x17c3c49adbf653 +0xbe +0x1ee3a1731237c3 +0x6dd3ca65790e0 +0x6 +0x12f50272e07e70 +0x1aaea0010a94c2 +0x6d +0xa755218049fa6 +0xef84fa92f4eda +0x1f +0x13a5536a2ba12b +0x7e88419105077 +0x3 +0x1afd9cb6f62712 +0xe37c0b5d2c84b +0xd +0xc0430f52091ec +0x155c105c7eda54 +0xe +0xe0432c7e55a77 +0x1329b77473036b +0x58 +0x7a985ecf736cb +0x15b15d9c5fd218 +0x8b +0x145611c7f05921 +0x1239d9c0b92f2f +0x47 +0x681cb499a5b17 +0x875e090b537e +0x0 +0x19dc584e7d16da +0x1857c519c4c4c4 +0xca +0x10a968a631dd58 +0xb1c4b9005fdb4 +0xf +0x81fcae6181db8 +0x6d1914bd6c218 +0x1 +0x1df3d697d43f8f +0x9d767765d5952 +0xd +0x1e0706dc209cd6 +0x1d5759cfb5ccc7 +0xd1 +0xb9a8e65d3aa29 +0x137f86e4d45177 +0x4e +0xf7550e3f71d65 +0x18657d787cbaba +0x87 +0x12a84f281d3c00 +0x1f6da26b413984 +0xffffffffffffffff +0x171b4eada33c5f +0x8fec5e44def03 +0x3 +0x17cbef2b1074b0 +0x1625279ab587b7 +0xd1 +0x5b84cf002daf7 +0x14aa8abd7a2e9 +0x1 +0x1b3cbb47165cd5 +0x149b654a07e184 +0x3a +0x11899cbc611569 +0x18f9c48a70d97a +0xfd +0x930021e2ac65e +0xc51738d07605e +0x1c +0xa1e540ff7b59b +0x9977ea597b821 +0x1 +0x9fc1511b8fcd9 +0x1b47074bffb499 +0xc8 +0x1232c3c572114d +0xff9dfc9fb76c0 +0x6 +0x1f9b2ac9c32171 +0x15417b34a65d60 +0xb8 +0x1eac5e31f8d1b3 +0x7324f7ecd91d0 +0x3 +0x50b8ee8e8b3d1 +0x87f031fbf5d9 +0x16e325d4dfe0c1 +0x0 +0x1f32ddada6ccc0 +0xf4edf663052b0 +0x3a +0x782dcb106026b +0x0 +0x1248a030be6249 +0xb0 +0x10998bed5dc27e +0xe +0x92f8d19b8c4aa +0x0 +0x715c1662e2f0b +0x3 +0x1125dd5dfd98f3 +0x22 +0x1ef54d7af5de30 +0xd3 +0x13d173718ab7d8 +0x8c +0x52af341a9fa4c +0x1 +0x1c4d159cdb573b +0xf1 +0x1ce04b2adb6f3 +0x1 +0x545049c672066 +0x1 +0xc900120b65c10 +0x15 +0x1162d69ff066af +0x0 +0x29008e96d4bef +0x0 +0x3100e136b4bf6 +0x0 +0x413bc18ad479e +0x2 +0x1ad4ab9a2dfaa3 +0xd4 +0x1c421558f2af7a +0x91 +0x17353a17a88f22 +0xc8 +0x18dbf60ba1133c +0x12 +0xcf5cfcbe73b34 +0x4 +0x1b2065726e775c +0xe4 +0x100f88cff81fb9 +0x8 +0x1d66605ad8be49 +0xd2 +0x52ff762aad12c +0x1 +0x1eb77392fe8e34 +0x5 +0x164c7b193dfcdf +0x1f +0xfbe7e6cbe11a2 +0x16 +0x290a004cd4a3d +0x1 +0x1d1ee128169f49 +0x64 +0x1efdd9a3db60ea +0xe04ef5cd +0xc4c47432305a5 +0x1d2719ddbbfe7e +0x83 +0xefd45c25260e2 +0x1836cb55154209 +0xb6 +0x19b69b3ba0ad3b +0x2dc2053091c8d +0x1 +0x4102f717479f9 +0xea0d03eb11b14 +0x20 +0x1c51ae5c2af9e4 +0x11effedcb3e02 +0x0 +0x147e969113fac7 +0x6cd5ad2043b8f +0x7 +0x1762a00f7cad35 +0x2bfcc89a90cfd +0x0 +0x1d4f4626b7857c +0x2118895bbaeea +0x0 +0x13c1d22eecc028 +0x356bd9a96ab5c +0x0 +0x2b3eb46c9ec29 +0x2ccd27816eeca +0x1 +0x1ca597c001958c +0x8fccadee0bac0 +0x5 +0xbe4b2cb61db58 +0x2a3c78fd0d68a +0x1 +0x1230cce26a93f1 +0x6452782450177 +0x0 +0xfcf8a311a18e4 +0x13cf3114bbfbb3 +0x65 +0xc976c2391d9f9 +0x15efcd0b963952 +0x7f +0x166ab1d806074e +0x19e9f2c3cae771 +0x9c +0x194e3cff603073 +0x27d9cf892ced8 +0x1 +0x12eceec2ebe138 +0x982923b6d3c5e +0x3 +0x1019e1ee2ca7cc +0x16794c1802d004 +0x51 +0x1001151bae7af5 +0xae7b15179cb35 +0xd +0xbf42addffb38d +0x527d91abda774 +0x2 +0x4cd7cce7c35c3 +0x1ccded967aa845 +0xa2 +0x1e5e0bd1b2d687 +0x1e224188a04577 +0xe6 +0x149b88fa99f9c5 +0x1ca867c2fd6785 +0x96 +0x77cf9c2c8cbb +0x79c8d340113f7 +0x3 +0x17702e39696f9b +0x181bf4e0d9a86e +0xfe +0x99531686c0b6c +0x12d70e4576dbba +0xa3 +0x46e791ed19a44 +0x9abfe40ae0a7d +0x6 +0x328c4c542056f +0x48f3208a93c03 +0x0 +0x14afc8375d1390 +0x6d8916d3b6268 +0x3 +0xac987978adf16 +0x2767749900bc6 +0x1 +0x1a962ff9d8b21a +0xa6e90ba2dfe56 +0xb +0xc59bda8f1c34d +0x15f0f71e761a74 +0x192a80ba280999 +0x81 +0xc7d7f6e39372d +0x13df8f722eae34 +0x16 +0x5f8492313cfa9 +0xa74199ecb97a7 +0x3 +0x702c1851dd712 +0xf3c7d081abeb6 +0x2d +0x1c99cd18fd0aba +0xdf24d3e17a3d4 +0x11 +0x49180c8dfcde3 +0x125f0e2fca3c31 +0x1d +0x26d0190f1e1da +0x124d469d0f1366 +0x6c +0x11a2794dade8a2 +0x132ec91fc92779 +0xb9 +0x581c55e25ae44 +0x87ac05412c093 +0x1 +0x1fa5b77b342882 +0x7c486ef086eab +0x6 +0x1c2d25d200426c +0x30c9fa9444eec +0x1 +0x1713e82143ca78 +0x8d14ff4824aac +0x3 +0x2c7907a15aab +0x25d2ab5b2fe16 +0x0 +0x1de52c3ad6f23b +0x18ba8283aafbd +0x0 +0x1bc4417bcd9f08 +0x1b4c7bdb2c17d9 +0x18 +0x2bf73ed509ca4 +0x1af46b7b3fda4d +0xac +0xa88595f0cc69 +0x9f347534ccbc2 +0x2 +0x13d0bf8ab89bde +0x1da3e71e81a9d5 +0xb2 +0x580187cd4108 +0x9b02d1b76f518 +0x9 +0x16a980d5921128 +0xa897ac8900ab4 +0x9 +0x1fa154745a6954 +0x1883f49c8c2c90 +0x57 +0x1df51d98628d2c +0xe1e2254d3a33c +0x14 +0xdb2719401f206 +0xe1cecd48c889c +0x3 +0x5d9b5da20c130 +0x986e1ed195d42 +0xf +0x1951bf74cf13bc +0x70dd646a7f11f +0x5 +0x17f7f57b09c7b0 +0x16f6c757a57656 +0xd4 +0x5902512529891 +0x151013044e79ab +0xf5 +0x1cea67cd1b70e4 +0x83d5cbae1f885 +0x3 +0xdabfff3dcdeba +0xd089ecff6871f +0x1b +0x1e9ff5fcab5e75 +0x160e7465dae87e +0x13 +0x9805d790286a1 +0x7c6ac12f2478f +0x4 +0x1fb173f86ffe93 +0x58b73f1cd78a3 +0x2 +0xc7cac7a658914 +0x17787aa883ad0 +0x1 +0xdd969d13603cf +0x1774b16ca61fe7 +0x55fed7b55effa +0x2 +0x13da86b3d186e9 +0x8843209aa1179 +0x3 +0x1b871a7bb82818 +0x8914270cbca52 +0x7 +0x228367f8d91bf +0x1faef632b8da6d +0x12dcf893b1d1c8 +0x7049f5938e4cf +0x5 +0x158178e0f5e4b6 +0x1ec649b26119e1 +0x7a +0x1bc4c82d2db41e +0x5003ec5168a31 +0x0 +0x1f439c72697f7 +0x12c0fc0dc0d925 +0x14b070264b9012 +0x110d55b1563c50 +0x2d +0x19de9b9cf17bf0 +0x11c66318f7278 +0x0 +0xa81f0f4eda317 +0x1b7e32ceb091ac +0x4d +0x90758a465547b +0x12034a076e899b +0xb9 +0x1426b1b1499e9b +0x75f97819e2126 +0x6 +0xe8f7fe99826d1 +0x1ecd0838ad4c67 +0x7f +0x89ce825ee70d6 +0x12396d8aeb448a +0x19 +0xb3d3d2528a1c0 +0x9e3e0684acec5 +0x6 +0xd4754cd57833f +0x1c03a9e0e55479 +0x4c +0x6b724f797d031 +0x11b3958b3d808c +0x21 +0x1109fd53877a9d +0x1ebf62a4f21511 +0x94 +0x7ed32a7488367 +0x8ecf2fb31b81f +0x0 +0x17f690b6ea2166 +0x208d6e14ee876 +0x0 +0x183be0aed6a248 +0x15ed1b12cb46d7 +0x7b +0x14999cac022c1b +0x13eef7eda0a8ac +0x71 +0x10749430f3d1ff +0x65b6845fc4189 +0x0 +0xeb141694bc664 +0xed95543f181d +0x1 +0x721362dce2e3d +0x1772ca7beaee85 +0x9 +0x160d5566a0ab99 +0xab345fbfa1b72 +0x7 +0x3827dcbd91dd1 +0x7773a3199050d +0x381ecf126fb1c +0x157570b9d1757 +0x1 +0x4ea8873841828 +0x1240fcc0626da9 +0xd9da03b2331ba +0xdf03a34d655b9 +0x1 +0xd4adfa1616a1c +0x9bcac21758cf3 +0xc +0xda618641bb1de +0xc4681296c78b3 +0x15 +0x52131cb3b24d5 +0xdab5b5e92938e +0xb5cbda9bebb95 +0x1c6cfaf432473c +0x59 +0x1be57450910349 +0x27001a981b944 +0x0 +0x1ee6f0c58b9d83 +0x74292981a4044 +0x4 +0xa5d2458864733 +0x81b29810f44c +0x1 +0x1cf12670987866 +0xa3dfaac547232 +0x6 +0x4f4d0f3d0ed0a +0x18a0fbc3a7c582 +0x161dce97366476 +0x140d0d86dd8e59 +0xb3 +0x8e1a4be5db81b +0x4b94f54e5aeea +0x2 +0x12eec01c10496d +0x3c40b73863c97 +0x2 +0xf68558a707e9c +0x114fac89161b89 +0x5a +0x1ba73709b0cc6a +0x862f3eef9d731 +0x2 +0xd07ae01192744 +0x1c9dc8a0c555e6 +0x35 +0x11a7fd939b6e93 +0x17271b62b2d34d +0x49 +0x16a29b20e30317 +0xb82d5f4ddab9a +0x1 +0x76909b76af0e6 +0x772aa00e48a04 +0x1 +0xfe0628be5296b +0x5932a51293a73 +0x1 +0x116df464be0626 +0x1c7d1ae06f16f6 +0x25 +0xd00989d153b40 +0x12e72a6d948328 +0xce +0xd63b291e5e0d3 +0xe8fac5163c17e +0x21 +0x1148bd60523173 +0x16b52776896b06 +0xd7 +0x13c67f05241ef +0x13ec64b6bc5b13 +0x1ee79551d2d0ff +0x13f91e9886187d +0x74 +0x14f5097e4460b8 +0x7eb0a1ecd8564 +0x1 +0x12bdb3fe4b323d +0xcbb819e60d38e +0x7 +0x942abe1fd820e +0x8ae60bc0f6186 +0x3 +0x18fcd8be853919 +0x1fd11a5221c7b9 +0xffffffffffffffff +0x1826231b1714eb +0x16f1662f258e +0x0 +0xec26529b8df8b +0x3a5ce1f2a10a4 +0x3 +0xf8b30490b8148 +0xd1f8c2aff08d +0x0 +0xb376fbb8a36a5 +0x1fca0198845759 +0xffffffffffffffff +0x133a059a4c1fb2 +0x18f8d3cf2222c4 +0xfd +0x7d89d5e626bcf +0x1502814738fd12 +0x49 +0x1c7878a9b5ae0b +0x11e9852c1726b0 +0x55 +0xc6cef2cf5c06b +0x75fcd93e208d2 +0x3 +0xc9557a7e54a17 +0x14394e0889beba +0xc2 +0x29a835dd33ffb +0x1d02b707a77e17 +0x185189c3fdaa42 +0x4f077ee03dad4 +0x2 +0x1376a1ef81db1b +0x16dd0a7a36e4a +0x1 +0xdb2a1a1eec4c8 +0x1de47a0c008a91 +0xe7 +0x6be5660ff9b07 +0x17b0644821766b +0xc7 +0x15e4b8efb7ed6 +0x1b6b021b5fa5a +0x118b4bf06a345e +0x1 +0x1d1236cb9bc46 +0x5bfa09b2f4edd +0x0 +0x12efa9d617fcfe +0x1f2c9d551707e8 +0xffffffffffffffff +0x1389188da3dc73 +0x1ecb5ba4c05073 +0x7b +0x1f5135475754ff +0x1d7d23f39a222 +0x1 +0x1f422fe0aa0ee +0x13f80a3cdf728 +0x0 +0x1999fe9085ecc3 +0x1d6e685b53bbc1 +0x3c +0xe59246c9e4712 +0x2e759d8c52d47 +0x0 +0x834c420203857 +0x152d363abfff66 +0x83 +0x1fcb4683284dbd +0x1142d73242422f +0x4e +0x171f9a99a80837 +0x16da87cf81e414 +0x8a +0x14ae381130d419 +0x3fc1d82f17ad5 +0x1 +0xa918b8dbc8d68 +0x1225a130304870 +0x2e +0x12e86b14cf20b9 +0x1e52a015fb5c65 +0x2f +0x497d1b0aa35af +0x13f8c171773855 +0x5f +0x68bb01106e8f9 +0x7366be030cabe +0x5 +0x1a13796af16bdd +0x1f6da15fed7c55 +0xffffffffffffffff +0x1241de1d2de527 +0x1b77cb60ca5da0 +0xf1 +0x75046e5ef72e2 +0x1784258a475e15 +0x68 +0x16c252a3b611e0 +0x1d6b9e031d9f8c +0x69 +0xf45581a8ecb80 +0x15a57d4f7063f +0x1 +0x1fc255a03d2263 +0x7b28f0367129 +0x1 +0x105e1c6cbabc32 +0x1ddfa29bd29dc8 +0x90 +0xde4f3ecb84569 +0x3e04b76b848d +0x0 +0x92d0826c4df99 +0xad9948c62dfbe +0x7 +0x19fb26aa1b08e +0x8a85b3a2014c0 +0x0 +0xe4d7f8b508d2e +0x16cd64957e238f +0x3c +0x1e94dd6c863d31 +0xed550b62d8136 +0x3f +0xd72a61daf9fc7 +0xcd0793f61f15c +0xf +0x170524af55eb95 +0xabc86d6a9f435 +0x9 +0xb0136cbdaf7b3 +0x1133696a790538 +0x4c +0x26a0ad555d191 +0x8008bb55d941a +0x0 +0x16410bbd3be77e +0x1e88be916a0cc2 +0x30 +0x1bc242fe7baa09 +0xd22c57428e527 +0x11 +0x18f33e9bdd3a03 +0x12500b6e293b84 +0x39c7f373ec3ec +0x3 +0x1df61679d8d030 +0x9a1a5fab +0x8e61613a46daf +0x0 +0x84713511c623b +0x1f82c7927e2a59 +0xffffffffffffffff +0x14215684b02115 +0x43cd04e4273bd +0x0 +0x19e080b6d4fe47 +0x178e0598e9069 +0x0 +0x1206377ffe11fa +0x11be9bc999c0f8 +0x58 +0x1a35d42097abc2 +0x18c328f86f970d +0xac +0x114da90b59bf50 +0x192e947a425278 +0x72 +0x50de2640adbd4 +0x15ef0478c2384 +0x0 +0x906974d58c224 +0x1bc7fbfb7eda6e +0xb1 +0x1af7bf746b96d0 +0x71a59b11139fb +0x4 +0x17e1c88fa9fd56 +0x10fd167a2ef +0x0 +0xae0cb8dfdc276 +0xa5dd077584b7f +0xd +0x1a5833f61505ec +0x10d063c2a4467a +0x5d +0x37ebeda935be3 +0x1ce8bece6e441 +0x1 +0x1dbe14507c2b43 +0x1a61b1eb2628c1 +0xb1 +0x157184b5d089a5 +0x13984e28b1ef2d +0x15 +0xc4867e6eaa15d +0x14e298d50c6f33 +0xe +0xaf5f6f8c881b1 +0x17d3854e709e20 +0xc5 +0x6c03fbc9c8788 +0x106c269abdb9bc +0x3 +0xf0206abc30d6e +0x1a7a74f57a6546 +0xa1 +0x8d624dcb0dc0c +0x19ef1b1c053bac +0x6b +0x67376c1670293 +0xeea0e9a0e7e50 +0x19 +0x10153089e02ae +0x183ffbbe844e9 +0x0 +0x1dda66f12fda8 +0xe9c9c0cabf164 +0x28 +0x12edfefd09bad7 +0xb483076f5f3cc +0x2 +0x16c20c2595550d +0xa2626a358d11c +0x5 +0x5cc08e1a8f753 +0x4bab9ed241175 +0x0 +0x1380da41d8a2b4 +0xb68a39669ba0 +0x0 +0x151e0356b2c851 +0x16cd7a9a7337db +0xd8 +0x1685f3d9742c46 +0x16eba55447ef37 +0x54 +0xa6d0bf9cc61ff +0x1b8e7a4bcf9a43 +0xc0 +0xb80700698da3 +0x14bf365ee8a805 +0x6c +0x91fdacbb54453 +0xc53d464ff71af +0x8 +0x1dbb570d17d4a8 +0x1c4f9d74323fc7 +0x1f07b61ba39b42 +0x92 +0x14200da6531044 +0x1486f7aa0ea8c8 +0xb +0xdbdbac824af9a +0x37fce648a055b +0x1 +0x1fe83c2faedac8 +0x7f978ae62c574 +0x5 +0x1cead4deced77e +0x1435ba41335d88 +0xd7 +0x11cdbe3b2e8893 +0x184eb62133688d +0xfe +0x13ef3efb0dfa76 +0x1843eb83e8dea6 +0x56 +0x82e047a7537a7 +0x1f7129c66bfe2b +0xffffffffffffffff +0x97383463239f1 +0x161349a2a1fd90 +0x41 +0xe3bbceb60a0ce +0x11b494ec74a21 +0x1 +0x1902b66f2d0660 +0x18f48003dd3dbd +0x8c +0x31289d8a949bf +0x1cf82ac03cd1b +0x1 +0x1b8c59b3a9a055 +0x82f785afb75df +0x3 +0xd23580d4b94c6 +0x564e27f82bc9a +0x3 +0xaff20e94f69f3 +0xd56cfcc9b8bd9 +0x2 +0x1b45eaf6d63eb7 +0x182d1acb148d6e +0xfd +0x1b44914d907b51 +0x1b6c057b4c3c90 +0xe0 +0x44d520cfe27c +0xf6b03b864367b +0x20 +0x16d29b260494ab +0x1f019ff13d2cf5 +0x8c +0xa8d85100a0d0a +0x18517feecab329 +0x16 +0x1bd14a887cbd5 +0x1b3d1e7a4eb275 +0x2d +0x12a636bc5ec44d +0x72d4009a61cad +0x7 +0x8f8483b9000fa +0x19020c68cd328e +0x7b +0x1513f8868eefc3 +0x1a87041d8642dd +0xce +0x1b35e608c528d2 +0x1a9e116d9a5fc +0x0 +0x6be1d798d4726 +0x61b05c144cb59 +0x3 +0x71947c3552a19 +0x167a7c6e533505 +0x49 +0x78cea0be7aceb +0x1b48d15f8c82d +0x1 +0x1ede28072c2ec3 +0x1266a18ca78be4 +0xda +0x1ab075c44d9e1 +0xdb974246fad15 +0xd +0x142f54d4ea6228 +0x12b219b13191ea +0xd0 +0x1f2d09cc83dde7 +0x1e5ba65b10835f +0x13 +0x2f490996903d9 +0x1 +0x476504915d748 +0x1dfa04fb0b1688 +0x0 +0x0 \ No newline at end of file diff --git a/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172016-1611437.fail b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172016-1611437.fail new file mode 100644 index 000000000..d2f13b70d --- /dev/null +++ b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172016-1611437.fail @@ -0,0 +1,1793 @@ +# 2024/11/11 17:20:16.860741 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw genesis: asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x58, 0x9a, 0x3, 0x1e, 0x73, 0x0, 0x63, 0xb5, 0x0, 0xd, 0x91, 0xa7, 0x2, 0x1, 0x0, 0x1, 0xea, 0x13, 0x5, 0x29, 0x2, 0x0, 0xdf, 0x0, 0xfa, 0x20, 0x3c, 0x65, 0xc4, 0x0, 0x7, 0x1}, Index:0x2}, Tag:"~\U000e005d𐹢&ADž!‶⧹", MetaHash:[32]uint8{0x3c, 0x2, 0x41, 0x1, 0x22, 0xaf, 0xc, 0x0, 0x5, 0x29, 0x2, 0x0, 0xd2, 0x2, 0x1b, 0x18, 0x0, 0x3f, 0x8a, 0x0, 0xe6, 0x2, 0x5, 0x19, 0xed, 0xc3, 0x4, 0x2, 0x1, 0x5, 0x61, 0x4c}, OutputIndex:0xffffffff, Type:0xf0} +# 2024/11/11 17:20:16.860958 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw alt_leaf: asset.Asset{Version:0x0, Genesis:asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, Index:0x0}, Tag:"", MetaHash:[32]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, OutputIndex:0x0, Type:0x0}, Amount:0x4eb81fd, LockTime:0x0, RelativeLockTime:0x0, PrevWitnesses:[]asset.Witness{asset.Witness{PrevID:(*asset.PrevID)(0xc00084a7e0), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc00084a8c0), TxWitness:wire.TxWitness{[]uint8{0x3b, 0x1, 0xc6, 0x41, 0xb}, []uint8{0x1, 0x16, 0x1, 0x68, 0x1}}, SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc00084a9a0), TxWitness:wire.TxWitness{[]uint8{0x0, 0x0, 0xe1, 0x1b, 0x38, 0x0, 0x50, 0x2, 0x1c, 0x2}, []uint8{0x2, 0xff, 0x85, 0x1, 0x6}, []uint8{0x4c, 0xff}, []uint8{0x33, 0xad, 0xbb, 0xcf, 0x0, 0xc3, 0x0, 0x9c}, []uint8{0x0, 0x9}, []uint8{0x17, 0xff}}, SplitCommitment:(*asset.SplitCommitment)(nil)}}, SplitCommitmentRoot:mssmt.Node(nil), ScriptVersion:0x0, ScriptKey:asset.ScriptKey{PubKey:(*secp256k1.PublicKey)(0xc0008b8370), TweakedScriptKey:(*asset.TweakedScriptKey)(0xc00084f800)}, GroupKey:(*asset.GroupKey)(nil), UnknownOddTypes:tlv.TypeMap{0x7a69:[]uint8{0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e}}} +# 2024/11/11 17:20:16.860979 [TestAltLeafEncoding/alt_leaf_encode/decode] unexpected asset amount, got 82543101 wanted 0 +# 2024/11/11 17:20:16.861003 [TestAltLeafEncoding/alt_leaf_encode/decode] decoded leaf {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 0 [{0xc00084aa80 [] } {0xc00084aaf0 [[59 1 198 65 11] [1 22 1 104 1]] } {0xc00084ab60 [[0 0 225 27 56 0 80 2 28 2] [2 255 133 1 6] [76 255] [51 173 187 207 0 195 0 156] [0 9] [23 255]] }] 0 {0xc0008b8410 } map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} does not match input {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 82543101 0 0 [{0xc00084a7e0 [] } {0xc00084a8c0 [[59 1 198 65 11] [1 22 1 104 1]] } {0xc00084a9a0 [[0 0 225 27 56 0 80 2 28 2] [2 255 133 1 6] [76 255] [51 173 187 207 0 195 0 156] [0 9] [23 255]] }] 0 {0xc0008b8370 0xc00084f800} map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} +# +v0.4.8#12181814080877100718 +0x119db0f1eb13eb +0x58 +0x157ff5e79efd29 +0x9a +0x4d4877b400c8d +0x3 +0x1a032534645e82 +0x1e +0x11e0a9ea0497b4 +0x73 +0x30d9f0002d4f0 +0x0 +0x12a40dd409a8bd +0x63 +0x17c21b4bf0c102 +0xb5 +0x7935af4d92389 +0x0 +0x154dec23b90ea4 +0xd +0x1abd746511862e +0x91 +0x16a02ae4be5b25 +0xa7 +0xf967fe616722c +0x2 +0x9408d5c014d7b +0x1 +0x1d577708d855c +0x0 +0x37427b44f6d08 +0x1 +0x196a8a0efd2012 +0xea +0xe7a5a4469e3af +0x13 +0x8246eee2e9b14 +0x5 +0x16b46b8179db5b +0x29 +0x52922d71b6d20 +0x2 +0x2cf07ae1c6cdb +0x0 +0x18087ab1071f84 +0xdf +0x3b34c9d2c60b9 +0x0 +0x16dfb28e6795db +0xfa +0xfeb5c8a2afcaf +0x20 +0xfe46bba689b49 +0x3c +0x13849c368a9139 +0x65 +0x1c389f4f49a96c +0xc4 +0x24132050dfe6d +0x0 +0xc7116707922ae +0x7 +0x6b43218ff3f2e +0x1 +0x2bea63ce2f211 +0x2 +0x1a241f1a1f1748 +0x0 +0x5d92b192d009d +0x3 +0x16c5b789aba535 +0x3f +0x26 +0x1e8fbbb2712ffd +0x87 +0x132b46ef6cdf9c +0x1b +0x16615f2a959848 +0x213 +0x1acb68d2c1db18 +0x2 +0x18b823018e2a3e +0xa +0x1afd61281b0be3 +0x10 +0x1249bdec78fe +0x0 +0x789855d2baaa2 +0x3a +0x16 +0x53c1d4371cd58 +0x0 +0x188e4df3e391a0 +0xd +0x86c855f2b0223 +0x4 +0x18ed8820948823 +0x2b +0x1c +0x11fde58dd34e0d +0xfa +0x1e7fb9db68e81d +0x1d +0x153791543874a9 +0x278 +0x39a9a7bb649f0 +0x1df44accbc636a +0x3c +0x6930774155d12 +0x2 +0x163dd0b2712699 +0x41 +0x53ff9b3bc416f +0x1 +0x110fcb753f692c +0x22 +0x12aa86f90fe1cc +0xaf +0x9dc660aa9cfe1 +0xc +0x955c544f73e35 +0x0 +0xe0caf37b1b45f +0x5 +0x163d5eacd8b99b +0x29 +0x50d8c56cfd926 +0x2 +0x1b6ac1bd18d8e +0x0 +0x1bd89a01f7f95e +0xd2 +0x8b6f763d5f53d +0x2 +0x1663ae98e692f3 +0x1b +0x100356b17d16b2 +0x18 +0x5ab079451836a +0x0 +0xea3fbf4c859c3 +0x3f +0x17b8309650cdc7 +0x8a +0x257db7076c74d +0x0 +0x1465666cf1eeb3 +0xe6 +0x3c4787cff0c5a +0x2 +0x885875e9e5f3a +0x5 +0xc090d24bf2cf7 +0x19 +0x14f5751920b1e1 +0xed +0x1895fd4ca87e44 +0xc3 +0x8228c3ec7cdfa +0x4 +0x4b11c1d9aeae6 +0x2 +0xab54c1c2b9b62 +0x1 +0xb6cad7e3a3940 +0x5 +0x1eca179d59aeda +0x61 +0x19a182348fc80d +0x4c +0x1ffdaeff5d7a3f +0xffffffffffffffff +0x14e5a7c5c4d66e +0xf0 +0x5689d171ae89f +0x0 +0xc112b9a22536d +0x1 +0xe9a76c4b68781 +0x1 +0x1c705dbb5e43d7 +0x4eb81fd +0xa9b600e5b02a0 +0x1 +0x1b29aeb27cf6 +0x0 +0x1f10db78d145ed +0x0 +0xc70ca57d18fa9 +0x0 +0x869af4505ed39 +0x11b87b3ca6dcd6 +0x2c +0x1d1519439d021e +0x87 +0x14c8f0532f60cb +0x2c +0xbd1ecb7420d5b +0xd +0x271998f20001f +0x0 +0xeb84c0036b081 +0xf +0x1aebe7c3601076 +0xb4 +0x18a5bb3e410c12 +0x5d +0xbda34f39ab90c +0xd +0x16d13dd2a95993 +0x28 +0xe628968c676e8 +0x1 +0x1df99c4e04fc11 +0xd6 +0x733683191ad9d +0x5 +0xf9449e78c471e +0x32 +0x10cb399b9c263e +0x46 +0x5a71b20945991 +0x3 +0x11f1155e63901d +0xd +0x4240de6240ddb +0x3 +0x16d225e72e4adf +0x62 +0x461746cc2aa05 +0x2 +0x18ba7c38faa6be +0x2a +0x187ae361cf3a4 +0x0 +0xf87eeebaac997 +0x23 +0x115a1c2f3d43a8 +0x18 +0xfab958dfec18c +0x1f +0xd9723fee002f1 +0x2 +0x1a2bc4c0159ddf +0xd9 +0x81be469b90f58 +0x5 +0x1a7cbdc0368e43 +0xea +0x1220edb52d9e7b +0x89 +0x165acfff24782d +0x9a +0x7ce1c911c1eca +0x5 +0x129b77375d1fb4 +0x563 +0x1172e12d397d73 +0x16c6260f2348d3 +0x59 +0x6cfe72a881942 +0xab9f9440c175 +0x0 +0x198facaf9595a6 +0x1e75929953b43e +0xd5 +0xb8de55149a72f +0x13eee0409ae3d6 +0xf +0x191cf8a42cd7b0 +0xd41f3a1afc67 +0x0 +0xdf40b424bb82 +0x45c492724a014 +0x3 +0x1757d0d9140863 +0x1bf1138b23edae +0x4b +0xd1bb69be5d848 +0x1d00f564d1ebd4 +0x1c +0x4c459552ae03a +0x19f176a8d4b6a5 +0x71 +0x3774bca488772 +0x1745f85302b508 +0x46 +0x1b010194c10ea0 +0x1170c9c73d306b +0x51 +0x1be4e7cca8440d +0x555efead97be2 +0x2 +0x162c1519fe1c69 +0x15b176a588f407 +0xcd +0x1eb67492762432 +0xbe71956fbe07e +0x6 +0x1e2257cbebee2b +0x15d97a84e600d5 +0xae +0x16097f7deade4b +0xd9fdb78d8e390 +0xb +0xe1ba50faef3c4 +0xa92df65342065 +0x0 +0x1a8eb53ae89d10 +0x3314fd4d3fd43 +0x1 +0xdc48421405c5d +0xd3d1dd396225f +0x5 +0x1865b51b95ef08 +0xf988d2a5170fe +0x10 +0xe27bd90a1eee4 +0x2ba02355f8659 +0x0 +0x176b7965d3e8ba +0x1355e9051498a5 +0xf1 +0x8a6277dc8dc84 +0x16ee39d5bfa763 +0x13 +0xe848cfa6bdcba +0x1b08b772e2eb13 +0x43 +0x3faa8c1e338ca +0x3c6bbea5b7199 +0x2 +0x4756a15fdc289 +0x4fb74594d4649 +0x2 +0x48263c4b24814 +0x140b60c1c2bf9a +0x14 +0x113882d1bbcd1 +0x1f0ff67c3e9f74 +0x24 +0x174a674017471e +0x18bbbd1f19df14 +0x6c +0x168a5974dd0185 +0x56cc2a58fc8fa +0x2 +0x1096ec7ba736dd +0x6f5b25903af7b +0x3 +0x12886aff483e49 +0x13d4576e7c1e00 +0x4 +0x5819919a30bb2 +0x1fc4b92877c05b +0x1d5a93ed940e8f +0xc1 +0x43cb265b52c46 +0x7bb37f84ab29c +0x0 +0x22af96876304 +0x176b6e26cd2e0e +0x9a +0xdff85b1679c38 +0x1cf45bdc6656d4 +0xa6 +0x10825d9cc66a1 +0x75b48e23a40f3 +0x2 +0x66ee037d1a73 +0xc18c6b9693b42 +0x1e +0xc1b1d8d4ec767 +0x1a2a137d465de9 +0x37 +0x1b8efa33e4b468 +0x77c128f1b74b2 +0x4 +0x370692751379b +0x18d7148511509 +0x0 +0xa681626e9705d +0x1c9d68856a631 +0x0 +0xacad22e280759 +0x810e4629162a6 +0x7 +0x19cfa3abd1382c +0x73b67657bfe70 +0x0 +0x7aacc31981666 +0x7a79b0e48c87a +0x2 +0xd8b43afe51179 +0xdb32499c54b38 +0x6 +0x4d391cbc414d1 +0x1b96193aee2624 +0x41 +0x7fc06a98f8604 +0x1520bd95e5de35 +0x48 +0x13d58bde6e515b +0x1dbc988efaa167 +0xa3 +0x5815ab6747b82 +0x10cfa93fd262cc +0x6a +0x9da6595f0e09 +0xebdd86447e6fc +0x2e +0x1f58405850f1af +0x1271894365ff96 +0xa5 +0x1ef705ac3d53db +0x1a4889565b2e3c +0xa8 +0x13392c2fa5f48c +0x1b96f936373779 +0x57 +0x317bec4f8fd22 +0x1a2e7139cf6293 +0xd8 +0x2cac32c4c774 +0xbf6a30e9c5773 +0x4 +0xbd38fa511d2f9 +0x85f4274aa9f06 +0x5 +0x3cd9f2071758c +0xd40af8347977e +0xc +0x1541314fc5471b +0xd82763cc0e3a1 +0x17 +0x12c97d557eed23 +0xc35a0f3e457c5 +0xf +0x67d0bfcb9d9c6 +0x1a54aebb96d932 +0xbe +0x1d6e11212725b1 +0x1e133f3a6447d8 +0x21 +0x8497031f7314 +0xe55f0c0bce0e5 +0x7 +0x1480b3af42f091 +0xc989618d9adde +0x2 +0x190b89c9085149 +0x2765f428227b3 +0x1 +0x1d0fe1df5b54d +0x132e7fd99af1cb +0x189ada2c313aa4 +0xd1 +0xa52d3c5e5e9ce +0x515a928501e81 +0x3 +0x14cb61e807e622 +0xcdc6a0dcc4dc0 +0x1a +0x1bc023f7076267 +0xfa8560edbfe3a +0x3e +0x8fc88f61c48a0 +0x571a23f8db032 +0x1 +0x8466be3ffcb7f +0x176c8f57239de +0x0 +0x13e252e8c1aedc +0x14ad01a09c5611 +0x11 +0x1a7ce37130b8e8 +0x5d63c37e8849b +0x0 +0xeb9194415a3e6 +0x6b4656cd6a5ae +0x2 +0xf51db443837e4 +0x126b15363132af +0x24 +0x1fccf6ef614c53 +0x176cfd19ec90da +0xf3 +0x7632e8d2a2ccb +0xcd94003084008 +0xa +0x1f47ccfb8a396b +0xbad0d9cdc59c3 +0xf +0x1851a9b30ab144 +0x1b609c6ac67c59 +0xc7 +0x1a9b7250ea17cf +0xb6ffb91859e71 +0x0 +0x5424af07e8dbe +0x1a05a57e6a04a3 +0xcce3426cba59e +0xe36128c1a0275 +0x15 +0x13236d3cfc1d26 +0xaf9d06283ce72 +0x1 +0x6485d62f2286d +0x196e43eb76c9aa +0x79 +0x5e77ecd908ba2 +0x1d090b3363fd72 +0x70 +0x16fd04cb321144 +0x11a83e8f6c3292 +0x58 +0xaec94f4678225 +0x40e1cfef6681f +0x2 +0x1215aee2818b12 +0x177a55857a0326 +0x8e +0x13f7fd305bef6a +0x14b8105fd02b9c +0xfd +0x1544201945c295 +0x73b2519ce3842 +0x5 +0x4450d2fc002e4 +0x8ef820b0bdd21 +0x13a54045a8c815 +0x8fcdd6621c8c9 +0x3 +0x1f3baac5faaf91 +0x3896df4c03cf9 +0x0 +0x1c172abcc45018 +0xd1361507355aa +0x1d +0x1e6a282673e01b +0x16c7ec529445a6 +0x2d +0x11dd0f4619bb8c +0x8c1e8b69b51f +0x1 +0x29444ac8ea6d5 +0xbc3ac13337f42 +0xc7b575bf4d8e5 +0x1dca1d80493dba +0xd +0x1649b9eb010d0f +0x1ec0458036ae78 +0xa5 +0x1c918ef98670de +0x1d804a8f12a070 +0xdb +0x1f9bfc6e8cb280 +0x18d8bb3c2a05e3 +0x58 +0x5729eaeb33300 +0x1e66add34041ab +0x17 +0x1fd2071911edf6 +0x937d23bafa976 +0x4 +0x1f1341c3ef365d +0xc5829dcc7d142 +0x1 +0x105b69f0781f69 +0x565432037cb03 +0x3 +0x163a80e3404a11 +0x1f0544b810980 +0x1 +0xfff061c9461f5 +0x10d93ec1ae7ddf +0x42 +0x203ccc506dada +0x7d14ca17e50d8 +0xc3f9855f57e1 +0x1bc257388e6706 +0xd5 +0xdede1fc440e9b +0xc38e62a7d34dd +0x13 +0x3270c7efb3999 +0x17338fa6eff882 +0x1f2d412b2fde03 +0x1c08c00c56fd29 +0x2b +0xb6dac66eb0123 +0x1882d94e1d1356 +0x4e +0x432d36be4c7c8 +0x6e4c61d24b7a2 +0x12505496fa759d +0x1cf4a6388f94b +0x1 +0x19b27c8a311913 +0x19e3f7116504a7 +0x31 +0x1c60611e1f154d +0x10504b652ab5c0 +0x20 +0x99dd99220f74b +0x1908f3314421a4 +0xe3 +0xf2f99629f38b4 +0x62f81485f8f0d +0x1 +0x171b5f4a7124eb +0x31981dd7a5af0 +0x0 +0x17241235bcb281 +0xd5edcd127f7b4 +0x19 +0xbb8a02a811f82 +0x3ff8e4db7d727 +0x1 +0x46f1d36cab2b9 +0xe2f5bbd24dd28 +0x1861eff9773277 +0x15cd96526b22d0 +0x65 +0x57730fd7e9c04 +0x1874898586560b +0xcf +0x1246a09e44e5a8 +0x1b3b54b372f0 +0x0 +0xffbf3f5bfe04a +0x10b4342583c3db +0x75 +0x326fdf2b5891 +0x1b6f76b0c629a1 +0x19371034b8bd35 +0x17c66cd9ed9d1a +0x64 +0x175d29bd624380 +0xe9769187fabc9 +0x23 +0xc8b1fe824c852 +0xd4aef55fb47cb +0x6 +0x11fa2b323c374e +0xf45c60a93cd8b +0x28 +0xba167fc3620d +0x82f8ff45b1971 +0x183f8cf17ecf1b +0x6d0de8fad07ca +0x7 +0x1e681e649465eb +0x65c3ed3b92b6 +0x0 +0x1972055e9b396c +0x103266a7976114 +0x5 +0xe88fc45043079 +0x7a5ea9f7d9217 +0x4 +0x1fa59d554e6b9d +0xa2a2382245c91 +0x1 +0xb100ea4310f3e +0x147f28c506bfd7 +0xc1 +0x1b90dd023ae904 +0x1684efeb5fb36e +0x45 +0x1fc33652c20047 +0x884fc4a48eb20 +0x2 +0x1fb86c274f9347 +0x137aa67203cbd5 +0x8e +0x588dcfaab8bb9 +0x181023ab888bac +0xd7 +0x125a82e14d577f +0xf04cd381cf030 +0x23 +0x1cdbd74e4c96e +0x12d6bdbe00c473 +0xe76bc0766c354 +0x54eb60385b199 +0x0 +0x18ddf4252ef673 +0xb33dc8a448fa1 +0x1 +0x647ff41a06180 +0xdea4b15658015 +0x1a +0xdc3ee54275909 +0x2a6d0701d6f02 +0x1 +0x16daa01d662130 +0x1c074430e0eb7c +0x9f +0x1244d585292b9b +0x1199234aab4e61 +0x2d +0xdc089fdfff6bd +0x7629cbfffb8d1 +0x3 +0x1b69af32adb780 +0x122cb36a002f60 +0xe6 +0x2b720e54b93bc +0x1415614598294f +0xb9ce9a61160c +0x11f0553410f314 +0x60 +0x9df18f7467250 +0x96a92475de79d +0x2 +0x109a716037841a +0xfdc25b740360e +0x1f +0xd45ddb0f01671 +0x1b4582f37d9747 +0x8c +0x1224d80068f6fe +0x199c2986c3756 +0x1 +0xe55b73705c2d9 +0x59d57ed2a932 +0x1 +0xcf816a062df5 +0x148b52d3d6f244 +0x28f82f2fe065c +0x1f4a5337fc0d90 +0xffffffffffffffff +0x1cdd116ac1f3b0 +0xdeccbed268f83 +0xd +0x17bf7efa2a0445 +0x13113836f71c3e +0x16 +0x140a407e70072e +0x1514349891e7de +0x66 +0x147854ad4f71a5 +0x1cabba899dc13e +0x76 +0x1cfea16d580ace +0x1bc0f471da7d86 +0x3 +0x14a3ab8f1540cf +0x1175cab8ea5a74 +0x1a +0xdd19d13c063d4 +0x17700967bd0ffc +0xab +0x176c52adc0b381 +0x1e38775b087c10 +0x37 +0x123efd3382b2c5 +0xe20d1e00e4af0 +0x18 +0xa230a1395c8f0 +0x1fd783fc84789d +0xffffffffffffffff +0x98eca28987622 +0x376dbecfa27d +0x1 +0x1db3c404e3a27f +0x2cd4fed23ed47 +0x0 +0xa4afed918e811 +0x1075c7e92f3a5f +0x5a +0x6a1ed072180c9 +0x1c9f527c6c1445 +0x29 +0x48b7a4c3ff1bb +0x179dc3defb141d +0x1b883eae4470c1 +0x15b70b8b8a5f98 +0x9c +0xea1d1b953a585 +0x4ce6b2b780b3a +0x2 +0x177ae124fb9580 +0x70e20a85a432f +0x5 +0x1b134709beeb2d +0x12abd4270f2f93 +0xd8 +0x13d535a9e8381d +0x6ef4e6ee740e9 +0x5 +0x10d55e0faaecae +0x12b70b2cd14420 +0x3f +0x16edefdaf987b9 +0x1474ee427cdbb5 +0x57 +0x5dec688c11309 +0x1384959159f287 +0xa8 +0x51803730c38d5 +0x13bb8ba8f1e5d3 +0x110322eec5a306 +0xfa003b78c045a +0x20 +0x1ad6b952c68a73 +0xf9037d6fc6a0c +0x6 +0x186ab82d74f2b8 +0x10055849839231 +0x38 +0x632e14ae80e9 +0x467f077e894ae +0x18127a22ccf351 +0x1 +0x1ef912ace132da +0x13e8b9a8ee68b5 +0xf6 +0x1e1d6aab269a9a +0xc +0xdf79633ce599f +0xe +0x17ae0948c1262c +0x3 +0x934ae235e62a1 +0x5 +0x1374d599463159 +0x8f +0x184fe8438713b8 +0xf +0x201ac4f69daf8 +0x0 +0x86c5994dd32c9 +0x2 +0x144f4a9a26832b +0x82 +0xd58a5dc1fc6db +0x0 +0x1cf148bb9d84e0 +0xc3 +0x1b8faf07ca7f2a +0x54 +0xc8e101a127323 +0xa +0x1bdf8389158b19 +0xc6 +0x1b5bbcd6ad95bc +0x74 +0x1a8f2d470006b5 +0x61 +0x1a163d1f457d11 +0x4c +0x18d9e2825e1f36 +0x1d +0x960e09b1a5b51 +0x1 +0xd74441e46fb18 +0x19 +0x1fd35bfeaf6bc0 +0xffffffffffffffff +0x31c9010ca48d7 +0x1 +0x18c1daf0bfb21f +0x66 +0xe5e5c84dd5a55 +0x19 +0x1622a5f4f3e33a +0xc9 +0x33475a498d82d +0x1 +0x64238732de517 +0x2 +0x1c223a3ad6291b +0xa7 +0x1a788f1123c18d +0x70 +0x172f8692ebc9a8 +0x4d +0x1984ba005c84ac +0x3 +0x1898138fff88df +0x286a +0x24f39b43c2616 +0xcf8b02d637a4e +0x15 +0x105d42872995fe +0x142148aff4e301 +0x28 +0x1d130aa2d0813a +0x1e522f5a99dc85 +0x9e +0x1a009432fb0086 +0x15c0b70d4d0376 +0xd +0x70c7d49220ac4 +0x7bca6b56a3427 +0x3 +0x487681de14d54 +0xd6d9cd49df760 +0x18 +0x4893b3b8f7835 +0x17976f69986b64 +0x7d +0x6e95f7860dfd3 +0xd2ca819c57b8 +0x0 +0x171c51a8782c09 +0x1dff2ba0e766f1 +0x28 +0x1765fe806c0c40 +0x19babc35d5e929 +0x12 +0x1fb22b2307561b +0x110cf0d40f5f3b +0x7d +0x1a96210c661d4b +0xfbe982ea6c72 +0x0 +0x1dc4ad7823496c +0x5db62235915b6 +0x2 +0x11b2c1d4afa25f +0x39df2ba1f8c4a +0x3 +0xc9073311cc078 +0x16accbc78a3629 +0xcf +0x187703d0968f4a +0x1f563dbad35905 +0xffffffffffffffff +0xb0f2e6b6a373 +0x3963788a19762 +0x0 +0x1cfac1e7f7cca +0x1bc469999485dd +0xa4 +0x11618fc3409876 +0x8fad7ad4e1f98 +0x7 +0x9fc5177c9253b +0x18c9deda96a9eb +0x3c +0x1e699289114ae8 +0x1b47b7e208a150 +0x5b +0x1954412850dc1c +0x30b528ef7dfc2 +0x0 +0xd616f129a00f5 +0xe9da349f6215b +0x18 +0x1d966581214ce2 +0x1cca32e7acd77a +0xf7 +0x158e823d558247 +0x11e7c6b09d81d0 +0xb +0x1705eec9530e2a +0xca42e2b5635da +0x9 +0x3b898229a8e2 +0x10274a663a8234 +0x4 +0xa582aaf93085e +0x11096a3b8dc165 +0x4 +0x3e66b4c019638 +0x1669fdcd1b9f3d +0x4f +0x60f1f2d5b842c +0x8296354d13cf1 +0x5 +0x9ad5be2e62dae +0xf09761f69ecf9 +0x19 +0x9e0a42178d636 +0x1f06d38a1c1bd2 +0x44 +0x1c94cec76b10ef +0x19e21f3f525c7d +0xe575be5ae6a6 +0x0 +0x1f873491cfe161 +0x150b3ec19f6607 +0x90 +0xbd989e8045eef +0x1cf7ed074547f5 +0xa0 +0x1b40b6d55a7112 +0x59bc82702d035 +0x3 +0x16ce800767dd30 +0xd09bc158a707a +0x9 +0xb75b8cbaa139e +0x16ecc8caed0635 +0xc +0xbfa7df2ef4111 +0x1d0d4adf4d7974 +0x6b +0x17dc49fd9a1d8b +0x163884de6d951e +0x42 +0x16ccdcb932f227 +0x1a125a40446edd +0x3b +0x12f0c05e787945 +0xf20c5c1235439 +0x14 +0x16dd2334a200e1 +0x10eb390f90a1ef +0x79 +0x199d4952ede261 +0x1441133fd8483 +0x0 +0x186a9eb5ff8fb6 +0x1551ffb2bb7910 +0x85 +0x6fc5d43a0609e +0xa7099538c6ef8 +0xf +0x1770bffa8aa2cc +0xf1a7b9e68a8bd +0x6 +0x3a1ce3f788812 +0x4ba9762367516 +0x0 +0x1afd93de9e9008 +0x416daab76644c +0x2 +0x9180ac4177fe4 +0xe5f5b700bcfe6 +0x33 +0xa87b52ff9795b +0xb06fd9404fce4 +0x0 +0xa5a474f48444c +0x15614dbb83002 +0x0 +0xbce0fb61b5eb4 +0x1d13318e533211 +0x36 +0x8d13a45f0ec99 +0xbf3b96953d7ba +0x2 +0x1160e7ed249640 +0x1e38ecefd41cc8 +0x1e +0x83113ae932112 +0x10cde826234b60 +0x55 +0x15e309d4623280 +0x40ae358e8e57d +0x1 +0x6b3b0ad90c745 +0xa26134d66df4a +0x4 +0x19b2d4bafca197 +0xa42f5028fabc0 +0xd +0x54ba8fbaccede +0x15e1ef66393f +0x1 +0x1468c1f4a29620 +0x1c22061a583639 +0xf +0x13caec6bff036e +0xdbc3f64fc488d +0x0 +0x19dd4b27e6d2c9 +0x30eab4f1b05ca +0x0 +0x57ac63e67a782 +0xae23ef304ee56 +0x4 +0x115d4acffa293d +0x77f028f0faf4 +0x1 +0x80fd52034a3dc +0x17337ffc73fc36 +0xe918462fc859a +0x3b +0x1cbd95f65eb15e +0x2e8a98179190a +0x1 +0x8211416040d30 +0x18b45221543d78 +0xc6 +0x17a7dabc89bb17 +0x1ef0f09d97c3a2 +0x41 +0x192b8d186e9b69 +0xa494bbad1054c +0xb +0x536f47e77c043 +0xd9c00cf0cdde3 +0x1f58e882c903a1 +0x1147941986243 +0x1 +0x1f528358f153fb +0x17b12cc45db34b +0x16 +0xc9535d4f8579a +0x2a61359b59a00 +0x1 +0x139aa75655e777 +0x13f8b41671306d +0x68 +0x11e3a4ee300b4d +0x573e0ac3c8a17 +0x1 +0x14d5b367aa061 +0xdedca7eed22b +0x267d59615f454 +0x0 +0x14d48f052f0940 +0xdbf48851215c4 +0x7 +0x20c24e30d512f +0x1 +0xd9010d389eeaa +0x1f +0x1c6cc1994d795 +0x0 +0x17f4e726f92fbb +0xac +0xc23dab991b4df +0x3 +0x1f5a63cf764d30 +0xffffffffffffffff +0x1d1844f2bc8be8 +0x49 +0xaea2e48212b98 +0xc +0x119c862e79f5ff +0x7d +0x120d7e8a458785 +0x64 +0x1c3d88be69fb3e +0xd0 +0x140b950cb204f3 +0x1a +0x18c5e627d40212 +0xa7 +0x1249d904780d51 +0x52 +0x1e9f12441f6ccb +0x31 +0x2ded2222b9e9d +0x1 +0x123c72d0b9eb81 +0x81 +0x17ec89f7e58ab1 +0x4 +0x181ae7b02b891a +0xeb +0x14770cf764b1af +0x66 +0x1b96ecb476456f +0xab +0x11f8665d72adad +0x96 +0x98b10878e5c9e +0xe +0x1c418d7d0ba8 +0x1 +0x1f97137eea16f5 +0xffffffffffffffff +0x1a8d18160f27bc +0xae +0x44c2226ae9ce8 +0x2 +0x9ac1578aea9af +0x4 +0x192a62e24bff84 +0x3a +0x11109c7a35964d +0x0 +0x1d9284b62223f0 +0x2d +0x184aefe8a3c83b +0xa224 +0x1bdc8a060c3f34 +0x1063f488960c6 +0x0 +0xb0baafd39977 +0xf52584e05266f +0xa +0x3fe27f94dba2a +0x7c4f993c29209 +0x7 +0x16dda6356061b4 +0x794a0483e8e77 +0x6 +0x1ca43c2e506c13 +0xd71d6239292cf +0x8 +0x1eead0a65e1673 +0xbb37a6af58370 +0x2 +0x763235523c342 +0x1e5d98344e4305 +0x4b +0x729f2fd031d5b +0x56bca10a23800 +0x3 +0x7909fdb36ed8d +0x16f8f4205ab836 +0x6d +0x15e9f0ba05ea6b +0x18ce67cd641fa5 +0x9a +0x9ec5ea8090fce +0x9d7886359820e +0x2 +0x112d74184223ff +0x17a29198fc69c8 +0xc9 +0x7a31678a222fd +0x15fc85df53456b +0xd6 +0xd4583ed9da9d8 +0x12d905663ce779 +0xd2 +0x4eadd23aef3a6 +0x19b654566aca9 +0x1 +0x16281ee4f4bdbd +0x1abaac2153e766 +0x63 +0x16ddecfa57b7cb +0xadcecc7a81e20 +0xb +0x1cc8eb60ad03e +0x104c5678855e1a +0x2b +0x1f523e73c111bb +0x793acec1a4258 +0x4 +0x14a18494efe2fe +0x96bd1af2848ef +0x2 +0x13d3a2b04f5399 +0x177e39c7ee61b7 +0x19 +0x187176d6333eda +0x1608d3ac34dba6 +0xf0 +0x196ad975a43fef +0x100bddee348f95 +0x23 +0x1b0052a28cf9be +0x16611a90238f3f +0x6c +0x1312474961c388 +0x162d9875753d23 +0x33 +0x1ca6f079f41c45 +0x13f92d3d270e88 +0xc0 +0x1f3f19870baf84 +0x93c3cd8c0f406 +0x7 +0x13d04d215b34e3 +0x1dea79de04a6e1 +0xd3 +0x14f4c86ae2757f +0x6a261f821586e +0x1 +0x126b0f40735289 +0x185934d10dd379 +0xd1 +0xdeaf4e96bcee0 +0x6030ccc03674f +0x0 +0x12bc4b3c2703a3 +0x6dc4412ee2149 +0x6 +0x14968b9ba83a12 +0x14ea76763ffc4b +0x908e1abaca43 +0x1 +0xbc031736002e1 +0x167bb8ec00d715 +0xb2 +0x468a56570bc00 +0xe6612bc4f7cff +0xf +0xdbfed5fa5968b +0x9bf367834f298 +0x8 +0x18dc51c00e1681 +0x48d8dc8ab3912 +0x0 +0x19671cc353867c +0x509d02f500944 +0x3 +0x1b18bbe6bc3fbb +0x12bb35b1bc4bde +0x24 +0xda627017c870f +0x30f7677402503 +0x0 +0x5dfc809f00fd6 +0xd6452c1515bad +0x1 +0x1a14a58c5d1fe3 +0x80d0a9aa13f7e +0x1 +0x90106a9bc44f0 +0x52706b128fe15 +0x2 +0xde10a12814737 +0x44d2d0aab4950 +0x0 +0x8ab6cb4ebc0a5 +0x995a09ba36457 +0x4 +0x16144f8567e053 +0x560928c504b64 +0x3 +0x11f643542b16ec +0xef45f7b26a6c1 +0x1 +0xb133abb4534c4 +0x10b9ab3ad56fe2 +0x28 +0x13ea59850e3edf +0x18b526dbc597fe +0xa7 +0x13494b9306b725 +0xaa386efc19b8b +0xc +0x4f805c9d83e00 +0x106a20ea9bc168 +0x9 +0x1013a03e4339dc +0x73458efdbb98e +0x5 +0x15ab40e898b629 +0x8fc7265318549 +0x4 +0x80432f4ce0da7 +0x1dcdd17e00fe26 +0x52 +0x13c22031be097f +0x17ac5ba07a8da3 +0x23 +0x1f8f861b095a11 +0xe7dfe0586bd58 +0x35 +0x18731416e0dbf6 +0xad6398cc0e80 +0x1 +0x1f0759d61a6cba +0x34146eec35cb8 +0x0 +0x44ec8b6031e3d +0xe81212447b55d +0x34 +0xe5f44a9e2d33c +0x177c5f9a663745 +0x39 +0x324532ec4d2d2 +0x709472424d8fc +0x6 +0xe120a31ea9bff +0x16e323269691d4 +0x10 +0x193175dbb1e436 +0x18c637c64656ac +0x1f +0x1a6925713804e3 +0x1f596d426f975f +0xffffffffffffffff +0x15858fd8b1c427 +0x3e89c692a63a1 +0x1 +0xa2ef00468f3f3 +0x16f214ed3afe68 +0xc33ed992d6978 +0x0 +0xa2287865eb761 +0x3e659f918b356 +0x0 +0x1ed25607f0d412 +0x1b189801c200d7 +0xe1 +0x1ea13441ec38c2 +0xe03328af97e13 +0x1b +0x8c6a24975d677 +0xf7c94228349bd +0x38 +0x14266ec505f077 +0x69990a2b73a77 +0x0 +0x1ea1ecdc9d53ed +0x1be57d0ff16335 +0x50 +0xfbcf790ffb46a +0x575992ff5aee9 +0x2 +0x1d5462056160a9 +0x1b807e292e01c0 +0x1c +0xc2e361ae393d0 +0x61fd4e7594b69 +0x2 +0x297b75f442429 +0xb42d5be3b6563 +0x1f08fedf6540db +0x3fde2a73c958c +0x2 +0xdf32c4793b4c5 +0x1a532c1ef5fa75 +0xff +0x171c3098e2a737 +0x196a07c874fa98 +0x85 +0x190a4ce8c51a9a +0x7fc37e3f9f6e8 +0x1 +0xad66d8eff6232 +0x83fa788a407f4 +0x6 +0x3b5e015946014 +0x1b18807f912d8a +0x437d5bc1a81c7 +0x1ed4f94b9b8588 +0x4c +0x14f954a27da4a3 +0x1f75cf311d3d53 +0xffffffffffffffff +0x2c24bb38b8f7 +0xb11f82d4c2b42 +0x1739f90cf92dea +0x1d6104bdfb7280 +0x33 +0x148cf09aa4c951 +0x161eb62a515375 +0xad +0x12363a695d1e81 +0x17bf5ec376e579 +0xbb +0x1ce172e820470a +0x16eec152b05a27 +0xcf +0x10db6b85f85fbc +0x27e7b477a5075 +0x0 +0x172e53585df442 +0x17f0d4010454d0 +0xc3 +0x80e890b3b2ba8 +0x7434da6a6c07 +0x0 +0xa93f64ab9addb +0x199d8644a6eddc +0x9c +0x3986904a599cc +0x107fdbdacf11d4 +0x7cfe302773866 +0x2cf749c4fa400 +0x0 +0x17a095cbc692d3 +0xb824a640225f8 +0x9 +0x23f3b26953e59 +0x172576eef08f4b +0xa47ce794ad7db +0x11fba3a6552fa3 +0x17 +0x11836e7c3da029 +0x1fd4afef6b029e +0xffffffffffffffff +0x229822ee38e02 +0x2cf7a45ff6fb9 +0x141d877bd9a43 +0x0 +0x4a3eba1662964 +0x188be0a58c1da2 +0x0 +0xad4f6aa7d37ed +0x10c1e34a0a3fea +0x7e +0x1be1714c19ff36 +0x1c5f00f575ac12 +0x79 +0x86bccce1547d8 +0x85e9bf8a0aeb +0x0 +0x18c59949b613b2 +0x2587e802a48e1 +0x0 +0x7185bc8acdf1f +0x15cd545628c933 +0x4b +0x91959abb9cf9f +0xfb6b234e10350 +0xd +0x493810d04b6d1 +0x2fca414c220b9 +0x1 +0x15427a90f7606d +0x231edbb2f9e96 +0x1 +0x11fba8718b054d +0x14b55fea776a58 +0xfe +0x1a5fbc8e2920a2 +0x8584eec09027b +0x4 +0x1ebe397db5eea3 +0xa04333865f485 +0x4 +0x1a267744d0aeaa +0x1d4c434f14f425 +0x8 +0xe19eec0d607c3 +0xe395fd35edab6 +0x13 +0x46e403cb6dfc3 +0x1df4ff741859f6 +0x6 +0xdaaf273722aa6 +0x100ffcae43a5f +0x1 +0x8b116a87b17d4 +0x1f737e458e56df +0xffffffffffffffff +0x10648a98d01b11 +0x1d35731dcf8b10 +0x7b +0xf27d21b6815a6 +0x1ffffab3745fee +0xffffffffffffffff +0x1e7b3252555227 +0x1604906c940fac +0xde +0xf1d2a278fa991 +0x643ad90b056e3 +0x1 +0x1a119cac63c78 +0x1e2e37c4c9e7c4 +0xd3 +0x1f97710a9a80c5 +0xcafb00086852c +0xa +0x1945e5094e8d39 +0x6da19ec380916 +0x5 +0x16a0b0bba5cfc7 +0x632f28184d8f +0x0 +0x170f09e0046a6b +0xa3cd661a958c +0x1 +0xc87c147d127bd +0x8e8e014a81f5b +0x3 +0x110ef276bd7f4a +0x1ae27e8c3fae29 +0x82 +0xc314729005b4b +0x1cc5b840267c41 +0xa +0xb06ff57126c57 +0x2cc60724dd776 +0x1 +0xe9a45c5cde760 +0x1fda573db0e8fd +0xffffffffffffffff +0x91991bd377ee7 +0x157c60aae35dae +0x9e +0x1dd57fef3b57d +0x86647579862f4 +0x5 +0xb2068ee51b721 +0x1c3b1d545cbcf4 +0xac098f493a160 +0x19 +0x1bded4fc1b79f2 +0x2d72fb +0xceabb47d5cfcb +0x0 +0xfdc5a6673e860 +0xb5dc7fc5e5b51 +0x3 +0x18852a767ebd18 +0x1648094263697e +0x5a +0x2341da92debc9 +0x187e28ee22893b +0x64 +0x271e376f62bef +0x1cf2ac095caaf7 +0x8e +0x191d2d9e3f0bf1 +0x1bf8b51d937608 +0x13 +0x5f15b60891412 +0xd9f093b69e88 +0x0 +0x541e942a0fc9f +0xbc88c86c5eb6 +0x0 +0x1c21f03d1424b +0x34bb3860abe63 +0x1 +0x1182f4b91bfad4 +0x76d8ab6a56fd0 +0x1 +0x96d146d4d867c +0xb243bb80fd338 +0xc +0x99a2f01ce5ff2 +0x17f2ea82472d2 +0x1 +0x183c81e1e3fcbe +0x1ff6c26288f0f +0x0 +0xa8c379b4763c0 +0x1d56fc30947fd3 +0x62 +0x1137090119aec9 +0x100e2a4440b9ae +0x3e +0x14f7722d0ea4d2 +0x16cebc03f41587 +0x39 +0xf7eb45fdf2a77 +0x985c4e5fe42d2 +0x5 +0x120e64e47e3b98 +0x1e85807b754e88 +0x64 +0x1b7d83390dc040 +0x1f7d34a50f2bc5 +0xffffffffffffffff +0x7624678cba151 +0xdb4f27823c692 +0x16 +0x1eec043e2df187 +0x15d2172dd2d19c +0xb2 +0x1a17715dbc4d40 +0x1e921e70646882 +0x50 +0x40a2502bd98ff +0x4606906dada10 +0x0 +0x7b9e7a251f4eb +0xfd313db0bc88e +0x19 +0x36bd3af50a20c +0x63fb402fea628 +0x0 +0x1330d264c56587 +0x5967f68c0adfe +0x0 +0x19d7c5ba52ee48 +0x1ee493cbf6fc6d +0xf5 +0xa1358b54a165b +0x1f20f501ea3abb +0x1e +0x16532de366450e +0x18177f9f7d757 +0x1 +0x14eb4a6719fa47 +0x10b01117f7544f +0x8 +0x1351c7bfae496e +0x1f7154781e3f2 +0x0 +0x135b75a30679c1 +0xc71551fc09e04 +0x2 +0x1dd2218e0dde62 +0xe021c76d6e7df +0x1c +0x1a50f834801e31 +0x1746f21035273d +0x16ae05282feba1 +0x76 +0x63571edcbffd1 +0x197e722b59b88c +0xa5 +0x4f9fc5e53b2e3 +0xaa13f55df11b2 +0xe +0x13fe1ba7321b5f +0x1d56f652a095dd +0xa7 +0x71a29b2d3f246 +0x37b3774064d35 +0x0 +0x1e989872d45cf1 +0x19b9c14fe8036d +0xa5 +0x15a93006a19d77 +0xde3cb85a1cdac +0x0 +0x1a7e9b7ea7dd93 +0x190da0c706b7de +0x25 +0x1fd1f71600e611 +0x1bfca4d9a324c9 +0xe3 +0x94bce3eb517d4 +0x107be6732233fb +0x2d +0xcd44b29024a55 +0x475085966471b +0x0 +0xbfbae9c5a0791 +0x1af5378b13025d +0xe8 +0x2d65cac635717 +0x6d301b618c325 +0x2 +0xefa5bd3b80687 +0x1f37ab5ee9f1d6 +0xffffffffffffffff +0x1ed7b29947165d +0x1fd34f000a51c +0x1 +0x18d837489c64ab +0x6135392dcc78c +0x2 +0x1cff0cef8ffeae +0x105bb1edcde1c7 +0x13 +0x35283bd9e1a51 +0x1f0c99f1cd54a7 +0x4a +0xd82d2f43a018e +0x79912242b9bf7 +0x6 +0x12930e0c980ea5 +0xc462b81a8e8cc +0x3 +0x1f12bd87ca728c +0x12bd2d328ad42c +0xef +0x1f338d4794cd1e +0x677f2da261c5a +0x3 +0x8bd0471dd85a8 +0x1cb224d10b4e79 +0xc7 +0x1a5eaa7f719432 +0x19e07b8e958d9b +0xa2 +0xe41ea97538812 +0x419805e1b7ed +0x1 +0x1de9f06c50fd1c +0x1b8e989610f45 +0x0 +0x18e9dd9e55791f +0xe8b3668e1db27 +0x14 +0xb95b1c8fc2658 +0x1bf3c620a08eec +0xf2 +0x146e00e924236c +0x12714b455e65f9 +0x90 +0xc8ebfafbffa4f +0x164da9e3861 +0x1 +0x1056bbd7681819 +0xe6f88a299e4ef +0x23 +0x23c8a320eb6d9 +0x1b14b7fcf28a0d +0xc +0xfa8eebf710043 +0x0 +0xbc4c30d1ededa +0xff5c71172fe7a +0x0 +0x0 \ No newline at end of file diff --git a/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172031-1611816.fail b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172031-1611816.fail new file mode 100644 index 000000000..56b263670 --- /dev/null +++ b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172031-1611816.fail @@ -0,0 +1,3255 @@ +# 2024/11/11 17:20:31.858332 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw genesis: asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x4e, 0x2e, 0x2, 0x1, 0x1, 0x1, 0x99, 0x74, 0x64, 0x2e, 0x0, 0x79, 0x3, 0x5c, 0xd4, 0x0, 0x1a, 0x0, 0xc7, 0x6f, 0x67, 0x3d, 0x1, 0x53, 0x16, 0x5, 0x6, 0x25, 0x19, 0x1, 0x75, 0x3}, Index:0x3b1d0}, Tag:"", MetaHash:[32]uint8{0x3, 0x0, 0xbe, 0x1, 0x17, 0x1, 0x4d, 0xd6, 0x2, 0x3, 0xdb, 0xb, 0x30, 0xd7, 0x1, 0x2, 0x6, 0x18, 0xbd, 0x1c, 0x1, 0xc7, 0x3, 0x2f, 0x4, 0xb5, 0x1, 0x3, 0x6c, 0x5f, 0xa2, 0x9d}, OutputIndex:0xffffffff, Type:0x0} +# 2024/11/11 17:20:31.858729 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw alt_leaf: asset.Asset{Version:0x0, Genesis:asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, Index:0x0}, Tag:"", MetaHash:[32]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, OutputIndex:0x0, Type:0x0}, Amount:0x0, LockTime:0x4d63, RelativeLockTime:0x0, PrevWitnesses:[]asset.Witness{asset.Witness{PrevID:(*asset.PrevID)(0xc0008ea930), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0008eaaf0), TxWitness:wire.TxWitness{[]uint8{0x76, 0x4e}}, SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0008eacb0), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0008eae00), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0008eaf50), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0008eafc0), TxWitness:wire.TxWitness{[]uint8{0x0, 0xfb, 0x0, 0x18, 0x2, 0xe2, 0x1, 0xff, 0x1, 0x14}, []uint8{0x1}, []uint8{0x73, 0x1, 0x6e, 0x1, 0x4, 0x3c, 0xb3, 0x6, 0x2e, 0x19, 0x1}, []uint8{0x1, 0x56, 0x3, 0x3b, 0x0, 0x81, 0x3}, []uint8{0xdd}, []uint8{0xd1, 0x0, 0xf5}, []uint8{0x2, 0x3c, 0x70, 0x15}, []uint8{0xa, 0xc, 0xe1, 0x17, 0x36, 0x7}, []uint8{0x20, 0x0, 0x0, 0x10, 0x83, 0x1, 0x13, 0x2, 0x1, 0x8f, 0xc5, 0x1, 0x2d, 0x7, 0x2, 0x7d, 0x2c, 0xa9, 0x6, 0x75}}, SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0008eb0a0), TxWitness:wire.TxWitness{[]uint8{0x2, 0x9, 0x6f, 0xd3, 0xfb, 0x84, 0x1, 0x7, 0xff, 0x0, 0x15, 0x3, 0x30, 0x84, 0xac, 0x7f, 0x18, 0xb9, 0x6, 0x11, 0x35}, []uint8{0x5f, 0x3f, 0x3}}, SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0008eb1f0), TxWitness:wire.TxWitness{[]uint8{0x55, 0x1, 0x4, 0x2, 0x81, 0x1}, []uint8{0xc0, 0xa0, 0x9, 0x1, 0xe4, 0x83, 0x1, 0x7f}, []uint8{0x23, 0xaa, 0x7e, 0x51, 0xb, 0xe9, 0x77, 0x1e, 0x4}, []uint8{0xa7, 0x1, 0x1, 0x1, 0x90}, []uint8{0xff}, []uint8{0x1}, []uint8{0x6, 0x32, 0x0, 0xff, 0x6d}}, SplitCommitment:(*asset.SplitCommitment)(nil)}}, SplitCommitmentRoot:mssmt.Node(nil), ScriptVersion:0x0, ScriptKey:asset.ScriptKey{PubKey:(*secp256k1.PublicKey)(0xc0008c8780), TweakedScriptKey:(*asset.TweakedScriptKey)(nil)}, GroupKey:(*asset.GroupKey)(nil), UnknownOddTypes:tlv.TypeMap{0x7a69:[]uint8{0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e}}} +# 2024/11/11 17:20:31.858764 [TestAltLeafEncoding/alt_leaf_encode/decode] unexpected asset lock time, got 19811 wanted 0 +# 2024/11/11 17:20:31.858853 [TestAltLeafEncoding/alt_leaf_encode/decode] decoded leaf {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 0 [{0xc0008eb2d0 [] } {0xc0008eb3b0 [[118 78]] } {0xc0008eb490 [] } {0xc0008eb570 [] } {0xc0008eb650 [] } {0xc0008eb6c0 [[0 251 0 24 2 226 1 255 1 20] [1] [115 1 110 1 4 60 179 6 46 25 1] [1 86 3 59 0 129 3] [221] [209 0 245] [2 60 112 21] [10 12 225 23 54 7] [32 0 0 16 131 1 19 2 1 143 197 1 45 7 2 125 44 169 6 117]] } {0xc0008eb730 [[2 9 111 211 251 132 1 7 255 0 21 3 48 132 172 127 24 185 6 17 53] [95 63 3]] } {0xc0008eb7a0 [[85 1 4 2 129 1] [192 160 9 1 228 131 1 127] [35 170 126 81 11 233 119 30 4] [167 1 1 1 144] [255] [1] [6 50 0 255 109]] }] 0 {0xc0008c89b0 } map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} does not match input {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 19811 0 [{0xc0008ea930 [] } {0xc0008eaaf0 [[118 78]] } {0xc0008eacb0 [] } {0xc0008eae00 [] } {0xc0008eaf50 [] } {0xc0008eafc0 [[0 251 0 24 2 226 1 255 1 20] [1] [115 1 110 1 4 60 179 6 46 25 1] [1 86 3 59 0 129 3] [221] [209 0 245] [2 60 112 21] [10 12 225 23 54 7] [32 0 0 16 131 1 19 2 1 143 197 1 45 7 2 125 44 169 6 117]] } {0xc0008eb0a0 [[2 9 111 211 251 132 1 7 255 0 21 3 48 132 172 127 24 185 6 17 53] [95 63 3]] } {0xc0008eb1f0 [[85 1 4 2 129 1] [192 160 9 1 228 131 1 127] [35 170 126 81 11 233 119 30 4] [167 1 1 1 144] [255] [1] [6 50 0 255 109]] }] 0 {0xc0008c8780 } map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} +# +v0.4.8#2418247171076162110 +0x128ea4e4cdbbfb +0x4e +0x1e69166956912b +0x2e +0x659346d0c01f9 +0x2 +0x33df11ee73bdc +0x1 +0x4dfbf924cd60e +0x1 +0x1e1d3004a8640 +0x1 +0x1317d9ec3388b4 +0x99 +0x1045f45c58c3cc +0x74 +0x1bdeddd49d757f +0x64 +0x1a010fa304f574 +0x2e +0x2b964524e61e3 +0x0 +0x1e0e15ad878706 +0x79 +0x707f86a7398d4 +0x3 +0x1224f2d2a19fc3 +0x5c +0x1eba82e70f3b92 +0xd4 +0xff14b2e859a8 +0x0 +0x1196fbc114b68b +0x1a +0x104f39778a22e +0x0 +0x19bba3c679b89b +0xc7 +0x10c171811eb80d +0x6f +0x1ac9e2ca2d9eba +0x67 +0x1c7ab7ab9b0a24 +0x3d +0x31771efaf0c85 +0x1 +0x1391763afdc6d9 +0x53 +0x19c4de4b0be6e8 +0x16 +0x74360297576c0 +0x5 +0x72fc554ddb497 +0x6 +0x1132609c337139 +0x25 +0xf9a247d1da34e +0x19 +0x88a8b4b105211 +0x1 +0x16ae4e0cc41deb +0x75 +0x8ad144b10000e +0x3 +0x18dfb0f884569b +0x3b1d0 +0x10af82773d9bb +0x64adad71258ad +0x3 +0x23b057716f185 +0x0 +0x18e36b81c4f46e +0xbe +0x32c0657be8921 +0x1 +0x1d6d88bee39a03 +0x17 +0x207217d83e5ed +0x1 +0x133d892367ddbb +0x4d +0x1b5d48fa449ffe +0xd6 +0x7039bdd3867ca +0x2 +0xdf4f2080793dc +0x3 +0x1e1cf85c8bbc2b +0xdb +0xde585baaf8c91 +0xb +0xe4da6721cde11 +0x30 +0x1bbdb30767b8d7 +0xd7 +0x22b58561aa79f +0x1 +0x4c552eb8b45e1 +0x2 +0x87e74a28f01be +0x6 +0x125d118c36cd9a +0x18 +0x19f03eaa4611f5 +0xbd +0xd3a84fa7247b5 +0x1c +0x5d97b71b211bb +0x1 +0x125dac2cf0bf4d +0xc7 +0x83c7846bb2ec2 +0x3 +0xe5f315403da1a +0x2f +0x8fe9dfa718d26 +0x4 +0x134e83562547eb +0xb5 +0x24b6e25d18625 +0x1 +0x5fcfbeff6eb8d +0x3 +0x14d8b83a5bab0d +0x6c +0x1223bd9254370a +0x5f +0x1d7f49f5314d8b +0xa2 +0x16ea9fded061f1 +0x9d +0x1fcb8c6387b31e +0xffffffffffffffff +0xe37b1e06c0dac +0x0 +0x18283d6d07ed57 +0x0 +0x12db7c44380041 +0x1 +0xe1c7b963b93f2 +0x0 +0x48a466e4dd1ec +0x0 +0x1df3bbb131afb5 +0x1 +0x1687c51c21389d +0x4d63 +0x17aa9c21dbe56d +0x0 +0xbc73fa62d1ebf +0x0 +0xc9a98e42bd6e0 +0x1891017dcf0fef +0xbb +0x5077f34a6aad2 +0x0 +0x7218a4b43dd4b +0x2 +0x11ffdc51d7a0bc +0x25 +0x4a57c1628c684 +0x3 +0x76732a0d68678 +0x2 +0x13178d12ca1e6e +0x73 +0x1b4d448f7cc03b +0x8d +0x8c23faf4082f2 +0x7 +0x5d15f4adc8d0c +0x3 +0xc6c60046e1aa +0x0 +0x29d02b1e4c1b0 +0x0 +0xd8fbd2fe07292 +0x19 +0x115140423ff9ca +0x16 +0x80ea3712e7011 +0x1 +0x1c803c6001414 +0x1 +0x15abd58e0bbdb7 +0xec +0x105b7d761f7d30 +0x56 +0x164fd3c0a1406 +0x0 +0x7deffe36fc841 +0x1 +0x8076089e06395 +0x0 +0x34acbc4abede0 +0x1 +0x1360c23426c6a1 +0xc5 +0xcbf48598eca30 +0x0 +0x1acb69e24a1bc0 +0xb8 +0x27d31986a844c +0x0 +0x11708b86c04faa +0xa +0x129fa8c780dab9 +0xcb +0x1566d5d5303a2d +0xc9 +0x3e0e6f5b26b75 +0x0 +0x6e41aa383fee2 +0x2 +0x196ee6f22ad6fd +0xc +0x130848c3197170 +0x2bf +0xfeeed10eac271 +0x8b58d4335c07d +0x1 +0x142efd043efdac +0x5e303fc0ef249 +0x2 +0x34b77db39b12a +0xe947fa2717ae9 +0x1c +0x357defec4fcc +0xd3f7158dc984 +0x0 +0x13f35410e77a2a +0x3fca789f6ed47 +0x1 +0x6d59ffb60ed50 +0x15de967f7e6d5c +0xc1 +0x3503e1830a2d9 +0x100f2224faca7c +0x18 +0x1dd53bd7c268b2 +0xefb7e87f0cca9 +0x29 +0x1aaa05d1a6f416 +0xb25cf5bf0e019 +0xe +0x88f6d61ce0e4 +0x13ce5d8f3a97bd +0x55 +0x1b432db353be85 +0x1f3bfa6332debf +0xffffffffffffffff +0x20934a951e6a8 +0x1f739711722833 +0xffffffffffffffff +0x1ee75e8246cc5f +0x17427d21d25f56 +0x6f +0x9d4862fce9ef8 +0x56db0056c9458 +0x3 +0x9c69d423e3962 +0x149c2cdc3da54f +0x59 +0x1b4f2b671b4c5 +0xfdf01b6ca0a02 +0x2e +0xaa320dfb4ab57 +0xa5e7dc5aef463 +0x6 +0xc56a0c7f3f3df +0x1e87ecf27bc800 +0xf7 +0x1d89e5940ed5d6 +0xa6e49766592dd +0xa +0x1fe907419d21b6 +0xeff554b3774f9 +0x1d +0x4509a8bca8dbf +0x48cc32a51e173 +0x3 +0xe580c3681da91 +0x1fc073d39f6213 +0xffffffffffffffff +0x8c3bfca7bf0f4 +0xb344c735f5526 +0x7 +0x1ab9df0ffeeba0 +0x78175fd5478b8 +0x1 +0x537cf03e88cd9 +0x6fb0510a68ecd +0x1 +0x126617641f1d69 +0xeb11d17292de8 +0x0 +0x15235737b4ae83 +0xb2ea14284931b +0xb +0x166f94c4e7fa17 +0x5f76c1bf530bd +0x2 +0xa4208a6604a65 +0xb23f78979103e +0xc +0x7a2ac19900b44 +0x1fa21f5c53dfdc +0xffffffffffffffff +0x732372411f400 +0x155c71682d38af +0xa1 +0x776e77ee117c2 +0xc70a57670d29e +0x6 +0x124cd6458fdf74 +0x693f23f45fcdd +0x1e4fbe0e0242c0 +0x4e +0x50a03089f8451 +0xfc07185d7c22c +0xe +0x112d8cf2a63510 +0x1705e092eace75 +0x31 +0x63702e95bde32 +0x1718b25d1fb8f1 +0xda +0x878405ec8539d +0xc461205c946af +0x1c +0xa05582c82cef9 +0x10741d4dd18a3e +0x47 +0x841d9e49e964 +0x12a6677bc3f427 +0xb8 +0x165245e0f39649 +0x136d7e894c6d94 +0x80 +0x1968810fb89294 +0xd91b808b707b8 +0x1f +0xa111d45075345 +0x1882998ee38c58 +0xe5 +0x1b1d7c02a94d3a +0x190808120d64b3 +0x85 +0x61b12ba8fc94a +0x1190893c2b0a1c +0x66 +0x5c479a36b1043 +0x1502e58edf7879 +0x57 +0x1d16f38236c5c2 +0x17e93a347f6450 +0x2d +0x1501b04a4c2cda +0x19a830236e20d0 +0x5a +0xe4a4c17901cf9 +0x8e8225b2ee1cc +0x5 +0x4a346ab6aa84b +0x5aee54a09410a +0x0 +0x3c38ee0d4c053 +0x1c3afec86524bd +0xac +0x17fb8f417f52ab +0x82a567d44195b +0x6 +0xf7bc50933f9e3 +0xa86c8d79e0398 +0xf +0x1748230608611d +0x83074286e25a9 +0x6 +0xee205d966534d +0x7aa80813c2b6a +0x5 +0xd8b01ad2a050e +0x16fd047b92538c +0x3 +0xd8d75662652d9 +0x1c0a4f2b66dfc +0x0 +0x4c15b8e3b018 +0xef10fddc76469 +0x8 +0x53c36d754fdd6 +0xf185fe257465e +0x24 +0x128605ce4970eb +0x2ad777e2d54a6 +0x1 +0x1b621aff02ecff +0x5e2ccf17f4769 +0x2 +0xcee5a96d98bf8 +0x9d2a89e7aeacb +0x2 +0x11d72e7ccef126 +0x10f7972d57b537 +0x2 +0x1ecf6f27d15543 +0x974b5ff50d39a +0x4 +0xfcf81eefb654 +0x1f011cc2dba43e +0x92 +0x16b0b70750d831 +0x49432526a89bc +0x0 +0xd3630d4d4ece1 +0x1e88dc3d9be119 +0x4e446a66f8bdb +0x1 +0xaf65d1e422097 +0x17aebc343987f1 +0x20 +0x1507862ed2a0a5 +0xb2e2d699e19b4 +0x3 +0x81c9966795715 +0x167496e5004d8 +0x0 +0x18b79dc2f9f97d +0x16b1aff732544b +0x6a +0x1c8aeb3c91b3ab +0x1b2964bc689e7d +0x3a +0x142d05866dba1a +0x149d0560b7161b +0xa8 +0x4e1e1deca46d0 +0x35d016777ae2 +0x770fe40b3f1d5 +0x1 +0x8b4335ca65375 +0x475e00991c6b3 +0x1 +0xc51953d4c4e32 +0x19 +0x6a94de31c7da7 +0x3 +0x6836e7a6d6ef6 +0x3 +0x690084e8a82b6 +0x3 +0x3d5d0b9ea1df2 +0x2 +0x1fe10b9acfe92 +0x1 +0x90b196d4e39b7 +0x3 +0x9bdd92fc51337 +0xb +0x12a432c23d9faa +0x25 +0x1157465667f753 +0x47 +0xfc0634c7a7e0 +0x1 +0x145440f1fcbc6c +0x47 +0x7c987b6a3adba +0x6 +0x1ceb1a8837bb09 +0x4 +0x1f32bc53b16ce3 +0xffffffffffffffff +0x17d0d9c0d43231 +0xe1 +0x1ed9401bba7d61 +0x80 +0xf6a22a14fb753 +0x2f +0x100f62ec9002f6 +0x3 +0x1666eb8fec5e49 +0xb8 +0x19a9738eebf705 +0xa8 +0x1efaf44ba61290 +0x86 +0xf1917c8f97dfe +0x35 +0x1a2ba72db82a07 +0x9c +0x623721f425d9b +0x0 +0xeb5e6087af823 +0x11 +0x800a311b13929 +0x3 +0x177df7cccd3ccb +0xdb +0xc5ea3228fa0d6 +0x18 +0xef331a36ae057 +0x10 +0x5e9aa9150ff88 +0x0 +0x1237a77d18a808 +0x67c +0x1f90d9be933268 +0x26884fa26f2ae +0x1 +0x1d3572e9772716 +0xaf6f3356ea9c3 +0xa +0x622cbb953454c +0xb307c65c8e329 +0xc +0x1b84e17c80e134 +0x3b16877fca1a +0x0 +0x18f31dc2c86e33 +0x85f0204a4283d +0x2 +0x5fca88d344b13 +0x186a546f751c58 +0xee +0x55e2804abcab3 +0x810256ef65cc5 +0x7 +0x1e7f55c7e0437b +0x1cefdcfd24fcb0 +0xea +0x34f4bfe187247 +0x73de85ffff322 +0x7 +0xd3b10c37224e4 +0x17f60e878103c3 +0x45 +0x2bcd84da0c042 +0x3db158c63be56 +0x0 +0x1192ef24424a92 +0x15500710cb999c +0x33 +0x25933b859b160 +0x52ca580aa6b99 +0x1 +0x11fb686f910b3a +0x1d1b3251f91a6b +0xbf +0x11a6ab9cd1a7dd +0xad773770c72b2 +0x7 +0x8a9674f3948e8 +0x10cf00ebf1aff7 +0x2e +0x1b8f44729f3f38 +0xcd3d4cabe9d7 +0x1 +0x738eda9e74ce6 +0x363ed73039fd +0x0 +0x20c0d5ae6ecfd +0x96d2cbf2b438c +0x7 +0x29efc88f7a232 +0x8c3f6999ecb71 +0x5 +0x14925591539f73 +0x1f6f1d5a3b9af8 +0xffffffffffffffff +0x1787e78b835dd0 +0x106a67b93f4f82 +0x16 +0x173ceb0585fe4f +0x17ec144d886ed6 +0x3f +0x1cb3325844fe4 +0x1903dcc7d6907e +0xc8 +0xe6a75ad659925 +0x10b7cf5f8053c5 +0x29 +0x67ce2b8fac12c +0x122880c50f0bdd +0x9c +0x2a233592529c1 +0xa92ced323942d +0x4 +0xd3ef209651ea +0x73bf337b71ca4 +0x7 +0x12fc177a9928d8 +0x16e3267b82087f +0x67 +0x6fab66ae27c2d +0xd57de536be1b2 +0x19 +0x740fd4ef5930a +0x1d51c21343eb92 +0xb1 +0x1dc4e29354bdb2 +0x120ba2e6e4a12e +0xdf +0x1b94abbea02715 +0x5e8b29e1d25de +0x19f92c14781bb4 +0xbf +0xecc4eaf112b76 +0xbe85224a61b +0x1 +0xc36b6f68f508e +0x11777f006d81eb +0x6a +0x1e8da6c2ae9bb2 +0x1b2aba7538548d +0xca +0x18e4ed69ad2ed +0x6a67f5aa774af +0x2 +0x1c589a3719a494 +0x12e2a2584cc025 +0x40 +0xf0349fbbb8957 +0xed719c5909009 +0x6 +0x9b9c870dccd36 +0x1c64db09297d36 +0x3a +0x125277abc71ee1 +0x458e135abaa7b +0x0 +0x11f1d439737c3c +0x1b38e738ff8aa2 +0xf2 +0x1bcd5c6e4897d1 +0x4ba36eb863d2d +0x3 +0xce8589159e69c +0x78f082354c8d4 +0x7 +0x1d60be841f436 +0x1e914e000d11d7 +0xf +0xb6ba6b00251a +0xe578d30c8cef +0x0 +0x9df0ea2c0b4ee +0x157e66dbaa46f0 +0x15 +0xaaec42b82dca8 +0x1c3b26b7d73393 +0xd7 +0x1a09beb0d940d9 +0x4c1e076afed3e +0x0 +0x2f049ca25a10f +0x121f06d0a98b87 +0xfb +0x1bc453b4421108 +0x1b57b372195ee8 +0xbf +0xb610ad7291f7b +0x99908f104077c +0xb +0xd77f4547117cf +0x19020695164c89 +0x6e +0x11aa864f562edb +0x1ddd3c86e40257 +0x39 +0x16b3511cbb189 +0x5ca3d0a3d57ec +0x2 +0x17095e267cc741 +0x137a9702e261fc +0x38 +0xf40c9c3773c80 +0xa1f443a894ef7 +0x0 +0x4378f6522264e +0x89a9815927f13 +0x4 +0x11d9fb3a5a93db +0x9012dbdf54327 +0x0 +0xf49366be6f9c6 +0xf5e6c2bc0f95a +0x22 +0x383c8a3524fe +0x12c49eb9e52ae4 +0xe +0x1cb6aa8872e4de +0x7dfaf2fc92f76 +0x0 +0x1c01af462cb1bd +0x10a925a91e6acf +0x11 +0x19e7b03626c5dc +0x16d6cf77e3e110 +0xe1 +0x14608797ba2aeb +0x1716921a1f3ee7 +0x0 +0xd9c755d7d175a +0xf90c0bf6aa0a0 +0x13f1191f2cb965 +0x76 +0x5d5f2cfaf61f6 +0x1632d9ca1fcd76 +0x4e +0x250404db9348f +0x4554fc057848e +0x1d7d21826efd03 +0x0 +0x1150dddd71a0f6 +0xa1f33fd041ac3 +0xa +0x93ab2da57cc +0x0 +0xa7d6092e177dd +0xe +0xc4c1e0852d33 +0x0 +0x7ee74ea5e81c3 +0x7 +0x17ef7cce79dc98 +0xdc +0x1faecaff0d2c68 +0xffffffffffffffff +0x12ca3c707aab58 +0x82 +0x8ef741a5d4866 +0x6 +0x8b0e964ae68f2 +0x5 +0x157d72655f8126 +0xe3 +0x18928bae06950 +0x1 +0xb846921b9bcaf +0x6 +0x1f597cd41f45e2 +0xffffffffffffffff +0x4cccb2e737dd5 +0x0 +0x1b67b99fd822c9 +0xe5 +0xcfe9175ee7317 +0x1f +0x186145b9d05661 +0x78 +0x113d6f957bf49c +0x7f +0x1fb1f46706c9c6 +0xffffffffffffffff +0xb531d3f95db8a +0x1 +0x1677b36c8fcd7f +0x6b +0x692ee977d89f +0x1 +0x1e658ba5933802 +0xb1 +0x90dbaac74084 +0x1 +0x19fcdbdf77dd1e +0x15 +0x21adfa710e2b5 +0x0 +0x6c103a31c03e2 +0x3 +0x123b0582cff07b +0xb8 +0x11fce6327a1763 +0x77 +0x9b902ea06fbba +0x5 +0x1ea4b9ea0c90b +0x0 +0x1552e2d537f8ce +0x37a +0xeb1a9cfec96d5 +0x1d1efc1ff95f55 +0xce +0x81dbdd00bfaca +0x1e2c63b71ab20a +0xef +0x13feaa9003f60c +0x1fc2ab7a4e75b9 +0xffffffffffffffff +0x8e7b9d90e2f48 +0x12c10ec30702db +0xea +0xe86a8a32663ac +0xdb962818b8fec +0x7 +0x12f9c390e87bb5 +0x1c93cf4c398466 +0xb3 +0x13616c9b1a79e3 +0x60344c5986851 +0x3 +0x139cfbc8cf0a20 +0x1e4e4cc145374f +0xb4 +0x2633488cc100c +0x14835efb2a72d0 +0x18 +0x199f035d99887f +0xd66b97e9191e1 +0x1a +0x3950a45b5dc1b +0x1831f30b270e82 +0x6c +0x1a3ff66b8a5f42 +0x1a64032fd26b5a +0x3 +0x1400f645ea6cb8 +0x31d11549b302f +0x0 +0x12e9cd72635c27 +0x63040981c68b7 +0x2 +0x1ed786195d8e18 +0x29eef1574edf +0x0 +0x11c449c0f917c8 +0x17a634b5bb6b9f +0xf7 +0x1040c2e9abfddc +0x913df74660bd5 +0x1 +0x9309d884247d1 +0x181cdaf9122169 +0x67 +0x473de7e92b3f0 +0x140bae827170c +0x0 +0x3651d47886e7f +0x1ceb2a5fdd85b5 +0xbe +0x3803773418cae +0xf00e7c2ee81f4 +0x20 +0x12a74288320ec +0x17f723e907801a +0xe2 +0x906935432463f +0x77a5350c8995e +0x7 +0x5520bbc131a77 +0xb899c595743b0 +0x6 +0xb7db47efca4a5 +0x1c450b4bcd163c +0xe6 +0x19d09e242c0e49 +0x1eef8a2d5668d9 +0x40 +0x29fcfc1e3c88d +0x10dba682d46338 +0xe +0x145de5fecf6570 +0x12daa3b09738ff +0x27 +0x1cb3307572d159 +0x50bd342570dcd +0x3 +0xbdec2911aa521 +0x133519ed9b0b00 +0x8d +0x1354a1825e8439 +0x165368b8ba4120 +0xba +0x1b1c44e3411d8a +0xac3fbae980e1 +0x0 +0x1dd55dcd87a168 +0x5f07717f00b04 +0xaa2e5fe6a5f07 +0x0 +0x15255a0375b89c +0x4dc0d63bca84e +0x1 +0x6e79310a1e8df +0x6e7e4cd71ef10 +0x4 +0x1224a11d048dbc +0x6c794e5907185 +0x4 +0x13e7bf652f7be2 +0x1532c92dd65355 +0xf5 +0x130fdb66a4a124 +0x1ae6af65570279 +0x94 +0x1995f0a5a25724 +0x1cf5d67eaff7ba +0x80 +0xfef2842e7c5b8 +0x5be7e9fc9bec6 +0x3 +0xd0a6359b2dae4 +0xdb4cddc44b6da +0xd +0x19e9e6750d839b +0x1f64ea49a53eb4 +0xffffffffffffffff +0x3185e56a79223 +0xeae6000377c2f +0x1e +0x1bef8e02652d8f +0x1f50132b132480 +0xffffffffffffffff +0x11372638b3b1b2 +0x6f59c7c1e781b +0x5 +0x173bbc0bb54120 +0x120b7c2b4780f1 +0xca +0x1e6368e288e237 +0x1be1e9f63c90f1 +0x78 +0x1e40f3255ad740 +0x17e7bc8eeb7b18 +0xa8 +0x1f0e78c2b0de58 +0x1433ade6725a8a +0x11 +0x535c353716171 +0x153a2521da12fb +0x5a +0x1157af5b12632d +0x144b22fb51dd83 +0xa4 +0x15dc10b27c1c9c +0xf2d1e828782e5 +0x9 +0x19fbd56d7d30f2 +0xfda3645ee2405 +0x3d +0x1131e372cf6b64 +0x48cea0d5e7331 +0x0 +0xc926e983a877b +0x1b83859e13bdc2 +0xb3 +0xa627058d30360 +0x2c8432838ea85 +0x0 +0xfce3f3307dfe1 +0x90922fe901a75 +0x1 +0xc06eb9ddaf12f +0x1b138d09c63d36 +0x4 +0x1349a079516b35 +0x1d73076b689c9b +0x74 +0x195661d717dd3c +0x505567f0c0c68 +0x2 +0x7ca1a87c0668f +0x13d2cc37f43ee3 +0xb7 +0x1e428a29821044 +0x13e3634dda3797 +0xa5 +0x15d5529be0e30a +0xab703b8334f4 +0x0 +0x861d75657de6 +0x1db73880d8637f +0xea +0x10a3705aab1be1 +0x12809cf4df4f5d +0x0 +0x197a0edf0062a9 +0x1f98f21e58048a +0x1f11ed39ca5d29 +0x11 +0x15dfcf5a2a000 +0x7bcb2de0562b0 +0x11dafb5a6546c6 +0x18312c600452c2 +0x49 +0xb35b3e2664c92 +0x1298014cb6fc12 +0xd8 +0xd64d7b2c4ce13 +0x6a74386048cae +0x1 +0xb372f3e40b108 +0x1786b53e412677 +0x78 +0x1f1b044bb62762 +0xdb06764748b48 +0x11 +0x1515b0431fe97f +0x2ef05b3426aa8 +0x0 +0x137089ec85f2f6 +0x25ec2ce1a7c4f +0x0 +0x12f6c719bebeef +0xfd47dc65b3a57 +0x2 +0x1a850019e29cc2 +0x190f2a8ecd239e +0x34 +0xbfe10438da3ab +0x1ecec10f2cb92d +0x9e +0x123ada846c689 +0x62e6d6dcfe7b5 +0x7090b6945bf13 +0xbe8b20c88de3c +0x6 +0x1ea378ca774f37 +0xaf4ee1404dc0b +0x3 +0xfb18e82dfe912 +0x57e7fe39acd4d +0x1 +0x1d220f6664dbf7 +0x1e7f804ca252fe +0x9b +0x1b9fb07d3ace16 +0x163f13f4619b55 +0x5c +0xcb0accd95e9d0 +0x144443a7e6351b +0x77 +0x1c754c4b2d7487 +0x6dd1fb4ae6a39 +0x5 +0x227a2a37c2cb9 +0x854d098a16bc +0x612c4e14cef46 +0x1 +0x1795f12ac00474 +0x1512908f481c74 +0x9a +0x24808487b85c5 +0x0 +0x74044259af650 +0x3 +0x23d2e109f9b5e +0x1 +0x1dd8213163ad0d +0x6a +0x101cd968096b14 +0x30 +0x17ddb34a82d49e +0xb5 +0x1ca7b95047b0e2 +0x28 +0x142bcb176c28be +0x62 +0x1fb33ddf389bb8 +0xffffffffffffffff +0x1b8f85522f268e +0xc5 +0x1d687ce74d1fcb +0x2d +0x4113b448b6425 +0x3 +0x84ccf1bce1497 +0x6 +0x16e55b75268fd2 +0x40 +0x7ee53896079a2 +0x1 +0xeb49cb8147857 +0x9 +0x1032e76b45ffe7 +0x3a +0xf389b3cc015ad +0x3d +0x1d57498a3a1b6e +0x97 +0x1f001278ebfc8f +0x7a +0x57c39e8f2bcdc +0x1 +0x1dbfab905c27c3 +0xf3 +0x7df609a4d3b35 +0x4 +0xda0b9a731909f +0x1b +0xaf3102c5f0afb +0x8 +0x12abf3d37c552 +0x0 +0xd7435a0c56eab +0x6 +0x128cbdcaba24b2 +0xfd +0xabeae1546ad62 +0xb +0x1356a966930ae2 +0x81 +0x4b5b0d417f728 +0x0 +0x1be2a62912bd9f +0x94995d +0x1b86ab662e194 +0x8e81525ff0b83 +0x6 +0x7f228716dba4 +0x15de86210ec91b +0x85 +0x1ecd58e879419f +0x1dccb750c33b80 +0xd5 +0xa90b837a74305 +0x1e41eb1b0c0103 +0xfe +0xe71fda6509591 +0x17eb39a24a1d85 +0x63 +0x19ce94749ec7a9 +0x18c9c44b508ecb +0x3b +0x15847479171886 +0xebc13e5192b37 +0x28 +0x152bc0867ff8cf +0x106e5b541c7310 +0x7f +0x230da09401b86 +0x1a8a4a924a2079 +0x54 +0x1a107e2e478f2e +0x7de2fde333cf5 +0x5 +0x19dd097b3f2a7 +0x100c39dbf562e6 +0x14 +0x1db9be652cb8d8 +0x15822502fce19a +0x6a +0x1e3b135b16cf83 +0xa170a933e93e6 +0x1 +0x1dfd16ee0e0e47 +0x541fa7f0eda0e +0x0 +0x12e1700a860335 +0x109ad4fa778bd6 +0x32 +0x31cc5d70b82e +0x117bc0f4c8957d +0x27 +0x1ed5354e0a46f1 +0x112283cbfa07f2 +0x6f +0xf58849216f2f2 +0x14c16de4b2b208 +0x9b +0x4242936427f23 +0x164b2d101e1a33 +0xa2 +0x13899dfea97321 +0x19e2cfcbf1b850 +0xde +0xa38626451e9c7 +0x1e452aa393a194 +0xff +0x11ae185da07f93 +0x1cf049e0a2b20d +0xd7 +0x1cb843a67ab34f +0xda27de96da52a +0x12 +0x1ea46bc244e8a8 +0x18f4ff93777424 +0x79 +0x1aca52e027cb4 +0xc3f9ad2c1cf25 +0x6 +0x1449d0f4aabc04 +0x36f7a92f2b487 +0x0 +0x18c3c24f6b00d8 +0x12e611091f7a8 +0x1 +0x187e36881060c7 +0x7e7e7f2ee757a +0x4 +0x1ac019a39f8c90 +0x88917d28b66fb +0x2 +0x1228cfc3ca91fc +0x4ad0d31917b69 +0x1 +0x427da5b619c1f +0x1656953edea20d +0x60 +0x114b786896cd6a +0x7b699529350f2 +0x7 +0x1a0d820844a01 +0x60693b911279a +0x65985e052dfb5 +0x2 +0x1cbf7cf69ac3cd +0x1ece6be9d60866 +0xe7 +0x3915f1debd238 +0xd2f3e28c98665 +0xd +0x16ebe2c2fdec09 +0xaf789cfb69a1f +0x1 +0x1ac6b8c10f2e3e +0x1c6f10e2eb45b7 +0xc2 +0x1bed3e02c3af3f +0x8b8b9dc2db9d6 +0x2 +0x5e9bedbad73c1 +0x195d6fb0591729 +0x7b +0x1a47b1fd49a847 +0xfaa2753d0bb05 +0x6 +0x38e4ac6ee7320 +0x147ffd43ad9e9b +0xb0 +0x1a6445062aac41 +0x175423d17394bf +0x60 +0x13cb7541d28135 +0x130e84b878d969 +0x9c +0x1246a6fcb7db37 +0x9708e3731fb1c +0x6 +0xcdf28dd5db278 +0xc501b4ce3c71f +0x11 +0x1971e95a6f1a60 +0x128fb566b9b948 +0x77 +0x1941398265ac3f +0xb0ab95a5d3286 +0x3 +0x2d61ba89a8456 +0x203c35dbc3ab6 +0x0 +0x7a0d366ff68a8 +0x1a336953176e77 +0xc2 +0x14037c97804335 +0xf6db319afae45 +0x15 +0xea366d2d1c138 +0xf13eb3e3ee352 +0x2e +0x117f2068694a3e +0x16f9e1fc2fe8a4 +0x4e +0x159d1e5cc6e750 +0xa91d4f3713908 +0xf +0x154f4ae9d3d8b9 +0x3fd3a8eebc078 +0x2 +0xd75f7e3bd1b44 +0x10e5bade805fd5 +0x72 +0x90e7aca016e0a +0x1c513e7f92724f +0xc6 +0xa47cbf0e244c5 +0x1dc214260ccc9d +0x90 +0x9ce7e7edbc25f +0x1d5e6b5902bf93 +0x1e +0x16ec502e938462 +0xb62f8aa8f9807 +0xf +0x5c02d7c1c4e91 +0x106c71da47ebc3 +0x50 +0x2803d21935133 +0x3c49db4ea5892 +0x3 +0x925e620e3e267 +0xaf9b092588366 +0x9 +0x1d40df0df8f4f7 +0x9223c24074e3d +0x2 +0x1d74642eb3869c +0xde10b0dfc18b7 +0x11 +0x1306d5dcff00a2 +0x110f05adcd0fc5 +0x0 +0x1af021f8919c6a +0x1461a57777d146 +0x1aa172f9282709 +0xd7 +0x111be0bce0873b +0xf346baa46dc12 +0x24 +0x19195a6e5fd0 +0x11707c2a815508 +0x49e9199ed9f2f +0x17515ff3b1aba4 +0xbe +0x4561401c1d4e0 +0x144378c0cebb7b +0x588e21287346e +0x28a7a14d02bec +0x1 +0x1970c000f0b7c0 +0x19824ecbc09de4 +0x6d +0x1ad2c4b49e60a8 +0x15690be43997a6 +0x81 +0x632c4213ff932 +0xcaa4c41a522ee +0x11 +0x17afe7f3e8ad +0x10bff5b448e815 +0x1f1d9ca369a785 +0x16cc6e633c7a85 +0x79 +0x17e43429ace217 +0x1005c562101d17 +0xf +0xd9e9cfa7a369f +0x146d2304a26706 +0xd5 +0x1ac6c48314c18 +0x78ffda2da9856 +0x1410ad3620a1ee +0xa18aeb273fc02 +0x8 +0x197b8dbf5fd126 +0x1925ee05876c0b +0x50 +0xcfc6340cd48a3 +0x14b63b54becc26 +0xe0 +0x160aa8367346b5 +0x13d0d339e2ac28 +0xb9 +0xe2fd3466e7ba4 +0x8a0470d021e90 +0x5 +0x142d86eaee3d6e +0x9d80e704daa35 +0xe +0x6e4f1e996ca84 +0x1c035240e3c7c7 +0x5f +0xedbef722ad2d0 +0x163d2b264c381a +0x67 +0x8d255680270b1 +0xad38fcefd8974 +0xd +0x1f804859f86893 +0x1f612fc7d5d4bd +0xffffffffffffffff +0x16b46e2d780ffb +0x1b623ea51553f0 +0x0 +0x99cc3a347e987 +0x1627b2efc7dc8d +0x6 +0x4bd9a310f8f7d +0xf3d99d02ae680 +0xf5f1167b507eb +0x4fc0eb3ad53c6 +0x0 +0x1096e5b7c84fe8 +0x16499d866981f7 +0xd2 +0x52588f07958f9 +0x139eb8c91736fa +0x1fe805dc315df1 +0x14910122769d43 +0xf +0xd3978aac17970 +0x5c908b9b240f7 +0x2 +0x1c443aebb4fade +0x16415fa6e9b09a +0xc9 +0x160280b646e24f +0xb26abb65983ce +0x8 +0xc2197fe3ed14b +0x1aa7ce16c2a85b +0x30 +0xd8efd97f93ccb +0xb84433e7b0a0 +0x1 +0x1bb762c078d556 +0x5f4de5d84fe4a +0x2 +0x136bce5cd7e7fc +0x101cc0db0cc21d +0x9 +0x18c97eea23fbc0 +0x165cf3ddb260a1 +0xdb +0x118cd5b90ee902 +0xd3d5ee8ba2ff1 +0xb +0x12ecd46e6de3e2 +0x6078055c049c1 +0x2 +0x7322d50a83f9f +0x18bd431156ff5c +0xed +0x392625202687d +0xb4c3c2df757ed +0x15c1fe296f5e55 +0xe993e70f1bc52 +0x21 +0xe33862031eaac +0xc6fa4cf020725 +0x2 +0x1286d4e1f3c60c +0x1ba39f60c77eef +0x6f +0x1bd6215c4b0a6c +0x144a892ee897fb +0x72 +0x8a700737ee2a7 +0x962ab45d5cb5c +0x0 +0x1667eded932ad0 +0x10ae96c563f47a +0x19 +0x516f97de58d1c +0x18590430fd5b83 +0x193a24c8c6970e +0x1ec02bcaa8d2ff +0x96 +0x268c78e532145 +0x7c8a40c182f93 +0xfdaaf16f0d679 +0xfb801e8a9402 +0x0 +0x6d250deb92352 +0xc2c53bd19cc9f +0xf +0x1fda6be5f8c130 +0xf6e621aef9434 +0x32 +0xca348af3aa5d5 +0x1fd1dbc9323571 +0xffffffffffffffff +0x17e18a3ea2e7c7 +0x166597b307c6cb +0x1e +0x11b9da65956a8e +0x10925ba642d443 +0x2f +0x15b92a2e3d6d84 +0xfe9b5a2c52b03 +0x3b +0x19cabfdb29e432 +0xa9c7baa00e708 +0xd +0x4d9975e533373 +0xc30708ead0728 +0x1b0a6f83135a48 +0x1353518a54ded6 +0xa2 +0x1cf34cfb7913cd +0x187c8b47cb6806 +0x2d +0x16cf2f5b59c111 +0x7d21aff980de7 +0x3 +0x16aa25f29dea97 +0x188213b74ecae8 +0xe8 +0x1c722d75a18c51 +0x1aeb19bf91eace +0xd8 +0x121712c75a5209 +0x1bd8c29f8a2cd9 +0x15 +0x100a6dd42cc6e4 +0x1947e1851fe609 +0x8c +0x1304ba9d063a20 +0xb5802c9d1bdda +0x1 +0xbc1a0eeb81e50 +0x15f5f21b918d05 +0x6b +0x8c7c4a1666bc3 +0xf07da3a5930fc +0x14 +0x297de3b2c3a10 +0xf03dc133d00a6 +0xa6028de8314b8 +0x18d569e9c97c04 +0x4 +0x5ec51a44b641c +0x163dd9381d82d0 +0xe7 +0x12562a083a5c05 +0x1dcba25d8c24ee +0x8d +0x64f8fda09eff +0x193afd58fd7be0 +0x56203bd340af5 +0x19590174820598 +0xb6 +0x14f7815c57aad5 +0x41d1d40690071 +0x1 +0x7fa24ff3c605b +0x70f82cef78628 +0x6 +0x13dab276c0d4b7 +0xc348fb3794a05 +0xd +0xcf2688b6d2a9c +0x1cf5ae0f1cee5d +0xe1 +0x195b70271b2f6b +0xf1031b9afb6ff +0xc +0x20930cdc0251d +0xdfba9e3ab4c68 +0x1891312781f807 +0xfd6c8ea9238b0 +0x2e +0x1bc5d075572671 +0x19ab9a5f7fa0ab +0x5c +0xd93dfbff6bba7 +0x11f8a5d33ec9ea +0xcc +0xd0e6c47e9720b +0x108023489b239b +0x63 +0x133b5a87140ef3 +0x176a09cf86ea9d +0xf3 +0x331ba53954a18 +0x97a6b1cb8cc30 +0x71ef58e4c155a +0x122920aa68ec61 +0x1 +0x149e348dbdc127 +0x136703594ce65 +0x0 +0x1d82d79662f5e6 +0xf9c3ff38edef6 +0x26 +0x8255cda6d5a9a +0x144e63c167ae8d +0x2f +0x71e9b2859ac39 +0x156783058f8f9f +0xff +0x1035f06648df23 +0x13313c95ee34ea +0xb8 +0x1693ebf2706286 +0x5a5b8519e33d6 +0x2 +0xd732d8c785239 +0x18812ebe7c95bd +0xa4 +0x127afbdd42f8e +0xd15dc14f482fd +0xac6fab727f876 +0xf20d5ddcae23b +0x2b +0x632c38307fd84 +0xd8fc42f640837 +0x1b +0x1b35957e3cfca0 +0x150be39b14b389 +0x9a +0x8e60c0e866f +0x16d5a8e62b700 +0x19f45dcbc8467a +0x1 +0x19378dd8a28c8c +0x43fe50b80d6ee +0x2 +0x37796a628c6d9 +0x0 +0x887a14f0dd16b +0x4 +0x124e1119fb212a +0xae +0x82b23bf5b3f71 +0x3 +0x1da635b7f39bdd +0xfd +0xf5d315f62e83 +0x1 +0x1c905007123411 +0x70 +0xfba9e64c0bbb6 +0x24 +0x1295d845230140 +0x66 +0x1168e8af01a4ec +0x1e +0x1f9edfa31618d1 +0xffffffffffffffff +0xa42b2b8baddce +0x4 +0x1aef850d2dd66a +0x0 +0xae1baae97fead +0x8 +0xec76ef17b62c1 +0x16 +0x1687b791d23bd6 +0xe2 +0xd866a152df742 +0x19 +0xa9055f542365 +0x1 +0x1b9445b952e225 +0x63 +0x180b5c3d2bd763 +0x62 +0xed452b0297d69 +0x16 +0x9139490777a4e +0x7 +0xc39a84df9fe28 +0x1a +0x1a120397a686cc +0x93 +0x2b4d18d4f80c7 +0x0 +0x65606eadb8d9d +0x1 +0x4d0f63e3cbf43 +0x3 +0x1285d3cb894bdf +0x8c +0x565203c6efa87 +0x1 +0xdae82f747118f +0x3 +0x1bbe9f4cee05aa +0xca +0x15bffe0fc3882b +0x1e9 +0x7af2f2d48f9da +0x11d0c5410e36bb +0x6a +0x19c0bcd84291bc +0xb6b7516d926f2 +0x7 +0x109bbfe0a4ec91 +0x18c114986f8b7a +0x2c +0x1235b2d0b4f4b5 +0x9758733e7bc8c +0x6 +0xb0034b8869d18 +0xf8ed003c82202 +0x28 +0xc42646915a1ec +0xc38d7a22e60c3 +0xa +0x1b4c762d1e00ff +0x1819af89b47545 +0x33 +0x5bc1ca1a3aa0b +0x2ca543e3090af +0x0 +0x169049d530bba5 +0xac2983977fd65 +0xc +0x8a32ec742f457 +0x1970818ad4dad9 +0x5d +0x19560a443d8251 +0x10023514c1fb52 +0xb +0x72bd8c9fe3e8 +0x8493f2357180e +0x1 +0x18c00222872b1a +0x79fd16e41ee75 +0x6 +0x1bb861227f991 +0x6c0b6c951ab55 +0x2 +0x134a50e462df52 +0x19c3000594bd66 +0xf3 +0x54680fde721f0 +0x1936ed057de74a +0xe0 +0x70b8e7492871 +0x1fd54e0dd4644d +0xffffffffffffffff +0xbf1ecc8c130e2 +0x1091c21bfeb906 +0x63 +0x128bda315a5f9f +0x1d9cd8c0df7580 +0x1a +0x1a785d46f88aef +0x146d16e309dd41 +0xf7 +0x1ae05de4b1aaec +0xba7342f970fe8 +0x1 +0x1067d4d3726a73 +0xb6a4179fb9d9f +0x2 +0x10929e1deb16c1 +0xe910ca1762c48 +0x2f +0x168387030fd352 +0x10e2d3256cb43c +0x26 +0x16b77d61e9dc6 +0xbe40d7b7ef5e3 +0x7 +0x5b4838783e499 +0x1f200f55daf4c3 +0xd +0xa8d3c1355c56b +0x14634b7ad74c1b +0x5 +0x587b9d90a001c +0x14d1b642946b42 +0xa1 +0xdab383869543b +0x15cb469850d7db +0xe2 +0x1b76f49fc85598 +0x70548b19bf744 +0x4 +0x1492e54d8aac00 +0x12fddd0dccf337 +0x29 +0xde38f12ea7f41 +0x130400ccb4eba8 +0xd6 +0xbca57ac03307d +0x16a64fdf24c216 +0x1e87790a3705ed +0x92 +0xd3dd9814c8c1d +0x16ed9c226facab +0x95 +0x176afa708dc5b6 +0x5d4075764ffac +0x0 +0x2d2f451e071c3 +0xc4952dcb94a2a +0x11 +0x1c4401f23e2df1 +0x1c718a09373752 +0x28 +0x1a5c6f1901259e +0x1d85da212a3aa7 +0x24 +0x638c61019e7bb +0xa25077aafc396 +0xc +0xb20d92de992b7 +0x7c3e46604748c +0x7 +0x1a443a1a200907 +0x201ab5930917e +0x0 +0x172a75d739e6c9 +0x1410fd2a8282be +0x40 +0x1ef0db5101073e +0x327ba9baeaca0 +0x1 +0x1bcdfbbcb2dbe4 +0x1ffd2cf00d905b +0xffffffffffffffff +0x191392c85c3e81 +0x93f89341a53cf +0x4 +0x113bc0b829b6d7 +0x1daeb8c78335d2 +0x14 +0x35a7ac45f57f6 +0xaf4dfc7c4bf48 +0x0 +0x42f3cf9c78236 +0x13e513ff18ca17 +0xbf +0xa6940b3919ba4 +0x17c1fa7731789a +0xb3 +0x1c1b65d50c5700 +0x144558411771a6 +0x8a +0x71fb0a5d0f81d +0x1b23f239d3858c +0xf3 +0x1a048164d551e1 +0x1984a191379811 +0x53 +0xafca287b14b6c +0x2a0314397b72c +0x0 +0x1016db6152d64f +0xc73db90d441a6 +0x10 +0x8a452f61a35b5 +0x611235a9c05d2 +0x0 +0x187fd94f61303 +0x1d69b48765728 +0x0 +0x145a97dcc28b98 +0x1bb9a631b268c1 +0x56 +0x191001447d19c8 +0x98ddcf9eabef5 +0xa +0xfc283002f839e +0x3aaee89a722d +0x0 +0x1d1cad86b2cb87 +0x134857ee695cf1 +0xf7 +0x1133a9118a4332 +0x17a1519bbbeb18 +0x42 +0x1d521436d76406 +0x5f83f53c8f3c0 +0x3 +0xbe5646d870040 +0x144f62fcfe860d +0xb2 +0x1178d5e27e620 +0x341e5d3c7e0d8 +0x0 +0xbde63a94b4208 +0x782e3b99e0625 +0x1 +0x178a44e9a5371e +0x199b71cffad597 +0x13b786b10329d +0x1 +0x59b0eba36e696 +0x1dfb5949de384d +0xe6 +0x17ae2b7b2b5917 +0x106ba4e5bbda14 +0x3f +0x85a5615b67245 +0x1876aaec35e076 +0x85 +0x14cf1af612ed85 +0x16f2edf05bf51d +0xde +0xfc6fcb8123dd3 +0x14b51c5e1d876e +0x95 +0x107d741d9a07bd +0x1a26764ef8e178 +0xac +0x2b402a3dd365e +0x190fee4f53436b +0xc81258ac2a12a +0x1ef13413d0cab5 +0xb4 +0x11aaa11cd607f3 +0x16c17882fbe69 +0x1 +0x4167906614276 +0x109dbf18f706b6 +0x1008c97a9e0d24 +0xab648ad97f728 +0x4 +0x10d88669ab6d76 +0x95edd51c3d4f5 +0x6 +0x9aec6882135ba +0xd3a2161f8cb4c +0x0 +0xc42b54a00d45f +0x1384b91ffc0cbc +0xef +0x127bf92a53f707 +0x31bf87f0ed84e +0x0 +0x1592f5f11c695 +0xed0728cd64563 +0x1fd03d44a4f12 +0xbdb3aba0df3ca +0xa +0xbd2be4c8369a1 +0x1e5a919773e6c0 +0xcd +0x1da9f0d18f15e6 +0xa7e77a87d92a3 +0xf +0x29cebfc7a3d0 +0x10e1d23f2c89ce +0xbcb345d815093 +0xdc2de931609b3 +0x5 +0x1f983539ae62e8 +0x12c420e21ac74f +0x85 +0x181d3101b3120d +0x22d2b70faf5a4 +0x1 +0x14c333281f2eac +0x1fe4199eba3c1e +0xffffffffffffffff +0x7dd357ec181c0 +0x6c09194404b29 +0x3 +0xc5dd4981df12d +0xc791483d85e6b +0x1e +0x1aa3be4e5026ca +0x95f454adf8ff4 +0x5 +0x4f99013afd124 +0x3c089e290f695 +0xe11b89972286f +0x1 +0xdcd9fa5e2f605 +0x1022c0afd4ac65 +0x0 +0x1a5ffdf796072b +0xfd +0x1fde10723c6e32 +0xffffffffffffffff +0xcd59c25eb2ba +0x0 +0x1efe54e8f5617f +0x93 +0x19cf5c1557c031 +0xc6 +0xb752ee454b594 +0xa +0xdc42946093e3d +0x1e +0x11e99f665efc99 +0x1d +0x332fddacc7cc9 +0x1 +0x1dd7355fa12e3f +0x83 +0x1a8cdf0c60f1f3 +0x9 +0x16459d68e6567 +0x1 +0x59f118a225018 +0x1 +0x6a33ba8086752 +0x2 +0x17369f5154c95e +0xe0 +0x1965da1a22c98c +0x9d +0x78a58b4281232 +0x5 +0x1ae5b9c896bf7d +0xe8 +0x25529269d52f9 +0x1 +0x17f3fce923b24b +0x28 +0x1c0536a421183f +0x40 +0x173ed67cd204e5 +0x4f +0x9960c9fd72585 +0x9 +0x134df508a438d8 +0xd0 +0x30262238481cd +0x0 +0x1922b050e321a9 +0x62 +0x90610d53e4106 +0x4 +0xb0d3071c201ca +0xc +0x1623ef1d07b96c +0xa6 +0xc3c5d04cc8392 +0x1a +0x4bdfc82d2e8f2 +0x1 +0x1f706caf0e59aa +0xffffffffffffffff +0x97e36f6f93fab +0x19964f3348a166 +0xbb +0x1834ccda8d146e +0xc23c765aade22 +0x2 +0x9c9febe94ce2e +0x1d5e742b2013be +0x8e +0x173e3289f8655c +0x148669fc79fd35 +0x88 +0x145e8e559f4227 +0x1c595019f44e0d +0x4a +0x8d7022253b6db +0x1df90ebe474ec +0x0 +0x168f7c0d932f78 +0x1476a42c96ce5 +0x0 +0xe2c1c8c79a88f +0x943ae34d9152f +0x4 +0x6726aa0a35457 +0xd66608d9f3224 +0x5 +0xb607d515b6838 +0x10a98c83fbd9b9 +0x12 +0xf4bf1bf53146f +0x10c97deab57294 +0x38 +0xb139e9a2213c0 +0x14efcfeb36ef82 +0x91 +0x2e02b3ecce20f +0x9ed6b1c858f37 +0xd +0x1b63642063da74 +0x1ee38be4ab0435 +0x63 +0x3d31739f6eb32 +0x1beb46e979fbcb +0x57 +0xf922fdba99092 +0x330cb4c061848 +0x1 +0x468f88864ae +0x39e349f3afd70 +0x3 +0x18850f99be3080 +0x5bc5b454618b9 +0x3 +0x3774591899466 +0x24513447508a6 +0x0 +0x2820266474d2b +0xdd47969cc11ee +0x1b +0xe738fba61e2c4 +0x1fc6a9ec998a1f +0xffffffffffffffff +0x6189d177ec004 +0x1c7026da794b84 +0xe6 +0xa59d5374e5523 +0x7a2c8d131c9c0 +0x3 +0x1dde7e9650c1f0 +0x1bc42078de8470 +0xf3 +0x1ad1339471a48a +0xd2185d098bb72 +0x11 +0xd6899ae8894b5 +0x15de649d20be9c +0x38 +0x2bcb38eea0e1e +0x1419ef3223a7e1 +0x2d +0x98c303840fea1 +0x14c20cd79f0905 +0x62 +0x14298b9c010cb0 +0x88d3d9a9704b5 +0x2 +0xffd80bff95eb4 +0x2267e8ed2dc06 +0x0 +0x161d1f34969829 +0x1187141738c413 +0x50 +0x1d12fc73b2bb20 +0x4b19ccc734ba5 +0x1 +0x1d95698458e6df +0xf2f5d784372c9 +0xedb2ad2c23869 +0x14 +0xd9126642bdb9 +0x114f27801db682 +0x29 +0x52162129402de +0xe710166093b0 +0x0 +0x152d11d54d360 +0x14589cbfcf352d +0x7 +0x1e6d18002c0a2d +0x106bf61e83bbae +0x1c +0xd7107ef7909e0 +0x14ad163913b5ef +0x19 +0xa0b8ef8aaad1 +0x1b9b7ceee1852d +0x9d +0x10685cbbd0f337 +0xaa1c563668dc2 +0x5 +0x1b0e1986c5ed4c +0x10fa7be9c812fb +0x6a +0x11e88d8eb84a68 +0xdb65bcbcaa749 +0xa +0xe4dad3b8e5307 +0x40f1c785adcfe +0x0 +0x130eef7bb854f +0x19d4daf9b50245 +0x38 +0x1b2346ddae9d09 +0x38b2974b0d3c2 +0x1 +0x4dadadfb29ada +0x8e047626c0ece +0x4 +0xe8e28f710d772 +0x131a9222968a1c +0x9a +0x1a2779712d2d74 +0x352d82dccff7b +0x0 +0x1c403cd6b193f +0x1ced86dd736a38 +0x86 +0x1313ecf891359e +0xa179778641212 +0xd +0x12ab9ffd8cc91b +0xf26c4f6e7e973 +0xd +0xfc774e926d935 +0x34359b7884d39 +0x0 +0x663ffaf0e95c8 +0x23440ddbc611f +0x1 +0x97668153fa7de +0x1eca82eec9cb28 +0xda +0xb4156d31788e0 +0x75106864a05d2 +0x6 +0x2d31023dbba53 +0xf22f1e83c7c6 +0x1 +0x1cc605ded608e6 +0x1c9e96cd8688bc +0x2c +0x194007b61dc4ea +0x886067d0ef53c +0x6 +0x88c22d07915ef +0x17689c1c65669b +0x8f +0xa59e0f43f594e +0x1592da76a07f37 +0xe9 +0x6c28677a71aa0 +0x54e9dba971314 +0x2 +0x28dc7f285e20b +0xf136a85d2430f +0x33 +0x5b6186752e640 +0x56afbb3eeb687 +0x1 +0xe72e3574c3687 +0xfb7d488444340 +0x12 +0xbbd2f2724511 +0x12710cd4ed7897 +0x0 +0x74c95836ae87d +0x1bb34575d101bc +0x36c210c618d56 +0x0 +0x8c21b9ebada4b +0x181f6c50ab412a +0xfb +0x1e546f31a9429a +0x238f5b0aa8e5d +0x0 +0x16065a4bc09f4c +0xfaf6cf3c70808 +0x18 +0x1aab581f9d994d +0x5f5dbbde73f17 +0x2 +0x68365b997a6c6 +0x18634f16f62032 +0xe2 +0x1cb7687ff58026 +0xeedf56a62662 +0x1 +0x160a143ef3c4b8 +0x1f8f68d58f3783 +0xffffffffffffffff +0xae46758a5ef81 +0x51de08c975542 +0x1 +0x1fdb20900ea05c +0xde2dcbe554c9f +0x14 +0x45d249e00832e +0xe2ae3a7c44b2c +0x184c88acf4d5a6 +0x87b86c8d93cae +0x1 +0x2ec46c615bf3d +0xed6ee5cbcd345 +0x1ce8c878f42618 +0x10ed160094952f +0x73 +0x1b52e921266c97 +0x2ed24ebffc76c +0x1 +0xb34123fcc2001 +0x1aac15ba20bb55 +0x6e +0x15e6bb9bffe221 +0x215a9a114dbd2 +0x1 +0x171110f755bbce +0x106c6e182524ac +0x4 +0xb3276dfb27f62 +0x11aff3dc4b1a11 +0x3c +0x17e8b99d182078 +0x13f114f2c356cc +0xb3 +0x6eafa210aea30 +0x7c21654dacbf0 +0x6 +0x175c78a48ea573 +0xe8b550b6417af +0x2e +0x10a32bee76aaeb +0xdc4fed4e66729 +0x19 +0x10df6ec148ebce +0x5b67af9c0e499 +0x1 +0x276fb11a78c62 +0x129716e676b3b2 +0x1d18fec4a87c2a +0x7186090716982 +0x1 +0x1b859667a3f31c +0x15b940979740bd +0x56 +0x98b8f4e4cd029 +0x5d1e839854eb2 +0x3 +0xa26fb25544b2b +0xee765c2e06786 +0x3b +0x856b7996b196f +0x6af3faaf5aacb +0x0 +0x1d2281f94863ca +0x191d5d2fcb2540 +0x81 +0x6825708d7a594 +0x629d8a0a0937f +0x3 +0x3f4ea06fa6b62 +0xdfc1a5724ef4f +0xfcaa099548825 +0x1677f38bf648c9 +0xdd +0x106af78cbea39 +0xe386accb00f44 +0xf54f033abbdb1 +0x12a8ffde9156a4 +0xd1 +0x8d61c12a440dd +0x322a00695dd10 +0x0 +0x1934410ecf7819 +0x16a4a99b5f22a1 +0xf5 +0x28654f7b459ca +0x17e79c85cbd22b +0x1253ee3ec90673 +0x8ff6121eafcdb +0x2 +0x1ad0fa630d970e +0x1b1f01d018849a +0x3c +0x17c81197d98262 +0x1a38215da055a9 +0x70 +0xcd36ba681cf32 +0xf35b028effe27 +0x15 +0x1910b29941fa7 +0xccbf2bcd71d49 +0x1229fb82e7d49f +0x16907873c3a44c +0xa +0xaf597200bd6ab +0xba614f63e39f0 +0xc +0x1bbdd3fa259d8b +0x181813607d20bc +0xe1 +0x10709e5d77b4a8 +0xfcad23b5f95fd +0x17 +0x12e2464e5e25d0 +0x12895055eedd9a +0x36 +0xbd53828edfbea +0x9fdc9fa63f55a +0x7 +0x3b32b2765d073 +0x131b55f39a01ef +0x78634f6d1ae07 +0x114e5778a4cd70 +0x20 +0x1e41ea6a035fa9 +0x2a091e05136f5 +0x0 +0x14a7c4f0508627 +0x59b2084262b5e +0x0 +0x1eb5d5f28db32a +0xe28e19b209119 +0x10 +0xd9c47ed2f3786 +0x14d684e90dff04 +0x83 +0xf407ba2440d73 +0x5de196249d4b +0x1 +0x9535828dfc9e1 +0x109f9784f7a752 +0x13 +0x1ea5488471fcc0 +0x6dbf570656599 +0x2 +0x174a02c6cc3013 +0x8e103afd0f28 +0x1 +0xb9496964c33c4 +0x1427d0e4aa3701 +0x8f +0xa47786cebee1f +0x13a16a7721267e +0xc5 +0x7de254e65ea28 +0x4d58ab76d350a +0x1 +0x1053fa5943ff31 +0x18dc276656b4ac +0x2d +0xd7f5b303bffa8 +0x6eaa639834114 +0x7 +0x115112b7932fa0 +0x6108f09e9b333 +0x2 +0x12293df2808e2f +0x10dd66fb126e40 +0x7d +0x17c0492456ed59 +0x1ac3083397d1a6 +0x2c +0x100108b9d187d4 +0x1eff0fde69fc41 +0xa9 +0x15cce3c4a0ee18 +0x85d3caac3c2cf +0x6 +0x13e6700bf871d7 +0x155fc376051703 +0x75 +0x44b344d8f40fc +0x24c0510ece6ed +0xf440416cfba33 +0x0 +0xcf622ee5552d3 +0xac5231cfcc38a +0x9 +0x1ff86866edcc44 +0xffffffffffffffff +0xd4011ebaead64 +0xc +0x2e0563786557f +0x0 +0x1d7c6b6eee4f65 +0x88 +0x3d46aa27eb527 +0x3 +0x19f366ec84f1fd +0xf7 +0xe0391b01c5583 +0xd +0x17ac1595ea4bbc +0xdb +0x15f46f552f0e6d +0x29 +0x5388d02053e13 +0x2 +0x61bb4740d37ea +0x1 +0x164c987d83ddf8 +0xb2 +0x1e33b7f580c2c8 +0x13 +0x218b75a594671 +0x1 +0x1fb852f25bd50a +0xffffffffffffffff +0x6fcb33139c621 +0x5 +0x7c913c0f4cd26 +0x2 +0xdae5c0afad4aa +0x17 +0x141fc2bacbad79 +0xea +0x1cf991d501da82 +0x29 +0x1e07d5551365ea +0xda +0x13290e7ae09be4 +0xde +0x42d0edec634b8 +0x0 +0x1bde0ce1d630f3 +0xf5 +0x18aaa87997fb34 +0xa3 +0x1e4209dd35247f +0xb6 +0xc8b710b21d2c8 +0x9 +0xb7a1d19ddcd54 +0xf +0xcf5da7e8c7d31 +0xd +0xd5e1c68366c74 +0x1b +0xde6ff3f85fd18 +0x16 +0xd5d1abe203cf1 +0xa +0x6d93b17cfae6 +0x120a1d3fe376cb +0x6d +0x1e96c25660fccb +0x11a00c213daf7c +0x1d +0x1c69c20bf3bda4 +0x1b514395695cac +0x6a +0x132679d90948c9 +0xbe6f230434275 +0x6 +0x12bd63f3eadd9b +0x17ec0869c8d508 +0xa7 +0x11123f192c51af +0x9eed03cc442fb +0x2 +0x620cff5821c2b +0xc04bf5bcaefd1 +0xc +0x161d910bb9c5a8 +0x1aac3fa69c7853 +0xcf +0x76aa3293237d6 +0xb986d79334ad0 +0xe +0x15875e1ad58f89 +0x6c2151a86df33 +0x5 +0x5ab39a1208e91 +0x17e5a1a1701332 +0x21 +0xfc5939901c90b +0x11045f42412ab4 +0x64 +0x1f23b4e2bea1c1 +0x1bcc008dfaa4d3 +0x5e +0x11876734765623 +0x5f52371ef20f8 +0x2 +0x189c35e48d44d8 +0xe43750f7c8caa +0x0 +0x1ff579b8b7a6e1 +0x110a2b1762bf8f +0x7d +0x1f8820dbd04900 +0x15c3c41c7101c7 +0x13 +0x12b7263d4dfcc8 +0xfb9c4c66e04b5 +0x20 +0xa1e88e809b8fd +0x16ffb70ea5a609 +0x62 +0x5af49e5cf4ab4 +0xdfc37f768d283 +0x18 +0x1e2022fab06a0c +0x1155ee259e6d90 +0x1b +0x14b058c26d7f31 +0x176b95a8abd3a +0x0 +0xb3735fa7852e9 +0x8000505998d17 +0x2 +0xb924fa0480fba +0x198852b47a79fe +0xab +0xce1b2329acd2f +0x159e02bc87d89a +0x3 +0x198818fe263dd4 +0x1730e53f7cc427 +0x61 +0x9c52cec6b057a +0x1a6a15fd0722 +0x0 +0x1d2387856fe5a8 +0xc92816f075e50 +0x0 +0xebdf3f0e78c09 +0x1763c485c135b7 +0xfa +0xaeda213958a76 +0x5d680683a3287 +0x3 +0xf9fa8451aa0a7 +0x1963ca861a15b9 +0x5d +0x1496b6b5063b93 +0x1e196a018da08b +0x1a +0x1b257be5db55bf +0x156f1a0ee8d4f8 +0x1212da645cff23 +0x59 +0xf8c664dfe135f +0x30813bf1923fc +0x1 +0x76bb1bf1ea284 +0x1688c6c9497f22 +0xe7 +0x17c5acc0569bce +0x101c977a6e9b1 +0x0 +0x5dd4e9d0c3441 +0x2830874e55f93 +0x1 +0x8dcda16ca1071 +0x1cec5faa9fcaa7 +0x93 +0x16e2e7b522ec1a +0xf60f78791776c +0x2a +0x17ab673789b661 +0x13c028144556b4 +0x1a +0x1f04c2dcf292af +0x4c435f638f360 +0x2 +0x1cb902290bd09f +0x182a43d84c4576 +0x8d +0x4c33fb3ff01a3 +0x1c57b69be72da4 +0x36 +0x1f30b6d26b6e05 +0x13b88f429f1909 +0x95 +0xfd07a6b45ac1f +0x19894a7ec64499 +0xeb +0x1b35c37f5198e0 +0xee49d7a0dca1a +0x29 +0x17ce4f3b71eedf +0x170a1f1b3896f8 +0xbe +0x98d7e501e6b49 +0x2e0dec257189b +0x1 +0x81ac7e7877bd +0x877b287d8d6b9 +0x2 +0x198c52b8836b03 +0xabe7d9f931888 +0x9 +0x14c45351854a +0x123f05aa45dbd1 +0x68 +0x1f9e7c00f99f1f +0x19463935f7c1ba +0x5c +0xdfbe12daf89b5 +0x105f28dc036063 +0x5c +0x18cfb54ca1abb1 +0x6c1872d41375d +0x1 +0x19293fc4f66219 +0xd2b746a63aa75 +0x16 +0x11d54b0de9914b +0xf60259c00e70e +0x3e +0x1709e339579b6e +0x6a7359f74953e +0x3 +0x1fc3980e3b9f09 +0x3afe12d4f9a43 +0x2 +0x1307f9667d800 +0x929692b48e941 +0x0 +0x152abdffb3cb20 +0x1b1e7d0a396dbd +0xb8 +0xd0d2d31268177 +0x10d50d0b062e73 +0x2a +0x1fe00e4d2ac539 +0x1ee011bb61e10c +0x74 +0x68b0aff913499 +0xef573a09bb14b +0x3f +0x29514ffc81c11 +0x1164e51cf4df62 +0xa +0x2186a2250f7ab +0x7e94364c458c +0x0 +0x577bfaa362a0f +0x15f5ade56f03e7 +0x18ef00adba5486 +0x2 +0x19609921457cce +0x1891ae161acbc0 +0x9 +0x1bc6da72a92adf +0x178019f9964e01 +0x6f +0x86fcd7d6a0a29 +0x14d1c2e5109d5f +0xd3 +0x17ba5272838d4b +0x17402dc88d735e +0xfb +0x18f9f48eae7e68 +0x1bdbb9c81b134a +0x84 +0xf21f8d7cf71e3 +0x3c851a18dccbc +0x1 +0x9c010f0a0eb16 +0x92a9601ce659d +0x7 +0x87aff01a614b4 +0x1f3f316c8471ce +0xffffffffffffffff +0x1b83008349c08c +0x8dfc7324e55e4 +0x0 +0xecb0741e9a684 +0x1978a4eaa86aa6 +0x15 +0xe12f340de0d2e +0xca0a11ba19112 +0x3 +0x197e7247de96bd +0xe60d40cd589be +0x30 +0x832f714a3b574 +0x1c528860ada021 +0x84 +0x5f85e69bf15ff +0x199009b2c1d4a3 +0xac +0xd3c539992c37c +0x11826e775c34c6 +0x7f +0x1f9b5d2410b950 +0x114c9889971056 +0x18 +0x1ff742dfff124a +0x1f21d9123ba244 +0xb9 +0x6500693939b93 +0x93702dfce02a1 +0x6 +0xca8d0b2498396 +0xd6f6930d4b1be +0x11 +0x8a3f81fadf1b6 +0x1dc4ff8fef311c +0x35 +0x31affb00ed219 +0x9e24763316509 +0x1006af5bc8c002 +0x126dec00c4bdce +0x5f +0x102e2ff5ca394e +0x109aceeb86126b +0x3f +0xfecc00a3641fc +0xd3b1e53149ef7 +0x3 +0x27fa851efb241 +0xf1e97a80650b +0x1018d23975f0e2 +0x0 +0x95f7285abd4be +0x1fc7e0d5d1f744 +0xffffffffffffffff +0x123f621b15f4b4 +0x47 +0x1e8e7b9b7222ad +0x5b +0x164dbbed590969 +0x47 +0x183e4d1778e0e1 +0x41 +0x136220fb50882e +0xca +0xf50a84d19dccb +0x9 +0x100319d4b31c21 +0xc +0x1daa3d3c77fae0 +0x2 +0x1d9d0a6fb55fea +0x4b +0x1b0df3d3c07c0e +0x35 +0x18e97d808e8846 +0xac +0xdf03774a7a892 +0x1c +0x738cd395df7a5 +0x3 +0x6982b3f79e106 +0x1 +0x21eb3272acdf9 +0x0 +0x12b94ddc1835fd +0x24 +0x3ed47415fccd +0x1 +0x1cefe91f331126 +0xdc +0x1bd4a137d32ae2 +0x2b +0x1427b1c6960c01 +0xa1 +0x15198ad524aea9 +0xe +0x4ce6f65663b38 +0x3 +0x1ea549d81d3601 +0xe7 +0x177bfeb927dc58 +0xa4 +0x1e647765c53570 +0x8b +0xd9660a78196de +0x1b +0x1ad8c8c80f1a9e +0x45 +0x14f91ea9905544 +0xa4 +0x1b3d728fa473c6 +0xe0 +0x2d649c3e75608 +0x0 +0x933e8e649fda2 +0x1 +0x75407dfaac808 +0x1 +0x12bbf7c59d48ea +0x19a323abfecb1 +0x0 +0xaa8a6ce1d611f +0xd19407364bc99 +0x18 +0x92891c3ad4d58 +0xac604973c70b6 +0x3 +0x366db017d7b6b +0x1d7769a4f03c47 +0x95 +0xeddf9c6aa7d0d +0x15dd7490eae764 +0x43 +0x112aa326a37a7a +0x11a81328f74643 +0xc +0x1441504b5115b4 +0x10ab4524c6b75d +0x6b +0x182f5faff09e2f +0x537cebea30a91 +0x1 +0xc086d041cb11d +0x16908489c55354 +0xe4 +0x425dd3a8413b6 +0x129ce39d678acf +0x8b +0xe797d88c13392 +0x1e96efcd343765 +0xf0 +0x4cda66007d4be +0x140ada4bc63721 +0xca +0x1c5c6793d1702a +0xb2f45cde2005c +0x3 +0xa2d2fda0137a9 +0x14ac21a7356c11 +0xc5 +0x1604e74803e3ff +0x125ab87300e52b +0x7a +0x5e80619a4a39e +0xf98f22d6f5c36 +0x38 +0x1d713298126b13 +0x54e74fa965a +0x1 +0x10a5e8b4b8298a +0xbb3f875ea68be +0xe +0x19f05d70bc1a88 +0xef1718000a423 +0xe +0x1d996e099e6a64 +0x110872087166d3 +0x60 +0x297c46ee561f1 +0x463c100a9b496 +0x2 +0x16ca1e67f8fce2 +0x1b158dc9ec90e2 +0xe8 +0x1163e71439d1ff +0x112e3ba4b39c8b +0x61 +0x1f7ac74f0b997b +0x164cb0ad15ee6c +0x5d +0x1d07f7db395e49 +0x134de45e0c8cd4 +0x2c +0x1b3ce2e1b659dc +0x1e3e2baf8dccf0 +0x1d +0xc54027a4600fd +0x140f679240c91c +0x37 +0x1cfc7c9f80cb9e +0xe10f4085c46b5 +0x18 +0x4363ab1e0cdb9 +0x137d86b55a3b6e +0x18 +0x424c6243ef453 +0x10c98cf6c615d6 +0x5f +0x1c6ad7dfc86dcd +0x1b4fbdaf171e15 +0x26 +0x1a1ceb3c6dfd58 +0x1e02ff5063f05d +0x7a +0xe15699722f011 +0xcd77b37ec8da5 +0x1a9a9be1e6515b +0xb3 +0x1b23ced1694330 +0x12a1bdcb0bfdc2 +0xc2 +0xf9cb5c8782822 +0x199342481f7313 +0x11 +0x14dfa93aae10ee +0xed66f823aa5c +0x0 +0x1f15bbd0e86340 +0xd33e6099b30ef +0x1f +0x4229b6dabb5ad +0x19d8b29a84635f +0x7c +0x14bf036885ac69 +0x36ecfefead952 +0x1 +0x12dcd1592a2660 +0x2186c0b24ff62 +0x0 +0x1d94438488830f +0x114cb67eb70f6f +0x13 +0x11de12a6d04d56 +0x6af8217013b13 +0x3 +0x39cdf7d986d57 +0x1ac528e6d06252 +0x29 +0x1f3b0eded45863 +0x18814479769355 +0x94 +0x1337eb54537ce8 +0x53617fb9698a9 +0x0 +0xd119f5a31b485 +0xc6eac23df1131 +0xe +0x1dc35acd1d6555 +0x1bc8aced35c2f7 +0x4 +0x30eac6e05522a +0x1e6867b153d0ef +0xca +0xb98f2e221b071 +0x7c8accb11b5c0 +0x0 +0xf4024b9c9187e +0x7f090e7d149c8 +0x4 +0xa36e5b73d4ab7 +0x897831fedaeb8 +0x0 +0x38baa373a7425 +0x17404b1c889e6 +0x0 +0x278e2a6e97c +0x1d6cc9f7a82f28 +0xdb +0x10e0a90d10f268 +0x40303de075797 +0x3 +0x1bf68edd1c90ee +0xd14150c4a1911 +0x1f +0x9301be8605ffa +0x10bac2c6bec6f8 +0x10 +0xee49ac583f611 +0xf7f17536417e2 +0x29 +0x1167e4f2adf229 +0x574451c1c8e71 +0x1 +0x18a8e792a030a4 +0x685681cf50308 +0x0 +0x104adacf485fe8 +0x123e79625bad81 +0x24 +0x247128542474 +0xc998773b34db9 +0x1f +0x140785b12572c1 +0xc83b4c457dcdb +0x10 +0x9eba95ed097e9 +0x10ee922b87635f +0x25 +0x1707721c012825 +0x12b76a43afec79 +0x1c +0x11e117130a4e5f +0x1f4be1be66e9dd +0xffffffffffffffff +0x171aa68165c8d3 +0x1e05c8be8a96bf +0x11141faf41a918 +0x55 +0xf4697e287b1ab +0x5931c9364cac5 +0x1 +0x101a0100c835e5 +0xa3cd40d451797 +0x4 +0x16b6be434d012b +0x3c41a466fbfbe +0x2 +0xb1a0942c46f2d +0x1ecd4818c9bb69 +0x81 +0x19d22e8a60d1b9 +0x648def5ac3e53 +0x1 +0x23f32232e9b1b +0xe807abf86ae1c +0x4a253b897c7e +0x14d4460ad5dfe5 +0xc0 +0x1ca14bf3346b51 +0x149698546ed8bc +0xa0 +0x1c5c939ee34e3f +0x9d3576f64be61 +0x9 +0x19593d71bf35eb +0x62739305ab371 +0x1 +0x14b858e5bbde2b +0x1b4b0193862931 +0xe4 +0x82a57bcf9dda4 +0x14b403e1ef05fe +0x83 +0x1849cfb25013f5 +0x493a64017238d +0x1 +0x1adfd975a9e83b +0x10ede57163792f +0x7f +0x3cf77b53e9714 +0x18fd429861435f +0x3004f383156ae +0x109b3c7574ee25 +0x23 +0x7e3231ffaccf8 +0x182115e2347be2 +0xaa +0x11ce576371d864 +0x128a8ca9229f9e +0x7e +0x8dd4381da27cd +0x1731e715ef74b0 +0x51 +0xd2ee48d0bef00 +0x9fec99858d5db +0xb +0xe8e001272834d +0x1a0197e43399d9 +0xe9 +0x1045d7c1f9ff84 +0x14c07de68bba1e +0x77 +0x5cb34216da7bb +0x16ff6647626286 +0x1e +0x15e8e6f9f86f91 +0x7e2eb6cf544a6 +0x4 +0x474c5dca526f1 +0x9b7d37ea760dd +0x22fa5095dd58 +0x1d464009f36d4e +0xa7 +0x158da5ce8b8b3a +0x366e39b374c06 +0x1 +0x11b710967a7d78 +0x39a51b09f60be +0x1 +0x19968a748a7fe2 +0x51cf9af96b8e9 +0x1 +0x13c4c4e5a96849 +0x15a73b72d56ea8 +0x90 +0x46a08d1b25646 +0xe2bae09688bb1 +0x2096d681970a5 +0x1fac0db8f96ea4 +0xffffffffffffffff +0x652d1ccbdd7d +0x18dcd3b0ba1476 +0x9a1fbcbd661 +0x47bc5cf48b6e +0x1 +0x4cd6ba48080e2 +0x9ea405381cd06 +0xec68a694b7224 +0xdf738eabfe831 +0x6 +0x19b9c8d24df4a1 +0x12189b405945dd +0x32 +0x113584f4b13695 +0x3cce0a5f25538 +0x0 +0x1fc8a4fc1388a3 +0x1f5cb230b3c140 +0xffffffffffffffff +0x8c58df04f54df +0x13d811eddd5da3 +0x6d +0x245a0e277c767 +0x1d7896892812d +0x1f29298ecb8a69 +0x0 +0x1a9a66229c50cf +0x2d5d977721f6d +0x0 +0x2579abb1b343c +0xc21e946a15d3e +0x17 +0x1644cad7dedfbc +0x1e40f4a410ad8 +0x0 +0xc235f1be9968c +0xdf6dabbd1a5ce +0x7 +0x71acc44accef0 +0x11529b08e19153 +0x2e +0x2e1a0d50da31a +0xa1ac3735e8a6f +0x0 +0x923a423918660 +0xc84d318c688e5 +0xa +0x64ff3997ee698 +0x126ab30f85e375 +0xe4 +0x4c13c0e359c6e +0x680a68137d653 +0x1 +0x3f246913b0c08 +0x646ec9597b9bd +0x0 +0xaac4f40cd938c +0x847644708c371 +0x2 +0x11d64582e14648 +0x840254ecc72fc +0x4 +0x1504698bf53135 +0x7fcdd33716fba +0x3 +0x1328fdc730771f +0xb772e0b38f14b +0x8 +0x1750f6280d8891 +0x18a0bd4e28d4de +0xac +0xd03378a82dac2 +0x195b42d78bb5fa +0x65 +0x1ef5b26e4dbb87 +0x8610640b693b6 +0x0 +0x196203ef39df56 +0x1bbff52c81caae +0xcf +0xee426bb70b0f5 +0x19d5996ea3722f +0xf5 +0x96af7a77a8337 +0x555c64fc4dcff +0x0 +0x1ee0a382e7820 +0x1cf623f7dd8727 +0x7b +0x18f23cdf2d9263 +0x569cc293aa716 +0x0 +0x177d3932699674 +0x4d62e3ccff148 +0x0 +0x3b9354757c2c +0x1f61c5ea150cc2 +0xffffffffffffffff +0x13fbc28cb1bcff +0x19bc1d502f9ccb +0xcc +0x1f8ac4f44fbd7e +0x63cf4c23d301f +0x2 +0x1ba4f8a4303858 +0x88e19501680db +0x7 +0x381bb913680fb +0xd0fad0767f309 +0x11 +0x147ae02ee92956 +0xf382ee19af3d8 +0x19 +0x18b7b2a9a18f64 +0x4a9f737dc8d93 +0x2 +0x120d9735382806 +0x14fc153b703f51 +0x67 +0x22b7f161df57f +0x13d2c9c18da0e7 +0x53 +0x131b51464d3a17 +0xa546500a8890b +0x7 +0x1ea7a5123640cd +0x9828c4d8bfc1 +0x7279873df24de +0x5ae202388ef80 +0x0 +0x0 \ No newline at end of file diff --git a/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172046-1612197.fail b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172046-1612197.fail new file mode 100644 index 000000000..8ffa39433 --- /dev/null +++ b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172046-1612197.fail @@ -0,0 +1,2064 @@ +# 2024/11/11 17:20:46.887411 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw genesis: asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x5, 0x20, 0x44, 0x2f, 0x4, 0xae, 0x60, 0x4, 0x4d, 0x1, 0x73, 0x54, 0x3c, 0x1, 0x5, 0x1, 0x0, 0x7, 0x1b, 0xa, 0x34, 0x8, 0x58, 0x72, 0x8a, 0x5, 0x54, 0x7, 0x47, 0x0, 0x0, 0x2}, Index:0x45}, Tag:"ᰨ/", MetaHash:[32]uint8{0xed, 0x5, 0xf7, 0x5, 0xff, 0x1, 0x2, 0xff, 0xac, 0x20, 0x1, 0x9a, 0x0, 0xe1, 0x1, 0x1b, 0x1, 0x2, 0x6, 0x6a, 0xe2, 0xa6, 0x1, 0x1, 0x82, 0x92, 0x13, 0x6a, 0xbf, 0x1, 0xe9, 0xe}, OutputIndex:0x1, Type:0x3} +# 2024/11/11 17:20:46.887637 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw alt_leaf: asset.Asset{Version:0x0, Genesis:asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, Index:0x0}, Tag:"", MetaHash:[32]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, OutputIndex:0x0, Type:0x0}, Amount:0x0, LockTime:0x0, RelativeLockTime:0x2fbc, PrevWitnesses:[]asset.Witness{asset.Witness{PrevID:(*asset.PrevID)(0xc000644fc0), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc000645110), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0006451f0), TxWitness:wire.TxWitness{[]uint8{0xaf}}, SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc000645260), TxWitness:wire.TxWitness{[]uint8{0xd, 0x41, 0x33, 0x57, 0x6, 0x0, 0xfe, 0x73, 0x9e}, []uint8{0x87, 0x1, 0x0, 0x1, 0x0, 0x2, 0x36, 0x16}, []uint8{0xd5, 0x1, 0x1}, []uint8{0x4, 0x68, 0x9}, []uint8{0xa5, 0xff}, []uint8{0x66}, []uint8{0x9b, 0x8, 0x6c, 0x1}, []uint8{0x3}, []uint8{0x44, 0x26, 0x79, 0x27, 0x1, 0x9e, 0x1, 0x24, 0xa3, 0x3}, []uint8{0x0, 0x1, 0x0, 0x1, 0x7, 0x46, 0xd, 0x2, 0x1c, 0x2, 0xb8, 0x1, 0xff, 0x51, 0x3b, 0xf0, 0x1a, 0x74, 0x1, 0x5d, 0x1, 0x2, 0x5}, []uint8{0x1, 0x0, 0x50}, []uint8{0x1}, []uint8{0x2, 0x0, 0x53}, []uint8{0x5e}, []uint8{0xb8}, []uint8{0x5}, []uint8{0x25, 0x14, 0x0}, []uint8{0x24}, []uint8{0x4, 0x25, 0x8, 0x7, 0xbb, 0x3}, []uint8{0x91, 0x3, 0xbb, 0xc1, 0xd2, 0x1a}, []uint8{0xc, 0x1a, 0x3e, 0x8, 0x9, 0x73, 0x7, 0xe3, 0x0, 0x1, 0x34, 0xce, 0x3d, 0x4c, 0xff, 0x5, 0x0, 0x2, 0x25, 0xff, 0x1, 0x13, 0x0, 0x1, 0x2, 0x0, 0x22}, []uint8{0x23}, []uint8{0x16, 0xf}, []uint8{0x9, 0x1, 0x2, 0x2, 0xc5, 0x1, 0xb, 0xd, 0xf5, 0x32, 0x1, 0x1, 0x5b, 0x11, 0x95, 0x0, 0xf6, 0x52, 0x1e, 0xde, 0x18, 0x1, 0x1}, []uint8{0x7, 0x5}, []uint8{0x15, 0xc7}}, SplitCommitment:(*asset.SplitCommitment)(nil)}}, SplitCommitmentRoot:mssmt.Node(nil), ScriptVersion:0x0, ScriptKey:asset.ScriptKey{PubKey:(*secp256k1.PublicKey)(0xc00062b180), TweakedScriptKey:(*asset.TweakedScriptKey)(nil)}, GroupKey:(*asset.GroupKey)(nil), UnknownOddTypes:tlv.TypeMap{0x7a69:[]uint8{0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e}}} +# 2024/11/11 17:20:46.887664 [TestAltLeafEncoding/alt_leaf_encode/decode] unexpected asset relative lock time, got 12220 wanted 0 +# 2024/11/11 17:20:46.887714 [TestAltLeafEncoding/alt_leaf_encode/decode] decoded leaf {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 0 [{0xc0006453b0 [] } {0xc000645490 [] } {0xc000645570 [[175]] } {0xc0006455e0 [[13 65 51 87 6 0 254 115 158] [135 1 0 1 0 2 54 22] [213 1 1] [4 104 9] [165 255] [102] [155 8 108 1] [3] [68 38 121 39 1 158 1 36 163 3] [0 1 0 1 7 70 13 2 28 2 184 1 255 81 59 240 26 116 1 93 1 2 5] [1 0 80] [1] [2 0 83] [94] [184] [5] [37 20 0] [36] [4 37 8 7 187 3] [145 3 187 193 210 26] [12 26 62 8 9 115 7 227 0 1 52 206 61 76 255 5 0 2 37 255 1 19 0 1 2 0 34] [35] [22 15] [9 1 2 2 197 1 11 13 245 50 1 1 91 17 149 0 246 82 30 222 24 1 1] [7 5] [21 199]] }] 0 {0xc00062b270 } map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} does not match input {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 12220 [{0xc000644fc0 [] } {0xc000645110 [] } {0xc0006451f0 [[175]] } {0xc000645260 [[13 65 51 87 6 0 254 115 158] [135 1 0 1 0 2 54 22] [213 1 1] [4 104 9] [165 255] [102] [155 8 108 1] [3] [68 38 121 39 1 158 1 36 163 3] [0 1 0 1 7 70 13 2 28 2 184 1 255 81 59 240 26 116 1 93 1 2 5] [1 0 80] [1] [2 0 83] [94] [184] [5] [37 20 0] [36] [4 37 8 7 187 3] [145 3 187 193 210 26] [12 26 62 8 9 115 7 227 0 1 52 206 61 76 255 5 0 2 37 255 1 19 0 1 2 0 34] [35] [22 15] [9 1 2 2 197 1 11 13 245 50 1 1 91 17 149 0 246 82 30 222 24 1 1] [7 5] [21 199]] }] 0 {0xc00062b180 } map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} +# +v0.4.8#17478531920142712372 +0x1676375a8c33a1 +0x5 +0x14a607db2951a0 +0x20 +0x14daceba3f1533 +0x44 +0x123bc03b2334d5 +0x2f +0xa352b24ec4170 +0x4 +0x15326af9ebadaf +0xae +0x171eb93dda9245 +0x60 +0xb5f87531bf3c3 +0x4 +0x1d0a69076e1828 +0x4d +0xca857d208d42 +0x1 +0x1ace7b6791e0c2 +0x73 +0x146ddebe45399b +0x54 +0x141e613fae7bac +0x3c +0x37fcb3f1ec53a +0x1 +0x907ff5a6ed897 +0x5 +0x2bd0243e3d851 +0x1 +0x538662a079ac2 +0x0 +0x6bd3ea9c2618f +0x7 +0x1a5a4013cfb05d +0x1b +0xabafb93fbe61c +0xa +0x1e2a9778ec7a06 +0x34 +0xb2fec46443352 +0x8 +0x1d1cc13dce1500 +0x58 +0x136fc443829d16 +0x72 +0x1f042cfafe2f39 +0x8a +0x8a8f290be4cde +0x5 +0x175bdd9438cdbe +0x54 +0xd8b5771a7a05c +0x7 +0x1e9085de29cdc3 +0x47 +0x15d3a23e50dd8 +0x0 +0x35f28b75941d4 +0x0 +0x513275cb8accb +0x2 +0xdb10b166a95be +0x45 +0x1937b8ef92e858 +0x23 +0x1d589f9d4d64a2 +0xc9 +0x196fbac34c1bd8 +0x3 +0x16b1a6b97f990e +0x18 +0x6943ba00e40d +0x132f3a2d0c270b +0xed +0x804ad990a0568 +0x5 +0x1840a80917d0cd +0xf7 +0x7baa5ff33bb50 +0x5 +0x1fb332c7cfea73 +0xffffffffffffffff +0x41e94e9578ce4 +0x1 +0x595aa059e0286 +0x2 +0x1fbc79cc5a7254 +0xffffffffffffffff +0x16f61ae557e6b9 +0xac +0xf1922249dfda4 +0x20 +0x26e7eda39caa3 +0x1 +0x14358f94fb0aae +0x9a +0x567b3b174a37e +0x0 +0x1b2993d0c1a323 +0xe1 +0x23830b502ea8a +0x1 +0x114ce053a1024e +0x1b +0x75e100b63cf30 +0x1 +0x497205d48a0a1 +0x2 +0x781290201e2ec +0x6 +0x1560513f43f28b +0x6a +0x17c5e461ea72e0 +0xe2 +0x183cebe0da487e +0xa6 +0x917d2be6a6c6b +0x1 +0x125d29c283ed6 +0x1 +0x1434ef4c741856 +0x82 +0x157ae8cdba2e01 +0x92 +0x1dc43297635177 +0x13 +0x1885587cd0e567 +0x6a +0x1ef24f01b94cb8 +0xbf +0x20cc7c31ce3ea +0x1 +0x1beb009b7adccb +0xe9 +0xacd709a6c7b05 +0xe +0x20a6ced7691b2 +0x1 +0xfc73cdcb2ed74 +0x3 +0x16731ce9673d79 +0x0 +0x1bc464c9a67815 +0x1 +0x1b2d6f5537909e +0x0 +0x587f47a71f66b +0x0 +0x9844d4bcded5b +0x0 +0x4d297f49f2c1c +0x0 +0x95fbddd9fef9b +0x1 +0x160f8ff89045fa +0x2fbc +0x6e38227d5b7f8 +0x184feef689c0ef +0xfa +0x23dd6f323ee9e +0x1 +0x88effe4ad4bd +0x1 +0x77de1dc201d7 +0x1 +0x1987429998f1a0 +0x75 +0xee93a9634679 +0x0 +0x5c552f90975ca +0x0 +0x1ee8866103a1bd +0xe9 +0x16954526ebea45 +0x9c +0x1df5babce27702 +0xa +0xa5fcba223634b +0x9 +0x12135b61a1402f +0x9 +0xd4cf01d54c3be +0x17 +0x153ff2e0edd769 +0x4c +0x2eb50306ed851 +0x1 +0x8094267201528 +0x3 +0xd181d77c6dd2 +0x0 +0x19d28df610d7ee +0x2e +0x1afddf335a653d +0xd8 +0x13f9372843ec52 +0x44 +0x1b5073301e2f91 +0x66 +0x166bd5652c56a5 +0x63 +0x109140eb3f195f +0x42 +0x167ce3eff84b94 +0xe9 +0x2657180a789 +0x0 +0x18198290e6cc82 +0x60 +0xe8899e23bd420 +0x3e +0xc572cccac80d5 +0x17 +0x96b395e069f8f +0x7 +0x114e0db20a9f03 +0x73 +0x667b04b35402f +0x3 +0x8b2ccdb2bff14 +0x7 +0x169462c2318cbd +0x5dd3 +0x1de9ce91b402f6 +0x7792b14bbd70e +0x5 +0x923bbc8d62a84 +0x1b8b0e24cc9352 +0xec +0x7aff720319f72 +0x1e937a33f36b9c +0x9b +0x9634e66191c92 +0xdb3bc4fd78108 +0x1c +0xa4105227f0157 +0x13179ca983c0ef +0xab +0xa92b8d15d7673 +0x331938399f05f +0x0 +0x1bd1bb9d30d0a1 +0x1b54364d9c9fed +0xcf +0x107b941784839a +0x3bfb5a65e02b +0x0 +0x6710f3beb7545 +0xb4a36f1d35dea +0xb +0x182071921fe70c +0x1087b21e2cd269 +0x64 +0x160e53ffb9296a +0x7f461dbd9c08e +0x3 +0x180bd8e9c18aec +0x972b9467e88e6 +0x6 +0xd9ba6acba87c1 +0x102642e6519065 +0x21 +0x1a9409058473e6 +0xde922806411e6 +0x10 +0x4f3f3a1b3e23a +0x16bf4420a9bbb3 +0xcd +0x1ce72718fb295b +0x14909ab82cb7d4 +0x60 +0x1528b9f61b738c +0x1fa7194e096e36 +0xffffffffffffffff +0x13c40ab918c55 +0x1c9dbd001bd0cc +0xa6 +0xbd57be7990ac3 +0x8843ec302c277 +0x2 +0x1f7790f905b024 +0x18edb0009cfd2c +0x3a +0xe5c261671e321 +0x881d2661adef +0x1 +0x895adb19dea59 +0x28eb83e35fa4c +0x1 +0x1826671d316a94 +0x102e6a10ba7184 +0x31 +0x162621682f29d +0x6bd6268ebca7f +0x3 +0xbf8f6b82cc70d +0xcac93331d81c9 +0x1b +0x1d43d101536695 +0x1b8cfb9e7ce065 +0x1a +0xc355cef48ee3b +0xd4ccd2f922747 +0x19 +0x120e50cad0d164 +0x1951f5ed4a1d5d +0x9b +0x10e620378736ee +0x3e62a26bd98db +0x1 +0x95ebbcecbffd0 +0x1905465d66355 +0x0 +0x9f7de8ade67cf +0x9a6dbf81cd635 +0xa +0x1848620d41c426 +0x69b52b15c00c +0x0 +0x1d8f394965dcd1 +0x26e39cf2f9912 +0x18e8318157b5c1 +0xd7 +0x11d4ac5446c8f +0x4655f4e6df8b2 +0x3 +0x9e505dd7cd47d +0x1063d4aeb23bf8 +0x65 +0x13982a4c91dc3e +0xab21eed8054e4 +0x1 +0x6424e4c20882a +0x34786e61e177e +0x0 +0x18a174b21c54b2 +0x12607172796700 +0xd1 +0x15e5c983d98273 +0x8cd97612608cd +0x7 +0x63dfc8ac2392d +0x122f72a72d0f62 +0x0 +0xcdded68cd51f7 +0xd91f03a414296 +0xf +0x11736a8b7f4236 +0x1d8841ef404c45 +0x73 +0xac2fafe4d4f9e +0x1a7f7983440e2a +0xe3 +0x1be6b071ecd0bf +0x92c117188c806 +0x4 +0x178896afacccc +0x119198c82be5e4 +0x9 +0xc222e77277d72 +0x1e176283a43213 +0x3f +0x1b66ba6f3000d1 +0x1c8a8e8292a100 +0xf9 +0x14eb0f24ab82d3 +0x120a0b359cb57a +0x41 +0x143a10eef45297 +0x13db00b3d06f9a +0x5a +0x3830b5e408dd4 +0x1903b6608119c8 +0x30 +0x18128a82c7d480 +0x1bcff4ebddf77e +0xdd +0xdc35c3222c0e4 +0x1f2c38b14a22ed +0xffffffffffffffff +0x21d2ead3f650a +0x199e336985703 +0x0 +0x1e0452b1068586 +0x5ed70d3a9e781 +0x1 +0x1533c1f7683cc6 +0x1b1d2d24141128 +0x8 +0x1761499766ba2e +0x182ede25e97d75 +0x8 +0x11b82d35032a34 +0x15647258a66f38 +0x47 +0x1da3d6376347d0 +0x1f4651b7ef411 +0x0 +0x1b2396c3ccca8c +0x107aee71746db1 +0x6b +0x1a18d7810d7497 +0xe49c8ca1701ce +0x8 +0x1f81fcf73a8780 +0x1ed2d2f79b84f7 +0xb +0x1d1f1087224de6 +0x1043eff6ce7b99 +0x50 +0x7e78ed284857d +0x1a7385331cc509 +0x55 +0x110d6a5c4228c1 +0x773d6c6f5dc6c +0x2 +0x193c5f6cff35d7 +0xed6d055ac498e +0x0 +0x574b1d35aa431 +0x1270fe3b3fdbaf +0x1b7cc10d353365 +0x7d +0xb5322ac69c190 +0xbe9ccc347b46f +0x3 +0xcae5c5e72b609 +0x100a64a293f6fc +0x18 +0x1350d073798080 +0x120d7774d438d3 +0x1 +0x7515c40c6d1a1 +0x1def867a6ade86 +0xed +0x1770a535b53786 +0x15bb4d892eeb2f +0xdb +0xa1cd446e5916c +0xc6ee9f02d81ca +0x19 +0x1f158966b9cf3c +0x119b56e56e84bb +0x5c +0x404b8ca07d0fe +0x765d48c9aa0b2 +0x6b6f68a260371 +0x18a57ddfbc97a0 +0x2e +0x761055d0bff4d +0x1ae36a701e40ef +0xc5 +0xb5afa17b8f12f +0x7c1e9ec06145 +0x1 +0x1c2ba38e5450f +0x28cec8613b7b0 +0x116c9baf1b234 +0x1 +0x1225ac5fb168eb +0xea4a0ceabf4eb +0x8 +0x1a819bea8f2f2f +0x68 +0xbfb9e54666278 +0xb +0x3d39f05fe5934 +0x2 +0xb55e82cdf4b84 +0x4 +0xd7e658adc81f +0x0 +0x1478e676ecf3dc +0xd6 +0x1e1f6603f9e14b +0x15 +0x1a921651a6ca06 +0x4c +0x5856e4d146d14 +0x0 +0xe3c6dc39b68df +0x15 +0xac2a4532e9794 +0x3 +0x1541d0a0191d98 +0x18 +0xbf325c7ec2499 +0xf +0xc3978f249aaf0 +0x0 +0x1542e0ff25768a +0x5a +0x418463b8672e2 +0x3 +0x26986464f6fd4 +0x1 +0x25188af207595 +0x1 +0x1c8b32690a4c2 +0x1 +0x518625cd9f361 +0x0 +0x26cddf054e5c +0x0 +0x9e9ebc7f277d9 +0x6 +0x112e5be789a79b +0x48 +0x956854f3de4a8 +0x7 +0x881754d303e57 +0x1 +0xdfb348584f217 +0x1f +0xff84c86e49b39 +0x24 +0x182260d4b65681 +0x81 +0x17eb8b52fce11 +0x1 +0x23f23d548da2f +0x1 +0x843293ab92c37 +0x1 +0x10acfce7ea91b4 +0xf6 +0x160c981ef5f65c +0x1a228f4ae8bfba +0xe1 +0x17ab7343b9061e +0x8a505e4b64834 +0x7 +0xb88451ece5ed9 +0x406867c2b48e6 +0x0 +0xcb580c68b3257 +0x1c12d9d7c6875e +0xae +0x132d1c3337e77d +0x65a8e66eae137 +0x0 +0xcf5e9d44649f6 +0x1f7d6045109e7b +0xffffffffffffffff +0x19e16f47616fcb +0x76f179b4b5a41 +0x4 +0x76ee9933aae48 +0xd238968aa1d39 +0x1b +0x153e6f11271dc6 +0x774902dd2d61b +0x3 +0xa2a0d793e34de +0x9539a354b406f +0x1 +0x6ab293fbc97e2 +0xd1c3f15cf4a92 +0x12 +0xfdb0ed7daf734 +0x60393addea36 +0x1 +0xc145f9722c3d4 +0x33150042e96d9 +0x0 +0x6393a5b443c00 +0x12cd5d19e10bef +0xb9 +0x18f30657f18331 +0x46fcb18aafeea +0x2 +0xcf34e3889fd86 +0x3c03cc6f3ffc9 +0x0 +0x7cf64783bd009 +0xea10074d6bdcc +0x3d +0x2c485dbac4aef +0x134c1553c94edc +0x35 +0x497a19ba87397 +0x1691c752d5f32b +0x47 +0x3dcf599c62dd8 +0x14ccc4c9f73196 +0xe9 +0x13b53cd8dba2af +0x1ca7e889bdffa0 +0x36 +0x140881ad7cf7 +0x184ce2fdd0ffa9 +0x97 +0x1ad1aab859b9b9 +0x1b9e89c3178a5b +0xa9 +0x34e8ec47770ca +0x94df7552debf1 +0x4 +0x1c1320bb07ff2d +0x5d17fa143ce77 +0x1 +0xfab0b1c8eec68 +0xbc94e848ee126 +0x7 +0xa6dc1574a4bcf +0x7333eaab58c1e +0x7 +0xe3feefdf12f3d +0x124951ce3e7111 +0x54 +0x7d8c362bc33f5 +0x3967f96519762 +0x2 +0x311cf7efab033 +0x18cca304729501 +0x6 +0x88619be5b7559 +0x1148c2fbdd0a6e +0x6f +0x104157eab15619 +0x69b0fffda8172 +0x2 +0x3822e5ab95024 +0x5827150e0306 +0x34fd9c3a45fa +0x0 +0x10ebf811a4aeee +0x9ab37f0c6466c +0xc +0x1aac1daa9d6e5 +0xa270f606aa1c2 +0x9 +0x617cf1aae39a4 +0x1623e9c185c82 +0x0 +0xfa3c33889917f +0x1ed8cbd711d1a +0x0 +0x1a035cd9ec8b4f +0x1f95b16e160a31 +0xffffffffffffffff +0x1c7cfe01f1705e +0xa3cef1d2c6e92 +0x9 +0xd0b6fd79c68f1 +0x38559620a77d9 +0x1 +0x6c7a9d781b2b0 +0x94f95bf62aac6 +0x1 +0x161c2bc0b3ed34 +0x115f1a94105a98 +0x22 +0x13c44092ee51cf +0x1a1b504d2d457e +0x1a +0x1ec2537d6a9918 +0x1a24bbec1f1df1 +0xa5 +0x1083e369877af7 +0x107ae5593256fe +0x31 +0x56909a4b7aa0f +0x14cf3b06412403 +0xe4 +0x492a06924d599 +0x18e53712cf2d4f +0x48 +0xc0bad38cfcd5f +0x4614f4a676f3c +0x0 +0x1aa5c6897f6b89 +0x1317f9333f45d3 +0x68 +0x1bbafb2a9e8a53 +0x14a68f45b2c8b9 +0x10 +0x105e9f65fd6859 +0x1117d02e0aa94 +0x0 +0x16778ed57542df +0x5fe73b2b3d66b +0x2 +0x11351c5d1444e0 +0x1bef656249f91f +0xca +0x1809bac2abd35d +0x18fd66304a375a +0x3c +0x1dca87ab194691 +0x118c4ceacab30e +0x33 +0x21502074c5877 +0x1a5f9ebf233a95 +0xf +0xd26af8ef7b490 +0x4f6fe5452ab3e +0x0 +0x1871ba015d2eff +0x2cbeca41a87fa +0x1 +0xdb1546f3e48be +0x130a54d33d0493 +0xbd +0x49d53bf96db6f +0x1e3e084d51b950 +0xdb +0x1b46538eb688e2 +0xe3ad0b7a7e965 +0xd +0x1f722558181d49 +0x9275c85e0cd25 +0x2 +0x17c8a0582fb328 +0x9edbf9043cb4e +0xd +0x1be25ecadde2a4 +0xc4358c0772304 +0x6 +0x1dfdc03a6585c1 +0xdaa81227f13a7 +0x1 +0x1479c03818a318 +0x5db486f126b3d +0x1d77779fdff7d3 +0x63 +0xcbff0d19e8501 +0x1285d350aa30ba +0xd1 +0x4ad081df81e5a +0x1cae31dbd2a1c5 +0x19c9c01da9e83a +0x16497044a1ae46 +0x39 +0x1a3578eccfce7d +0x939c0fda50bc6 +0x3 +0x57e30df87361b +0xf366d59c23add +0x3a +0x1d348479b2ef4f +0x902e9d69859a +0x1 +0x381f9acf116f4 +0xdcd438d6a0cfe +0x1a49cb06114c84 +0x61d7642de78bb +0x2 +0x136326c68c2822 +0x1495e454a14e76 +0xf2 +0x163924948bb7b2 +0xae64ada62281b +0x7 +0x1b50cb40ac4aa1 +0x42cca05357545 +0x0 +0x749ef6e8ee283 +0xabdbd6b158e57 +0x4 +0x1333c477eaf73f +0xc0276bab52fe0 +0x8 +0xf225efed62ef9 +0x174951cd0328bc +0xc2 +0x1086caf5247a9a +0x99d37d027f9c6 +0xd +0x119959fdbe16ee +0x13c452348f07f0 +0x7 +0x19c22121f4b419 +0x3e629a4f2a8ad +0x3 +0x4d01b2fe7cc49 +0xbca628660c08a +0x51dab643a73d6 +0x3ab0c3a90643f +0x1 +0xc1ccc691c6fd6 +0x62f8a3ec346c0 +0x3 +0x1f3d5493bf5e1b +0x84566f686819a +0x2 +0xd452f1be33cc3 +0x1df1ba25a48218 +0xdc +0x1e7b194fb6ce98 +0xfd8a67797db0 +0x0 +0x19eb473389bd5e +0x1e99848e3ab3d2 +0xd4 +0x8a9f79db28446 +0xa649d931729dd +0x9 +0x116ec0d0c99b3a +0x2e0dcac627195 +0x0 +0xe3211cb8a9481 +0x160fa86d3def85 +0xcd +0x1df4f47923e694 +0x15e7d5a16e75f0 +0x81 +0x1d87031a55b3a0 +0x961215cca2e6d +0x3 +0x19caaf6f9c47e2 +0xc4b3101c13d9d +0x1 +0x3600aa14ab78c +0x1d17e4c7663f07 +0xb5f61879deae6 +0xc674faa8a29bc +0xd +0xbab0a0ab717e5 +0xa1e38a2ef61f5 +0xa +0x62377f3e46c8f +0x5147542f6b896 +0x1 +0x147041cb7af0b8 +0xd94a65b50eb52 +0x2 +0xbebaa6cfc2517 +0x1eb1a4d921bfac +0x61 +0x18328055ac311f +0x1304fd19941651 +0x7b +0x11f5cdcf46ccb0 +0x2ecb003a81a59 +0x0 +0x5f627a52644e5 +0xc61dbc661ac64 +0xe +0xb3cc6a99456f1 +0x800a228258cb6 +0x7 +0x1673f85783eded +0x4995df86f926b +0x1 +0x1e8ec7bc0103e5 +0xf4d3a47f6c1b8 +0x22 +0x1810619fc957f4 +0x81f3e6a512516 +0x1 +0xe07b56bc716 +0x17d9458564155c +0xd8896d073145b +0x169752fb2ce06e +0x43 +0x2eba3e4e9fe85 +0xdde64b893a235 +0x147fe04a039469 +0x464cf5a02bbab +0x3 +0x134a81c2d0b604 +0x1b5c12e0fa9eaf +0x84 +0x169b246537d461 +0x4f284b4793209 +0x3 +0xad0c38f5721e6 +0xc688fff10756 +0x1 +0x15306029571846 +0x74d18d39c3710 +0x7 +0xb2df42a7ff418 +0x14d0e7ae32775b +0x1c +0x428a376a5f0a8 +0x1a97097fece7fb +0xfff62395433ef +0x1b392c028560cd +0x91 +0xf98a25d5bbea0 +0xf3d51790a033c +0xe +0x41ac46b6782e6 +0x5e1a9a9d11199 +0xa76dfd60c6974 +0x18be991016a31b +0x74 +0x4a2c2971d954f +0x1ee0bdf2fa06e8 +0xeae525cc41934 +0x1c07d4c5a44638 +0x29 +0x1b67d08ebd0845 +0xfd2a7838f1b67 +0x39 +0x18f614c38c244b +0x1b76b1e4f5e5f9 +0x8c +0x28d4f78a4cb2b +0x1c5c84b981ad3b +0x1ce6bbd5bb8da3 +0x4434042c66f34 +0x3 +0x37162482677dc +0x15f87a0dd7d55f +0x2e1b8554c083d +0x1be8c2489d47d5 +0x55 +0x8ad49d4333b6e +0x7f6795ea16180 +0x3 +0x1618cbb4a0fee4 +0x12b5d69586d1f +0x0 +0x10a306f8f61e8 +0x223978c9e87e6 +0x1f8c9d90f0cae9 +0xffffffffffffffff +0x14b9d760c63d20 +0x674d63e868f6a +0x1 +0x1628e127cf9ce3 +0x1c +0x115efa7f887fe7 +0x4c +0x14305e3beecdb2 +0x20 +0x16df3d91f7438d +0x91 +0x11617c8e80dfd9 +0x32 +0xf66e85a01201c +0x37 +0x17a35c072567f1 +0x2b +0x1436ac04cd6dbe +0xde +0x1a1890d109e3bc +0xc6 +0x1d2a9f6cc8b6b1 +0x6e +0x1a2c21ae284024 +0x6 +0x136c45f57ceb8e +0xb9 +0x1128fb4d8d44d0 +0x5a +0x14adf285aacdd8 +0x51 +0x76b8de129a1f0 +0x0 +0x2a6767e7daba4 +0x1 +0x130b66a86aa621 +0xe3 +0x120449d04eb520 +0x73 +0x4c3974821850 +0x1 +0x12a7f0120fdcb8 +0xb7 +0x12fb1e23cbef23 +0xc1 +0x625428bae408 +0x0 +0x596cd66a4f641 +0x1 +0x269dd9176c194 +0x0 +0x13e32de8f35c62 +0xb9 +0x1713564540e59f +0xfc +0x2269e651e2d36 +0x1 +0xab79740a56edd +0x4 +0x1a585a7c2e82a3 +0xb2 +0x188dc72c3b834f +0xb5 +0x7df41dc510d3e +0x5 +0x5ff77cebcba59 +0x3 +0x443cae3e7d48 +0x2e7bffffa1ac0 +0x0 +0x17fabb8b85ff48 +0x8f2d5ac1ea89d +0x6 +0x1ee8310acb03d4 +0x262df95e5c04e +0x0 +0x867aee1b3ff00 +0x1faf49740afc94 +0xffffffffffffffff +0x16088bd8f1db10 +0xef509925d6a73 +0xe +0x12abe10d919402 +0x1e96c8e6ac6774 +0x24 +0x463086a0e4e5f +0x1f2528aa3a5f50 +0xcb +0x8e3ba3a12f080 +0x180d054ac26752 +0xc5 +0x11aaaa0a295de1 +0x1ff6618515e80f +0xffffffffffffffff +0x59c8bc546fc11 +0x133357f74e853 +0x1 +0xaa780ecd1b010 +0xca10ff65dc1e6 +0x13 +0x12be7ef8dc81e4 +0x9c07b4663e7b8 +0x7 +0xf3d920d60cde3 +0x292e5b5ed5481 +0x1 +0x16d14707914f87 +0xc5e5802f79a83 +0x1d +0x1e1fcb1fec26c1 +0x1ea463aa913892 +0x46 +0x18276acf09ba74 +0x159bea97efc32 +0x1 +0x16d0e5ac7218b1 +0x15b3dbcd97508b +0xaa +0x2ab3558eecce +0x1853ba4b74e0a6 +0xf5 +0x13645a43cae168 +0xf6810f6b2c8ab +0x8 +0xd1fe04734cf40 +0x1eb230f11bf963 +0x8a +0x192ce114885a4f +0xb7e930b71fb05 +0x4 +0x8e86dfcaa921e +0x14dcec8c502f3b +0x27 +0xf136d0e326d1f +0x592ec4eee887 +0x0 +0xeba42b2a71369 +0xfdcef01243a44 +0x9 +0xbafa355f91b2e +0x1eb1728890aaf +0x0 +0xd7e7dbfcd7030 +0x1bb5b8b45fb7a1 +0x68 +0x184c38b44a02f0 +0xa6b9d36d6a318 +0x8 +0xda1ff918bfb73 +0xfea31da02aeaa +0x1a +0x67e13a685b907 +0x1e3f5b533a4a0 +0x0 +0x1cdb281164b2ec +0x7d09b24aa5a0 +0x0 +0x84f93a035eb05 +0x17bd72f61d027c +0x97 +0x14b96dad2bcc10 +0x1e725c2873495a +0x44 +0x109bb58f81a528 +0x166731f4807017 +0x1116a23da055b9 +0x42 +0xdc680b20ac1e6 +0x13345deaa4d737 +0x5 +0x1f0b9ec246f2cc +0x2f966d409501a +0x0 +0x924d3b68bac4b +0xd9032193bcde1 +0xa +0x16cea2339468dc +0x1ce62d96a5d360 +0x27 +0x98c3985ec1ecd +0x16c5618a80d3ab +0x21 +0x1283b61bc4b8f3 +0x12c5156a917b96 +0xe0 +0x154d6fde3febc3 +0x1b3b1bcd27256c +0x74 +0x5097ca0f28407 +0x1a1fa3ce1c5ace +0x24 +0x891e3272742a9 +0x14b7113e0de090 +0x68 +0x1d884536a0917d +0x145c8c83848cd5 +0xaf +0xedfded0ba8ee2 +0xd0a3d7fb7dfb +0x0 +0xd58352130de8f +0xfac79e610b018 +0x22 +0x53de1819d40f7 +0x16170bcb628e35 +0xea +0x1a3c5ceb83166e +0x20f8cb891104a +0x1 +0x3c04ccb0d5c7d +0x12d1aecbda0ae5 +0x89 +0x1f3c2df53c3957 +0xa94cea976f398 +0x4 +0xf137fb1d2d3c5 +0x16eff232eb5892 +0xfa +0xa74eee8887730 +0x1b62f6c70eb26a +0x2d +0x1c96a763bdcbf7 +0x1ecd9fb5309d2c +0xe5 +0x14c94bb4f766f9 +0x10fa065ee0b00b +0x4c +0x147109bc358644 +0x147f7b7686ad85 +0x6d +0x1fdef10507eaff +0x92a8cf0848bf5 +0x4 +0xa25347a2ba604 +0x197a97df8e868b +0x14 +0x3517cd3676b4 +0x150fbe919f9456 +0x99 +0x1ca70ede920947 +0x102c26e2c66445 +0xf +0x1529ad8ae26350 +0xfec9b44b43fdd +0x1f +0x1cff1b708aa28 +0x176b9755628654 +0x21 +0xf1e1cb91bead3 +0x5af696d5f0af +0x1 +0x1161fbed7d0555 +0x187a2d4904ce09 +0x1 +0x16054d5ffaaa51 +0xd399f7fb097ac +0x19 +0x4542899421e74 +0x521cb54e72a37 +0x0 +0x360eb2db0f148 +0x37480ed44e1a4 +0x1 +0x25bbe9b3b4bde +0x1287973c58a5a9 +0x16914b28b2ca56 +0xaf +0x2a26f83ae9ef4 +0x1e9e9c1d464af +0x1e55709fd9c4d5 +0x0 +0x10dc605cb88488 +0x95127082918c +0x1 +0x1633109e158175 +0x82 +0x357d8027827a6 +0x0 +0x1648968b4fa5dc +0x5d +0x1d7c7aaa545380 +0x3d +0x240912695263c +0x0 +0x1e2ea0d867926a +0x28 +0x11cb5d07c84fd9 +0x1 +0xb78fad5d6901f +0x8 +0x10badfa89025f6 +0x61 +0x17efdb59fa2b1 +0x1 +0x1eb8944d469020 +0x5d +0x1fa2587914f120 +0xffffffffffffffff +0x19e374af9bc2b8 +0x9e +0xba9285ebe070d +0x9 +0x6f43bf297dc5a +0x5 +0x4ff2d92853e8b +0x0 +0x1e33dd3388a7d8 +0xd5 +0x197496624397c2 +0xa +0xadd2408f203ad +0x4 +0x15d3e1d9b45768 +0x52 +0x1f3865b0102ab3 +0xffffffffffffffff +0x15aa3c41e951cf +0x60 +0x265f8385a5f36 +0x1 +0xba83e872a2fe9 +0x0 +0xececfe80a9db3 +0x27 +0x1d65f37fb82f19 +0x7d +0x98b44187262c0 +0xc +0x1286e2ba2455d2 +0x45 +0x9251dee0badaf +0x3 +0x160b71d3383a3 +0x0 +0xff18d64e8edc7 +0x17 +0x1377f7f93fcfeb +0xc15 +0x195baf90d5117c +0x11282d6e1f9d0b +0xc +0x6ffbde025fb28 +0xdb15464d6c623 +0x19 +0x1b952c9393f530 +0x19616e6e6ab4e1 +0x89 +0x183adbc40edfb2 +0x1ba25da3ca998e +0xb1 +0xe6d25e4d52ac7 +0xf7e6b2ec295c0 +0x34 +0x95e5e9b9acbba +0x1d7495a5be712a +0xf6 +0x19e371ed7805f5 +0x1ee6abe602e6d4 +0xa1 +0x1e93a9fdd5a545 +0x828fdd32fd64e +0x1 +0x64e16bf531d92 +0x1c356c073664f5 +0x8c +0xa9cd91af739f7 +0x47785a541d57f +0x0 +0xaa407854e2a47 +0x15790a6f302500 +0x93 +0x6e8987965ba16 +0x19b41fa373f5c3 +0xa2 +0x128ea3b0ec22d1 +0xea81a743fe5d9 +0x16 +0x1a2bc0b82c55be +0x1ff710ed2a1d01 +0xffffffffffffffff +0x12fa8e9c86ace8 +0x1debef1d78068d +0x2e +0x163a51bd70daec +0x3af28c5716724 +0x2 +0x16d1d08cd5c7ad +0x199cec6871da62 +0xa2 +0x1a8612e7a2bea5 +0xed219b25c1d71 +0x29 +0x109b6f9b45a3cc +0x9bd0f25931e52 +0xc +0x1a744b79f22a8d +0xffd97788e94cd +0xe +0xf30ea6a6ec2bb +0x138969edc03ee +0x1 +0x493784b807ff0 +0x1ee72a6b872631 +0x40 +0x9b451c1c7957 +0x1ed678ca7671e1 +0x1e +0x6dc833eed029b +0xb4a0c84081477 +0x8 +0x1be4842eb85eaa +0x101b8e6251134d +0x26 +0x147967dc089446 +0x6e704fecc4975 +0x7 +0x132ca623c281f2 +0x1c743ad8996f10 +0xa7 +0xf3d037b9f870b +0x1595c542c547 +0x1 +0x1b28d548f2c77a +0xc05f02f80e775 +0x17 +0x10a04d1f5daca6 +0x11e8e622411324 +0x55 +0x4c9edd19eeb17 +0x1d73cf7c6e477d +0xed +0x1fbc681adaafc +0xc538b6009c45d +0x1f +0x7ad3a7ef23fcf +0x13fd0b70b17276 +0x6a2e231c0189f +0x0 +0x1a1792ac02f8d5 +0x4be26689e7275 +0x3 +0x30aa16a59f57a +0x1ca2a97d217e5f +0x4b +0x1434e2730d3e95 +0x1805a81219d466 +0x2f +0x5ae1f8cb3aec8 +0x1235c3c7f63ff8 +0xe6 +0x73484d583fdd4 +0x17f4fd658e42ba +0x17 +0x1b0a42d4eabdd0 +0x119f0c48c08f9c +0x5e +0x11b7f145337d54 +0x1d99a2732dfd9 +0x0 +0x9aaa62c9ca8ab +0xf052dd185dd4e +0x25 +0xcccfe33bf718f +0x54551e3c6c92b +0x1 +0x11a3dbcc5fd1ec +0x794292c8aac45 +0x2 +0x43144372cec16 +0x1293f46ee72c8c +0x16 +0x1dce8c11691e83 +0x5d183c0b90f64 +0x2 +0x624c31ab555a2 +0x11dc5902c4e061 +0x42 +0x16c078132a9afe +0x17a0bb2bd9a576 +0xa0 +0x17cfb17f7e18b6 +0x108fd85aeccec1 +0x39 +0x197e44530af158 +0x11ec1712c4530e +0x1d +0x54fff3bfc3ee0 +0x8e3dbed3373e4 +0x5 +0x1f4b62fb661a19 +0x1d1ce38ab8918 +0x1 +0x164f8aebae0364 +0xfacf293f503c3 +0x7 +0x47b6b72e4c6d5 +0xe600d2c0e0a08 +0x30 +0x16206d5acb2fdf +0x1e98e2c3218a07 +0x6c +0xbfc9e977eed35 +0xe1c101b83737c +0x16 +0x148e9be7ed2356 +0xc7da8a8582d0d +0x15 +0x9bee385ebc32e +0x1b806c2d9982b4 +0xe3 +0x1a355b0db1c47 +0x8dd821379fa88 +0x0 +0xa2ae1744bad01 +0x150aef65f891ff +0x9e +0x10739466faf80c +0x745c8e879056b +0x5 +0x9183536b285ba +0x13225b5c54a7a6 +0x29 +0x3ef47a8128019 +0x18d06b4a110e22 +0x90 +0x149358b294a1fa +0x611491214ca17 +0x1 +0xaf3628de1b87d +0xeb63c6cf2692e +0x39 +0xf307d549439c4 +0x749cf96f9cf63 +0x0 +0x14a9c737203b4 +0x1f531e0ef9fc27 +0xafcb8703b2921 +0xd +0x5f982cf666b08 +0x12e341cd35a684 +0x41 +0x1969d007e77a70 +0x1bd189ad6977b4 +0x33 +0xed422f42d4b49 +0x186eb3669b0999 +0x57 +0x19037049d7332b +0xd175c6fbc4e17 +0x6 +0xcc8bb89354cfb +0x4cff4cd51a7dd +0x0 +0x172e9ca49ced39 +0x1d374f68d920fa +0xfe +0x6674b488c2c12 +0x117b0a72d9652d +0x73 +0x1db50be4fb8e72 +0x1b8bd2bd542630 +0x9e +0x2d70d6f817f9 +0x193f9f2da43632 +0xf44a8182abc6c +0x17fdab4ef3df88 +0x87 +0xf0634325154c6 +0x212a57dbc676e +0x1 +0x15b44310cd08cc +0x3a6a6b4d040f8 +0x0 +0x18973d3e0e5971 +0x1e2d398a01891 +0x1 +0x58038fc2dfc8d +0x4c41777b3b34 +0x0 +0xa97465a74a51e +0x490b2e006c730 +0x2 +0x118df09c2f253a +0x1c4b51dc0d66c7 +0x36 +0x1c91638091154c +0xd1529d6ad1b2f +0x16 +0x2e9d91a5a354d +0x1a94efbcef1d1f +0xef76d8231e23d +0x1ee44807c8d96f +0xd5 +0x94d4f9687fc2a +0x511a7ec2a8ad +0x1 +0x7aee13b7fc4f2 +0x5baf81b6b15d0 +0x1 +0x29c32352652b8 +0x1fe0c448de77f8 +0x1f098c888ab482 +0x841baaedd5b57 +0x4 +0xf047759ae24ed +0x1af20888a4ea67 +0x68 +0x6eabbd43acd4a +0xd19bfa6f626ab +0x9 +0x2a41ab1d77428 +0xf0b4796296984 +0x19856be63dba18 +0x1aea8a892156ad +0xa5 +0x162fc588e05876 +0x1f40359bd77a6f +0xffffffffffffffff +0x5192cfaf5463d +0x1533886a364d6e +0x12ef2c6ffb768e +0x187a41887d6b2a +0x66 +0x3ed651639b8a4 +0xd6774dc1f75e1 +0x110ba3a3f70e35 +0x15198b3c06f5e1 +0x9b +0x1cb1291567b4c5 +0xa4bb18f70f76f +0x8 +0x18b734d94f8a42 +0x15a1c49b135616 +0x6c +0x12555f49cc1a73 +0x1bde1382e1c9a +0x1 +0x258cb7bdc6361 +0x6db33f4141e07 +0x1a3b97e07190ec +0x8fec4d24980d4 +0x3 +0x4a13c2073020e +0x1511ee442b9e0e +0x515724ba38fbc +0x135dacd6d653b5 +0x44 +0x1b51be62598851 +0x1aa2fee2a5cfa5 +0x26 +0x7ad9ff993c806 +0x1b6f8824fde4cc +0x79 +0x1e17092c9340c2 +0x1bd89e8307caaf +0x27 +0xf8ec8a1707b8f +0x8543ebacdf2e3 +0x1 +0x13ff7e2c2fa34e +0x18e19b591100e8 +0x9e +0x64327eddfdfb7 +0x20d394a4780e5 +0x1 +0xe4580b82bbb79 +0x14d0a256e7218d +0x24 +0xa126d4473db5f +0x12f7a8c625dd7b +0xa3 +0x1091e2d25a608d +0x813332eb42306 +0x3 +0x8bdee668cd43 +0xa1f0b34a67239 +0x15dc735eea1347 +0x96854a9c0fd85 +0x0 +0x5da00ed7d44da +0x2939f0c41d332 +0x1 +0x1db01ce82d838c +0x305edd23bebc1 +0x0 +0xedfac56a93839 +0x226ce630e35c0 +0x1 +0xfad4a2e8ce05d +0x7fb1eba493c5f +0x7 +0x1240f9fbda2d2e +0x147f122888c383 +0x46 +0x1ca811f9c0a7e7 +0xbeb17e6e9c91c +0xd +0x1112e87cc5a374 +0x632c3631e1cae +0x2 +0x951837a89108e +0x1bd17fd8bd0adc +0x1c +0xbc07056153579 +0x4b2a55a6d5d3a +0x2 +0x15d516876c251e +0x1a02327355403f +0xb8 +0x6d8a9b62e7b66 +0x64cc4a52a0f8c +0x1 +0x14ed32ec84da80 +0x1f6dd4f1364d44 +0xffffffffffffffff +0x1cc9822913b82b +0x1c6a3db4106257 +0x51 +0x19d44088dc968e +0x1d320aab0a6ee0 +0x3b +0xbdca0918010a4 +0x15844908bd5138 +0xf0 +0x1823238d168fdc +0xf000bff315a93 +0x1a +0xc8474690cede4 +0x171969635c7899 +0x74 +0x786248f932f09 +0x7035466ce3d9b +0x1 +0xe73f1c9bfca17 +0x15821a8680f392 +0x5d +0x132ce455b1e2ab +0x3ec93012a9e7e +0x1 +0xde13bb28281e2 +0x4da4173239f13 +0x2 +0x14b0a1ce0447c6 +0x17d075adb6de4d +0x5 +0x44f265febf4e7 +0x1d8051f88f6525 +0xc9bf5299cb811 +0x1524073271ac1 +0x1 +0x7ad2b38c2894a +0x201ff8a6135fb +0x0 +0x10c0f1bc80ea25 +0x117fae64772139 +0x50 +0x472e7c9e296b1 +0x127192385a9eb3 +0x19c58d39a43e2a +0x107e50f82bc56 +0x1 +0x1d933bad2d472 +0x8f3ad4496f13a +0x1624d88f733535 +0x3d3f463d29739 +0x2 +0x64645c15aaa82 +0x57c39edb4323b +0x0 +0x18e9da0a33ed13 +0x1e7abcad8d7e34 +0x53 +0x42a82b57d9d79 +0x1ab95f1519e383 +0x1c1bcc6f4892cd +0x10557e1ff04c42 +0x5e +0x24111e1c3a3a +0x1b3f163d6ebdec +0x1392c859af4070 +0x198c82bf27018b +0xb8 +0x38131505d67cb +0x179e724298f1b8 +0x1e905bb85c1f77 +0xb57688319fae2 +0x5 +0x484334525b4e0 +0xc411e13bc80eb +0x47220f1687bb5 +0x11dc89ebde22a4 +0x25 +0x134c04bdfae0e6 +0xda14744459416 +0x14 +0x17e5de6b91e2e5 +0x14260b0d6f1784 +0x0 +0x472b6b3e61121 +0x145941e701ece7 +0x943b49ca75801 +0xf162474889c33 +0x24 +0x430fc8956eceb +0xbe01e4578f5f8 +0x13a14dbad2970 +0x89735b3cdf87c +0x4 +0xbdc076998cff4 +0x14bdda96c667a1 +0x25 +0xf252c4f86c249 +0xe2dee56a39c51 +0x8 +0x10567c795744b7 +0xaf73f97c51879 +0x7 +0x1eb27c95f03f0b +0x1c526178ec4d65 +0xbb +0x1899ad804db838 +0x52287d00e8e18 +0x3 +0x10f9cd1070993 +0x57bd9a83af10c +0xee6851a17d567 +0x131877f280ec59 +0x91 +0x14e39a2bdc0cd2 +0xd4c8e5750364e +0x3 +0x68b96ad7dc6a2 +0x130e6b142ba37e +0xbb +0xf552dc1ae3150 +0x17c7f7d54385e1 +0xc1 +0x1efd41c86ab514 +0x1b23c61db0dbf9 +0xd2 +0x11265510be7d4e +0x16dc457e529057 +0x1a +0x20aba0f7f656f +0xecd698f6e61cd +0xdc083acb89ea8 +0x15f57531b14ce0 +0xc +0x12225da2e39b2b +0xf95e92a711c18 +0x1a +0x59dad581be3c4 +0x159cfa19e4eb7f +0x3e +0x128d13347f9246 +0xb514137ccb44d +0x8 +0x70a88c7a4bd55 +0xba113048264e0 +0x9 +0x17eb233a2b287c +0x189da134d7c5f1 +0x73 +0x95f207d891875 +0x71cee73499642 +0x7 +0xe1ffd966f7be1 +0x166e8acf8f9e90 +0xe3 +0xff970a1a91057 +0x1dd5a82d0b342 +0x0 +0x1b3de8b0d6bb14 +0x595d040cbd689 +0x1 +0x1c2e84daf67669 +0xe820a016e567f +0x34 +0x1ee3b9257c885d +0x15607754847dec +0xce +0xfeacf4229362c +0xeb96768b65466 +0x3d +0x1e4dad4f1dc5ac +0x1cea1e7a970a8b +0x4c +0x171319c53af24a +0x1f9363fb6a457e +0xffffffffffffffff +0x18038beb345390 +0xd4a112146f5a2 +0x5 +0xc8770b9f42cee +0x3a077db0c79c3 +0x0 +0x18ce79299e7649 +0x9fe0481963591 +0x2 +0x5a61d7a447f03 +0xf0015e227b2a5 +0x25 +0xd36d0f6c99040 +0x1feb4080b6d6dd +0xffffffffffffffff +0x1940bf41e73dee +0x8fe22ff93a120 +0x1 +0x190c5cc0b8fd0c +0x1557e7776f75e0 +0x13 +0x5d94abcbf8284 +0x59023278143af +0x0 +0x1679fe2540e42a +0x3212047e5f96b +0x1 +0x150b49b13e221e +0xd91c96cc6895b +0x2 +0x1e7e71e6a31f54 +0x80b46aecd3e21 +0x0 +0xf4b40b464fe8e +0x1033370a14937f +0x22 +0x3373fc984ca36 +0x11c29015b143dd +0x195f44240a254e +0xfb0cab7512ad2 +0x23 +0x410bbd80c1fd9 +0xa13eb48677393 +0xfb78d115600fd +0x11cec3897f2615 +0x16 +0x171a73420aec3a +0xaeebd1834077c +0xf +0x32f974e1db0c7 +0xc36d8e93c338e +0xdfd71f7743947 +0x9d81055ef4ff7 +0x9 +0x135ab4b111817a +0x29f0fa11abc7a +0x1 +0x1081852fc63050 +0x49a9db7ccc52b +0x2 +0x14a64f8ecf32db +0x6338212309e01 +0x2 +0x12c24f6b1d7534 +0x15c96082ada9e0 +0xc5 +0xb24ff720abeff +0xbbd86aa840149 +0x1 +0x1c5df9ad2641a5 +0x131f25b76b8adf +0xb +0x172c037d4d8233 +0xc3f3b1ca67a9d +0xd +0x98d767048c710 +0x1e866948ae965b +0xf5 +0x1e1c52ec9c1c52 +0xe5686bf853ab1 +0x32 +0xf7f81ba942ddb +0x248de087dd9d4 +0x1 +0x1330802dda528e +0x22ceb61a5b439 +0x1 +0x13553fdc934083 +0x147ff79da7fb0e +0x5b +0x1b6ea8270e9769 +0x1b3b3b96063cdd +0x11 +0x17a81d9ec18c3a +0x1dbfb99ffddced +0x95 +0x16b733acbe5247 +0x15e39af9b6e800 +0x0 +0x145c67cfe5a29a +0x1292d2a420f15c +0xf6 +0x10eba1ca517701 +0x12343c9f78ee8c +0x52 +0x19e09fdd8c4756 +0xfe28854d1c0e4 +0x1e +0x76b4369182742 +0x1bc38370b8d654 +0xde +0x102561df3ad154 +0xc1968e33c2fb7 +0x18 +0x12af6edf7f8dc1 +0x4e4661dd8d43e +0x1 +0xa755ec7b13891 +0x76279d571570 +0x1 +0x2f984ea8dfad8 +0x107bff1de4a81c +0x1512f5fc664ed2 +0x1882669c0239cd +0x7 +0x121c30c51fa57a +0x1b7a8b914a2b8b +0x5 +0x17a6f8a6c2049 +0x1b5f965e5705a0 +0x18e63a53c5789d +0xd4d30836766e3 +0x15 +0x11492920d53462 +0x19abc2f08148a1 +0xc7 +0x2c438a6633d19 +0x143c64894daf9 +0x1b3ddd06dd936 +0x0 +0x487da390e7b2d +0x1955db094b4524 +0x0 +0x15d5fc616d7d8e +0xe1a3208f07916 +0x1d +0x13ba646ae0ee3c +0xf12ac68df2b07 +0x24 +0x11a6b6eca1b01c +0x5c3796ca3a64 +0x0 +0x56928f422f0ac +0x1e96f1c009fce1 +0xa6 +0xf38d894da43c1 +0x1d4d2987af4e07 +0xf5 +0xfb796ff0d8a9d +0x38ada33b6bbbe +0x1 +0x5f0d17a3a0bbd +0x1ac03e083ed0e5 +0xe5 +0x3d09bab91acd6 +0x166110edc65055 +0x51 +0x11d2545ef66e88 +0x353cd5d7a07d9 +0x1 +0x126c2322b49c08 +0xb1238b7213500 +0xb +0x1e2f330d8996dd +0xb9c8568356b86 +0xa +0x15fe54a762b06 +0x82fab5422215a +0x0 +0x778a54cb98ca5 +0x65ed9f050aa8b +0x1 +0xcd6b786d39d6 +0x149a37c84bcbbb +0xe +0x9b0513cc71a0c +0xdab41fc36b90e +0xc +0x1816b6ae5cb902 +0x170c3cb70ed9e2 +0xad +0xb7939891d7208 +0x3845c84350714 +0x0 +0x11fb96abdca880 +0x542751bf41e2c +0x3 +0x1e3385b7721e1d +0xf42e3f45fbce1 +0x0 +0x7e8ac17410d62 +0x554b38878aec8 +0x0 +0x23fd8b838b29f +0xa5e91a3e26873 +0x3 +0x617f659e82da0 +0x1dd9c5e6d4931f +0x5d +0x79e8bb1283608 +0x8995c0652e117 +0x2 +0x1db806205857cf +0xc646d004c5ea1 +0x1c +0xc96fe1dca362d +0x1a6745a95a9394 +0x75 +0x1a0c9e8702a816 +0x8235eb3ba6d1a +0x3 +0x43d115224ebaa +0x19cca9df5ca39 +0x1 +0x5e54ddb84c51d +0x4fc5a65563e5d +0x3 +0x8d5b4452b7ab8 +0x2fe17ed0b303d +0x0 +0x15bb3f1a6b3f97 +0x18a99fac41b4d4 +0x56 +0x2b308c7c65d54 +0xcafe8831571f8 +0x7 +0x1e957cd596f99e +0x167c5aac2b10f2 +0x4b +0x192ec288cc43a +0x75d4fbf27eabb +0xcc56ca983cf0c +0xd9a10ce478703 +0x0 +0x0 \ No newline at end of file diff --git a/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172059-1612570.fail b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172059-1612570.fail new file mode 100644 index 000000000..ba91e5cab --- /dev/null +++ b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172059-1612570.fail @@ -0,0 +1,2082 @@ +# 2024/11/11 17:20:59.478801 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw genesis: asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x40, 0x49, 0x99, 0x1, 0x93, 0x98, 0x88, 0xe1, 0x62, 0xf, 0x71, 0x58, 0xa4, 0x1, 0x3, 0x17, 0x13, 0x4f, 0xa, 0x1, 0x1, 0xf, 0xdb, 0xf5, 0x3, 0x0, 0x8e, 0x6, 0x57, 0xa, 0x0, 0x1}, Index:0x1bc}, Tag:"", MetaHash:[32]uint8{0x8, 0x1b, 0x61, 0x28, 0x4e, 0x6, 0x5, 0x8, 0x3, 0xc3, 0x1, 0x3a, 0xa, 0x1, 0x5, 0x3, 0x1f, 0x0, 0x12, 0x67, 0x1d, 0x1, 0x0, 0x29, 0xfd, 0x2, 0x3, 0x32, 0xb, 0x5, 0x3, 0x1}, OutputIndex:0x1, Type:0xca} +# 2024/11/11 17:20:59.479033 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw alt_leaf: asset.Asset{Version:0x0, Genesis:asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, Index:0x0}, Tag:"", MetaHash:[32]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, OutputIndex:0x0, Type:0x0}, Amount:0x0, LockTime:0x0, RelativeLockTime:0x0, PrevWitnesses:[]asset.Witness{asset.Witness{PrevID:(*asset.PrevID)(0xc0006b3030), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0006b3110), TxWitness:wire.TxWitness{[]uint8{0x1, 0xbe}, []uint8{0x5f}, []uint8{0x1, 0xff, 0xc3}, []uint8{0xf0, 0x0, 0xa7}, []uint8{0x40, 0x0, 0x57}, []uint8{0xc, 0x4a, 0x8e}, []uint8{0x15}, []uint8{0x63, 0xff}, []uint8{0x0, 0x1, 0x32}, []uint8{0xf0, 0x5, 0x0, 0xe5, 0x4a, 0x1f, 0xff, 0xa, 0x1d, 0x1, 0x1, 0x34, 0x60, 0x1, 0x84, 0x1b, 0x0, 0x1, 0x1b, 0x4a, 0x1a, 0x9, 0x3}, []uint8{0x3, 0xf, 0x10, 0x3, 0x0, 0xa0, 0xdb}, []uint8{0x3}, []uint8{0x49, 0x35, 0x2f}, []uint8{0x0}, []uint8{0xc8, 0xff, 0x77, 0x6, 0x76}, []uint8{0x7, 0x0, 0x51, 0xb1, 0xf6, 0x23, 0x36, 0xf, 0x8d}, []uint8{0x1, 0xed, 0xff, 0x2b}, []uint8{0x7, 0x9, 0x1, 0x2, 0xd0, 0x84, 0x20, 0x2, 0x1, 0x57, 0xbf, 0x11, 0x3}, []uint8{0x9, 0x71, 0x61, 0x27, 0x2, 0xf7, 0x0, 0x1, 0x6, 0x0}}, SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0006b3180), TxWitness:wire.TxWitness{[]uint8{0x36, 0x25, 0x1}, []uint8{0x1, 0x0}, []uint8{0x2, 0x3, 0x2, 0x0, 0x2, 0xb0, 0xf9, 0x3, 0x0, 0x17, 0xe5, 0x2, 0x1, 0x36, 0x2, 0x79, 0x2d, 0x1a, 0xbb}, []uint8{0x2}, []uint8{0x34, 0x1, 0xb, 0xd5, 0x1, 0x0, 0x50}, []uint8{0x20, 0x64, 0x8, 0x1f, 0x9f, 0xc, 0x5, 0x92, 0x14, 0x78, 0x70}}, SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc0006b32d0), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}}, SplitCommitmentRoot:(*mssmt.BranchNode)(0xc0007462d0), ScriptVersion:0x0, ScriptKey:asset.ScriptKey{PubKey:(*secp256k1.PublicKey)(0xc000699270), TweakedScriptKey:(*asset.TweakedScriptKey)(0xc0007462a0)}, GroupKey:(*asset.GroupKey)(nil), UnknownOddTypes:tlv.TypeMap{0x7a69:[]uint8{0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e}}} +# 2024/11/11 17:20:59.479062 [TestAltLeafEncoding/alt_leaf_encode/decode] unexpected asset split commitment, got &{0xc00073e400 0xc0006ada08 } +# 2024/11/11 17:20:59.479128 [TestAltLeafEncoding/alt_leaf_encode/decode] decoded leaf {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 0 [{0xc0006b33b0 [] } {0xc0006b3420 [[1 190] [95] [1 255 195] [240 0 167] [64 0 87] [12 74 142] [21] [99 255] [0 1 50] [240 5 0 229 74 31 255 10 29 1 1 52 96 1 132 27 0 1 27 74 26 9 3] [3 15 16 3 0 160 219] [3] [73 53 47] [0] [200 255 119 6 118] [7 0 81 177 246 35 54 15 141] [1 237 255 43] [7 9 1 2 208 132 32 2 1 87 191 17 3] [9 113 97 39 2 247 0 1 6 0]] } {0xc0006b3490 [[54 37 1] [1 0] [2 3 2 0 2 176 249 3 0 23 229 2 1 54 2 121 45 26 187] [2] [52 1 11 213 1 0 80] [32 100 8 31 159 12 5 146 20 120 112]] } {0xc0006b3570 [] }] 0 {0xc0006993b0 } map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} does not match input {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 0 [{0xc0006b3030 [] } {0xc0006b3110 [[1 190] [95] [1 255 195] [240 0 167] [64 0 87] [12 74 142] [21] [99 255] [0 1 50] [240 5 0 229 74 31 255 10 29 1 1 52 96 1 132 27 0 1 27 74 26 9 3] [3 15 16 3 0 160 219] [3] [73 53 47] [0] [200 255 119 6 118] [7 0 81 177 246 35 54 15 141] [1 237 255 43] [7 9 1 2 208 132 32 2 1 87 191 17 3] [9 113 97 39 2 247 0 1 6 0]] } {0xc0006b3180 [[54 37 1] [1 0] [2 3 2 0 2 176 249 3 0 23 229 2 1 54 2 121 45 26 187] [2] [52 1 11 213 1 0 80] [32 100 8 31 159 12 5 146 20 120 112]] } {0xc0006b32d0 [] }] 0xc0007462d0 0 {0xc000699270 0xc0007462a0} map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} +# +v0.4.8#5763482654137054778 +0x107cd0d23edcba +0x40 +0x1313e2944c7cdf +0x49 +0x18dad3ac5c7827 +0x99 +0x22d60d842ca61 +0x1 +0x18b0b128d06c4e +0x93 +0x1220850df7be31 +0x98 +0x1edc652e59dcac +0x88 +0x19a8e5385b7ee1 +0xe1 +0x1b988577ef2f64 +0x62 +0xb6fd24497d6d6 +0xf +0x1818eb47191031 +0x71 +0x17a92d2164f3be +0x58 +0x1239ab096b3480 +0xa4 +0x2a7759ec5d479 +0x1 +0xae5c68e668651 +0x3 +0x1beea7dbe32da0 +0x17 +0xd9cff9bd9708f +0x13 +0x1c65ae86646413 +0x4f +0xa8b8a5d0980c8 +0xa +0x3422fbbae4170 +0x1 +0x2d3835e495183 +0x1 +0xabb87869b98ea +0xf +0x1e41308fcda9f8 +0xdb +0x1dcde88460dbcf +0xf5 +0xff3e73df4e8a0 +0x3 +0x6552841f87471 +0x0 +0x1e80a66f6ea3f9 +0x8e +0xab2bf38860fd1 +0x6 +0x1586f28c128e6b +0x57 +0x16960ffa88d2c4 +0xa +0xaf277370b3d4e +0x0 +0x2734a9c5b30ec +0x1 +0xfbb558694d2f7 +0x1bc +0x327ea9ee4f424 +0xa89607e93eeb1 +0x8 +0xc1c4d4ff5c546 +0x1b +0x178f16c606dd03 +0x61 +0x15b88cf7bb058c +0x28 +0x17402ae3eff494 +0x4e +0x6c8c0b32311da +0x6 +0x8f288d48d9965 +0x5 +0xb8221eb63391f +0x8 +0x589098281aea2 +0x3 +0x17760e386c056e +0xc3 +0xe5415c8dc8c9e +0x1 +0x11d8d3e685ee12 +0x3a +0xd83894d9ee3ca +0xa +0x2d518f5340e2f +0x1 +0x10d652ad9de038 +0x5 +0x441f8d631ffa1 +0x3 +0xc7427c6c18956 +0x1f +0xa522291333a72 +0x0 +0x1020cbae0fd603 +0x12 +0x17196e740f4b95 +0x67 +0x1824347a499631 +0x1d +0xcace81cf036b +0x1 +0x312d1a7af2c7b +0x0 +0x11cf8ad273a5e7 +0x29 +0x18ae6835c80c80 +0xfd +0x96438c642134f +0x2 +0xa4287dd87c7a4 +0x3 +0xece443bd0ff32 +0x32 +0xf766a5acc07f0 +0xb +0x93169d4d44d9b +0x5 +0x938219ecce803 +0x3 +0x24dd8589efa0 +0x1 +0x13be415d654b8 +0x1 +0x1a93bcdfce0b8e +0xca +0x109f840c6a5ff4 +0x0 +0x7a5091c0032eb +0x1 +0x1803355562fcd5 +0x1 +0x1d7d18a8e6544 +0x0 +0x117726634984e7 +0x0 +0x1ec7fafa525705 +0x0 +0x3611d5ce9e780 +0x0 +0x14f45c41f02d54 +0x0 +0x18772818190f53 +0xfc657eabfde6a +0x20 +0x674db5f93295c +0x2 +0x6c5bbca255e2f +0x0 +0x73bf2c5f57abd +0x6 +0x1340753684ffc0 +0x3c +0x146d8f2ce02d4b +0x40 +0x1a00380687a813 +0xf8 +0xd82b226d68b1e +0x1 +0xfe4fec1c5f864 +0x28 +0x3a79cfbb4e7cc +0x1 +0x170c034c502ca6 +0x20 +0x191497ee6952d5 +0x4e +0xb4fa08c9abd89 +0xe +0x1543e2e48e7edd +0x2d +0x1f0e7aee855545 +0x43 +0x1c9feca1a5e2e +0x1 +0x100d629ee8045d +0x10 +0x135395a2ade9 +0x0 +0x8dc6b94b5ffe0 +0x2 +0x14f35d639739c +0x0 +0x1f7050396b425d +0xffffffffffffffff +0x18634b6ed589c4 +0x5b +0x1fff1f78c81218 +0xffffffffffffffff +0x3427114b0ad7c +0x1 +0x16f0cbe469b19b +0x27 +0x1404ad1325a24e +0x41 +0x140d58d9797ba1 +0x9 +0x1e45695991a42f +0x14 +0x812658a1bdfe9 +0x7 +0x18272b66c7ba45 +0x6e +0x45d3d898acb48 +0x2 +0xf3d18e065d748 +0x39 +0x15a0163397badb +0x5b2 +0x292d276ad3a67 +0x14a9bf1b1a50f2 +0x7c +0x534c2ec3ffc8d +0x2d88cf8dc9629 +0x1 +0x1794086b36ee79 +0x1eed78f897ec90 +0x59 +0xc4f6a4c710522 +0x1227987c2e4ada +0xc7 +0xd8d8ef5ee32ab +0xf32cc4bae3cc2 +0x24 +0x94f58a233f82d +0x124e56de921db0 +0x5 +0x6dfaf45835f3e +0x1450b2de7b7dd2 +0x87 +0xdfb3e2caabdb +0x18320b8da9a354 +0xb7 +0x1a5d239a7b4a28 +0x81e175ac36463 +0x5 +0x77b3ab36f612d +0xeb8f77fc42e19 +0x2 +0x4826aeef61db6 +0xae48219bd8158 +0x8 +0x11e24cfaeecd9f +0x84d0b97519d03 +0x7 +0x6215f55767f78 +0xbcf7aab5f6300 +0x9 +0x954461a4fad8d +0x333df996eea70 +0x0 +0xfac048a4b7a00 +0x8275a7d94a277 +0x2 +0x72b945b889507 +0x1268ce5cd3c041 +0x83 +0x10830357136bd3 +0x1e6c96c16c5c0f +0xea +0x19fbae964766a1 +0x8a05c3bb7f0de +0x4 +0x11a840d4e182cf +0x50d3fb6f8cb14 +0x3 +0xc713ff76bd364 +0x36283dd7dbd0c +0x0 +0x10a75a2bdcd954 +0x1b25b8b5572444 +0x32 +0x10898d1b6a09ee +0x1f2b82882a3dc8 +0xffffffffffffffff +0xe1cc2ae7b10e6 +0x19f72f7c7e4360 +0x7f +0x132e5b7373236c +0x198711d80a0331 +0x5 +0x1685f8115dca98 +0x488e34bad7fb0 +0x1 +0xde620c9ae35cf +0xe740616df0eeb +0xd +0x136bb462726086 +0x7cc1adc183239 +0x1 +0x5647e85b9305c +0x1c1407e6116ed0 +0x25 +0x1defbcc93fc7dc +0x1870044551f077 +0x11 +0x1816331d74f02 +0x17d789e582fa64 +0xba +0xb3592154d5c1e +0xab310b4abb026 +0x8 +0x1eba08ba2f4c49 +0x1f61c7d3f1ce8e +0xffffffffffffffff +0x1dde2797567cdf +0x66b7588142a3b +0x6f52568e615dd +0x4 +0xcac5efe5e5c87 +0x11d8247e4ed3ed +0x70 +0x15429a2c763b5a +0x1b23853f1e2541 +0x39 +0x48d2ca13c888b +0x11afa7efe2c4b0 +0xb +0xaf9bbfd742f74 +0x10d1a1e1690371 +0x37 +0x1d500671b01403 +0x1379a07b9656a6 +0xa1 +0x15550e0c716509 +0x1c7c8901a7162 +0x0 +0x3864395961c50 +0x196104007a1c6c +0xf3 +0x1bf003ba2e719d +0x1829afd0cfa10b +0xdd +0x49fac823e79bc +0x296b7ec6ff6b8 +0x1 +0x1f5d04f3638ce4 +0x10b2274c2ba594 +0x7a +0xf09a596681cc5 +0x1e6da553aa772d +0x45 +0x19e339c077d868 +0x178aff5c106905 +0x3d +0x1acb61c4b77f69 +0x1b84b6ba0c412 +0x0 +0x1d476f34c42ae1 +0x3bda23287dec7 +0x2 +0xe15aca9783229 +0xf6ccef1bafaef +0xa +0x878e5708ed488 +0x64969b9ea9691 +0x0 +0xe155f4f9cb5cf +0x1db5fea64b6473 +0x28 +0x11edf0219caa11 +0x103c7b186bf07 +0x1 +0x1dc28c2dfb7b7c +0xc913c3b4e077d +0x18 +0x1eed36935d4855 +0x17671933bb728b +0xf6 +0x195a4f93f4d835 +0x1e24d0034310ec +0x43 +0x45fd20be7c2a7 +0xb6355a0334c3d +0x7 +0x1721a380bd3566 +0x1fa77629ac4a4b +0xffffffffffffffff +0x18a5df997eba4d +0x12591c7d20ab63 +0xae +0x383a2e2cc274a +0x565650743d147 +0x1 +0x1bbb1855182c02 +0x1383fdbb16d598 +0xd7 +0x116096290fc2ca +0x94444186afb22 +0x6 +0x2bf4bf1f016bf +0x11232dbb1023be +0x40 +0xae18b1ae279f6 +0x1c1db23ce276ae +0x9b +0x112ceed480a371 +0x1f320cd61b378e +0xffffffffffffffff +0x6ea174ece7e75 +0x1a76ed1a613cf5 +0x6c +0x579b3d1699061 +0x17fb474a0c6c66 +0x1 +0xb003c0ac4010c +0x12a3a5778a768 +0x14ab4d474de4b +0x1 +0x1f6d79ca879616 +0x7baa77f4d1e8c +0x7 +0xae26abc16df24 +0xaff23c1afa4bf +0x6 +0xde3844fd16594 +0x1b8b7ed23b700c +0xac +0xb7190b219f31f +0xb3c569b7a996d +0xa +0xb67e31a72be11 +0x4892b058c07b2 +0x1 +0x1d3fea16ba7304 +0xca6791af3dbb7 +0x1a +0x1e0a3f814d06c +0x528ac3d6abb9 +0x8ca07fc27ea21 +0x1 +0x6d3f9aef1920a +0x2dd834ac801d +0x0 +0x8601e701c845e +0x6 +0x1d9c3e4e209482 +0x5a +0x1a306a51aa0082 +0x5b +0x28e1476b28481 +0x1 +0xe7fab6edc3c02 +0x8 +0xf38c79372b231 +0x19 +0x355d6908f71a8 +0x1 +0xf1938d5535e6b +0x32 +0x669c2b983e47b +0x0 +0x1e90069d927626 +0x5d +0xd5326ccdb79bb +0x1b +0x1fd9abc115465a +0xffffffffffffffff +0x178ad3974d76e7 +0x99 +0x2de1bfe21079a +0x1 +0x145e9a9a9718f6 +0x76 +0x7e13823b6e28a +0x2 +0x141e4dd5edb115 +0x5d +0x5dc88f829ac06 +0x1 +0x1b5713d31d3540 +0xba +0x16706b932b0696 +0xcc +0x8345501b4fdb6 +0x2 +0x11a80a15bc5e +0x1 +0x1d6dc64e475fad +0x23 +0xd2da6f30d1aac +0xa +0x1b82d77c97b790 +0x62 +0x1ff52dcf82659 +0x1 +0x198e4e68a00e3d +0x73 +0x8a7c842441223 +0x6 +0x25be9b98535ce +0x1 +0xbd7792e74ab2 +0x0 +0x17fd29e38f9c1 +0x0 +0x1fd267cde8c8b +0x0 +0x1481f2efb9615f +0x22efe9d49769d +0x1 +0xe478831e289b5 +0x18de8a05535cf0 +0x20 +0x1429e6d0c0785a +0x146d363f2afff0 +0x2 +0xbb80876f58654 +0x151cddb91dd000 +0x30 +0x1e5b14ebb5fcd0 +0xfd2243874ce1c +0x2b +0x170cdaf5b82ea8 +0x1d7040eaab64d +0x1 +0x1fbf7d470ceb39 +0x18d1bb68af91f3 +0xfe +0x14fbf9711d913b +0x1e81d863e842df +0x45 +0xf8b9528ec91cc +0x8c609f805beac +0x4 +0xab496ab271700 +0x5cebefe2a970a +0x3 +0xbc549e062fc11 +0x45b5179448bd9 +0x2 +0x153c3c563084bf +0xfba66ad70f489 +0x3 +0xbdbc78b1ed7c6 +0x6bc1bb0a64bf6 +0x5 +0xb2af3046a9e07 +0x9a4c27fbfbcda +0x4 +0x1a75f4281ef346 +0x4965473274cb0 +0x3 +0xafc056feed2d3 +0x1f8af314959e1e +0xffffffffffffffff +0x1d08aecbb63359 +0x14e0c6de9ce549 +0xc4 +0x19077386ace108 +0x852d5fc582cce +0x3 +0x552906a77b2f5 +0x324b8a06499bf +0x0 +0x115d07369efccc +0xb0953f277771 +0x1 +0xfdd94e359a598 +0x1eaec8c2166f83 +0xf2 +0x17fa301074537 +0xc1700b60f9376 +0xc +0x5d63abfa13696 +0x7b176a8c5a4af +0x4 +0x10181c2b38f40a +0x1aeb50334e8e8b +0xa7 +0x1d9b080ae530ec +0x1f7a7215b169d6 +0xffffffffffffffff +0x194288a1fba567 +0x176c06f5a13767 +0x5c +0xdc90bd0c68283 +0x1eaaf6795da1cc +0xa5 +0x32485bf301a91 +0x163126350bf859 +0x78 +0xf0b699adbaa25 +0xca77024c588a2 +0x1f +0x4f628d8efc205 +0xdd35fa2011b23 +0xd +0x2fedf9bd63be4 +0xf052dbf597338 +0x4 +0xf551c2b56176f +0xac9e3b243057a +0x9 +0x1fcff9265af06d +0x17761ef792618d +0xd47a313952126 +0x1 +0x1a6183ff067a17 +0x22aad48f5dee1 +0x0 +0x42d243c43237d +0x104e9147caf40f +0x8 +0xa33cbb9a5062e +0x3a7cee8e83945 +0x0 +0x12f6fdcc015dc6 +0xa90b0f30a5116 +0xd +0x7b9323ad8ad79 +0x190a175515fbc7 +0xde +0x8c4dc06668d3b +0x1f36c8bb75b6be +0xffffffffffffffff +0x100caae7f2a06f +0x17ee1c4af081bc +0x90 +0x1d2c9878e212cf +0x18ca618cf58994 +0x57 +0xf859267b74da1 +0x176484166f4416 +0x52 +0x85f518cea6de8 +0x7b12c3a4d6cf2 +0x1 +0x1ca911b0dcee2 +0x1f77607b8f6454 +0xffffffffffffffff +0x1350a5b75e1ef4 +0x12b27be2d8024a +0xbe +0x49002e4845c3e +0x1c30bb9118598c +0x89 +0xbe395293c334e +0x2cf040f7087ed +0x1 +0x1cfb0534a0bd8c +0x170449f8356622 +0xc +0x195735fcce9c29 +0x1cd00c6ad1a7bd +0x69 +0x10ce911dcb1504 +0x113683b1d8e777 +0x54 +0x1031dd25cac1c4 +0x124f3f38e4e304 +0xa4 +0x683d9329b5586 +0x118377212234d4 +0x75 +0x10be82ea7b9bee +0x12b80203b8c4b3 +0x95 +0x12f69fb0917165 +0x9881f69dce4ef +0x6 +0x142ce0c37f9625 +0x1b20361b4fd2f2 +0xb5 +0x19f5d499b3e235 +0x14151a5cbf1ad8 +0xe0 +0x3853217dd0a44 +0x10a24d26619666 +0x3c +0x18eda15521e73b +0x81f096a61d9f5 +0x1 +0x5664c2e1905be +0x5a2d68508c834 +0x0 +0xf42c5ac07973 +0x387494adffb2e +0x0 +0x10503d99adbada +0x1c6e3cc44a5d20 +0x67 +0xe1db04696e945 +0x13d93619bef06d +0x50 +0x12e6f5cf8bf09b +0xeeb334a97c862 +0x23 +0x128c877f64477b +0x155631ecdc0b30 +0x0 +0x1681ee90774207 +0x5220728f3dbf2 +0x1 +0x8adca89521340 +0xe238540a61b72 +0x4817a7518a7f9 +0x1 +0xde7ea54c78801 +0x154755ca9fd3a7 +0xbe +0x3b56bcf1b3fd9 +0xe4d657364e603 +0x1eef94473121c1 +0x12edabd727df94 +0x5f +0x518eee8f73e2d +0x1dbb15bc41ba01 +0x164292ef122e6b +0x20dde628fbf4e +0x1 +0x1c77c008f620a8 +0x1f4401b95d460d +0xffffffffffffffff +0xc48da8b7a7ebf +0x1e372bfcbdb223 +0xc3 +0x2e1471c7f4a39 +0x171e972757b2d3 +0x1c441ee1c1b662 +0x18ecd524203b38 +0xf0 +0xf20eb66bf0a4a +0x394822b6983e8 +0x0 +0xa4e3281216649 +0x1a626027621560 +0xa7 +0x13427c2f4787 +0x1ac91492e429d5 +0x2e88e3bba9d62 +0x13a3ea982a22de +0x40 +0x1ce2a51f55142e +0xac23c8c8c5738 +0x0 +0x91a73ac820e22 +0x1d4ce36dc2c9ad +0x57 +0x362143b732220 +0x102f9d3824f781 +0xcef2c953fd5e6 +0xaeec42d16d9f5 +0xc +0x871120b67df26 +0x11c5841a625ccd +0x4a +0x821c24b819f7c +0x17d2e6608ae154 +0x8e +0x3db0b13b60a40 +0x138c61ff412737 +0x13fefb3a3920e9 +0xc878890017c9f +0x15 +0x2c0ac3e60a424 +0x134bc5d6be0546 +0xbb4b6fd5723e2 +0x17fef5ef979d44 +0x63 +0x1fdda1031ac3f2 +0x1f6f943c5df5e4 +0xffffffffffffffff +0x4d3a2e174bd57 +0x9b2758f1a3746 +0x66faf20ca53cc +0x125d6d8443949 +0x0 +0x191fe646ded9c2 +0x284091e4b4d63 +0x1 +0xe11ef16dfd3b4 +0x1d6b13acf080d4 +0x32 +0x49b288c374e33 +0x1a945f76613b3b +0x174f37247d7c6 +0x1d79a04f558ce3 +0xf0 +0x757ac3834bbca +0xbef35b950e0ec +0x5 +0x178fe6b7d7d73d +0x90a96082fc97f +0x0 +0x8611fa91f36cf +0x13936927ffe1d7 +0xe5 +0xcb5a557519bac +0x169e6e57d34326 +0x4a +0x1c399a9b1a2007 +0xd522324116f84 +0x1f +0xea2872d53e0fb +0x133bd2609d550c +0xff +0x9331704893944 +0x169278565d992b +0xa +0x1a9079c1e554e6 +0x12fd0e059d6dce +0x1d +0xdaa64de6c9617 +0xbb2760674437 +0x1 +0xb6d4df09fed83 +0x1bd1b572687bc9 +0x1 +0xf0508ed56632d +0x186f4d7a523598 +0x34 +0x88c5346f0229f +0x14aa498ed93e2c +0x60 +0xd7444fbb565f0 +0x1aa47e7e4f09f +0x1 +0x1d21abed4cc231 +0x1a7e5838d4609d +0x84 +0xa6b36dcb0bf5f +0xe34986411d790 +0x1b +0x17e4e5f193cf29 +0x4898b4b1bdc4 +0x0 +0x7bc9b95130b9b +0xe0e6ee55d942f +0x1 +0x10b7715d67846e +0xdbca78c7e5ed7 +0x1b +0x1da0814adc43d0 +0x1ebc8efffd321c +0x4a +0x7ccf12a404be6 +0x19585807c09a69 +0x1a +0x179c35c4d37326 +0x182a08d63011f3 +0x9 +0x1788502b3dfe6b +0xc6482224a8278 +0x3 +0x2832e2a0750d8 +0x19858c88f9e5ee +0xf1a806f84ac5e +0x834779c5a69a9 +0x3 +0xea4a064947c84 +0xae605ca384851 +0xf +0x1fb87c4d6ca427 +0x100c398a4ad621 +0x10 +0xdf8a4661e0245 +0x65baa28928979 +0x3 +0x1763c67a84ab36 +0xc958d63c11f77 +0x0 +0x59dd13cf91510 +0x1c88a11156b081 +0xa0 +0x67df037b58f59 +0x12b43d083560e8 +0xdb +0x3d53715481df2 +0x17bfab07e1ce70 +0x1f511fccb7d54 +0xbc7934c6d1b3f +0x3 +0x48867411016fd +0xed1f55769b9f5 +0x9c88073533ec +0x1e663ce5348588 +0x49 +0xe799215a1e6d9 +0x1b50fb86c9223b +0x35 +0x77f31f3b56a8f +0x112aa34b1d076e +0x2f +0x1b901dccd1afc +0x1d3788b80704d8 +0xfe22ccb540c87 +0xa9c2c9744716 +0x0 +0x4139d6a71da6c +0x17467ded712d53 +0x69b01ac8a12fe +0x19cef9ab76f6df +0xc8 +0xa3ef41ceceaf4 +0x1fb3c4dd8999e1 +0xffffffffffffffff +0x19107c425fa38c +0x1a863254406b28 +0x77 +0x1669987dc7e165 +0x7c97b674eb417 +0x6 +0x18f16de4561389 +0x125885e7b71077 +0x76 +0x333f64180777e +0x1d86ac23acd834 +0x16598db12d53dd +0x6ef8ffa7f1c7d +0x7 +0x14b4293bb0b574 +0x89fc4e7090654 +0x0 +0x68ac27dd5a651 +0x134041b3c2bc26 +0x51 +0x1733aeb98c018e +0x1b8c2a60ef641b +0xb1 +0x1a5caf97eceee2 +0x1ede87f34fa52c +0xf6 +0x9c3c1fcf6247d +0x1d143e82768c88 +0x23 +0x123916be03a0e7 +0x1ebef4ea1a0c5b +0x36 +0x187988d0ab6bd1 +0xd9aa2b9397f7d +0xf +0x15804a1ee88f82 +0x1e223a12a0ad42 +0x8d +0x2c4704d4deabc +0xec18eb3b318ae +0x1e322aafa32535 +0x6244c121b07b7 +0x1 +0xb5fea51775bb0 +0x1470a0fdd3e0a9 +0xed +0xc31fde3ea2af1 +0x1fd7436052ffec +0xffffffffffffffff +0xc01340ea4a164 +0x11a7acd07a28fb +0x2b +0x6560d5268d7 +0xcfb46842c453b +0x79e5e17956fb +0x9cb8b742ca20b +0x7 +0xda1b07a9b09c3 +0xfbb193bb60e55 +0x9 +0xb61f0083458fc +0x165bcb1a93d35 +0x1 +0x8ffdb5f6af0b1 +0x499a4b972771a +0x2 +0xe1501df512ae4 +0x1b67d4c2ddcbd5 +0xd0 +0x10d3f656bc53e6 +0x15608bd8c5835e +0x84 +0x89666e5fc3b21 +0x18caed7c3b85a7 +0x20 +0x11fc519bcbab62 +0x9ba09eb14d980 +0x2 +0xfc8bdd2a2c54e +0x297fa490ebed9 +0x1 +0x10956dfaf0a3b0 +0x14a77e50cabe28 +0x57 +0x5b4d918e69a77 +0x189b7112a2d370 +0xbf +0xb3e568b76099f +0x1146636bb7c94c +0x11 +0x15ce00769d1ce6 +0x55954798ed1d1 +0x3 +0x489149a68b3b2 +0xbf0b0c9aeb063 +0x1c13685cdde787 +0xafd9af99160da +0x9 +0x147b29c58afb2e +0x18e3605f2712ce +0x71 +0xdf83de35afaa7 +0x15076c51caa062 +0x61 +0x1e642cd471db75 +0x16295071e44913 +0x27 +0x1e2e714e315abf +0x612303a967fab +0x2 +0x1241cdf4c7583b +0x1a875a4b4bb7af +0xf7 +0x18bb4fe7346ece +0x10a2046836af7 +0x0 +0x1517c9b2d7272a +0x9a9cba840029f +0x1 +0x135fb4f560502d +0xae07d95d99134 +0x6 +0x197606b182eda8 +0x866d22113055 +0x0 +0x3131f90b8bbe1 +0x120f5dc1c1c17 +0x183418b667410b +0x0 +0x1a8c67b622a499 +0xea12f94573bd0 +0x36 +0x19f75cd2b75ffb +0x79 +0x2b5f50a77f7b9 +0x1 +0xec63b028e5a34 +0xf +0x1ef2d561a2b1ea +0x8a +0xabcbaad8ba122 +0x7 +0x1e962cccb8b0df +0x7b +0x143de36d176a5b +0xef +0x1ba0a09baf0169 +0x38 +0x83516c0758ddc +0x2 +0x1ccea6c43bbc2 +0x1 +0x1df5a9e7458849 +0x1d +0x1378962c7ab608 +0x3c +0x1040f463732a88 +0x49 +0x2253fd8946f3e +0x1 +0x1b6c8ea382e852 +0x3f +0x59ca274f712b7 +0x0 +0x1b24577eb3da6e +0x2e +0x34e308f6d6ad8 +0x1 +0x535f28b86dac0 +0x3 +0xb1c4a85931b95 +0x9 +0xb469fa190ad69 +0x2 +0xda25500fd4563 +0x12 +0xe44bf403c0def +0x5 +0x10e04291949da1 +0x1b +0x17167d7d106302 +0xba +0x138daaf9afa5f6 +0x20 +0x15c17da5c8f613 +0x4e +0x14126ce310aa5c +0x44 +0x10735e788285e4 +0x4a +0x1e240177186644 +0x9e +0x9eccc100e937b +0xd +0x1f2160b23d3bb1 +0xc9516b86 +0xcb737f4b4f1b3 +0x17fec740ba5707 +0x6f +0x19284032df8f89 +0x138044e5ea470b +0x2d +0x1366bb422e1975 +0x139161357f6bce +0x82 +0x1f6baa685b46c1 +0x1089c56b676755 +0x17 +0x12d7686f119f19 +0x1edd5eb1b9763e +0x76 +0x1e377cc9036509 +0xf455cd03dc84d +0x36 +0x12d7992bc23b59 +0x1535cd32112599 +0x82 +0x13e0fe1f9c0f14 +0x19dc70f315f5e0 +0xc0 +0x16b6874e27014d +0x1f997e223508a5 +0xffffffffffffffff +0xfc0a2c0738a57 +0x1a35d8e4afb29f +0xef +0xd7f8dbf1e3596 +0x438998fe2a9c6 +0x1 +0x71b57b38bb0f4 +0x11e36f3119a67e +0x21 +0xa9141a599e55d +0x16004805c498c5 +0x49 +0x1eddfaff4eb3e3 +0x11c5a95223dafc +0x22 +0x1f2adf91b38852 +0x16c678b5d9ebfc +0x76 +0x4139fcf3468c7 +0x588d7decdeb23 +0x1 +0x1df41833cdbfe0 +0xa7cd3583aace1 +0x1 +0x10fb1b4546efb7 +0x5824ae0a5fbc4 +0x3 +0x13723a08c1b329 +0xfaedd7fd0ba31 +0x22 +0x124af120f69144 +0x1e93c45bb16432 +0x55 +0x1cae6159b69e71 +0x15ae3de6ebaefb +0xf8 +0x9c33701ad3375 +0xf6a30c98acf22 +0x19 +0x1ac3367e187bdc +0x1daad84f750b5f +0x94 +0x1bae686945add4 +0x1b5bf74d62fb9c +0x8a +0xa94684d54143e +0x1f175933fb81b8 +0x3f +0x916c38e5283e2 +0x189be2df9370b5 +0x9a +0x12f29f5fd6eb6c +0xa280dd1eb4c9f +0x1 +0x189cbb40a3a50d +0x17868ad77443ab +0x64 +0x1114b149459417 +0x43656036e7cbc +0x3 +0xc9bdc13602dd7 +0x999e951e44df6 +0xa +0xa292d9183b480 +0x5fc80e41f1fcd +0x0 +0x8e87c8e58b34d +0x19aad1adf63fb +0x1 +0x62421a8727ae9 +0x23e9665c9fbd0 +0xfae7a3a05069a +0x3c +0x16c40b7a011adb +0xd0ec3c26b0b81 +0xf +0x677f0175c952d +0x1924e82ef1679e +0xff +0x3882991467b1f +0x108032a8473c82 +0x3d +0x12df437019773e +0xb26ac2398d95 +0x0 +0x1673d216d06716 +0x110465f552870f +0x20 +0x1de54ae522d617 +0x1e12761b73bc8a +0xda +0x85bf42f4ef269 +0x167fb3a833653b +0x88 +0x1ff8f663b788e3 +0xa8d1bf9ffef64 +0x8 +0x1712aa2c2ff248 +0xd22645f01ef7d +0xb +0xb3aec09a5c075 +0x4375305e0c9ff +0x1 +0xc0d8537f254e0 +0xad062fbf55424 +0x3 +0x18507fbbe0309f +0x88d00649e0a4b +0x1 +0x141a472e013cc1 +0x1daaa56c07530f +0xea +0x133e8a0bec5700 +0x1ddb60963924fb +0x5d +0x110f9fd9f228b6 +0x15247fe72a74c6 +0x5 +0x18df74d2146ec0 +0x489cd4c678a6c +0x3 +0x1e6695579734e6 +0x125a4c8ab0a79 +0x0 +0x47e6114451240 +0x180ee7ed0e5414 +0x30 +0xb7d4eb16a970a +0x1e92e0d453091d +0x66 +0xd29b1c2a3152d +0x42ac14a1a562b +0x3 +0x1c7b3ae3f33c52 +0x519c0acf0ef74 +0x0 +0x117fb9a029f91c +0x19749f6c5fcc88 +0xed +0x13ce3fc03b7055 +0x147e55c0cbfc72 +0xc1 +0x17ea990d12e83b +0x1eb9063683532 +0x0 +0x108cf53ce127e0 +0x1ae05cc79b71b0 +0xcd +0x9810f52f6ec6b +0xc6356d92abce2 +0x14 +0x154ef5c11947d5 +0x11ba5f1673d67a +0x47 +0x155058241c8312 +0x15523a1395e638 +0x68 +0x57d4e6584cf5e +0x2588b84549ef8 +0x1 +0x16e3b31babfdd1 +0x193cc992acbd10 +0xe +0x103b46590ec564 +0x162a4711e266fe +0xa0 +0xbcbc8f7a6f30a +0x94bb878e061fa +0x0 +0x11db4598ae4bd +0x1ade18c9056276 +0x152bc88a978cc2 +0x36 +0x1a7d9ccb57a9e3 +0x1d72bdb6c42dd0 +0x25 +0xdb501de414d5b +0x28349aa0807c4 +0x1 +0x116568a42f01f +0x18e56389f84468 +0x5a01ab53fe371 +0xf83680d70ecf +0x1 +0xeea7a49ee26ab +0x10fac5f983ff +0x0 +0x2e1193423dbad +0x15ee5c139de434 +0xb6de3aa7d7626 +0x5e1be6b4eb72d +0x2 +0x851fd28f7089c +0x56e95a1d3ace6 +0x3 +0xa7012147e6d26 +0xb9e8331fefbc8 +0x2 +0x130d53f380d36a +0x9b29b602f880 +0x0 +0x81ad3835ef5d3 +0x39602bd6c2bc7 +0x2 +0xedc9e3bccd510 +0x161a14c2dd61ef +0xb0 +0x19256465df9bf8 +0x146ef6aebec781 +0xf9 +0x1913053bbd7fdb +0xdfe29ee91dc79 +0x3 +0xc1dc54dcd06b6 +0x200376c95d0d1 +0x0 +0x1e57de8357fc91 +0xcf6b5677ea708 +0x17 +0x1a1d86572acf18 +0x18d8a51900b97e +0xe5 +0xac2f3762cf0cb +0x8aaa428ffa3e8 +0x2 +0xd0ae3e3853c0f +0x1d12430fcd25f +0x1 +0xff210a46468bd +0x16eb6430f1ebb4 +0x36 +0x8fa06b844cd53 +0xbe48a57d65e14 +0x2 +0x18e616e764f44e +0x1835d37aec0158 +0x79 +0xa9a96822d7df4 +0x1a01004dc8dcd2 +0x2d +0x1e8e1abc047546 +0x1be95b3707855f +0x1a +0x1dc5a9d0ee3087 +0x191dc1f1f10726 +0xbb +0x8b8b071c2f44 +0x173d3f090202a4 +0x1589af66601f10 +0x7c23a296e897f +0x2 +0x531a1603e7cd +0xbd847558e03d3 +0x8b377ad3221dc +0x1015ba7c48405d +0x34 +0x153c3e05ae1c48 +0x18681791ba930 +0x1 +0x12f45e4551f97c +0xad3803bcdc9ea +0xb +0x14372eb6c1c952 +0x14b46451bdc6ca +0xd5 +0x16054b9de68c0e +0x1080f26518844 +0x1 +0x141256c6bc3c8f +0x4799d0216031 +0x0 +0x179d4cd50b3ac4 +0x1bef4a2989f631 +0x50 +0x52b9e98eec1e5 +0x1560b94643a817 +0x1b8aa74bd8fa45 +0xf929bab7049f9 +0x20 +0x1ac6f01f20cf6d +0x1894cc8dc12fc8 +0x64 +0x12170e3ed65941 +0x1eef159f035eee +0x8 +0x84c1a5e100016 +0xdb4fce88de858 +0x1f +0x609b8a2cd67db +0x1e70f1173b96c7 +0x9f +0x1dbac0b0942147 +0xac20d6d3bcc79 +0xc +0x897a844e4efc3 +0xc72e747714262 +0x5 +0x1fe738f11dba58 +0x1757886d113e54 +0x92 +0xe40d8c42f270e +0x10087eb375693c +0x14 +0x135bd014f757fc +0x156494ddfdda1f +0x78 +0x1471e467c19b41 +0x1722f680ced216 +0x70 +0x19185cd59ad1f +0x23abc00164e91 +0x2a538954fa6b4 +0x0 +0x10ec668d4f5c7c +0x1056f70dccc15f +0x4f +0x298e8ecd2624c +0x1 +0xf3b21655bf1f3 +0x22 +0x1fb46c97efd980 +0xffffffffffffffff +0xf2f18ddc892c4 +0x28 +0x10c679a5e356be +0x6d +0xd1494ac8c00cb +0x1 +0x1402bf83533ebf +0x74 +0x1242bab138f082 +0x2a +0xbc511136d6024 +0x2 +0x193d9ecd1e3233 +0x52 +0x18d11edf5f9947 +0x35 +0xad8da05ea766e +0xf +0x1b3f8cd2a23bb7 +0xce +0x9f4890500bbae +0x2 +0xf88725cacb8ff +0x3e +0x148aa6f3ec4e28 +0x6f +0x19cbb19befa671 +0x6b +0x1122714f1ed617 +0x59 +0xc3e1272be8d4b +0x6 +0x187dffe2f6bcd4 +0x90 +0xcb21444d65b7a +0x14 +0x1c66ac5a04ef33 +0xe7 +0x156d6ce201bd20 +0x3b +0x1a2c8f3029ea08 +0xc +0x6f035e8056fb9 +0x3 +0x1968aa72114ce9 +0xa8 +0x15ba1971af07ff +0x8e +0xffadf889687bc +0x0 +0x1d32bec35d4fbe +0x9b +0x3daa16406be93 +0x2 +0xa5f8d9daac009 +0xc +0x7dc6140a5cad9 +0x1 +0x1a232ab3ac7b02 +0xae954afe48ca2 +0x9 +0x17115f8056f7d1 +0x33e86e4be876b +0x1 +0xc51b6b2790f53 +0x133b81ef8a05ce +0xf0 +0x58c5c6d509b6 +0x14be20a83814b7 +0x6 +0x176eb2696a6046 +0x16b8307a14083d +0x9b +0x1d259452b6ff9e +0xdec8a59ac58cc +0xe +0x1c79c2477cafbb +0x13f7f9a00d02f6 +0x3f +0x1c57012b4aa12c +0xcfa8a4390e73b +0x17 +0x14d42803ee5ec0 +0x17c48b1b5cbcca +0x74 +0x16208b64aba79b +0x38b037116a60d +0x0 +0x1af3956594796b +0x3aeaf50fce414 +0x2 +0x11c64cbe146dbf +0x141002f6c761b2 +0x46 +0x4d5a27d2629af +0x17bfccdecd455d +0x7c +0x1a6336758e8871 +0x8eac07f155e39 +0x1 +0x14aa42253b8748 +0x7d62d24d3ad45 +0x6 +0x1bd6096cc1f93f +0x11704003bcde1c +0x2a +0xc217b11536693 +0x13bca3d9fab2d2 +0xf6 +0x1ae4f5e7112e72 +0x137b9ba5276d5 +0x1 +0xe73514de75ab2 +0x1c7aa487129433 +0xdb +0x1134c5a0854b39 +0x11d7dedfd467fc +0x27 +0x1797ff36e548ce +0x320d5d1996a94 +0x0 +0x1add721a572a7b +0x15df71c79c7394 +0xc4 +0x9c5f7cb4a498e +0x1d529635ed3895 +0x3f +0x159091ba11fc0c +0x4ba92c86b7386 +0x2 +0x1b406bb7057f51 +0x80d8f4f1b3096 +0x0 +0xe5ba4b5aab1df +0x14231837715406 +0xec +0x376fe776f6093 +0xb112807e85926 +0x4 +0xce25016ff5a8b +0x1f11ad7edf4e9d +0x3a +0x164d2341b05fb5 +0x1262d6781b9bb7 +0x69 +0x19b37e8cacd54f +0x15abacb31e3dd6 +0xba +0x1f6f52f588c775 +0x1e0d5c44497722 +0xf4 +0x1dbd7201b33266 +0x18e129aa36a579 +0x6f +0x197ef3b8299846 +0xc199b8bbbfcf5 +0x8a3547886276d +0x5 +0xf1f41f7c3501f +0x1b7525e1870dc5 +0x20 +0x130fee55e2b086 +0x1cfbae0a88af24 +0x30 +0x5ce3353ea95c9 +0x16843c32a75c32 +0xe1 +0x18043a533df5e7 +0x3783bbfc4dcd6 +0x0 +0x10c804479d35c4 +0x4d49d461b3ab3 +0x1 +0x1d5484b976b873 +0x6fef3fd849a95 +0x7 +0x1c059fababbcae +0x1d6023ff06beb1 +0xd6 +0x155b582f4467a3 +0xd192a67a1912 +0x1 +0x615ab506ece01 +0x105a5ad1d858d9 +0x43 +0x13fc6cd015b690 +0x4fdeff6d52e96 +0x2 +0x14bf6394bba947 +0xc465a40a537cc +0x19 +0x815a56896525b +0x168fbddb37acc5 +0x59 +0x140486992879fc +0xf06049ab3a14 +0x0 +0xb43745718faae +0x8dc5b0aa83f48 +0x7 +0x106a55c5794dad +0x13d49e3c12b229 +0x96 +0xc16bb9a1f321f +0x34c49d26e23dd +0x0 +0x1c2a9deee465b8 +0x1661456724362 +0x0 +0x1f4e6a134cf830 +0x11dd5b03ccda30 +0xb +0x4b53444cfdb83 +0x11e32f1cb908c7 +0x63 +0x1db93ec738aada +0x15aef9a39247ff +0x41 +0x34eb06b52a114 +0x159efd55353e3c +0xc5 +0xb316da1a20917 +0x2064c32b8a78e +0x1 +0xf1069920a4005 +0x7c96f0646b2de +0x2 +0xd0b7d3bfdc5a8 +0x541ded1b170f8 +0x3 +0x17b35adbb40acf +0x15f379d5fc558d +0x41 +0x1ea264a13e776e +0x1d1c20178ea438 +0x41 +0x149858399eb8f5 +0x1bf65bdfffce8b +0xc +0xccd676160ac3c +0x1c4acd0c09b010 +0x89 +0x1ff9eefde9a381 +0x19f45b71052f9e +0xa7 +0x33437f1f6b23 +0xf22a86dbd4b49 +0x8 +0x41992e43e11c1 +0x15dee0ec2369fd +0xbd +0x141b404d7f9751 +0x18701abfbae671 +0x1 +0x1498da574c08d4 +0x4c5e48641f2ea +0x19f523d6801628 +0x46 +0x1b44185cf110b2 +0x69a8b86c93182 +0x1 +0x10cfd1ce3d17ac +0x182096c6c4b135 +0xc +0x1464a025050028 +0x7474e9d7dc8ac +0x0 +0x1b24615d619b66 +0x5705736152238 +0x3 +0x182dac54de00f4 +0x3fada26067497 +0x2 +0x121dd311a7e817 +0x18d0d801161cbf +0x64 +0x811de5fba4c61 +0x1e5b26d3090048 +0x26 +0x22dacb54a627d +0x5b45be7e7bb57 +0x193d6a7fefce75 +0xe482b8386271f +0x24 +0x1cae2254d60a3e +0x5bb059b26d798 +0x2 +0x691ea0c5de493 +0x5a8d8620eca43 +0x1 +0x58c605383ec28 +0x12db998055d370 +0x32 +0xbb70ea7aaaf55 +0x5f577eff180d7 +0x0 +0x9af9b0a429b66 +0x1f192cc7a60e13 +0xae +0x153d2c273eb9c3 +0x1d27f47554b82c +0x2a +0x71c42325c28b4 +0x57b8262e2b8af +0x0 +0x1dc4dc1e93987a +0x3981cd7ce3035 +0x1 +0x892116e5eccfe +0x1253ca54aed4f3 +0xc7 +0x2049f90c5ef2 +0x489596013cf95 +0x12c0a204e80d6d +0x1 +0x1d4f8da615220 +0x15fe66e8c144f3 +0x0 +0x97eb8dc8ebcc0 +0x9586d6567af01 +0x3 +0x76c611e328cab +0x13426ee18ea0eb +0x1f +0xbaae303018802 +0x1bd64b1ab57ebc +0xf2 +0x21f3ce35152fa +0x87a3a79ccd536 +0x6 +0x7787204cb743d +0x1fd817cf751442 +0xffffffffffffffff +0xedaec7392f473 +0x11cffe25ef5faf +0x6b +0x2bbf5c4f765ef +0x4a83b8f008a8b +0x1 +0x7c3962b348dcc +0xabfbf03a7d349 +0xf +0xa25186f7f1b43 +0xad01aa6a584d6 +0xe +0x18ddba17dc9fd1 +0x1b794d35fcbdb3 +0x24 +0x942720c072952 +0x1e5f60e4ad2611 +0xd7 +0x1942ed68a5e62e +0xf4ceb4efaeb8e +0x7 +0x1fe2cbad241c5c +0x70dac004b7bc9 +0x3 +0x7aebebfa5b74c +0x13d6a91b3ab38f +0x62 +0x15c072bf4efee6 +0x1af17f7fee388c +0xde +0x11a72004f3814d +0xefdd1ab272eb8 +0xd +0x81dab396e53dd +0x161fbd170a7af2 +0xa6 +0x695fb7bad5574 +0x4061606e3484f +0x3 +0xe1b3876f4636 +0x1fb1fc3b096ef6 +0xffffffffffffffff +0xa6b482f22125e +0x194efb4688f8ee +0xfc +0xfada8b98487c9 +0x715f9dcd9f223 +0x5 +0x10723204b767fa +0x1f9380716d6070 +0xffffffffffffffff +0xd22e177f106ef +0x16d5767b529d9b +0xf2 +0x1322a5a7323426 +0xb7d8eafbad79c +0x1 +0xd15ee909ef90a +0x8bec1acc5595a +0x1 +0x3ddcaf65f8a43 +0x74127b0f34428 +0x3 +0x1261617aef8abc +0x1453db760f226c +0x47 +0x18e233bdc08d34 +0x191994a67bfc7f +0x22 +0x766d47d82e462 +0x1aedc24c70c485 +0x2a +0xed7651fc9555 +0x174c6910daad24 +0x76 +0x133ed854fea172 +0x3973172c7deff +0x3 +0x12205c1ab91026 +0x9701c51b1ee9e +0x3 +0x11e5616832cd95 +0x1030c7137ef570 +0x19782122237211 +0x59882 +0x1e01a77e34ddef +0x4dfc0b5f +0x21a974d36548d +0x1 +0x1188363f7ab34b +0x0 +0x42122b634cc6c +0x12dbaf819b995b +0xbc +0x1276dee17b5937 +0x2b349f410b234 +0x1 +0x2a058c037edae +0x14d0aca8b1fced +0xa0 +0x1e7993fc283328 +0x1301cccb784d50 +0x7b +0x1e436ba46da3a5 +0xcf172611df6ca +0xc +0x13da5200abec59 +0x50eb747701c2b +0x0 +0x24cba8dae0058 +0x164ebbfd139730 +0xbd +0xbc4c177f3c779 +0x1e13bf079eaa97 +0x6b +0x1ad1173172367f +0x7701a8b5c8d2f +0x6 +0x9c8535f19c93 +0x1c3b555074db76 +0x6f +0xfc718884e0f7d +0x1631f565313877 +0xa7 +0x1ea3feb19ab19 +0x1e27bcf1d2dd45 +0x99 +0x1902acf831abd1 +0x14499b32ca8043 +0xf4 +0x1d1cbf68c5b809 +0x18bf7e8cfde533 +0x45 +0x88e1112aef20d +0x6b9d20da7e6 +0x1 +0xd5b75b6c7946b +0x13e9e53880f32a +0x27 +0x1b0c11d39e8cf2 +0x79983326feb03 +0x2 +0x937b3343c256 +0x1fe0c3abed0c5d +0xffffffffffffffff +0x1a84ae1c6d1113 +0x1cf1449e30a0b0 +0x12 +0x1d960eed4727f8 +0xde07dbd4f4f2 +0x1 +0xdf194376951bc +0x1d67c113968948 +0x85 +0x10533cb3dae9ae +0x9996961b582aa +0x0 +0x16e0731bc49548 +0x1aa471a8a2654a +0xea +0x16cbd3e74a366c +0x1100845e994118 +0x11 +0xd49b2dd6adc4b +0xe629f788a7120 +0x1 +0x1d3e47b8f86948 +0x1b403b7e8c85f +0x1 +0xad9ad886618b +0x94651dea4bca5 +0x7 +0x1925143391c7e5 +0x77ba386f544e2 +0x2 +0xe643d738a9849 +0xa48862f29098 +0x0 +0x4bf8671061499 +0x1f369ba2b247a2 +0xffffffffffffffff +0x1f22837dac66c6 +0x46f4622249e52 +0x2 +0x25443b21f82c2 +0x1009eed7a02d90 +0x34 +0x11593254327079 +0x0 +0x86c168168d389 +0x171a70c07a0ae +0x0 +0x1 +0x12116035d5c6ac +0xb7e497d14eaaa +0x4 +0x172462ff09dfff +0x193d3a5a266d44 +0xe +0x16f823d525bb52 +0x1e182567caa1a5 +0x1c +0x482b55bdbd6ba +0x11d6fcccfbada6 +0x49 +0xd11535359580a +0xc113290cbb1ea +0x1a +0x1e4a45210b0540 +0xad39777e6fc15 +0xa +0x151deb5c538c91 +0x1252c08fa32cf0 +0xbe +0xda8bd297eb20e +0xbf010db03d116 +0x4 +0x1ba3455a760de1 +0x162b9d2f871829 +0x69 +0x18ac36a35d7397 +0x105c4a5b9308 +0x0 +0x106a972dc15895 +0x12a4b99c124329 +0x30 +0xd7a6eee67e450 +0x1bc4a9f1633375 +0x36 +0x189b2743f65709 +0x1a3f7bbcc14c05 +0x19 +0xe7ad470b37d9f +0xf960e404c72db +0x3d +0x1662b6c1ba9cc4 +0x15a732c4b79871 +0x7b +0x180d7167b8b5e2 +0x174a6f8032fca +0x0 +0x1c433736e9889 +0x1f7eee305c728c +0xffffffffffffffff +0x886bda26b458a +0x723a6cb252f20 +0x7 +0x809267458eb44 +0x137744cf7bf74 +0x1 +0x172b32e94fedfa +0x304cceb9d8ad5 +0x0 +0xd75898c797202 +0x1cbb75aad542a7 +0xa1 +0x663c3f12ee8bd +0x603e89e03b29f +0x0 +0x1d27b32422d3e4 +0x117b0323443254 +0x1d +0x1fc6541fdcc510 +0x1b465310522817 +0x28 +0x1c579c7880a484 +0x185aeeac1ccbbd +0x57 +0x4da5acdc6ec31 +0x309509355223 +0x1 +0x1c0f34a5ad52e6 +0xb969be1f05653 +0x7 +0xc871124c66bfa +0x2c3f124123a76 +0x1 +0x1d43f83c38645c +0x88513212b415c +0x3 +0x376b8f32ff9a8 +0xf2955dd790ff1 +0x15 +0x134ff1af4d3b1b +0xee4041ae4c9bb +0x33 +0xb06941602a40b +0x1b8735d3876f85 +0x47 +0x40d1147eb1043 +0x1234802e2ec29e +0x10d \ No newline at end of file diff --git a/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172123-1612976.fail b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172123-1612976.fail new file mode 100644 index 000000000..38dd2895e --- /dev/null +++ b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172123-1612976.fail @@ -0,0 +1,1571 @@ +# 2024/11/11 17:21:23.769342 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw genesis: asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x0, 0x82, 0x0, 0x5, 0xff, 0x0, 0x2a, 0x4, 0x23, 0xa3, 0x2, 0x3, 0x2, 0x2, 0xc, 0x3, 0xff, 0xb2, 0x22, 0x78, 0xa1, 0x1, 0x4e, 0x2, 0x9b, 0x2, 0xa3, 0x2, 0x17, 0xf, 0xf, 0x2a}, Index:0x1}, Tag:"˓+/", MetaHash:[32]uint8{0x3c, 0x7d, 0x82, 0x6f, 0x33, 0x2, 0x1, 0x3, 0x9, 0x4, 0x0, 0x63, 0x0, 0x16, 0x1, 0xce, 0xac, 0xd, 0xd8, 0xb6, 0x7f, 0x14, 0x5, 0x1, 0xbc, 0x1e, 0x7, 0x2, 0x3, 0xe4, 0x0, 0xe9}, OutputIndex:0x291, Type:0x1} +# 2024/11/11 17:21:23.769547 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw alt_leaf: asset.Asset{Version:0x0, Genesis:asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, Index:0x0}, Tag:"", MetaHash:[32]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, OutputIndex:0x0, Type:0x0}, Amount:0x0, LockTime:0x0, RelativeLockTime:0x0, PrevWitnesses:[]asset.Witness{asset.Witness{PrevID:(*asset.PrevID)(0xc000661dc0), TxWitness:wire.TxWitness{[]uint8{0x1, 0x3, 0x7, 0x1, 0x2a, 0x1, 0x5, 0xe0}, []uint8{0x1, 0x18}, []uint8{0xf1, 0x6, 0x3, 0x2f, 0x52, 0xdc, 0xdc, 0x91, 0x5, 0xd}, []uint8{0x0, 0x1b, 0x2, 0x25, 0xff, 0xf, 0xf, 0x0, 0x0, 0xe5, 0x3e}, []uint8{0xff, 0xb1}, []uint8{0x10, 0x1b, 0x13, 0x0, 0x1, 0x7, 0x4}, []uint8{0x72, 0xd6, 0xc6}, []uint8{0x1a, 0xbd}, []uint8{0x20, 0x6}, []uint8{0xdb, 0x9}, []uint8{0xf1, 0xc0}, []uint8{0x93, 0xdc}, []uint8{0x3d, 0x1, 0x36, 0xf8, 0xff, 0xa}, []uint8{0xfc, 0xce, 0x9e, 0xf, 0x21, 0x1a, 0x44}, []uint8{0x19, 0xb9, 0xac, 0xe3, 0x3c, 0x1, 0x8b, 0xfe}, []uint8{0x2f, 0x7, 0xe, 0xf7}, []uint8{0x1}, []uint8{0x3, 0x48, 0x3, 0x7, 0x5}, []uint8{0x0, 0x3b, 0xb8, 0x12, 0xc6, 0x0, 0xb, 0xe, 0x9c, 0x39, 0x5b, 0x3, 0x1, 0x16, 0xea, 0x2d, 0x1, 0xfb, 0xf4, 0xf, 0x0, 0x78, 0xdd, 0x6, 0x9, 0x3, 0x5, 0x32}}, SplitCommitment:(*asset.SplitCommitment)(nil)}, asset.Witness{PrevID:(*asset.PrevID)(0xc000661e30), TxWitness:wire.TxWitness(nil), SplitCommitment:(*asset.SplitCommitment)(nil)}}, SplitCommitmentRoot:mssmt.Node(nil), ScriptVersion:0x0, ScriptKey:asset.ScriptKey{PubKey:(*secp256k1.PublicKey)(0xc0006865f0), TweakedScriptKey:(*asset.TweakedScriptKey)(nil)}, GroupKey:(*asset.GroupKey)(0xc000669560), UnknownOddTypes:tlv.TypeMap{0x7a69:[]uint8{0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e}}} +# 2024/11/11 17:21:23.769579 [TestAltLeafEncoding/alt_leaf_encode/decode] unexpected asset group key, got &{{{1 2} 0xc000686640} {{[10076874 33831058 60461632 34607940 1223089 38185460 10656754 16304855 36076773 1561411]} {[6607432 12118597 9255779 11112796 31515743 11033212 59757278 16097515 16817019 523577]}} [14 202 55 2 57 8 0 255 126 29 98 12 1 37 11 255 4 92 0 124 71 2 48 238 1 187 5 6 1 16 163 83] []} wanted +# 2024/11/11 17:21:23.769621 [TestAltLeafEncoding/alt_leaf_encode/decode] decoded leaf {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 0 [{0xc000661f10 [[1 3 7 1 42 1 5 224] [1 24] [241 6 3 47 82 220 220 145 5 13] [0 27 2 37 255 15 15 0 0 229 62] [255 177] [16 27 19 0 1 7 4] [114 214 198] [26 189] [32 6] [219 9] [241 192] [147 220] [61 1 54 248 255 10] [252 206 158 15 33 26 68] [25 185 172 227 60 1 139 254] [47 7 14 247] [1] [3 72 3 7 5] [0 59 184 18 198 0 11 14 156 57 91 3 1 22 234 45 1 251 244 15 0 120 221 6 9 3 5 50]] } {0xc000702000 [] }] 0 {0xc0006867d0 } map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} does not match input {0 {0000000000000000000000000000000000000000000000000000000000000000:0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0 Normal} 0 0 0 [{0xc000661dc0 [[1 3 7 1 42 1 5 224] [1 24] [241 6 3 47 82 220 220 145 5 13] [0 27 2 37 255 15 15 0 0 229 62] [255 177] [16 27 19 0 1 7 4] [114 214 198] [26 189] [32 6] [219 9] [241 192] [147 220] [61 1 54 248 255 10] [252 206 158 15 33 26 68] [25 185 172 227 60 1 139 254] [47 7 14 247] [1] [3 72 3 7 5] [0 59 184 18 198 0 11 14 156 57 91 3 1 22 234 45 1 251 244 15 0 120 221 6 9 3 5 50]] } {0xc000661e30 [] }] 0 {0xc0006865f0 } 0xc000669560 map[31337:[116 104 101 32 103 114 101 97 116 32 117 110 107 110 111 119 110]]} +# +v0.4.8#8484991847821296405 +0x11b5ddc0586d51 +0x0 +0x1c3b4ca11d1b13 +0x82 +0xb743fcd19fdef +0x0 +0x1564ce019bbdec +0x5 +0x1f45ae2d774c3c +0xffffffffffffffff +0x5d64128102dad +0x0 +0x15952a8b68ba61 +0x2a +0x8f399b8739e93 +0x4 +0x1af3414af6eb0a +0x23 +0x193424c501be6d +0xa3 +0x9cdb21ec8c58c +0x2 +0x8624d9e370c4c +0x3 +0x70e30cb91eb0d +0x2 +0x19559c08b05b39 +0x2 +0xb486df76ed830 +0xc +0x5f605422cf59f +0x3 +0x1fd4b2e724bdda +0xffffffffffffffff +0x190184fcef1ebe +0xb2 +0x1ca5435da658e8 +0x22 +0x1eb9ff72cce85b +0x78 +0x1c9050014ff101 +0xa1 +0x60205d6158451 +0x1 +0x1047ac9b672553 +0x4e +0xa5e9d98d4d491 +0x2 +0x1a0ff71fe4936b +0x9b +0x61683c7c35f13 +0x2 +0x1c47107a6d7d5b +0xa3 +0x852f0c9062b14 +0x2 +0x124052793556bd +0x17 +0xb3aec737e0c1b +0xf +0xff9fccaf01c7c +0xf +0x16daabf394961f +0x2a +0x4cd932bacadf +0x1 +0x1b3281c4ace128 +0x29 +0x2b +0x30 +0x1f +0x9b7677d4571de +0xb +0x196e42a6bd8767 +0x10 +0x1e5951af9823cb +0xe +0x8c898c62e2c7f +0x1 +0x10084f2e3a8591 +0x18 +0x3931cdf8558cc +0xe539948495b64 +0x3c +0x18a717f3950bc3 +0x7d +0x1698318b35d617 +0x82 +0x177dd524e1adb6 +0x6f +0x12874a208cb178 +0x33 +0x7a684a74f3d8d +0x2 +0x9531588f180f3 +0x1 +0x5a90bc242ca85 +0x3 +0xd32037d9627b5 +0x9 +0xad3cd0ad7503e +0x4 +0xcb79be1de6780 +0x0 +0x1b50238d65b069 +0x63 +0x69029b8ce504d +0x0 +0x19a09cd3041e24 +0x16 +0x7b4131e181ebf +0x1 +0x1ee65553714428 +0xce +0x170ade3b0f6ffa +0xac +0xdbb7f64abc835 +0xd +0x1c028c5a770d3b +0xd8 +0x19e121434a0e3a +0xb6 +0x1e38a7b867b583 +0x7f +0xc42483f20196d +0x14 +0xba7c0f231f406 +0x5 +0x5c13b4992eb0 +0x1 +0x1d322f968b735b +0xbc +0x1c72af9b41cdec +0x1e +0x7b0906e1c13b8 +0x7 +0x3d2c04e5e07e1 +0x2 +0x695b6c6304453 +0x3 +0x12ed71c39452da +0xe4 +0x5e7b127a92396 +0x0 +0x1ddf8fc9df0174 +0xe9 +0x13743a5d38f361 +0x291 +0x34c1de0287f40 +0x1 +0x1d0e426a1252 +0x0 +0x1cf86ea9e02817 +0x1 +0x14ad0d1898bddc +0x1 +0xe57c331f46b9 +0x0 +0xdcf5dd0a1958d +0x0 +0x1e591083659f54 +0x0 +0xefee5c8ff959f +0x0 +0x1eb0003f67e323 +0x0 +0x1085b5a1e7c5bb +0x1a2dbca8cdb779 +0x5 +0x1bb1d485fe4170 +0x31 +0x1749b08c4a68bb +0x42 +0xfeb140cc5d8e3 +0x24 +0xb52c0fd1bffc2 +0x8 +0x187d0ee848fadd +0xba +0x1f3802d61f4e60 +0xffffffffffffffff +0xfb90ce43dc49b +0x25 +0x17f0ced0fe1546 +0x70 +0x1c78abd81e2ff9 +0x4c +0x142dfd52ce1117 +0xdd +0x5185e65733900 +0x2 +0x1f00f6efd710d3 +0xa2 +0xa529f9a0bdeb4 +0xe +0x1875d97b08ca0c +0x98 +0x18ff7b838b78b4 +0x82 +0x1b98aa0db61a66 +0xd8 +0xa87d9d0d79e11 +0x4 +0x13ccbc759446e8 +0xf +0x497d7f2be07ad +0x1 +0x16e158386cb415 +0xe2 +0x18cd5db593b1f6 +0x47 +0xcc89bae25defc +0x16 +0x10b498e54471a3 +0x7d +0x1690e23989ade4 +0xb +0x1b70ab166fbd15 +0x2c +0x21c6ee9d8e630 +0x0 +0x19f8d959962f60 +0xea +0x1858e3cb01f8b6 +0xfa +0x1473267611af80 +0xe1 +0x14abaca37425c0 +0x88 +0x87022f2f98a79 +0x1 +0xaf6e4cc4f3f59 +0x22 +0x1bb4e6d56b8d9 +0x1ffd1b95689651 +0xffffffffffffffff +0xad29fb169aab3 +0x3ebe17f889634 +0x2 +0x1635b54b20cda4 +0xe1a1547f8a4be +0x10 +0xc11a420dad952 +0x160d0e0eb7be28 +0x30 +0x1985288342c23a +0x14e48745aadef3 +0xec +0xfc001b22b6aee +0x95404a21977da +0x2 +0x48ca2d6110de9 +0x1bb8531fe95c60 +0x7c +0x1b7b8e096b4224 +0x1376930784815f +0x1d +0x1edecce8b6f19e +0x45a834497d686 +0x2 +0x1f8117a3d09aab +0x1fadca894ac8b3 +0xffffffffffffffff +0x1784ad5b582d4e +0x3766f00792ef +0x1 +0x11aecf76ab034b +0x101f1c8d05e64c +0x13 +0x1f701d5fc1d799 +0x19cd19a253fe53 +0x17 +0x12eaee790c21c6 +0x90805b376b579 +0x1 +0x7c434a4c6857 +0x1001eb4c8139f6 +0x1d +0x14c1844c72d6b7 +0x146ec4990684fc +0xae +0x5e27a587a779f +0x88ed15211924d +0x4 +0x12fca5bda9abbd +0xed2d0de6f2942 +0x35 +0x17d43a0902ed18 +0x62b11abe46845 +0x3 +0x1514ee46ad20f +0x2d0c2ef9ee4b +0x1 +0x1dff85617a8656 +0x3857f01c09160 +0x1 +0xd30d6fcc47ea1 +0x1b5f95915f6ed9 +0x11 +0xf8069260f9155 +0x87d87910d1281 +0x5 +0x84accc94d6cdb +0x949def3879b4e +0x2 +0x689675194dc9d +0x14e709eaa734ca +0xcc +0x95096defea0d3 +0x5f4871fe83af8 +0x1 +0x1251c1329707b +0x3d0817454a5bd +0x3 +0x147c030894e011 +0x1cbc6951cdfdb4 +0x8b +0x162ed4c74d2d2a +0x13c7428aa02efa +0x20 +0x136327ea521fcd +0x6b181e9481a5a +0x3 +0xba4d93c4fb7e0 +0xa9f7dfac0dd2d +0xe +0x14ae4d7730c1a8 +0x1521afdf930699 +0x2f +0x1b93f457e20210 +0x1a63f09761ee73 +0x1582577b80f449 +0xf2 +0xec6a28851fd8f +0x13756ea949709 +0x1 +0xcdb0f887797fc +0xa8cf9d2777754 +0xd +0x91abbffef2062 +0xeba3ccee88694 +0x22 +0x7eec66a0daea3 +0x151ad0652fdfd4 +0xab +0x1e65d82e9df590 +0x45fd0afc9341 +0x1 +0x1c69794afbd4ae +0x79da8038828c7 +0x5 +0xe4afa35e147a +0x1ba0639b6a8aaa +0x85 +0xbdbbb0344f87b +0x372001df95509 +0x1 +0x51e22b29b5821 +0x1dd716c935d19f +0x7f +0x8886c79a0bbec +0x1588b2cf6ed366 +0x5e +0x11568fb4c5be43 +0x2ba6694f6f3d8 +0x1 +0x1b3ecc8a290628 +0x699dbd704be4e +0x0 +0x1541aa1476a0e5 +0x106a503f7d3510 +0x1 +0xf9518a40870d5 +0xe22065a7f250c +0xc +0xaf54576733a3e +0x1fd9ac8550ae71 +0xffffffffffffffff +0x1dae51ce205955 +0x438647da79067 +0x0 +0xd621beee5f625 +0x1d954a00d88979 +0xb2 +0x15ba4308357f55 +0x1bd116ab95922a +0xdd +0x2f18bd0ceed02 +0x147b43b7361b01 +0x7 +0x708693e33d884 +0xad4881d47402e +0xe +0x3898b2fbea0f3 +0x1e1b182e71c9cc +0xfa +0x696cce51fb22b +0x1feab45f955d03 +0xffffffffffffffff +0xd1cc45f1e9571 +0x186778b13be386 +0xa7 +0x13d161982f0e97 +0x17ecd7807c9876 +0x72 +0x4dc85228b3591 +0x149ed972b9a776 +0x54 +0xe0debdb3cdab +0x11fa917ee7be99 +0x24 +0xd7f24a8354bf +0x91a3c0b8f6ff2 +0x3 +0x1f611ad295b411 +0x1753e621e1ca52 +0xbb +0x1a7cd895abcfd2 +0x3d105ecd66f0e +0x2 +0x4b197d2f71295 +0x5bab058c86e5c +0x3 +0x84aa588684c95 +0x567a9cd8c7fb +0x1 +0x1608b0015de74 +0x10f9070f524497 +0x1 +0x13d06203a1508e +0x796613fbfd691 +0x2a806a652007 +0x1 +0x1174c87894a85c +0x68b11c5d35908 +0x3 +0x15a66b14f81816 +0x9344f4b0e55ac +0x7 +0xdf6acaa557897 +0x27e982dd8fc03 +0x1 +0x1218c2fb17ed49 +0x1288c3a4087008 +0x2a +0x1ba0e7542536c3 +0x2777c5f15957e +0x1 +0x1f1065916b221b +0xb24944433f7cf +0x5 +0x6fde41edbfa86 +0x139ed0ae400b7c +0xe0 +0x2dd12cee81632 +0x12614191da8d5d +0x6e95924cc4b4c +0x1524a0c76f2a0 +0x1 +0x19c1408ac83577 +0xc7bd5f8aaf2b0 +0x18 +0x1bfb5351f731c +0x13ed6a65e7468b +0x14447e5d686a67 +0x151c1761ac8144 +0xf1 +0x995c42f8dd2b7 +0x9360ba7101fec +0x6 +0xfe53319ea0d65 +0x9b442adc5f22b +0x3 +0x765d5668b9233 +0xe7663285901c0 +0x2f +0x1edd150ac1a64a +0x1ee5e5134e9fa5 +0x52 +0x1febb5b6a4190c +0x17080fb8ef281e +0xdc +0x14f201b169a401 +0x18cc899f2be5ba +0xdc +0x17a5642910e27c +0x18d9aa5a562d40 +0x91 +0x1308bd7635468f +0x84a997dcd8b17 +0x5 +0x1dafbfb9b12b8a +0xbb99f0bbe4d74 +0xd +0x33336037aecdb +0xbdd020675d47f +0x8d40b8ea926d2 +0x11c206ec5f56c +0x0 +0xf93437c404a10 +0xc76d599b6fa46 +0x1b +0x1f7cd3303847ea +0x7fe7ac3ce38a3 +0x2 +0x7eb2ac81329f8 +0x1c72bcbc2f9241 +0x25 +0x1e81d1d2f404a1 +0x1fe61afb0a1152 +0xffffffffffffffff +0x1adb24a35ecd23 +0xae29dbc5d114b +0xf +0x15985f041073c7 +0xd512914be6425 +0xf +0x175d3fbee66d5e +0xce6f403f4e958 +0x0 +0x7931adee96361 +0x4ec009af2ea5 +0x0 +0x1ca623ca163235 +0x134ba502718bd7 +0xe5 +0x18886783d6e917 +0x133382adc3c547 +0x3e +0x3c64c62ace066 +0xa8e69c915c4c2 +0xab3a2a9e7a6e6 +0x1fb9198eacc379 +0xffffffffffffffff +0x6c0cd31368f41 +0x1b46b425a3032c +0xb1 +0x423e000ce49c5 +0x17986d48bbdae7 +0x4bca0ddf52397 +0x15721e8b59ba7f +0x10 +0x1454953d8fd1c8 +0xc15592a6900d2 +0x1b +0x1e948f0cce747b +0x100200e7ab0c77 +0x13 +0x18b57d1d8e7af9 +0x5efc238d66551 +0x0 +0x16d19eb0efcd20 +0x349404de475ed +0x1 +0x173134b2ddefd7 +0x80d4f1e07c4cc +0x7 +0x1483717d3fcf50 +0x91d64f4892b16 +0x4 +0x3b514a96b5e74 +0xc386eec14bad3 +0xac420b4e30716 +0x1cb63ebe895bc1 +0x72 +0x9024abd279549 +0x12f69056bd4174 +0xd6 +0x10cb0550c5fb2b +0x191bd252fac9ed +0xc6 +0x137a12d3d58aa +0x75c730ddf14fd +0xe8a84393fe932 +0xec87c6183e767 +0x1a +0x1846dc1d869fa1 +0x14c1e851c42962 +0xbd +0x1e45e83ac1815 +0xbf1f97c2a6406 +0x17a72487ad35b +0x14ecde44e2e9d7 +0x20 +0x1ccf28dd478425 +0xab354e44703eb +0x6 +0x20ef27d423e30 +0x1393e0dd522964 +0x1ff02430aa6386 +0x192d324d4d9cb8 +0xdb +0x8160d64c5ecb1 +0xd976861f88abc +0x9 +0x52db7ccdeba7b +0xecb6cf4a0ab45 +0x1fcaf510644888 +0x1c8ebbbe7ffdd4 +0xf1 +0xc0dc30ba28ab9 +0x1a2a13ac324896 +0xc0 +0x36e767c5951e5 +0x14a59cadb93f54 +0x39c25872d54a1 +0x15e2467cc616cb +0x93 +0x17695900665277 +0x1dc3cb8b2b726c +0xdc +0x8112fac82bd8 +0x1925517c9498e3 +0x114f39d737be2b +0x15f745599abed2 +0x3d +0x6d1d897d30203 +0x7d9146790d55 +0x1 +0x1efbd887dd20ef +0xf012d8616eda5 +0x36 +0x1cd5f9f9c4f946 +0x15163ab350dd09 +0xf8 +0x1b51d2c3d8f999 +0x1f3fb32fdb2bf7 +0xffffffffffffffff +0x181916ef9e6cbb +0xeacd876f67809 +0xa +0x190d7d2232e19 +0x147c084ec1cf58 +0x51841d8dc1b5 +0x18dc6a82e374af +0xfc +0x10150b32a3946b +0x1418f07640b50f +0xce +0x1bb88432af896d +0x194829a1e41c7e +0x9e +0xae59ab9410a5e +0xda178246d026f +0xf +0x1bc1992471639b +0xf8c8a7d9a26a9 +0x21 +0x1ebdf585f6bf34 +0xc93d511d884a5 +0x1a +0x1a948444c0fd0b +0x15622e46c10145 +0x44 +0xed95f5c4b382 +0x14d58129455810 +0x1420827a1487d3 +0xcf093fafd0145 +0x19 +0x9b3796d3c2ef3 +0x1d76b1077cd06d +0xb9 +0x15279f19581648 +0x1b20106d386c40 +0xac +0x1dad383af38c70 +0x1bdc542694d1df +0xe3 +0xcd57bd68daf03 +0x123d88938330b0 +0x3c +0x1d59136a8c68be +0x30cccc13281c3 +0x1 +0xe0e8124a0ccc4 +0x194cf179183685 +0x8b +0xb128c1997f8d4 +0x149a1edc55bc44 +0xfe +0x3882b5608269a +0x1cddb5e4a1c225 +0x9b172084a54dc +0x11756290a2f875 +0x2f +0x1322bdea228e8a +0x7a83683fc74d4 +0x7 +0xa44ffb98194c4 +0x11bbf1b7658d43 +0xe +0x13ad262e515b00 +0x1ee136a32b6857 +0xf7 +0x9b59818bb482 +0x1ba5fc8565c79c +0x10c62356e8eea4 +0x18f37807f81d7 +0x1 +0x3ca1a613a16e5 +0xc72af492206a2 +0xd8b3a3eedd3f0 +0x3aa035262e25f +0x3 +0xf086a87eab490 +0x17e1e3a81a87b4 +0x48 +0x9281501be2f81 +0x4eea9a1cf3b33 +0x3 +0x1bf1b13b745c54 +0xaa5969c241253 +0x7 +0x188cccc19d80b7 +0x103b651460903a +0x5 +0x3b22eb7b687c4 +0x120c7177ae1db7 +0xecc626914e8ae +0x2d9cd79978f3c +0x0 +0x1317557d7978cc +0xf51ca6f41bc23 +0x3b +0x6cb0aa5453c00 +0x1863643bee8feb +0xb8 +0x5f3553d9aeee6 +0x1179932d186303 +0x12 +0xff1ee006b458c +0x15464ad6accd22 +0xc6 +0x10fee306e85cbc +0x17f9a2ca97f4d +0x0 +0xc16a787209ad5 +0xc759e69591d2d +0xb +0x1febff9cbd7a1b +0xabebadba48c58 +0xe +0x1f2d689eb8bbc9 +0x1664a1fabeaa76 +0x9c +0xae39227776ea7 +0x1c2393df75b96d +0x39 +0x14610da062ce0e +0x169ee918949cf4 +0x5b +0x13817cfd071174 +0x6d1b67dbfbee3 +0x3 +0xb38677d8235a6 +0x5ee231558d93c +0x1 +0xc62887c468e43 +0x1817a7563f3943 +0x16 +0xa1222d5bad800 +0x12fbdfab26eaea +0xea +0xe2bb8a673673b +0x1a8159a43b0f20 +0x2d +0x15d7dd2db24523 +0x36c5a5f6379fa +0x1 +0xce3a474d5c9c2 +0x15deb7f68e99ba +0xfb +0xc352243c7641a +0x18daca411d906d +0xf4 +0x1c6867f0bc5017 +0xa5971ad2b80cd +0xf +0x166708293894a1 +0x102d77284b196 +0x0 +0x153195d69024e7 +0x1caaa5bbbcff78 +0x78 +0x5da140942fb68 +0x186fdfa69892f3 +0xdd +0xa304d01bc44fd +0x945118b9d579e +0x6 +0x1ef7dcc63370bb +0xd879f0c7fab3c +0x9 +0x140be51c0fde90 +0x3b8c5099cc934 +0x3 +0xbf247d8726620 +0x87671c654483d +0x5 +0x19e6fbc708a316 +0xf60c895a9ba76 +0x32 +0xb9753a96df79 +0x477e92bd046ac +0xafac436435afe +0x0 +0x16803b106c6365 +0x12e4a360493abf +0x0 +0x1fe28e25aeecc1 +0xffffffffffffffff +0x1bab0311371197 +0xf3 +0xc56486b5100f9 +0x0 +0x1f20f228288f73 +0xd2 +0x1dc8dfb6ffe8a6 +0x89 +0xfb77eb372d34c +0x3b +0x1eb63d45560810 +0x31 +0x5be0b8ee34841 +0x3 +0xf0b6280b4442a +0x3f +0x176edb04ca49ad +0x81 +0xd8d7f15760296 +0x1b +0x11cbc6e8929f85 +0x7a +0x156b6108243201 +0x52 +0x1e3cd05a2d79ba +0x42 +0x542bb56b72b95 +0x1 +0x1b0174233663d8 +0xca +0x115a6013625506 +0x67 +0x1e4c43a29f393f +0xe3 +0xb230ef765b38e +0xa +0x13caac551bf05b +0x23 +0x554ff1eb80c0a +0x3 +0x1875b3d86aefbd +0x1b +0x1a7285b2469951 +0xba +0xcd7d325595226 +0x10 +0xbc2cb15614ffe +0xf +0x1cc4b573750d1a +0x3 +0x10a7449474f85a +0x43 +0xbf4384c6e9158 +0xe +0x4bde7b84b311c +0x2 +0x28002f7c5e318 +0x0 +0x12d072d0626780 +0xd +0x180e1732cfa04a +0x185d1 +0x15e5f707a185 +0x12a26845d6ad74 +0x64 +0xdc6fb0f56837c +0x17249e5c68a884 +0x64 +0x25924800142c2 +0x177178dc23cec0 +0xf0 +0x107758fc25f412 +0xf57fd41e6e629 +0x20 +0x1c33094103fd5b +0xf778009d89261 +0x3a +0x154bcf9109cd0 +0x84590c365d1c3 +0x5 +0xbf3cf8ed59bc6 +0x116e493d446672 +0x6 +0x17c931619699bb +0x272343865f6e2 +0x1 +0x1da71755e263be +0x1edda7fd3e7bac +0x8d +0x2926561bfb57b +0x6be9a29606914 +0x5 +0x1b00dd7200b596 +0x103ec073b33734 +0x6a +0x937c8be961ec1 +0x1e647c711abf24 +0xc8 +0xbb4414760f3c7 +0xe49a185af76e4 +0x2e +0xa8e5afb636ca2 +0x1f7174a7a00a8a +0xffffffffffffffff +0xe3df777e214cf +0x1981fb0020da83 +0x59 +0x19f23deb86c760 +0x14865efb3f776 +0x0 +0x1103ebc4a19ce2 +0x70a21b017289f +0x6 +0xa9a15ff1aca59 +0xbb38ca7e2e30f +0x9 +0xe2e86c8fe8e46 +0x453cb5afa11c9 +0x1 +0x17c38e01adace2 +0x95bccde8efd3c +0x2 +0xa63c6238fe79f +0x1ef4f3793e160b +0xa8 +0x7ed1162f98875 +0x105a83d193a452 +0x77 +0xc41a2f87a2295 +0x1371bb21b2607e +0xa6 +0x178244751b7f32 +0x14d7b7659e7c67 +0x50 +0x1314ed514fb1e3 +0xb75696dba0c33 +0x9 +0x1ad0eb3bfdb832 +0x189a2c8fbf17e0 +0xfc +0x17dcda573d1f1 +0x13383df751575a +0x62 +0x876e3b827c131 +0xc841416c42f96 +0xe +0x11da714139f629 +0x3853dc320edb8 +0x0 +0x10314396a60a32 +0x47547f0afc676 +0x1 +0x1ed7b5bf58e23b +0xea3dfb12c257b +0xf +0x56bdc4ee2c7a2 +0x156262d5bda691 +0xb +0x1d88d66609e739 +0x13b8746dbf8387 +0xf7d1749e27cdf +0x1a +0x1aebe8174f08e3 +0x1467619fb375e4 +0xf0 +0xb08877d5ebddd +0x77b70e3568015 +0x3 +0x6ed8c50987e30 +0x542f25630b220 +0x1 +0x16c05af11cfab0 +0x1f57a6015d9204 +0xffffffffffffffff +0x12c1d6b6f0bbea +0xad3684545eedd +0x0 +0x1df66bf044fef +0x19b114483411b3 +0xa4 +0x1ba79436f10838 +0x1654bab9589d1c +0x83 +0x1766e466dc75df +0x1e963e0c5f2ca9 +0x8a +0xd380a0bc137e3 +0x7a863f026c11c +0x5 +0xf17916ff4b764 +0xf9970a5480a4b +0x7 +0x628e473e49d93 +0x1de55f8aa36411 +0xdd +0xc17a6851291ea +0x1d0c86ee745a56 +0x63 +0x1157668fa2c5da +0x659a5318468bd +0x2 +0x1ad95f1b01a894 +0x19e31969a633c1 +0xfb +0xc591fc5cb681a +0x19ce289b289cba +0x7d +0x1eb476be7938d1 +0xb459170a472cc +0xa +0x1cde6fd4b2c7f3 +0x1295ed01e17300 +0x56 +0x4521b6c0a8a6 +0x11e69b42b7be6f +0x77 +0x33b1ff381c478 +0x1e2e3532a563d1 +0xaa +0xa522f15d86446 +0x6e17703c700a6 +0x4 +0x1d7f1da4387caf +0x127b564dfcb05d +0x2 +0xcc346911d2544 +0x164fb9b1595734 +0x9f +0x1d94a2c507e5c5 +0xed022feb3e3ef +0x30 +0x16d0ca907af351 +0x57113739e596a +0x0 +0xb22b0a317a4ad +0x1616b7238fdc0e +0x65 +0x44167aa8b6cdc +0x8cc8e76f42938 +0x0 +0xd7972ac8abf70 +0x188ce0f2ac1c21 +0xda +0x145337be03e8e9 +0xa6721aeecf32f +0x9 +0xded4a0f890ef1 +0x14be204b968ef1 +0x14 +0x16ab7ba736c2e3 +0x5a389bfb17960 +0x2 +0xa4d6f156b9a6c +0xc5a837784d4ee +0x18 +0x1494e95ab66116 +0xcd50160116c39 +0x0 +0x15b059f88d4354 +0x4e0713feb55d8 +0x1728de4aab45c0 +0xbd +0xb0a534141a5ec +0x5035c1c7757ec +0x3 +0x16c8b3fef75761 +0xfc94d72e213f4 +0x26 +0x13fe0f70ae34e8 +0x1b993afe0787bc +0x1 +0x1c4b0877b98197 +0xe8752ab96f985 +0x1c +0xdce2a885b5e68 +0xcd027743d469c +0x16 +0x1965fad484744d +0x1e06b224192a3c +0xd8 +0x1280d4bfdb0dd5 +0x5ee70d5895130 +0x1 +0x1ca23f95fb75cd +0x17545e9817a91d +0x7 +0x1ca3931ab646c7 +0x1b31dff8d52737 +0x30 +0x3b8e28f0315b7 +0x541d914ce7ec0 +0x1cf15c249e493b +0x1 +0x5d2403067d2e4 +0x1df1457b256ec8 +0x0 +0x5e91efa8bd83e +0x1b5ab4227866ac +0x1d +0x7da98078991d4 +0xd312a241adb06 +0x17 +0x182de394640354 +0x18727f7d417d61 +0x5f +0x1e50813e11a9fd +0x3f96887351aba +0x2 +0x1f123df49f5009 +0x141dcf9baabf46 +0x7a +0x1c1338884d0c09 +0x153ecbeb361e7d +0x67 +0x1e488ec3d9bd17 +0x6f0dceceb1865 +0x1 +0x8af33fcd20e20 +0x19dd6c459021ba +0x18 +0xef34686d8ee92 +0x1dd2832de64e58 +0xf3 +0x1b8331b2844f98 +0x1940495a77bdf3 +0x5f +0x1ac3a285d5b7 +0xac1a341568586 +0xf +0x19d631242a2adb +0x1b6de9825e6668 +0xea +0xfac72e3c30806 +0x14bddbf7f61c24 +0xbb +0x99e907dccd735 +0xc0cbce1ddbc28 +0xd +0x17ed61d270b69e +0xe04bf6a2b9e66 +0x9 +0xaa9d7c0339cdf +0x936da0457072f +0x3 +0x425035044c6a9 +0x1f0935e2de5bb4 +0x7a +0x825723d800922 +0x66168d65f4a37 +0x2 +0x1c86085382e847 +0x1fb8258e1cc823 +0xffffffffffffffff +0x1844e0caf07241 +0x3b2b4bbbed126 +0x1 +0x302035d5e8b01 +0x37f37b3c1aea6 +0x1 +0x10c33ce9f0b357 +0x42caadde06454 +0x3 +0x1333971883b3fb +0x267f5342a254d +0x1 +0x17d66c90b1589 +0xcd6be84cf101e +0x15 +0x9ac2390e17ece +0x189c08ad527e78 +0xce +0x118f4bd3b60a1 +0x1acaf6a0e1ead9 +0x97 +0xaa9292137c9ba +0x12910708c4f163 +0xf4 +0x4a0b4932bb12c +0x3c0be0da61cae +0x2 +0xfaec6e86e2c0e +0x5ce409ce24003 +0x3 +0x51b131b502c0b +0xfb2d88d85b1a1 +0x34 +0x169d86fda969d0 +0x1858a1643ceed +0x0 +0x1451087b1c014c +0xf61a7748660d8 +0x3c +0x17537e70ca43e7 +0x26e80578a48d3 +0x177949eec39cd8 +0x19ae5866473dc +0x1 +0x8beaa1b68071a +0x2 +0xccee11b790f4a +0x0 +0x619c732cc2f15 +0x6fb2d2eec583b +0x2 +0x1f19f59f6d61d9 +0xb6a2b1a6cafe9 +0x5 +0x141fc645f8698f +0x5b76a67dcf97b +0x2 +0x959a23277fcef +0x1f34ef1b423511 +0xffffffffffffffff +0x10da217286b614 +0x142e32769a08a9 +0x8a +0x4b640d7d21928 +0x71740cdc6370a +0x2 +0x63942d40613d5 +0x3258c9b692ab5 +0x1 +0x20600e8d45dc3 +0x1115e910368bb7 +0x2c +0x6189642f24d2c +0xfcf3625d1a5a7 +0x23 +0x1caae46d1063f2 +0x6ee29b1178797 +0x0 +0x47efa1dd498c5 +0x9081f83e6fffb +0x7 +0x1d0ab1c273e935 +0x178f26eb56380d +0x76 +0xd3c32de4fdef9 +0x7dec41ed2d7e3 +0x3 +0xda2429e33d41f +0xf4af207e76488 +0x21 +0x18b48274afeac6 +0x101e52cee030fb +0x13 +0x8748b55f5d61e +0x19a3a48abba2f8 +0xa1 +0xdbfe2e664ea5f +0x106684115f33dc +0x5f +0x15930ea33e7f09 +0x1c4e1a56d6fec8 +0x77 +0x2e719d4d2bc4d +0xd967a352e7fb5 +0x17 +0x1538c8be3cfa2e +0xe388b817f4df4 +0x13 +0x19e76c0e21cd9c +0x187dabdfad68d9 +0xff +0x1134c612df5426 +0x7ce20e831aba5 +0x3 +0x1b235a47c5a4fb +0x82a8be051cd5c +0x3 +0x16599481b3062b +0xdb54e61e3aa0d +0x1b +0xe854fa0d9c2dc +0x1e8f822ded21af +0xf1 +0x7bbd4364d52f8 +0xf84a776c0a902 +0x18 +0x9d5ffa7ce269d +0x9055634b2c30a +0x5 +0x538c6d28c0bb9 +0x76237132bf0f3 +0x3 +0x1e96f2aa956b42 +0x7116a93344038 +0x5 +0x3877ebe1f64be +0x65dc1654a3b5a +0x3 +0x4f856f1105011 +0x159419a1a19cf7 +0xc2 +0x1b5aedc09b25c1 +0x17f8109e5c9118 +0x9d +0x3139d0fd882ca +0x4cbbd03c09d63 +0x50488fd01f7d9 +0x0 +0x1ce2627081d09f +0x1057340c977bff +0x3d +0xcd96efeb01a49 +0x15c31a84b4e08a +0xd5 +0x193de2862d6d8 +0x1be60b290eacc3 +0x40 +0xa3417acadda79 +0x4bfb5df729b7 +0x1 +0x13eaf627e1395 +0x9d094bed7a80 +0x1 +0x85e2d81d94057 +0xc60085c629db4 +0x18 +0x1a6542b59ea754 +0x4cd839ede7e1b +0x3 +0x77a63a5a59d2c +0x35b85015158c +0x1 +0x1d19f2d8eaa36c +0x602622b51096d +0x1 +0x11b269422b6ab4 +0xc4622fd38e6ad +0x8 +0x10a99e34455688 +0x74b89a894355f +0x4 +0x12b85d29893962 +0x7f29dcb7590fd +0x5 +0x63c7406f1e29d +0x895c67b98c961 +0x7 +0xa806667712b68 +0xc41974949f746 +0x18 +0x1725fc31e22421 +0x9917633696958 +0x0 +0xf3e965a3559c6 +0xe12d9dc037dc +0x1 +0x1a676dcc45566 +0x17d22b7c0f336b +0x83 +0x11a263f078bd75 +0xbb41f64c75e5b +0x5 +0x1180d81d6ba959 +0x1130a4da3dab37 +0x64 +0x1742019f1f10d9 +0x1e1e5627ed1af8 +0x6f +0x71db3d2e33d1c +0x18ef5340a5148e +0xa5 +0xa847fde096b75 +0x33a7edef3f832 +0x0 +0x9beb7836e235c +0xd2d0153e17b34 +0x12 +0x1a32a51a366248 +0x9520b0726d2c1 +0x4 +0xef2a368e46a3e +0x1d5e920ef12f73 +0xc7 +0x1cfc220efffcd6 +0x372bb8503ee95 +0x1 +0x16abd6983a307 +0x541f437065e0 +0x0 +0x194cc2e74c489 +0x158ba6aaeec5a1 +0xac +0x459362a041f3a +0x97222277d6248 +0x6 +0x54aa1eb9c52e +0x2a2b5ea502c12 +0x0 +0x197813499d350c +0xb9cdac101e86e +0xb +0x8a267fe7d83a6 +0x1837bad5a1d805 +0xada710dbe984b +0xe +0xfe14ceb3c2751 +0x1e4071d4f80cc5 +0xca +0x1d5de5d928e9f8 +0x176a21ba2a845e +0x37 +0x1c1b733dc94f9f +0x3c40fef26d3e1 +0x2 +0x189033a8c73021 +0x1d582d837ddf23 +0x39 +0x14c1e860e78c65 +0x99666930bbddb +0x8 +0x10436fb36be189 +0x1e822649e3315c +0x0 +0x5786c21dcc49d +0x1f45b51ff51062 +0xffffffffffffffff +0xa493f62ec687a +0x1efbf0df79f301 +0x7e +0xc36f68d7bf40c +0xe33a90b9d9406 +0x1d +0x14c78914202222 +0x1da7921a0895bb +0x62 +0xd8527789028e3 +0xeca2977b1d978 +0xc +0x680d47f9fadc7 +0x5bcfb51465750 +0x1 +0x64af57b7ca736 +0x1c09a7d9567408 +0x25 +0xd56cfed13d1a1 +0xa65e7829a2142 +0xb +0xf098069c2268e +0x1fb335d86ede3b +0xffffffffffffffff +0x1a3b6ed688cf4b +0x6f1e4e46d88cf +0x4 +0xde8610704f25a +0x1a8099c3add93a +0x5c +0x406a7cce4e628 +0x7badaf07f6447 +0x0 +0xc14e409ebfa53 +0x17b88a5a0be911 +0x7c +0x37ae55f4b85b1 +0x192548dbaced8d +0x47 +0x1ad43e01102260 +0x5b5d05a981faf +0x2 +0x192606772156c5 +0xf4b678840dcc4 +0x30 +0x1ba2f8c26a446e +0x1ad729e2d896f6 +0xee +0x1d9ade3c606a24 +0x6ec65bc61bc10 +0x1 +0x1b916f8f979cd2 +0x1e19c7b4fd0ee8 +0xbb +0x11a31ad98b395f +0x77b1ff0e09384 +0x5 +0xb2c78dd56a39d +0x926f1c4601e39 +0x6 +0x10cdc1aa652f47 +0x2b59229dc5b37 +0x1 +0x8491f1ae1d456 +0xc39060ccab953 +0x10 +0x1ac13a8088aeaa +0x188c19e1936ff2 +0xa3 +0x6d04e0494da07 +0x11da70cac4119e +0x53 +0x120465acf9e5ca +0x5a9b7cfd35724 +0x474108e24867f +0x324b659881963 +0x0 +0xcf93322debe3e +0x17ed3b744f5b3f +0xce +0x5a93703ba2614 +0x149904d616f39f +0x1e +0x154ffa00027904 +0xd8756cb30f855 +0x1e +0x11d17dfaf915ab +0x8a941e04989f3 +0x4 +0x5ba73906986f2 +0x909859574825a +0x7 +0xddfbee70699be +0x1ab6c58915cb9e +0x87 +0x1cecfd962a5705 +0x17e9f2b8a54bbe +0x3 +0x19db8e6588775b +0x16894a39d61cbe +0x5d +0x5195ca8913055 +0xb942331ae3d7a +0x94d9411ded9af +0x15fad355c5ea5a +0x1c +0x4268aa8ebd677 +0xdb79ca7dc3daf +0x1f2db9b54b2352 +0x1799375768771e +0x22 +0x155738e859d36b +0xb9e505bcb959c +0x9 +0x53f3bfcf0e0f0 +0x10dfdf32add498 +0x10f200f944e3d0 +0x1f8c4b2fc315a +0x0 +0x1ac0aaf8565a73 +0xdce4fa53ddf8 +0x1 +0x1ac1795c09e08c +0x1b2503c3b28b27 +0x9b +0x151cf25cd516c8 +0x1f1a80164a7f8d +0x14 +0x635a736c3b43 +0x29394c1cdd1ca +0x322efbe1fc7c8 +0x1 +0x7f4c2c2f1a4ae +0x0 +0x0 \ No newline at end of file diff --git a/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172139-1613351.fail b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172139-1613351.fail new file mode 100644 index 000000000..275b682a4 --- /dev/null +++ b/asset/testdata/rapid/TestAltLeafEncoding_alt_leaf_encode_decode/TestAltLeafEncoding_alt_leaf_encode_decode-20241111172139-1613351.fail @@ -0,0 +1,166 @@ +# 2024/11/11 17:21:39.294363 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw genesis: asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, Index:0x0}, Tag:"", MetaHash:[32]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, OutputIndex:0x0, Type:0x0} +# 2024/11/11 17:21:39.294383 [TestAltLeafEncoding/alt_leaf_encode/decode] [rapid] draw alt_leaf: asset.Asset{Version:0x0, Genesis:asset.Genesis{FirstPrevOut:wire.OutPoint{Hash:chainhash.Hash{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, Index:0x0}, Tag:"", MetaHash:[32]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, OutputIndex:0x0, Type:0x0}, Amount:0x0, LockTime:0x0, RelativeLockTime:0x0, PrevWitnesses:[]asset.Witness{}, SplitCommitmentRoot:mssmt.Node(nil), ScriptVersion:0x0, ScriptKey:asset.ScriptKey{PubKey:(*secp256k1.PublicKey)(nil), TweakedScriptKey:(*asset.TweakedScriptKey)(nil)}, GroupKey:(*asset.GroupKey)(nil), UnknownOddTypes:tlv.TypeMap{0x7a69:[]uint8{0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e}}} +# 2024/11/11 17:21:39.294406 [TestAltLeafEncoding/alt_leaf_encode/decode] expected asset script key +# +v0.4.8#4688598226421926512 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x1 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 +0x0 \ No newline at end of file diff --git a/docs/examples/basic-price-oracle/go.mod b/docs/examples/basic-price-oracle/go.mod index 626476fe5..eb9690c95 100644 --- a/docs/examples/basic-price-oracle/go.mod +++ b/docs/examples/basic-price-oracle/go.mod @@ -184,5 +184,6 @@ require ( modernc.org/sqlite v1.30.0 // indirect modernc.org/strutil v1.2.0 // indirect modernc.org/token v1.1.0 // indirect + pgregory.net/rapid v1.1.0 // indirect sigs.k8s.io/yaml v1.2.0 // indirect ) From 7cb36e96abfb9ef2daa1fab0e8f2584476ad2337 Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Thu, 31 Oct 2024 14:18:17 -0400 Subject: [PATCH 09/11] make: support unit-cover for a subpackage --- make/testing_flags.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/make/testing_flags.mk b/make/testing_flags.mk index f657d89e4..fc4eeba1c 100644 --- a/make/testing_flags.mk +++ b/make/testing_flags.mk @@ -20,6 +20,7 @@ endif # subpackage. ifneq ($(pkg),) UNITPKG := $(PKG)/$(pkg) +COVER_PKG := $(PKG)/$(pkg) UNIT_TARGETED = yes GOLIST = echo '$(PKG)/$(pkg)' endif From 059352c1ac48efba7e06d09e4efbcd0b240b20b0 Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Thu, 31 Oct 2024 15:11:10 -0400 Subject: [PATCH 10/11] tappsbt: test decode handling of global Unknowns In this commit, we add a new test to ensure that if a Packet is missing the Unknown values we need to identify VPackets, the decoder fails. We also check that decoding does not fail if Unknown values unrelated to VPackets are included. --- tappsbt/decode_test.go | 68 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/tappsbt/decode_test.go b/tappsbt/decode_test.go index d6cfff1a7..86f304e7c 100644 --- a/tappsbt/decode_test.go +++ b/tappsbt/decode_test.go @@ -10,6 +10,7 @@ import ( "strings" "testing" + "github.com/btcsuite/btcd/btcutil/psbt" "github.com/lightninglabs/taproot-assets/address" "github.com/lightninglabs/taproot-assets/asset" "github.com/lightninglabs/taproot-assets/commitment" @@ -70,6 +71,73 @@ func assertEqualPackets(t *testing.T, expected, actual *VPacket) { } } +// TestGlobalUnknownFields tests that the global Unknown fields mandatory for a +// valid VPacket are present for an encoded VPacket. We also test that when +// decoding a VPacket from a Packet, a Packet with missing mandatory fields is +// rejected, and extra global Unknown fields are permitted. +func TestGlobalUnknownFields(t *testing.T) { + // Make a random packet. + pkg := RandPacket(t, false, false) + + // An encoded valid packet should have exactly three global Unknown + // fields. + packet, err := pkg.EncodeAsPsbt() + require.NoError(t, err) + require.Len(t, packet.Unknowns, 3) + + // Specifically, the isVirtual marker, HRP, and Version must be present. + requiredKeys := [][]byte{ + PsbtKeyTypeGlobalTapIsVirtualTx, + PsbtKeyTypeGlobalTapChainParamsHRP, + PsbtKeyTypeGlobalTapPsbtVersion, + } + for _, key := range requiredKeys { + _, err := findCustomFieldsByKeyPrefix(packet.Unknowns, key) + require.NoError(t, err) + } + + // Decoding a VPacket from this minimal Packet must succeed. + _, err = NewFromPsbt(packet) + require.NoError(t, err) + + var packetBuf bytes.Buffer + err = packet.Serialize(&packetBuf) + require.NoError(t, err) + + cloneBuffer := func(b *bytes.Buffer) *bytes.Buffer { + return bytes.NewBuffer(bytes.Clone(b.Bytes())) + } + + // If we remove a mandatory VPacket field from the Packet, decoding + // must fail. + invalidPacketBytes := cloneBuffer(&packetBuf) + invalidPacket, err := psbt.NewFromRawBytes(invalidPacketBytes, false) + require.NoError(t, err) + + invalidPacket.Unknowns = invalidPacket.Unknowns[1:] + _, err = NewFromPsbt(invalidPacket) + require.Error(t, err) + + // If we add a global Unknown field to the valid Packet, decoding must + // still succeed. + extraPacketBytes := cloneBuffer(&packetBuf) + extraPacket, err := psbt.NewFromRawBytes(extraPacketBytes, false) + require.NoError(t, err) + + // The VPacket global Unknown keys start at 0x70, so we'll use a key + // value very far from that. + extraUnknown := &psbt.Unknown{ + Key: []byte{0xaa}, + Value: []byte("really_cool_unknown_value"), + } + extraPacket.Unknowns = append(extraPacket.Unknowns, extraUnknown) + + // The decoded VPacket should not contain the extra Unknown field, but + // the decoder should succeed. + _, err = NewFromPsbt(extraPacket) + require.NoError(t, err) +} + // TestEncodingDecoding tests the decoding of a virtual packet from raw bytes. func TestEncodingDecoding(t *testing.T) { t.Parallel() From fda8a6dea9c8a8509a7c8ec5d6a4ea7e08cfe423 Mon Sep 17 00:00:00 2001 From: Jonathan Harvey-Buschel Date: Thu, 31 Oct 2024 15:13:02 -0400 Subject: [PATCH 11/11] tappsbt: support global Unknowns on Packet decode --- tappsbt/decode.go | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/tappsbt/decode.go b/tappsbt/decode.go index c36f0a9ae..f9f715231 100644 --- a/tappsbt/decode.go +++ b/tappsbt/decode.go @@ -52,12 +52,6 @@ func NewFromRawBytes(r io.Reader, b64 bool) (*VPacket, error) { // NewFromPsbt returns a new instance of a VPacket struct created by reading the // custom fields on the given PSBT packet. func NewFromPsbt(packet *psbt.Packet) (*VPacket, error) { - // Make sure we have the correct markers for a virtual transaction. - if len(packet.Unknowns) != 3 { - return nil, fmt.Errorf("expected 3 global unknown fields, "+ - "got %d", len(packet.Unknowns)) - } - // We want an explicit "isVirtual" boolean marker. isVirtual, err := findCustomFieldsByKeyPrefix( packet.Unknowns, PsbtKeyTypeGlobalTapIsVirtualTx, @@ -83,16 +77,16 @@ func NewFromPsbt(packet *psbt.Packet) (*VPacket, error) { "params HRP: %w", err) } - // The version is currently optional. An unset version implies a V0 - // VPacket. - var version uint8 + // We also need the VPacket version. versionField, err := findCustomFieldsByKeyPrefix( packet.Unknowns, PsbtKeyTypeGlobalTapPsbtVersion, ) - if err == nil { - version = versionField.Value[0] + if err != nil { + return nil, fmt.Errorf("error finding virtual tx version: %w", + err) } + version := versionField.Value[0] switch version { case uint8(V0), uint8(V1): default: