Skip to content

Commit

Permalink
test: add fuzzers for Builder.Export + inclusion.SubtreeWidth
Browse files Browse the repository at this point in the history
In a continuous bid to battle test and secure the network, this
change adds 2 fuzzers for:
* Builder.Export
* inclusion.SubtreeWidth
  • Loading branch information
odeke-em committed Oct 19, 2024
1 parent 9ff313b commit 904f3a3
Show file tree
Hide file tree
Showing 26 changed files with 166 additions and 0 deletions.
51 changes: 51 additions & 0 deletions builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"encoding/json"
"fmt"
"math/rand"
"os"
"path/filepath"
"testing"

"github.com/celestiaorg/go-square/v2"
Expand All @@ -16,6 +18,17 @@ import (
"github.com/stretchr/testify/require"
)

func serializeCorpra(prefix string, corpra ...*builderCorpus) {
for i, corpus := range corpra {
path := filepath.Join(dirPath, fmt.Sprintf("%s-%d.json", prefix, i))
blob, err := json.Marshal(corpus)
if err != nil {
continue
}
_ = os.WriteFile(path, blob, 0644)
}
}

func TestBuilderSquareSizeEstimation(t *testing.T) {
type test struct {
name string
Expand Down Expand Up @@ -54,6 +67,16 @@ func TestBuilderRejectsTransactions(t *testing.T) {
require.False(t, builder.AppendTx(newTx(share.AvailableBytesFromCompactShares(4)+1)))
require.True(t, builder.AppendTx(newTx(share.AvailableBytesFromCompactShares(4))))
require.False(t, builder.AppendTx(newTx(1)))

serializeCorpra("rejects-tx", &builderCorpus{
MaxSquareSize: 2,
SubtreeRootThreshold: 64,
Txs: [][]byte{
newTx(share.AvailableBytesFromCompactShares(4) + 1),
newTx(share.AvailableBytesFromCompactShares(4)),
newTx(1),
},
})
}

func TestBuilderRejectsBlobTransactions(t *testing.T) {
Expand Down Expand Up @@ -90,6 +113,14 @@ func TestBuilderRejectsBlobTransactions(t *testing.T) {
require.NoError(t, err)
require.True(t, isBlobTx)
require.Equal(t, tc.added, builder.AppendBlobTx(blobTx))

name := fmt.Sprintf("rejects-blobtxs-%d", idx)
serializeCorpra(name, &builderCorpus{
MaxSquareSize: 2,
SubtreeRootThreshold: 64,
Txs: txs,
})

})
}
}
Expand All @@ -114,6 +145,12 @@ func TestBuilderFindTxShareRange(t *testing.T) {
builder, err := square.NewBuilder(128, 64, blockTxs...)
require.NoError(t, err)

serializeCorpra("builder-findtx-share-range", &builderCorpus{
MaxSquareSize: 128,
SubtreeRootThreshold: 64,
Txs: blockTxs,
})

dataSquare, err := builder.Export()
require.NoError(t, err)
size := dataSquare.Size() * dataSquare.Size()
Expand Down Expand Up @@ -290,6 +327,8 @@ func TestSquareBlobPostions(t *testing.T) {
expectedIndexes: [][]uint32{{2}, {4}},
},
}

var corpra []*builderCorpus
for i, tt := range tests {
t.Run(fmt.Sprintf("case%d", i), func(t *testing.T) {
builder, err := square.NewBuilder(tt.squareSize, defaultSubtreeRootThreshold)
Expand All @@ -300,6 +339,11 @@ func TestSquareBlobPostions(t *testing.T) {
require.True(t, isBlobTx)
_ = builder.AppendBlobTx(blobTx)
}
corpra = append(corpra, &builderCorpus{
MaxSquareSize: tt.squareSize,
SubtreeRootThreshold: defaultSubtreeRootThreshold,
Txs: tt.blobTxs,
})
square, err := builder.Export()
require.NoError(t, err)
txs, err := share.ParseTxs(square)
Expand All @@ -311,6 +355,8 @@ func TestSquareBlobPostions(t *testing.T) {
}
})
}

serializeCorpra("sq-blob-positions", corpra...)
}

func generateMixedTxs(normalTxCount, pfbCount, blobsPerPfb, blobSize int) [][]byte {
Expand Down Expand Up @@ -363,6 +409,11 @@ func TestBigBlock(t *testing.T) {
require.NoError(t, err)
assert.Len(t, builder.Blobs, 84)
assert.Len(t, builder.Pfbs, 25)
serializeCorpra("big-block", &builderCorpus{
MaxSquareSize: defaultMaxSquareSize,
SubtreeRootThreshold: defaultSubtreeRootThreshold,
Txs: bigBlock.Txs,
})

index, err := builder.FindBlobStartingIndex(0, 0)
require.NoError(t, err)
Expand Down
55 changes: 55 additions & 0 deletions fuzz_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package square_test

import (
"encoding/json"
"os"
"path/filepath"
"testing"

"github.com/celestiaorg/go-square/v2"
)

var dirPath = filepath.Join("testdata", "corpra", "builder")

func init() {
if err := os.MkdirAll(dirPath, 0755); err != nil {
panic(err)
}
}

type builderCorpus struct {
MaxSquareSize int `json:"max_sq_size"`
SubtreeRootThreshold int `json:"sr_thresh"`
Txs [][]byte `json:"txs"`
}

func FuzzBuilderExport(f *testing.F) {
if testing.Short() {
f.Skip("running in -short mode")
}

// 1. Add the corpra.
paths, err := filepath.Glob(filepath.Join(dirPath, "*.json"))
if err != nil {
f.Fatal(err)
}
for _, path := range paths {
jsonBlob, err := os.ReadFile(path)
if err == nil {
f.Add(jsonBlob)
}
}

// 2. Run the fuzzer.
f.Fuzz(func(t *testing.T, inputJSON []byte) {
corpus := new(builderCorpus)
if err := json.Unmarshal(inputJSON, corpus); err != nil {
return
}
b, err := square.NewBuilder(corpus.MaxSquareSize, corpus.SubtreeRootThreshold, corpus.Txs...)
if err != nil {
return
}
_, _ = b.Export()
})
}
36 changes: 36 additions & 0 deletions inclusion/fuzz_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package inclusion_test

import (
"encoding/json"
"testing"

"github.com/celestiaorg/go-square/v2/inclusion"
)

type subtreeWidthCorpus struct {
ShareCount int `json:"sc"`
Threshold int `json:"th"`
}

func FuzzSubtreeWidth(f *testing.F) {
// 1. Create the corpra.
for _, tt := range subtreeWidthTestCases {

Check failure on line 17 in inclusion/fuzz_test.go

View workflow job for this annotation

GitHub Actions / lint / golangci-lint

undefined: subtreeWidthTestCases (typecheck)

Check failure on line 17 in inclusion/fuzz_test.go

View workflow job for this annotation

GitHub Actions / test / test

undefined: subtreeWidthTestCases
corpus := &subtreeWidthCorpus{
ShareCount: tt.shareCount,
Threshold: defaultSubtreeRootThreshold,
}
jsonBlob, err := json.Marshal(corpus)
if err == nil {
f.Add(jsonBlob)
}
}

// 2. Run the fuzzers.
f.Fuzz(func(t *testing.T, jsonBlob []byte) {
input := new(subtreeWidthCorpus)
if err := json.Unmarshal(jsonBlob, input); err != nil {
return
}
_ = inclusion.SubTreeWidth(input.ShareCount, input.Threshold)
})
}
2 changes: 2 additions & 0 deletions inclusion/testdata/fuzz/FuzzSubtreeWidth/8093511184ad3e25
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("{}")
1 change: 1 addition & 0 deletions testdata/corpra/builder/big-block-0.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions testdata/corpra/builder/builder-findtx-share-range-0.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions testdata/corpra/builder/rejects-blobtxs-0-0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"max_sq_size":2,"sr_thresh":64,"txs":["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"]}
1 change: 1 addition & 0 deletions testdata/corpra/builder/rejects-blobtxs-1-0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"max_sq_size":2,"sr_thresh":64,"txs":["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"]}
1 change: 1 addition & 0 deletions testdata/corpra/builder/rejects-blobtxs-2-0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"max_sq_size":2,"sr_thresh":64,"txs":["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"]}
1 change: 1 addition & 0 deletions testdata/corpra/builder/rejects-blobtxs-3-0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"max_sq_size":2,"sr_thresh":64,"txs":["CtECuol/pQcQlEPBw5cpMsDin5GbyScSntN0X91YL+KuyUVfVPcAXUnp5kBtLlk/8zyMcrv7907m/zbDxDah7mAGln0gP6px0eNddVRlrGIZxXLWGmDGwhJNpGw1tqhqHhvrbuWpnxkIHSQOl1f4bGLqm9c2FV/aYqyJrxFvEl5vyrIkqRNw/L6Xd7XIusl+mRDKJWv+ODK8nJKw2+YOlT+1yWHaSy0WxMgtgydAkBaMkWYdeWB4OTsSvRqm+q0CMt0aN7/pZvCS7fU8mVL8+Q/ImBJIEnHTmNbt2jCDi7r7t4n3KT5F2J4AWAHtVOIPe8H/zUM93QY3lFiRfJnAdDDDP8iVgYaq0Oi/b2JeQ36Pv/z8kJhbwFE2Nj6PE5Rmw7TBXky2i6WSjV/AkMmaKRc588HaR1VcZ/mNqf//6TcnuaDrG1d1S4bGiikAAAHeAAAB3hL/AwocAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBARLeAz2BKCFCUNbs/i5vQHltW09tkXkSSoT6C4Izvdh0uQtdZNbWVDl4HNYGdL/P4GQ44oQLvoXdC45rDePRvohf/EU8glCVcomGeIovqDFHaA0i7DCi14S+BOEP6r84F7OmsuizRBAHvzmZZyQQUeXleV2RWFLu9p7OzSaxgrjYTLG8B1KCJ8Bb+Mhf9iE4Rq9n+qXO/2UYJ43KL+Gw8OLGo2NOjlcssXOZNq80FXV2ug7QgjgXy0yA47gDAqYLDFmfX86mh+DxkEL2APSma4mWzSgIy3nBcJz8eqqEUWBr62PEgNHbbJIJYS1/KvE5slKiUVzBTkBEXapQfEesiQ2dGC3zAIqdV8rAHdqegXa8OnF9uepTYzoBSNAeEMjTX9lVL8ip3Vr00YP5V5agze8JUIXxLtmQeu6cS26g9GCzO+6jV0fWF+byK8PZ9KHGdUBBA6New9F6UKLEixvp35OFPcXF/Xio6/dS2rE0cJl/cURssDlJZDiRFhbuWbgYtXKBk2/VSUIocvJwCNQ+E7UH1F1Z0y7odMr1jUXN3XPS/+CsSdUKXRcZwx9RTnOm9q4CkaKEL3VsZUQSYvkIU/2ASPeQjYQiRQkKTXWOWaOlilX0HT2RI2vUatGCNGNJmXYS/wMKHAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQES3gNGltVlp/hD36DsTTnGb8lAQvPfKrzzkF8EnXOlIQEzMy7feMb/T3tq+2BGzqS2nlb7usp4BihfTmtPuCAIMvApCDHjBkIGjRhMWE6TBhA4fDpvs0sZzNO+FsGaHYvEtXGhGYc1hIGrMY328CE3SykBYL0ho+dbSya0jtvsOOof7e5iaF+7nFDXpbHD9+yfT9K2utQVyHhEG0Za+RjFEy5zCoNennLfQcp9tkC25E1+LBIEpVPdTD/IlnwRB+sppv7rhRL4LApAx/ngAxlG4q7DF/3vjPsM6jTw6GeWabNkE8Hut0grtdEx7kafQwPGCWcxlPrXfh/jizdZu6/0dtxvSy3n0b3LCIc0ET/p1rM7xo2oPekmfmc4Npwav8qxoXkRC46/E/bomUn/aJuvu8P1swp9+K32kJMZeyH6a8PfQjpTwZj1UeOSxCC52tN1fLR/zhNiVxcMFlqGIkkToCG8eUrC3cpVSEUAGNXx6KjqhVwXl+9EFYBtveYWs94kxoawSC47McfsDVH87T8Yk8AOZI1WToZtZG55/6MreyNK9wp9ZVeEBYpGtmEGmGk635h8grkVm05WJoNCci82bCzV6b3Kn0Zul6fKHt234eCHE2gkYPFeUzFVBGClUhrkGgRCTE9C"]}
1 change: 1 addition & 0 deletions testdata/corpra/builder/rejects-tx-0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"max_sq_size":2,"sr_thresh":64,"txs":["AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",""]}
Loading

0 comments on commit 904f3a3

Please sign in to comment.