diff --git a/_registry/ignite.apps.cca.json b/_registry/ignite.apps.cca.json new file mode 100644 index 00000000..ea16cf6a --- /dev/null +++ b/_registry/ignite.apps.cca.json @@ -0,0 +1,34 @@ +{ + "appName": "cca", + "appDescription": "Scaffold a blockchain frontend in seconds with Ignite", + "ignite": ">28.0.0", + "dependencies": {}, + "cosmosSDK": ">0.50.1", + "authors": [ + { + "name": "Julien Robert", + "github": "julienrbrt" + } + ], + "repositoryUrl": "https://github.com/ignite/apps", + "documentationUrl": "https://github.com/ignite/apps/tree/main/cca/README.md", + "license": { + "name": "MIT", + "url": "https://github.com/ignite/apps/blob/main/LICENSE" + }, + "keywords": [ + "cca", + "create-cosmos-app", + "telescope", + "cosmjs", + "interchain-js", + "cosmology", + "cli", + "cosmos-sdk", + "ignite app" + ], + "supportedPlatforms": [ + "mac", + "linux" + ] +} \ No newline at end of file diff --git a/app.ignite.yml b/app.ignite.yml index de9d468c..9168b96d 100644 --- a/app.ignite.yml +++ b/app.ignite.yml @@ -24,6 +24,9 @@ apps: wasm: description: Scaffold a CosmosWasm-enabled chain with ease path: ./wasm + cca: + description: Scaffold a blockchain frontend in seconds with Ignite + path: ./cca example-chain-info: description: A simple chain information application path: ./examples/chain-info diff --git a/cca/CHANGELOG.md b/cca/CHANGELOG.md new file mode 100644 index 00000000..ac9f55e9 --- /dev/null +++ b/cca/CHANGELOG.md @@ -0,0 +1,7 @@ +# Web App Changelog + +## Unreleased + +## [`v0.1.0`](https://github.com/ignite/apps/releases/tag/web/v0.1.0) + +* First release of the Web app compatible with Ignite >= v28.x.z diff --git a/cca/README.md b/cca/README.md new file mode 100644 index 00000000..24f508d9 --- /dev/null +++ b/cca/README.md @@ -0,0 +1,9 @@ +# CCA App + +* + +## Installation + +```shell +ignite app install -g github.com/ignite/apps/cca +``` diff --git a/cca/cmd/cmd.go b/cca/cmd/cmd.go new file mode 100644 index 00000000..d287a62d --- /dev/null +++ b/cca/cmd/cmd.go @@ -0,0 +1,22 @@ +package cmd + +import "github.com/ignite/cli/v28/ignite/services/plugin" + +// GetCommands returns the list of web app commands. +func GetCommands() []*plugin.Command { + return []*plugin.Command{ + { + PlaceCommandUnder: "scaffold", + Use: "cca", + Short: "Ignite CCA scaffolds a Cosmos SDK chain frontend using a `create-cosmos-app` template", + Flags: []*plugin.Flag{ + { + Name: flagPath, + Usage: "path of the app", + Shorthand: "p", + Type: plugin.FlagTypeString, + }, + }, + }, + } +} diff --git a/cca/cmd/scaffold.go b/cca/cmd/scaffold.go new file mode 100644 index 00000000..5d84de58 --- /dev/null +++ b/cca/cmd/scaffold.go @@ -0,0 +1,46 @@ +package cmd + +import ( + "context" + "fmt" + "path/filepath" + + "github.com/ignite/apps/cca/templates" + "github.com/ignite/cli/v28/ignite/pkg/cliui" + "github.com/ignite/cli/v28/ignite/services/chain" + "github.com/ignite/cli/v28/ignite/services/plugin" +) + +const ( + statusScaffolding = "Scaffolding..." + + flagPath = "path" +) + +// ExecuteScaffold executes the scaffold cca subcommand. +func ExecuteScaffold(ctx context.Context, cmd *plugin.ExecutedCommand) error { + flags := plugin.Flags(cmd.Flags) + + session := cliui.New(cliui.StartSpinnerWithText(statusScaffolding)) + defer session.End() + + appPath, err := flags.GetString(flagPath) + if err != nil { + return err + } + absPath, err := filepath.Abs(appPath) + if err != nil { + return err + } + + c, err := chain.New(absPath, chain.CollectEvents(session.EventBus())) + if err != nil { + return err + } + + if err := templates.Write(c.AppPath()); err != nil { + return fmt.Errorf("failed to write CCA: %w", err) + } + + return session.Printf("🎉 Ignite CCA added (`%[1]v`).\n", c.AppPath(), c.Name()) +} diff --git a/cca/go.mod b/cca/go.mod new file mode 100644 index 00000000..3a23ea2b --- /dev/null +++ b/cca/go.mod @@ -0,0 +1,238 @@ +module github.com/ignite/apps/cca + +go 1.23.1 + +require ( + github.com/hashicorp/go-plugin v1.6.2 + github.com/ignite/cli/v28 v28.5.3 + github.com/stretchr/testify v1.9.0 +) + +require ( + cosmossdk.io/api v0.7.5 // indirect + cosmossdk.io/collections v0.4.0 // indirect + cosmossdk.io/core v0.11.1 // indirect + cosmossdk.io/depinject v1.0.0 // indirect + cosmossdk.io/errors v1.0.1 // indirect + cosmossdk.io/log v1.4.1 // indirect + cosmossdk.io/math v1.3.0 // indirect + cosmossdk.io/store v1.1.1 // indirect + cosmossdk.io/x/tx v0.13.4 // indirect + dario.cat/mergo v1.0.0 // indirect + filippo.io/edwards25519 v1.0.0 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.2 // indirect + github.com/AlecAivazis/survey/v2 v2.3.7 // indirect + github.com/DataDog/datadog-go v3.2.0+incompatible // indirect + github.com/DataDog/zstd v1.5.5 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect + github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect + github.com/aymanbagabas/go-osc52 v1.2.1 // indirect + github.com/aymerick/douceur v0.2.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/blang/semver/v4 v4.0.0 // indirect + github.com/briandowns/spinner v1.23.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/cenkalti/backoff v2.2.1+incompatible // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/charmbracelet/lipgloss v0.6.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cloudflare/circl v1.3.7 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.1 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cometbft/cometbft v0.38.12 // indirect + github.com/cometbft/cometbft-db v0.11.0 // indirect + github.com/containerd/containerd v1.7.11 // indirect + github.com/containerd/log v0.1.0 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-db v1.0.2 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect + github.com/cosmos/cosmos-sdk v0.50.9 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/gogoproto v1.7.0 // indirect + github.com/cosmos/iavl v1.2.0 // indirect + github.com/cosmos/ics23/go v0.11.0 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/danieljoos/wincred v1.2.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/docker/docker v27.0.0+incompatible // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/emicklei/dot v1.6.1 // indirect + github.com/emicklei/proto v1.12.2 // indirect + github.com/emicklei/proto-contrib v0.15.0 // indirect + github.com/emirpasic/gods v1.18.1 // indirect + github.com/fatih/color v1.16.0 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect + github.com/go-git/go-git/v5 v5.12.0 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-openapi/analysis v0.23.0 // indirect + github.com/go-openapi/errors v0.22.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/loads v0.22.0 // indirect + github.com/go-openapi/spec v0.21.0 // indirect + github.com/go-openapi/strfmt v0.23.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/gobuffalo/flect v0.3.0 // indirect + github.com/gobuffalo/genny/v2 v2.1.0 // indirect + github.com/gobuffalo/github_flavored_markdown v1.1.4 // indirect + github.com/gobuffalo/helpers v0.6.7 // indirect + github.com/gobuffalo/logger v1.0.7 // indirect + github.com/gobuffalo/packd v1.0.2 // indirect + github.com/gobuffalo/plush/v4 v4.1.19 // indirect + github.com/gobuffalo/tags/v3 v3.1.4 // indirect + github.com/gobuffalo/validate/v3 v3.3.3 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-yaml v1.11.3 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gofrs/uuid v4.4.0+incompatible // indirect + github.com/gogo/googleapis v1.4.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.2.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-github/v48 v48.2.0 // indirect + github.com/google/go-querystring v1.1.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/css v1.0.0 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/mux v1.8.1 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-metrics v0.5.3 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect + github.com/hdevalence/ed25519consensus v0.1.0 // indirect + github.com/huandu/skiplist v1.2.0 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/ignite/web v0.6.1 // indirect + github.com/imdario/mergo v0.3.13 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect + github.com/microcosm-cc/bluemonday v1.0.23 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moby/moby v24.0.9+incompatible // indirect + github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/sequential v0.5.0 // indirect + github.com/moby/sys/user v0.1.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/muesli/reflow v0.3.0 // indirect + github.com/muesli/termenv v0.14.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/nqd/flat v0.2.0 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/oklog/ulid v1.3.1 // indirect + github.com/otiai10/copy v1.14.0 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/radovskyb/watcher v1.0.7 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/rs/cors v1.11.1 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/skeema/knownhosts v1.2.2 // indirect + github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/cobra v1.8.1 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.19.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tidwall/btree v1.7.0 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.3.10 // indirect + go.mongodb.org/mongo-driver v1.14.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/crypto v0.26.0 // indirect + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.24.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect + golang.org/x/tools v0.22.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect + google.golang.org/grpc v1.64.1 // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + gotest.tools/v3 v3.5.1 // indirect + nhooyr.io/websocket v1.8.6 // indirect + pgregory.net/rapid v1.1.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) diff --git a/cca/go.sum b/cca/go.sum new file mode 100644 index 00000000..03abe957 --- /dev/null +++ b/cca/go.sum @@ -0,0 +1,1241 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= +cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= +cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= +cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= +cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= +cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= +cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= +cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= +cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +cosmossdk.io/x/tx v0.13.4 h1:Eg0PbJgeO0gM8p5wx6xa0fKR7hIV6+8lC56UrsvSo0Y= +cosmossdk.io/x/tx v0.13.4/go.mod h1:BkFqrnGGgW50Y6cwTy+JvgAhiffbGEKW6KF9ufcDpvk= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= +filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= +github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= +github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ= +github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= +github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= +github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= +github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= +github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aymanbagabas/go-osc52 v1.2.1 h1:q2sWUyDcozPLcLabEMd+a+7Ea2DitxZVN9hTxab9L4E= +github.com/aymanbagabas/go-osc52 v1.2.1/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= +github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= +github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= +github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 h1:KdUfX2zKommPRa+PD0sWZUyXe9w277ABlgELO7H04IM= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/bufbuild/protocompile v0.14.0 h1:z3DW4IvXE5G/uTOnSQn+qwQQxvhckkTWLS/0No/o7KU= +github.com/bufbuild/protocompile v0.14.0/go.mod h1:N6J1NYzkspJo3ZwyL4Xjvli86XOj1xq4qAasUFxGups= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/charmbracelet/lipgloss v0.6.0 h1:1StyZB9vBSOyuZxQUcUwGr17JmojPNm87inij9N3wJY= +github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= +github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/cometbft/cometbft v0.38.12 h1:OWsLZN2KcSSFe8bet9xCn07VwhBnavPea3VyPnNq1bg= +github.com/cometbft/cometbft v0.38.12/go.mod h1:GPHp3/pehPqgX1930HmK1BpBLZPxB75v/dZg8Viwy+o= +github.com/cometbft/cometbft-db v0.11.0 h1:M3Lscmpogx5NTbb1EGyGDaFRdsoLWrUWimFEyf7jej8= +github.com/cometbft/cometbft-db v0.11.0/go.mod h1:GDPJAC/iFHNjmZZPN8V8C1yr/eyityhi2W1hz2MGKSc= +github.com/containerd/containerd v1.7.11 h1:lfGKw3eU35sjV0aG2eYZTiwFEY1pCzxdzicHP3SZILw= +github.com/containerd/containerd v1.7.11/go.mod h1:5UluHxHTX2rdvYuZ5OJTC5m/KJNs0Zs9wVoJm9zf5ZE= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= +github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/cosmos-sdk v0.50.9 h1:gt2usjz0H0qW6KwAxWw7ZJ3XU8uDwmhN+hYG3nTLeSg= +github.com/cosmos/cosmos-sdk v0.50.9/go.mod h1:TMH6wpoYBcg7Cp5BEg8fneLr+8XloNQkf2MRNF9V6JE= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= +github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= +github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= +github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= +github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= +github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= +github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= +github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI= +github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= +github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/docker/docker v27.0.0+incompatible h1:JRugTYuelmWlW0M3jakcIadDx2HUoUO6+Tf2C5jVfwA= +github.com/docker/docker v27.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= +github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/emicklei/proto v1.12.2 h1:ZDyDzrfMt7ncmyor/j07uoOCGLKtU5F87vTPwIzLe/o= +github.com/emicklei/proto v1.12.2/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= +github.com/emicklei/proto-contrib v0.15.0 h1:5D8JKpV1qekMDFwEJp8NVJGY1We6t14dn9D4G05fpyo= +github.com/emicklei/proto-contrib v0.15.0/go.mod h1:p6zmoy14hFYiwUb35X7nJ4u4l1vfvjc1mWrIt8QB3kw= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= +github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= +github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= +github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= +github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= +github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= +github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco= +github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= +github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= +github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= +github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= +github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= +github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk= +github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE= +github.com/gobuffalo/genny/v2 v2.1.0 h1:cCRBbqzo3GfNvj3UetD16zRgUvWFEyyl0qTqquuIqOM= +github.com/gobuffalo/genny/v2 v2.1.0/go.mod h1:4yoTNk4bYuP3BMM6uQKYPvtP6WsXFGm2w2EFYZdRls8= +github.com/gobuffalo/github_flavored_markdown v1.1.3/go.mod h1:IzgO5xS6hqkDmUh91BW/+Qxo/qYnvfzoz3A7uLkg77I= +github.com/gobuffalo/github_flavored_markdown v1.1.4 h1:WacrEGPXUDX+BpU1GM/Y0ADgMzESKNWls9hOTG1MHVs= +github.com/gobuffalo/github_flavored_markdown v1.1.4/go.mod h1:Vl9686qrVVQou4GrHRK/KOG3jCZOKLUqV8MMOAYtlso= +github.com/gobuffalo/helpers v0.6.7 h1:C9CedoRSfgWg2ZoIkVXgjI5kgmSpL34Z3qdnzpfNVd8= +github.com/gobuffalo/helpers v0.6.7/go.mod h1:j0u1iC1VqlCaJEEVkZN8Ia3TEzfj/zoXANqyJExTMTA= +github.com/gobuffalo/logger v1.0.7 h1:LTLwWelETXDYyqF/ASf0nxaIcdEOIJNxRokPcfI/xbU= +github.com/gobuffalo/logger v1.0.7/go.mod h1:u40u6Bq3VVvaMcy5sRBclD8SXhBYPS0Qk95ubt+1xJM= +github.com/gobuffalo/packd v1.0.2 h1:Yg523YqnOxGIWCp69W12yYBKsoChwI7mtu6ceM9Bwfw= +github.com/gobuffalo/packd v1.0.2/go.mod h1:sUc61tDqGMXON80zpKGp92lDb86Km28jfvX7IAyxFT8= +github.com/gobuffalo/plush/v4 v4.1.16/go.mod h1:6t7swVsarJ8qSLw1qyAH/KbrcSTwdun2ASEQkOznakg= +github.com/gobuffalo/plush/v4 v4.1.19 h1:o0E5gEJw+ozkAwQoCeiaWC6VOU2lEmX+GhtGkwpqZ8o= +github.com/gobuffalo/plush/v4 v4.1.19/go.mod h1:WiKHJx3qBvfaDVlrv8zT7NCd3dEMaVR/fVxW4wqV17M= +github.com/gobuffalo/tags/v3 v3.1.4 h1:X/ydLLPhgXV4h04Hp2xlbI2oc5MDaa7eub6zw8oHjsM= +github.com/gobuffalo/tags/v3 v3.1.4/go.mod h1:ArRNo3ErlHO8BtdA0REaZxijuWnWzF6PUXngmMXd2I0= +github.com/gobuffalo/validate/v3 v3.3.3 h1:o7wkIGSvZBYBd6ChQoLxkz2y1pfmhbI4jNJYh6PuNJ4= +github.com/gobuffalo/validate/v3 v3.3.3/go.mod h1:YC7FsbJ/9hW/VjQdmXPvFqvRis4vrRYFxr69WiNZw6g= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-yaml v1.11.3 h1:B3W9IdWbvrUu2OYQGwvU1nZtvMQJPBKgBUuweJjLj6I= +github.com/goccy/go-yaml v1.11.3/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= +github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github/v48 v48.2.0 h1:68puzySE6WqUY9KWmpOsDEQfDZsso98rT6pZcz9HqcE= +github.com/google/go-github/v48 v48.2.0/go.mod h1:dDlehKBDo850ZPvCTK0sEqTCVWcrGl2LcDiajkYi89Y= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= +github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= +github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog= +github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= +github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog= +github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= +github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= +github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= +github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ignite/cli/v28 v28.5.3 h1:UHB/Ds9Yw5Oqrh+WdS92z2PEoQuMDTid+M86cVpy6uQ= +github.com/ignite/cli/v28 v28.5.3/go.mod h1:TXv/JEkao4H0wrM8r3VHasIndPV9+yJLdDo4IYRbPis= +github.com/ignite/web v0.6.1 h1:kHG+T7NnR8cCPjAGxEFQD+njVYM08toeG57iYRXzpwo= +github.com/ignite/web v0.6.1/go.mod h1:WZWBaBYF8RazN7dE462BLpvXDY8ScacxcJ07BKwX/jY= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= +github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/microcosm-cc/bluemonday v1.0.20/go.mod h1:yfBmMi8mxvaZut3Yytv+jTXRY8mxyjJ0/kQBTElld50= +github.com/microcosm-cc/bluemonday v1.0.22/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM= +github.com/microcosm-cc/bluemonday v1.0.23 h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY= +github.com/microcosm-cc/bluemonday v1.0.23/go.mod h1:mN70sk7UkkF8TUr2IGBpNN0jAgStuPzlK76QuruE/z4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/moby v24.0.9+incompatible h1:Z/hFbZJqC5Fmuf6jesMLdHU71CMAgdiSJ1ZYey+bFmg= +github.com/moby/moby v24.0.9+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc= +github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= +github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= +github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= +github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg= +github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68/go.mod h1:Xk+z4oIWdQqJzsxyjgl3P22oYZnHdZ8FFTHAQQt5BMQ= +github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= +github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= +github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs= +github.com/muesli/termenv v0.14.0 h1:8x9NFfOe8lmIWK4pgy3IfVEy47f+ppe3tUqdPZG2Uy0= +github.com/muesli/termenv v0.14.0/go.mod h1:kG/pF1E7fh949Xhe156crRUrHNyK221IuGO7Ez60Uc8= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nqd/flat v0.2.0 h1:g6lXtMxsxrz6PZOO+rNnAJUn/GGRrK4FgVEhy/v+cHI= +github.com/nqd/flat v0.2.0/go.mod h1:FOuslZmNY082wVfVUUb7qAGWKl8z8Nor9FMg+Xj2Nss= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= +github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= +github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE= +github.com/radovskyb/watcher v1.0.7/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= +github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d h1:yKm7XZV6j9Ev6lojP2XaIshpT4ymkqhMeSghO5Ps00E= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e h1:qpG93cPwA5f7s/ZPBJnGOYQNK/vKsaDaseuKT5Asee8= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= +github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= +go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= +go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc= +google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/cca/integration/app_test.go b/cca/integration/app_test.go new file mode 100644 index 00000000..7aeef3c7 --- /dev/null +++ b/cca/integration/app_test.go @@ -0,0 +1,74 @@ +package integration_test + +import ( + "bytes" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" + + pluginsconfig "github.com/ignite/cli/v28/ignite/config/plugins" + "github.com/ignite/cli/v28/ignite/pkg/cmdrunner/step" + "github.com/ignite/cli/v28/ignite/services/plugin" + envtest "github.com/ignite/cli/v28/integration" +) + +func TestCCA(t *testing.T) { + var ( + require = require.New(t) + env = envtest.New(t) + app = env.Scaffold("cca-app") + ) + + dir, err := os.Getwd() + require.NoError(err) + pluginPath := filepath.Join(filepath.Dir(filepath.Dir(dir)), "cca") + + env.Must(env.Exec("install cca app locally", + step.NewSteps(step.New( + step.Exec(envtest.IgniteApp, "app", "install", pluginPath), + step.Workdir(app.SourcePath()), + )), + )) + + // One local plugin expected + assertLocalPlugins(t, app, []pluginsconfig.Plugin{ + { + Path: pluginPath, + }, + }) + assertGlobalPlugins(t, nil) + + buf := &bytes.Buffer{} + env.Must(env.Exec("run cca", + step.NewSteps(step.New( + step.Exec( + envtest.IgniteApp, + "scaffold", + "cca", + ), + step.Workdir(app.SourcePath()), + step.Stdout(buf), + step.Stderr(buf), + )), + )) + + require.Contains("Ignite CCA added", buf.String()) +} + +func assertLocalPlugins(t *testing.T, app envtest.App, expectedPlugins []pluginsconfig.Plugin) { + t.Helper() + cfg, err := pluginsconfig.ParseDir(app.SourcePath()) + require.NoError(t, err) + require.ElementsMatch(t, expectedPlugins, cfg.Apps, "unexpected local apps") +} + +func assertGlobalPlugins(t *testing.T, expectedPlugins []pluginsconfig.Plugin) { + t.Helper() + cfgPath, err := plugin.PluginsPath() + require.NoError(t, err) + cfg, err := pluginsconfig.ParseDir(cfgPath) + require.NoError(t, err) + require.ElementsMatch(t, expectedPlugins, cfg.Apps, "unexpected global apps") +} diff --git a/cca/main.go b/cca/main.go new file mode 100644 index 00000000..cbcbbda1 --- /dev/null +++ b/cca/main.go @@ -0,0 +1,55 @@ +package main + +import ( + "context" + "fmt" + + hplugin "github.com/hashicorp/go-plugin" + + "github.com/ignite/apps/cca/cmd" + + "github.com/ignite/cli/v28/ignite/services/plugin" +) + +type app struct{} + +func (app) Manifest(_ context.Context) (*plugin.Manifest, error) { + return &plugin.Manifest{ + Name: "cca", + Commands: cmd.GetCommands(), + }, nil +} + +func (app) Execute(ctx context.Context, c *plugin.ExecutedCommand, _ plugin.ClientAPI) error { + // Remove the first two elements "ignite" and "scaffold" from OsArgs. + args := c.OsArgs[2:] + + switch args[0] { + case "cca": + return cmd.ExecuteScaffold(ctx, c) + default: + return fmt.Errorf("unknown command: %s", c.Path) + } +} + +func (app) ExecuteHookPre(_ context.Context, _ *plugin.ExecutedHook, _ plugin.ClientAPI) error { + return nil +} + +func (app) ExecuteHookPost(_ context.Context, _ *plugin.ExecutedHook, _ plugin.ClientAPI) error { + return nil +} + +func (app) ExecuteHookCleanUp(_ context.Context, _ *plugin.ExecutedHook, _ plugin.ClientAPI) error { + return nil +} + +func main() { + hplugin.Serve(&hplugin.ServeConfig{ + HandshakeConfig: plugin.HandshakeConfig(), + Plugins: map[string]hplugin.Plugin{ + "cca": plugin.NewGRPC(&app{}), + }, + GRPCServer: hplugin.DefaultGRPCServer, + }) +} diff --git a/cca/templates/README.md b/cca/templates/README.md new file mode 100644 index 00000000..5761b4a8 --- /dev/null +++ b/cca/templates/README.md @@ -0,0 +1,6 @@ +# Templates + +The template is based on [Cosmology chain-admin template](https://github.com/cosmology-tech/create-cosmos-app/tree/f758ce814fbe8bd1e7cb07d3a6e91242efe33cd4/templates/chain-template) at commit `f758ce814fbe8bd1e7cb07d3a6e91242efe33cd4`. + +Some modifications have been done to make it work nicer with Ignite scaffolded chains. +An exhaustive list of changes compared to the original template can be found [here](./ignite-chain-admin.patch). diff --git a/cca/templates/ignite-chain-admin.patch b/cca/templates/ignite-chain-admin.patch new file mode 100644 index 00000000..a9a5d331 --- /dev/null +++ b/cca/templates/ignite-chain-admin.patch @@ -0,0 +1,4186 @@ +From 9fa2d195a8a5af8c1be774ede796c31e83213fba Mon Sep 17 00:00:00 2001 +From: Julien Robert +Date: Fri, 15 Nov 2024 18:01:54 +0100 +Subject: [PATCH] ignite chain template + +--- + templates/chain-template/CHANGELOG.md | 440 ------------------ + templates/chain-template/README.md | 85 +--- + .../asset-list/AssetListSection.tsx | 56 --- + .../components/asset-list/AssetsOverview.tsx | 192 -------- + .../asset-list/DropdownTransferModal.tsx | 291 ------------ + .../asset-list/RowTransferModal.tsx | 288 ------------ + .../components/asset-list/index.ts | 2 - + .../components/asset-list/types.tsx | 52 --- + .../components/common/Footer.tsx | 8 +- + .../common/Header/ChainDropdown.tsx | 33 +- + .../components/common/Sidebar/NavItems.tsx | 10 - + .../common/Sidebar/SidebarContent.tsx | 4 +- + templates/chain-template/components/index.ts | 1 - + templates/chain-template/config/chains.ts | 7 +- + templates/chain-template/config/products.ts | 52 ++- + .../chain-template/hooks/asset-list/index.ts | 7 - + .../hooks/asset-list/useAssets.ts | 136 ------ + .../hooks/asset-list/useBalance.ts | 49 -- + .../hooks/asset-list/useChainAssetsPrices.ts | 49 -- + .../hooks/asset-list/useChainUtils.ts | 177 ------- + .../hooks/asset-list/useOsmoQueryHooks.ts | 37 -- + .../hooks/asset-list/useTopTokens.ts | 45 -- + .../hooks/asset-list/useTotalAssets.ts | 202 -------- + .../chain-template/hooks/common/index.ts | 1 - + .../hooks/common/useStarshipChains.ts | 47 -- + templates/chain-template/hooks/index.ts | 1 - + .../hooks/voting/useVotingData.ts | 2 +- + templates/chain-template/package.json | 9 +- + templates/chain-template/pages/_app.tsx | 2 +- + templates/chain-template/pages/asset-list.tsx | 13 - + templates/chain-template/pages/docs.tsx | 10 +- + templates/chain-template/pages/faucet.tsx | 214 --------- + .../starship/configs/config.yaml | 36 -- + templates/chain-template/starship/index.ts | 1 - + templates/chain-template/starship/types.ts | 19 - + .../chain-template/utils/asset-list/assets.ts | 19 - + .../chain-template/utils/asset-list/base.ts | 96 ---- + .../chain-template/utils/asset-list/format.ts | 31 -- + .../chain-template/utils/asset-list/index.ts | 5 - + .../chain-template/utils/asset-list/pool.ts | 279 ----------- + .../chain-template/utils/asset-list/types.ts | 85 ---- + templates/chain-template/utils/common.ts | 2 +- + templates/chain-template/utils/index.ts | 1 - + templates/chain-template/yarn.lock | 281 ++--------- + 44 files changed, 88 insertions(+), 3289 deletions(-) + delete mode 100644 templates/chain-template/CHANGELOG.md + delete mode 100644 templates/chain-template/components/asset-list/AssetListSection.tsx + delete mode 100644 templates/chain-template/components/asset-list/AssetsOverview.tsx + delete mode 100644 templates/chain-template/components/asset-list/DropdownTransferModal.tsx + delete mode 100644 templates/chain-template/components/asset-list/RowTransferModal.tsx + delete mode 100644 templates/chain-template/components/asset-list/index.ts + delete mode 100644 templates/chain-template/components/asset-list/types.tsx + delete mode 100644 templates/chain-template/hooks/asset-list/index.ts + delete mode 100644 templates/chain-template/hooks/asset-list/useAssets.ts + delete mode 100644 templates/chain-template/hooks/asset-list/useBalance.ts + delete mode 100644 templates/chain-template/hooks/asset-list/useChainAssetsPrices.ts + delete mode 100644 templates/chain-template/hooks/asset-list/useChainUtils.ts + delete mode 100644 templates/chain-template/hooks/asset-list/useOsmoQueryHooks.ts + delete mode 100644 templates/chain-template/hooks/asset-list/useTopTokens.ts + delete mode 100644 templates/chain-template/hooks/asset-list/useTotalAssets.ts + delete mode 100644 templates/chain-template/hooks/common/useStarshipChains.ts + delete mode 100644 templates/chain-template/pages/asset-list.tsx + delete mode 100644 templates/chain-template/pages/faucet.tsx + delete mode 100644 templates/chain-template/starship/configs/config.yaml + delete mode 100644 templates/chain-template/starship/index.ts + delete mode 100644 templates/chain-template/starship/types.ts + delete mode 100644 templates/chain-template/utils/asset-list/assets.ts + delete mode 100644 templates/chain-template/utils/asset-list/base.ts + delete mode 100644 templates/chain-template/utils/asset-list/format.ts + delete mode 100644 templates/chain-template/utils/asset-list/index.ts + delete mode 100644 templates/chain-template/utils/asset-list/pool.ts + delete mode 100644 templates/chain-template/utils/asset-list/types.ts + +diff --git a/templates/chain-template/CHANGELOG.md b/templates/chain-template/CHANGELOG.md +deleted file mode 100644 +index 4e82db79..00000000 +--- a/templates/chain-template/CHANGELOG.md ++++ /dev/null +@@ -1,440 +0,0 @@ +-# Change Log +- +-All notable changes to this project will be documented in this file. +-See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +- +-# 1.1.0 (2024-10-08) +- +- +-### Bug Fixes +- +-* contract tab width ([7c859c0](https://github.com/cosmology-tech/create-cosmos-app/commit/7c859c0a94b7d42c772b33da56442668b5b8afd7)) +-* create contract popover style ([b2db706](https://github.com/cosmology-tech/create-cosmos-app/commit/b2db7060ef59d258182e0323589db85a74aea1ad)) +-* **style:** decrease max width ([62a25f8](https://github.com/cosmology-tech/create-cosmos-app/commit/62a25f8a3245542ec3e69907aee790afa3b61b73)) +- +- +-### Features +- +-* add contract address input field ([029d260](https://github.com/cosmology-tech/create-cosmos-app/commit/029d26056994664331d5bf69753885bf98616d2c)) +-* add create new contract button ([ef87061](https://github.com/cosmology-tech/create-cosmos-app/commit/ef8706144b607e1da1fae070a6d2dc43992fc21a)) +-* add dark theme styles ([56bd0cb](https://github.com/cosmology-tech/create-cosmos-app/commit/56bd0cb246cf154436a55e8c79cdb52b8ab3908b)) +-* add execute contract UI ([d158fa4](https://github.com/cosmology-tech/create-cosmos-app/commit/d158fa496d63a34125a5719ab1c1e5a502496d26)) +-* add instantiate contract UI ([3be345b](https://github.com/cosmology-tech/create-cosmos-app/commit/3be345b2704949a616757efa37e3438ac0f2d54c)) +-* add mobile styles ([40df1d9](https://github.com/cosmology-tech/create-cosmos-app/commit/40df1d961bc394ca614a727c716ec911a4c4d9f7)) +-* add My Contracts, Query and Execute tabs ([c904729](https://github.com/cosmology-tech/create-cosmos-app/commit/c904729b681fc896046ec9767cdf19f49fcf6b67)) +-* add query contract UI ([a543199](https://github.com/cosmology-tech/create-cosmos-app/commit/a5431990bb62f2a0ec0ff192526820e6d91e086d)) +-* add Stepper component ([f86cf5f](https://github.com/cosmology-tech/create-cosmos-app/commit/f86cf5f4837a68a47a54ea1ea7a4ac4aa6bac7f5)) +-* add tab and contract address to URL params ([c6f0af8](https://github.com/cosmology-tech/create-cosmos-app/commit/c6f0af88b1086d464112fb7725442425c4386ff8)) +-* add upload contract UI ([43867de](https://github.com/cosmology-tech/create-cosmos-app/commit/43867deebcf8aa6ba60bd5400de75299f9b864b0)) +-* autofill admin address ([8088abc](https://github.com/cosmology-tech/create-cosmos-app/commit/8088abc93cbfd794cf7eb38ddb1cc8c156b10f72)) +-* create contract from code ID ([0d02e31](https://github.com/cosmology-tech/create-cosmos-app/commit/0d02e31a46c50c2572d4de53401abd05db1f6555)) +-* initial commit for new chain-template ([e420c63](https://github.com/cosmology-tech/create-cosmos-app/commit/e420c639cd8fba249e70e44b151cde750aec7e75)) +-* search my contracts ([336edd3](https://github.com/cosmology-tech/create-cosmos-app/commit/336edd30cf791c6538fbc2de26aacbe201471ba2)) +-* switch tabs after instantiate ([1964562](https://github.com/cosmology-tech/create-cosmos-app/commit/196456255052728d3f3c39a4f2ba409146fb57bb)) +-* upload to instantiate contract flow ([4f2c118](https://github.com/cosmology-tech/create-cosmos-app/commit/4f2c1186605c1ed9a239abfccdc75e2de39b2346)) +- +- +- +- +- +-# [1.0.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.16.2...@cosmology/connect-multi-chain@1.0.0) (2024-04-06) +- +- +-### Bug Fixes +- +-* custom filtering connect-multi-chain ([0c345ce](https://github.com/cosmology-tech/create-cosmos-app/commit/0c345ceef886ebcd28574244aee3fef8f3d9ebb7)) +-* custom filtering stake-tokens ([9cc3d24](https://github.com/cosmology-tech/create-cosmos-app/commit/9cc3d24055cc54358af9dc7d8a56856bd2ef0787)) +-* use new combobox in asset-list ([68449d3](https://github.com/cosmology-tech/create-cosmos-app/commit/68449d39411c259f85eec07b7ae42f1a712c21a9)) +-* use new dropdown for connect-multi-chain and vote-proposal ([68dd4c3](https://github.com/cosmology-tech/create-cosmos-app/commit/68dd4c3b03939b14ff46c622e6267b41ac7ddf18)) +- +- +- +- +- +-## [0.16.2](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.16.1...@cosmology/connect-multi-chain@0.16.2) (2024-01-20) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.16.1](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.16.0...@cosmology/connect-multi-chain@0.16.1) (2024-01-19) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-# [0.16.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.15.7...@cosmology/connect-multi-chain@0.16.0) (2024-01-19) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.15.7](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.15.6...@cosmology/connect-multi-chain@0.15.7) (2024-01-19) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.15.6](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.15.5...@cosmology/connect-multi-chain@0.15.6) (2024-01-19) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.15.5](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.15.4...@cosmology/connect-multi-chain@0.15.5) (2023-09-27) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.15.4](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.15.3...@cosmology/connect-multi-chain@0.15.4) (2023-09-27) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.15.3](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.15.2...@cosmology/connect-multi-chain@0.15.3) (2023-07-30) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.15.2](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.15.1...@cosmology/connect-multi-chain@0.15.2) (2023-07-14) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.15.1](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.15.0...@cosmology/connect-multi-chain@0.15.1) (2023-06-28) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-# [0.15.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.14.3...@cosmology/connect-multi-chain@0.15.0) (2023-04-12) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.14.3](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.14.2...@cosmology/connect-multi-chain@0.14.3) (2023-03-28) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.14.2](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.14.1...@cosmology/connect-multi-chain@0.14.2) (2023-02-15) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.14.1](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.14.0...@cosmology/connect-multi-chain@0.14.1) (2023-01-11) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-# [0.14.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.13.3...@cosmology/connect-multi-chain@0.14.0) (2022-12-17) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.13.3](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.13.2...@cosmology/connect-multi-chain@0.13.3) (2022-11-25) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.13.2](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.13.1...@cosmology/connect-multi-chain@0.13.2) (2022-11-21) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.13.1](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.13.0...@cosmology/connect-multi-chain@0.13.1) (2022-11-17) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-# [0.13.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.12.0...@cosmology/connect-multi-chain@0.13.0) (2022-11-15) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-# [0.12.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.11.0...@cosmology/connect-multi-chain@0.12.0) (2022-11-14) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-# [0.11.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.10.0...@cosmology/connect-multi-chain@0.11.0) (2022-11-10) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-# [0.10.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.9.0...@cosmology/connect-multi-chain@0.10.0) (2022-11-09) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-# [0.9.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.8.5...@cosmology/connect-multi-chain@0.9.0) (2022-11-08) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.8.5](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.8.4...@cosmology/connect-multi-chain@0.8.5) (2022-11-05) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.8.4](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.8.3...@cosmology/connect-multi-chain@0.8.4) (2022-11-05) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.8.3](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmology/connect-multi-chain@0.8.2...@cosmology/connect-multi-chain@0.8.3) (2022-11-05) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## 0.8.2 (2022-11-01) +- +-**Note:** Version bump only for package @cosmology/connect-multi-chain +- +- +- +- +- +-## [0.8.1](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.8.0...@cosmonauts/connect-multi-chain@0.8.1) (2022-10-27) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-# [0.8.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.7.3...@cosmonauts/connect-multi-chain@0.8.0) (2022-10-26) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.7.3](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.7.2...@cosmonauts/connect-multi-chain@0.7.3) (2022-10-24) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.7.2](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.7.1...@cosmonauts/connect-multi-chain@0.7.2) (2022-10-15) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.7.1](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.7.0...@cosmonauts/connect-multi-chain@0.7.1) (2022-10-03) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-# [0.7.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.6.1...@cosmonauts/connect-multi-chain@0.7.0) (2022-09-30) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.6.1](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.6.0...@cosmonauts/connect-multi-chain@0.6.1) (2022-09-25) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-# [0.6.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.5.0...@cosmonauts/connect-multi-chain@0.6.0) (2022-09-25) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-# [0.5.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.4.0...@cosmonauts/connect-multi-chain@0.5.0) (2022-09-23) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-# [0.4.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.3.0...@cosmonauts/connect-multi-chain@0.4.0) (2022-09-22) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-# [0.3.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.2.0...@cosmonauts/connect-multi-chain@0.3.0) (2022-09-22) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-# [0.2.0](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.1.10...@cosmonauts/connect-multi-chain@0.2.0) (2022-09-22) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.1.10](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.1.9...@cosmonauts/connect-multi-chain@0.1.10) (2022-09-11) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.1.9](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.1.8...@cosmonauts/connect-multi-chain@0.1.9) (2022-09-08) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.1.8](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.1.7...@cosmonauts/connect-multi-chain@0.1.8) (2022-09-02) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.1.7](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.1.6...@cosmonauts/connect-multi-chain@0.1.7) (2022-08-30) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.1.6](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.1.5...@cosmonauts/connect-multi-chain@0.1.6) (2022-08-27) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.1.5](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.1.4...@cosmonauts/connect-multi-chain@0.1.5) (2022-08-27) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.1.4](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.1.3...@cosmonauts/connect-multi-chain@0.1.4) (2022-08-27) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## [0.1.3](https://github.com/cosmology-tech/create-cosmos-app/compare/@cosmonauts/connect-multi-chain@0.1.2...@cosmonauts/connect-multi-chain@0.1.3) (2022-08-25) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## 0.1.2 (2022-08-25) +- +-**Note:** Version bump only for package @cosmonauts/connect-multi-chain +- +- +- +- +- +-## 0.1.1 (2022-08-24) +- +-**Note:** Version bump only for package @cosmos-app/connect-multi-chain +diff --git a/templates/chain-template/README.md b/templates/chain-template/README.md +index 8f7ea36c..93ac8c07 100644 +--- a/templates/chain-template/README.md ++++ b/templates/chain-template/README.md +@@ -1,6 +1,4 @@ +-This is a Cosmos App project bootstrapped with [`create-cosmos-app`](https://github.com/cosmology-tech/create-cosmos-app). +- +-## Getting Started ++# Usage + + First, install the packages and run the development server: + +@@ -11,84 +9,3 @@ yarn && yarn dev + Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + + You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. +- +-## How to connect to Starship chains +- +-1. Follow the official guide to set up Starship: https://docs.cosmology.zone/starship/get-started/step-1 +-2. Run `yarn starship start` and wait until Starship is up and running +-3. Open a new terminal and run `yarn dev` +-4. Open http://localhost:3000, select "Osmosis Devnet" or "Cosmos Hub Devnet" from the chain dropdown in the top right corner then click "Connect Wallet" in the left sidebar to connect to the chain +-5. Go to "Faucet" to get some test tokens and enjoy! +- +-## Learn More +- +-### Chain Registry +- +-The npm package for the Official Cosmos chain registry. Get chain and token data for you application. +- +-- https://github.com/cosmology-tech/chain-registry +- +-### Cosmology Videos +- +-Checkout more videos for how to use various frontend tooling in the Cosmos! +- +-- https://cosmology.zone/learn +- +-### Cosmos Kit +- +-A wallet connector for the Cosmos ⚛️ +- +-- https://github.com/cosmology-tech/cosmos-kit +- +-### Telescope +- +-A "babel for the Cosmos", Telescope is a TypeScript Transpiler for Cosmos Protobufs. Telescope is used to generate libraries for Cosmos blockchains. Simply point to your protobuffer files and create developer-friendly Typescript libraries for teams to build on your blockchain. +- +-- https://github.com/cosmology-tech/telescope +- +-🎥 [Checkout the Telescope video playlist](https://www.youtube.com/watch?v=n82MsLe82mk&list=PL-lMkVv7GZwyQaK6bp6kMdOS5mzosxytC) to learn how to use `telescope`! +- +-### CosmWasm TS Codegen +- +-The quickest and easiest way to interact with CosmWasm Contracts. @cosmwasm/ts-codegen converts your CosmWasm smart contracts into dev-friendly TypeScript classes so you can focus on shipping code. +- +-- https://github.com/CosmWasm/ts-codegen +- +-🎥 [Checkout the CosmWasm/ts-codegen video playlist](https://www.youtube.com/watch?v=D_A5V2PfNLA&list=PL-lMkVv7GZwz1KO3jANwr5W4MoziruXwK) to learn how to use `ts-codegen`! +- +-## Learn More about Next.js +- +-To learn more about Next.js, take a look at the following resources: +- +-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. +- +-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! +- +-## Deploy on Vercel +- +-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +- +-Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +- +-## Related +- +-Checkout these related projects: +- +-- [@cosmology/telescope](https://github.com/cosmology-tech/telescope) Your Frontend Companion for Building with TypeScript with Cosmos SDK Modules. +-- [@cosmwasm/ts-codegen](https://github.com/CosmWasm/ts-codegen) Convert your CosmWasm smart contracts into dev-friendly TypeScript classes. +-- [chain-registry](https://github.com/cosmology-tech/chain-registry) Everything from token symbols, logos, and IBC denominations for all assets you want to support in your application. +-- [cosmos-kit](https://github.com/cosmology-tech/cosmos-kit) Experience the convenience of connecting with a variety of web3 wallets through a single, streamlined interface. +-- [create-cosmos-app](https://github.com/cosmology-tech/create-cosmos-app) Set up a modern Cosmos app by running one command. +-- [interchain-ui](https://github.com/cosmology-tech/interchain-ui) The Interchain Design System, empowering developers with a flexible, easy-to-use UI kit. +-- [starship](https://github.com/cosmology-tech/starship) Unified Testing and Development for the Interchain. +- +-## Credits +- +-🛠 Built by Cosmology — if you like our tools, please consider delegating to [our validator ⚛️](https://cosmology.zone/validator) +- +-## Disclaimer +- +-AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED “AS IS”, AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. +- +-No developer or entity involved in creating this software will be liable for any claims or damages whatsoever associated with your use, inability to use, or your interaction with other users of the code, including any direct, indirect, incidental, special, exemplary, punitive or consequential damages, or loss of profits, cryptocurrencies, tokens, or anything else of value. +diff --git a/templates/chain-template/components/asset-list/AssetListSection.tsx b/templates/chain-template/components/asset-list/AssetListSection.tsx +deleted file mode 100644 +index e4189f1e..00000000 +--- a/templates/chain-template/components/asset-list/AssetListSection.tsx ++++ /dev/null +@@ -1,56 +0,0 @@ +-import React from 'react'; +-import { Text, Box } from '@interchain-ui/react'; +-import AssetsOverview from './AssetsOverview'; +-import { useChain } from '@cosmos-kit/react'; +-import { useAssets } from '@/hooks'; +-import { ChainName } from 'cosmos-kit'; +- +-interface AssetListSectionProps { +- chainName: ChainName; +- children?: React.ReactNode; +-} +- +-export const AssetListSection = ({ chainName }: AssetListSectionProps) => { +- const { isWalletConnected } = useChain(chainName); +- const { data, isLoading, refetch } = useAssets(chainName); +- +- if (!isWalletConnected) { +- return ( +- +- +- My assets +- +- +- +- +- Connect the wallet to see the assets +- +- +- +- ); +- } +- +- return ( +- +- +- +- ); +-}; +diff --git a/templates/chain-template/components/asset-list/AssetsOverview.tsx b/templates/chain-template/components/asset-list/AssetsOverview.tsx +deleted file mode 100644 +index 8a5967c5..00000000 +--- a/templates/chain-template/components/asset-list/AssetsOverview.tsx ++++ /dev/null +@@ -1,192 +0,0 @@ +-import React, { useMemo, useState } from 'react'; +-import { flushSync } from 'react-dom'; +-import { useChain } from '@cosmos-kit/react'; +-import BigNumber from 'bignumber.js'; +-import { ChainName } from 'cosmos-kit'; +-import { SingleChain, SingleChainProps } from '@interchain-ui/react'; +- +-import { useDisclosure, useChainUtils, useTotalAssets } from '@/hooks'; +-import { +- truncDecimals, +- formatDollarValue, +- prettyAssetToTransferItem, +-} from '@/utils'; +- +-import { DropdownTransferModal } from './DropdownTransferModal'; +-import { RowTransferModal } from './RowTransferModal'; +- +-import { PrettyAsset, Transfer, TransferInfo } from './types'; +- +-interface AssetsOverviewProps { +- isLoading?: boolean; +- assets: PrettyAsset[]; +- prices: Record; +- selectedChainName: ChainName; +- refetch?: () => void; +-} +- +-const AssetsOverview = ({ +- assets, +- selectedChainName, +- isLoading, +-}: AssetsOverviewProps) => { +- const [dropdownTransferInfo, setTransferInfo] = useState(); +- const [rowTransferInfo, setRowTransferInfo] = useState(); +- +- const { chain } = useChain(selectedChainName); +- +- const { +- data, +- isLoading: isLoadingTotalAssets, +- refetch, +- } = useTotalAssets(selectedChainName); +- const { +- getChainName, +- getNativeDenom, +- isNativeAsset, +- getDenomBySymbolAndChain, +- } = useChainUtils(selectedChainName); +- +- const modalControl = useDisclosure(); +- const rowModalControl = useDisclosure(); +- +- const ibcAssets = useMemo( +- () => assets.filter((asset) => !isNativeAsset(asset)), +- // eslint-disable-next-line react-hooks/exhaustive-deps +- [assets] +- ); +- +- const hasBalance = useMemo( +- () => ibcAssets.some((asset) => new BigNumber(asset.amount).gt(0)), +- [ibcAssets] +- ); +- +- const assetsToShow = useMemo(() => { +- const returnAssets: SingleChainProps['list'] = assets.map((asset) => ({ +- imgSrc: asset.logoUrl ?? '', +- symbol: asset.symbol, +- denom: asset.denom, +- name: asset.prettyChainName, +- tokenAmount: truncDecimals(asset.displayAmount, 6), +- tokenAmountPrice: formatDollarValue(asset.dollarValue, asset.amount), +- chainName: asset.prettyChainName, +- showDeposit: !isNativeAsset(asset), +- showWithdraw: !isNativeAsset(asset), +- onDeposit: () => { +- const sourceChainName = getChainName(asset.denom); +- const denom = getDenomBySymbolAndChain(sourceChainName, asset.symbol); +- flushSync(() => { +- setRowTransferInfo({ +- sourceChainName, +- type: Transfer.Deposit, +- destChainName: selectedChainName, +- token: { +- ...prettyAssetToTransferItem(asset), +- priceDisplayAmount: 0, +- available: 0, +- denom, +- }, +- }); +- }); +- +- rowModalControl.onOpen(); +- }, +- onWithdraw: () => { +- const destChainName = getChainName(asset.denom); +- +- flushSync(() => { +- setRowTransferInfo({ +- sourceChainName: selectedChainName, +- type: Transfer.Withdraw, +- destChainName, +- token: prettyAssetToTransferItem(asset), +- }); +- }); +- +- rowModalControl.onOpen(); +- }, +- })); +- +- return returnAssets; +- }, [ +- assets, +- getChainName, +- getNativeDenom, +- isNativeAsset, +- rowModalControl, +- selectedChainName, +- ]); +- +- const onWithdrawAsset = () => { +- const destChainName = getChainName(ibcAssets[0].denom); +- setTransferInfo({ +- sourceChainName: selectedChainName, +- type: Transfer.Withdraw, +- destChainName, +- token: prettyAssetToTransferItem(ibcAssets[0]), +- }); +- modalControl.onOpen(); +- }; +- +- const onDepositAsset = () => { +- const sourceChainName = getChainName(ibcAssets[0].denom); +- const sourceChainAssetDenom = getNativeDenom(sourceChainName); +- setTransferInfo({ +- sourceChainName, +- type: Transfer.Deposit, +- destChainName: selectedChainName, +- token: { +- ...prettyAssetToTransferItem(ibcAssets[0]), +- available: 0, +- priceDisplayAmount: 0, +- denom: sourceChainAssetDenom, +- }, +- }); +- modalControl.onOpen(); +- }; +- +- return ( +- <> +- 0} +- showWithdraw={hasBalance} +- onDeposit={onDepositAsset} +- onWithdraw={onWithdrawAsset} +- singleChainHeader={{ +- label: `Total on ${chain.pretty_name}`, +- value: `${data?.total ?? 0}`, +- }} +- list={assetsToShow} +- /> +- +- {data && dropdownTransferInfo && ( +- +- )} +- +- {rowTransferInfo && ( +- +- )} +- +- ); +-}; +- +-export default AssetsOverview; +diff --git a/templates/chain-template/components/asset-list/DropdownTransferModal.tsx b/templates/chain-template/components/asset-list/DropdownTransferModal.tsx +deleted file mode 100644 +index fde312b7..00000000 +--- a/templates/chain-template/components/asset-list/DropdownTransferModal.tsx ++++ /dev/null +@@ -1,291 +0,0 @@ +-import React, { useEffect, useState, useMemo } from 'react'; +-import { +- BasicModal, +- OverviewTransfer, +- OverviewTransferProps, +-} from '@interchain-ui/react'; +-import { useChainWallet, useManager } from '@cosmos-kit/react'; +-import BigNumber from 'bignumber.js'; +-import { ibc } from 'osmo-query'; +-import { StdFee, coins } from '@cosmjs/amino'; +-import { ChainName } from 'cosmos-kit'; +-import { keplrWalletName } from '@/config'; +-import { useDisclosure, useChainUtils, useTx, useBalance } from '@/hooks'; +-import { truncDecimals } from '@/utils'; +- +-import { +- PrettyAsset, +- PriceHash, +- TransferInfo, +- Transfer, +- Unpacked, +-} from './types'; +- +-const { transfer } = ibc.applications.transfer.v1.MessageComposer.withTypeUrl; +- +-const ZERO_AMOUNT = '0'; +- +-interface OverviewTransferWrapperProps { +- prices: PriceHash; +- assets: PrettyAsset[]; +- modalControl: ReturnType; +- updateData: () => void; +- transferInfoState: { +- transferInfo: TransferInfo; +- setTransferInfo: React.Dispatch< +- React.SetStateAction +- >; +- }; +- selectedChainName: ChainName; +-} +- +-const OverviewTransferWrapper = ( +- props: OverviewTransferWrapperProps & { +- isLoading: boolean; +- setIsLoading: React.Dispatch>; +- inputValue: string; +- setInputValue: React.Dispatch>; +- } +-) => { +- const { +- assets, +- prices, +- modalControl, +- transferInfoState, +- updateData, +- selectedChainName, +- isLoading, +- setIsLoading, +- inputValue, +- setInputValue, +- } = props; +- +- const { +- convRawToDispAmount, +- symbolToDenom, +- getExponentByDenom, +- getIbcInfo, +- getChainName, +- getNativeDenom, +- } = useChainUtils(selectedChainName); +- +- const { transferInfo, setTransferInfo } = transferInfoState; +- +- const { +- type: transferType, +- token: transferToken, +- destChainName, +- sourceChainName, +- } = transferInfo; +- +- const isDeposit = transferType === 'Deposit'; +- const { balance, isLoading: isLoadingBalance } = useBalance( +- sourceChainName, +- isDeposit +- ); +- +- const { address: sourceAddress, connect: connectSourceChain } = +- useChainWallet(sourceChainName, keplrWalletName); +- +- const { address: destAddress, connect: connectDestChain } = useChainWallet( +- destChainName, +- keplrWalletName +- ); +- +- const { getChainLogo } = useManager(); +- const { tx } = useTx(sourceChainName); +- +- const availableAmount = useMemo((): number => { +- if (!isDeposit) { +- return transferToken.priceDisplayAmount ?? 0; +- } +- +- if (isLoadingBalance) { +- return 0; +- } +- +- return new BigNumber( +- convRawToDispAmount(transferToken.symbol, balance?.amount || ZERO_AMOUNT) +- ).toNumber(); +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, [isDeposit, isLoadingBalance, transferToken]); +- +- const dollarValue = new BigNumber(inputValue) +- .multipliedBy(prices[symbolToDenom(transferToken.symbol)]) +- .decimalPlaces(2) +- .toString(); +- +- useEffect(() => { +- if (!modalControl.isOpen) return; +- if (!sourceAddress) connectSourceChain(); +- if (!destAddress) connectDestChain(); +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, [destAddress, sourceAddress, modalControl]); +- +- const closeModal = () => { +- modalControl.onClose(); +- setInputValue(''); +- setIsLoading(false); +- }; +- +- const handleTransferSubmit = async () => { +- if (!sourceAddress || !destAddress) return; +- setIsLoading(true); +- +- const transferAmount = new BigNumber(inputValue) +- .shiftedBy(getExponentByDenom(symbolToDenom(transferToken.symbol))) +- .toString(); +- +- const { sourcePort, sourceChannel } = getIbcInfo( +- sourceChainName, +- destChainName +- ); +- +- const fee: StdFee = { +- amount: coins('1000', transferToken.denom ?? ''), +- gas: '250000', +- }; +- +- const token = { +- denom: transferToken.denom ?? '', +- amount: transferAmount, +- }; +- +- const stamp = Date.now(); +- const timeoutInNanos = (stamp + 1.2e6) * 1e6; +- +- const msg = transfer({ +- sourcePort, +- sourceChannel, +- sender: sourceAddress, +- receiver: destAddress, +- token, +- // @ts-ignore +- timeoutHeight: undefined, +- timeoutTimestamp: BigInt(timeoutInNanos), +- }); +- +- await tx([msg], { +- fee, +- onSuccess: () => { +- updateData(); +- closeModal(); +- }, +- }); +- +- setIsLoading(false); +- }; +- +- const assetOptions: OverviewTransferProps['dropdownList'] = useMemo(() => { +- return assets +- .filter((asset) => { +- if (isDeposit) { +- return true; +- } +- return new BigNumber(asset.amount).gt(0); +- }) +- // .filter((asset) => { +- // return asset.symbol !== transferToken.symbol; +- // }) +- .map((asset) => ({ +- available: new BigNumber(asset.displayAmount).toNumber(), +- symbol: asset.symbol, +- name: asset.prettyChainName, +- denom: asset.denom, +- imgSrc: asset.logoUrl ?? '', +- priceDisplayAmount: new BigNumber( +- truncDecimals(asset.dollarValue, 2) +- ).toNumber(), +- })); +- }, [assets, isDeposit, transferToken]); +- console.log('assetOptions', assetOptions); +- +- const handleOnChange = ( +- assetOption: Unpacked, +- value: number +- ) => { +- setInputValue(`${value}`); +- +- setTransferInfo((prev) => { +- if (!prev) return; +- +- if (transferType === Transfer.Withdraw) { +- const destChainName = getChainName(assetOption.denom ?? ''); +- return { ...prev, destChainName, token: assetOption }; +- } +- +- const sourceChainName = getChainName(assetOption.denom ?? ''); +- const sourceChainAssetDenom = getNativeDenom(sourceChainName); +- return { +- ...prev, +- sourceChainName, +- token: { +- ...assetOption, +- available: availableAmount, +- displayAmount: ZERO_AMOUNT, +- dollarValue: ZERO_AMOUNT, +- amount: ZERO_AMOUNT, +- denom: sourceChainAssetDenom, +- }, +- }; +- }); +- }; +- +- return ( +- { +- handleTransferSubmit(); +- }} +- onCancel={() => { +- closeModal(); +- }} +- onChange={handleOnChange} +- timeEstimateLabel="≈ 20 seconds" +- /> +- ); +-}; +- +-export const DropdownTransferModal = (props: OverviewTransferWrapperProps) => { +- const { modalControl, transferInfoState } = props; +- +- const [inputValue, setInputValue] = useState(''); +- const [isLoading, setIsLoading] = useState(false); +- +- const closeModal = () => { +- modalControl.onClose(); +- setInputValue(''); +- setIsLoading(false); +- }; +- +- return ( +- closeModal()} +- > +- {transferInfoState ? ( +- +- ) : null} +- +- ); +-}; +diff --git a/templates/chain-template/components/asset-list/RowTransferModal.tsx b/templates/chain-template/components/asset-list/RowTransferModal.tsx +deleted file mode 100644 +index 0d7ff494..00000000 +--- a/templates/chain-template/components/asset-list/RowTransferModal.tsx ++++ /dev/null +@@ -1,288 +0,0 @@ +-import React, { useEffect, useMemo, useState } from 'react'; +-import { BasicModal, AssetWithdrawTokens } from '@interchain-ui/react'; +-import { useChainWallet, useManager } from '@cosmos-kit/react'; +-import BigNumber from 'bignumber.js'; +-import { ChainName } from 'cosmos-kit'; +-import { coins, StdFee } from '@cosmjs/amino'; +-import { useDisclosure, useChainUtils, useBalance, useTx } from '@/hooks'; +-import { keplrWalletName } from '@/config'; +-import { ibc } from 'osmo-query'; +- +-import { PriceHash, TransferInfo, Transfer } from './types'; +- +-const { transfer } = ibc.applications.transfer.v1.MessageComposer.withTypeUrl; +- +-interface IProps { +- prices: PriceHash; +- transferInfo: TransferInfo; +- modalControl: ReturnType; +- updateData: () => void; +- selectedChainName: ChainName; +-} +- +-const TransferModalBody = ( +- props: IProps & { +- isLoading: boolean; +- setIsLoading: React.Dispatch>; +- inputValue: string; +- setInputValue: React.Dispatch>; +- } +-) => { +- const { +- prices, +- selectedChainName, +- transferInfo, +- modalControl, +- updateData, +- isLoading, +- setIsLoading, +- inputValue, +- setInputValue, +- } = props; +- +- const { getIbcInfo, symbolToDenom, getExponentByDenom, convRawToDispAmount } = +- useChainUtils(selectedChainName); +- +- const { +- type: transferType, +- token: transferToken, +- destChainName, +- sourceChainName, +- } = transferInfo; +- +- const isDeposit = transferType === Transfer.Deposit; +- +- const { +- address: sourceAddress, +- connect: connectSourceChain, +- chain: sourceChainInfo, +- } = useChainWallet(sourceChainName, keplrWalletName); +- +- const { +- address: destAddress, +- connect: connectDestChain, +- chain: destChainInfo, +- } = useChainWallet(destChainName, keplrWalletName); +- +- const { balance, isLoading: isLoadingBalance } = useBalance( +- sourceChainName, +- isDeposit, +- transferInfo.token.symbol +- ); +- +- const { getChainLogo } = useManager(); +- const { tx } = useTx(sourceChainName); +- +- const availableAmount = useMemo(() => { +- if (!isDeposit) return transferToken.available ?? 0; +- if (isLoadingBalance) return 0; +- +- console.log('transferInfo.token', transferInfo.token); +- +- return new BigNumber( +- convRawToDispAmount(transferInfo.token.symbol, balance?.amount || '0') +- ).toNumber(); +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, [ +- isDeposit, +- isLoading, +- transferToken.symbol, +- balance?.amount, +- transferInfo.token.symbol, +- isLoadingBalance, +- ]); +- +- const dollarValue = new BigNumber(1) +- .multipliedBy( +- prices[symbolToDenom(transferToken.symbol, transferInfo.sourceChainName)] +- ) +- .decimalPlaces(6) +- .toNumber(); +- +- useEffect(() => { +- if (!modalControl.isOpen) return; +- if (!sourceAddress) connectSourceChain(); +- if (!destAddress) connectDestChain(); +- +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, [modalControl.isOpen]); +- +- const handleClick = async () => { +- if (!sourceAddress || !destAddress) return; +- setIsLoading(true); +- +- const transferAmount = new BigNumber(inputValue) +- .shiftedBy(getExponentByDenom(symbolToDenom(transferToken.symbol))) +- .toString(); +- +- const { sourcePort, sourceChannel } = getIbcInfo( +- sourceChainName, +- destChainName +- ); +- +- const fee: StdFee = { +- amount: coins('1000', transferToken.denom ?? ''), +- gas: '250000', +- }; +- +- const token = { +- denom: transferToken.denom ?? '', +- amount: transferAmount, +- }; +- +- const stamp = Date.now(); +- const timeoutInNanos = (stamp + 1.2e6) * 1e6; +- +- const msg = transfer({ +- sourcePort, +- sourceChannel, +- sender: sourceAddress, +- receiver: destAddress, +- token, +- // @ts-ignore +- timeoutHeight: undefined, +- timeoutTimestamp: BigInt(timeoutInNanos), +- }); +- +- await tx([msg], { +- fee, +- onSuccess: () => { +- updateData(); +- modalControl.onClose(); +- }, +- }); +- +- setIsLoading(false); +- }; +- +- const sourceChain = useMemo(() => { +- return { +- name: sourceChainInfo.pretty_name, +- address: sourceAddress ?? '', +- imgSrc: getChainLogo(sourceChainName) ?? '', +- }; +- }, [getChainLogo, sourceAddress, sourceChainInfo, sourceChainName]); +- +- const destChain = useMemo(() => { +- return { +- symbol: destChainInfo.chain_name.toUpperCase(), +- name: destChainInfo.pretty_name, +- address: destAddress ?? '', +- imgSrc: getChainLogo(destChainName) ?? '', +- }; +- }, [destChainInfo, destAddress, getChainLogo, destChainName]); +- +- const handleSubmitTransfer = async () => { +- if (!sourceAddress || !destAddress) return; +- setIsLoading(true); +- +- const transferAmount = new BigNumber(inputValue) +- .shiftedBy(getExponentByDenom(symbolToDenom(transferToken.symbol))) +- .toString(); +- +- const { sourcePort, sourceChannel } = getIbcInfo( +- sourceChainName, +- destChainName +- ); +- +- const fee: StdFee = { +- amount: coins('1000', transferToken.denom ?? ''), +- gas: '250000', +- }; +- +- const token = { +- denom: transferToken.denom ?? '', +- amount: transferAmount, +- }; +- +- const stamp = Date.now(); +- const timeoutInNanos = (stamp + 1.2e6) * 1e6; +- +- const msg = transfer({ +- sourcePort, +- sourceChannel, +- sender: sourceAddress, +- receiver: destAddress, +- token, +- // @ts-ignore +- timeoutHeight: undefined, +- timeoutTimestamp: BigInt(timeoutInNanos), +- }); +- +- await tx([msg], { +- fee, +- onSuccess: () => { +- updateData(); +- modalControl.onClose(); +- }, +- }); +- +- setIsLoading(false); +- }; +- +- return ( +- { +- console.log('onChange value', value); +- setInputValue(value); +- }} +- onTransfer={() => { +- console.log('onTransfer'); +- handleSubmitTransfer(); +- }} +- onCancel={() => { +- console.log('onCancel'); +- modalControl.onClose(); +- }} +- /> +- ); +-}; +- +-export const RowTransferModal = (props: IProps) => { +- const { modalControl, transferInfo } = props; +- const [inputValue, setInputValue] = useState(''); +- const [isLoading, setIsLoading] = useState(false); +- +- const closeModal = () => { +- modalControl.onClose(); +- setInputValue(''); +- }; +- +- return ( +- closeModal()} +- > +- +- +- ); +-}; +diff --git a/templates/chain-template/components/asset-list/index.ts b/templates/chain-template/components/asset-list/index.ts +deleted file mode 100644 +index 8a7f6313..00000000 +--- a/templates/chain-template/components/asset-list/index.ts ++++ /dev/null +@@ -1,2 +0,0 @@ +-export * from './types'; +-export * from './AssetListSection'; +diff --git a/templates/chain-template/components/asset-list/types.tsx b/templates/chain-template/components/asset-list/types.tsx +deleted file mode 100644 +index 56437be2..00000000 +--- a/templates/chain-template/components/asset-list/types.tsx ++++ /dev/null +@@ -1,52 +0,0 @@ +-import { AvailableItem } from '@interchain-ui/react'; +- +-export type Unpacked = T extends (infer U)[] ? U : T; +- +-export type PrettyAsset = { +- logoUrl: string | undefined; +- symbol: string; +- prettyChainName: string; +- displayAmount: string; +- dollarValue: string; +- amount: string; +- denom: string; +-}; +- +-export type Token = { +- price: number; +- denom: string; +- symbol: string; +- liquidity: number; +- volume_24h: number; +- volume_24h_change: number; +- name: string; +- price_24h_change: number; +- price_7d_change: number; +- exponent: number; +- display: string; +-}; +- +-export type PriceHash = { +- [key: string]: number; +-}; +- +-export const Transfer = { +- Deposit: 'Deposit', +- Withdraw: 'Withdraw', +-} as const; +- +-export type TransferValues = typeof Transfer[keyof typeof Transfer]; +- +-export type TransferInfo = { +- type: TransferValues; +- sourceChainName: string; +- destChainName: string; +- token: AvailableItem; +-}; +- +-export type AssetOption = { +- value: string; +- icon: { png: string | undefined }; +-}; +- +-export type PrettyAssetOption = PrettyAsset & AssetOption; +diff --git a/templates/chain-template/components/common/Footer.tsx b/templates/chain-template/components/common/Footer.tsx +index 95e1658c..5bb5388a 100644 +--- a/templates/chain-template/components/common/Footer.tsx ++++ b/templates/chain-template/components/common/Footer.tsx +@@ -45,11 +45,11 @@ const TextDivider = () => { + const socialLinks = [ + { + icon: , +- href: 'https://github.com/cosmology-tech', ++ href: 'https://github.com/ignite', + }, + { + icon: , +- href: 'https://discord.com/invite/xh3ZwHj2qQ', ++ href: 'https://discord.com/invite/ignite', + }, + { + icon: ( +@@ -57,11 +57,11 @@ const socialLinks = [ + + + ), +- href: 'https://x.com/cosmology_tech', ++ href: 'https://x.com/ignite', + }, + { + icon: , +- href: 'https://www.youtube.com/channel/UCA9jzRlnUJRxec8S5Lt7Vcw', ++ href: 'https://www.youtube.com/@ignitehq', + }, + ]; + +diff --git a/templates/chain-template/components/common/Header/ChainDropdown.tsx b/templates/chain-template/components/common/Header/ChainDropdown.tsx +index 47c933b8..ec464446 100644 +--- a/templates/chain-template/components/common/Header/ChainDropdown.tsx ++++ b/templates/chain-template/components/common/Header/ChainDropdown.tsx +@@ -1,9 +1,9 @@ + import Image from 'next/image'; +-import { useEffect, useState } from 'react'; ++import { useState } from 'react'; + import { useChain, useManager } from '@cosmos-kit/react'; + import { Box, Combobox, Skeleton, Stack, Text } from '@interchain-ui/react'; + +-import { useStarshipChains, useDetectBreakpoints } from '@/hooks'; ++import { useDetectBreakpoints } from '@/hooks'; + import { chainStore, useChainStore } from '@/contexts'; + import { chainOptions } from '@/config'; + import { getSignerOptions } from '@/utils'; +@@ -13,35 +13,12 @@ export const ChainDropdown = () => { + const { chain } = useChain(selectedChain); + const [input, setInput] = useState(chain.pretty_name); + const { isMobile } = useDetectBreakpoints(); +- const { data: starshipChains, refetch } = useStarshipChains(); + +- const [isChainsAdded, setIsChainsAdded] = useState(false); + const { addChains, getChainLogo } = useManager(); + +- useEffect(() => { +- if ( +- starshipChains?.chains.length && +- starshipChains?.assets.length && +- !isChainsAdded +- ) { +- addChains( +- starshipChains.chains, +- starshipChains.assets, +- getSignerOptions(), +- ); +- setIsChainsAdded(true); +- } +- }, [starshipChains, isChainsAdded]); ++ // TODO(@julienrbrt), use addChains, and add the chain from the generate chain-registry.json + +- const onOpenChange = (isOpen: boolean) => { +- if (isOpen && !isChainsAdded) { +- refetch(); +- } +- }; +- +- const chains = isChainsAdded +- ? chainOptions.concat(starshipChains?.chains ?? []) +- : chainOptions; ++ const onOpenChange = (isOpen: boolean) => {}; + + return ( + { + width: isMobile ? '130px' : '260px', + }} + > +- {chains.map((c) => ( ++ {chainOptions.map((c) => ( + + , +- label: 'Faucet', +- href: '/faucet', +- }, + { + icon: , + label: 'Contract', +diff --git a/templates/chain-template/components/common/Sidebar/SidebarContent.tsx b/templates/chain-template/components/common/Sidebar/SidebarContent.tsx +index bd250436..2a0df37d 100644 +--- a/templates/chain-template/components/common/Sidebar/SidebarContent.tsx ++++ b/templates/chain-template/components/common/Sidebar/SidebarContent.tsx +@@ -91,13 +91,13 @@ export const SidebarContent = ({ onClose }: { onClose: () => void }) => { + + Powered by + +- cosmology ++ /> + + + +diff --git a/templates/chain-template/components/index.ts b/templates/chain-template/components/index.ts +index 9b9594a6..06644b05 100644 +--- a/templates/chain-template/components/index.ts ++++ b/templates/chain-template/components/index.ts +@@ -1,5 +1,4 @@ + export * from './common'; + export * from './staking'; + export * from './voting'; +-export * from './asset-list'; + export * from './contract'; +diff --git a/templates/chain-template/config/chains.ts b/templates/chain-template/config/chains.ts +index 6177cb2e..3a4a3391 100644 +--- a/templates/chain-template/config/chains.ts ++++ b/templates/chain-template/config/chains.ts +@@ -1,10 +1,7 @@ + import { chains } from 'chain-registry'; +-import osmosis from 'chain-registry/mainnet/osmosis/chain'; + +-const chainNames = ['osmosistestnet', 'juno', 'stargaze', 'osmosis', 'cosmoshub']; ++const chainNames = ['atomone', 'cosmoshub']; + + export const chainOptions = chainNames.map( + (chainName) => chains.find((chain) => chain.chain_name === chainName)! +-); +- +-export const osmosisChainName = osmosis.chain_name; ++); +\ No newline at end of file +diff --git a/templates/chain-template/config/products.ts b/templates/chain-template/config/products.ts +index 193111c9..1bfbb53d 100644 +--- a/templates/chain-template/config/products.ts ++++ b/templates/chain-template/config/products.ts +@@ -2,7 +2,6 @@ export type ProductCategory = + | 'cosmwasm' + | 'cosmos-sdk' + | 'frontend' +- | 'testing'; + + export type Product = { + name: string; +@@ -12,6 +11,27 @@ export type Product = { + }; + + export const products: Product[] = [ ++ { ++ name: 'Ignite', ++ description: ++ 'Ignite makes developing, growing, and launching blockchain projects faster than ever before.', ++ link: 'https://ignite.com', ++ category: 'cosmos-sdk', ++ }, ++ { ++ name: 'Ignite Tutorials', ++ description: ++ 'Learn How to Build Cutting-Edge Blockchains.', ++ link: 'https://tutorials.ignite.com', ++ category: 'cosmos-sdk', ++ }, ++ { ++ name: 'Cosmos SDK', ++ description: ++ 'Get a quick introduction to the Cosmos SDK and its key features, including its modular architecture and developer-friendly tools.', ++ link: 'https://docs.cosmos.network', ++ category: 'cosmos-sdk', ++ }, + { + name: 'Cosmos Kit', + description: +@@ -19,6 +39,13 @@ export const products: Product[] = [ + link: 'https://cosmology.zone/products/cosmos-kit', + category: 'frontend', + }, ++ { ++ name: 'Ignite Videos', ++ description: ++ 'Learn about Ignite development with video tutorials.', ++ link: 'https://youtube.com/@ignitehq', ++ category: 'frontend', ++ }, + { + name: 'Telescope', + description: +@@ -33,13 +60,6 @@ export const products: Product[] = [ + link: 'https://cosmology.zone/products/interchain-ui', + category: 'frontend', + }, +- { +- name: 'TS Codegen', +- description: +- 'The quickest and easiest way to convert CosmWasm Contracts into dev-friendly TypeScript classes.', +- link: 'https://cosmology.zone/products/ts-codegen', +- category: 'cosmwasm', +- }, + { + name: 'Chain Registry', + description: +@@ -47,20 +67,6 @@ export const products: Product[] = [ + link: 'https://cosmology.zone/products/chain-registry', + category: 'frontend', + }, +- { +- name: 'OsmoJS', +- description: +- 'OsmosJS makes it easy to compose and broadcast Osmosis and Cosmos messages.', +- link: 'https://cosmology.zone/products/osmojs', +- category: 'frontend', +- }, +- { +- name: 'Starship', +- description: +- 'Starship makes it easy to build a universal interchain development environment in k8s.', +- link: 'https://cosmology.zone/products/starship', +- category: 'testing', +- }, + { + name: 'Create Cosmos App', + description: +@@ -76,7 +82,7 @@ export const products: Product[] = [ + category: 'cosmwasm', + }, + { +- name: 'Videos', ++ name: 'Cosmology Videos', + description: + 'How-to videos from the official Cosmology website, with learning resources for building in Cosmos.', + link: 'https://cosmology.zone/learn', +diff --git a/templates/chain-template/hooks/asset-list/index.ts b/templates/chain-template/hooks/asset-list/index.ts +deleted file mode 100644 +index 7021f7a9..00000000 +--- a/templates/chain-template/hooks/asset-list/index.ts ++++ /dev/null +@@ -1,7 +0,0 @@ +-export * from './useChainUtils'; +-export * from './useChainAssetsPrices'; +-export * from './useTopTokens'; +-export * from './useAssets'; +-export * from './useTotalAssets'; +-export * from './useBalance'; +-export * from './useOsmoQueryHooks'; +diff --git a/templates/chain-template/hooks/asset-list/useAssets.ts b/templates/chain-template/hooks/asset-list/useAssets.ts +deleted file mode 100644 +index 2c0bc391..00000000 +--- a/templates/chain-template/hooks/asset-list/useAssets.ts ++++ /dev/null +@@ -1,136 +0,0 @@ +-import { PrettyAsset } from '@/components'; +-import { Coin } from '@cosmjs/stargate'; +-import { useChain } from '@cosmos-kit/react'; +-import { UseQueryResult } from '@tanstack/react-query'; +-import BigNumber from 'bignumber.js'; +-import { useEffect, useMemo } from 'react'; +-import { useChainUtils } from './useChainUtils'; +-import { useOsmoQueryHooks } from './useOsmoQueryHooks'; +-import { useChainAssetsPrices } from './useChainAssetsPrices'; +-import { useTopTokens } from './useTopTokens'; +-import { getPagination } from './useTotalAssets'; +- +-(BigInt.prototype as any).toJSON = function () { +- return this.toString(); +-}; +- +-const MAX_TOKENS_TO_SHOW = 50; +- +-export const useAssets = (chainName: string) => { +- const { address } = useChain(chainName); +- +- const { cosmosQuery, isReady, isFetching } = useOsmoQueryHooks(chainName); +- +- const allBalancesQuery: UseQueryResult = +- cosmosQuery.bank.v1beta1.useAllBalances({ +- request: { +- address: address || '', +- pagination: getPagination(100n), +- }, +- options: { +- enabled: isReady, +- select: ({ balances }) => balances || [], +- }, +- }); +- +- const pricesQuery = useChainAssetsPrices(chainName); +- const topTokensQuery = useTopTokens(); +- +- const dataQueries = { +- allBalances: allBalancesQuery, +- topTokens: topTokensQuery, +- prices: pricesQuery, +- }; +- +- const queriesToReset = [dataQueries.allBalances]; +- const queriesToRefetch = [dataQueries.allBalances]; +- +- useEffect(() => { +- queriesToReset.forEach((query) => query.remove()); +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, [chainName]); +- +- const queries = Object.values(dataQueries); +- const isInitialFetching = queries.some(({ isLoading }) => isLoading); +- const isRefetching = queries.some(({ isRefetching }) => isRefetching); +- const isLoading = isFetching || isInitialFetching || isRefetching; +- +- type AllQueries = typeof dataQueries; +- +- type QueriesData = { +- [Key in keyof AllQueries]: NonNullable; +- }; +- +- const { +- ibcAssets, +- getAssetByDenom, +- convRawToDispAmount, +- calcCoinDollarValue, +- denomToSymbol, +- getPrettyChainName, +- } = useChainUtils(chainName); +- +- const data = useMemo(() => { +- if (isLoading) return; +- +- const queriesData = Object.fromEntries( +- Object.entries(dataQueries).map(([key, query]) => [key, query.data]) +- ) as QueriesData; +- +- const { allBalances, prices, topTokens } = queriesData; +- +- const nativeAndIbcBalances: Coin[] = allBalances?.filter( +- ({ denom }) => !denom.startsWith('gamm') && prices[denom] +- ); +- +- const emptyBalances: Coin[] = ibcAssets +- .filter(({ base }) => { +- const notInBalances = !nativeAndIbcBalances?.find( +- ({ denom }) => denom === base +- ); +- return notInBalances && prices[base]; +- }) +- .filter((asset) => { +- const isWithinLimit = ibcAssets.length <= MAX_TOKENS_TO_SHOW; +- return isWithinLimit || topTokens.includes(asset.symbol); +- }) +- .map((asset) => ({ denom: asset.base, amount: '0' })) +- .reduce((acc: { denom: string, amount: string }[], current) => { +- if (!acc.some(balance => balance.denom === current.denom)) { +- acc.push(current); +- } +- return acc; +- }, []); +- const finalAssets = [...(nativeAndIbcBalances ?? []), ...emptyBalances] +- .map(({ amount, denom }) => { +- const asset = getAssetByDenom(denom); +- const symbol = denomToSymbol(denom); +- const dollarValue = calcCoinDollarValue(prices, { amount, denom }); +- return { +- symbol, +- logoUrl: asset.logo_URIs?.png || asset.logo_URIs?.svg, +- prettyChainName: getPrettyChainName(denom), +- displayAmount: convRawToDispAmount(denom, amount), +- dollarValue, +- amount, +- denom, +- }; +- }) +- .sort((a, b) => +- new BigNumber(a.dollarValue).lt(b.dollarValue) ? 1 : -1 +- ); +- +- return { +- prices, +- allBalances, +- assets: finalAssets as PrettyAsset[], +- }; +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, [isLoading]); +- +- const refetch = () => { +- queriesToRefetch.forEach((query) => query.refetch()); +- }; +- +- return { data, isLoading, refetch }; +-}; +diff --git a/templates/chain-template/hooks/asset-list/useBalance.ts b/templates/chain-template/hooks/asset-list/useBalance.ts +deleted file mode 100644 +index d29947b9..00000000 +--- a/templates/chain-template/hooks/asset-list/useBalance.ts ++++ /dev/null +@@ -1,49 +0,0 @@ +-import { Coin } from '@cosmjs/stargate'; +-import { useChain } from '@cosmos-kit/react'; +-import { UseQueryResult } from '@tanstack/react-query'; +-import { useEffect } from 'react'; +-import { useOsmoQueryHooks } from './useOsmoQueryHooks'; +- +-export const useBalance = ( +- chainName: string, +- enabled: boolean = true, +- displayDenom?: string +-) => { +- const { address, assets } = useChain(chainName); +- let denom = assets?.assets[0].base!; +- for (const asset of assets?.assets || []) { +- if (asset.display.toLowerCase() === displayDenom?.toLowerCase()) { +- denom = asset.base; +- break; +- } +- } +- +- const { cosmosQuery, isReady, isFetching } = useOsmoQueryHooks( +- chainName, +- 'balance' +- ); +- +- const balanceQuery: UseQueryResult = +- cosmosQuery.bank.v1beta1.useBalance({ +- request: { +- denom, +- address: address || '', +- }, +- options: { +- enabled: isReady && enabled, +- select: ({ balance }) => balance, +- }, +- }); +- +- useEffect(() => { +- return () => { +- balanceQuery.remove(); +- }; +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, []); +- +- return { +- balance: balanceQuery.data, +- isLoading: isFetching, // || !!balanceQueries.find(item => item.isFetching), +- }; +-}; +diff --git a/templates/chain-template/hooks/asset-list/useChainAssetsPrices.ts b/templates/chain-template/hooks/asset-list/useChainAssetsPrices.ts +deleted file mode 100644 +index 72b63edf..00000000 +--- a/templates/chain-template/hooks/asset-list/useChainAssetsPrices.ts ++++ /dev/null +@@ -1,49 +0,0 @@ +-import { Asset } from '@chain-registry/types'; +-import { useQuery } from '@tanstack/react-query'; +-import { useChainUtils } from './useChainUtils'; +-import { handleError } from './useTopTokens'; +- +-type CoinGeckoId = string; +-type CoinGeckoUSD = { usd: number }; +-type CoinGeckoUSDResponse = Record; +- +-const getAssetsWithGeckoIds = (assets: Asset[]) => { +- return assets.filter((asset) => !!asset?.coingecko_id); +-}; +- +-const getGeckoIds = (assets: Asset[]) => { +- return assets.map((asset) => asset.coingecko_id) as string[]; +-}; +- +-const formatPrices = ( +- prices: CoinGeckoUSDResponse, +- assets: Asset[] +-): Record => { +- return Object.entries(prices).reduce((priceHash, cur) => { +- const denom = assets.find((asset) => asset.coingecko_id === cur[0])!.base; +- return { ...priceHash, [denom]: cur[1].usd }; +- }, {}); +-}; +- +-const fetchPrices = async ( +- geckoIds: string[] +-): Promise => { +- const url = `https://api.coingecko.com/api/v3/simple/price?ids=${geckoIds.join()}&vs_currencies=usd`; +- +- return fetch(url) +- .then(handleError) +- .then((res) => res.json()); +-}; +- +-export const useChainAssetsPrices = (chainName: string) => { +- const { allAssets } = useChainUtils(chainName); +- const assetsWithGeckoIds = getAssetsWithGeckoIds(allAssets); +- const geckoIds = getGeckoIds(assetsWithGeckoIds); +- +- return useQuery({ +- queryKey: ['useChainAssetsPrices', chainName], +- queryFn: () => fetchPrices(geckoIds), +- select: (data) => formatPrices(data, assetsWithGeckoIds), +- staleTime: Infinity, +- }); +-}; +diff --git a/templates/chain-template/hooks/asset-list/useChainUtils.ts b/templates/chain-template/hooks/asset-list/useChainUtils.ts +deleted file mode 100644 +index 496239e6..00000000 +--- a/templates/chain-template/hooks/asset-list/useChainUtils.ts ++++ /dev/null +@@ -1,177 +0,0 @@ +-import { useManager } from '@cosmos-kit/react'; +-import { useMemo } from 'react'; +-import { Asset, AssetList } from '@chain-registry/types'; +-import { asset_lists as ibcAssetLists } from '@chain-registry/assets'; +-import { assets as chainAssets, ibc } from 'chain-registry'; +-import { CoinDenom, CoinSymbol, Exponent, PriceHash } from '@/utils'; +-import BigNumber from 'bignumber.js'; +-import { Coin } from '@cosmjs/amino'; +-import { PrettyAsset } from '@/components'; +-import { ChainName } from 'cosmos-kit'; +- +-export const useChainUtils = (chainName: string) => { +- const { getChainRecord } = useManager(); +- +- const filterAssets = (assetList: AssetList[]): Asset[] => { +- return ( +- assetList +- .find(({ chain_name }) => chain_name === chainName) +- ?.assets?.filter(({ type_asset }) => type_asset !== 'ics20') || [] +- ); +- }; +- +- const { nativeAssets, ibcAssets } = useMemo(() => { +- // @ts-ignore +- const nativeAssets = filterAssets(chainAssets); +- // @ts-ignore +- const ibcAssets = filterAssets(ibcAssetLists); +- +- return { nativeAssets, ibcAssets }; +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, [chainName]); +- +- const allAssets = [...nativeAssets, ...ibcAssets]; +- +- const getIbcAssetsLength = () => { +- return ibcAssets.length; +- }; +- +- const getAssetByDenom = (denom: CoinDenom): Asset => { +- return allAssets.find((asset) => asset.base === denom) as Asset; +- }; +- +- const denomToSymbol = (denom: CoinDenom): CoinSymbol => { +- const asset = getAssetByDenom(denom); +- const symbol = asset?.symbol; +- if (!symbol) { +- return denom; +- } +- return symbol; +- }; +- +- const symbolToDenom = (symbol: CoinSymbol, chainName?: string): CoinDenom => { +- const asset = allAssets.find( +- (asset) => +- asset.symbol === symbol && +- (!chainName || +- asset.traces?.[0].counterparty.chain_name.toLowerCase() === +- chainName.toLowerCase()) +- ); +- const base = asset?.base; +- if (!base) { +- return symbol; +- } +- return base; +- }; +- +- const getExponentByDenom = (denom: CoinDenom): Exponent => { +- const asset = getAssetByDenom(denom); +- const unit = asset.denom_units.find(({ denom }) => denom === asset.display); +- return unit?.exponent || 0; +- }; +- +- const convRawToDispAmount = (symbol: string, amount: string | number) => { +- const denom = symbolToDenom(symbol); +- return new BigNumber(amount) +- .shiftedBy(-getExponentByDenom(denom)) +- .toString(); +- }; +- +- const calcCoinDollarValue = (prices: PriceHash, coin: Coin) => { +- const { denom, amount } = coin; +- return new BigNumber(amount) +- .shiftedBy(-getExponentByDenom(denom)) +- .multipliedBy(prices[denom]) +- .toString(); +- }; +- +- const getChainName = (ibcDenom: CoinDenom) => { +- if (nativeAssets.find((asset) => asset.base === ibcDenom)) { +- return chainName; +- } +- const asset = ibcAssets.find((asset) => asset.base === ibcDenom); +- const ibcChainName = asset?.traces?.[0].counterparty.chain_name; +- if (!ibcChainName) +- throw Error('chainName not found for ibcDenom: ' + ibcDenom); +- return ibcChainName; +- }; +- +- const getPrettyChainName = (ibcDenom: CoinDenom) => { +- const chainName = getChainName(ibcDenom); +- try { +- const chainRecord = getChainRecord(chainName); +- // @ts-ignore +- return chainRecord.chain.pretty_name; +- } catch (e) { +- return 'CHAIN_INFO_NOT_FOUND'; +- } +- }; +- +- const isNativeAsset = ({ denom }: PrettyAsset) => { +- return !!nativeAssets.find((asset) => asset.base === denom); +- }; +- +- const getNativeDenom = (chainName: ChainName) => { +- const chainRecord = getChainRecord(chainName); +- const denom = chainRecord.assetList?.assets[0].base; +- if (!denom) throw Error('denom not found'); +- return denom; +- }; +- +- const getDenomBySymbolAndChain = (chainName: ChainName, symbol: string) => { +- const chainRecord = getChainRecord(chainName); +- const denom = chainRecord.assetList?.assets.find( +- (asset) => asset.symbol === symbol +- )?.base; +- if (!denom) throw Error('denom not found'); +- return denom; +- }; +- +- const getIbcInfo = (fromChainName: string, toChainName: string) => { +- let flipped = false; +- +- let ibcInfo = ibc.find( +- (i) => +- i.chain_1.chain_name === fromChainName && +- i.chain_2.chain_name === toChainName +- ); +- +- if (!ibcInfo) { +- ibcInfo = ibc.find( +- (i) => +- i.chain_1.chain_name === toChainName && +- i.chain_2.chain_name === fromChainName +- ); +- flipped = true; +- } +- +- if (!ibcInfo) { +- throw new Error('cannot find IBC info'); +- } +- +- const key = flipped ? 'chain_2' : 'chain_1'; +- const sourcePort = ibcInfo.channels[0][key].port_id; +- const sourceChannel = ibcInfo.channels[0][key].channel_id; +- +- return { sourcePort, sourceChannel }; +- }; +- +- return { +- allAssets, +- nativeAssets, +- ibcAssets, +- getAssetByDenom, +- denomToSymbol, +- symbolToDenom, +- convRawToDispAmount, +- calcCoinDollarValue, +- getIbcAssetsLength, +- getChainName, +- getPrettyChainName, +- isNativeAsset, +- getNativeDenom, +- getIbcInfo, +- getExponentByDenom, +- getDenomBySymbolAndChain, +- }; +-}; +diff --git a/templates/chain-template/hooks/asset-list/useOsmoQueryHooks.ts b/templates/chain-template/hooks/asset-list/useOsmoQueryHooks.ts +deleted file mode 100644 +index bb6c5fa6..00000000 +--- a/templates/chain-template/hooks/asset-list/useOsmoQueryHooks.ts ++++ /dev/null +@@ -1,37 +0,0 @@ +-import { useChain } from '@cosmos-kit/react'; +-import { useRpcEndpoint, useRpcClient, createRpcQueryHooks } from 'osmo-query'; +- +-export const useOsmoQueryHooks = (chainName: string, extraKey?: string) => { +- const { address, getRpcEndpoint } = useChain(chainName); +- +- const rpcEndpointQuery = useRpcEndpoint({ +- getter: getRpcEndpoint, +- options: { +- staleTime: Infinity, +- queryKeyHashFn: (queryKey) => { +- const key = [...queryKey, chainName]; +- return JSON.stringify(extraKey ? [...key, extraKey] : key); +- }, +- }, +- }); +- +- const rpcClientQuery = useRpcClient({ +- rpcEndpoint: rpcEndpointQuery.data || '', +- options: { +- enabled: !!rpcEndpointQuery.data, +- staleTime: Infinity, +- queryKeyHashFn: (queryKey) => { +- return JSON.stringify(extraKey ? [...queryKey, extraKey] : queryKey); +- }, +- }, +- }); +- +- const { cosmos: cosmosQuery, osmosis: osmoQuery } = createRpcQueryHooks({ +- rpc: rpcClientQuery.data, +- }); +- +- const isReady = !!address && !!rpcClientQuery.data; +- const isFetching = rpcEndpointQuery.isFetching || rpcClientQuery.isFetching; +- +- return { cosmosQuery, osmoQuery, isReady, isFetching }; +-}; +diff --git a/templates/chain-template/hooks/asset-list/useTopTokens.ts b/templates/chain-template/hooks/asset-list/useTopTokens.ts +deleted file mode 100644 +index 13491ebe..00000000 +--- a/templates/chain-template/hooks/asset-list/useTopTokens.ts ++++ /dev/null +@@ -1,45 +0,0 @@ +-import { useQuery } from '@tanstack/react-query'; +- +-type Token = { +- price: number; +- denom: string; +- symbol: string; +- liquidity: number; +- volume_24h: number; +- volume_24h_change: number; +- name: string; +- price_24h_change: number; +- price_7d_change: number; +- exponent: number; +- display: string; +-}; +- +-export const handleError = (resp: Response) => { +- if (!resp.ok) throw Error(resp.statusText); +- return resp; +-}; +- +-const fetchTokens = async (): Promise => { +- const url = 'https://api-osmosis.imperator.co/tokens/v2/all'; +- return fetch(url) +- .then(handleError) +- .then((res) => res.json()); +-}; +- +-const MAX_TOP_TOKENS = 60; +- +-const filterTopTokens = (tokens: Token[]) => { +- return tokens +- .sort((a, b) => b.liquidity - a.liquidity) +- .slice(0, MAX_TOP_TOKENS) +- .map((token) => token.symbol); +-}; +- +-export const useTopTokens = () => { +- return useQuery({ +- queryKey: ['tokens'], +- queryFn: fetchTokens, +- select: filterTopTokens, +- staleTime: Infinity, +- }); +-}; +diff --git a/templates/chain-template/hooks/asset-list/useTotalAssets.ts b/templates/chain-template/hooks/asset-list/useTotalAssets.ts +deleted file mode 100644 +index 6a0820c3..00000000 +--- a/templates/chain-template/hooks/asset-list/useTotalAssets.ts ++++ /dev/null +@@ -1,202 +0,0 @@ +-import { Coin } from '@cosmjs/stargate'; +-import { useChain } from '@cosmos-kit/react'; +-import { UseQueryResult } from '@tanstack/react-query'; +-import BigNumber from 'bignumber.js'; +-import { useEffect, useMemo } from 'react'; +-import { useChainUtils } from './useChainUtils'; +-import { useChainAssetsPrices } from './useChainAssetsPrices'; +-import { osmosisChainName } from '@/config'; +-import { Pool } from 'osmo-query/dist/codegen/osmosis/gamm/pool-models/balancer/balancerPool'; +-import { convertGammTokenToDollarValue } from '@/utils'; +-import { useOsmoQueryHooks } from './useOsmoQueryHooks'; +- +-(BigInt.prototype as any).toJSON = function () { +- return this.toString(); +-}; +- +-export const getPagination = (limit: bigint) => ({ +- limit, +- key: new Uint8Array(), +- offset: 0n, +- countTotal: true, +- reverse: false, +-}); +- +-export const useTotalAssets = (chainName: string) => { +- const { address } = useChain(chainName); +- +- const { cosmosQuery, osmoQuery, isReady, isFetching } = +- useOsmoQueryHooks(chainName); +- +- const isOsmosisChain = chainName === osmosisChainName; +- +- const allBalancesQuery: UseQueryResult = +- cosmosQuery.bank.v1beta1.useAllBalances({ +- request: { +- address: address || '', +- pagination: getPagination(100n), +- }, +- options: { +- enabled: isReady, +- select: ({ balances }) => balances || [], +- }, +- }); +- +- const delegationsQuery: UseQueryResult = +- cosmosQuery.staking.v1beta1.useDelegatorDelegations({ +- request: { +- delegatorAddr: address || '', +- pagination: getPagination(100n), +- }, +- options: { +- enabled: isReady, +- select: ({ delegationResponses }) => +- delegationResponses.map(({ balance }) => balance) || [], +- }, +- }); +- +- const lockedCoinsQuery: UseQueryResult = +- osmoQuery.lockup.useAccountLockedCoins({ +- request: { +- owner: address || '', +- }, +- options: { +- enabled: isReady && isOsmosisChain, +- select: ({ coins }) => coins || [], +- staleTime: Infinity, +- }, +- }); +- +- const poolsQuery: UseQueryResult = osmoQuery.gamm.v1beta1.usePools({ +- request: { +- pagination: getPagination(5000n), +- }, +- options: { +- enabled: isReady && isOsmosisChain, +- select: ({ pools }) => pools || [], +- staleTime: Infinity, +- }, +- }); +- +- const pricesQuery = useChainAssetsPrices(chainName); +- +- const dataQueries = { +- pools: poolsQuery, +- prices: pricesQuery, +- allBalances: allBalancesQuery, +- delegations: delegationsQuery, +- lockedCoins: lockedCoinsQuery, +- }; +- +- const queriesToReset = [dataQueries.allBalances, dataQueries.delegations]; +- const queriesToRefetch = [dataQueries.allBalances]; +- +- useEffect(() => { +- queriesToReset.forEach((query) => query.remove()); +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, [chainName]); +- +- const queries = Object.values(dataQueries); +- const isInitialFetching = queries.some(({ isFetching }) => isFetching); +- const isRefetching = queries.some(({ isRefetching }) => isRefetching); +- const isLoading = isFetching || isInitialFetching || isRefetching; +- +- type AllQueries = typeof dataQueries; +- +- type QueriesData = { +- [Key in keyof AllQueries]: NonNullable; +- }; +- +- const { calcCoinDollarValue } = useChainUtils(chainName); +- +- const zero = new BigNumber(0); +- +- const data = useMemo(() => { +- if (isLoading) return; +- +- const queriesData = Object.fromEntries( +- Object.entries(dataQueries).map(([key, query]) => [key, query.data]) +- ) as QueriesData; +- +- const { +- allBalances, +- delegations, +- lockedCoins = [], +- pools = [], +- prices = {}, +- } = queriesData; +- +- const stakedTotal = delegations +- ?.map((coin) => calcCoinDollarValue(prices, coin)) +- .reduce((total, cur) => total.plus(cur), zero) +- .toString(); +- +- const balancesTotal = allBalances +- ?.filter(({ denom }) => !denom.startsWith('gamm') && prices[denom]) +- .map((coin) => calcCoinDollarValue(prices, coin)) +- .reduce((total, cur) => total.plus(cur), zero) +- .toString(); +- +- let bondedTotal; +- let liquidityTotal; +- +- if (isOsmosisChain) { +- const liquidityCoins = (allBalances ?? []).filter(({ denom }) => +- denom.startsWith('gamm') +- ); +- const gammTokenDenoms = [ +- ...(liquidityCoins ?? []), +- ...(lockedCoins ?? []), +- ].map(({ denom }) => denom); +- +- const uniqueDenoms = [...new Set(gammTokenDenoms)]; +- +- const poolsMap: Record = pools +- .filter(({ totalShares }) => uniqueDenoms.includes(totalShares.denom)) +- .filter((pool) => !pool?.$typeUrl?.includes('stableswap')) +- .filter(({ poolAssets }) => { +- return poolAssets.every(({ token }) => { +- const isGammToken = token.denom.startsWith('gamm/pool'); +- return !isGammToken && prices[token.denom]; +- }); +- }) +- .reduce((prev, cur) => ({ ...prev, [cur.totalShares.denom]: cur }), {}); +- +- bondedTotal = lockedCoins +- .map((coin) => { +- const poolData = poolsMap[coin.denom]; +- if (!poolData) return '0'; +- return convertGammTokenToDollarValue(coin, poolData, prices); +- }) +- .reduce((total, cur) => total.plus(cur), zero) +- .toString(); +- +- liquidityTotal = liquidityCoins +- .map((coin) => { +- const poolData = poolsMap[coin.denom]; +- if (!poolData) return '0'; +- return convertGammTokenToDollarValue(coin, poolData, prices); +- }) +- .reduce((total, cur) => total.plus(cur), zero) +- .toString(); +- } +- +- const total = [stakedTotal, balancesTotal, bondedTotal, liquidityTotal] +- .reduce((total, cur) => total.plus(cur || 0), zero) +- .decimalPlaces(2) +- .toString(); +- +- return { +- total, +- prices, +- allBalances, +- }; +- // eslint-disable-next-line react-hooks/exhaustive-deps +- }, [isLoading]); +- +- const refetch = () => { +- queriesToRefetch.forEach((query) => query.refetch()); +- }; +- +- return { data, isLoading, refetch }; +-}; +diff --git a/templates/chain-template/hooks/common/index.ts b/templates/chain-template/hooks/common/index.ts +index 69602ad0..97f8d80d 100644 +--- a/templates/chain-template/hooks/common/index.ts ++++ b/templates/chain-template/hooks/common/index.ts +@@ -5,5 +5,4 @@ export * from './useCopyToClipboard'; + export * from './useOutsideClick'; + export * from './useMediaQuery'; + export * from './useDetectBreakpoints'; +-export * from './useStarshipChains'; + export * from './useConnectChain'; +diff --git a/templates/chain-template/hooks/common/useStarshipChains.ts b/templates/chain-template/hooks/common/useStarshipChains.ts +deleted file mode 100644 +index a1bbf340..00000000 +--- a/templates/chain-template/hooks/common/useStarshipChains.ts ++++ /dev/null +@@ -1,47 +0,0 @@ +-import { useQuery } from '@tanstack/react-query'; +-import { AssetList, Chain } from '@chain-registry/types'; +- +-import { StarshipConfig } from '@/starship'; +-import config from '@/starship/configs/config.yaml'; +- +-export const useStarshipChains = () => { +- const { registry } = config as StarshipConfig; +- const baseUrl = `http://localhost:${registry.ports.rest}`; +- +- return useQuery({ +- queryKey: ['starship-chains'], +- queryFn: async () => { +- try { +- const { chains } = (await fetcher<{ chains: Chain[] }>( +- `${baseUrl}/chains` +- )) ?? { chains: [] }; +- const chainIds = chains.map((chain) => chain.chain_id); +- const assets = (await Promise.all( +- chainIds.map((chainId) => +- fetcher(`${baseUrl}/chains/${chainId}/assets`) +- ) +- ).then((assetLists) => assetLists.filter(Boolean))) as AssetList[]; +- +- return { chains, assets }; +- } catch (error) { +- console.error(error); +- return undefined; +- } +- }, +- staleTime: Infinity, +- cacheTime: Infinity, +- refetchOnMount: false, +- refetchOnReconnect: false, +- }); +-}; +- +-const fetcher = async (url: string): Promise => { +- try { +- const response = await fetch(url); +- const data = await response.json(); +- return data; +- } catch (error) { +- console.error(error); +- return null; +- } +-}; +diff --git a/templates/chain-template/hooks/index.ts b/templates/chain-template/hooks/index.ts +index 9b9594a6..06644b05 100644 +--- a/templates/chain-template/hooks/index.ts ++++ b/templates/chain-template/hooks/index.ts +@@ -1,5 +1,4 @@ + export * from './common'; + export * from './staking'; + export * from './voting'; +-export * from './asset-list'; + export * from './contract'; +diff --git a/templates/chain-template/hooks/voting/useVotingData.ts b/templates/chain-template/hooks/voting/useVotingData.ts +index aae05fd1..57e3c1ea 100644 +--- a/templates/chain-template/hooks/voting/useVotingData.ts ++++ b/templates/chain-template/hooks/voting/useVotingData.ts +@@ -150,7 +150,7 @@ export function useVotingData(chainName: string) { + Object.entries(singleQueries).map(([key, query]) => [key, query.data]) + ) as SingleQueriesData; + +- singleQueriesData?.proposals.forEach((proposal) => { ++ singleQueriesData?.proposals?.forEach((proposal) => { + if (proposal.status === ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD) { + (async () => { + for (const { address } of chain?.apis?.rest || []) { +diff --git a/templates/chain-template/package.json b/templates/chain-template/package.json +index 972acc87..827d6903 100644 +--- a/templates/chain-template/package.json ++++ b/templates/chain-template/package.json +@@ -9,8 +9,7 @@ + "lint": "next lint", + "locks:remove": "rm -f yarn.lock", + "locks:create": "generate-lockfile --lockfile ../../yarn.lock --package package.json --write yarn.lock --force", +- "locks": "npm run locks:remove && npm run locks:create", +- "starship": "starship --config starship/configs/config.yaml" ++ "locks": "npm run locks:remove && npm run locks:create" + }, + "resolutions": { + "react": "18.2.0", +@@ -19,7 +18,6 @@ + "@types/react-dom": "18.0.9" + }, + "dependencies": { +- "@chain-registry/assets": "1.63.5", + "@cosmjs/amino": "0.32.3", + "@cosmjs/cosmwasm-stargate": "0.32.3", + "@cosmjs/stargate": "0.31.1", +@@ -29,13 +27,12 @@ + "@tanstack/react-query": "4.32.0", + "ace-builds": "1.35.0", + "bignumber.js": "9.1.2", +- "chain-registry": "1.62.3", ++ "chain-registry": "1.69.33", + "cosmos-kit": "2.18.4", + "dayjs": "1.11.11", + "interchain-query": "1.10.1", + "next": "^13", + "node-gzip": "^1.1.2", +- "osmo-query": "16.5.1", + "react": "18.2.0", + "react-ace": "11.0.1", + "react-dom": "18.2.0", +@@ -47,7 +44,6 @@ + "devDependencies": { + "@chain-registry/types": "0.44.3", + "@keplr-wallet/types": "^0.12.111", +- "@starship-ci/cli": "^2.9.0", + "@tanstack/react-query-devtools": "4.32.0", + "@types/node": "18.11.9", + "@types/node-gzip": "^1", +@@ -56,7 +52,6 @@ + "eslint": "8.28.0", + "eslint-config-next": "13.0.5", + "generate-lockfile": "0.0.12", +- "starshipjs": "^2.4.0", + "typescript": "4.9.3", + "yaml-loader": "^0.8.1" + } +diff --git a/templates/chain-template/pages/_app.tsx b/templates/chain-template/pages/_app.tsx +index e5f79bd4..ba517482 100644 +--- a/templates/chain-template/pages/_app.tsx ++++ b/templates/chain-template/pages/_app.tsx +@@ -47,7 +47,7 @@ function CreateCosmosApp({ Component, pageProps }: AppProps) { + signerOptions={getSignerOptions()} + endpointOptions={{ + endpoints: { +- osmosis: { ++ mychain: { + rpc: ['http://localhost:26657'], + }, + }, +diff --git a/templates/chain-template/pages/asset-list.tsx b/templates/chain-template/pages/asset-list.tsx +deleted file mode 100644 +index 49ecba75..00000000 +--- a/templates/chain-template/pages/asset-list.tsx ++++ /dev/null +@@ -1,13 +0,0 @@ +-import { ReactNoSSR } from '@interchain-ui/react-no-ssr'; +-import { AssetListSection } from '@/components'; +-import { useChainStore } from '@/contexts'; +- +-export default function AssetListPage() { +- const { selectedChain } = useChainStore(); +- +- return ( +- +- +- +- ); +-} +diff --git a/templates/chain-template/pages/docs.tsx b/templates/chain-template/pages/docs.tsx +index a400279d..b46c7c98 100644 +--- a/templates/chain-template/pages/docs.tsx ++++ b/templates/chain-template/pages/docs.tsx +@@ -17,11 +17,7 @@ const tabs: Tab[] = [ + category: null, + }, + { +- label: 'CosmWasm', +- category: 'cosmwasm', +- }, +- { +- label: 'Cosmos SDK', ++ label: 'Cosmos SDK & Ignite', + category: 'cosmos-sdk', + }, + { +@@ -29,8 +25,8 @@ const tabs: Tab[] = [ + category: 'frontend', + }, + { +- label: 'Testing', +- category: 'testing', ++ label: 'CosmWasm', ++ category: 'cosmwasm', + }, + ]; + +diff --git a/templates/chain-template/pages/faucet.tsx b/templates/chain-template/pages/faucet.tsx +deleted file mode 100644 +index 3c8a0801..00000000 +--- a/templates/chain-template/pages/faucet.tsx ++++ /dev/null +@@ -1,214 +0,0 @@ +-import { useState } from 'react'; +-import { Box, Text, TextField, TextFieldAddon } from '@interchain-ui/react'; +-import { useChain } from '@cosmos-kit/react'; +- +-import { Button } from '@/components'; +-import { useChainStore } from '@/contexts'; +-import { creditFromFaucet, validateChainAddress } from '@/utils'; +-import { useStarshipChains, useToast } from '@/hooks'; +-import config from '@/starship/configs/config.yaml'; +-import type { StarshipConfig } from '@/starship'; +-import styles from '@/styles/comp.module.css'; +- +-export default function Faucet() { +- const [input, setInput] = useState(''); +- const [isLoading, setIsLoading] = useState(false); +- +- const { selectedChain } = useChainStore(); +- const { address, chain, assets } = useChain(selectedChain); +- const { toast } = useToast(); +- const { data: starshipChains } = useStarshipChains(); +- +- const checkIsChainSupported = () => { +- const isStarshipRunning = +- starshipChains?.chains?.length && starshipChains?.assets?.length; +- +- if (!isStarshipRunning) { +- toast({ +- type: 'error', +- title: 'Starship is not running', +- description: 'Faucet is only available in Starship environment', +- }); +- return false; +- } +- +- const isStarshipChain = starshipChains?.chains?.some( +- (c) => c.chain_id === chain.chain_id, +- ); +- +- if (!isStarshipChain) { +- toast({ +- type: 'error', +- title: 'Chain is not supported', +- description: 'Faucet is only available for Starship chains', +- }); +- return false; +- } +- +- return true; +- }; +- +- const inputErrMsg = input +- ? validateChainAddress(input, chain.bech32_prefix) +- : null; +- +- const handleGetTokens = async () => { +- if (!assets || !checkIsChainSupported()) return; +- +- setIsLoading(true); +- +- const asset = assets.assets[0]; +- const port = (config as StarshipConfig).chains.find( +- (c) => c.id === chain.chain_id, +- )!.ports.faucet; +- +- try { +- await creditFromFaucet(input, asset.base, port); +- toast({ +- type: 'success', +- title: 'Tokens credited', +- }); +- } catch (error: any) { +- console.error(error); +- toast({ +- type: 'error', +- title: 'Failed to get tokens', +- description: error.message, +- }); +- } finally { +- setIsLoading(false); +- } +- }; +- +- const isButtonDisabled = !input || !!inputErrMsg; +- +- return ( +- <> +- +- Faucet +- +- +- Get test tokens for building applications +- +- +- +- Address +- +- +- +- setInput(e.target.value)} +- placeholder="Enter your address" +- intent={inputErrMsg ? 'error' : 'default'} +- autoComplete="off" +- inputClassName={styles['input-pr']} +- endAddon={ +- +- +- +- +- +- } +- /> +- {inputErrMsg && ( +- +- {inputErrMsg} +- +- )} +- +- +- +- +- +- FAQ +- +- +- +- {faqs.map(({ question, answer }) => ( +- +- ))} +- +- +- +- ); +-} +- +-const faqs = [ +- { +- question: 'What is faucet?', +- answer: +- 'A crypto faucet is a website or application that rewards you with cryptocurrency for completing simple tasks.', +- }, +- { +- question: 'How can I get test tokens?', +- answer: +- 'The Faucet dispenses a small number of test tokens after you claimed.', +- }, +-]; +- +-const FaqItem = ({ +- question, +- answer, +-}: { +- question: string; +- answer: string; +-}) => { +- return ( +- +- +- {question} +- +- +- {answer} +- +- +- ); +-}; +diff --git a/templates/chain-template/starship/configs/config.yaml b/templates/chain-template/starship/configs/config.yaml +deleted file mode 100644 +index 8b733102..00000000 +--- a/templates/chain-template/starship/configs/config.yaml ++++ /dev/null +@@ -1,36 +0,0 @@ +-name: starship-dev +-version: 0.2.10 +- +-chains: +- - id: test-osmosis-1 +- name: osmosis +- numValidators: 1 +- ports: +- rest: 1317 +- rpc: 26657 +- faucet: 8007 +- - id: test-cosmoshub-4 +- name: cosmoshub +- numValidators: 1 +- ports: +- rest: 1313 +- rpc: 26653 +- faucet: 8003 +- +-relayers: +- - name: osmosis-cosmoshub +- type: hermes +- replicas: 1 +- chains: +- - test-osmosis-1 +- - test-cosmoshub-4 +- +-registry: +- enabled: true +- ports: +- rest: 8081 +- +-explorer: +- enabled: true +- ports: +- rest: 8080 +diff --git a/templates/chain-template/starship/index.ts b/templates/chain-template/starship/index.ts +deleted file mode 100644 +index fcb073fe..00000000 +--- a/templates/chain-template/starship/index.ts ++++ /dev/null +@@ -1 +0,0 @@ +-export * from './types'; +diff --git a/templates/chain-template/starship/types.ts b/templates/chain-template/starship/types.ts +deleted file mode 100644 +index e822f7e7..00000000 +--- a/templates/chain-template/starship/types.ts ++++ /dev/null +@@ -1,19 +0,0 @@ +-export interface StarshipConfig { +- registry: { +- ports: { +- rest: number; +- }; +- }; +- chains: Array<{ +- id: string; +- name: string; +- ports: { +- rpc: number; +- rest: number; +- faucet: number; +- }; +- }>; +- relayers: Array<{ +- chains: [string, string]; +- }>; +-} +diff --git a/templates/chain-template/utils/asset-list/assets.ts b/templates/chain-template/utils/asset-list/assets.ts +deleted file mode 100644 +index 949e91ab..00000000 +--- a/templates/chain-template/utils/asset-list/assets.ts ++++ /dev/null +@@ -1,19 +0,0 @@ +-import { Asset as OsmosisAsset } from '@chain-registry/types'; +-import { asset_lists } from '@chain-registry/assets'; +-import { assets } from 'chain-registry'; +- +-let osmoAssets: OsmosisAsset[] = []; +- +-const chainInfo = asset_lists.find( +- ({ chain_name }) => chain_name === 'osmosis' +-); +-if (chainInfo && Array.isArray(chainInfo.assets)) { +- osmoAssets = [...chainInfo.assets]; +-} +- +-let chainInfo2 = assets.find(({ chain_name }) => chain_name === 'osmosis'); +-if (chainInfo2 && Array.isArray(chainInfo2.assets)) { +- osmoAssets = [...osmoAssets, ...chainInfo2.assets]; +-} +- +-export const osmosisAssets = osmoAssets; +diff --git a/templates/chain-template/utils/asset-list/base.ts b/templates/chain-template/utils/asset-list/base.ts +deleted file mode 100644 +index 856413cd..00000000 +--- a/templates/chain-template/utils/asset-list/base.ts ++++ /dev/null +@@ -1,96 +0,0 @@ +-import { osmosisAssets } from './assets'; +-import { +- CoinGeckoToken, +- CoinDenom, +- Exponent, +- CoinSymbol, +- PriceHash, +- CoinGeckoUSDResponse, +-} from './types'; +-import { Asset as OsmosisAsset } from '@chain-registry/types'; +-import BigNumber from 'bignumber.js'; +- +-export const getOsmoAssetByDenom = (denom: CoinDenom): OsmosisAsset => { +- return osmosisAssets.find((asset) => asset.base === denom) as OsmosisAsset; +-}; +- +-export const getDenomForCoinGeckoId = ( +- coinGeckoId: CoinGeckoToken +-): CoinDenom => { +- // @ts-ignore +- return osmosisAssets.find((asset) => asset.coingecko_id === coinGeckoId).base; +-}; +- +-export const osmoDenomToSymbol = (denom: CoinDenom): CoinSymbol => { +- const asset = getOsmoAssetByDenom(denom); +- const symbol = asset?.symbol; +- if (!symbol) { +- return denom; +- } +- return symbol; +-}; +- +-export const symbolToOsmoDenom = (token: CoinSymbol): CoinDenom => { +- const asset = osmosisAssets.find(({ symbol }) => symbol === token); +- const base = asset?.base; +- if (!base) { +- console.log(`cannot find base for token ${token}`); +- // @ts-ignore +- return null; +- } +- return base; +-}; +- +-export const getExponentByDenom = (denom: CoinDenom): Exponent => { +- const asset = getOsmoAssetByDenom(denom); +- const unit = asset.denom_units.find(({ denom }) => denom === asset.display); +- // @ts-ignore +- return unit.exponent; +-}; +- +-export const convertGeckoPricesToDenomPriceHash = ( +- prices: CoinGeckoUSDResponse +-): PriceHash => { +- return Object.keys(prices).reduce((res, geckoId) => { +- const denom = getDenomForCoinGeckoId(geckoId); +- // @ts-ignore +- res[denom] = prices[geckoId].usd; +- return res; +- }, {}); +-}; +- +-export const noDecimals = (num: number | string) => { +- return new BigNumber(num).decimalPlaces(0, BigNumber.ROUND_DOWN).toString(); +-}; +- +-export const baseUnitsToDollarValue = ( +- prices: PriceHash, +- symbol: string, +- amount: string | number +-) => { +- const denom = symbolToOsmoDenom(symbol); +- return new BigNumber(amount) +- .shiftedBy(-getExponentByDenom(denom)) +- .multipliedBy(prices[denom]) +- .toString(); +-}; +- +-export const dollarValueToDenomUnits = ( +- prices: PriceHash, +- symbol: string, +- value: string | number +-) => { +- const denom = symbolToOsmoDenom(symbol); +- return new BigNumber(value) +- .dividedBy(prices[denom]) +- .shiftedBy(getExponentByDenom(denom)) +- .toString(); +-}; +- +-export const baseUnitsToDisplayUnits = ( +- symbol: string, +- amount: string | number +-) => { +- const denom = symbolToOsmoDenom(symbol); +- return new BigNumber(amount).shiftedBy(-getExponentByDenom(denom)).toString(); +-}; +diff --git a/templates/chain-template/utils/asset-list/format.ts b/templates/chain-template/utils/asset-list/format.ts +deleted file mode 100644 +index c5fb7036..00000000 +--- a/templates/chain-template/utils/asset-list/format.ts ++++ /dev/null +@@ -1,31 +0,0 @@ +-import BigNumber from 'bignumber.js'; +-import { PrettyAsset } from '@/components'; +-import { AvailableItem } from '@interchain-ui/react'; +- +-export const truncDecimals = ( +- val: string | number | undefined, +- decimals: number +-) => { +- return new BigNumber(val || 0).decimalPlaces(decimals).toString(); +-}; +- +-export const formatDollarValue = (dollarValue: string, amount: string) => { +- return new BigNumber(dollarValue).gt(0.01) +- ? '$' + truncDecimals(dollarValue, 2) +- : new BigNumber(amount).gt(0) +- ? '< $0.01' +- : '$0'; +-}; +- +-export const prettyAssetToTransferItem = (from: PrettyAsset): AvailableItem => { +- return { +- imgSrc: from.logoUrl ?? '', +- symbol: from.symbol, +- name: from.prettyChainName, +- denom: from.denom, +- available: new BigNumber(from.displayAmount).toNumber(), +- priceDisplayAmount: new BigNumber( +- truncDecimals(from.dollarValue, 2) +- ).toNumber(), +- }; +-}; +diff --git a/templates/chain-template/utils/asset-list/index.ts b/templates/chain-template/utils/asset-list/index.ts +deleted file mode 100644 +index 8a42ed6d..00000000 +--- a/templates/chain-template/utils/asset-list/index.ts ++++ /dev/null +@@ -1,5 +0,0 @@ +-export * from './pool'; +-export * from './base'; +-export * from './assets'; +-export * from './format'; +-export * from './types'; +diff --git a/templates/chain-template/utils/asset-list/pool.ts b/templates/chain-template/utils/asset-list/pool.ts +deleted file mode 100644 +index 0d511440..00000000 +--- a/templates/chain-template/utils/asset-list/pool.ts ++++ /dev/null +@@ -1,279 +0,0 @@ +-import { Pool } from 'osmo-query/dist/codegen/osmosis/gamm/pool-models/balancer/balancerPool'; +-import { Coin } from 'osmo-query/dist/codegen/cosmos/base/v1beta1/coin'; +-import { +- PriceHash, +- CoinValue, +- PoolPretty, +- CoinBalance, +- PoolAssetPretty, +- PrettyPair, +-} from './types'; +-import BigNumber from 'bignumber.js'; +-import { osmosisAssets } from './assets'; +-import { +- baseUnitsToDisplayUnits, +- baseUnitsToDollarValue, +- dollarValueToDenomUnits, +- getExponentByDenom, +- osmoDenomToSymbol, +- noDecimals, +- getOsmoAssetByDenom, +-} from './base'; +- +-export const calcPoolLiquidity = (pool: Pool, prices: PriceHash): string => { +- return pool.poolAssets +- .reduce((res, { token }) => { +- const liquidity = new BigNumber(token.amount) +- .shiftedBy(-getExponentByDenom(token.denom)) +- .multipliedBy(prices[token.denom]); +- return res.plus(liquidity); +- }, new BigNumber(0)) +- .toString(); +-}; +- +-export const getPoolByGammName = (pools: Pool[], gammId: string): Pool => { +- return pools.find(({ totalShares: { denom } }) => denom === gammId) as Pool; +-}; +- +-export const convertGammTokenToDollarValue = ( +- coin: Coin, +- pool: Pool, +- prices: PriceHash +-): string => { +- const { amount } = coin; +- const liquidity = calcPoolLiquidity(pool, prices); +- +- return new BigNumber(liquidity) +- .multipliedBy(amount) +- .dividedBy(pool.totalShares!.amount) +- .toString(); +-}; +- +-export const convertDollarValueToCoins = ( +- value: string | number, +- pool: Pool, +- prices: PriceHash +-): CoinValue[] => { +- const tokens = pool.poolAssets.map(({ token: { denom }, weight }) => { +- const ratio = new BigNumber(weight).dividedBy(pool.totalWeight); +- const valueByRatio = new BigNumber(value).multipliedBy(ratio); +- const displayAmount = valueByRatio.dividedBy(prices[denom]).toString(); +- const amount = new BigNumber(displayAmount) +- .shiftedBy(getExponentByDenom(denom)) +- .toString(); +- const symbol = osmoDenomToSymbol(denom); +- +- return { +- denom, +- symbol, +- amount, +- displayAmount, +- value: valueByRatio.toString(), +- }; +- }); +- return tokens; +-}; +- +-export const convertDollarValueToShares = ( +- value: string | number, +- pool: Pool, +- prices: PriceHash +-) => { +- const liquidity = calcPoolLiquidity(pool, prices); +- +- return new BigNumber(value) +- .multipliedBy(pool.totalShares.amount) +- .dividedBy(liquidity) +- .shiftedBy(-18) +- .toString(); +-}; +- +-const assetHashMap = osmosisAssets.reduce((res, asset) => { +- return { ...res, [asset.base]: asset }; +-}, {}); +- +-export const prettyPool = ( +- pool: Pool, +- { includeDetails = false } = {} +-): PoolPretty => { +- const totalWeight = new BigNumber(pool.totalWeight); +- const tokens = pool.poolAssets.map(({ token, weight }) => { +- // @ts-ignore +- const asset = assetHashMap?.[token.denom]; +- const symbol = asset?.symbol ?? token.denom; +- const ratio = new BigNumber(weight).dividedBy(totalWeight).toString(); +- const obj = { +- symbol, +- denom: token.denom, +- amount: token.amount, +- ratio, +- info: undefined, +- }; +- if (includeDetails) { +- obj.info = asset; +- } +- return obj; +- }); +- const value = { +- nickname: tokens.map((t) => t.symbol).join('/'), +- images: undefined, +- }; +- if (includeDetails) { +- // @ts-ignore +- value.images = tokens +- .map((t) => { +- // @ts-ignore +- const imgs = t?.info?.logo_URIs; +- if (imgs) { +- return { +- token: t.symbol, +- images: imgs, +- }; +- } +- }) +- .filter(Boolean); +- } +- // @ts-ignore +- return { +- ...value, +- ...pool, +- poolAssetsPretty: tokens, +- }; +-}; +- +-export const calcCoinsNeededForValue = ( +- prices: PriceHash, +- poolInfo: PoolPretty, +- value: string | number +-) => { +- const val = new BigNumber(value); +- const coinsNeeded = poolInfo.poolAssetsPretty.map( +- ({ symbol, amount, denom, ratio }) => { +- const valueByRatio = val.multipliedBy(ratio).toString(); +- const amountNeeded = dollarValueToDenomUnits( +- prices, +- symbol, +- valueByRatio +- ); +- const unitRatio = new BigNumber(amountNeeded) +- .dividedBy(amount) +- .toString(); +- +- return { +- denom: denom, +- symbol: symbol, +- amount: noDecimals(amountNeeded), +- shareTotalValue: valueByRatio, +- displayAmount: baseUnitsToDisplayUnits(symbol, amountNeeded), +- totalDollarValue: baseUnitsToDollarValue(prices, symbol, amount), +- unitRatio, +- }; +- } +- ); +- return coinsNeeded; +-}; +- +-export const getCoinBalance = ( +- prices: PriceHash, +- balances: Coin[], +- prettyAsset: PoolAssetPretty +-): CoinBalance => { +- const coinBalance = balances.find((coin) => coin.denom == prettyAsset.denom); +- +- if (!coinBalance || !coinBalance.amount) { +- // console.log({ coinBalance }); +- // throw new Error("not enough " + prettyAsset.symbol); +- // @ts-ignore +- return { ...coinBalance, displayValue: 0 }; +- } +- +- const displayValue = baseUnitsToDollarValue( +- prices, +- prettyAsset.symbol, +- coinBalance.amount +- ); +- +- return { ...coinBalance, displayValue }; +-}; +- +-export const calcMaxCoinsForPool = ( +- prices: PriceHash, +- poolInfo: PoolPretty, +- balances: Coin[] +-) => { +- const smallestTotalDollarValue = poolInfo.poolAssetsPretty +- .map((prettyAsset) => { +- const { displayValue } = getCoinBalance(prices, balances, prettyAsset); +- return new BigNumber(displayValue).dividedBy(prettyAsset.ratio); +- }) +- .sort((a, b) => a.minus(b).toNumber())[0] +- .toString(); +- +- const coinsNeeded = poolInfo.poolAssetsPretty.map((asset) => { +- const coinValue = new BigNumber(smallestTotalDollarValue) +- .multipliedBy(asset.ratio) +- .toString(); +- const amount = dollarValueToDenomUnits(prices, asset.symbol, coinValue); +- +- return { +- denom: asset.denom, +- amount: noDecimals(amount), +- }; +- }); +- +- return coinsNeeded; +-}; +- +-export const calcShareOutAmount = ( +- poolInfo: Pool, +- coinsNeeded: Coin[] +-): string => { +- return poolInfo.poolAssets +- .map(({ token }, i) => { +- const tokenInAmount = new BigNumber(coinsNeeded[i].amount); +- const totalShare = new BigNumber(poolInfo.totalShares.amount); +- const totalShareExp = totalShare.shiftedBy(-18); +- const poolAssetAmount = new BigNumber(token.amount); +- +- return tokenInAmount +- .multipliedBy(totalShareExp) +- .dividedBy(poolAssetAmount) +- .shiftedBy(18) +- .decimalPlaces(0, BigNumber.ROUND_HALF_UP) +- .toString(); +- }) +- .sort()[0]; +-}; +- +-export const makePoolPairs = (pools: Pool[]): PrettyPair[] => { +- // @ts-ignore +- return pools +- .filter( +- (pool) => +- pool.poolAssets.length === 2 && +- pool.poolAssets.every(({ token }) => !token.denom.startsWith('gamm')) +- ) +- .map((pool) => { +- const assetA = pool.poolAssets[0].token; +- const assetAinfo = getOsmoAssetByDenom(assetA.denom); +- const assetB = pool.poolAssets[1].token; +- const assetBinfo = getOsmoAssetByDenom(assetB.denom); +- +- if (!assetAinfo || !assetBinfo) return; +- +- return { +- // TODO fix the fact this is seemingly using long +- // TODO or, why do we even have pools here??? +- // @ts-ignore +- poolId: typeof pool.id === 'string' ? pool.id : pool.id.low.toString(), +- poolAddress: pool.address, +- baseName: assetAinfo.display, +- baseSymbol: assetAinfo.symbol, +- baseAddress: assetAinfo.base, +- quoteName: assetBinfo.display, +- quoteSymbol: assetBinfo.symbol, +- quoteAddress: assetBinfo.base, +- }; +- }) +- .filter(Boolean); +-}; +diff --git a/templates/chain-template/utils/asset-list/types.ts b/templates/chain-template/utils/asset-list/types.ts +deleted file mode 100644 +index e1e13eb1..00000000 +--- a/templates/chain-template/utils/asset-list/types.ts ++++ /dev/null +@@ -1,85 +0,0 @@ +-import { AssetDenomUnit } from '@chain-registry/types'; +-import { Duration } from 'osmo-query/dist/codegen/google/protobuf/duration'; +-import { Gauge } from 'osmo-query/dist/codegen/osmosis/incentives/gauge'; +-import { SuperfluidAsset } from 'osmo-query/dist/codegen/osmosis/superfluid/superfluid'; +-import { Coin } from 'osmo-query/dist/codegen/cosmos/base/v1beta1/coin'; +-import { Pool } from 'osmo-query/dist/codegen/osmosis/gamm/pool-models/balancer/balancerPool'; +- +-export type CoinDenom = AssetDenomUnit['denom']; +- +-export type Exponent = AssetDenomUnit['exponent']; +- +-export type CoinSymbol = string; +- +-export interface PriceHash { +- [key: CoinDenom]: number; +-} +- +-export type CoinGeckoToken = string; +- +-export interface CoinGeckoUSD { +- usd: number; +-} +- +-export type CoinGeckoUSDResponse = Record; +- +-export interface CoinValue { +- amount: string; +- denom: CoinDenom; +- displayAmount: string; +- value: string; +- symbol: CoinSymbol; +-} +- +-export type CoinBalance = Coin & { displayValue: string | number }; +- +-export interface PoolAssetPretty { +- symbol: any; +- denom: string; +- amount: string; +- ratio: string; +- info: any; +-} +- +-export interface PoolTokenImage { +- token: CoinSymbol; +- images: { +- png: string; +- svg: string; +- }; +-} +- +-export interface PoolPretty extends Pool { +- nickname: string; +- images: PoolTokenImage[] | null; +- poolAssetsPretty: PoolAssetPretty[]; +-} +- +-export interface CalcPoolAprsParams { +- activeGauges: Gauge[]; +- pool: Pool; +- prices: PriceHash; +- superfluidPools: SuperfluidAsset[]; +- aprSuperfluid: string | number; +- lockupDurations: Duration[]; +- volume7d: string | number; +- swapFee: string | number; +- lockup?: string; +- includeNonPerpetual?: boolean; +-} +- +-export interface Trade { +- sell: Coin; +- buy: Coin; +-} +- +-export interface PrettyPair { +- poolId: string; +- poolAddress: string; +- baseName: string; +- baseSymbol: string; +- baseAddress: string; +- quoteName: string; +- quoteSymbol: string; +- quoteAddress: string; +-} +diff --git a/templates/chain-template/utils/common.ts b/templates/chain-template/utils/common.ts +index 45f856b7..0ba2ca4d 100644 +--- a/templates/chain-template/utils/common.ts ++++ b/templates/chain-template/utils/common.ts +@@ -31,7 +31,7 @@ export const getWalletLogo = (wallet: Wallet) => { + }; + + export const getSignerOptions = (): SignerOptions => { +- const defaultGasPrice = GasPrice.fromString('0.025uosmo'); ++ const defaultGasPrice = GasPrice.fromString('0.025uatom'); + + return { + // @ts-ignore +diff --git a/templates/chain-template/utils/index.ts b/templates/chain-template/utils/index.ts +index acb8b603..3e96554e 100644 +--- a/templates/chain-template/utils/index.ts ++++ b/templates/chain-template/utils/index.ts +@@ -1,6 +1,5 @@ + export * from './common'; + export * from './staking'; + export * from './voting'; +-export * from './asset-list'; + export * from './contract'; + export * from './faucet'; +diff --git a/templates/chain-template/yarn.lock b/templates/chain-template/yarn.lock +index 79dfd50a..f0d36278 100644 +--- a/templates/chain-template/yarn.lock ++++ b/templates/chain-template/yarn.lock +@@ -5,7 +5,7 @@ __metadata: + version: 8 + cacheKey: 10c0 + +-"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.21.0": ++"@babel/runtime@npm:^7.12.5": + version: 7.24.4 + resolution: "@babel/runtime@npm:7.24.4" + dependencies: +@@ -23,28 +23,6 @@ __metadata: + languageName: node + linkType: hard + +-"@chain-registry/assets@npm:1.63.5": +- version: 1.63.5 +- resolution: "@chain-registry/assets@npm:1.63.5" +- dependencies: +- "@chain-registry/types": "npm:^0.44.3" +- checksum: 10c0/52211bb383829a245f738e9a7f388fb768ae35ad34a299dce6b4506ee02d069eaee103f62794b786efc4fc258c6b9b26fd88d21a5c8a2d75612343737b9f10f2 +- languageName: node +- linkType: hard +- +-"@chain-registry/client@npm:1.18.1": +- version: 1.18.1 +- resolution: "@chain-registry/client@npm:1.18.1" +- dependencies: +- "@babel/runtime": "npm:^7.21.0" +- "@chain-registry/types": "npm:^0.17.1" +- "@chain-registry/utils": "npm:^1.17.0" +- bfs-path: "npm:^1.0.2" +- cross-fetch: "npm:^3.1.5" +- checksum: 10c0/9e03b44aae667f6050d6de4f1388122470a2dd94693314f7214c925ed4a1eff79e88ca000bf9f10d308bfd5eb633eca722d2b4e413fef7b566c9a83331e71f26 +- languageName: node +- linkType: hard +- + "@chain-registry/client@npm:^1.48.1": + version: 1.48.31 + resolution: "@chain-registry/client@npm:1.48.31" +@@ -103,7 +81,7 @@ __metadata: + languageName: node + linkType: hard + +-"@chain-registry/types@npm:0.44.3, @chain-registry/types@npm:^0.44.3": ++"@chain-registry/types@npm:0.44.3": + version: 0.44.3 + resolution: "@chain-registry/types@npm:0.44.3" + checksum: 10c0/471e85e934e42ba2704fece7ca0545df5ef98e947a5d10aaefa7872145a21211036740b4b37bb8a33359561b7533c07c22e1608b372efc19be5e2ebd386ac3de +@@ -117,15 +95,6 @@ __metadata: + languageName: node + linkType: hard + +-"@chain-registry/types@npm:^0.17.1": +- version: 0.17.1 +- resolution: "@chain-registry/types@npm:0.17.1" +- dependencies: +- "@babel/runtime": "npm:^7.21.0" +- checksum: 10c0/00400f2994c838dbf0a4a6aa01af397d72badbeee82e13095e1ae1e5853a9405f802f0e5629f3aab0cfaa7ec9eae78eb0976001d5a24a7f33d138e2b02edb547 +- languageName: node +- linkType: hard +- + "@chain-registry/types@npm:^0.45.1, @chain-registry/types@npm:^0.45.31": + version: 0.45.31 + resolution: "@chain-registry/types@npm:0.45.31" +@@ -133,21 +102,10 @@ __metadata: + languageName: node + linkType: hard + +-"@chain-registry/types@npm:^0.45.26": +- version: 0.45.26 +- resolution: "@chain-registry/types@npm:0.45.26" +- checksum: 10c0/9f3163a458c7f2a5867bbad2cea0916345df9df3c03e110dfd79290331b58462da903836fb98b573ba1b95ad835ecffb803c3de649edcfcfb608dde7880e24b4 +- languageName: node +- linkType: hard +- +-"@chain-registry/utils@npm:^1.17.0": +- version: 1.46.26 +- resolution: "@chain-registry/utils@npm:1.46.26" +- dependencies: +- "@chain-registry/types": "npm:^0.45.26" +- bignumber.js: "npm:9.1.2" +- sha.js: "npm:^2.4.11" +- checksum: 10c0/37cff17ed77323e9c2fe7575261e30ed7e07812b6488e61649252259e6cdb03349146a1d789d2fd5ca77fc51b9baabe38e9ddce267f082a0b95806bf25de505c ++"@chain-registry/types@npm:^0.50.14": ++ version: 0.50.14 ++ resolution: "@chain-registry/types@npm:0.50.14" ++ checksum: 10c0/8801a9f9570128f05b410d412897f857a98a59ec088ab038510fb07b2e3b77f481f1d27bfed540dcdaf96af534ae93453a349712bde795de6dd683e2619d9f75 + languageName: node + linkType: hard + +@@ -184,18 +142,6 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/amino@npm:0.29.3": +- version: 0.29.3 +- resolution: "@cosmjs/amino@npm:0.29.3" +- dependencies: +- "@cosmjs/crypto": "npm:^0.29.3" +- "@cosmjs/encoding": "npm:^0.29.3" +- "@cosmjs/math": "npm:^0.29.3" +- "@cosmjs/utils": "npm:^0.29.3" +- checksum: 10c0/5f7916ed259239c83303a5c1ae467021961db7c250a56aba24b2432ad66c2d1612c73055a1e86783f54417720450ba814ca5e854a0c98eb6823f66f20bdecdec +- languageName: node +- linkType: hard +- + "@cosmjs/amino@npm:0.29.4": + version: 0.29.4 + resolution: "@cosmjs/amino@npm:0.29.4" +@@ -220,7 +166,7 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/amino@npm:^0.29.3, @cosmjs/amino@npm:^0.29.4, @cosmjs/amino@npm:^0.29.5": ++"@cosmjs/amino@npm:^0.29.4, @cosmjs/amino@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/amino@npm:0.29.5" + dependencies: +@@ -292,7 +238,7 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/crypto@npm:^0.29.3, @cosmjs/crypto@npm:^0.29.4, @cosmjs/crypto@npm:^0.29.5": ++"@cosmjs/crypto@npm:^0.29.4, @cosmjs/crypto@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/crypto@npm:0.29.5" + dependencies: +@@ -352,7 +298,7 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/encoding@npm:^0.29.3, @cosmjs/encoding@npm:^0.29.4, @cosmjs/encoding@npm:^0.29.5": ++"@cosmjs/encoding@npm:^0.29.4, @cosmjs/encoding@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/encoding@npm:0.29.5" + dependencies: +@@ -436,7 +382,7 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/math@npm:^0.29.3, @cosmjs/math@npm:^0.29.4, @cosmjs/math@npm:^0.29.5": ++"@cosmjs/math@npm:^0.29.4, @cosmjs/math@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/math@npm:0.29.5" + dependencies: +@@ -472,21 +418,6 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/proto-signing@npm:0.29.3": +- version: 0.29.3 +- resolution: "@cosmjs/proto-signing@npm:0.29.3" +- dependencies: +- "@cosmjs/amino": "npm:^0.29.3" +- "@cosmjs/crypto": "npm:^0.29.3" +- "@cosmjs/encoding": "npm:^0.29.3" +- "@cosmjs/math": "npm:^0.29.3" +- "@cosmjs/utils": "npm:^0.29.3" +- cosmjs-types: "npm:^0.5.2" +- long: "npm:^4.0.0" +- checksum: 10c0/8d73649b3a340a085633609d4db94b4fc01f94574e3ead2667db071afd12a4008a84710142dd15dc315981d39d55c9355c875176e7ab20ac239980110e23eebe +- languageName: node +- linkType: hard +- + "@cosmjs/proto-signing@npm:0.29.4": + version: 0.29.4 + resolution: "@cosmjs/proto-signing@npm:0.29.4" +@@ -502,7 +433,7 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/proto-signing@npm:^0.29.3, @cosmjs/proto-signing@npm:^0.29.4": ++"@cosmjs/proto-signing@npm:^0.29.4": + version: 0.29.5 + resolution: "@cosmjs/proto-signing@npm:0.29.5" + dependencies: +@@ -608,26 +539,6 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/stargate@npm:0.29.3": +- version: 0.29.3 +- resolution: "@cosmjs/stargate@npm:0.29.3" +- dependencies: +- "@confio/ics23": "npm:^0.6.8" +- "@cosmjs/amino": "npm:^0.29.3" +- "@cosmjs/encoding": "npm:^0.29.3" +- "@cosmjs/math": "npm:^0.29.3" +- "@cosmjs/proto-signing": "npm:^0.29.3" +- "@cosmjs/stream": "npm:^0.29.3" +- "@cosmjs/tendermint-rpc": "npm:^0.29.3" +- "@cosmjs/utils": "npm:^0.29.3" +- cosmjs-types: "npm:^0.5.2" +- long: "npm:^4.0.0" +- protobufjs: "npm:~6.11.3" +- xstream: "npm:^11.14.0" +- checksum: 10c0/a37fc5ba1f2c8521c55d7efb9dfce0e3bfde7b6cbe241e54b36af769d256683ecd955e8b50ee5a9f6932f8847adda3866c3652ece3610463fac3b6d9a021e9fe +- languageName: node +- linkType: hard +- + "@cosmjs/stargate@npm:0.29.4": + version: 0.29.4 + resolution: "@cosmjs/stargate@npm:0.29.4" +@@ -704,7 +615,7 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/stream@npm:^0.29.3, @cosmjs/stream@npm:^0.29.4, @cosmjs/stream@npm:^0.29.5": ++"@cosmjs/stream@npm:^0.29.4, @cosmjs/stream@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/stream@npm:0.29.5" + dependencies: +@@ -740,7 +651,7 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/tendermint-rpc@npm:^0.29.3, @cosmjs/tendermint-rpc@npm:^0.29.4": ++"@cosmjs/tendermint-rpc@npm:^0.29.4": + version: 0.29.5 + resolution: "@cosmjs/tendermint-rpc@npm:0.29.5" + dependencies: +@@ -812,7 +723,7 @@ __metadata: + languageName: node + linkType: hard + +-"@cosmjs/utils@npm:^0.29.3, @cosmjs/utils@npm:^0.29.4, @cosmjs/utils@npm:^0.29.5": ++"@cosmjs/utils@npm:^0.29.4, @cosmjs/utils@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/utils@npm:0.29.5" + checksum: 10c0/cfb2dbc499bc305cf0b7d3f0afc936b52e0e7492dce33e3bef7986b0e3aa8c34316c60072b7664799d182ce5f5016eaead3d5f948d871c5b1afe30604ef2542d +@@ -844,7 +755,6 @@ __metadata: + version: 0.0.0-use.local + resolution: "@cosmology/chain-template@workspace:." + dependencies: +- "@chain-registry/assets": "npm:1.63.5" + "@chain-registry/types": "npm:0.44.3" + "@cosmjs/amino": "npm:0.32.3" + "@cosmjs/cosmwasm-stargate": "npm:0.32.3" +@@ -853,7 +763,6 @@ __metadata: + "@interchain-ui/react": "npm:1.23.31" + "@interchain-ui/react-no-ssr": "npm:0.1.2" + "@keplr-wallet/types": "npm:^0.12.111" +- "@starship-ci/cli": "npm:^2.9.0" + "@tanstack/react-query": "npm:4.32.0" + "@tanstack/react-query-devtools": "npm:4.32.0" + "@types/node": "npm:18.11.9" +@@ -862,7 +771,7 @@ __metadata: + "@types/react-dom": "npm:18.0.9" + ace-builds: "npm:1.35.0" + bignumber.js: "npm:9.1.2" +- chain-registry: "npm:1.62.3" ++ chain-registry: "npm:1.69.33" + cosmos-kit: "npm:2.18.4" + dayjs: "npm:1.11.11" + eslint: "npm:8.28.0" +@@ -871,30 +780,18 @@ __metadata: + interchain-query: "npm:1.10.1" + next: "npm:^13" + node-gzip: "npm:^1.1.2" +- osmo-query: "npm:16.5.1" + react: "npm:18.2.0" + react-ace: "npm:11.0.1" + react-dom: "npm:18.2.0" + react-dropzone: "npm:^14.2.3" + react-icons: "npm:5.2.1" + react-markdown: "npm:9.0.1" +- starshipjs: "npm:^2.4.0" + typescript: "npm:4.9.3" + yaml-loader: "npm:^0.8.1" + zustand: "npm:4.5.2" + languageName: unknown + linkType: soft + +-"@cosmology/lcd@npm:^0.12.0": +- version: 0.12.0 +- resolution: "@cosmology/lcd@npm:0.12.0" +- dependencies: +- "@babel/runtime": "npm:^7.21.0" +- axios: "npm:0.27.2" +- checksum: 10c0/28fbc26cd4c7cf693ae5be7aab637d1f5420f407dbc7a588d67bf5e5bb5e8f0b58e1c428993ca54dbe1dbac8c9dbd9d2713dffad76dfbc727d7bb77b5fb9b041 +- languageName: node +- linkType: hard +- + "@cosmos-kit/cdcwallet-extension@npm:^2.13.2": + version: 2.13.2 + resolution: "@cosmos-kit/cdcwallet-extension@npm:2.13.2" +@@ -4420,35 +4317,6 @@ __metadata: + languageName: node + linkType: hard + +-"@starship-ci/cli@npm:^2.9.0": +- version: 2.9.0 +- resolution: "@starship-ci/cli@npm:2.9.0" +- dependencies: +- "@starship-ci/client": "npm:^2.8.0" +- chalk: "npm:^4.1.0" +- deepmerge: "npm:^4.3.1" +- inquirerer: "npm:^1.9.0" +- js-yaml: "npm:^4.1.0" +- minimist: "npm:^1.2.8" +- bin: +- starship: index.js +- checksum: 10c0/3aca862a045a6d0a3f163b7e4b729d7f7e13666a7ea34c3b418eb47776f86ece193ed89544486fd44ade91ebadd652d41709d8e3c3b96bdb8cee0873b6a3c036 +- languageName: node +- linkType: hard +- +-"@starship-ci/client@npm:^2.8.0": +- version: 2.8.0 +- resolution: "@starship-ci/client@npm:2.8.0" +- dependencies: +- chalk: "npm:^4.1.0" +- deepmerge: "npm:^4.3.1" +- js-yaml: "npm:^4.1.0" +- mkdirp: "npm:3.0.1" +- shelljs: "npm:^0.8.5" +- checksum: 10c0/ceb176da93674f56933aebca44c7ae09ba0d19f452eeb388a91833a607248c0bb00a1466ef574c35fcacd7c58bdd6ad7b371957b8cad1257061fcc2d221d8b7f +- languageName: node +- linkType: hard +- + "@swc/helpers@npm:0.5.2": + version: 0.5.2 + resolution: "@swc/helpers@npm:0.5.2" +@@ -5483,16 +5351,6 @@ __metadata: + languageName: node + linkType: hard + +-"axios@npm:0.27.2, axios@npm:^0.27.2": +- version: 0.27.2 +- resolution: "axios@npm:0.27.2" +- dependencies: +- follow-redirects: "npm:^1.14.9" +- form-data: "npm:^4.0.0" +- checksum: 10c0/76d673d2a90629944b44d6f345f01e58e9174690f635115d5ffd4aca495d99bcd8f95c590d5ccb473513f5ebc1d1a6e8934580d0c57cdd0498c3a101313ef771 +- languageName: node +- linkType: hard +- + "axios@npm:^0.21.2": + version: 0.21.4 + resolution: "axios@npm:0.21.4" +@@ -5502,6 +5360,16 @@ __metadata: + languageName: node + linkType: hard + ++"axios@npm:^0.27.2": ++ version: 0.27.2 ++ resolution: "axios@npm:0.27.2" ++ dependencies: ++ follow-redirects: "npm:^1.14.9" ++ form-data: "npm:^4.0.0" ++ checksum: 10c0/76d673d2a90629944b44d6f345f01e58e9174690f635115d5ffd4aca495d99bcd8f95c590d5ccb473513f5ebc1d1a6e8934580d0c57cdd0498c3a101313ef771 ++ languageName: node ++ linkType: hard ++ + "axios@npm:^1.6.0": + version: 1.6.8 + resolution: "axios@npm:1.6.8" +@@ -5632,7 +5500,7 @@ __metadata: + languageName: node + linkType: hard + +-"bip39@npm:^3.0.3, bip39@npm:^3.1.0": ++"bip39@npm:^3.0.3": + version: 3.1.0 + resolution: "bip39@npm:3.1.0" + dependencies: +@@ -5888,12 +5756,12 @@ __metadata: + languageName: node + linkType: hard + +-"chain-registry@npm:1.62.3": +- version: 1.62.3 +- resolution: "chain-registry@npm:1.62.3" ++"chain-registry@npm:1.69.33": ++ version: 1.69.33 ++ resolution: "chain-registry@npm:1.69.33" + dependencies: +- "@chain-registry/types": "npm:^0.44.3" +- checksum: 10c0/acb2dcee56604083a38dd7e4524458d7d5c2e786d8d78ed40444530a8cb3236d16e0fef52462603ef339c2c529ede1c846597a8e6f99fa7751481b28279c9a56 ++ "@chain-registry/types": "npm:^0.50.14" ++ checksum: 10c0/96ed7b5a12c627aad124c499ac06f7009d248ba79c77b01f9901b43fc8312a72794b2dd0450459d6c875988d0933ac8755c3ff0c71153222b09bc5d9055646a5 + languageName: node + linkType: hard + +@@ -6396,7 +6264,7 @@ __metadata: + languageName: node + linkType: hard + +-"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.1": ++"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 +@@ -7543,7 +7411,7 @@ __metadata: + languageName: node + linkType: hard + +-"glob@npm:^7.0.0, glob@npm:^7.1.3": ++"glob@npm:^7.1.3": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: +@@ -7909,18 +7777,6 @@ __metadata: + languageName: node + linkType: hard + +-"inquirerer@npm:^1.9.0": +- version: 1.9.0 +- resolution: "inquirerer@npm:1.9.0" +- dependencies: +- chalk: "npm:^4.1.0" +- deepmerge: "npm:^4.3.1" +- js-yaml: "npm:^4.1.0" +- minimist: "npm:^1.2.8" +- checksum: 10c0/c405e4ce4eb73ef5ad495dd9ae66ebd9686a127d5de0a55440eda3472ce9e93d5233bba9f6feb326d240348a9ff009c6eafb5ef29404880b850b91bbcd18ef6b +- languageName: node +- linkType: hard +- + "interchain-query@npm:1.10.1": + version: 1.10.1 + resolution: "interchain-query@npm:1.10.1" +@@ -7947,13 +7803,6 @@ __metadata: + languageName: node + linkType: hard + +-"interpret@npm:^1.0.0": +- version: 1.4.0 +- resolution: "interpret@npm:1.4.0" +- checksum: 10c0/08c5ad30032edeec638485bc3f6db7d0094d9b3e85e0f950866600af3c52e9fd69715416d29564731c479d9f4d43ff3e4d302a178196bdc0e6837ec147640450 +- languageName: node +- linkType: hard +- + "intl-messageformat@npm:^10.1.0": + version: 10.5.11 + resolution: "intl-messageformat@npm:10.5.11" +@@ -9313,7 +9162,7 @@ __metadata: + languageName: node + linkType: hard + +-"minimist@npm:^1.2.0, minimist@npm:^1.2.6, minimist@npm:^1.2.8": ++"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 +@@ -9404,15 +9253,6 @@ __metadata: + languageName: node + linkType: hard + +-"mkdirp@npm:3.0.1": +- version: 3.0.1 +- resolution: "mkdirp@npm:3.0.1" +- bin: +- mkdirp: dist/cjs/src/bin.js +- checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d +- languageName: node +- linkType: hard +- + "mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" +@@ -9606,7 +9446,7 @@ __metadata: + languageName: node + linkType: hard + +-"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.9": ++"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: +@@ -9848,19 +9688,6 @@ __metadata: + languageName: node + linkType: hard + +-"osmo-query@npm:16.5.1": +- version: 16.5.1 +- resolution: "osmo-query@npm:16.5.1" +- dependencies: +- "@cosmjs/amino": "npm:0.29.3" +- "@cosmjs/proto-signing": "npm:0.29.3" +- "@cosmjs/stargate": "npm:0.29.3" +- "@cosmjs/tendermint-rpc": "npm:^0.29.3" +- "@cosmology/lcd": "npm:^0.12.0" +- checksum: 10c0/036877b1f2aefda492f1ff2c84163955de439c07bb87380cf05e3d8b244d77f12a505d93e655389172d89bd09214d5b812d8123bd1203fe649e7d934f87c2d34 +- languageName: node +- linkType: hard +- + "p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" +@@ -10507,15 +10334,6 @@ __metadata: + languageName: node + linkType: hard + +-"rechoir@npm:^0.6.2": +- version: 0.6.2 +- resolution: "rechoir@npm:0.6.2" +- dependencies: +- resolve: "npm:^1.1.6" +- checksum: 10c0/22c4bb32f4934a9468468b608417194f7e3ceba9a508512125b16082c64f161915a28467562368eeb15dc16058eb5b7c13a20b9eb29ff9927d1ebb3b5aa83e84 +- languageName: node +- linkType: hard +- + "reflect.getprototypeof@npm:^1.0.4": + version: 1.0.6 + resolution: "reflect.getprototypeof@npm:1.0.6" +@@ -10603,7 +10421,7 @@ __metadata: + languageName: node + linkType: hard + +-"resolve@npm:^1.1.6, resolve@npm:^1.22.4": ++"resolve@npm:^1.22.4": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: +@@ -10629,7 +10447,7 @@ __metadata: + languageName: node + linkType: hard + +-"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": ++"resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + dependencies: +@@ -10870,19 +10688,6 @@ __metadata: + languageName: node + linkType: hard + +-"shelljs@npm:^0.8.5": +- version: 0.8.5 +- resolution: "shelljs@npm:0.8.5" +- dependencies: +- glob: "npm:^7.0.0" +- interpret: "npm:^1.0.0" +- rechoir: "npm:^0.6.2" +- bin: +- shjs: bin/shjs +- checksum: 10c0/feb25289a12e4bcd04c40ddfab51aff98a3729f5c2602d5b1a1b95f6819ec7804ac8147ebd8d9a85dfab69d501bcf92d7acef03247320f51c1552cec8d8e2382 +- languageName: node +- linkType: hard +- + "side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" +@@ -10990,18 +10795,6 @@ __metadata: + languageName: node + linkType: hard + +-"starshipjs@npm:^2.4.0": +- version: 2.4.0 +- resolution: "starshipjs@npm:2.4.0" +- dependencies: +- "@chain-registry/client": "npm:1.18.1" +- bip39: "npm:^3.1.0" +- js-yaml: "npm:^4.1.0" +- node-fetch: "npm:^2.6.9" +- checksum: 10c0/e62cc540bc9e8700d3bdb61ac1261b71417f0e687c98a0e3733317d363e425c7188a205d9af70f5218e87f99195fbfb5b759b4f3f9d87823989ef6b4d90442d6 +- languageName: node +- linkType: hard +- + "std-env@npm:^3.7.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" +-- +2.47.0 + diff --git a/cca/templates/web.go b/cca/templates/web.go new file mode 100644 index 00000000..7d723099 --- /dev/null +++ b/cca/templates/web.go @@ -0,0 +1,46 @@ +package templates + +import ( + "embed" + "fmt" + "io/fs" + "os" + "path/filepath" +) + +//go:embed web/* +var web embed.FS + +func Write(destinationPath string) error { + // Walk through the embedded files + return fs.WalkDir(web, ".", func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + + if path == "." { + return nil + } + + outputPath := filepath.Join(destinationPath, path) + + if d.IsDir() { + // Create directories as needed + if err := os.MkdirAll(outputPath, os.ModePerm); err != nil { + return fmt.Errorf("failed to create directory %s: %w", outputPath, err) + } + } else { + // Write file contents + fileData, err := web.ReadFile(path) + if err != nil { + return fmt.Errorf("failed to read embedded file %s: %w", path, err) + } + + if err := os.WriteFile(outputPath, fileData, os.ModePerm); err != nil { + return fmt.Errorf("failed to write file %s: %w", outputPath, err) + } + } + + return nil + }) +} diff --git a/cca/templates/web/.eslintrc.json b/cca/templates/web/.eslintrc.json new file mode 100644 index 00000000..09937b6b --- /dev/null +++ b/cca/templates/web/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "extends": "next/core-web-vitals", + "rules": { + "react-hooks/exhaustive-deps": "off" + } +} diff --git a/cca/templates/web/.gitignore b/cca/templates/web/.gitignore new file mode 100644 index 00000000..c87c9b39 --- /dev/null +++ b/cca/templates/web/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/cca/templates/web/CREDITS.txt b/cca/templates/web/CREDITS.txt new file mode 100644 index 00000000..26fcc68d --- /dev/null +++ b/cca/templates/web/CREDITS.txt @@ -0,0 +1,4 @@ +CREDITS +------- +The CosmWasm dashboard of this project was inspired by the design of https://github.com/alleslabs/celatone-frontend +No code from the original project was used in this project. diff --git a/cca/templates/web/README.md b/cca/templates/web/README.md new file mode 100644 index 00000000..93ac8c07 --- /dev/null +++ b/cca/templates/web/README.md @@ -0,0 +1,11 @@ +# Usage + +First, install the packages and run the development server: + +```bash +yarn && yarn dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. diff --git a/cca/templates/web/components/common/Button.tsx b/cca/templates/web/components/common/Button.tsx new file mode 100644 index 00000000..0457654f --- /dev/null +++ b/cca/templates/web/components/common/Button.tsx @@ -0,0 +1,157 @@ +import { + Box, + BoxProps, + Icon, + IconName, + IconProps, + Spinner, +} from '@interchain-ui/react'; +import { useState, useRef, useEffect } from 'react'; + +type Variant = 'primary' | 'outline' | 'text'; +type ButtonIcon = IconName | JSX.Element; +type Size = 'sm' | 'md'; + +type ButtonProps = { + children?: React.ReactNode; + variant?: Variant; + onClick?: () => void; + disabled?: boolean; + leftIcon?: ButtonIcon; + rightIcon?: ButtonIcon; + iconColor?: IconProps['color']; + iconSize?: IconProps['size']; + isLoading?: boolean; + size?: Size; +} & BoxProps; + +const sizeStyles: Record = { + sm: { + py: '6px', + px: '12px', + height: '32px', + fontSize: '14px', + }, + md: { + py: '10px', + px: '20px', + height: '40px', + fontSize: '16px', + }, +}; + +const variantStyles: Record = { + outline: { + borderWidth: '1px', + borderStyle: '$solid', + borderColor: '$blackAlpha200', + color: '$blackAlpha500', + backgroundColor: { + hover: '$blackAlpha100', + base: '$background', + }, + }, + text: { + color: { + base: '$blackAlpha500', + hover: '$blackAlpha600', + }, + backgroundColor: 'transparent', + }, + primary: { + color: '$white', + backgroundColor: { + hover: '$purple400', + base: '$purple600', + }, + }, +}; + +const disabledStyles: Record = { + outline: { + color: '$blackAlpha300', + backgroundColor: 'transparent', + }, + text: { + color: '$blackAlpha300', + }, + primary: { + backgroundColor: '$purple200', + }, +}; + +export const Button = ({ + children, + onClick, + size = 'md', + variant = 'outline', + disabled = false, + isLoading = false, + iconColor = 'inherit', + iconSize = '$md', + leftIcon, + rightIcon, + ...rest +}: ButtonProps) => { + const [buttonWidth, setButtonWidth] = useState(0); + const buttonRef = useRef(null); + + useEffect(() => { + // maintain button width when loading + const updateButtonWidth = () => { + if (buttonRef.current && !isLoading) { + setButtonWidth(buttonRef.current.offsetWidth); + } + }; + + updateButtonWidth(); + + window.addEventListener('resize', updateButtonWidth); + return () => window.removeEventListener('resize', updateButtonWidth); + }, [isLoading, children, leftIcon, rightIcon, iconSize]); + + return ( + + {isLoading ? ( + + ) : ( + <> + {typeof leftIcon === 'string' ? ( + + ) : ( + leftIcon + )} + + {children} + + {typeof rightIcon === 'string' ? ( + + ) : ( + rightIcon + )} + + )} + + ); +}; diff --git a/cca/templates/web/components/common/Drawer.tsx b/cca/templates/web/components/common/Drawer.tsx new file mode 100644 index 00000000..5c1a5fba --- /dev/null +++ b/cca/templates/web/components/common/Drawer.tsx @@ -0,0 +1,88 @@ +import { ReactNode, useEffect, useRef } from 'react'; +import { Box } from '@interchain-ui/react'; +import { useOutsideClick } from '@/hooks'; + +type DrawerProps = { + isOpen: boolean; + onClose: () => void; + children: ReactNode; + direction?: 'top' | 'bottom' | 'left' | 'right'; +}; + +export const Drawer = ({ + isOpen, + onClose, + children, + direction = 'left', +}: DrawerProps) => { + const contentRef = useRef(null); + + useOutsideClick({ + ref: contentRef, + handler: onClose, + shouldListen: isOpen, + }); + + useEffect(() => { + if (isOpen) { + const scrollbarWidth = + window.innerWidth - document.documentElement.clientWidth; + document.body.style.overflow = 'hidden'; + document.body.style.paddingRight = `${scrollbarWidth}px`; + } + + return () => { + document.body.style.overflow = ''; + document.body.style.paddingRight = ''; + }; + }, [isOpen]); + + const getTransform = () => { + switch (direction) { + case 'top': + return `translateY(${isOpen ? '0%' : '-100%'})`; + case 'bottom': + return `translateY(${isOpen ? '0%' : '100%'})`; + case 'right': + return `translateX(${isOpen ? '0%' : '100%'})`; + default: + return `translateX(${isOpen ? '0%' : '-100%'})`; + } + }; + + return ( + + + {children} + + + ); +}; diff --git a/cca/templates/web/components/common/Footer.tsx b/cca/templates/web/components/common/Footer.tsx new file mode 100644 index 00000000..5bb5388a --- /dev/null +++ b/cca/templates/web/components/common/Footer.tsx @@ -0,0 +1,78 @@ +import Link from 'next/link'; +import { FaXTwitter } from 'react-icons/fa6'; +import { Box, Icon, Text } from '@interchain-ui/react'; + +import { useDetectBreakpoints } from '@/hooks'; + +export const Footer = () => { + const { isMobile } = useDetectBreakpoints(); + + return ( + + {isMobile && ( + + + + )} + + + © {new Date().getFullYear()} Cosmology + + {isMobile ? : } + + + Terms of Service + + + + + ); +}; + +const TextDivider = () => { + return ( + + | + + ); +}; + +const socialLinks = [ + { + icon: , + href: 'https://github.com/ignite', + }, + { + icon: , + href: 'https://discord.com/invite/ignite', + }, + { + icon: ( + + + + ), + href: 'https://x.com/ignite', + }, + { + icon: , + href: 'https://www.youtube.com/@ignitehq', + }, +]; + +const SocialLinks = () => { + return ( + + {socialLinks.map(({ icon, href }) => ( + + {icon} + + ))} + + ); +}; diff --git a/cca/templates/web/components/common/Header/AddressButton.tsx b/cca/templates/web/components/common/Header/AddressButton.tsx new file mode 100644 index 00000000..40001579 --- /dev/null +++ b/cca/templates/web/components/common/Header/AddressButton.tsx @@ -0,0 +1,63 @@ +import { + Popover, + PopoverContent, + PopoverTrigger, + useColorModeValue, +} from '@interchain-ui/react'; +import { useChain } from '@cosmos-kit/react'; +import { MdOutlineAccountBalanceWallet } from 'react-icons/md'; + +import { Button, WalletConnect } from '@/components'; +import { darkColors, lightColors } from '@/config'; +import { useChainStore } from '@/contexts'; +import { useCopyToClipboard, useDetectBreakpoints } from '@/hooks'; +import { shortenAddress } from '@/utils'; + +export const AddressButton = () => { + const { selectedChain } = useChainStore(); + const { address } = useChain(selectedChain); + const { isCopied, copyToClipboard } = useCopyToClipboard(); + const { isDesktop } = useDetectBreakpoints(); + + const arrowBgColor = useColorModeValue( + lightColors?.background as string, + darkColors?.background as string + ); + + if (!isDesktop) { + return ( + + + + ); +}; diff --git a/cca/templates/web/components/common/Header/ChainDropdown.tsx b/cca/templates/web/components/common/Header/ChainDropdown.tsx new file mode 100644 index 00000000..ec464446 --- /dev/null +++ b/cca/templates/web/components/common/Header/ChainDropdown.tsx @@ -0,0 +1,81 @@ +import Image from 'next/image'; +import { useState } from 'react'; +import { useChain, useManager } from '@cosmos-kit/react'; +import { Box, Combobox, Skeleton, Stack, Text } from '@interchain-ui/react'; + +import { useDetectBreakpoints } from '@/hooks'; +import { chainStore, useChainStore } from '@/contexts'; +import { chainOptions } from '@/config'; +import { getSignerOptions } from '@/utils'; + +export const ChainDropdown = () => { + const { selectedChain } = useChainStore(); + const { chain } = useChain(selectedChain); + const [input, setInput] = useState(chain.pretty_name); + const { isMobile } = useDetectBreakpoints(); + + const { addChains, getChainLogo } = useManager(); + + // TODO(@julienrbrt), use addChains, and add the chain from the generate chain-registry.json + + const onOpenChange = (isOpen: boolean) => {}; + + return ( + { + setInput(input); + }} + onOpenChange={onOpenChange} + selectedKey={selectedChain} + onSelectionChange={(key) => { + const chainName = key as string | null; + if (chainName) { + chainStore.setSelectedChain(chainName); + } + }} + inputAddonStart={ + + {input === chain.pretty_name ? ( + {chain.pretty_name} + ) : ( + + )} + + } + styleProps={{ + width: isMobile ? '130px' : '260px', + }} + > + {chainOptions.map((c) => ( + + + {c.pretty_name} + + {c.pretty_name} + + + + ))} + + ); +}; diff --git a/cca/templates/web/components/common/Header/Header.tsx b/cca/templates/web/components/common/Header/Header.tsx new file mode 100644 index 00000000..daabda17 --- /dev/null +++ b/cca/templates/web/components/common/Header/Header.tsx @@ -0,0 +1,68 @@ +import Link from 'next/link'; +import Image from 'next/image'; +import { Box, useColorModeValue, useTheme } from '@interchain-ui/react'; +import { RxHamburgerMenu } from 'react-icons/rx'; + +import { ChainDropdown } from './ChainDropdown'; +import { Button } from '../Button'; +import { useDetectBreakpoints } from '@/hooks'; +import { AddressButton } from './AddressButton'; + +interface HeaderProps { + onOpenSidebar: () => void; +} + +export const Header = ({ onOpenSidebar }: HeaderProps) => { + const { theme, setTheme } = useTheme(); + const { isDesktop, isMobile } = useDetectBreakpoints(); + + const brandLogo = useColorModeValue( + '/logos/brand-logo.svg', + '/logos/brand-logo-dark.svg' + ); + + const brandLogoSm = useColorModeValue( + '/logos/brand-logo-sm.svg', + '/logos/brand-logo-sm-dark.svg' + ); + + return ( + + {!isDesktop && ( + + your logo + + )} + + + + + + )} + + + Powered by + + cosmology + + + + ); +}; diff --git a/cca/templates/web/components/common/Sidebar/index.ts b/cca/templates/web/components/common/Sidebar/index.ts new file mode 100644 index 00000000..c167c49f --- /dev/null +++ b/cca/templates/web/components/common/Sidebar/index.ts @@ -0,0 +1 @@ +export * from './Sidebar'; diff --git a/cca/templates/web/components/common/Stepper.tsx b/cca/templates/web/components/common/Stepper.tsx new file mode 100644 index 00000000..a566e388 --- /dev/null +++ b/cca/templates/web/components/common/Stepper.tsx @@ -0,0 +1,101 @@ +import { Box, Text, Icon } from '@interchain-ui/react'; + +const STEP_INDICATOR_SIZE = 40; +const STEP_SEPARATOR_WIDTH = 2; +const STEP_SEPARATOR_OFFSET = + STEP_INDICATOR_SIZE / 2 - STEP_SEPARATOR_WIDTH / 2; + +const Status = { + DONE: 'done', + DOING: 'doing', + TODO: 'todo', +} as const; + +type Status = (typeof Status)[keyof typeof Status]; + +type StepperProps = { + steps: string[]; + activeStep: number; + direction?: 'row' | 'column'; +}; + +const getSeparatorStyles = (direction: 'row' | 'column', status: Status) => { + const isColumn = direction === 'column'; + const isDone = status === Status.DONE; + + const commonStyles = { + backgroundColor: isDone ? '$purple400' : '$blackAlpha300', + }; + + const directionStyles = isColumn + ? { + width: `${STEP_SEPARATOR_WIDTH}px`, + height: '30px', + ml: `${STEP_SEPARATOR_OFFSET}px`, + my: '4px', + } + : { + width: '30px', + height: `${STEP_SEPARATOR_WIDTH}px`, + mt: `${STEP_SEPARATOR_OFFSET}px`, + mx: '4px', + }; + + return { ...commonStyles, ...directionStyles }; +}; + +export const Stepper: React.FC = ({ + steps, + activeStep, + direction = 'column', +}) => { + return ( + + {steps.map((step, index) => { + const status: Status = + index < activeStep + ? Status.DONE + : index === activeStep + ? Status.DOING + : Status.TODO; + + return ( + + + + {status === Status.DONE ? ( + + ) : ( + + {index + 1} + + )} + + + {step} + + + {index < steps.length - 1 && ( + + )} + + ); + })} + + ); +}; diff --git a/cca/templates/web/components/common/Table.tsx b/cca/templates/web/components/common/Table.tsx new file mode 100644 index 00000000..7750ac21 --- /dev/null +++ b/cca/templates/web/components/common/Table.tsx @@ -0,0 +1,66 @@ +import { Box, BoxProps, useColorModeValue } from '@interchain-ui/react'; + +const Table = (props: BoxProps) => { + return ; +}; + +const TableHeader = (props: BoxProps) => { + return ; +}; + +const TableBody = (props: BoxProps) => { + return ; +}; + +const TableRow = ({ + hasHover = false, + ...props +}: BoxProps & { hasHover?: boolean }) => { + const bgHoverColor = useColorModeValue('$blackAlpha100', '$whiteAlpha100'); + + return ( + + ); +}; + +const TableHeaderCell = (props: BoxProps) => { + return ( + + ); +}; + +const TableCell = (props: BoxProps) => { + return ( + + ); +}; + +Table.Header = TableHeader; +Table.HeaderCell = TableHeaderCell; +Table.Body = TableBody; +Table.Row = TableRow; +Table.Cell = TableCell; + +export { Table }; diff --git a/cca/templates/web/components/common/Wallet/Connected.tsx b/cca/templates/web/components/common/Wallet/Connected.tsx new file mode 100644 index 00000000..2347bc53 --- /dev/null +++ b/cca/templates/web/components/common/Wallet/Connected.tsx @@ -0,0 +1,88 @@ +import Image from 'next/image'; +import { Box, Icon, Text, useColorModeValue } from '@interchain-ui/react'; +import { FiLogOut } from 'react-icons/fi'; +import { ChainWalletBase } from '@cosmos-kit/core'; + +import { darkColors, lightColors } from '@/config'; +import { useCopyToClipboard } from '@/hooks'; +import { getWalletLogo, shortenAddress } from '@/utils'; + +export const Connected = ({ + selectedWallet, + clearSelectedWallet, +}: { + selectedWallet: ChainWalletBase; + clearSelectedWallet: () => void; +}) => { + const { walletInfo, disconnect, address } = selectedWallet; + + const { isCopied, copyToClipboard } = useCopyToClipboard(); + + const boxShadowColor = useColorModeValue( + lightColors?.blackAlpha200 as string, + darkColors?.blackAlpha200 as string + ); + + if (!address) return null; + + return ( + + + {walletInfo && ( + {walletInfo.prettyName} + )} + + {shortenAddress(address)} + + + copyToClipboard(address) }} + > + + + { + clearSelectedWallet(); + disconnect(); + }, + }} + > + + + + ); +}; diff --git a/cca/templates/web/components/common/Wallet/Connecting.tsx b/cca/templates/web/components/common/Wallet/Connecting.tsx new file mode 100644 index 00000000..66f38fee --- /dev/null +++ b/cca/templates/web/components/common/Wallet/Connecting.tsx @@ -0,0 +1,183 @@ +import Link from 'next/link'; +import Image from 'next/image'; +import { useMemo } from 'react'; +import { Box, Icon, Text, useColorModeValue } from '@interchain-ui/react'; +import { ChainWalletBase, WalletStatus } from '@cosmos-kit/core'; + +import { darkColors, lightColors } from '@/config'; +import { getWalletLogo } from '@/utils'; +import { RingLoader } from './RingLoader'; +import { Button } from '../Button'; + +export const Connecting = ({ + selectedWallet, + clearSelectedWallet, +}: { + selectedWallet: ChainWalletBase; + clearSelectedWallet: () => void; +}) => { + const { walletInfo, downloadInfo, message, walletStatus } = selectedWallet; + + const content = useMemo(() => { + if (walletStatus === WalletStatus.NotExist) { + return ( + <> + + {walletInfo.prettyName} Not Installed + {downloadInfo?.link && ( + + + + )} + + ); + } + + if (walletStatus === WalletStatus.Connecting) { + return ( + <> + + Requesting Connection + + ); + } + + if (walletStatus === WalletStatus.Rejected) { + return ( + <> + + Request Rejected + + ); + } + + return ( + <> + + Connection Error + {message && {message}} + + ); + }, [walletInfo, walletStatus, message]); + + const boxShadowColor = useColorModeValue( + lightColors?.blackAlpha200 as string, + darkColors?.blackAlpha200 as string + ); + + return ( + + + + + + + {walletInfo.prettyName} + + + + {content} + + ); +}; + +const StatusText = ({ children }: { children: React.ReactNode }) => { + return ( + + {children} + + ); +}; + +const StatusDescription = ({ children }: { children: React.ReactNode }) => { + return ( + + {children} + + ); +}; + +const WalletLogoWithRing = ({ + wallet, + intent, +}: { + wallet: ChainWalletBase['walletInfo']; + intent: 'connecting' | 'warning'; +}) => { + const isConnecting = intent === 'connecting'; + + return ( + + + {wallet.prettyName} + + {!isConnecting && ( + + + ! + + + )} + + ); +}; diff --git a/cca/templates/web/components/common/Wallet/RingLoader/RingLoader.tsx b/cca/templates/web/components/common/Wallet/RingLoader/RingLoader.tsx new file mode 100644 index 00000000..1a606b4d --- /dev/null +++ b/cca/templates/web/components/common/Wallet/RingLoader/RingLoader.tsx @@ -0,0 +1,60 @@ +import React, { ReactNode } from 'react'; +import styles from './ring.module.css'; + +interface RingLoaderProps { + angle?: number; + radius?: number; + strokeWidth?: number; + strokeColor?: string; + children?: ReactNode; + isSpinning?: boolean; +} + +export const RingLoader: React.FC = ({ + angle = 360, + radius = 50, + strokeWidth = 2, + strokeColor = 'currentColor', + children, + isSpinning = true, +}) => { + const circumference = 2 * Math.PI * radius; + const visibleStrokeLength = (angle / 360) * circumference; + const gapLength = circumference - visibleStrokeLength; + + return ( + + + {children && ( + +
+ {children} +
+
+ )} +
+ ); +}; diff --git a/cca/templates/web/components/common/Wallet/RingLoader/index.ts b/cca/templates/web/components/common/Wallet/RingLoader/index.ts new file mode 100644 index 00000000..4772eaa6 --- /dev/null +++ b/cca/templates/web/components/common/Wallet/RingLoader/index.ts @@ -0,0 +1 @@ +export * from './RingLoader'; diff --git a/cca/templates/web/components/common/Wallet/RingLoader/ring.module.css b/cca/templates/web/components/common/Wallet/RingLoader/ring.module.css new file mode 100644 index 00000000..374cad1c --- /dev/null +++ b/cca/templates/web/components/common/Wallet/RingLoader/ring.module.css @@ -0,0 +1,13 @@ +.ringLoader { + transform-origin: 50% 50%; + animation: rotate-ring 2s linear infinite; +} + +@keyframes rotate-ring { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/cca/templates/web/components/common/Wallet/SelectWallet.tsx b/cca/templates/web/components/common/Wallet/SelectWallet.tsx new file mode 100644 index 00000000..17a0a220 --- /dev/null +++ b/cca/templates/web/components/common/Wallet/SelectWallet.tsx @@ -0,0 +1,83 @@ +import Image from 'next/image'; +import { Dispatch, SetStateAction } from 'react'; +import { MainWalletBase, ChainWalletBase } from '@cosmos-kit/core'; +import { Box, Text, useColorModeValue } from '@interchain-ui/react'; +import { Keplr } from '@keplr-wallet/types'; + +import { darkColors, lightColors, wallets } from '@/config'; +import { getWalletLogo, makeKeplrChainInfo } from '@/utils'; +import { useChainStore } from '@/contexts'; + +export const SelectWallet = ({ + setSelectedWallet, +}: { + setSelectedWallet: Dispatch>; +}) => { + const { selectedChain } = useChainStore(); + + const handleSelectWallet = (wallet: MainWalletBase) => async () => { + const chainWallet = wallet.getChainWallet(selectedChain)!; + const { chain, assets, connect, client } = chainWallet; + const chainInfo = makeKeplrChainInfo(chain, assets[0]); + + try { + if (wallet.walletName.startsWith('keplr')) { + // @ts-ignore + await (client?.client as Keplr).experimentalSuggestChain(chainInfo); + } + connect(); + setTimeout(() => { + setSelectedWallet(chainWallet); + }, 100); + } catch (error) { + console.error(error); + } + }; + + const boxShadowColor = useColorModeValue( + lightColors?.blackAlpha200 as string, + darkColors?.blackAlpha200 as string + ); + + return ( + + {wallets.map((w) => ( + + + {w.walletPrettyName} + + {w.walletPrettyName} + + ))} + + ); +}; diff --git a/cca/templates/web/components/common/Wallet/WalletConnect.tsx b/cca/templates/web/components/common/Wallet/WalletConnect.tsx new file mode 100644 index 00000000..bb614e30 --- /dev/null +++ b/cca/templates/web/components/common/Wallet/WalletConnect.tsx @@ -0,0 +1,41 @@ +import { useState } from 'react'; +import { useChain } from '@cosmos-kit/react'; +import { ChainWalletBase } from '@cosmos-kit/core'; + +import { useChainStore } from '@/contexts'; +import { Connected } from './Connected'; +import { Connecting } from './Connecting'; +import { SelectWallet } from './SelectWallet'; +import { wallets } from '@/config'; + +export const WalletConnect = () => { + const { selectedChain } = useChainStore(); + const { wallet } = useChain(selectedChain); + + const currentWallet = wallets.find((w) => w.walletName === wallet?.name); + const chainWallet = currentWallet?.getChainWallet(selectedChain); + + const [selectedWallet, setSelectedWallet] = useState( + chainWallet?.isWalletConnected ? chainWallet : null + ); + + if (selectedWallet && selectedWallet.isWalletConnected) { + return ( + setSelectedWallet(null)} + /> + ); + } + + if (selectedWallet) { + return ( + setSelectedWallet(null)} + /> + ); + } + + return ; +}; diff --git a/cca/templates/web/components/common/Wallet/index.ts b/cca/templates/web/components/common/Wallet/index.ts new file mode 100644 index 00000000..18f63d3e --- /dev/null +++ b/cca/templates/web/components/common/Wallet/index.ts @@ -0,0 +1 @@ +export * from './WalletConnect'; diff --git a/cca/templates/web/components/common/index.tsx b/cca/templates/web/components/common/index.tsx new file mode 100644 index 00000000..ddec21e8 --- /dev/null +++ b/cca/templates/web/components/common/index.tsx @@ -0,0 +1,8 @@ +export * from './Layout'; +export * from './Button'; +export * from './Drawer'; +export * from './Wallet'; +export * from './Radio'; +export * from './Table'; +export * from './Provider'; +export * from './Stepper'; diff --git a/cca/templates/web/components/contract/AttachFundsRadio.tsx b/cca/templates/web/components/contract/AttachFundsRadio.tsx new file mode 100644 index 00000000..9ff34927 --- /dev/null +++ b/cca/templates/web/components/contract/AttachFundsRadio.tsx @@ -0,0 +1,148 @@ +import { useEffect, useMemo, useState } from 'react'; +import { Coin } from '@cosmjs/amino'; +import { Box } from '@interchain-ui/react'; +import { Asset } from '@chain-registry/types'; +import BigNumber from 'bignumber.js'; +import { TbCurrencyDollarOff } from 'react-icons/tb'; +import { LuListPlus } from 'react-icons/lu'; +import { VscJson } from 'react-icons/vsc'; + +import { JsonInput } from './JsonInput'; +import { SelectAssetContent } from './SelectAssetContent'; +import { getExponentFromAsset, prettifyJson } from '@/utils'; +import { Radio, RadioGroup } from '../common'; + +const defaultAssetListJson = prettifyJson( + JSON.stringify([{ denom: '', amount: '' }]), +); + +export type SelectedAssetWithAmount = { + asset: Asset | undefined; + amount: string; +}; + +export const defaultSelectedAsset: SelectedAssetWithAmount = { + asset: undefined, + amount: '', +}; + +export type FundsOptionKey = 'no_funds' | 'select_assets' | 'json_asset_list'; + +type FundsOption = { + key: FundsOptionKey; + icon: React.ReactNode; + label: string; + content: React.ReactNode; +}; + +type AttachFundsRadioProps = { + setFunds: (funds: Coin[]) => void; + setIsAssetListJsonValid: (isValid: boolean) => void; + direction?: 'row' | 'column'; +}; + +export const AttachFundsRadio = ({ + setFunds, + setIsAssetListJsonValid, + direction = 'row', +}: AttachFundsRadioProps) => { + const [selectedOptionKey, setSelectedOptionKey] = + useState('no_funds'); + const [assetListJson, setAssetListJson] = useState(defaultAssetListJson); + const [selectedAssetsWithAmount, setSelectedAssetsWithAmount] = useState< + SelectedAssetWithAmount[] + >([defaultSelectedAsset]); + + const fundsOptionsMap: Record = useMemo(() => { + return { + no_funds: { + key: 'no_funds', + label: 'No funds attached', + icon: , + content: null, + }, + select_assets: { + key: 'select_assets', + label: 'Select assets', + icon: , + content: ( + + ), + }, + json_asset_list: { + key: 'json_asset_list', + label: 'JSON asset list', + icon: , + content: ( + + ), + }, + }; + }, [selectedAssetsWithAmount, assetListJson]); + + useEffect(() => { + setIsAssetListJsonValid(true); + + if (selectedOptionKey === 'no_funds') { + setFunds([]); + } + + if (selectedOptionKey === 'select_assets') { + const funds = selectedAssetsWithAmount + .filter(({ asset, amount }) => asset && amount) + .map(({ asset, amount }) => ({ + denom: asset!.base, + amount: BigNumber(amount) + .shiftedBy(getExponentFromAsset(asset!) ?? 6) + .toString(), + })); + + setFunds(funds); + } + + if (selectedOptionKey === 'json_asset_list') { + try { + const parsedJson = JSON.parse(assetListJson); + setFunds(parsedJson); + } catch (e) { + setFunds([]); + setIsAssetListJsonValid(false); + } + } + }, [selectedOptionKey, selectedAssetsWithAmount, assetListJson]); + + const optionContent = fundsOptionsMap[selectedOptionKey].content; + + return ( + + { + setSelectedOptionKey(val as FundsOptionKey); + }} + > + {Object.values(fundsOptionsMap).map(({ key, label, icon }) => ( + + {label} + + ))} + + + {optionContent} + + ); +}; diff --git a/cca/templates/web/components/contract/BackButton.tsx b/cca/templates/web/components/contract/BackButton.tsx new file mode 100644 index 00000000..03f83193 --- /dev/null +++ b/cca/templates/web/components/contract/BackButton.tsx @@ -0,0 +1,22 @@ +import { Box, Icon, Text } from '@interchain-ui/react'; + +export const BackButton = ({ onClick }: { onClick: () => void }) => { + return ( + + + + Back + + + ); +}; diff --git a/cca/templates/web/components/contract/CodeIdField.tsx b/cca/templates/web/components/contract/CodeIdField.tsx new file mode 100644 index 00000000..3e294274 --- /dev/null +++ b/cca/templates/web/components/contract/CodeIdField.tsx @@ -0,0 +1,110 @@ +import { useEffect, useState } from 'react'; +import { Box, Icon, Spinner, TextField } from '@interchain-ui/react'; +import { useChain } from '@cosmos-kit/react'; + +import { InputField } from './InputField'; +import { useCodeDetails } from '@/hooks'; +import { useChainStore } from '@/contexts'; +import { CodeInfo, isValidCodeId, resolvePermission } from '@/utils'; + +export type InputStatus = { + state: 'init' | 'loading' | 'success' | 'error'; + message?: string; +}; + +export const CodeIdField = ({ + codeId, + setCodeId, + setCodeInfo, + readonly = false, + defaultCodeId, +}: { + codeId: string; + setCodeId: (codeId: string) => void; + setCodeInfo: (codeInfo: CodeInfo | undefined) => void; + readonly?: boolean; + defaultCodeId?: string; +}) => { + const [status, setStatus] = useState({ state: 'init' }); + + const { selectedChain } = useChainStore(); + const { address } = useChain(selectedChain); + const { refetch } = useCodeDetails(Number(codeId), false); + + useEffect(() => { + if (defaultCodeId) { + setCodeId(defaultCodeId); + } + }, [defaultCodeId]); + + useEffect(() => { + setStatus({ state: 'init' }); + setCodeInfo(undefined); + if (codeId.length) { + if (!isValidCodeId(codeId)) { + return setStatus({ state: 'error', message: 'Invalid Code ID' }); + } + + setStatus({ state: 'loading' }); + + const timer = setTimeout(() => { + refetch().then(({ data }) => { + setCodeInfo(data); + + if (!data) { + return setStatus({ + state: 'error', + message: 'This code ID does not exist', + }); + } + + const hasPermission = resolvePermission( + address || '', + data.permission, + data.addresses, + ); + + hasPermission + ? setStatus({ state: 'success' }) + : setStatus({ + state: 'error', + message: + 'This wallet does not have permission to instantiate this code', + }); + }); + }, 500); + + return () => clearTimeout(timer); + } + }, [codeId, refetch]); + + return ( + + + setCodeId(e.target.value)} + readonly={readonly} + /> + {codeId.length > 0 && ( + + {status.state === 'loading' && ( + + )} + {status.state === 'success' && ( + + )} + + )} + + + {status?.message || 'Enter the ID of an existing Code'} + + + ); +}; diff --git a/cca/templates/web/components/contract/ContractAddressField.tsx b/cca/templates/web/components/contract/ContractAddressField.tsx new file mode 100644 index 00000000..e5921a96 --- /dev/null +++ b/cca/templates/web/components/contract/ContractAddressField.tsx @@ -0,0 +1,187 @@ +import { useEffect, useRef, useState } from 'react'; +import { useChain } from '@cosmos-kit/react'; +import { + Box, + Combobox, + Icon, + Spinner, + Text, + TextProps, +} from '@interchain-ui/react'; + +import { InputField } from './InputField'; +import { useContractInfo, useDetectBreakpoints, useMyContracts } from '@/hooks'; +import { shortenAddress, validateContractAddress } from '@/utils'; +import { InputStatus } from './CodeIdField'; +import { useChainStore } from '@/contexts'; + +type StatusDisplay = { + icon?: React.ReactNode; + text?: string; + textColor?: TextProps['color']; +}; + +const displayStatus = (status: InputStatus) => { + const statusMap: Record = { + loading: { + icon: , + text: 'Checking contract address...', + textColor: '$textSecondary', + }, + + success: { + icon: , + text: 'Valid contract address', + textColor: '$text', + }, + + error: { + icon: , + text: status.message || 'Invalid contract address', + textColor: '$textDanger', + }, + + init: {}, + }; + + return statusMap[status.state]; +}; + +type ContractAddressFieldProps = { + addressValue?: string; + onAddressInput?: (input: string) => void; + onValidAddressChange?: (address: string) => void; +}; + +export const ContractAddressField = ({ + addressValue, + onAddressInput, + onValidAddressChange, +}: ContractAddressFieldProps) => { + const [input, setInput] = useState(''); + const [status, setStatus] = useState({ state: 'init' }); + const [fieldWidth, setFieldWidth] = useState('560px'); + const containerRef = useRef(null); + const prevInputRef = useRef(''); + + const { selectedChain } = useChainStore(); + const { chain } = useChain(selectedChain); + const { refetch: fetchContractInfo } = useContractInfo({ + contractAddress: input, + enabled: false, + }); + const { data: myContracts = [] } = useMyContracts(); + + useEffect(() => { + const updateWidth = () => { + const newWidth = containerRef.current?.clientWidth; + if (newWidth) { + setFieldWidth(`${newWidth}px`); + } + }; + + updateWidth(); + + const resizeObserver = new ResizeObserver(updateWidth); + if (containerRef.current) { + resizeObserver.observe(containerRef.current); + } + + return () => { + if (containerRef.current) { + resizeObserver.unobserve(containerRef.current); + } + resizeObserver.disconnect(); + }; + }, []); + + useEffect(() => { + if (!addressValue || prevInputRef.current === addressValue) return; + setInput(addressValue); + onAddressInput?.(addressValue); + }, [addressValue]); + + useEffect(() => { + if (prevInputRef.current === input) return; + + prevInputRef.current = input; + + setStatus({ state: 'init' }); + onValidAddressChange?.(''); + + if (input.length) { + const error = validateContractAddress(input, chain.bech32_prefix); + + if (error) { + return setStatus({ state: 'error', message: error }); + } + + setStatus({ state: 'loading' }); + + const timer = setTimeout(() => { + fetchContractInfo().then(({ data }) => { + if (!data) { + return setStatus({ + state: 'error', + message: 'This contract does not exist', + }); + } + + setStatus({ state: 'success' }); + onValidAddressChange?.(input); + }); + }, 500); + + return () => clearTimeout(timer); + } + }, [input, fetchContractInfo, chain.bech32_prefix]); + + const { icon, text, textColor } = displayStatus(status); + + const { isMobile } = useDetectBreakpoints(); + + return ( + + + { + setInput(input); + onAddressInput?.(input); + }} + onSelectionChange={(value) => { + if (value) { + setInput(value as string); + onAddressInput?.(value as string); + } + }} + styleProps={{ width: fieldWidth }} + > + {myContracts.map(({ address, contractInfo }) => ( + + + + {`${shortenAddress(address, isMobile ? 8 : 18)} (`} + + {`${contractInfo?.label || 'Unnamed'}`} + + {')'} + + + + ))} + + {status.state !== 'init' && ( + + {icon} + + {text} + + + )} + + + ); +}; diff --git a/cca/templates/web/components/contract/CreateFromCodeId.tsx b/cca/templates/web/components/contract/CreateFromCodeId.tsx new file mode 100644 index 00000000..c58d54a4 --- /dev/null +++ b/cca/templates/web/components/contract/CreateFromCodeId.tsx @@ -0,0 +1,28 @@ +import { Box } from '@interchain-ui/react'; + +import { BackButton } from './BackButton'; +import { InstantiateContract } from './InstantiateContract'; +import { useDetectBreakpoints } from '@/hooks'; + +type CreateFromCodeIdProps = { + onBack: () => void; + switchTab: (addressValue: string, tabId: number) => void; +}; + +export const CreateFromCodeId = ({ + onBack, + switchTab, +}: CreateFromCodeIdProps) => { + const { isTablet } = useDetectBreakpoints(); + + return ( + + + + + + + + + ); +}; diff --git a/cca/templates/web/components/contract/CreateFromUpload.tsx b/cca/templates/web/components/contract/CreateFromUpload.tsx new file mode 100644 index 00000000..2d3eefcf --- /dev/null +++ b/cca/templates/web/components/contract/CreateFromUpload.tsx @@ -0,0 +1,83 @@ +import { useState } from 'react'; +import { Box } from '@interchain-ui/react'; + +import { UploadContract } from './UploadContract'; +import { BackButton } from './BackButton'; +import { Stepper } from '../common'; +import { InstantiateContract } from './InstantiateContract'; +import { useDetectBreakpoints } from '@/hooks'; + +type CreateFromUploadProps = { + onBack: () => void; + switchTab: (addressValue: string, tabId: number) => void; +}; + +enum Step { + Upload = 'Upload', + Instantiate = 'Instantiate', +} + +const steps = [Step.Upload, Step.Instantiate]; + +export const CreateFromUpload = ({ + onBack, + switchTab, +}: CreateFromUploadProps) => { + const [activeStepName, setActiveStepName] = useState(Step.Upload); + const [completed, setCompleted] = useState(false); + const [codeId, setCodeId] = useState(); + + const nextStep = () => { + const currentIndex = steps.indexOf(activeStepName); + if (currentIndex < steps.length - 1) { + setActiveStepName(steps[currentIndex + 1]); + } else { + setCompleted(true); + } + }; + + const { isTablet } = useDetectBreakpoints(); + + return ( + + + + + + + + + { + setCodeId(codeId); + nextStep(); + }} + /> + { + setCompleted(false); + setActiveStepName(Step.Upload); + }} + onViewMyContracts={onBack} + /> + + + ); +}; diff --git a/cca/templates/web/components/contract/EmptyState.tsx b/cca/templates/web/components/contract/EmptyState.tsx new file mode 100644 index 00000000..eab98f75 --- /dev/null +++ b/cca/templates/web/components/contract/EmptyState.tsx @@ -0,0 +1,17 @@ +import Image from 'next/image'; +import { Box, Text } from '@interchain-ui/react'; + +export const EmptyState = ({ text }: { text: string }) => ( + + empty + + {text} + + +); diff --git a/cca/templates/web/components/contract/ExecuteTab.tsx b/cca/templates/web/components/contract/ExecuteTab.tsx new file mode 100644 index 00000000..6b7b1e3c --- /dev/null +++ b/cca/templates/web/components/contract/ExecuteTab.tsx @@ -0,0 +1,121 @@ +import { useMemo, useState } from 'react'; +import { Box, Text } from '@interchain-ui/react'; +import { Coin } from '@cosmjs/amino'; + +import { ContractAddressField } from './ContractAddressField'; +import { InputField } from './InputField'; +import { JsonInput } from './JsonInput'; +import { AttachFundsRadio } from './AttachFundsRadio'; +import { Button } from '../common'; +import { useChainStore } from '@/contexts'; +import { + useConnectChain, + useDetectBreakpoints, + useExecuteContractTx, +} from '@/hooks'; +import { validateJson } from '@/utils'; + +const INPUT_LINES = 12; + +type ExecuteTabProps = { + show: boolean; + addressValue: string; + onAddressInput: (input: string) => void; +}; + +export const ExecuteTab = ({ + show, + addressValue, + onAddressInput, +}: ExecuteTabProps) => { + const [contractAddress, setContractAddress] = useState(''); + const [isLoading, setIsLoading] = useState(false); + const [executeMsg, setExecuteMsg] = useState(''); + const [funds, setFunds] = useState([]); + const [isAssetListJsonValid, setIsAssetListJsonValid] = useState(true); + + const { selectedChain } = useChainStore(); + const { address, connect } = useConnectChain(selectedChain); + const { executeTx } = useExecuteContractTx(selectedChain); + + const handleExecuteMsg = () => { + if (!address) { + connect(); + return; + } + + setIsLoading(true); + + executeTx({ + msg: JSON.parse(executeMsg), + address, + contractAddress, + fee: { amount: [], gas: '200000' }, + funds, + onTxSucceed: () => setIsLoading(false), + onTxFailed: () => setIsLoading(false), + }); + }; + + const isMsgValid = validateJson(executeMsg) === null; + + const buttonText = useMemo(() => { + if (!address) return 'Connect Wallet'; + return 'Execute'; + }, [address]); + + const isButtonDisabled = useMemo(() => { + if (!address) return false; + return !contractAddress || !isMsgValid || !isAssetListJsonValid; + }, [address, contractAddress, isMsgValid, isAssetListJsonValid]); + + const { isMobile } = useDetectBreakpoints(); + + return ( + + + Execute Contract + + + + + + + + + + + ); +}; diff --git a/cca/templates/web/components/contract/InputField.tsx b/cca/templates/web/components/contract/InputField.tsx new file mode 100644 index 00000000..06baf801 --- /dev/null +++ b/cca/templates/web/components/contract/InputField.tsx @@ -0,0 +1,47 @@ +import { Box, Text } from '@interchain-ui/react'; + +const InputField = ({ + children, + title, + required = false, +}: { + title: string; + children: React.ReactNode; + required?: boolean; +}) => { + return ( + + + {title}{' '} + {required && ( + + * + + )} + + {children} + + ); +}; + +const Description = ({ + children, + intent = 'default', +}: { + children: string; + intent?: 'error' | 'default'; +}) => { + return ( + + {children} + + ); +}; + +InputField.Description = Description; + +export { InputField }; diff --git a/cca/templates/web/components/contract/InstantiateContract.tsx b/cca/templates/web/components/contract/InstantiateContract.tsx new file mode 100644 index 00000000..0e07bd1d --- /dev/null +++ b/cca/templates/web/components/contract/InstantiateContract.tsx @@ -0,0 +1,331 @@ +import { useState } from 'react'; +import { + Box, + Divider, + Text, + TextField, + TextFieldAddon, +} from '@interchain-ui/react'; +import { Coin } from '@cosmjs/stargate'; +import { IoChevronDown } from 'react-icons/io5'; +import { useChain } from '@cosmos-kit/react'; +import { InstantiateResult } from '@cosmjs/cosmwasm-stargate'; + +import { CodeIdField } from './CodeIdField'; +import { + CodeInfo, + formatTxFee, + resolvePermission, + shortenAddress, + validateChainAddress, +} from '@/utils'; +import { InputField } from './InputField'; +import { JsonInput } from './JsonInput'; +import { useChainStore } from '@/contexts'; +import { AttachFundsRadio } from './AttachFundsRadio'; +import { Button } from '../common'; +import { + useDetectBreakpoints, + useInstantiateTx, + useMyContracts, +} from '@/hooks'; +import { TxInfoItem, TxSuccessDisplay } from './TxSuccessDisplay'; +import { TabLabel } from '@/pages/contract'; +import styles from '@/styles/comp.module.css'; + +type InstantiateContractProps = { + show?: boolean; + switchTab?: (addressValue: string, tabId: number) => void; + onSuccess?: () => void; + defaultCodeId?: string; + onCreateNewContract?: () => void; + onViewMyContracts?: () => void; +}; + +export const InstantiateContract = ({ + show = true, + onSuccess, + switchTab, + defaultCodeId, + onCreateNewContract, + onViewMyContracts, +}: InstantiateContractProps) => { + const [codeId, setCodeId] = useState(''); + const [codeInfo, setCodeInfo] = useState(); + const [label, setLabel] = useState(''); + const [initMsg, setInitMsg] = useState(''); + const [adminAddress, setAdminAddress] = useState(''); + const [funds, setFunds] = useState([]); + const [isAssetListJsonValid, setIsAssetListJsonValid] = useState(true); + const [isShowMore, setIsShowMore] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const [txResult, setTxResult] = useState(); + + const { selectedChain } = useChainStore(); + const { address, chain, assets } = useChain(selectedChain); + const { instantiateTx } = useInstantiateTx(selectedChain); + const { refetch: updateMyContracts } = useMyContracts(); + + const handleInstantiate = () => { + if (!address || !codeInfo) return; + + setIsLoading(true); + + instantiateTx({ + address, + codeId: codeInfo.id, + initMsg: JSON.parse(initMsg), + label, + admin: adminAddress, + funds, + onTxSucceed: (txInfo) => { + setIsLoading(false); + setTxResult(txInfo); + updateMyContracts(); + onSuccess?.(); + }, + onTxFailed: () => { + setIsLoading(false); + }, + }); + }; + + const resetStates = () => { + setCodeId(''); + setCodeInfo(undefined); + setLabel(''); + setAdminAddress(''); + setInitMsg(''); + setFunds([]); + setTxResult(undefined); + }; + + const adminInputErr = + adminAddress && validateChainAddress(adminAddress, chain.bech32_prefix); + + const canInstantiate = + !!address && + !!codeInfo && + resolvePermission(address, codeInfo.permission, codeInfo.addresses); + + const isButtonDisabled = + !label || + !initMsg || + !isAssetListJsonValid || + !canInstantiate || + !!adminInputErr; + + const { isMobile } = useDetectBreakpoints(); + + if (txResult) { + const txFee = + txResult.events.find((e) => e.type === 'tx')?.attributes[0].value ?? ''; + + const infoItems: TxInfoItem[] = [ + { + label: 'Tx Hash', + value: shortenAddress(txResult.transactionHash), + copyValue: txResult.transactionHash, + showCopy: true, + }, + { + label: 'Contract Address', + value: shortenAddress(txResult.contractAddress), + copyValue: txResult.contractAddress, + showCopy: true, + }, + { + label: 'Tx Fee', + value: formatTxFee(txFee, assets!), + }, + ]; + + return ( + + + + + +
+ } + /> + ); + } + + return ( + + + Instantiate Contract + + + + + + setLabel(e.target.value)} + autoComplete="off" + readonly={isLoading} + /> + + Provide a short description of the contract's purpose and + functionality. + + + + + + + + {isShowMore && ( + + + + More Settings + + + + )} + + + + setAdminAddress(e.target.value)} + autoComplete="off" + inputClassName={styles['input-pr']} + endAddon={ + + + + + + } + /> + + {adminInputErr || + 'The contract admin can transfer ownership and perform future upgrades.'} + + + + + + + + + + + + + ); +}; diff --git a/cca/templates/web/components/contract/InstantiatePermissionRadio.tsx b/cca/templates/web/components/contract/InstantiatePermissionRadio.tsx new file mode 100644 index 00000000..3b7173e9 --- /dev/null +++ b/cca/templates/web/components/contract/InstantiatePermissionRadio.tsx @@ -0,0 +1,156 @@ +import { useEffect } from 'react'; +import { Box, Text, TextField } from '@interchain-ui/react'; +import { HiOutlineTrash } from 'react-icons/hi'; +import { LuPlus } from 'react-icons/lu'; +import { cosmwasm } from 'interchain-query'; +import { useChain } from '@cosmos-kit/react'; +import { GrGroup } from 'react-icons/gr'; +import { MdOutlineHowToVote } from 'react-icons/md'; +import { MdChecklistRtl } from 'react-icons/md'; + +import { Button, Radio, RadioGroup } from '../common'; +import { InputField } from './InputField'; +import { validateChainAddress } from '@/utils'; +import { useChainStore } from '@/contexts'; + +export const AccessType = cosmwasm.wasm.v1.AccessType; + +export type Permission = (typeof AccessType)[keyof typeof AccessType]; + +export type Address = { + value: string; + isValid?: boolean; + errorMsg?: string | null; +}; + +type Props = { + addresses: Address[]; + permission: Permission; + setAddresses: (addresses: Address[]) => void; + setPermission: (permission: Permission) => void; + direction?: 'row' | 'column'; +}; + +export const InstantiatePermissionRadio = ({ + addresses, + permission, + setAddresses, + setPermission, + direction = 'row', +}: Props) => { + const { selectedChain } = useChainStore(); + const { chain } = useChain(selectedChain); + + const onAddAddress = () => { + setAddresses([...addresses, { value: '' }]); + }; + + const onDeleteAddress = (index: number) => { + const newAddresses = [...addresses]; + newAddresses.splice(index, 1); + setAddresses(newAddresses); + }; + + const onAddressChange = (value: string, index: number) => { + const newAddresses = [...addresses]; + newAddresses[index].value = value; + setAddresses(newAddresses); + }; + + useEffect(() => { + if (permission !== AccessType.ACCESS_TYPE_ANY_OF_ADDRESSES) return; + + const newAddresses = addresses.map((addr, index) => { + const isDuplicate = + addresses.findIndex((a) => a.value === addr.value) !== index; + + const errorMsg = isDuplicate + ? 'Address already exists' + : validateChainAddress(addr.value, chain.bech32_prefix); + + return { + ...addr, + isValid: !!addr.value && !errorMsg, + errorMsg: addr.value ? errorMsg : null, + }; + }); + + setAddresses(newAddresses); + }, [JSON.stringify(addresses.map((addr) => addr.value))]); + + return ( + <> + { + setPermission(Number(val) as Permission); + }} + > + } + value={AccessType.ACCESS_TYPE_EVERYBODY.toString()} + > + Everybody + + } + value={AccessType.ACCESS_TYPE_NOBODY.toString()} + > + Governance only + + } + value={AccessType.ACCESS_TYPE_ANY_OF_ADDRESSES.toString()} + > + Approved addresses + + + + {permission === AccessType.ACCESS_TYPE_ANY_OF_ADDRESSES && ( + + {addresses.map(({ value, errorMsg }, index) => ( + + + onAddressChange(e.target.value, index)} + attributes={{ width: '100%' }} + intent={errorMsg ? 'error' : 'default'} + autoComplete="off" + /> + {errorMsg && ( + + {errorMsg} + + )} + + + + )} + + ); +}; diff --git a/cca/templates/web/components/contract/JsonEditor.tsx b/cca/templates/web/components/contract/JsonEditor.tsx new file mode 100644 index 00000000..570a38cb --- /dev/null +++ b/cca/templates/web/components/contract/JsonEditor.tsx @@ -0,0 +1,71 @@ +import AceEditor from 'react-ace'; +import { useTheme } from '@interchain-ui/react'; +import 'ace-builds/src-noconflict/ace'; +import 'ace-builds/src-noconflict/mode-json'; +import 'ace-builds/src-noconflict/theme-textmate'; +import 'ace-builds/src-noconflict/theme-cloud9_night'; + +import { darkColors } from '@/config'; + +type JsonEditorProps = { + value: string; + lines: number; + setValue?: (value: string) => void; + readOnly?: boolean; + isValid?: boolean; + enableFolding?: boolean; +}; + +export const JsonEditor = ({ + value, + setValue, + lines, + readOnly = false, + isValid = true, + enableFolding = false, +}: JsonEditorProps) => { + const { theme } = useTheme(); + + const trackColor = darkColors!.blackAlpha50; + const thumbColor = darkColors!.blackAlpha400; + + const editorStyle: React.CSSProperties = { + width: '100%', + background: 'transparent', + offset: 0, + ...(theme === 'dark' && { + scrollbarColor: `${thumbColor} ${trackColor}`, + '&::-webkit-scrollbar-track': { + background: trackColor, + }, + '&::-webkit-scrollbar-thumb': { + background: thumbColor, + }, + }), + }; + + return ( + + ); +}; diff --git a/cca/templates/web/components/contract/JsonInput.tsx b/cca/templates/web/components/contract/JsonInput.tsx new file mode 100644 index 00000000..7e3428c2 --- /dev/null +++ b/cca/templates/web/components/contract/JsonInput.tsx @@ -0,0 +1,128 @@ +import { useEffect, useMemo, useState } from 'react'; +import { + Box, + BoxProps, + Spinner, + Text, + TextProps, + Icon, +} from '@interchain-ui/react'; + +import { Button } from '@/components'; +import { countJsonLines, prettifyJson, validateJson } from '@/utils'; +import { JsonEditor } from './JsonEditor'; + +type JsonDisplay = { + icon?: React.ReactNode; + text?: string; + textColor?: TextProps['color']; +}; + +const displayJsonState = (jsonState: JsonState) => { + const jsonStateMap: Record = { + loading: { + icon: , + text: 'Checking JSON Format...', + textColor: '$textSecondary', + }, + + success: { + icon: , + text: 'Valid JSON Format', + textColor: '$text', + }, + + error: { + icon: , + text: jsonState.errMsg || 'Invalid JSON Format', + textColor: '$textDanger', + }, + + empty: {}, + }; + + return jsonStateMap[jsonState.state]; +}; + +interface JsonState { + state: 'empty' | 'loading' | 'success' | 'error'; + errMsg?: string; +} + +type JsonInputProps = { + value: string; + setValue: (value: string) => void; + minLines?: number; +} & Pick; + +export const JsonInput = ({ + value = '', + setValue, + minLines = 16, + ...rest +}: JsonInputProps) => { + const [jsonState, setJsonState] = useState({ state: 'empty' }); + + const handleChange = (val: string) => { + setJsonState({ state: 'loading' }); + setValue(val); + }; + + useEffect(() => { + const timeoutId = setTimeout(() => { + const error = validateJson(value); + + if (value.trim().length === 0) setJsonState({ state: 'empty' }); + else if (error) setJsonState({ state: 'error', errMsg: error }); + else setJsonState({ state: 'success' }); + }, 400); + + return () => clearTimeout(timeoutId); + }, [value]); + + const { icon, text, textColor } = displayJsonState(jsonState); + const isValidJson = validateJson(value) === null; + + const lines = useMemo(() => { + return Math.max(countJsonLines(value), minLines); + }, [value]); + + return ( + + + + + + {jsonState.state !== 'empty' && ( + + {icon} + + {text} + + + )} + + ); +}; diff --git a/cca/templates/web/components/contract/MyContractsTab.tsx b/cca/templates/web/components/contract/MyContractsTab.tsx new file mode 100644 index 00000000..5e2d3b74 --- /dev/null +++ b/cca/templates/web/components/contract/MyContractsTab.tsx @@ -0,0 +1,62 @@ +import { useState } from 'react'; +import { Box } from '@interchain-ui/react'; + +import { Button } from '../common'; +import { PopoverSelect } from './PopoverSelect'; +import { MyContractsTable } from './MyContractsTable'; +import { CreateFromUpload } from './CreateFromUpload'; +import { CreateFromCodeId } from './CreateFromCodeId'; + +const ContentViews = { + MY_CONTRACTS: 'my_contracts', + CREATE_FROM_UPLOAD: 'create_from_upload', + CREATE_FROM_CODE_ID: 'create_from_code_id', +} as const; + +type ContentView = typeof ContentViews[keyof typeof ContentViews]; + +const contractCreationOptions = [ + { label: 'From Upload', value: ContentViews.CREATE_FROM_UPLOAD }, + { label: 'From Code ID', value: ContentViews.CREATE_FROM_CODE_ID }, +]; + +type MyContractsTabProps = { + show: boolean; + switchTab: (addressValue: string, tabId: number) => void; +}; + +export const MyContractsTab = ({ show, switchTab }: MyContractsTabProps) => { + const [contentView, setContentView] = useState( + ContentViews.MY_CONTRACTS + ); + + return ( + + Create Contract} + options={contractCreationOptions} + onOptionClick={(value) => setContentView(value as ContentView)} + popoverWidth="152px" + /> + } + /> + {contentView === ContentViews.CREATE_FROM_UPLOAD && ( + setContentView(ContentViews.MY_CONTRACTS)} + /> + )} + {contentView === ContentViews.CREATE_FROM_CODE_ID && ( + setContentView(ContentViews.MY_CONTRACTS)} + /> + )} + + ); +}; diff --git a/cca/templates/web/components/contract/MyContractsTable.tsx b/cca/templates/web/components/contract/MyContractsTable.tsx new file mode 100644 index 00000000..e10663d2 --- /dev/null +++ b/cca/templates/web/components/contract/MyContractsTable.tsx @@ -0,0 +1,188 @@ +import { useMemo, useState } from 'react'; +import { useChain } from '@cosmos-kit/react'; +import { Box, Icon, Spinner, Text, TextField } from '@interchain-ui/react'; + +import { + useCopyToClipboard, + useDetectBreakpoints, + useMyContracts, +} from '@/hooks'; +import { Button, Table } from '../common'; +import { shortenAddress } from '@/utils'; +import { TabLabel } from '@/pages/contract'; +import { EmptyState } from './EmptyState'; +import { useChainStore } from '@/contexts'; +import styles from '@/styles/comp.module.css'; + +type MyContractsTableProps = { + show: boolean; + switchTab: (addressValue: string, tabId: number) => void; + title?: string; + createContractTrigger?: React.ReactNode; +}; + +export const MyContractsTable = ({ + show, + switchTab, + title, + createContractTrigger, +}: MyContractsTableProps) => { + const [searchValue, setSearchValue] = useState(''); + + const { selectedChain } = useChainStore(); + const { address } = useChain(selectedChain); + const { data: myContracts = [], isLoading } = useMyContracts(); + + const filteredContracts = useMemo(() => { + return myContracts.filter(({ address, contractInfo }) => + [address, contractInfo?.label, contractInfo?.codeId.toString()].some( + (value) => + value && value.toLowerCase().includes(searchValue.toLowerCase()), + ), + ); + }, [myContracts, searchValue]); + + const { isSmMobile } = useDetectBreakpoints(); + + return ( + + + {title} + + + + + setSearchValue(e.target.value)} + placeholder="Search" + autoComplete="off" + inputClassName={styles['input-pl']} + /> + + {createContractTrigger} + + + {!address ? ( + + ) : isLoading ? ( + + ) : myContracts.length === 0 ? ( + + ) : filteredContracts.length === 0 ? ( + + ) : ( + + + + + + Contract Address + + Contract Name + Code ID + + + + + {filteredContracts.map(({ address, contractInfo }) => ( + + + + + {contractInfo?.label} + + {Number(contractInfo?.codeId)} + + + + + + + + + ))} + +
+
+ )} +
+
+ ); +}; + +const CopyText = ({ + copyValue, + displayValue, +}: { + displayValue: string; + copyValue: string; +}) => { + const [isHover, setIsHover] = useState(false); + const { copyToClipboard, isCopied } = useCopyToClipboard(); + + return ( + setIsHover(true), + onMouseLeave: () => setIsHover(false), + onClick: () => copyToClipboard(copyValue), + }} + > + + {displayValue} + + {isHover && ( + + + + )} + + ); +}; diff --git a/cca/templates/web/components/contract/PopoverSelect.tsx b/cca/templates/web/components/contract/PopoverSelect.tsx new file mode 100644 index 00000000..cbd6d985 --- /dev/null +++ b/cca/templates/web/components/contract/PopoverSelect.tsx @@ -0,0 +1,112 @@ +import { useState } from 'react'; +import { + Box, + Popover, + PopoverContent, + PopoverTrigger, + Text, + useColorModeValue, + useTheme, +} from '@interchain-ui/react'; + +import { useDetectBreakpoints } from '@/hooks'; + +type Option = { + label: string; + value: string; +}; + +type PopoverSelectProps = { + trigger: React.ReactNode; + options: Option[]; + onOptionClick: (value: string) => void; + popoverWidth?: string; +}; + +export const PopoverSelect = ({ + trigger, + options, + onOptionClick, + popoverWidth = '100%', +}: PopoverSelectProps) => { + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + + const { theme } = useTheme(); + const { isMobile } = useDetectBreakpoints(); + + return ( + + {trigger} + + + {options.map((p) => ( + { + onOptionClick(p.value); + setIsPopoverOpen(false); + }} + > + {p.label} + + ))} + + + + ); +}; + +const CustomOption = ({ + children, + onClick, +}: { + children: React.ReactNode; + onClick: () => void; +}) => { + return ( + + + {children} + + + ); +}; diff --git a/cca/templates/web/components/contract/QueryTab.tsx b/cca/templates/web/components/contract/QueryTab.tsx new file mode 100644 index 00000000..7731f3e6 --- /dev/null +++ b/cca/templates/web/components/contract/QueryTab.tsx @@ -0,0 +1,128 @@ +import { useMemo, useRef, useState } from 'react'; +import { Box, Text } from '@interchain-ui/react'; + +import { ContractAddressField } from './ContractAddressField'; +import { InputField } from './InputField'; +import { JsonInput } from './JsonInput'; +import { Button } from '../common'; +import { JsonEditor } from './JsonEditor'; +import { useQueryContract } from '@/hooks'; +import { countJsonLines, validateJson } from '@/utils'; + +const INPUT_LINES = 12; +const OUTPUT_LINES = 12; + +type QueryTabProps = { + show: boolean; + addressValue: string; + onAddressInput: (input: string) => void; +}; + +export const QueryTab = ({ + show, + addressValue, + onAddressInput, +}: QueryTabProps) => { + const [contractAddress, setContractAddress] = useState(''); + const [queryMsg, setQueryMsg] = useState(''); + + const { + data: queryResult, + refetch: queryContract, + error: queryContractError, + isFetching, + } = useQueryContract({ + contractAddress, + queryMsg, + enabled: false, + }); + + const prevResultRef = useRef(''); + + const res = useMemo(() => { + if (isFetching) { + return prevResultRef.current; + } else { + const newResult = queryResult + ? JSON.stringify(queryResult, null, 2) + : queryContractError + ? (queryContractError as Error)?.message || 'Unknown error' + : ''; + + prevResultRef.current = newResult; + + return newResult; + } + }, [isFetching]); + + const isJsonValid = useMemo(() => { + return validateJson(res) === null || res.length === 0; + }, [res]); + + const lines = useMemo(() => { + return Math.max(OUTPUT_LINES, countJsonLines(res)); + }, [res]); + + const isMsgValid = validateJson(queryMsg) === null; + + const isQueryButtonDisabled = !contractAddress || !isMsgValid; + + return ( + + + Query Contract + + + + + + + + + + + + + ); +}; diff --git a/cca/templates/web/components/contract/SelectAssetContent.tsx b/cca/templates/web/components/contract/SelectAssetContent.tsx new file mode 100644 index 00000000..0a147130 --- /dev/null +++ b/cca/templates/web/components/contract/SelectAssetContent.tsx @@ -0,0 +1,72 @@ +import { Dispatch, SetStateAction, useMemo } from 'react'; +import { assets } from 'chain-registry'; +import { LuPlus } from 'react-icons/lu'; + +import { + defaultSelectedAsset, + SelectedAssetWithAmount, +} from './AttachFundsRadio'; +import { Button } from '@/components'; +import { SelectAssetItem } from './SelectAssetItem'; +import { useChainStore } from '@/contexts'; + +type SelectAssetContentProps = { + selectedAssetsWithAmount: SelectedAssetWithAmount[]; + setSelectedAssetsWithAmount: Dispatch< + SetStateAction + >; +}; + +export const SelectAssetContent = ({ + selectedAssetsWithAmount, + setSelectedAssetsWithAmount, +}: SelectAssetContentProps) => { + const { selectedChain } = useChainStore(); + + const nativeAssets = useMemo(() => { + return ( + assets + .find(({ chain_name }) => chain_name === selectedChain) + ?.assets.filter( + ({ type_asset, base }) => + type_asset !== 'cw20' && + type_asset !== 'ics20' && + !base.startsWith('factory/'), + ) || [] + ); + }, [selectedChain]); + + const selectedSymbols = selectedAssetsWithAmount + .map(({ asset }) => asset?.symbol) + .filter(Boolean) as string[]; + + const handleAddAssets = () => { + setSelectedAssetsWithAmount((prev) => [...prev, defaultSelectedAsset]); + }; + + return ( + <> + {selectedAssetsWithAmount.map((assetWithAmount, index) => ( + + ))} + + + + ); +}; diff --git a/cca/templates/web/components/contract/SelectAssetItem.tsx b/cca/templates/web/components/contract/SelectAssetItem.tsx new file mode 100644 index 00000000..39171966 --- /dev/null +++ b/cca/templates/web/components/contract/SelectAssetItem.tsx @@ -0,0 +1,199 @@ +import { Dispatch, SetStateAction, useState } from 'react'; +import { HiOutlineTrash } from 'react-icons/hi'; +import { Asset } from '@chain-registry/types'; +import { + Avatar, + Box, + NumberField, + Popover, + PopoverContent, + PopoverTrigger, + SelectButton, + Text, + useColorModeValue, + useTheme, +} from '@interchain-ui/react'; + +import { Button } from '@/components'; +import { SelectedAssetWithAmount } from './AttachFundsRadio'; +import { useDetectBreakpoints } from '@/hooks'; + +type SelectAssetItemProps = { + itemIndex: number; + allAssets: Asset[]; + selectedSymbols: string[]; + disableTrashButton: boolean; + selectedAssetWithAmount: SelectedAssetWithAmount; + setSelectedAssetsWithAmount: Dispatch< + SetStateAction + >; +}; + +export const SelectAssetItem = ({ + itemIndex, + allAssets, + selectedSymbols, + disableTrashButton, + selectedAssetWithAmount, + setSelectedAssetsWithAmount, +}: SelectAssetItemProps) => { + const [isOpen, setIsOpen] = useState(false); + + const handleSelectAsset = (asset: Asset, index: number) => () => { + setSelectedAssetsWithAmount((prev) => { + const newFunds = [...prev]; + newFunds[index] = { + ...newFunds[index], + asset, + }; + return newFunds; + }); + setIsOpen(false); + }; + + const handleAmountInput = ( + e: React.ChangeEvent, + index: number, + ) => { + const amount = e.target.value; + setSelectedAssetsWithAmount((prev) => { + const newFunds = [...prev]; + newFunds[index] = { ...newFunds[index], amount }; + return newFunds; + }); + }; + + const handleDeleteAsset = (index: number) => () => { + setSelectedAssetsWithAmount((prev) => { + const newFunds = [...prev]; + newFunds.splice(index, 1); + return newFunds; + }); + }; + + const { theme } = useTheme(); + const { isMobile } = useDetectBreakpoints(); + + return ( + + + + Asset + + {/* @ts-ignore */} + + + {}} + placeholder={selectedAssetWithAmount?.asset?.symbol ?? 'Select'} + _css={{ width: isMobile ? '100px' : '140px' }} + /> + + + + {allAssets.map((asset) => ( + + ))} + + + + + + + + Amount + + handleAmountInput(e as any, itemIndex)} + /> + + + + + ); +}; diff --git a/cca/templates/web/components/contract/WasmFileUploader.tsx b/cca/templates/web/components/contract/WasmFileUploader.tsx new file mode 100644 index 00000000..d07687bf --- /dev/null +++ b/cca/templates/web/components/contract/WasmFileUploader.tsx @@ -0,0 +1,140 @@ +import Image from 'next/image'; +import { useCallback, useMemo } from 'react'; +import { + Box, + Text, + useTheme, + useColorModeValue, + ThemeVariant, +} from '@interchain-ui/react'; +import { HiOutlineTrash } from 'react-icons/hi'; +import { useDropzone } from 'react-dropzone'; + +import { bytesToKb } from '@/utils'; + +const MAX_FILE_SIZE = 800_000; + +const getDefaultFileInfo = (theme: ThemeVariant) => ({ + image: { + src: theme === 'light' ? '/images/upload.svg' : '/images/upload-dark.svg', + alt: 'upload', + width: 80, + height: 48, + }, + title: 'Upload or drag .wasm file here', + description: `Max file size: ${bytesToKb(MAX_FILE_SIZE)}KB`, +}); + +type WasmFileUploaderProps = { + file: File | null; + setFile: (file: File | null) => void; +}; + +export const WasmFileUploader = ({ file, setFile }: WasmFileUploaderProps) => { + const { theme } = useTheme(); + + const onDrop = useCallback( + (files: File[]) => { + setFile(files[0]); + }, + [setFile], + ); + + const fileInfo = useMemo(() => { + if (!file) return getDefaultFileInfo(theme); + + return { + image: { + src: + theme === 'light' + ? '/images/contract-file.svg' + : '/images/contract-file-dark.svg', + alt: 'contract-file', + width: 40, + height: 54, + }, + title: file.name, + description: `File size: ${bytesToKb(file.size)}KB`, + }; + }, [file, theme]); + + const { getRootProps, getInputProps } = useDropzone({ + onDrop, + multiple: false, + accept: { 'application/octet-stream': ['.wasm'] }, + maxSize: MAX_FILE_SIZE, + }); + + return ( +
+ + {!file && } + + {fileInfo.image.alt} + + + {fileInfo.title} + + + {fileInfo.description} + + + + {file && ( + setFile(null) }} + > + + + Remove + + + )} + +
+ ); +}; diff --git a/cca/templates/web/components/contract/index.ts b/cca/templates/web/components/contract/index.ts new file mode 100644 index 00000000..1848e3e4 --- /dev/null +++ b/cca/templates/web/components/contract/index.ts @@ -0,0 +1,3 @@ +export * from './QueryTab'; +export * from './ExecuteTab'; +export * from './MyContractsTab'; diff --git a/cca/templates/web/components/index.ts b/cca/templates/web/components/index.ts new file mode 100644 index 00000000..06644b05 --- /dev/null +++ b/cca/templates/web/components/index.ts @@ -0,0 +1,4 @@ +export * from './common'; +export * from './staking'; +export * from './voting'; +export * from './contract'; diff --git a/cca/templates/web/components/staking/AllValidators.tsx b/cca/templates/web/components/staking/AllValidators.tsx new file mode 100644 index 00000000..ca21669b --- /dev/null +++ b/cca/templates/web/components/staking/AllValidators.tsx @@ -0,0 +1,66 @@ +import { useState } from 'react'; +import { Text } from '@interchain-ui/react'; +import { ChainName } from 'cosmos-kit'; + +import { DelegateModal } from './DelegateModal'; +import AllValidatorsList from './AllValidatorsList'; +import { Prices, useDisclosure } from '@/hooks'; +import { type ExtendedValidator as Validator } from '@/utils'; + +export const AllValidators = ({ + validators, + balance, + updateData, + unbondingDays, + chainName, + logos, + prices, +}: { + validators: Validator[]; + balance: string; + updateData: () => void; + unbondingDays: string; + chainName: ChainName; + logos: { + [key: string]: string; + }; + prices: Prices; +}) => { + const delegateModalControl = useDisclosure(); + const [selectedValidator, setSelectedValidator] = useState(); + + return ( + <> + + All Validators + + + + + {selectedValidator && ( + + )} + + ); +}; diff --git a/cca/templates/web/components/staking/AllValidatorsList.tsx b/cca/templates/web/components/staking/AllValidatorsList.tsx new file mode 100644 index 00000000..0d8ce73b --- /dev/null +++ b/cca/templates/web/components/staking/AllValidatorsList.tsx @@ -0,0 +1,119 @@ +import React, { Dispatch, SetStateAction, useMemo } from 'react'; +import { ChainName } from 'cosmos-kit'; + +import { getCoin } from '@/utils'; +import { shiftDigits, type ExtendedValidator as Validator } from '@/utils'; +import { + Text, + Button, + ValidatorList, + ValidatorNameCell, + ValidatorTokenAmountCell, + GridColumn, +} from '@interchain-ui/react'; + +const AllValidatorsList = ({ + validators, + openModal, + chainName, + logos, + setSelectedValidator, +}: { + validators: Validator[]; + chainName: ChainName; + openModal: () => void; + setSelectedValidator: Dispatch>; + logos: { + [key: string]: string; + }; +}) => { + const coin = getCoin(chainName); + + const columns = useMemo(() => { + const _columns: GridColumn[] = [ + { + id: 'validator', + label: 'Validator', + width: '196px', + align: 'left', + render: (validator: Validator) => ( + + ), + }, + { + id: 'voting-power', + label: 'Voting Power', + width: '196px', + align: 'right', + render: (validator: Validator) => ( + + ), + }, + { + id: 'commission', + label: 'Commission', + width: '196px', + align: 'right', + render: (validator: Validator) => ( + + {shiftDigits(validator.commission, 2)}% + + ), + }, + { + id: 'action', + width: '196px', + align: 'right', + render: (validator) => ( + + ), + }, + ]; + + const hasApr = !!validators[0]?.apr; + + if (hasApr) { + _columns.splice(3, 0, { + id: 'apr', + label: 'APR', + width: '196px', + align: 'right', + render: (validator: Validator) => ( + {validator.apr}% + ), + }); + } + + return _columns; + }, [chainName]); + + return ( + + ); +}; + +export default React.memo(AllValidatorsList); diff --git a/cca/templates/web/components/staking/DelegateModal.tsx b/cca/templates/web/components/staking/DelegateModal.tsx new file mode 100644 index 00000000..2cf84d1e --- /dev/null +++ b/cca/templates/web/components/staking/DelegateModal.tsx @@ -0,0 +1,245 @@ +import { useState } from 'react'; +import { cosmos } from 'interchain-query'; +import { StdFee } from '@cosmjs/amino'; +import { useChain } from '@cosmos-kit/react'; +import { ChainName } from 'cosmos-kit'; +import BigNumber from 'bignumber.js'; +import { + BasicModal, + StakingDelegate, + Box, + Button, + Callout, + Text, +} from '@interchain-ui/react'; + +import { + type ExtendedValidator as Validator, + formatValidatorMetaInfo, + getAssetLogoUrl, + isGreaterThanZero, + shiftDigits, + calcDollarValue, + getCoin, + getExponent, + toBaseAmount, +} from '@/utils'; +import { Prices, UseDisclosureReturn, useTx } from '@/hooks'; + +const { delegate } = cosmos.staking.v1beta1.MessageComposer.fromPartial; + +export type MaxAmountAndFee = { + maxAmount: number; + fee: StdFee; +}; + +export const DelegateModal = ({ + balance, + updateData, + unbondingDays, + chainName, + logoUrl, + modalControl, + selectedValidator, + closeOuterModal, + prices, + modalTitle, + showDescription = true, +}: { + balance: string; + updateData: () => void; + unbondingDays: string; + chainName: ChainName; + modalControl: UseDisclosureReturn; + selectedValidator: Validator; + logoUrl: string; + prices: Prices; + closeOuterModal?: () => void; + modalTitle?: string; + showDescription?: boolean; +}) => { + const { isOpen, onClose } = modalControl; + const { address, estimateFee } = useChain(chainName); + + const [amount, setAmount] = useState(0); + const [isDelegating, setIsDelegating] = useState(false); + const [isSimulating, setIsSimulating] = useState(false); + const [maxAmountAndFee, setMaxAmountAndFee] = useState(); + + const coin = getCoin(chainName); + const exp = getExponent(chainName); + const { tx } = useTx(chainName); + + const onModalClose = () => { + onClose(); + setAmount(0); + setIsDelegating(false); + setIsSimulating(false); + }; + + const onDelegateClick = async () => { + if (!address || !amount) return; + + setIsDelegating(true); + + const msg = delegate({ + delegatorAddress: address, + validatorAddress: selectedValidator.address, + amount: { + amount: toBaseAmount(amount, exp), // shiftDigits(amount, exp), + denom: coin.base, + }, + }); + + const isMaxAmountAndFeeExists = + maxAmountAndFee && + new BigNumber(amount).isEqualTo(maxAmountAndFee.maxAmount); + + await tx([msg], { + fee: isMaxAmountAndFeeExists ? maxAmountAndFee.fee : null, + onSuccess: () => { + setMaxAmountAndFee(undefined); + closeOuterModal && closeOuterModal(); + updateData(); + onModalClose(); + }, + }); + + setIsDelegating(false); + }; + + const handleMaxClick = async () => { + if (!address) return; + + if (Number(balance) === 0) { + setAmount(0); + return; + } + + setIsSimulating(true); + + const msg = delegate({ + delegatorAddress: address, + validatorAddress: selectedValidator.address, + amount: { + amount: shiftDigits(balance, exp), + denom: coin.base, + }, + }); + + try { + const fee = await estimateFee([msg]); + const feeAmount = new BigNumber(fee.amount[0].amount).shiftedBy(-exp); + const balanceAfterFee = new BigNumber(balance) + .minus(feeAmount) + .toNumber(); + setMaxAmountAndFee({ fee, maxAmount: balanceAfterFee }); + setAmount(balanceAfterFee); + } catch (error) { + console.log(error); + } finally { + setIsSimulating(false); + } + }; + + const headerExtra = ( + <> + {showDescription && selectedValidator.description && ( + {selectedValidator.description} + )} + {unbondingDays && ( + + You will need to undelegate in order for your staked assets to be + liquid again. This process will take {unbondingDays} days to complete. + + )} + + ); + + return ( + + + { + setAmount(val); + }, + partials: [ + { + label: '1/2', + onClick: () => { + const newAmount = new BigNumber(balance) + .dividedBy(2) + .toNumber(); + setAmount(newAmount); + }, + }, + { + label: '1/3', + onClick: () => { + const newAmount = new BigNumber(balance) + .dividedBy(3) + .toNumber(); + + setAmount(newAmount); + }, + }, + { + label: 'Max', + onClick: () => setAmount(Number(balance)), + }, + ], + }} + footer={ + + } + /> + + + ); +}; diff --git a/cca/templates/web/components/staking/MyValidators.tsx b/cca/templates/web/components/staking/MyValidators.tsx new file mode 100644 index 00000000..58b56071 --- /dev/null +++ b/cca/templates/web/components/staking/MyValidators.tsx @@ -0,0 +1,134 @@ +import { useState } from 'react'; +import { Text } from '@interchain-ui/react'; +import { ChainName } from 'cosmos-kit'; + +import MyValidatorsList from './MyValidatorsList'; +import { ValidatorInfoModal } from './ValidatorInfoModal'; +import { UndelegateModal } from './UndelegateModal'; +import { SelectValidatorModal } from './SelectValidatorModal'; +import { RedelegateModal } from './RedelegateModal'; +import { type ExtendedValidator as Validator } from '@/utils'; +import { DelegateModal } from './DelegateModal'; +import { Prices, useDisclosure } from '@/hooks'; + +export const MyValidators = ({ + myValidators, + allValidators, + balance, + updateData, + unbondingDays, + chainName, + logos, + prices, +}: { + myValidators: Validator[]; + allValidators: Validator[]; + balance: string; + updateData: () => void; + unbondingDays: string; + chainName: ChainName; + prices: Prices; + logos: { + [key: string]: string; + }; +}) => { + const [selectedValidator, setSelectedValidator] = useState(); + const [validatorToRedelegate, setValidatorToRedelegate] = + useState(); + + const validatorInfoModalControl = useDisclosure(); + const delegateModalControl = useDisclosure(); + const undelegateModalControl = useDisclosure(); + const selectValidatorModalControl = useDisclosure(); + const redelegateModalControl = useDisclosure(); + + return ( + <> + + My Validators + + + + + {selectedValidator && validatorInfoModalControl.isOpen && ( + + )} + + {selectedValidator && delegateModalControl.isOpen && ( + + )} + + {selectedValidator && undelegateModalControl.isOpen && ( + + )} + + {selectValidatorModalControl.isOpen && ( + { + redelegateModalControl.onOpen(); + selectValidatorModalControl.onClose(); + setValidatorToRedelegate(validator); + }} + /> + )} + + {selectedValidator && + validatorToRedelegate && + redelegateModalControl.isOpen && ( + + )} + + ); +}; diff --git a/cca/templates/web/components/staking/MyValidatorsList.tsx b/cca/templates/web/components/staking/MyValidatorsList.tsx new file mode 100644 index 00000000..1ac5d73c --- /dev/null +++ b/cca/templates/web/components/staking/MyValidatorsList.tsx @@ -0,0 +1,97 @@ +import React from 'react'; +import { Dispatch, SetStateAction } from 'react'; +import { + Button, + ValidatorList, + ValidatorNameCell, + ValidatorTokenAmountCell, +} from '@interchain-ui/react'; +import { ChainName } from 'cosmos-kit'; +import { getCoin } from '@/utils'; +import { type ExtendedValidator as Validator } from '@/utils'; + +const MyValidatorsList = ({ + myValidators, + openModal, + chainName, + logos, + setSelectedValidator, +}: { + myValidators: Validator[]; + chainName: ChainName; + openModal: () => void; + setSelectedValidator: Dispatch>; + logos: { + [key: string]: string; + }; +}) => { + const coin = getCoin(chainName); + + return ( + ( + + ), + }, + { + id: 'amount-staked', + label: 'Amount Staked', + width: '196px', + align: 'right', + render: (validator: Validator) => ( + + ), + }, + { + id: 'claimable-rewards', + label: 'Claimable Rewards', + width: '196px', + align: 'right', + render: (validator: Validator) => ( + + ), + }, + { + id: 'action', + width: '196px', + align: 'right', + render: (validator) => ( + + ), + }, + ]} + data={myValidators} + tableProps={{ + width: '$full', + }} + /> + ); +}; + +export default React.memo(MyValidatorsList); diff --git a/cca/templates/web/components/staking/Overview.tsx b/cca/templates/web/components/staking/Overview.tsx new file mode 100644 index 00000000..a860e3a5 --- /dev/null +++ b/cca/templates/web/components/staking/Overview.tsx @@ -0,0 +1,96 @@ +import { useState } from 'react'; +import { + Box, + StakingAssetHeader, + StakingClaimHeader, +} from '@interchain-ui/react'; +import { useChain } from '@cosmos-kit/react'; +import { ChainName } from 'cosmos-kit'; +import { cosmos } from 'interchain-query'; + +import { getCoin } from '@/utils'; +import { Prices, useTx } from '@/hooks'; +import { + sum, + calcDollarValue, + isGreaterThanZero, + type ParsedRewards as Rewards, +} from '@/utils'; + +const { withdrawDelegatorReward } = + cosmos.distribution.v1beta1.MessageComposer.fromPartial; + +const Overview = ({ + balance, + rewards, + staked, + updateData, + chainName, + prices, +}: { + balance: string; + rewards: Rewards; + staked: string; + updateData: () => void; + chainName: ChainName; + prices: Prices; +}) => { + const [isClaiming, setIsClaiming] = useState(false); + const { address } = useChain(chainName); + const { tx } = useTx(chainName); + + const totalAmount = sum(balance, staked, rewards?.total ?? 0); + const coin = getCoin(chainName); + + const onClaimRewardClick = async () => { + setIsClaiming(true); + + if (!address) return; + + const msgs = rewards.byValidators.map(({ validatorAddress }) => + withdrawDelegatorReward({ + delegatorAddress: address, + validatorAddress, + }) + ); + + await tx(msgs, { + onSuccess: updateData, + }); + + setIsClaiming(false); + }; + + return ( + <> + + + + + + + + + ); +}; + +export default Overview; diff --git a/cca/templates/web/components/staking/RedelegateModal.tsx b/cca/templates/web/components/staking/RedelegateModal.tsx new file mode 100644 index 00000000..bc29a103 --- /dev/null +++ b/cca/templates/web/components/staking/RedelegateModal.tsx @@ -0,0 +1,194 @@ +import { useState } from 'react'; +import { cosmos } from 'interchain-query'; +import { useChain } from '@cosmos-kit/react'; +import { ChainName } from 'cosmos-kit'; +import { + BasicModal, + Box, + Button, + StakingDelegateCard, + StakingDelegateInput, + Text, +} from '@interchain-ui/react'; +import BigNumber from 'bignumber.js'; + +import { + calcDollarValue, + getAssetLogoUrl, + isGreaterThanZero, + shiftDigits, + toBaseAmount, + type ExtendedValidator as Validator, +} from '@/utils'; +import { getCoin, getExponent } from '@/utils'; +import { Prices, UseDisclosureReturn, useTx } from '@/hooks'; + +const { beginRedelegate } = cosmos.staking.v1beta1.MessageComposer.fromPartial; + +export const RedelegateModal = ({ + updateData, + chainName, + modalControl, + selectedValidator, + validatorToRedelegate, + prices, +}: { + updateData: () => void; + chainName: ChainName; + selectedValidator: Validator; + validatorToRedelegate: Validator; + modalControl: UseDisclosureReturn; + prices: Prices; +}) => { + const { address } = useChain(chainName); + + const [amount, setAmount] = useState(0); + const [isRedelegating, setIsRedelegating] = useState(false); + const [, forceUpdate] = useState(0); + + const coin = getCoin(chainName); + const exp = getExponent(chainName); + + const { tx } = useTx(chainName); + + const closeRedelegateModal = () => { + setAmount(0); + setIsRedelegating(false); + modalControl.onClose(); + }; + + const onRedelegateClick = async () => { + if (!address || !amount) return; + + setIsRedelegating(true); + + const msg = beginRedelegate({ + delegatorAddress: address, + validatorSrcAddress: selectedValidator.address, + validatorDstAddress: validatorToRedelegate.address, + amount: { + denom: coin.base, + amount: toBaseAmount(amount, exp), + }, + }); + + await tx([msg], { + onSuccess: () => { + updateData(); + closeRedelegateModal(); + }, + }); + + setIsRedelegating(false); + }; + + const maxAmount = selectedValidator.delegation; + + return ( + + + + + + + + + { + setAmount(val); + }} + // onValueInput={(val) => { + // if (!val) { + // setAmount(undefined); + // return; + // } + + // if (new BigNumber(val).gt(maxAmount)) { + // setAmount(Number(maxAmount)); + // forceUpdate((n) => n + 1); + // return; + // } + + // setAmount(Number(val)); + // }} + partials={[ + { + label: '1/2', + onClick: () => { + setAmount(new BigNumber(maxAmount).dividedBy(2).toNumber()); + }, + }, + { + label: '1/3', + onClick: () => { + setAmount(new BigNumber(maxAmount).dividedBy(3).toNumber()); + }, + }, + { + label: 'Max', + onClick: () => setAmount(Number(maxAmount)), + }, + ]} + /> + + + + + + + ); +}; + +const RedelegateLabel = ({ + type, + validatorName, + mb, +}: { + type: 'from' | 'to'; + validatorName: string; + mb?: string; +}) => { + return ( + + {type === 'from' ? 'From' : 'To'}  + + {validatorName} + + + ); +}; diff --git a/cca/templates/web/components/staking/SelectValidatorModal.tsx b/cca/templates/web/components/staking/SelectValidatorModal.tsx new file mode 100644 index 00000000..76bcafc8 --- /dev/null +++ b/cca/templates/web/components/staking/SelectValidatorModal.tsx @@ -0,0 +1,133 @@ +import { useMemo } from 'react'; +import { ChainName } from 'cosmos-kit'; +import { + Text, + GridColumn, + ValidatorNameCell, + ValidatorTokenAmountCell, + ValidatorList, + Button, + BasicModal, + Box, +} from '@interchain-ui/react'; + +import { getCoin } from '@/utils'; +import { UseDisclosureReturn } from '@/hooks'; +import { shiftDigits, type ExtendedValidator as Validator } from '@/utils'; + +export const SelectValidatorModal = ({ + allValidators, + chainName, + logos, + handleValidatorClick, + modalControl, +}: { + allValidators: Validator[]; + chainName: ChainName; + handleValidatorClick: (validator: Validator) => void; + modalControl: UseDisclosureReturn; + logos: { + [key: string]: string; + }; +}) => { + const coin = getCoin(chainName); + + const columns = useMemo(() => { + const hasApr = !!allValidators[0]?.apr; + + const _columns: GridColumn[] = [ + { + id: 'validator', + label: 'Validator', + width: '196px', + align: 'left', + render: (validator: Validator) => ( + + ), + }, + { + id: 'voting-power', + label: 'Voting Power', + width: '196px', + align: 'right', + render: (validator: Validator) => ( + + ), + }, + { + id: 'commission', + label: 'Commission', + width: '146px', + align: 'right', + render: (validator: Validator) => ( + + {shiftDigits(validator.commission, 2)}% + + ), + }, + { + id: 'action', + width: '126px', + align: 'right', + render: (validator) => ( + + + + ), + }, + ]; + + if (hasApr) { + _columns.splice(3, 0, { + id: 'apr', + label: 'APR', + width: '106px', + align: 'right', + render: (validator: Validator) => ( + {validator.apr}% + ), + }); + } + + return _columns; + }, [chainName]); + + return ( + + + + + + ); +}; diff --git a/cca/templates/web/components/staking/StakingSection.tsx b/cca/templates/web/components/staking/StakingSection.tsx new file mode 100644 index 00000000..acd8d9cd --- /dev/null +++ b/cca/templates/web/components/staking/StakingSection.tsx @@ -0,0 +1,77 @@ +import { useChain } from '@cosmos-kit/react'; +import { ChainName } from 'cosmos-kit'; +import { Box, Spinner, Text } from '@interchain-ui/react'; + +import Overview from './Overview'; +import { MyValidators } from './MyValidators'; +import { AllValidators } from './AllValidators'; +import { useStakingData, useValidatorLogos } from '@/hooks'; + +export const StakingSection = ({ chainName }: { chainName: ChainName }) => { + const { isWalletConnected } = useChain(chainName); + const { data, isLoading, refetch } = useStakingData(chainName); + const { data: logos, isLoading: isFetchingLogos } = useValidatorLogos( + chainName, + data?.allValidators || [] + ); + + return ( + + {!isWalletConnected ? ( + + + Please connect your wallet + + + ) : isLoading || isFetchingLogos || !data ? ( + + + + ) : ( + <> + + + {data.myValidators.length > 0 && ( + + )} + + + + )} + + ); +}; diff --git a/cca/templates/web/components/staking/UndelegateModal.tsx b/cca/templates/web/components/staking/UndelegateModal.tsx new file mode 100644 index 00000000..907a89a2 --- /dev/null +++ b/cca/templates/web/components/staking/UndelegateModal.tsx @@ -0,0 +1,189 @@ +import { useState } from 'react'; +import { cosmos } from 'interchain-query'; +import { useChain } from '@cosmos-kit/react'; +import { ChainName } from 'cosmos-kit'; +import BigNumber from 'bignumber.js'; +import { + BasicModal, + StakingDelegate, + Callout, + Box, + Button, +} from '@interchain-ui/react'; + +import { getCoin, getExponent } from '@/utils'; +import { Prices, UseDisclosureReturn, useTx } from '@/hooks'; +import { + calcDollarValue, + formatValidatorMetaInfo, + getAssetLogoUrl, + isGreaterThanZero, + shiftDigits, + toBaseAmount, + type ExtendedValidator as Validator, +} from '@/utils'; + +const { undelegate } = cosmos.staking.v1beta1.MessageComposer.fromPartial; + +export const UndelegateModal = ({ + updateData, + unbondingDays, + chainName, + logoUrl, + selectedValidator, + closeOuterModal, + modalControl, + prices, +}: { + updateData: () => void; + unbondingDays: string; + chainName: ChainName; + selectedValidator: Validator; + closeOuterModal: () => void; + modalControl: UseDisclosureReturn; + logoUrl: string; + prices: Prices; +}) => { + const [amount, setAmount] = useState(0); + const [isUndelegating, setIsUndelegating] = useState(false); + const [, forceUpdate] = useState(0); + + const { address } = useChain(chainName); + const { tx } = useTx(chainName); + + const coin = getCoin(chainName); + const exp = getExponent(chainName); + + const closeUndelegateModal = () => { + setAmount(0); + setIsUndelegating(false); + modalControl.onClose(); + }; + + const onUndelegateClick = async () => { + if (!address || !amount) return; + + setIsUndelegating(true); + + const msg = undelegate({ + delegatorAddress: address, + validatorAddress: selectedValidator.address, + amount: { + amount: toBaseAmount(amount, exp), + denom: coin.base, + }, + }); + + await tx([msg], { + onSuccess: () => { + updateData(); + closeOuterModal(); + closeUndelegateModal(); + }, + }); + + setIsUndelegating(false); + }; + + const maxAmount = selectedValidator.delegation; + + return ( + + + + + not receive staking rewards + not be able to cancel the unbonding + + need to wait {unbondingDays} days for the amount to be + liquid + + + + ) + } + delegationItems={[ + { + label: 'Your Delegation', + tokenAmount: selectedValidator.delegation, + tokenName: coin.symbol, + }, + ]} + inputProps={{ + inputToken: { + tokenName: coin.symbol, + tokenIconUrl: getAssetLogoUrl(coin), + }, + notionalValue: amount + ? calcDollarValue(coin.base, amount, prices) + : undefined, + value: amount, + minValue: 0, + maxValue: Number(maxAmount), + onValueChange: (val) => { + setAmount(val); + }, + // onValueInput: (val) => { + // if (!val) { + // setAmount(undefined); + // return; + // } + + // if (new BigNumber(val).gt(maxAmount)) { + // setAmount(Number(maxAmount)); + // forceUpdate((n) => n + 1); + // return; + // } + + // setAmount(Number(val)); + // }, + partials: [ + { + label: '1/2', + onClick: () => { + setAmount(new BigNumber(maxAmount).dividedBy(2).toNumber()); + }, + }, + { + label: '1/3', + onClick: () => { + setAmount(new BigNumber(maxAmount).dividedBy(3).toNumber()); + }, + }, + { + label: 'Max', + onClick: () => setAmount(Number(maxAmount)), + }, + ], + }} + footer={ + + } + /> + + + ); +}; diff --git a/cca/templates/web/components/staking/ValidatorInfoModal.tsx b/cca/templates/web/components/staking/ValidatorInfoModal.tsx new file mode 100644 index 00000000..7d60feab --- /dev/null +++ b/cca/templates/web/components/staking/ValidatorInfoModal.tsx @@ -0,0 +1,95 @@ +import { getCoin } from '@/utils'; +import { ChainName } from 'cosmos-kit'; +import { + formatValidatorMetaInfo, + type ExtendedValidator as Validator, +} from '@/utils'; +import { + BasicModal, + Box, + Button, + StakingDelegate, + Text, +} from '@interchain-ui/react'; +import { UseDisclosureReturn } from '@/hooks'; + +export const ValidatorInfoModal = ({ + chainName, + logoUrl, + handleClick, + modalControl, + selectedValidator, +}: { + chainName: ChainName; + modalControl: UseDisclosureReturn; + selectedValidator: Validator; + handleClick: { + openDelegateModal: () => void; + openUndelegateModal: () => void; + openSelectValidatorModal: () => void; + }; + logoUrl: string; +}) => { + const coin = getCoin(chainName); + + const { isOpen, onClose } = modalControl; + const { openDelegateModal, openSelectValidatorModal, openUndelegateModal } = + handleClick; + + return ( + + + {selectedValidator.description} + ) + } + delegationItems={[ + { + label: 'Your Delegation', + tokenAmount: selectedValidator.delegation, + tokenName: coin.symbol, + }, + ]} + footer={ + + + + + + } + /> + + + ); +}; diff --git a/cca/templates/web/components/staking/index.ts b/cca/templates/web/components/staking/index.ts new file mode 100644 index 00000000..4deb7bee --- /dev/null +++ b/cca/templates/web/components/staking/index.ts @@ -0,0 +1 @@ +export * from './StakingSection'; diff --git a/cca/templates/web/components/voting/Proposal.tsx b/cca/templates/web/components/voting/Proposal.tsx new file mode 100644 index 00000000..220539fc --- /dev/null +++ b/cca/templates/web/components/voting/Proposal.tsx @@ -0,0 +1,366 @@ +import { + Box, + Button, + GovernanceRadio, + GovernanceRadioGroup, + GovernanceResultCard, + GovernanceVoteBreakdown, + GovernanceVoteType, + Icon, + Stack, + Text, +} from '@interchain-ui/react'; +import { + Proposal as IProposal, + ProposalStatus, +} from 'interchain-query/cosmos/gov/v1/gov'; +import { + exponentiate, + formatDate, + getCoin, + getExponent, + percent, +} from '@/utils'; +import Markdown from 'react-markdown'; +import { useEffect, useState } from 'react'; +import { useVoting, Votes } from '@/hooks'; + +// export declare enum VoteOption { +// /** VOTE_OPTION_UNSPECIFIED - VOTE_OPTION_UNSPECIFIED defines a no-op vote option. */ +// VOTE_OPTION_UNSPECIFIED = 0, +// /** VOTE_OPTION_YES - VOTE_OPTION_YES defines a yes vote option. */ +// VOTE_OPTION_YES = 1, +// /** VOTE_OPTION_ABSTAIN - VOTE_OPTION_ABSTAIN defines an abstain vote option. */ +// VOTE_OPTION_ABSTAIN = 2, +// /** VOTE_OPTION_NO - VOTE_OPTION_NO defines a no vote option. */ +// VOTE_OPTION_NO = 3, +// /** VOTE_OPTION_NO_WITH_VETO - VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. */ +// VOTE_OPTION_NO_WITH_VETO = 4, +// UNRECOGNIZED = -1 +// } + +const VoteTypes = ['', 'yes', 'abstain', 'no', 'noWithVeto']; + +export type ProposalProps = { + proposal: IProposal; + votes?: Votes; + quorum?: number; + bondedTokens?: string; + chainName: string; + onVoteSuccess?: () => void; +}; + +export function Proposal({ + votes, + quorum, + proposal, + chainName, + bondedTokens, + onVoteSuccess = () => { }, +}: ProposalProps) { + const vote = votes?.[proposal.id.toString()]; + + const [showMore, setShowMore] = useState(false); + const [voteType, setVoteType] = useState(); + + const coin = getCoin(chainName); + const exponent = getExponent(chainName); + const { isVoting, onVote } = useVoting({ chainName, proposal }); + + const toggleShowMore = () => setShowMore((v) => !v); + + useEffect(() => { + if (typeof vote === 'number') { + setVoteType(VoteTypes[vote] as GovernanceVoteType); + } + }, [vote]); + + const isChanged = + (vote === undefined && voteType) || + (typeof vote === 'number' && voteType && voteType !== VoteTypes[vote]); + + const isPassed = proposal.status === ProposalStatus.PROPOSAL_STATUS_PASSED; + + const isRejected = + proposal.status === ProposalStatus.PROPOSAL_STATUS_REJECTED; + + const isDepositPeriod = + proposal.status === ProposalStatus.PROPOSAL_STATUS_DEPOSIT_PERIOD; + + const isVotingPeriod = + proposal.status === ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD; + + const total = proposal.finalTallyResult + ? Object.values(proposal.finalTallyResult).reduce( + (sum, val) => sum + Number(val), + 0 + ) + : 0; + + const turnout = total / Number(bondedTokens); + + // @ts-ignore + const description = proposal.summary || ''; + const renderedDescription = + description.length > 200 + ? showMore + ? description + : `${description.slice(0, 200)}...` + : description || ''; + + const minStakedTokens = + quorum && exponentiate(quorum * Number(bondedTokens), -exponent).toFixed(6); + + const timepoints = [ + { + label: 'Submit Time', + timestamp: formatDate(proposal?.submitTime!) || '', + }, + { + label: 'Voting Starts', + timestamp: isDepositPeriod + ? 'Not Specified Yet' + : formatDate(proposal.votingStartTime) || '', + }, + { + label: 'Voting Ends', + timestamp: isDepositPeriod + ? 'Not Specified Yet' + : formatDate(proposal?.votingEndTime!) || '', + }, + ]; + + function onVoteTypeChange(selected: string) { + setVoteType(selected as GovernanceVoteType); + } + + function onVoteButtonClick() { + if (!voteType) return; + + onVote({ + option: VoteTypes.indexOf(voteType), + success: onVoteSuccess, + }); + } + + return ( + + + + {timepoints.map((timepoint, i) => ( + + + {timepoint.label} + + + {timepoint.timestamp} + + + ))} + + + + + Yes + No + No with veto + Abstain + + + + + + + + Vote Details + + {quorum ? ( + + + + {`Minimum of staked ${minStakedTokens} ${coin.symbol}(${quorum * 100 + }%) need to vote + for this proposal to pass.`} + + + ) : null} + + + + + + + + + + + {isPassed ? ( + + ) : null} + {isRejected ? ( + + ) : null} + + + + + {/* Description */} + + + Description + + + +
+ {description} +
+
+ + {/* + {showMore ? {description} : renderedDescription} + + + + + */} +
+
+ ); +} diff --git a/cca/templates/web/components/voting/Voting.tsx b/cca/templates/web/components/voting/Voting.tsx new file mode 100644 index 00000000..b8d1b2b3 --- /dev/null +++ b/cca/templates/web/components/voting/Voting.tsx @@ -0,0 +1,222 @@ +import { useEffect, useState } from 'react'; +import { useChain } from '@cosmos-kit/react'; +import { + Proposal as IProposal, + ProposalStatus, + TallyResult, +} from 'interchain-query/cosmos/gov/v1/gov'; +import { + BasicModal, + Box, + GovernanceProposalItem, + Spinner, + Text, + useColorModeValue, +} from '@interchain-ui/react'; +import { useModal, useVotingData } from '@/hooks'; +import { Proposal } from '@/components'; +import { formatDate } from '@/utils'; +import { chains } from 'chain-registry'; + +function status(s: ProposalStatus) { + switch (s) { + case ProposalStatus.PROPOSAL_STATUS_UNSPECIFIED: + return 'pending'; + case ProposalStatus.PROPOSAL_STATUS_DEPOSIT_PERIOD: + return 'pending'; + case ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD: + return 'pending'; + case ProposalStatus.PROPOSAL_STATUS_PASSED: + return 'passed'; + case ProposalStatus.PROPOSAL_STATUS_REJECTED: + return 'rejected'; + case ProposalStatus.PROPOSAL_STATUS_FAILED: + return 'rejected'; + default: + return 'pending'; + } +} + +function votes(result: TallyResult) { + return { + yes: Number(result?.yesCount) || 0, + no: Number(result?.noCount) || 0, + abstain: Number(result?.abstainCount) || 0, + noWithVeto: Number(result?.noWithVetoCount) || 0, + }; +} + +export type VotingProps = { + chainName: string; +}; + +export function Voting({ chainName }: VotingProps) { + const { address } = useChain(chainName); + const [proposal, setProposal] = useState(); + const { data, isLoading, refetch } = useVotingData(chainName); + const { modal, open: openModal, close: closeModal, setTitle } = useModal(''); + const [tallies, setTallies] = useState<{ [key: string]: TallyResult }>({}); + + const chain = chains.find((c) => c.chain_name === chainName); + + useEffect(() => { + if (!data.proposals || data.proposals.length === 0) return; + data.proposals.forEach((proposal) => { + if (proposal.status === ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD) { + (async () => { + for (const { address } of chain?.apis?.rest || []) { + const api = `${address}/cosmos/gov/v1/proposals/${Number(proposal.id)}/tally`; + try { + const tally = (await (await fetch(api)).json()).tally; + if (!tally) { + continue; + } + setTallies((prev) => { + return { + ...prev, + [proposal.id.toString()]: { + yesCount: tally.yes_count, + noCount: tally.no_count, + abstainCount: tally.abstain_count, + noWithVetoCount: tally.no_with_veto_count, + }, + }; + }); + break; + } catch (e) {} + } + })(); + } + }); + }, [data.proposals?.length, chainName]); + + function onClickProposal(index: number) { + const proposal = data.proposals![index]; + openModal(); + setProposal(proposal); + // @ts-ignore + setTitle(`#${proposal.id?.toString()} ${proposal?.title}`); + } + + const empty = ( + + + No proposals found + + + ); + + const content = ( + + {data.proposals?.length === 0 + ? empty + : data.proposals?.map((proposal, index) => { + let tally = proposal.finalTallyResult; + if ( + proposal.status === ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD + ) { + tally = tallies[proposal.id.toString()]; + } + return ( + onClickProposal(index) }} + > + {data.votes[proposal.id.toString()] ? ( + + + Voted + + + ) : null} + + + ); + })} + + ); + + const connect = ( + + + Please connect to your wallet to see the proposals. + + + ); + + const Loading = ( + + + + ); + + return ( + + + Proposals + + + {address ? Loading : null} + + {address ? content : connect} + + + + {modal.title} + + + } + isOpen={modal.open} + onOpen={openModal} + onClose={closeModal} + > + + +
+ ); +} diff --git a/cca/templates/web/components/voting/index.ts b/cca/templates/web/components/voting/index.ts new file mode 100644 index 00000000..75bcca3d --- /dev/null +++ b/cca/templates/web/components/voting/index.ts @@ -0,0 +1,2 @@ +export * from './Voting'; +export * from './Proposal'; \ No newline at end of file diff --git a/cca/templates/web/config/breakpoints.ts b/cca/templates/web/config/breakpoints.ts new file mode 100644 index 00000000..3a8343f9 --- /dev/null +++ b/cca/templates/web/config/breakpoints.ts @@ -0,0 +1,5 @@ +export const breakpoints = { + mobile: 480, + tablet: 768, + desktop: 1200, +}; diff --git a/cca/templates/web/config/chains.ts b/cca/templates/web/config/chains.ts new file mode 100644 index 00000000..3a4a3391 --- /dev/null +++ b/cca/templates/web/config/chains.ts @@ -0,0 +1,7 @@ +import { chains } from 'chain-registry'; + +const chainNames = ['atomone', 'cosmoshub']; + +export const chainOptions = chainNames.map( + (chainName) => chains.find((chain) => chain.chain_name === chainName)! +); \ No newline at end of file diff --git a/cca/templates/web/config/index.ts b/cca/templates/web/config/index.ts new file mode 100644 index 00000000..d3bb41e3 --- /dev/null +++ b/cca/templates/web/config/index.ts @@ -0,0 +1,5 @@ +export * from './chains'; +export * from './theme'; +export * from './wallets'; +export * from './products'; +export * from './breakpoints'; diff --git a/cca/templates/web/config/products.ts b/cca/templates/web/config/products.ts new file mode 100644 index 00000000..1bfbb53d --- /dev/null +++ b/cca/templates/web/config/products.ts @@ -0,0 +1,97 @@ +export type ProductCategory = + | 'cosmwasm' + | 'cosmos-sdk' + | 'frontend' + +export type Product = { + name: string; + description: string; + link: string; + category: ProductCategory; +}; + +export const products: Product[] = [ + { + name: 'Ignite', + description: + 'Ignite makes developing, growing, and launching blockchain projects faster than ever before.', + link: 'https://ignite.com', + category: 'cosmos-sdk', + }, + { + name: 'Ignite Tutorials', + description: + 'Learn How to Build Cutting-Edge Blockchains.', + link: 'https://tutorials.ignite.com', + category: 'cosmos-sdk', + }, + { + name: 'Cosmos SDK', + description: + 'Get a quick introduction to the Cosmos SDK and its key features, including its modular architecture and developer-friendly tools.', + link: 'https://docs.cosmos.network', + category: 'cosmos-sdk', + }, + { + name: 'Cosmos Kit', + description: + 'A wallet adapter for react with mobile WalletConnect support for the Cosmos ecosystem.', + link: 'https://cosmology.zone/products/cosmos-kit', + category: 'frontend', + }, + { + name: 'Ignite Videos', + description: + 'Learn about Ignite development with video tutorials.', + link: 'https://youtube.com/@ignitehq', + category: 'frontend', + }, + { + name: 'Telescope', + description: + 'A TypeScript Transpiler for Cosmos Protobufs to generate libraries for Cosmos blockchains.', + link: 'https://cosmology.zone/products/telescope', + category: 'cosmos-sdk', + }, + { + name: 'Interchain UI', + description: + 'A simple, modular and cross-framework component library for Cosmos ecosystem.', + link: 'https://cosmology.zone/products/interchain-ui', + category: 'frontend', + }, + { + name: 'Chain Registry', + description: + 'Get chain and asset list information from the npm package for the Official Cosmos chain registry.', + link: 'https://cosmology.zone/products/chain-registry', + category: 'frontend', + }, + { + name: 'Create Cosmos App', + description: + 'One-Command Setup for Modern Cosmos dApps. Speed up your development and bootstrap new web3 dApps quickly.', + link: 'https://cosmology.zone/products/create-cosmos-app', + category: 'frontend', + }, + { + name: 'CosmWasm Academy', + description: + 'Master CosmWasm and build your secure, multi-chain dApp on any CosmWasm chain!', + link: 'https://cosmology.zone/learn/ts-codegen', + category: 'cosmwasm', + }, + { + name: 'Cosmology Videos', + description: + 'How-to videos from the official Cosmology website, with learning resources for building in Cosmos.', + link: 'https://cosmology.zone/learn', + category: 'frontend', + }, + { + name: 'Next.js', + description: 'A React Framework supports hybrid static & server rendering.', + link: 'https://nextjs.org/', + category: 'frontend', + }, +]; diff --git a/cca/templates/web/config/theme.ts b/cca/templates/web/config/theme.ts new file mode 100644 index 00000000..c712fa19 --- /dev/null +++ b/cca/templates/web/config/theme.ts @@ -0,0 +1,94 @@ +import { ThemeDef, ThemeVariant } from '@interchain-ui/react'; + +export const CustomTheme: Record = { + light: 'custom-light', + dark: 'custom-dark', +}; + +export const lightColors: ThemeDef['vars']['colors'] = { + purple900: '#322F3C', + purple600: '#7310FF', + purple400: '#AB6FFF', + purple200: '#E5D4FB', + purple100: '#F9F4FF', + purple50: '#FCFAFF', + blackAlpha600: '#2C3137', + blackAlpha500: '#6D7987', + blackAlpha400: '#697584', + blackAlpha300: '#DDE2E9', + blackAlpha200: '#D5DDE9', + blackAlpha100: '#F6F8FE', + blackAlpha50: '#FBFBFB', + gray100: '#EFF2F4', + white: '#FFFFFF', + background: '#FFFFFF', + green600: '#38A169', + green400: '#63C892', + green200: '#A9E8C7', + orange600: '#ED8936', + orange400: '#EBB07F', + orange200: '#F5D1B4', + red600: '#E65858', + red400: '#E18080', + red200: '#F1C4C4', + blue100: '#F4FCFF', + blue200: '#C6E7FF', + blue300: '#AEDEFF', + blue400: '#68C7FF', + blue500: '#35B4FF', + blue600: '#01A1FF', + blue700: '#0068A6', + blue800: '#194F8F', + blue900: '#002D4D', +}; + +export const darkColors: ThemeDef['vars']['colors'] = { + purple900: '#322F3C', + purple600: '#9042FE', + purple400: '#AB6FFF', + purple200: '#4D198F', + purple100: '#14004D', + purple50: '#FCFAFF', + blackAlpha600: '#FFFFFF', + blackAlpha500: '#9EACBD', + blackAlpha400: '#807C86', + blackAlpha300: '#46424D', + blackAlpha200: '#443F4B', + blackAlpha100: '#29262F', + blackAlpha50: '#1D2328', + gray100: '#EFF2F4', + white: '#FFFFFF', + background: '#232A31', + green600: '#38A169', + green400: '#63C892', + green200: '#A9E8C7', + orange600: '#ED8936', + orange400: '#EBB07F', + orange200: '#F5D1B4', + red600: '#E65858', + red400: '#E18080', + red200: '#F1C4C4', + blue100: '#F4FCFF', + blue200: '#C6E7FF', + blue300: '#AEDEFF', + blue400: '#68C7FF', + blue500: '#35B4FF', + blue600: '#01A1FF', + blue700: '#0068A6', + blue800: '#194F8F', + blue900: '#002D4D', +}; + +export const lightTheme: ThemeDef = { + name: CustomTheme.light, + vars: { + colors: lightColors, + }, +}; + +export const darkTheme: ThemeDef = { + name: CustomTheme.dark, + vars: { + colors: darkColors, + }, +}; diff --git a/cca/templates/web/config/wallets.ts b/cca/templates/web/config/wallets.ts new file mode 100644 index 00000000..65b3fe04 --- /dev/null +++ b/cca/templates/web/config/wallets.ts @@ -0,0 +1,11 @@ +import { wallets as _wallets } from 'cosmos-kit'; +import { MainWalletBase } from '@cosmos-kit/core'; + +export const keplrWalletName = _wallets.keplr.extension?.walletName!; + +export const wallets = [ + _wallets.keplr.extension, + _wallets.leap.extension, + _wallets.cosmostation.extension, + _wallets.station.extension, +] as MainWalletBase[]; diff --git a/cca/templates/web/contexts/chain.ts b/cca/templates/web/contexts/chain.ts new file mode 100644 index 00000000..3a15ac56 --- /dev/null +++ b/cca/templates/web/contexts/chain.ts @@ -0,0 +1,18 @@ +import { create } from 'zustand'; +import { chainOptions } from '@/config'; + +interface ChainStore { + selectedChain: string; +} + +export const defaultChain = chainOptions[0].chain_name; + +export const useChainStore = create()(() => ({ + selectedChain: defaultChain, +})); + +export const chainStore = { + setSelectedChain: (chainName: string) => { + useChainStore.setState({ selectedChain: chainName }); + }, +}; diff --git a/cca/templates/web/contexts/index.ts b/cca/templates/web/contexts/index.ts new file mode 100644 index 00000000..481a3404 --- /dev/null +++ b/cca/templates/web/contexts/index.ts @@ -0,0 +1 @@ +export * from './chain'; diff --git a/cca/templates/web/declaration.d.ts b/cca/templates/web/declaration.d.ts new file mode 100644 index 00000000..13a24cd0 --- /dev/null +++ b/cca/templates/web/declaration.d.ts @@ -0,0 +1,4 @@ +declare module '*.yaml' { + const content: unknown; + export default content; +} diff --git a/cca/templates/web/hooks/common/index.ts b/cca/templates/web/hooks/common/index.ts new file mode 100644 index 00000000..97f8d80d --- /dev/null +++ b/cca/templates/web/hooks/common/index.ts @@ -0,0 +1,8 @@ +export * from './useTx'; +export * from './useToast'; +export * from './useDisclosure'; +export * from './useCopyToClipboard'; +export * from './useOutsideClick'; +export * from './useMediaQuery'; +export * from './useDetectBreakpoints'; +export * from './useConnectChain'; diff --git a/cca/templates/web/hooks/common/useConnectChain.ts b/cca/templates/web/hooks/common/useConnectChain.ts new file mode 100644 index 00000000..72158882 --- /dev/null +++ b/cca/templates/web/hooks/common/useConnectChain.ts @@ -0,0 +1,20 @@ +import { makeKeplrChainInfo } from '@/utils'; +import { useChain, useWalletClient } from '@cosmos-kit/react'; + +export const useConnectChain = (chainName: string) => { + const { connect, chain, assets, ...rest } = useChain(chainName); + const { client: keplrWallet } = useWalletClient('keplr-extension'); + + const addAndConnectChain = async () => { + const chainInfo = makeKeplrChainInfo(chain, assets!.assets[0]); + try { + // @ts-ignore + await keplrWallet?.client?.experimentalSuggestChain(chainInfo); + connect(); + } catch (error) { + console.error(error); + } + }; + + return { connect: addAndConnectChain, chain, assets, ...rest }; +}; diff --git a/cca/templates/web/hooks/common/useCopyToClipboard.ts b/cca/templates/web/hooks/common/useCopyToClipboard.ts new file mode 100644 index 00000000..e2e143e8 --- /dev/null +++ b/cca/templates/web/hooks/common/useCopyToClipboard.ts @@ -0,0 +1,18 @@ +import { useState } from 'react'; +import { toast } from '@interchain-ui/react'; + +export const useCopyToClipboard = () => { + const [isCopied, setIsCopied] = useState(false); + + const copyToClipboard = async (text: string) => { + try { + await navigator.clipboard.writeText(text); + setIsCopied(true); + setTimeout(() => setIsCopied(false), 1000); + } catch (err) { + toast.error('Failed to copy text. Please try again.'); + } + }; + + return { isCopied, copyToClipboard }; +}; diff --git a/cca/templates/web/hooks/common/useDetectBreakpoints.ts b/cca/templates/web/hooks/common/useDetectBreakpoints.ts new file mode 100644 index 00000000..5240375c --- /dev/null +++ b/cca/templates/web/hooks/common/useDetectBreakpoints.ts @@ -0,0 +1,13 @@ +import { breakpoints } from '@/config'; +import { useMediaQuery } from './useMediaQuery'; + +export const useDetectBreakpoints = () => { + const { mobile, tablet, desktop } = breakpoints; + + const isSmMobile = useMediaQuery(`(max-width: ${mobile - 1}px)`); + const isMobile = useMediaQuery(`(max-width: ${tablet - 1}px)`); + const isTablet = useMediaQuery(`(max-width: ${desktop - 1}px)`); + const isDesktop = useMediaQuery(`(min-width: ${desktop}px)`); + + return { isSmMobile, isMobile, isTablet, isDesktop }; +}; diff --git a/cca/templates/web/hooks/common/useDisclosure.ts b/cca/templates/web/hooks/common/useDisclosure.ts new file mode 100644 index 00000000..cb14407a --- /dev/null +++ b/cca/templates/web/hooks/common/useDisclosure.ts @@ -0,0 +1,18 @@ +import { useState } from 'react'; + +export const useDisclosure = (initialState = false) => { + const [isOpen, setIsOpen] = useState(initialState); + + const onClose = () => setIsOpen(false); + const onOpen = () => setIsOpen(true); + const onToggle = () => setIsOpen((prev) => !prev); + + return { + isOpen, + onClose, + onOpen, + onToggle, + }; +}; + +export type UseDisclosureReturn = ReturnType; diff --git a/cca/templates/web/hooks/common/useMediaQuery.ts b/cca/templates/web/hooks/common/useMediaQuery.ts new file mode 100644 index 00000000..90266246 --- /dev/null +++ b/cca/templates/web/hooks/common/useMediaQuery.ts @@ -0,0 +1,27 @@ +import { useState, useCallback, useEffect } from 'react'; + +export const useMediaQuery = (mediaQuery: string) => { + const [targetReached, setTargetReached] = useState(false); + + const updateTarget = useCallback((e: MediaQueryListEvent) => { + if (e.matches) { + setTargetReached(true); + } else { + setTargetReached(false); + } + }, []); + + useEffect(() => { + const media = window.matchMedia(mediaQuery); + media.addEventListener('change', updateTarget); + + // Check on mount (callback is not called until a change occurs) + if (media.matches) { + setTargetReached(true); + } + + return () => media.removeEventListener('change', updateTarget); + }, []); + + return targetReached; +}; diff --git a/cca/templates/web/hooks/common/useOutsideClick.ts b/cca/templates/web/hooks/common/useOutsideClick.ts new file mode 100644 index 00000000..4f4670b3 --- /dev/null +++ b/cca/templates/web/hooks/common/useOutsideClick.ts @@ -0,0 +1,27 @@ +import { useEffect } from 'react'; + +interface UseOutsideClickProps { + ref: React.RefObject; + handler: () => void; + shouldListen?: boolean; +} + +export const useOutsideClick = ({ ref, handler, shouldListen = true }: UseOutsideClickProps) => { + const handleClick = (event: MouseEvent) => { + if (ref.current && !ref.current.contains(event.target as Node)) { + handler(); + } + }; + + useEffect(() => { + if (shouldListen) { + document.addEventListener('mousedown', handleClick); + } else { + document.removeEventListener('mousedown', handleClick); + } + + return () => { + document.removeEventListener('mousedown', handleClick); + }; + }, [ref, handler, shouldListen]); +}; diff --git a/cca/templates/web/hooks/common/useToast.tsx b/cca/templates/web/hooks/common/useToast.tsx new file mode 100644 index 00000000..2b3e89ef --- /dev/null +++ b/cca/templates/web/hooks/common/useToast.tsx @@ -0,0 +1,35 @@ +import { toast, Text, ToastType, Spinner } from '@interchain-ui/react'; + +export type CustomToast = { + type: ToastType; + title: string; + duration?: number; + description?: string | JSX.Element; +}; + +const ToastTitle = ({ title }: { title: string }) => { + return ( + + {title} + + ); +}; + +export const useToast = () => { + const customToast = ({ + type, + title, + description, + duration = 5000, + }: CustomToast) => { + return toast.custom(type, , { + duration, + description, + icon: type === 'loading' ? : undefined, + }); + }; + + customToast.close = toast.dismiss; + + return { toast: customToast }; +}; diff --git a/cca/templates/web/hooks/common/useTx.ts b/cca/templates/web/hooks/common/useTx.ts new file mode 100644 index 00000000..d1d68ed1 --- /dev/null +++ b/cca/templates/web/hooks/common/useTx.ts @@ -0,0 +1,113 @@ +import { cosmos } from 'interchain-query'; +import { useChain } from '@cosmos-kit/react'; +import { isDeliverTxSuccess, StdFee } from '@cosmjs/stargate'; +import { useToast, type CustomToast } from './useToast'; + +const txRaw = cosmos.tx.v1beta1.TxRaw; + +interface Msg { + typeUrl: string; + value: any; +} + +interface TxOptions { + fee?: StdFee | null; + toast?: Partial; + onSuccess?: () => void; +} + +export enum TxStatus { + Failed = 'Transaction Failed', + Successful = 'Transaction Successful', + Broadcasting = 'Transaction Broadcasting', +} + +export const useTx = (chainName: string) => { + const { address, getSigningStargateClient, estimateFee } = + useChain(chainName); + + const { toast } = useToast(); + + const tx = async (msgs: Msg[], options: TxOptions) => { + if (!address) { + toast({ + type: 'error', + title: 'Wallet not connected', + description: 'Please connect your wallet', + }); + return; + } + + let signed: Parameters['0']; + let client: Awaited>; + + try { + let fee: StdFee; + if (options?.fee) { + fee = options.fee; + client = await getSigningStargateClient(); + } else { + const [_fee, _client] = await Promise.all([ + estimateFee(msgs), + getSigningStargateClient(), + ]); + fee = _fee; + client = _client; + } + signed = await client.sign(address, msgs, fee, ''); + } catch (e: any) { + console.error(e); + toast({ + title: TxStatus.Failed, + description: e?.message || 'An unexpected error has occured', + type: 'error', + }); + return; + } + + let broadcastToastId: string | number; + + broadcastToastId = toast({ + title: TxStatus.Broadcasting, + description: 'Waiting for transaction to be included in the block', + type: 'loading', + duration: 999999, + }); + + if (client && signed) { + await client + .broadcastTx(Uint8Array.from(txRaw.encode(signed).finish())) + .then((res: any) => { + if (isDeliverTxSuccess(res)) { + if (options.onSuccess) options.onSuccess(); + + toast({ + title: options.toast?.title || TxStatus.Successful, + type: options.toast?.type || 'success', + description: options.toast?.description, + }); + } else { + toast({ + title: TxStatus.Failed, + description: res?.rawLog, + type: 'error', + duration: 10000, + }); + } + }) + .catch((err) => { + toast({ + title: TxStatus.Failed, + description: err?.message, + type: 'error', + duration: 10000, + }); + }) + .finally(() => toast.close(broadcastToastId)); + } else { + toast.close(broadcastToastId); + } + }; + + return { tx }; +}; diff --git a/cca/templates/web/hooks/contract/index.ts b/cca/templates/web/hooks/contract/index.ts new file mode 100644 index 00000000..c3824d24 --- /dev/null +++ b/cca/templates/web/hooks/contract/index.ts @@ -0,0 +1,7 @@ +export * from './useContractInfo'; +export * from './useQueryContract'; +export * from './useExecuteContractTx'; +export * from './useStoreCodeTx'; +export * from './useInstantiateTx'; +export * from './useMyContracts'; +export * from './useCodeDetails'; diff --git a/cca/templates/web/hooks/contract/useCodeDetails.ts b/cca/templates/web/hooks/contract/useCodeDetails.ts new file mode 100644 index 00000000..0949ee36 --- /dev/null +++ b/cca/templates/web/hooks/contract/useCodeDetails.ts @@ -0,0 +1,28 @@ +import { prettyCodeInfo } from '@/utils'; +import { useQuery } from '@tanstack/react-query'; +import { useCwQueryClient } from './useCwQueryClient'; + +export const useCodeDetails = (codeId: number, enabled: boolean = true) => { + const { data: client } = useCwQueryClient(); + + return useQuery({ + queryKey: ['codeDetails', codeId], + queryFn: async () => { + if (!client) return; + try { + const { codeInfo } = await client.cosmwasm.wasm.v1.code({ + codeId: BigInt(codeId), + }); + return codeInfo && prettyCodeInfo(codeInfo); + } catch (error) { + console.error(error); + } + }, + enabled: !!client && enabled, + retry: false, + cacheTime: 0, + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + }); +}; diff --git a/cca/templates/web/hooks/contract/useContractInfo.ts b/cca/templates/web/hooks/contract/useContractInfo.ts new file mode 100644 index 00000000..a70291e0 --- /dev/null +++ b/cca/templates/web/hooks/contract/useContractInfo.ts @@ -0,0 +1,25 @@ +import { useQuery } from '@tanstack/react-query'; +import { useCosmWasmClient } from './useCosmWasmClient'; +import { useChainStore } from '@/contexts'; +import { useChain } from '@cosmos-kit/react'; + +export const useContractInfo = ({ + contractAddress, + enabled = true, +}: { + contractAddress: string; + enabled?: boolean; +}) => { + const { data: cwClient } = useCosmWasmClient(); + const { selectedChain } = useChainStore(); + const { getCosmWasmClient } = useChain(selectedChain); + + return useQuery({ + queryKey: ['useContractInfo', contractAddress], + queryFn: async () => { + const client = cwClient ?? (await getCosmWasmClient()); + return client.getContract(contractAddress); + }, + enabled: !!contractAddress && enabled, + }); +}; diff --git a/cca/templates/web/hooks/contract/useCosmWasmClient.ts b/cca/templates/web/hooks/contract/useCosmWasmClient.ts new file mode 100644 index 00000000..50ef7d87 --- /dev/null +++ b/cca/templates/web/hooks/contract/useCosmWasmClient.ts @@ -0,0 +1,17 @@ +import { useChain } from '@cosmos-kit/react'; +import { useQuery } from '@tanstack/react-query'; +import { useChainStore } from '@/contexts'; + +export const useCosmWasmClient = () => { + const { selectedChain } = useChainStore(); + const { getCosmWasmClient } = useChain(selectedChain); + + return useQuery({ + queryKey: ['useCosmWasmClient', selectedChain], + queryFn: () => getCosmWasmClient(), + staleTime: Infinity, + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + }); +}; diff --git a/cca/templates/web/hooks/contract/useCwQueryClient.ts b/cca/templates/web/hooks/contract/useCwQueryClient.ts new file mode 100644 index 00000000..66d63df9 --- /dev/null +++ b/cca/templates/web/hooks/contract/useCwQueryClient.ts @@ -0,0 +1,25 @@ +import { useChainStore } from '@/contexts'; +import { useChain } from '@cosmos-kit/react'; +import { useQuery } from '@tanstack/react-query'; +import { cosmwasm } from 'interchain-query'; + +export const useCwQueryClient = () => { + const { selectedChain } = useChainStore(); + const { getRpcEndpoint } = useChain(selectedChain); + + return useQuery({ + queryKey: ['cwQueryClient', selectedChain], + queryFn: async () => { + const rpcEndpoint = await getRpcEndpoint(); + const client = await cosmwasm.ClientFactory.createRPCQueryClient({ + rpcEndpoint, + }); + return client; + }, + staleTime: Infinity, + cacheTime: Infinity, + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + }); +}; diff --git a/cca/templates/web/hooks/contract/useExecuteContractTx.tsx b/cca/templates/web/hooks/contract/useExecuteContractTx.tsx new file mode 100644 index 00000000..41194c9e --- /dev/null +++ b/cca/templates/web/hooks/contract/useExecuteContractTx.tsx @@ -0,0 +1,84 @@ +import Link from 'next/link'; +import { Coin, StdFee } from '@cosmjs/amino'; +import { useChain } from '@cosmos-kit/react'; + +import { useToast } from '../common'; +import { Box, Text, Icon } from '@interchain-ui/react'; +import { getExplorerLink } from '@/utils'; + +interface ExecuteTxParams { + address: string; + contractAddress: string; + fee: StdFee; + msg: object; + funds: Coin[]; + onTxSucceed?: () => void; + onTxFailed?: () => void; +} + +export const useExecuteContractTx = (chainName: string) => { + const { getSigningCosmWasmClient, chain } = useChain(chainName); + + const executeTx = async ({ + address, + contractAddress, + fee, + funds, + msg, + onTxFailed = () => {}, + onTxSucceed = () => {}, + }: ExecuteTxParams) => { + const client = await getSigningCosmWasmClient(); + const { toast } = useToast(); + + const toastId = toast({ + title: 'Sending Transaction', + type: 'loading', + duration: 999999, + }); + + try { + const result = await client.execute( + address, + contractAddress, + msg, + fee, + undefined, + funds + ); + onTxSucceed(); + toast.close(toastId); + toast({ + title: 'Transaction Successful', + type: 'success', + description: ( + + + View tx details + + + + ), + }); + } catch (e: any) { + console.error(e); + onTxFailed(); + toast.close(toastId); + toast({ + title: 'Transaction Failed', + type: 'error', + description: ( + + {e.message} + + ), + duration: 10000, + }); + } + }; + + return { executeTx }; +}; diff --git a/cca/templates/web/hooks/contract/useInstantiateTx.tsx b/cca/templates/web/hooks/contract/useInstantiateTx.tsx new file mode 100644 index 00000000..e1bbbfda --- /dev/null +++ b/cca/templates/web/hooks/contract/useInstantiateTx.tsx @@ -0,0 +1,82 @@ +import { Box } from '@interchain-ui/react'; +import { useChain } from '@cosmos-kit/react'; +import { Coin, StdFee } from '@cosmjs/amino'; +import { InstantiateResult } from '@cosmjs/cosmwasm-stargate'; + +import { useToast } from '../common'; + +interface InstantiateTxParams { + address: string; + codeId: number; + initMsg: object; + label: string; + admin: string; + funds: Coin[]; + onTxSucceed?: (txInfo: InstantiateResult) => void; + onTxFailed?: () => void; +} + +export const useInstantiateTx = (chainName: string) => { + const { getSigningCosmWasmClient } = useChain(chainName); + + const instantiateTx = async ({ + address, + codeId, + initMsg, + label, + admin, + funds, + onTxSucceed = () => {}, + onTxFailed = () => {}, + }: InstantiateTxParams) => { + const client = await getSigningCosmWasmClient(); + const { toast } = useToast(); + + const toastId = toast({ + title: 'Sending Transaction', + type: 'loading', + duration: 999999, + }); + + const fee: StdFee = { + amount: [], + gas: '300000', + }; + + try { + const result = await client.instantiate( + address, + codeId, + initMsg, + label, + fee, + { + admin, + funds, + } + ); + onTxSucceed(result); + toast.close(toastId); + toast({ + title: 'Instantiate Success', + type: 'success', + }); + } catch (e: any) { + console.error(e); + onTxFailed(); + toast.close(toastId); + toast({ + title: 'Transaction Failed', + type: 'error', + description: ( + + {e.message} + + ), + duration: 10000, + }); + } + }; + + return { instantiateTx }; +}; diff --git a/cca/templates/web/hooks/contract/useMyContracts.ts b/cca/templates/web/hooks/contract/useMyContracts.ts new file mode 100644 index 00000000..6c026b61 --- /dev/null +++ b/cca/templates/web/hooks/contract/useMyContracts.ts @@ -0,0 +1,43 @@ +import { useChainStore } from '@/contexts'; +import { useChain } from '@cosmos-kit/react'; +import { useQuery } from '@tanstack/react-query'; +import { useCwQueryClient } from './useCwQueryClient'; + +export const useMyContracts = () => { + const { selectedChain } = useChainStore(); + const { address } = useChain(selectedChain); + const { data: client } = useCwQueryClient(); + + return useQuery({ + queryKey: ['myContracts', selectedChain, address], + queryFn: async () => { + if (!client || !address) return []; + + try { + const { contractAddresses } = + await client.cosmwasm.wasm.v1.contractsByCreator({ + creatorAddress: address, + pagination: { + limit: 1000n, + reverse: true, + countTotal: false, + key: new Uint8Array(), + offset: 0n, + }, + }); + + const contractsInfo = await Promise.all( + contractAddresses.map((address) => + client.cosmwasm.wasm.v1.contractInfo({ address }) + ) + ); + + return contractsInfo; + } catch (error) { + console.error(error); + return []; + } + }, + enabled: !!client && !!address, + }); +}; diff --git a/cca/templates/web/hooks/contract/useQueryContract.ts b/cca/templates/web/hooks/contract/useQueryContract.ts new file mode 100644 index 00000000..a9eb1df1 --- /dev/null +++ b/cca/templates/web/hooks/contract/useQueryContract.ts @@ -0,0 +1,23 @@ +import { useQuery } from '@tanstack/react-query'; +import { useCosmWasmClient } from './useCosmWasmClient'; + +export const useQueryContract = ({ + contractAddress, + queryMsg, + enabled = true, +}: { + contractAddress: string; + queryMsg: string; + enabled?: boolean; +}) => { + const { data: client } = useCosmWasmClient(); + + return useQuery({ + queryKey: ['useQueryContract', contractAddress, queryMsg], + queryFn: async () => { + if (!client) return null; + return client.queryContractSmart(contractAddress, JSON.parse(queryMsg)); + }, + enabled: !!client && !!contractAddress && !!queryMsg && enabled, + }); +}; diff --git a/cca/templates/web/hooks/contract/useStoreCodeTx.tsx b/cca/templates/web/hooks/contract/useStoreCodeTx.tsx new file mode 100644 index 00000000..750066f3 --- /dev/null +++ b/cca/templates/web/hooks/contract/useStoreCodeTx.tsx @@ -0,0 +1,81 @@ +import { useChain } from '@cosmos-kit/react'; +import { AccessType } from 'interchain-query/cosmwasm/wasm/v1/types'; +import { cosmwasm } from 'interchain-query'; +import { gzip } from 'node-gzip'; +import { StdFee } from '@cosmjs/amino'; +import { Box } from '@interchain-ui/react'; + +import { useToast } from '../common'; +import { prettyStoreCodeTxResult } from '@/utils'; + +const { storeCode } = cosmwasm.wasm.v1.MessageComposer.fromPartial; + +type StoreCodeTxParams = { + wasmFile: File; + permission: AccessType; + addresses: string[]; + onTxSucceed?: (codeId: string) => void; + onTxFailed?: () => void; +}; + +export const useStoreCodeTx = (chainName: string) => { + const { getSigningCosmWasmClient, address } = useChain(chainName); + const { toast } = useToast(); + + const storeCodeTx = async ({ + wasmFile, + permission, + addresses, + onTxSucceed = () => {}, + onTxFailed = () => {}, + }: StoreCodeTxParams) => { + if (!address) return; + + const toastId = toast({ + title: 'Sending Transaction', + type: 'loading', + duration: 999999, + }); + + const wasmCode = await wasmFile.arrayBuffer(); + const wasmByteCode = new Uint8Array(await gzip(new Uint8Array(wasmCode))); + + const message = storeCode({ + sender: address, + wasmByteCode, + instantiatePermission: { + permission, + addresses, + }, + }); + + const fee: StdFee = { amount: [], gas: '5800000' }; + + try { + const client = await getSigningCosmWasmClient(); + const result = await client.signAndBroadcast(address, [message], fee); + onTxSucceed(prettyStoreCodeTxResult(result).codeId); + toast.close(toastId); + toast({ + title: 'Contract uploaded successfully', + type: 'success', + }); + } catch (error: any) { + console.error('Failed to upload contract:', error); + onTxFailed(); + toast.close(toastId); + toast({ + title: 'Transaction Failed', + type: 'error', + description: ( + + {error.message} + + ), + duration: 10000, + }); + } + }; + + return { storeCodeTx }; +}; diff --git a/cca/templates/web/hooks/index.ts b/cca/templates/web/hooks/index.ts new file mode 100644 index 00000000..06644b05 --- /dev/null +++ b/cca/templates/web/hooks/index.ts @@ -0,0 +1,4 @@ +export * from './common'; +export * from './staking'; +export * from './voting'; +export * from './contract'; diff --git a/cca/templates/web/hooks/staking/index.ts b/cca/templates/web/hooks/staking/index.ts new file mode 100644 index 00000000..ba6cecec --- /dev/null +++ b/cca/templates/web/hooks/staking/index.ts @@ -0,0 +1,3 @@ +export * from './useStakingData'; +export * from './useAssetsPrices'; +export * from './useValidatorLogos'; diff --git a/cca/templates/web/hooks/staking/useAssetsPrices.ts b/cca/templates/web/hooks/staking/useAssetsPrices.ts new file mode 100644 index 00000000..76af1d35 --- /dev/null +++ b/cca/templates/web/hooks/staking/useAssetsPrices.ts @@ -0,0 +1,53 @@ +import { assets } from 'chain-registry'; +import { useQuery } from '@tanstack/react-query'; +import { AssetList } from '@chain-registry/types'; + +type CoinGeckoId = string; +type CoinGeckoUSD = { usd: number }; +type CoinGeckoUSDResponse = Record; +export type Prices = Record; + +const handleError = (resp: Response) => { + if (!resp.ok) throw Error(resp.statusText); + return resp; +}; + +const getGeckoIdsFromAssets = (assets: AssetList[]) => { + return assets + .map((asset) => asset.assets[0].coingecko_id) + .filter(Boolean) as string[]; +}; + +const formatPrices = ( + prices: CoinGeckoUSDResponse, + assets: AssetList[] +): Prices => { + return Object.entries(prices).reduce((priceHash, cur) => { + const assetList = assets.find( + (asset) => asset.assets[0].coingecko_id === cur[0] + )!; + const denom = assetList.assets[0].base; + return { ...priceHash, [denom]: cur[1].usd }; + }, {}); +}; + +const fetchPrices = async ( + geckoIds: string[] +): Promise => { + const url = `https://api.coingecko.com/api/v3/simple/price?ids=${geckoIds.join()}&vs_currencies=usd`; + + return fetch(url) + .then(handleError) + .then((res) => res.json()); +}; + +export const useAssetsPrices = () => { + const geckoIds = getGeckoIdsFromAssets(assets); + + return useQuery({ + queryKey: ['useAssetsPrices'], + queryFn: () => fetchPrices(geckoIds), + select: (data) => formatPrices(data, assets), + staleTime: Infinity, + }); +}; diff --git a/cca/templates/web/hooks/staking/useStakingData.ts b/cca/templates/web/hooks/staking/useStakingData.ts new file mode 100644 index 00000000..10bcec76 --- /dev/null +++ b/cca/templates/web/hooks/staking/useStakingData.ts @@ -0,0 +1,266 @@ +import { useEffect, useMemo } from 'react'; +import { useChain } from '@cosmos-kit/react'; +import BigNumber from 'bignumber.js'; +import { + cosmos, + useRpcClient, + useRpcEndpoint, + createRpcQueryHooks, +} from 'interchain-query'; + +import { useAssetsPrices } from './useAssetsPrices'; +import { + shiftDigits, + calcTotalDelegation, + extendValidators, + parseAnnualProvisions, + parseDelegations, + parseRewards, + parseUnbondingDays, + parseValidators, + getCoin, + getExponent, +} from '@/utils'; + +(BigInt.prototype as any).toJSON = function () { + return this.toString(); +}; + +export const useStakingData = (chainName: string) => { + const { address, getRpcEndpoint } = useChain(chainName); + + const coin = getCoin(chainName); + const exp = getExponent(chainName); + + const rpcEndpointQuery = useRpcEndpoint({ + getter: getRpcEndpoint, + options: { + enabled: !!address, + staleTime: Infinity, + queryKeyHashFn: (queryKey) => { + return JSON.stringify([...queryKey, chainName]); + }, + }, + }); + + const rpcClientQuery = useRpcClient({ + rpcEndpoint: rpcEndpointQuery.data || '', + options: { + enabled: !!address && !!rpcEndpointQuery.data, + staleTime: Infinity, + }, + }); + + const { cosmos: cosmosQuery } = createRpcQueryHooks({ + rpc: rpcClientQuery.data, + }); + + const isDataQueryEnabled = !!address && !!rpcClientQuery.data; + + const balanceQuery = cosmosQuery.bank.v1beta1.useBalance({ + request: { + address: address || '', + denom: coin.base, + }, + options: { + enabled: isDataQueryEnabled, + select: ({ balance }) => shiftDigits(balance?.amount || '0', -exp), + refetchOnMount: 'always', + }, + }); + + const myValidatorsQuery = cosmosQuery.staking.v1beta1.useDelegatorValidators({ + request: { + delegatorAddr: address || '', + pagination: undefined, + }, + options: { + enabled: isDataQueryEnabled, + select: ({ validators }) => parseValidators(validators), + }, + }); + + const rewardsQuery = + cosmosQuery.distribution.v1beta1.useDelegationTotalRewards({ + request: { + delegatorAddress: address || '', + }, + options: { + enabled: isDataQueryEnabled, + select: (data) => parseRewards(data, coin.base, -exp), + }, + }); + + const validatorsQuery = cosmosQuery.staking.v1beta1.useValidators({ + request: { + status: cosmos.staking.v1beta1.bondStatusToJSON( + cosmos.staking.v1beta1.BondStatus.BOND_STATUS_BONDED + ), + pagination: { + key: new Uint8Array(), + offset: 0n, + limit: 200n, + countTotal: true, + reverse: false, + }, + }, + options: { + enabled: isDataQueryEnabled, + select: ({ validators }) => { + const sorted = validators.sort((a, b) => + new BigNumber(b.tokens).minus(a.tokens).toNumber() + ); + return parseValidators(sorted); + }, + }, + }); + + const delegationsQuery = cosmosQuery.staking.v1beta1.useDelegatorDelegations({ + request: { + delegatorAddr: address || '', + pagination: { + key: new Uint8Array(), + offset: 0n, + limit: 100n, + countTotal: true, + reverse: false, + }, + }, + options: { + enabled: isDataQueryEnabled, + select: ({ delegationResponses }) => + parseDelegations(delegationResponses, -exp), + }, + }); + + const unbondingDaysQuery = cosmosQuery.staking.v1beta1.useParams({ + options: { + enabled: isDataQueryEnabled, + select: ({ params }) => parseUnbondingDays(params), + }, + }); + + const annualProvisionsQuery = cosmosQuery.mint.v1beta1.useAnnualProvisions({ + options: { + enabled: isDataQueryEnabled, + select: parseAnnualProvisions, + retry: false, + }, + }); + + const poolQuery = cosmosQuery.staking.v1beta1.usePool({ + options: { + enabled: isDataQueryEnabled, + select: ({ pool }) => pool, + }, + }); + + const communityTaxQuery = cosmosQuery.distribution.v1beta1.useParams({ + options: { + enabled: isDataQueryEnabled, + select: ({ params }) => shiftDigits(params?.communityTax || '0', -18), + }, + }); + + const pricesQuery = useAssetsPrices(); + + const allQueries = { + balance: balanceQuery, + myValidators: myValidatorsQuery, + rewards: rewardsQuery, + allValidators: validatorsQuery, + delegations: delegationsQuery, + unbondingDays: unbondingDaysQuery, + annualProvisions: annualProvisionsQuery, + pool: poolQuery, + communityTax: communityTaxQuery, + prices: pricesQuery, + }; + + const queriesWithUnchangingKeys = [ + allQueries.unbondingDays, + allQueries.annualProvisions, + allQueries.pool, + allQueries.communityTax, + allQueries.allValidators, + ]; + + const updatableQueriesAfterMutation = [ + allQueries.balance, + allQueries.myValidators, + allQueries.rewards, + allQueries.allValidators, + allQueries.delegations, + ]; + + useEffect(() => { + queriesWithUnchangingKeys.forEach((query) => query.remove()); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [chainName]); + + const isInitialFetching = Object.values(allQueries).some( + ({ isLoading }) => isLoading + ); + + const isRefetching = Object.values(allQueries).some( + ({ isRefetching }) => isRefetching + ); + + const isLoading = isInitialFetching || isRefetching; + + type AllQueries = typeof allQueries; + + type QueriesData = { + [Key in keyof AllQueries]: NonNullable; + }; + + const data = useMemo(() => { + if (isLoading) return; + + const queriesData = Object.fromEntries( + Object.entries(allQueries).map(([key, query]) => [key, query.data]) + ) as QueriesData; + + const { + allValidators, + delegations, + rewards, + myValidators, + annualProvisions, + communityTax, + pool, + } = queriesData; + + const chainMetadata = { annualProvisions, communityTax, pool }; + + const extendedAllValidators = extendValidators( + allValidators, + delegations, + rewards?.byValidators, + chainMetadata + ); + + const extendedMyValidators = extendValidators( + myValidators, + delegations, + rewards?.byValidators, + chainMetadata + ); + + const totalDelegated = calcTotalDelegation(delegations); + + return { + ...queriesData, + allValidators: extendedAllValidators, + myValidators: extendedMyValidators, + totalDelegated, + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isLoading]); + + const refetch = () => { + updatableQueriesAfterMutation.forEach((query) => query.refetch()); + }; + + return { data, isLoading, refetch }; +}; diff --git a/cca/templates/web/hooks/staking/useValidatorLogos.ts b/cca/templates/web/hooks/staking/useValidatorLogos.ts new file mode 100644 index 00000000..01deb501 --- /dev/null +++ b/cca/templates/web/hooks/staking/useValidatorLogos.ts @@ -0,0 +1,13 @@ +import { ExtendedValidator, getLogoUrls } from '@/utils'; +import { useQuery } from '@tanstack/react-query'; + +export const useValidatorLogos = ( + chainName: string, + validators: ExtendedValidator[] +) => { + return useQuery({ + queryKey: ['validatorLogos', chainName, validators.length], + queryFn: () => getLogoUrls(validators, chainName), + staleTime: Infinity, + }); +}; diff --git a/cca/templates/web/hooks/voting/index.ts b/cca/templates/web/hooks/voting/index.ts new file mode 100644 index 00000000..f028800e --- /dev/null +++ b/cca/templates/web/hooks/voting/index.ts @@ -0,0 +1,5 @@ +export * from './useModal'; +export * from './useVoting'; +export * from './useVotingData'; +export * from './useQueryHooks'; +export * from './useRpcQueryClient'; diff --git a/cca/templates/web/hooks/voting/useModal.ts b/cca/templates/web/hooks/voting/useModal.ts new file mode 100644 index 00000000..a0d02c10 --- /dev/null +++ b/cca/templates/web/hooks/voting/useModal.ts @@ -0,0 +1,13 @@ +import { useState } from 'react'; + +export function useModal(title = '') { + const [modal, setModal] = useState({ open: false, title }); + + const open = () => setModal(modal => ({ ...modal, open: true })); + const close = () => setModal(modal => ({ ...modal, open: false })); + const toggle = () => setModal(modal => ({ ...modal, open: !modal.open })); + + const setTitle = (title: string) => setModal(modal => ({ ...modal, title })); + + return { modal, open, close, toggle, setTitle } +} \ No newline at end of file diff --git a/cca/templates/web/hooks/voting/useQueryHooks.ts b/cca/templates/web/hooks/voting/useQueryHooks.ts new file mode 100644 index 00000000..058db38e --- /dev/null +++ b/cca/templates/web/hooks/voting/useQueryHooks.ts @@ -0,0 +1,46 @@ +import { useChain } from '@cosmos-kit/react'; +import { + useRpcEndpoint, + useRpcClient, + createRpcQueryHooks +} from 'interchain-query'; + +export const useQueryHooks = (chainName: string, extraKey?: string) => { + const { getRpcEndpoint } = useChain(chainName); + + const rpcEndpointQuery = useRpcEndpoint({ + getter: getRpcEndpoint, + options: { + staleTime: Infinity, + queryKeyHashFn: (queryKey) => { + const key = [...queryKey, chainName]; + return JSON.stringify(extraKey ? [...key, extraKey] : key); + }, + }, + }); + + const rpcClientQuery = useRpcClient({ + rpcEndpoint: rpcEndpointQuery.data || '', + options: { + enabled: Boolean(rpcEndpointQuery.data), + staleTime: Infinity, + queryKeyHashFn: (queryKey) => { + return JSON.stringify(extraKey ? [...queryKey, extraKey] : queryKey); + }, + }, + }); + + const { cosmos } = createRpcQueryHooks({ + rpc: rpcClientQuery.data, + }); + + const isReady = Boolean(rpcClientQuery.data); + const isFetching = rpcEndpointQuery.isFetching || rpcClientQuery.isFetching; + + return { + cosmos, + isReady, + isFetching, + rpcEndpoint: rpcEndpointQuery.data, + }; +}; diff --git a/cca/templates/web/hooks/voting/useRpcQueryClient.ts b/cca/templates/web/hooks/voting/useRpcQueryClient.ts new file mode 100644 index 00000000..b38dc51e --- /dev/null +++ b/cca/templates/web/hooks/voting/useRpcQueryClient.ts @@ -0,0 +1,18 @@ +import { cosmos } from 'interchain-query'; +import { useQuery } from '@tanstack/react-query'; +import { useQueryHooks } from './useQueryHooks'; + +const { createRPCQueryClient } = cosmos.ClientFactory; + +export const useRpcQueryClient = (chainName: string) => { + const { rpcEndpoint } = useQueryHooks(chainName); + + const rpcQueryClientQuery = useQuery({ + queryKey: ['rpcQueryClient', rpcEndpoint], + queryFn: () => createRPCQueryClient({ rpcEndpoint: rpcEndpoint || '' }), + enabled: Boolean(rpcEndpoint), + staleTime: Infinity, + }); + + return { rpcQueryClient: rpcQueryClientQuery.data }; +}; diff --git a/cca/templates/web/hooks/voting/useVoting.ts b/cca/templates/web/hooks/voting/useVoting.ts new file mode 100644 index 00000000..32e8a897 --- /dev/null +++ b/cca/templates/web/hooks/voting/useVoting.ts @@ -0,0 +1,69 @@ +import { useState } from 'react'; +import { cosmos } from 'interchain-query'; +import { toast } from '@interchain-ui/react'; +import { useChain } from '@cosmos-kit/react'; +import { coins, StdFee } from '@cosmjs/stargate'; +import { Proposal } from 'interchain-query/cosmos/gov/v1/gov'; +import { getCoin } from '@/utils'; +import { useVotingTx } from './useVotingTx'; + +const MessageComposer = cosmos.gov.v1beta1.MessageComposer; + +export type useVotingOptions = { + chainName: string; + proposal: Proposal; +}; + +export type onVoteOptions = { + option: number; + success?: () => void; + error?: () => void; +}; + +export function useVoting({ chainName, proposal }: useVotingOptions) { + const { tx } = useVotingTx(chainName); + const { address } = useChain(chainName); + const [isVoting, setIsVoting] = useState(false); + + const coin = getCoin(chainName); + + async function onVote({ + option, + success = () => {}, + error = () => {}, + }: onVoteOptions) { + if (!address || !option) return; + + const msg = MessageComposer.fromPartial.vote({ + option, + voter: address, + proposalId: proposal.id, + }); + + const fee: StdFee = { + amount: coins('1000', coin.base), + gas: '100000', + }; + + try { + setIsVoting(true); + const res = await tx([msg], { fee }); + if (res.error) { + error(); + console.error(res.error); + toast.error(res.errorMsg); + } else { + success(); + toast.success('Vote successful'); + } + } catch (e) { + error(); + console.error(e); + toast.error('Vote failed'); + } finally { + setIsVoting(false); + } + } + + return { isVoting, onVote }; +} diff --git a/cca/templates/web/hooks/voting/useVotingData.ts b/cca/templates/web/hooks/voting/useVotingData.ts new file mode 100644 index 00000000..57e3c1ea --- /dev/null +++ b/cca/templates/web/hooks/voting/useVotingData.ts @@ -0,0 +1,195 @@ +import { useEffect, useMemo, useState } from 'react'; +import { useChain } from '@cosmos-kit/react'; +import { useQueries } from '@tanstack/react-query'; +import { ProposalStatus } from 'interchain-query/cosmos/gov/v1beta1/gov'; +import { Proposal as ProposalV1 } from 'interchain-query/cosmos/gov/v1/gov'; +import { useQueryHooks, useRpcQueryClient } from '.'; +import { getTitle, paginate, parseQuorum } from '@/utils'; +import { chains } from 'chain-registry' + +(BigInt.prototype as any).toJSON = function () { + return this.toString(); +}; + +export interface Votes { + [key: string]: number; +} + +export function processProposals(proposals: ProposalV1[]) { + const sorted = proposals.sort( + (a, b) => Number(b.id) - Number(a.id) + ); + + proposals.forEach((proposal) => { + // @ts-ignore + if (!proposal.content?.title && proposal.content?.value) { + // @ts-ignore + proposal.content.title = getTitle(proposal.content?.value); + } + }); + + return sorted.filter( + ({ status }) => status === ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD + ).concat(sorted.filter( + ({ status }) => status !== ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD + )); +}; + +export function useVotingData(chainName: string) { + const [isLoading, setIsLoading] = useState(false); + const { address } = useChain(chainName); + const { rpcQueryClient } = useRpcQueryClient(chainName); + const { cosmos, isReady, isFetching } = useQueryHooks(chainName); + const chain = chains.find((c) => c.chain_name === chainName); + + const proposalsQuery = cosmos.gov.v1.useProposals({ + request: { + voter: '', + depositor: '', + pagination: paginate(50n, true), + proposalStatus: ProposalStatus.PROPOSAL_STATUS_UNSPECIFIED, + }, + options: { + enabled: isReady, + staleTime: Infinity, + select: ({ proposals }) => processProposals(proposals), + }, + }); + + const bondedTokensQuery = cosmos.staking.v1beta1.usePool({ + options: { + enabled: isReady, + staleTime: Infinity, + select: ({ pool }) => pool?.bondedTokens, + }, + }); + + const quorumQuery = cosmos.gov.v1.useParams({ + request: { paramsType: 'tallying' }, + options: { + enabled: isReady, + staleTime: Infinity, + select: ({ tallyParams }) => parseQuorum(tallyParams?.quorum as any), + }, + }); + + const votedProposalsQuery = cosmos.gov.v1.useProposals({ + request: { + voter: address || '/', // use '/' to differentiate from proposalsQuery + depositor: '', + pagination: paginate(50n, true), + proposalStatus: ProposalStatus.PROPOSAL_STATUS_UNSPECIFIED, + }, + options: { + enabled: isReady && Boolean(address), + select: ({ proposals }) => proposals, + keepPreviousData: true, + }, + }); + + const votesQueries = useQueries({ + queries: (votedProposalsQuery.data || []).map(({ id }) => ({ + queryKey: ['voteQuery', id, address], + queryFn: () => + rpcQueryClient?.cosmos.gov.v1.vote({ + proposalId: id, + voter: address || '', + }), + enabled: Boolean(rpcQueryClient) && Boolean(address) && Boolean(votedProposalsQuery.data), + keepPreviousData: true, + })), + }); + + const singleQueries = { + quorum: quorumQuery, + proposals: proposalsQuery, + bondedTokens: bondedTokensQuery, + votedProposals: votedProposalsQuery, + }; + + const staticQueries = [ + singleQueries.quorum, + singleQueries.proposals, + singleQueries.bondedTokens, + ]; + + const dynamicQueries = [singleQueries.votedProposals]; + + useEffect(() => { + staticQueries.forEach((query) => query.remove()); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [chainName]); + + const isStaticQueriesFetching = staticQueries.some( + ({ isFetching }) => isFetching + ); + + const isDynamicQueriesFetching = + singleQueries.votedProposals.isFetching || + votesQueries.some(({ isFetching }) => isFetching); + + const loading = + isFetching || isStaticQueriesFetching || isDynamicQueriesFetching; + + useEffect(() => { + // no loading when refetching + if (isFetching || isStaticQueriesFetching) setIsLoading(true); + if (!loading) setIsLoading(false); + }, [isStaticQueriesFetching, loading]); + + type SingleQueries = typeof singleQueries; + + type SingleQueriesData = { + [Key in keyof SingleQueries]: NonNullable; + }; + + const singleQueriesData = useMemo(() => { + if (isStaticQueriesFetching || !isReady) return; + + const singleQueriesData = Object.fromEntries( + Object.entries(singleQueries).map(([key, query]) => [key, query.data]) + ) as SingleQueriesData; + + singleQueriesData?.proposals?.forEach((proposal) => { + if (proposal.status === ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD) { + (async () => { + for (const { address } of chain?.apis?.rest || []) { + const api = `${address}/cosmos/gov/v1/proposals/${Number(proposal.id)}/tally` + try { + const tally = (await (await fetch(api)).json()).tally + if (!tally) { + continue + } + proposal.finalTallyResult = { + yesCount: tally.yes_count, + noCount: tally.no_count, + abstainCount: tally.abstain_count, + noWithVetoCount: tally.no_with_veto_count, + } + break + } catch (e) { + console.error('error fetch tally', api) + } + } + })() + } + }) + + return singleQueriesData + }, [isStaticQueriesFetching, isReady]); + + const votes = useMemo(() => { + const votesEntries = votesQueries + .map((query) => query.data) + .map((data) => [data?.vote?.proposalId, data?.vote?.options[0].option]); + + return Object.fromEntries(votesEntries) as Votes; + }, [votesQueries]); + + const refetch = () => { + votesQueries.forEach((query) => query.remove()); + dynamicQueries.forEach((query) => query.refetch()); + }; + + return { data: { ...singleQueriesData, votes }, isLoading, refetch }; +} \ No newline at end of file diff --git a/cca/templates/web/hooks/voting/useVotingTx.ts b/cca/templates/web/hooks/voting/useVotingTx.ts new file mode 100644 index 00000000..1a9ceae2 --- /dev/null +++ b/cca/templates/web/hooks/voting/useVotingTx.ts @@ -0,0 +1,83 @@ +import { cosmos } from 'interchain-query'; +import { useChain } from '@cosmos-kit/react'; +import { + DeliverTxResponse, + isDeliverTxSuccess, + StdFee, +} from '@cosmjs/stargate'; + +export type Msg = { + typeUrl: string; + value: { [key: string]: any }; +}; + +export type TxOptions = { + fee?: StdFee; +}; + +export class TxError extends Error { + constructor(message: string = 'Tx Error', options?: ErrorOptions) { + super(message, options); + this.name = 'TxError'; + } +} + +export class TxResult { + error?: TxError; + response?: DeliverTxResponse; + + constructor({ error, response }: Pick) { + this.error = error; + this.response = response; + } + + get errorMsg() { + return this.isOutOfGas + ? `Out of gas. gasWanted: ${this.response?.gasWanted} gasUsed: ${this.response?.gasUsed}` + : this.error?.message || 'Vote Failed'; + } + + get isSuccess() { + return this.response && isDeliverTxSuccess(this.response); + } + + get isOutOfGas() { + return this.response && this.response.gasUsed > this.response.gasWanted; + } +} + +export function useVotingTx(chainName: string) { + const { address, getSigningStargateClient, estimateFee } = + useChain(chainName); + + async function tx(msgs: Msg[], options: TxOptions = {}) { + if (!address) { + return new TxResult({ error: new TxError('Wallet not connected') }); + } + + try { + const txRaw = cosmos.tx.v1beta1.TxRaw; + const fee = options.fee || (await estimateFee(msgs)); + const client = await getSigningStargateClient(); + const signed = await client.sign(address, msgs, fee, ''); + + if (!client) + return new TxResult({ error: new TxError('Invalid stargate client') }); + if (!signed) + return new TxResult({ error: new TxError('Invalid transaction') }); + + // @ts-ignore + const response: DeliverTxResponse = await client.broadcastTx( + Uint8Array.from(txRaw.encode(signed).finish()) + ); + + return isDeliverTxSuccess(response) + ? new TxResult({ response }) + : new TxResult({ response, error: new TxError(response.rawLog) }); + } catch (e: any) { + return new TxResult({ error: new TxError(e.message || 'Tx Error') }); + } + } + + return { tx }; +} diff --git a/cca/templates/web/next.config.js b/cca/templates/web/next.config.js new file mode 100644 index 00000000..59bb75ea --- /dev/null +++ b/cca/templates/web/next.config.js @@ -0,0 +1,21 @@ +/** @type {import('next').NextConfig} */ + +module.exports = { + reactStrictMode: true, + swcMinify: true, + webpack: (config) => { + config.module.rules.push({ + test: /\.yaml$/, + use: 'yaml-loader', + }); + + return config; + }, + images: { + remotePatterns: [ + { + hostname: 'raw.githubusercontent.com', + }, + ], + }, +}; diff --git a/cca/templates/web/package.json b/cca/templates/web/package.json new file mode 100644 index 00000000..827d6903 --- /dev/null +++ b/cca/templates/web/package.json @@ -0,0 +1,58 @@ +{ + "name": "@cosmology/chain-template", + "version": "1.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "locks:remove": "rm -f yarn.lock", + "locks:create": "generate-lockfile --lockfile ../../yarn.lock --package package.json --write yarn.lock --force", + "locks": "npm run locks:remove && npm run locks:create" + }, + "resolutions": { + "react": "18.2.0", + "react-dom": "18.2.0", + "@types/react": "18.0.25", + "@types/react-dom": "18.0.9" + }, + "dependencies": { + "@cosmjs/amino": "0.32.3", + "@cosmjs/cosmwasm-stargate": "0.32.3", + "@cosmjs/stargate": "0.31.1", + "@cosmos-kit/react": "2.18.0", + "@interchain-ui/react": "1.23.31", + "@interchain-ui/react-no-ssr": "0.1.2", + "@tanstack/react-query": "4.32.0", + "ace-builds": "1.35.0", + "bignumber.js": "9.1.2", + "chain-registry": "1.69.33", + "cosmos-kit": "2.18.4", + "dayjs": "1.11.11", + "interchain-query": "1.10.1", + "next": "^13", + "node-gzip": "^1.1.2", + "react": "18.2.0", + "react-ace": "11.0.1", + "react-dom": "18.2.0", + "react-dropzone": "^14.2.3", + "react-icons": "5.2.1", + "react-markdown": "9.0.1", + "zustand": "4.5.2" + }, + "devDependencies": { + "@chain-registry/types": "0.44.3", + "@keplr-wallet/types": "^0.12.111", + "@tanstack/react-query-devtools": "4.32.0", + "@types/node": "18.11.9", + "@types/node-gzip": "^1", + "@types/react": "18.0.25", + "@types/react-dom": "18.0.9", + "eslint": "8.28.0", + "eslint-config-next": "13.0.5", + "generate-lockfile": "0.0.12", + "typescript": "4.9.3", + "yaml-loader": "^0.8.1" + } +} diff --git a/cca/templates/web/pages/_app.tsx b/cca/templates/web/pages/_app.tsx new file mode 100644 index 00000000..ba517482 --- /dev/null +++ b/cca/templates/web/pages/_app.tsx @@ -0,0 +1,71 @@ +import '../styles/globals.css'; +import '@interchain-ui/react/styles'; + +import type { AppProps } from 'next/app'; +import { ChainProvider } from '@cosmos-kit/react'; +import { QueryClientProvider, QueryClient } from '@tanstack/react-query'; +// import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; +import { Box, Toaster, useTheme } from '@interchain-ui/react'; +import { chains, assets } from 'chain-registry'; + +import { CustomThemeProvider, Layout } from '@/components'; +import { wallets } from '@/config'; +import { getSignerOptions } from '@/utils'; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: 2, + refetchOnMount: false, + refetchOnWindowFocus: false, + }, + }, +}); + +function CreateCosmosApp({ Component, pageProps }: AppProps) { + const { themeClass } = useTheme(); + + return ( + + + + + + {/* @ts-ignore */} + + + + + {/* */} + + + + ); +} + +export default CreateCosmosApp; diff --git a/cca/templates/web/pages/contract.tsx b/cca/templates/web/pages/contract.tsx new file mode 100644 index 00000000..a08a0477 --- /dev/null +++ b/cca/templates/web/pages/contract.tsx @@ -0,0 +1,124 @@ +import { useState, useCallback, useEffect, useRef } from 'react'; +import { Box, Tabs } from '@interchain-ui/react'; +import { useRouter } from 'next/router'; + +import { ExecuteTab, MyContractsTab, QueryTab } from '@/components'; +import { splitCamelCase, toKebabCase, toPascalCase } from '@/utils'; +import styles from '@/styles/comp.module.css'; + +export enum TabLabel { + MyContracts, + Query, + Execute, +} + +export default function Contract() { + const router = useRouter(); + const [activeTab, setActiveTab] = useState(TabLabel.MyContracts); + const [queryAddress, setQueryAddress] = useState(''); + const [executeAddress, setExecuteAddress] = useState(''); + const initialTab = useRef(false); + + useEffect(() => { + if (!initialTab.current && router.isReady) { + const { tab, address } = router.query; + + if (typeof tab === 'string') { + const pascalCaseTab = toPascalCase(tab); + const newTab = TabLabel[pascalCaseTab as keyof typeof TabLabel]; + if (newTab !== undefined) { + setActiveTab(newTab); + } + + if (typeof address === 'string') { + if (newTab === TabLabel.Query) setQueryAddress(address); + if (newTab === TabLabel.Execute) setExecuteAddress(address); + } + } + + initialTab.current = true; + } + }, [router.isReady, router.query]); + + const updateUrl = useCallback( + (tabId: TabLabel, address?: string) => { + const tabName = toKebabCase(TabLabel[tabId]); + const query: { tab: string; address?: string } = { tab: tabName }; + if (address) { + query.address = address; + } else { + delete query.address; + } + router.push({ pathname: '/contract', query }, undefined, { + shallow: true, + }); + }, + [router], + ); + + const handleTabChange = useCallback( + (tabId: TabLabel) => { + setActiveTab(tabId); + updateUrl( + tabId, + tabId === TabLabel.Query + ? queryAddress + : tabId === TabLabel.Execute + ? executeAddress + : undefined, + ); + }, + [updateUrl, queryAddress, executeAddress], + ); + + const switchTabWithAddress = useCallback( + (address: string, tabId: TabLabel) => { + if (tabId === TabLabel.Query) setQueryAddress(address); + if (tabId === TabLabel.Execute) setExecuteAddress(address); + setActiveTab(tabId); + updateUrl(tabId, address); + }, + [updateUrl], + ); + + const handleAddressInput = useCallback( + (address: string) => { + if (activeTab === TabLabel.Query) setQueryAddress(address); + if (activeTab === TabLabel.Execute) setExecuteAddress(address); + updateUrl(activeTab, address); + }, + [activeTab, updateUrl], + ); + + return ( + <> + typeof v === 'string') + .map((label) => ({ + label: splitCamelCase(label as string), + content: undefined, + }))} + activeTab={activeTab} + onActiveTabChange={handleTabChange} + className={styles.tabs} + /> + + + + + + + ); +} diff --git a/cca/templates/web/pages/disclaimer.tsx b/cca/templates/web/pages/disclaimer.tsx new file mode 100644 index 00000000..57962147 --- /dev/null +++ b/cca/templates/web/pages/disclaimer.tsx @@ -0,0 +1,109 @@ +import { Box, Text } from '@interchain-ui/react'; + +export default function Disclaimer() { + return ( + + Disclaimer + No Investment Advice + + The information provided on this website does not constitute investment + advice, financial advice, trading advice, or any other sort of advice + and you should not treat any of the website's content as such. + Cosmology does not recommend that any cryptocurrency should be bought, + sold, or held by you. Do conduct your own due diligence and consult your + financial advisor before making any investment decisions. + + Accuracy of Information + + Cosmology will strive to ensure accuracy of information listed on this + website although it will not hold any responsibility for any missing or + wrong information. Cosmology provides all information as is. You + understand that you are using any and all information available here at + your own risk. + + Risk Statement + + The trading of cryptocurrencies has potential rewards, and it also has + potential risks involved. Trading may not be suitable for all people. + Anyone wishing to invest should seek his or her own independent + financial or professional advice. + + Tax Compliance + + The users of Cosmology app are solely responsible to determinate what, + if any, taxes apply to their cryptocurrency transactions. The owners of, + or contributors to, the Cosmology app are NOT responsible for + determining the taxes that apply to cryptocurrency transactions. + + Software Disclaimer + + Cosmology leverages decentralized peer-to-peer blockchains that people + can use to create liquidity and trade IBC enabled tokens. These + blockchains are made up of free, public, and open-source software. Your + use of Cosmology involves various risks, including, but not limited, to + losses while digital assets are being supplied to liquidity pools and + losses due to the fluctuation of prices of tokens in a trading pair or + liquidity pool, including Impermanence Loss. Before using any pool on + these blockchains, you should review the relevant documentation to make + sure you understand how they work, and the pool you use on each + blockchain works. Additionally, just as you can access email protocols, + such as SMTP, through multiple email clients, you can access pools on + the blockchain through several web or mobile interfaces. You are + responsible for doing your own diligence on those interfaces to + understand the fees and risks they present. AS DESCRIBED IN THE + COSMOLOGY LICENSES, THE SOFTWARE IS PROVIDED “AS IS”, AT YOUR OWN RISK, + AND WITHOUT WARRANTIES OF ANY KIND. Although Web, Inc. ( “Web Incubator” + ) developed much of the initial code for the Cosmology app, it does not + provide, own, or control the leveraged blockchain protocols, which are + run by decentralized validator sets. Upgrades and modifications to these + protocol are managed in a community-driven way by holders of various + governance tokens. No developer or entity involved in creating Cosmology + will be liable for any claims or damages whatsoever associated with your + use, inability to use, or your interaction with other users of the + Cosmology app, including any direct, indirect, incidental, special, + exemplary, punitive or consequential damages, or loss of profits, + cryptocurrencies, tokens, or anything else of value. + + + ); +} + +const Title = ({ children }: { children: string }) => { + return ( + + {children} + + ); +}; + +const SectionTitle = ({ children }: { children: string }) => { + return ( + + {children} + + ); +}; + +const SectionBody = ({ children }: { children: string }) => { + return ( + + {children} + + ); +}; diff --git a/cca/templates/web/pages/docs.tsx b/cca/templates/web/pages/docs.tsx new file mode 100644 index 00000000..b46c7c98 --- /dev/null +++ b/cca/templates/web/pages/docs.tsx @@ -0,0 +1,121 @@ +import Link from 'next/link'; +import { useState } from 'react'; +import { Box, Icon, Tabs, Text } from '@interchain-ui/react'; + +import styles from '@/styles/utils.module.css'; +import { ProductCategory, products } from '@/config'; +import { useDetectBreakpoints } from '@/hooks'; + +type Tab = { + label: string; + category: ProductCategory | null; +}; + +const tabs: Tab[] = [ + { + label: 'All', + category: null, + }, + { + label: 'Cosmos SDK & Ignite', + category: 'cosmos-sdk', + }, + { + label: 'Frontend & UI', + category: 'frontend', + }, + { + label: 'CosmWasm', + category: 'cosmwasm', + }, +]; + +export default function DocsPage() { + const [activeTab, setActiveTab] = useState(0); + + const { isTablet, isMobile } = useDetectBreakpoints(); + + const filteredProducts = products.filter( + (product) => + tabs[activeTab].category === null || + product.category === tabs[activeTab].category + ); + + return ( + + ({ label, content: undefined }))} + activeTab={activeTab} + onActiveTabChange={(tabId) => setActiveTab(tabId)} + /> + + {filteredProducts.map(({ name, link, description }) => ( + + ))} + + + ); +} + +const ProductItem = ({ + name, + link, + description, +}: { + name: string; + description: string; + link: string; +}) => { + return ( + + + + + {name} + + + + + {description} + + + + ); +}; diff --git a/cca/templates/web/pages/governance.tsx b/cca/templates/web/pages/governance.tsx new file mode 100644 index 00000000..4050cf7d --- /dev/null +++ b/cca/templates/web/pages/governance.tsx @@ -0,0 +1,13 @@ +import { ReactNoSSR } from '@interchain-ui/react-no-ssr'; +import { Voting } from '@/components'; +import { useChainStore } from '@/contexts'; + +export default function GovernancePage() { + const { selectedChain } = useChainStore(); + + return ( + + + + ); +} diff --git a/cca/templates/web/pages/index.tsx b/cca/templates/web/pages/index.tsx new file mode 100644 index 00000000..3716e1a7 --- /dev/null +++ b/cca/templates/web/pages/index.tsx @@ -0,0 +1,73 @@ +import Image from 'next/image'; +import { Box, Text, useColorModeValue } from '@interchain-ui/react'; + +import { Button } from '@/components'; +import { useChainStore } from '@/contexts'; +import { useConnectChain, useDetectBreakpoints } from '@/hooks'; + +export default function Home() { + const { isMobile } = useDetectBreakpoints(); + const { selectedChain } = useChainStore(); + const { connect, isWalletConnected, openView } = + useConnectChain(selectedChain); + + const chainsImageSrc = useColorModeValue( + '/images/chains.png', + '/images/chains-dark.png' + ); + + return ( + <> + + Create Cosmos App + + + Welcome to Cosmos Kit +{' '} + Next.js + + + + chains + + + ); +} + +const HighlightText = ({ children }: { children: string }) => { + return ( + + {children} + + ); +}; diff --git a/cca/templates/web/pages/staking.tsx b/cca/templates/web/pages/staking.tsx new file mode 100644 index 00000000..51057e7b --- /dev/null +++ b/cca/templates/web/pages/staking.tsx @@ -0,0 +1,13 @@ +import { ReactNoSSR } from '@interchain-ui/react-no-ssr'; +import { useChainStore } from '@/contexts'; +import { StakingSection } from '@/components'; + +export default function StakingPage() { + const { selectedChain } = useChainStore(); + + return ( + + + + ); +} diff --git a/cca/templates/web/public/images/chains-dark.png b/cca/templates/web/public/images/chains-dark.png new file mode 100644 index 00000000..287c0ae4 Binary files /dev/null and b/cca/templates/web/public/images/chains-dark.png differ diff --git a/cca/templates/web/public/images/chains.png b/cca/templates/web/public/images/chains.png new file mode 100644 index 00000000..71de98c3 Binary files /dev/null and b/cca/templates/web/public/images/chains.png differ diff --git a/cca/templates/web/public/images/contract-file-dark.svg b/cca/templates/web/public/images/contract-file-dark.svg new file mode 100644 index 00000000..bede0b52 --- /dev/null +++ b/cca/templates/web/public/images/contract-file-dark.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/cca/templates/web/public/images/contract-file.svg b/cca/templates/web/public/images/contract-file.svg new file mode 100644 index 00000000..e2bfcc6f --- /dev/null +++ b/cca/templates/web/public/images/contract-file.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/cca/templates/web/public/images/empty.svg b/cca/templates/web/public/images/empty.svg new file mode 100644 index 00000000..fec305ff --- /dev/null +++ b/cca/templates/web/public/images/empty.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/cca/templates/web/public/images/favicon.ico b/cca/templates/web/public/images/favicon.ico new file mode 100644 index 00000000..d7b1d76a Binary files /dev/null and b/cca/templates/web/public/images/favicon.ico differ diff --git a/cca/templates/web/public/images/upload-dark.svg b/cca/templates/web/public/images/upload-dark.svg new file mode 100644 index 00000000..be53406c --- /dev/null +++ b/cca/templates/web/public/images/upload-dark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cca/templates/web/public/images/upload.svg b/cca/templates/web/public/images/upload.svg new file mode 100644 index 00000000..388c4035 --- /dev/null +++ b/cca/templates/web/public/images/upload.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cca/templates/web/public/logos/brand-logo-dark.svg b/cca/templates/web/public/logos/brand-logo-dark.svg new file mode 100644 index 00000000..e6d02d4d --- /dev/null +++ b/cca/templates/web/public/logos/brand-logo-dark.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/cca/templates/web/public/logos/brand-logo-sm-dark.svg b/cca/templates/web/public/logos/brand-logo-sm-dark.svg new file mode 100644 index 00000000..45876097 --- /dev/null +++ b/cca/templates/web/public/logos/brand-logo-sm-dark.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/cca/templates/web/public/logos/brand-logo-sm.svg b/cca/templates/web/public/logos/brand-logo-sm.svg new file mode 100644 index 00000000..a692bc2d --- /dev/null +++ b/cca/templates/web/public/logos/brand-logo-sm.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/cca/templates/web/public/logos/brand-logo.svg b/cca/templates/web/public/logos/brand-logo.svg new file mode 100644 index 00000000..719d5891 --- /dev/null +++ b/cca/templates/web/public/logos/brand-logo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/cca/templates/web/public/logos/cosmology-dark.svg b/cca/templates/web/public/logos/cosmology-dark.svg new file mode 100644 index 00000000..bf63a61e --- /dev/null +++ b/cca/templates/web/public/logos/cosmology-dark.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/cca/templates/web/public/logos/cosmology.svg b/cca/templates/web/public/logos/cosmology.svg new file mode 100644 index 00000000..2bf50f5b --- /dev/null +++ b/cca/templates/web/public/logos/cosmology.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/cca/templates/web/styles/comp.module.css b/cca/templates/web/styles/comp.module.css new file mode 100644 index 00000000..f4f95303 --- /dev/null +++ b/cca/templates/web/styles/comp.module.css @@ -0,0 +1,17 @@ +.tabs { + width: 100%; +} + +.tabs ul { + max-width: 600px; + min-width: auto; + margin: 0 auto; +} + +.input-pl { + padding-left: 36px; +} + +.input-pr { + padding-right: 66px; +} diff --git a/cca/templates/web/styles/globals.css b/cca/templates/web/styles/globals.css new file mode 100644 index 00000000..e5e2dcc2 --- /dev/null +++ b/cca/templates/web/styles/globals.css @@ -0,0 +1,16 @@ +html, +body { + padding: 0; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; +} + +a { + color: inherit; + text-decoration: none; +} + +* { + box-sizing: border-box; +} diff --git a/cca/templates/web/styles/layout.module.css b/cca/templates/web/styles/layout.module.css new file mode 100644 index 00000000..dd0895bc --- /dev/null +++ b/cca/templates/web/styles/layout.module.css @@ -0,0 +1,3 @@ +.layout { + padding-left: calc(100vw - 100%); /* prevent scrollbar layout shift */ +} diff --git a/cca/templates/web/styles/utils.module.css b/cca/templates/web/styles/utils.module.css new file mode 100644 index 00000000..a6a6583c --- /dev/null +++ b/cca/templates/web/styles/utils.module.css @@ -0,0 +1,9 @@ +.threeLineClamp { + display: -webkit-box; + line-clamp: 3; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; +} diff --git a/cca/templates/web/tsconfig.json b/cca/templates/web/tsconfig.json new file mode 100644 index 00000000..61581e45 --- /dev/null +++ b/cca/templates/web/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "baseUrl": ".", + "paths": { + "@/*": ["*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/cca/templates/web/utils/common.ts b/cca/templates/web/utils/common.ts new file mode 100644 index 00000000..0ba2ca4d --- /dev/null +++ b/cca/templates/web/utils/common.ts @@ -0,0 +1,54 @@ +import { assets } from 'chain-registry'; +import { Asset, AssetList } from '@chain-registry/types'; +import { GasPrice } from '@cosmjs/stargate'; +import { SignerOptions, Wallet } from '@cosmos-kit/core'; + +export const getChainAssets = (chainName: string) => { + return assets.find((chain) => chain.chain_name === chainName) as AssetList; +}; + +export const getCoin = (chainName: string) => { + const chainAssets = getChainAssets(chainName); + return chainAssets.assets[0] as Asset; +}; + +export const getExponent = (chainName: string) => { + return getCoin(chainName).denom_units.find( + (unit) => unit.denom === getCoin(chainName).display, + )?.exponent as number; +}; + +export const shortenAddress = (address: string, partLength = 6) => { + return `${address.slice(0, partLength)}...${address.slice(-partLength)}`; +}; + +export const getWalletLogo = (wallet: Wallet) => { + if (!wallet?.logo) return ''; + + return typeof wallet.logo === 'string' + ? wallet.logo + : wallet.logo.major || wallet.logo.minor; +}; + +export const getSignerOptions = (): SignerOptions => { + const defaultGasPrice = GasPrice.fromString('0.025uatom'); + + return { + // @ts-ignore + signingStargate: (chain) => { + if (typeof chain === 'string') { + return { gasPrice: defaultGasPrice }; + } + let gasPrice; + try { + const feeToken = chain.fees?.fee_tokens[0]; + const fee = `${feeToken?.average_gas_price || 0.025}${feeToken?.denom}`; + gasPrice = GasPrice.fromString(fee); + } catch (error) { + gasPrice = defaultGasPrice; + } + return { gasPrice }; + }, + preferredSignType: () => 'direct', + }; +}; diff --git a/cca/templates/web/utils/contract.ts b/cca/templates/web/utils/contract.ts new file mode 100644 index 00000000..1946a709 --- /dev/null +++ b/cca/templates/web/utils/contract.ts @@ -0,0 +1,187 @@ +import { Asset, AssetList, Chain } from '@chain-registry/types'; +import { toBech32, fromBech32 } from '@cosmjs/encoding'; +import { DeliverTxResponse } from '@cosmjs/cosmwasm-stargate'; +import { Coin, logs, parseCoins } from '@cosmjs/stargate'; +import { CodeInfoResponse } from 'interchain-query/cosmwasm/wasm/v1/query'; +import { AccessType } from 'interchain-query/cosmwasm/wasm/v1/types'; +import BigNumber from 'bignumber.js'; + +export const validateContractAddress = ( + address: string, + bech32Prefix: string +) => { + if (!bech32Prefix) + return 'Cannot retrieve bech32 prefix of the current network.'; + + if (!address.startsWith(bech32Prefix)) + return `Invalid prefix (expected "${bech32Prefix}")`; + + const bytes = Array.from(Array(32).keys()); + const exampleAddress = toBech32(bech32Prefix, new Uint8Array(bytes)); + + if (address.length !== exampleAddress.length) return 'Invalid address length'; + + try { + fromBech32(address); + } catch (e) { + return (e as Error).message; + } + + return null; +}; + +export const validateJson = (text: string) => { + try { + if (text.trim().length === 0) + throw new SyntaxError(`Can't use empty string`); + JSON.parse(text); + return null; + } catch (error) { + return (error as SyntaxError).message; + } +}; + +export const prettifyJson = (text: string) => { + try { + return JSON.stringify(JSON.parse(text), null, 2); + } catch { + return text; + } +}; + +export const countJsonLines = (text: string) => text.split(/\n/).length; + +export const getExplorerLink = (chain: Chain, txHash: string) => { + const txPageLink = chain.explorers?.[0].tx_page ?? ''; + return `${txPageLink.replace('${txHash}', txHash)}`; +}; + +export const getExponentFromAsset = (asset: Asset) => { + return asset.denom_units.find((unit) => unit.denom === asset.display) + ?.exponent; +}; + +export const bytesToKb = (bytes: number) => { + return BigNumber(bytes) + .dividedBy(1000) + .toFixed(bytes >= 1000 ? 0 : 2); +}; + +export const findAttr = ( + events: logs.Log['events'], + eventType: string, + attrKey: string +) => { + const mimicLog: logs.Log = { + msg_index: 0, + log: '', + events, + }; + + try { + return logs.findAttribute([mimicLog], eventType, attrKey).value; + } catch { + return undefined; + } +}; + +export type PrettyTxResult = { + codeId: string; + codeHash: string; + txHash: string; + txFee: string; +}; + +export const prettyStoreCodeTxResult = ( + txResponse: DeliverTxResponse +): PrettyTxResult => { + const events = txResponse.events; + const codeId = findAttr(events, 'store_code', 'code_id') ?? '0'; + const codeHash = findAttr(events, 'store_code', 'code_checksum') ?? ''; + const txHash = txResponse.transactionHash; + const txFee = + txResponse.events.find((e) => e.type === 'tx')?.attributes[0].value ?? ''; + + return { + codeId, + codeHash, + txHash, + txFee, + }; +}; + +export const formatTxFee = (txFee: string, assets: AssetList) => { + let coins: Coin[] = []; + + try { + coins = parseCoins(txFee); + } catch (e) { + console.error(e); + } + + if (coins.length === 0) return '--'; + + const denom = coins[0].denom; + const amount = coins[0].amount; + const asset = assets.assets.find((asset) => asset.base === denom); + if (!asset) return '--'; + + const exponent = getExponentFromAsset(asset); + if (!exponent) return '--'; + + const displayAmount = BigNumber(amount).shiftedBy(-exponent).toFixed(); + return `${displayAmount} ${asset.symbol}`; +}; + +export const splitCamelCase = (text: string): string => { + return text.replace(/([A-Z])/g, ' $1').trim(); +}; + +export const resolvePermission = ( + address: string, + permission: AccessType, + permissionAddresses: string[] = [] +): boolean => + permission === AccessType.ACCESS_TYPE_EVERYBODY || + (address ? permissionAddresses.includes(address) : false); + +export interface CodeInfo { + id: number; + uploader: string; + permission: AccessType; + addresses: string[]; +} + +export const prettyCodeInfo = (rawCodeInfo: CodeInfoResponse): CodeInfo => { + const { codeId, creator, instantiatePermission } = rawCodeInfo; + + return { + id: Number(codeId), + permission: instantiatePermission?.permission!, + uploader: creator, + addresses: instantiatePermission?.addresses || [], + }; +}; + +export const isPositiveInt = (input: string): boolean => { + if (input.startsWith('0x')) return false; + const numberValue = Number(input); + return Number.isInteger(numberValue) && numberValue > 0; +}; + +export const isValidCodeId = (input: string): boolean => + input.length <= 7 && isPositiveInt(input); + +export const toKebabCase = (str: string): string => { + return str + .split(/(?=[A-Z])/) + .join('-') + .toLowerCase(); +}; + +export const toPascalCase = (str: string): string => { + return str + .split('-') + .map((s) => s.charAt(0).toUpperCase() + s.slice(1)) + .join(''); +}; diff --git a/cca/templates/web/utils/faucet.ts b/cca/templates/web/utils/faucet.ts new file mode 100644 index 00000000..699c8bd9 --- /dev/null +++ b/cca/templates/web/utils/faucet.ts @@ -0,0 +1,82 @@ +import { Asset, Chain } from '@chain-registry/types'; +import { ChainInfo, Currency } from '@keplr-wallet/types'; +import { fromBech32 } from '@cosmjs/encoding'; + +export const makeKeplrChainInfo = (chain: Chain, asset: Asset): ChainInfo => { + const currency: Currency = { + coinDenom: asset.symbol, + coinMinimalDenom: asset.base, + coinDecimals: + asset.denom_units.find(({ denom }) => denom === asset.display) + ?.exponent ?? 6, + coinGeckoId: asset.coingecko_id, + coinImageUrl: + asset.logo_URIs?.svg || + asset.logo_URIs?.png || + asset.logo_URIs?.jpeg || + '', + }; + + return { + rpc: chain.apis?.rpc?.[0].address ?? '', + rest: chain.apis?.rest?.[0].address ?? '', + chainId: chain.chain_id, + chainName: chain.chain_name, + bip44: { + coinType: 118, + }, + bech32Config: { + bech32PrefixAccAddr: chain.bech32_prefix, + bech32PrefixAccPub: chain.bech32_prefix + 'pub', + bech32PrefixValAddr: chain.bech32_prefix + 'valoper', + bech32PrefixValPub: chain.bech32_prefix + 'valoperpub', + bech32PrefixConsAddr: chain.bech32_prefix + 'valcons', + bech32PrefixConsPub: chain.bech32_prefix + 'valconspub', + }, + currencies: [currency], + feeCurrencies: [ + { + ...currency, + gasPriceStep: { + low: chain.fees?.fee_tokens[0].low_gas_price ?? 0.0025, + average: chain.fees?.fee_tokens[0].average_gas_price ?? 0.025, + high: chain.fees?.fee_tokens[0].high_gas_price ?? 0.04, + }, + }, + ], + stakeCurrency: currency, + }; +}; + +export const creditFromFaucet = async ( + address: string, + denom: string, + port: number +) => { + const faucetEndpoint = `http://localhost:${port}/credit`; + + await fetch(faucetEndpoint, { + method: 'POST', + body: JSON.stringify({ + address, + denom, + }), + headers: { + 'Content-type': 'application/json', + }, + }); +}; + +export const validateChainAddress = (address: string, bech32Prefix: string) => { + if (!address.startsWith(bech32Prefix)) { + return `Invalid prefix (expected "${bech32Prefix}")`; + } + + try { + fromBech32(address); + } catch (e) { + return 'Invalid address'; + } + + return null; +}; diff --git a/cca/templates/web/utils/index.ts b/cca/templates/web/utils/index.ts new file mode 100644 index 00000000..3e96554e --- /dev/null +++ b/cca/templates/web/utils/index.ts @@ -0,0 +1,5 @@ +export * from './common'; +export * from './staking'; +export * from './voting'; +export * from './contract'; +export * from './faucet'; diff --git a/cca/templates/web/utils/staking/index.ts b/cca/templates/web/utils/staking/index.ts new file mode 100644 index 00000000..1814eb8c --- /dev/null +++ b/cca/templates/web/utils/staking/index.ts @@ -0,0 +1,3 @@ +export * from './math'; +export * from './logos'; +export * from './staking'; diff --git a/cca/templates/web/utils/staking/logos.ts b/cca/templates/web/utils/staking/logos.ts new file mode 100644 index 00000000..e0e256d2 --- /dev/null +++ b/cca/templates/web/utils/staking/logos.ts @@ -0,0 +1,123 @@ +import { ExtendedValidator as Validator } from './staking'; + +type ImageSource = { + imageSource: 'cosmostation' | 'keybase'; +}; + +export const splitIntoChunks = (arr: any[], chunkSize: number) => { + const res = []; + for (let i = 0; i < arr.length; i += chunkSize) { + const chunk = arr.slice(i, i + chunkSize); + res.push(chunk); + } + return res; +}; + +export const convertChainName = (chainName: string) => { + if (chainName.endsWith('testnet')) { + return chainName.replace('testnet', '-testnet'); + } + + switch (chainName) { + case 'cosmoshub': + return 'cosmos'; + case 'assetmantle': + return 'asset-mantle'; + case 'cryptoorgchain': + return 'crypto-org'; + case 'dig': + return 'dig-chain'; + case 'gravitybridge': + return 'gravity-bridge'; + case 'kichain': + return 'ki-chain'; + case 'oraichain': + return 'orai-chain'; + case 'terra': + return 'terra-classic'; + default: + return chainName; + } +}; + +export const isUrlValid = async (url: string) => { + const res = await fetch(url, { method: 'HEAD' }); + const contentType = res?.headers?.get('Content-Type') || ''; + return contentType.startsWith('image'); +}; + +export const getCosmostationUrl = ( + chainName: string, + validatorAddr: string +) => { + const cosmostationChainName = convertChainName(chainName); + return `https://raw.githubusercontent.com/cosmostation/chainlist/main/chain/${cosmostationChainName}/moniker/${validatorAddr}.png`; +}; + +export const getKeybaseUrl = (identity: string) => { + return `https://keybase.io/_/api/1.0/user/lookup.json?key_suffix=${identity}&fields=pictures`; +}; + +export const addLogoUrlSource = async ( + validator: Validator, + chainName: string +): Promise => { + const url = getCosmostationUrl(chainName, validator.address); + const isValid = await isUrlValid(url); + return { ...validator, imageSource: isValid ? 'cosmostation' : 'keybase' }; +}; + +export const getLogoUrls = async ( + validators: Validator[], + chainName: string +) => { + const validatorsWithImgSource = await Promise.all( + validators.map((validator) => addLogoUrlSource(validator, chainName)) + ); + + // cosmostation urls + const cosmostationUrls = validatorsWithImgSource + .filter((validator) => validator.imageSource === 'cosmostation') + .map(({ address }) => { + return { + address, + url: getCosmostationUrl(chainName, address), + }; + }); + + // keybase urls + const keybaseIdentities = validatorsWithImgSource + .filter((validator) => validator.imageSource === 'keybase') + .map(({ address, identity }) => ({ + address, + identity, + })); + + const chunkedIdentities = splitIntoChunks(keybaseIdentities, 20); + + let responses: any[] = []; + + for (const chunk of chunkedIdentities) { + const logoUrlRequests = chunk.map(({ address, identity }) => { + if (!identity) return { address, url: '' }; + + return fetch(getKeybaseUrl(identity)) + .then((response) => response.json()) + .then((res) => ({ + address, + url: res.them?.[0]?.pictures?.primary.url || '', + })); + }); + responses = [...responses, await Promise.all(logoUrlRequests)]; + await new Promise((resolve) => setTimeout(resolve, 500)); + } + + const keybaseUrls = responses.flat(); + + const allUrls = [...cosmostationUrls, ...keybaseUrls].reduce( + (prev, cur) => ({ ...prev, [cur.address]: cur.url }), + {} + ); + + return allUrls; +}; diff --git a/cca/templates/web/utils/staking/math.ts b/cca/templates/web/utils/staking/math.ts new file mode 100644 index 00000000..bec54f51 --- /dev/null +++ b/cca/templates/web/utils/staking/math.ts @@ -0,0 +1,48 @@ +import { Prices } from '@/hooks'; +import BigNumber from 'bignumber.js'; + +export const isGreaterThanZero = (val: number | string | undefined) => { + return new BigNumber(val || 0).gt(0); +}; + +export const shiftDigits = ( + num: string | number, + places: number, + decimalPlaces?: number +) => { + return new BigNumber(num) + .shiftedBy(places) + .decimalPlaces(decimalPlaces || 6) + .toString(); +}; + +export const toNumber = (val: string, decimals: number = 6) => { + return new BigNumber(val).decimalPlaces(decimals).toNumber(); +}; + +export const sum = (...args: string[]) => { + return args + .reduce( + (prev, cur) => prev.plus(new BigNumber(cur).isNaN() ? 0 : cur), + new BigNumber(0) + ) + .toString(); +}; + +export const calcDollarValue = ( + denom: string, + amount: string | number, + prices: Prices +) => { + return new BigNumber(prices?.[denom] || 0) + .times(amount) + .decimalPlaces(2) + .toNumber(); +}; + +export const toBaseAmount = (num: string | number, places: number) => { + return new BigNumber(num) + .shiftedBy(places) + .integerValue(BigNumber.ROUND_DOWN) + .toString(); +}; diff --git a/cca/templates/web/utils/staking/staking.ts b/cca/templates/web/utils/staking/staking.ts new file mode 100644 index 00000000..6a279b7d --- /dev/null +++ b/cca/templates/web/utils/staking/staking.ts @@ -0,0 +1,180 @@ +import { QueryDelegationTotalRewardsResponse } from 'interchain-query/cosmos/distribution/v1beta1/query'; +import { + Pool, + Validator, +} from 'interchain-query/cosmos/staking/v1beta1/staking'; +import { isGreaterThanZero, shiftDigits, toNumber } from '.'; +import { Coin, decodeCosmosSdkDecFromProto } from '@cosmjs/stargate'; +import { + QueryDelegatorDelegationsResponse, + QueryParamsResponse, +} from 'interchain-query/cosmos/staking/v1beta1/query'; +import BigNumber from 'bignumber.js'; +import { QueryAnnualProvisionsResponse } from 'interchain-query/cosmos/mint/v1beta1/query'; +import type { Asset } from '@chain-registry/types'; + +const DAY_TO_SECONDS = 24 * 60 * 60; +const ZERO = '0'; + +export const calcStakingApr = ({ + pool, + commission, + communityTax, + annualProvisions, +}: ChainMetaData & { commission: string }) => { + const totalSupply = new BigNumber(pool?.bondedTokens || 0).plus( + pool?.notBondedTokens || 0 + ); + + const bondedTokensRatio = new BigNumber(pool?.bondedTokens || 0).div( + totalSupply + ); + + const inflation = new BigNumber(annualProvisions || 0).div(totalSupply); + + const one = new BigNumber(1); + + return inflation + .multipliedBy(one.minus(communityTax || 0)) + .div(bondedTokensRatio) + .multipliedBy(one.minus(commission)) + .shiftedBy(2) + .decimalPlaces(2, BigNumber.ROUND_DOWN) + .toString(); +}; + +export const decodeUint8Arr = (uint8array: Uint8Array | undefined) => { + if (!uint8array) return ''; + return new TextDecoder('utf-8').decode(uint8array); +}; + +const formatCommission = (commission: string) => { + return new BigNumber(commission).isLessThan(1) + ? commission + : shiftDigits(commission, -18); +}; + +export type ParsedValidator = ReturnType[0]; + +export const parseValidators = (validators: Validator[]) => { + return validators.map((validator) => ({ + description: validator.description?.details || '', + name: validator.description?.moniker || '', + identity: validator.description?.identity || '', + address: validator.operatorAddress, + commission: formatCommission( + validator.commission?.commissionRates?.rate || '0' + ), + votingPower: toNumber(shiftDigits(validator.tokens, -6, 4), 4), + })); +}; + +export type ExtendedValidator = ReturnType[0]; + +export type ChainMetaData = { + annualProvisions: string; + communityTax: string; + pool: Pool; +}; + +export const extendValidators = ( + validators: ParsedValidator[] = [], + delegations: ParsedDelegations = [], + rewards: ParsedRewards['byValidators'] = [], + chainMetadata: ChainMetaData +) => { + const { annualProvisions, communityTax, pool } = chainMetadata; + + return validators.map((validator) => { + const { address, commission } = validator; + + const delegation = + delegations.find(({ validatorAddress }) => validatorAddress === address) + ?.amount || ZERO; + const reward = + rewards.find(({ validatorAddress }) => validatorAddress === address) + ?.amount || ZERO; + + const apr = + annualProvisions && communityTax && pool && commission + ? calcStakingApr({ annualProvisions, commission, communityTax, pool }) + : null; + + return { ...validator, delegation, reward, apr }; + }); +}; + +const findAndDecodeReward = ( + coins: Coin[], + denom: string, + exponent: number +) => { + const amount = coins.find((coin) => coin.denom === denom)?.amount || ZERO; + const decodedAmount = decodeCosmosSdkDecFromProto(amount).toString(); + return shiftDigits(decodedAmount, exponent); +}; + +export type ParsedRewards = ReturnType; + +export const parseRewards = ( + { rewards, total }: QueryDelegationTotalRewardsResponse, + denom: string, + exponent: number +) => { + if (!rewards || !total) return { byValidators: [], total: ZERO }; + + const totalReward = findAndDecodeReward(total, denom, exponent); + + const rewardsParsed = rewards.map(({ reward, validatorAddress }) => ({ + validatorAddress, + amount: findAndDecodeReward(reward, denom, exponent), + })); + + return { byValidators: rewardsParsed, total: totalReward }; +}; + +export type ParsedDelegations = ReturnType; + +export const parseDelegations = ( + delegations: QueryDelegatorDelegationsResponse['delegationResponses'], + exponent: number +) => { + if (!delegations) return []; + return delegations.map(({ balance, delegation }) => ({ + validatorAddress: delegation?.validatorAddress || '', + amount: shiftDigits(balance?.amount || ZERO, exponent), + })); +}; + +export const calcTotalDelegation = (delegations: ParsedDelegations) => { + if (!delegations) return ZERO; + + return delegations + .reduce((prev, cur) => prev.plus(cur.amount), new BigNumber(0)) + .toString(); +}; + +export const parseUnbondingDays = (params: QueryParamsResponse['params']) => { + return new BigNumber(Number(params?.unbondingTime?.seconds || 0)) + .div(DAY_TO_SECONDS) + .decimalPlaces(0) + .toString(); +}; + +export const parseAnnualProvisions = (data: QueryAnnualProvisionsResponse) => { + const res = shiftDigits(decodeUint8Arr(data?.annualProvisions), -18); + return isGreaterThanZero(res) ? res : null; +}; + +export const getAssetLogoUrl = (asset: Asset): string => { + return Object.values(asset?.logo_URIs || {})?.[0] || ''; +}; + +export const formatValidatorMetaInfo = ( + validator: ExtendedValidator +): string => { + const commissionStr = `Commission ${shiftDigits(validator.commission, 2)}%`; + const aprStr = validator.apr ? `APR ${validator.apr}%` : ''; + + return [commissionStr, aprStr].filter(Boolean).join(' | '); +}; diff --git a/cca/templates/web/utils/voting.ts b/cca/templates/web/utils/voting.ts new file mode 100644 index 00000000..38ca488d --- /dev/null +++ b/cca/templates/web/utils/voting.ts @@ -0,0 +1,82 @@ +import dayjs from 'dayjs'; +import BigNumber from 'bignumber.js'; +import { Chain } from '@chain-registry/types'; +import { + Proposal, + ProposalStatus, +} from 'interchain-query/cosmos/gov/v1beta1/gov'; + +export function getChainLogo(chain: Chain) { + return chain.logo_URIs?.svg || chain.logo_URIs?.png || chain.logo_URIs?.jpeg; +} + +export function formatDate(date?: Date) { + if (!date) return null; + return dayjs(date).format('YYYY-MM-DD HH:mm:ss'); +} + +export function paginate(limit: bigint, reverse: boolean = false) { + return { + limit, + reverse, + key: new Uint8Array(), + offset: 0n, + countTotal: true, + }; +} + +export function percent(num: number | string = 0, total: number, decimals = 2) { + return total + ? new BigNumber(num) + .dividedBy(total) + .multipliedBy(100) + .decimalPlaces(decimals) + .toNumber() + : 0; +} + +export const exponentiate = (num: number | string | undefined, exp: number) => { + if (!num) return 0; + return new BigNumber(num) + .multipliedBy(new BigNumber(10).exponentiatedBy(exp)) + .toNumber(); +}; + +export function decodeUint8Array(value?: Uint8Array) { + return value ? new TextDecoder('utf-8').decode(value) : ''; +} + +export function getTitle(value?: Uint8Array) { + return decodeUint8Array(value) + .slice(0, 250) + .match(/[A-Z][A-Za-z].*(?=\u0012)/)?.[0]; +} + +export function parseQuorum(value?: Uint8Array) { + const quorum = decodeUint8Array(value); + return new BigNumber(quorum).shiftedBy(-quorum.length).toNumber(); +} + +export function processProposals(proposals: Proposal[]) { + const sorted = proposals.sort( + (a, b) => Number(b.proposalId) - Number(a.proposalId) + ); + + proposals.forEach((proposal) => { + // @ts-ignore + if (!proposal.content?.title && proposal.content?.value) { + // @ts-ignore + proposal.content.title = getTitle(proposal.content?.value); + } + }); + + return sorted + .filter( + ({ status }) => status === ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD + ) + .concat( + sorted.filter( + ({ status }) => status !== ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD + ) + ); +} diff --git a/cca/templates/web/yarn.lock b/cca/templates/web/yarn.lock new file mode 100644 index 00000000..f0d36278 --- /dev/null +++ b/cca/templates/web/yarn.lock @@ -0,0 +1,11878 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@babel/runtime@npm:^7.12.5": + version: 7.24.4 + resolution: "@babel/runtime@npm:7.24.4" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/785aff96a3aa8ff97f90958e1e8a7b1d47f793b204b47c6455eaadc3f694f48c97cd5c0a921fe3596d818e71f18106610a164fb0f1c71fd68c622a58269d537c + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.23.2": + version: 7.24.6 + resolution: "@babel/runtime@npm:7.24.6" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/224ad205de33ea28979baaec89eea4c4d4e9482000dd87d15b97859365511cdd4d06517712504024f5d33a5fb9412f9b91c96f1d923974adf9359e1575cde049 + languageName: node + linkType: hard + +"@chain-registry/client@npm:^1.48.1": + version: 1.48.31 + resolution: "@chain-registry/client@npm:1.48.31" + dependencies: + "@chain-registry/types": "npm:^0.45.31" + "@chain-registry/utils": "npm:^1.46.31" + bfs-path: "npm:^1.0.2" + cross-fetch: "npm:^3.1.5" + checksum: 10c0/ec4a6fa1ae197b939eab0079464bbca4e7fe82714191ef5d679bb468c97fe71fa664baf8c51583e9db9ac9194ec24a9d598fe20ef0f94dd058f67eff82b4b121 + languageName: node + linkType: hard + +"@chain-registry/cosmostation@npm:1.66.2": + version: 1.66.2 + resolution: "@chain-registry/cosmostation@npm:1.66.2" + dependencies: + "@chain-registry/types": "npm:^0.45.1" + "@chain-registry/utils": "npm:^1.46.1" + "@cosmostation/extension-client": "npm:0.1.15" + checksum: 10c0/6ec2bdfd32b05e93bfef23ee72dd65c2c0a539ae70c5cf22fc7e73602e0172bda1a8343352cf4025e410dfec88aa3abe2a59a76e88fc69f2fe5d867eca9408f9 + languageName: node + linkType: hard + +"@chain-registry/cosmostation@npm:^1.66.2": + version: 1.66.38 + resolution: "@chain-registry/cosmostation@npm:1.66.38" + dependencies: + "@chain-registry/types": "npm:^0.45.31" + "@chain-registry/utils": "npm:^1.46.31" + "@cosmostation/extension-client": "npm:0.1.15" + checksum: 10c0/f781d7b66f9db61802c9ed33da317a5c55e29021cf2572b5b934967c3700fb8449a1c776078770c5ce9dc3e2127a2ed7120fdf64d0703e4338e37803df9883a6 + languageName: node + linkType: hard + +"@chain-registry/keplr@npm:1.68.2": + version: 1.68.2 + resolution: "@chain-registry/keplr@npm:1.68.2" + dependencies: + "@chain-registry/types": "npm:^0.45.1" + "@keplr-wallet/cosmos": "npm:0.12.28" + "@keplr-wallet/crypto": "npm:0.12.28" + semver: "npm:^7.5.0" + checksum: 10c0/a155f2029f7fb366b6aa6169b8774d01a57150af0ca6925024a77d401e9c0302860208520a7dd5fead08a47b65025b1eddd65c77f10d73cbd7be71b2cda8132d + languageName: node + linkType: hard + +"@chain-registry/keplr@npm:^1.68.2": + version: 1.68.38 + resolution: "@chain-registry/keplr@npm:1.68.38" + dependencies: + "@chain-registry/types": "npm:^0.45.31" + "@keplr-wallet/cosmos": "npm:0.12.28" + "@keplr-wallet/crypto": "npm:0.12.28" + semver: "npm:^7.5.0" + checksum: 10c0/afdc3a1eec9184d9b01179ed67b450f7cb218270ab7500517aaca021eaf62806e0436c22cf10ce5d1d36c52d0d13c7b009aa632f020acc8c39249822b683d6b3 + languageName: node + linkType: hard + +"@chain-registry/types@npm:0.44.3": + version: 0.44.3 + resolution: "@chain-registry/types@npm:0.44.3" + checksum: 10c0/471e85e934e42ba2704fece7ca0545df5ef98e947a5d10aaefa7872145a21211036740b4b37bb8a33359561b7533c07c22e1608b372efc19be5e2ebd386ac3de + languageName: node + linkType: hard + +"@chain-registry/types@npm:0.45.1": + version: 0.45.1 + resolution: "@chain-registry/types@npm:0.45.1" + checksum: 10c0/d2008c36e2b9d5b4dfbeae2e4038b956789cf7a70bff85d936fdb76a34a16609952b8b233bd09c3e93eeb9ccde26a5492230d1f3e450b2a7a7b8474df76835a5 + languageName: node + linkType: hard + +"@chain-registry/types@npm:^0.45.1, @chain-registry/types@npm:^0.45.31": + version: 0.45.31 + resolution: "@chain-registry/types@npm:0.45.31" + checksum: 10c0/dcbca6b8fbfbabed00eacf0f15e1863f38493a86d8135987bb591c65f7145fc17403e9b52d8ca1ed2124922964d7336103e03675b48eaa5345950f44f32aaf54 + languageName: node + linkType: hard + +"@chain-registry/types@npm:^0.50.14": + version: 0.50.14 + resolution: "@chain-registry/types@npm:0.50.14" + checksum: 10c0/8801a9f9570128f05b410d412897f857a98a59ec088ab038510fb07b2e3b77f481f1d27bfed540dcdaf96af534ae93453a349712bde795de6dd683e2619d9f75 + languageName: node + linkType: hard + +"@chain-registry/utils@npm:^1.46.1, @chain-registry/utils@npm:^1.46.31": + version: 1.46.31 + resolution: "@chain-registry/utils@npm:1.46.31" + dependencies: + "@chain-registry/types": "npm:^0.45.31" + bignumber.js: "npm:9.1.2" + sha.js: "npm:^2.4.11" + checksum: 10c0/1c4a53f3ac133ffe8d7f6b6c3f15134e204fe375c9b7e66651fc493751f742e3e91a8c130c6fac9e55d7817ad9f0804a7ecd709197fe3ebfdca16044c96bc817 + languageName: node + linkType: hard + +"@classic-terra/terra.proto@npm:^1.1.0": + version: 1.1.0 + resolution: "@classic-terra/terra.proto@npm:1.1.0" + dependencies: + "@improbable-eng/grpc-web": "npm:^0.14.1" + google-protobuf: "npm:^3.17.3" + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.2" + checksum: 10c0/b285534bf7242286a9780a484d10d901af491bbfad1b3697f7b3439dc824ae7658ad8d2a8c3af179ef772c66a2c3c5d6118b055b0a087bea29e5a98abdfd6072 + languageName: node + linkType: hard + +"@confio/ics23@npm:^0.6.8": + version: 0.6.8 + resolution: "@confio/ics23@npm:0.6.8" + dependencies: + "@noble/hashes": "npm:^1.0.0" + protobufjs: "npm:^6.8.8" + checksum: 10c0/2f3f5032cd6a34c9b2fbd64bbf7e1cdec75ca71f348a770f7b5474b5027b12202bfbcd404eca931efddb5901f769af035a87cb8bddbf3f23d7e5d93c9d3d7f6f + languageName: node + linkType: hard + +"@cosmjs/amino@npm:0.29.4": + version: 0.29.4 + resolution: "@cosmjs/amino@npm:0.29.4" + dependencies: + "@cosmjs/crypto": "npm:^0.29.4" + "@cosmjs/encoding": "npm:^0.29.4" + "@cosmjs/math": "npm:^0.29.4" + "@cosmjs/utils": "npm:^0.29.4" + checksum: 10c0/c740fe4c6d8adf157d560bba5d1b8213502725dad1d39516bf809f9b29001e04c22a9b8c63781953d0ddc3c857bf819f10ab42681ec0fe3f7050ffb8eae659f2 + languageName: node + linkType: hard + +"@cosmjs/amino@npm:0.32.3, @cosmjs/amino@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/amino@npm:0.32.3" + dependencies: + "@cosmjs/crypto": "npm:^0.32.3" + "@cosmjs/encoding": "npm:^0.32.3" + "@cosmjs/math": "npm:^0.32.3" + "@cosmjs/utils": "npm:^0.32.3" + checksum: 10c0/6f3da2ba6d88257d6717898af798aad9f2a51bb2c0d0b61cd40cf103c86a1431f4fa5086df350f81371d3282b8a28bcbc4f97c6d9eb83a9831fad473ae1ab492 + languageName: node + linkType: hard + +"@cosmjs/amino@npm:^0.29.4, @cosmjs/amino@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/amino@npm:0.29.5" + dependencies: + "@cosmjs/crypto": "npm:^0.29.5" + "@cosmjs/encoding": "npm:^0.29.5" + "@cosmjs/math": "npm:^0.29.5" + "@cosmjs/utils": "npm:^0.29.5" + checksum: 10c0/bf8ec4d2412997aea89997fa07474c8590b02ac9337b3e87e68e8c9295d1001cf3f41a660a72208dc4e005d5a25620483c8eac21f7fa1b0a6adc6b6eeaee2a4a + languageName: node + linkType: hard + +"@cosmjs/amino@npm:^0.31.1, @cosmjs/amino@npm:^0.31.3": + version: 0.31.3 + resolution: "@cosmjs/amino@npm:0.31.3" + dependencies: + "@cosmjs/crypto": "npm:^0.31.3" + "@cosmjs/encoding": "npm:^0.31.3" + "@cosmjs/math": "npm:^0.31.3" + "@cosmjs/utils": "npm:^0.31.3" + checksum: 10c0/2f5f866df043bef072ef8802844beacd282027dcc32f69428fe98e256d5fec0dd4a45a4c7d6c45c8a7d7f4387893ef02c8b471a32d6450215f56157d6eaa467e + languageName: node + linkType: hard + +"@cosmjs/amino@npm:^0.32.0, @cosmjs/amino@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/amino@npm:0.32.4" + dependencies: + "@cosmjs/crypto": "npm:^0.32.4" + "@cosmjs/encoding": "npm:^0.32.4" + "@cosmjs/math": "npm:^0.32.4" + "@cosmjs/utils": "npm:^0.32.4" + checksum: 10c0/cd8e215b0406f5c7b73ab0a21106d06b6f76b1da12f1ab7b612884e1dd8bc626966dc67d4e7580090ade131546cbec70000f854e6596935299d054b788929a7e + languageName: node + linkType: hard + +"@cosmjs/cosmwasm-stargate@npm:0.32.3": + version: 0.32.3 + resolution: "@cosmjs/cosmwasm-stargate@npm:0.32.3" + dependencies: + "@cosmjs/amino": "npm:^0.32.3" + "@cosmjs/crypto": "npm:^0.32.3" + "@cosmjs/encoding": "npm:^0.32.3" + "@cosmjs/math": "npm:^0.32.3" + "@cosmjs/proto-signing": "npm:^0.32.3" + "@cosmjs/stargate": "npm:^0.32.3" + "@cosmjs/tendermint-rpc": "npm:^0.32.3" + "@cosmjs/utils": "npm:^0.32.3" + cosmjs-types: "npm:^0.9.0" + pako: "npm:^2.0.2" + checksum: 10c0/e33110be3004a462134c21f356066d16ba478664b4bbccd834c9d8b3f8156b6f94c14df8cf235803f13237f1408c12dcf5f9f64f4011dcca9a49298857c0c74c + languageName: node + linkType: hard + +"@cosmjs/cosmwasm-stargate@npm:^0.32.3": + version: 0.32.4 + resolution: "@cosmjs/cosmwasm-stargate@npm:0.32.4" + dependencies: + "@cosmjs/amino": "npm:^0.32.4" + "@cosmjs/crypto": "npm:^0.32.4" + "@cosmjs/encoding": "npm:^0.32.4" + "@cosmjs/math": "npm:^0.32.4" + "@cosmjs/proto-signing": "npm:^0.32.4" + "@cosmjs/stargate": "npm:^0.32.4" + "@cosmjs/tendermint-rpc": "npm:^0.32.4" + "@cosmjs/utils": "npm:^0.32.4" + cosmjs-types: "npm:^0.9.0" + pako: "npm:^2.0.2" + checksum: 10c0/f7e285c51ef8b1098a9ea5ca2546a1e226b4fa0a990d95faa6f3b752f3638b6c55f36a56b6f4b11f0a66fd61e3ae8772921d8e99418218df0b2205efe1c82f37 + languageName: node + linkType: hard + +"@cosmjs/crypto@npm:^0.29.4, @cosmjs/crypto@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/crypto@npm:0.29.5" + dependencies: + "@cosmjs/encoding": "npm:^0.29.5" + "@cosmjs/math": "npm:^0.29.5" + "@cosmjs/utils": "npm:^0.29.5" + "@noble/hashes": "npm:^1" + bn.js: "npm:^5.2.0" + elliptic: "npm:^6.5.4" + libsodium-wrappers: "npm:^0.7.6" + checksum: 10c0/5f4706cd4b80853e0e3891252e9eab414334ca4a50afd7d6efeca5525dbb612c0cb1828b04119419ea4ac6bad74f6c4771b7ab6a7b840cc91971a49eb7f6f2dc + languageName: node + linkType: hard + +"@cosmjs/crypto@npm:^0.31.3": + version: 0.31.3 + resolution: "@cosmjs/crypto@npm:0.31.3" + dependencies: + "@cosmjs/encoding": "npm:^0.31.3" + "@cosmjs/math": "npm:^0.31.3" + "@cosmjs/utils": "npm:^0.31.3" + "@noble/hashes": "npm:^1" + bn.js: "npm:^5.2.0" + elliptic: "npm:^6.5.4" + libsodium-wrappers-sumo: "npm:^0.7.11" + checksum: 10c0/595de61be8832c0f012e80343427efc5f7dec6157f31410908edefcae710f31bed723b50d0979b66d961765854e76d89e6942b5430a727f458b8d7e67fc7b174 + languageName: node + linkType: hard + +"@cosmjs/crypto@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/crypto@npm:0.32.3" + dependencies: + "@cosmjs/encoding": "npm:^0.32.3" + "@cosmjs/math": "npm:^0.32.3" + "@cosmjs/utils": "npm:^0.32.3" + "@noble/hashes": "npm:^1" + bn.js: "npm:^5.2.0" + elliptic: "npm:^6.5.4" + libsodium-wrappers-sumo: "npm:^0.7.11" + checksum: 10c0/6925ee15c31d2ed6dfbda666834b188f81706d9c83b9afef27d88e4330cf516addcfcb7f9374dc4513bfea27c5fc717ff49679de9c45b282e601c93b67ac7c98 + languageName: node + linkType: hard + +"@cosmjs/crypto@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/crypto@npm:0.32.4" + dependencies: + "@cosmjs/encoding": "npm:^0.32.4" + "@cosmjs/math": "npm:^0.32.4" + "@cosmjs/utils": "npm:^0.32.4" + "@noble/hashes": "npm:^1" + bn.js: "npm:^5.2.0" + elliptic: "npm:^6.5.4" + libsodium-wrappers-sumo: "npm:^0.7.11" + checksum: 10c0/94e742285eb8c7c5393055ba0635f10c06bf87710e953aedc71e3edc2b8e21a12a0d9b5e8eff37e326765f57c9eb3c7fd358f24f639efad4f1a6624eb8189534 + languageName: node + linkType: hard + +"@cosmjs/encoding@npm:^0.29.4, @cosmjs/encoding@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/encoding@npm:0.29.5" + dependencies: + base64-js: "npm:^1.3.0" + bech32: "npm:^1.1.4" + readonly-date: "npm:^1.0.0" + checksum: 10c0/2a5a455766aa763dc0cc73ac4eb4040e895f8675a1bae8935a40c74d931bb97a344a3df75c9b4d95f27109dc04bace842cead983c56992a2f6f57f9253b9c89f + languageName: node + linkType: hard + +"@cosmjs/encoding@npm:^0.31.1, @cosmjs/encoding@npm:^0.31.3": + version: 0.31.3 + resolution: "@cosmjs/encoding@npm:0.31.3" + dependencies: + base64-js: "npm:^1.3.0" + bech32: "npm:^1.1.4" + readonly-date: "npm:^1.0.0" + checksum: 10c0/48eb9f9259bdfd88db280b6b5ea970fd1b3b0f81a8f4253f315ff2c736b27dbe0fdf74405c52ad35fcd4b16f1fde4250c4de936997b9d92e79cb97d98cc538c7 + languageName: node + linkType: hard + +"@cosmjs/encoding@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/encoding@npm:0.32.3" + dependencies: + base64-js: "npm:^1.3.0" + bech32: "npm:^1.1.4" + readonly-date: "npm:^1.0.0" + checksum: 10c0/3c3d4b610093c2c8ca13437664e4736d60cdfb309bf2671f492388c59a9bca20f1a75ab4686a7b73d48aa6208f454bee56c84c0fe780015473ea53353a70266a + languageName: node + linkType: hard + +"@cosmjs/encoding@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/encoding@npm:0.32.4" + dependencies: + base64-js: "npm:^1.3.0" + bech32: "npm:^1.1.4" + readonly-date: "npm:^1.0.0" + checksum: 10c0/4a30d5ae1a2d1247d44bda46101ce208c7666d8801ca9a33de94edc35cc22460c16b4834ec84d5a65ffef5e2a4b58605e0a0a056c46bc0a042979ec84acf20cd + languageName: node + linkType: hard + +"@cosmjs/json-rpc@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/json-rpc@npm:0.29.5" + dependencies: + "@cosmjs/stream": "npm:^0.29.5" + xstream: "npm:^11.14.0" + checksum: 10c0/3616604eacd7987597e9bb656668b45498919f9a4acdf455ffda263d3736e1af30582dcf8ba094ae623bc7d484f4dab07ffd97d9cc479f1205e26b36a1aeab1b + languageName: node + linkType: hard + +"@cosmjs/json-rpc@npm:^0.31.3": + version: 0.31.3 + resolution: "@cosmjs/json-rpc@npm:0.31.3" + dependencies: + "@cosmjs/stream": "npm:^0.31.3" + xstream: "npm:^11.14.0" + checksum: 10c0/8cc8fa9490e512a2865e888b162e2cc38477a6a5b6261fce885579712c880087c8bb2733717eb5fe03c131f31064e1f9060f87ae2a4d1d01d6c465761ab1a32d + languageName: node + linkType: hard + +"@cosmjs/json-rpc@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/json-rpc@npm:0.32.3" + dependencies: + "@cosmjs/stream": "npm:^0.32.3" + xstream: "npm:^11.14.0" + checksum: 10c0/8074cab7b9fcdd27c86329d820edf8be27e5cf12f99b845acb9d2fd8263b9a26557ee0729d293c8965c75117fcccd440d4c32eb314c03eef0d3c4273408302df + languageName: node + linkType: hard + +"@cosmjs/json-rpc@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/json-rpc@npm:0.32.4" + dependencies: + "@cosmjs/stream": "npm:^0.32.4" + xstream: "npm:^11.14.0" + checksum: 10c0/b3ebd240f4fb21260e284d2e503ecc61bac898842187ab717f0efb9a5f21272f161f267cc145629caeb9735f80946844384e2bd410275a4744147a44518c0fa0 + languageName: node + linkType: hard + +"@cosmjs/math@npm:^0.29.4, @cosmjs/math@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/math@npm:0.29.5" + dependencies: + bn.js: "npm:^5.2.0" + checksum: 10c0/e44aedcaf2d72085585612909685c453b6c27397b4506bdfa3556163f33050df5448f6ca076256ed8229ddb12bdd74072b38334d136524180d23d89781deeea7 + languageName: node + linkType: hard + +"@cosmjs/math@npm:^0.31.1, @cosmjs/math@npm:^0.31.3": + version: 0.31.3 + resolution: "@cosmjs/math@npm:0.31.3" + dependencies: + bn.js: "npm:^5.2.0" + checksum: 10c0/7dd742ee6ff52bc322d3cd43b9ab0e15d70b41b74a487f64c23609ffe5abce9a02cbec46a729155608a1abb3bc0067ac97361f0af23453fb0b4c438b17e37a99 + languageName: node + linkType: hard + +"@cosmjs/math@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/math@npm:0.32.3" + dependencies: + bn.js: "npm:^5.2.0" + checksum: 10c0/cad8b13a0db739ef4a416b334e39ea9f55874315ebdf91dc38772676c2ead6caccaf8a28b9e8803fc48680a72cf5a9fde97564f5efbfbe9a9073c95665f31294 + languageName: node + linkType: hard + +"@cosmjs/math@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/math@npm:0.32.4" + dependencies: + bn.js: "npm:^5.2.0" + checksum: 10c0/91e47015be5634d27d71d14c5a05899fb4992b69db02cab1558376dedf8254f96d5e24f097c5601804ae18ed33c7c25d023653ac2bf9d20250fd3e5637f6b101 + languageName: node + linkType: hard + +"@cosmjs/proto-signing@npm:0.29.4": + version: 0.29.4 + resolution: "@cosmjs/proto-signing@npm:0.29.4" + dependencies: + "@cosmjs/amino": "npm:^0.29.4" + "@cosmjs/crypto": "npm:^0.29.4" + "@cosmjs/encoding": "npm:^0.29.4" + "@cosmjs/math": "npm:^0.29.4" + "@cosmjs/utils": "npm:^0.29.4" + cosmjs-types: "npm:^0.5.2" + long: "npm:^4.0.0" + checksum: 10c0/0767efde440354e92aa0853b4c649912cd0b65213211144e39edd6c1c930c3571df9ca7c7005806339201e4b54c22ed8e1c8adb108a096f0aaaa175dab102cd5 + languageName: node + linkType: hard + +"@cosmjs/proto-signing@npm:^0.29.4": + version: 0.29.5 + resolution: "@cosmjs/proto-signing@npm:0.29.5" + dependencies: + "@cosmjs/amino": "npm:^0.29.5" + "@cosmjs/crypto": "npm:^0.29.5" + "@cosmjs/encoding": "npm:^0.29.5" + "@cosmjs/math": "npm:^0.29.5" + "@cosmjs/utils": "npm:^0.29.5" + cosmjs-types: "npm:^0.5.2" + long: "npm:^4.0.0" + checksum: 10c0/d2bcb001511c67f65cee6dbf760f1abcefce0eadcb44f7c663156469cbf2ec0bff80b665b971327b40d4f8ca72b84193f00b17889badf1d8d8407fd05a359fe3 + languageName: node + linkType: hard + +"@cosmjs/proto-signing@npm:^0.31.1": + version: 0.31.3 + resolution: "@cosmjs/proto-signing@npm:0.31.3" + dependencies: + "@cosmjs/amino": "npm:^0.31.3" + "@cosmjs/crypto": "npm:^0.31.3" + "@cosmjs/encoding": "npm:^0.31.3" + "@cosmjs/math": "npm:^0.31.3" + "@cosmjs/utils": "npm:^0.31.3" + cosmjs-types: "npm:^0.8.0" + long: "npm:^4.0.0" + checksum: 10c0/91bc6c0d03462b16e85fd6acfd3d28ab56a8de9a199f97601aac30aace75b64250bf0efcdda0aa5e3ea9e6defa46844b5f8e4358aabaeeb16d439480f55bbff7 + languageName: node + linkType: hard + +"@cosmjs/proto-signing@npm:^0.32.0, @cosmjs/proto-signing@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/proto-signing@npm:0.32.4" + dependencies: + "@cosmjs/amino": "npm:^0.32.4" + "@cosmjs/crypto": "npm:^0.32.4" + "@cosmjs/encoding": "npm:^0.32.4" + "@cosmjs/math": "npm:^0.32.4" + "@cosmjs/utils": "npm:^0.32.4" + cosmjs-types: "npm:^0.9.0" + checksum: 10c0/6915059d2e6dbe1abda4a747c3b1abd47a9eff4f8cb2cf9a5545f939b656b4a15bbde2bfc1364357f9b2a081a066280c3b469f6d13dd5fc51b429b0f90a54913 + languageName: node + linkType: hard + +"@cosmjs/proto-signing@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/proto-signing@npm:0.32.3" + dependencies: + "@cosmjs/amino": "npm:^0.32.3" + "@cosmjs/crypto": "npm:^0.32.3" + "@cosmjs/encoding": "npm:^0.32.3" + "@cosmjs/math": "npm:^0.32.3" + "@cosmjs/utils": "npm:^0.32.3" + cosmjs-types: "npm:^0.9.0" + checksum: 10c0/d44511d3a50489c1a3f61f28f68ca8cac87d6bdbb69e434cb0916dfc1d79e6a68ca0c09e074d4be73624f26fbb215024848225b862201b7f8d1d6a44014fd819 + languageName: node + linkType: hard + +"@cosmjs/socket@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/socket@npm:0.29.5" + dependencies: + "@cosmjs/stream": "npm:^0.29.5" + isomorphic-ws: "npm:^4.0.1" + ws: "npm:^7" + xstream: "npm:^11.14.0" + checksum: 10c0/ffd7afe5a12fc77603ae3d89380f81330ea565de9de41485c266e61fce224c4666a19f6c47d91de6b6f276389bb5e51bd89bb7002bd43a1d02ae6eb776df9b8f + languageName: node + linkType: hard + +"@cosmjs/socket@npm:^0.31.3": + version: 0.31.3 + resolution: "@cosmjs/socket@npm:0.31.3" + dependencies: + "@cosmjs/stream": "npm:^0.31.3" + isomorphic-ws: "npm:^4.0.1" + ws: "npm:^7" + xstream: "npm:^11.14.0" + checksum: 10c0/35ce93726f1c5c7d4cdf49c68d754b5587ac94fa65fd66f3db625c4794413359e225ddcaa55ee0bb17806a0b9cc13f884a7ec780503267addc6d03aacee1770c + languageName: node + linkType: hard + +"@cosmjs/socket@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/socket@npm:0.32.3" + dependencies: + "@cosmjs/stream": "npm:^0.32.3" + isomorphic-ws: "npm:^4.0.1" + ws: "npm:^7" + xstream: "npm:^11.14.0" + checksum: 10c0/25a82bd503d6f41adc3fa0b8c350b21bc4838efb0f1322966d6ebffefee61b5f5220d2fe3795b95932873f17937ceae45b25c5d1de92ed72b13abb7309cbace9 + languageName: node + linkType: hard + +"@cosmjs/socket@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/socket@npm:0.32.4" + dependencies: + "@cosmjs/stream": "npm:^0.32.4" + isomorphic-ws: "npm:^4.0.1" + ws: "npm:^7" + xstream: "npm:^11.14.0" + checksum: 10c0/2d94c1fb39016bea3c7c145f4565c8a0fed20c805ac569ea604cd3646c15147b82b8db18a4e3c832d6ae0c3dd14363d4db3d91bcacac922679efba164ed49386 + languageName: node + linkType: hard + +"@cosmjs/stargate@npm:0.29.4": + version: 0.29.4 + resolution: "@cosmjs/stargate@npm:0.29.4" + dependencies: + "@confio/ics23": "npm:^0.6.8" + "@cosmjs/amino": "npm:^0.29.4" + "@cosmjs/encoding": "npm:^0.29.4" + "@cosmjs/math": "npm:^0.29.4" + "@cosmjs/proto-signing": "npm:^0.29.4" + "@cosmjs/stream": "npm:^0.29.4" + "@cosmjs/tendermint-rpc": "npm:^0.29.4" + "@cosmjs/utils": "npm:^0.29.4" + cosmjs-types: "npm:^0.5.2" + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.3" + xstream: "npm:^11.14.0" + checksum: 10c0/da9f2b022569b7ad104f5a545fbac23b079d54588cf503bffe5215feb62ae8969344371dce42deba4976d5cdd032b51c1e6d801e5a7879b78e85db4d9d22ca5e + languageName: node + linkType: hard + +"@cosmjs/stargate@npm:0.31.1": + version: 0.31.1 + resolution: "@cosmjs/stargate@npm:0.31.1" + dependencies: + "@confio/ics23": "npm:^0.6.8" + "@cosmjs/amino": "npm:^0.31.1" + "@cosmjs/encoding": "npm:^0.31.1" + "@cosmjs/math": "npm:^0.31.1" + "@cosmjs/proto-signing": "npm:^0.31.1" + "@cosmjs/stream": "npm:^0.31.1" + "@cosmjs/tendermint-rpc": "npm:^0.31.1" + "@cosmjs/utils": "npm:^0.31.1" + cosmjs-types: "npm:^0.8.0" + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.3" + xstream: "npm:^11.14.0" + checksum: 10c0/4532669efad7630f32df99d3e4f760d870a210e378169c7fa6311b94c722c710990c311f59054621ea50031f507ea5f5fdfc1b20dc77b5452ae59626421a2d4b + languageName: node + linkType: hard + +"@cosmjs/stargate@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/stargate@npm:0.32.3" + dependencies: + "@confio/ics23": "npm:^0.6.8" + "@cosmjs/amino": "npm:^0.32.3" + "@cosmjs/encoding": "npm:^0.32.3" + "@cosmjs/math": "npm:^0.32.3" + "@cosmjs/proto-signing": "npm:^0.32.3" + "@cosmjs/stream": "npm:^0.32.3" + "@cosmjs/tendermint-rpc": "npm:^0.32.3" + "@cosmjs/utils": "npm:^0.32.3" + cosmjs-types: "npm:^0.9.0" + xstream: "npm:^11.14.0" + checksum: 10c0/c82db0355f4b15ca988f0452f8142102b44840319fe48d44c8dc9c1a316cbe3c9e765eb90970348bd5b5fddd6d9452d5a556e14dbbbd93eda6a6c92ceb616241 + languageName: node + linkType: hard + +"@cosmjs/stargate@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/stargate@npm:0.32.4" + dependencies: + "@confio/ics23": "npm:^0.6.8" + "@cosmjs/amino": "npm:^0.32.4" + "@cosmjs/encoding": "npm:^0.32.4" + "@cosmjs/math": "npm:^0.32.4" + "@cosmjs/proto-signing": "npm:^0.32.4" + "@cosmjs/stream": "npm:^0.32.4" + "@cosmjs/tendermint-rpc": "npm:^0.32.4" + "@cosmjs/utils": "npm:^0.32.4" + cosmjs-types: "npm:^0.9.0" + xstream: "npm:^11.14.0" + checksum: 10c0/c30a3519516aaa7eae58ba827c80fcf74c7fe7a9d3aa5cc8138c3a2768f5f241f59c2f5cec27e9037b4df12b1c6605b4fac9eadb4de97bd84edddc3a80a02e24 + languageName: node + linkType: hard + +"@cosmjs/stream@npm:^0.29.4, @cosmjs/stream@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/stream@npm:0.29.5" + dependencies: + xstream: "npm:^11.14.0" + checksum: 10c0/c69613738c01282d43e855af6350a3cb1e254cc472f1a63a817a8f32a86bd4797b5280c120528787dfb6f38738a037a5fafa9c83821c2aef54e79684e134d6ca + languageName: node + linkType: hard + +"@cosmjs/stream@npm:^0.31.1, @cosmjs/stream@npm:^0.31.3": + version: 0.31.3 + resolution: "@cosmjs/stream@npm:0.31.3" + dependencies: + xstream: "npm:^11.14.0" + checksum: 10c0/e0279b925c4f02535ba9b1f6f9563a1db4fb53ed1396e4e3958fcad887e047a78b431a227dd7c159aadb6e0e054db9dfb34b7a9128f2082ff3114bcfd74516c3 + languageName: node + linkType: hard + +"@cosmjs/stream@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/stream@npm:0.32.3" + dependencies: + xstream: "npm:^11.14.0" + checksum: 10c0/963abad76c044265e6961add2a66060134dd610ced9397edcd331669e5aca2a157cc08db658590110233038c38fc5812a9e8d156babbf524eb291200a3708b3a + languageName: node + linkType: hard + +"@cosmjs/stream@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/stream@npm:0.32.4" + dependencies: + xstream: "npm:^11.14.0" + checksum: 10c0/c677c53f9101c2a36fa03a475d92dea2fa69c475f896751b5e18a5d07087eeecbf6bca2e62a8940003da53fa235a9b2dd78c8257bf19c3f96e3f69fa8d5f183d + languageName: node + linkType: hard + +"@cosmjs/tendermint-rpc@npm:^0.29.4": + version: 0.29.5 + resolution: "@cosmjs/tendermint-rpc@npm:0.29.5" + dependencies: + "@cosmjs/crypto": "npm:^0.29.5" + "@cosmjs/encoding": "npm:^0.29.5" + "@cosmjs/json-rpc": "npm:^0.29.5" + "@cosmjs/math": "npm:^0.29.5" + "@cosmjs/socket": "npm:^0.29.5" + "@cosmjs/stream": "npm:^0.29.5" + "@cosmjs/utils": "npm:^0.29.5" + axios: "npm:^0.21.2" + readonly-date: "npm:^1.0.0" + xstream: "npm:^11.14.0" + checksum: 10c0/b2e958e01eb4aafa106a3098c8cae93fcbc04d999c2fb2646132d4d93c7b3668c03f6bb7b0c35946b96a01ab18214c9039f2b078cb16b604fa52444a3f1851c0 + languageName: node + linkType: hard + +"@cosmjs/tendermint-rpc@npm:^0.31.1": + version: 0.31.3 + resolution: "@cosmjs/tendermint-rpc@npm:0.31.3" + dependencies: + "@cosmjs/crypto": "npm:^0.31.3" + "@cosmjs/encoding": "npm:^0.31.3" + "@cosmjs/json-rpc": "npm:^0.31.3" + "@cosmjs/math": "npm:^0.31.3" + "@cosmjs/socket": "npm:^0.31.3" + "@cosmjs/stream": "npm:^0.31.3" + "@cosmjs/utils": "npm:^0.31.3" + axios: "npm:^0.21.2" + readonly-date: "npm:^1.0.0" + xstream: "npm:^11.14.0" + checksum: 10c0/1d8d8a78cc1dc54884c0916e709c98d533215f2235ce48f2079cbd8b3a9edf7aa14f216b815d727cacabfead54c0b15ca622fd43243260d8d311bc408edd0f11 + languageName: node + linkType: hard + +"@cosmjs/tendermint-rpc@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/tendermint-rpc@npm:0.32.3" + dependencies: + "@cosmjs/crypto": "npm:^0.32.3" + "@cosmjs/encoding": "npm:^0.32.3" + "@cosmjs/json-rpc": "npm:^0.32.3" + "@cosmjs/math": "npm:^0.32.3" + "@cosmjs/socket": "npm:^0.32.3" + "@cosmjs/stream": "npm:^0.32.3" + "@cosmjs/utils": "npm:^0.32.3" + axios: "npm:^1.6.0" + readonly-date: "npm:^1.0.0" + xstream: "npm:^11.14.0" + checksum: 10c0/9ccde526456e9c4be7a2562c3def25a016267404a057e807ecc0f520aeb0cbfc5bf04bfca58ceecd6f7bf61b7089924c7949c13a7d685efc7ad946b71388c3df + languageName: node + linkType: hard + +"@cosmjs/tendermint-rpc@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/tendermint-rpc@npm:0.32.4" + dependencies: + "@cosmjs/crypto": "npm:^0.32.4" + "@cosmjs/encoding": "npm:^0.32.4" + "@cosmjs/json-rpc": "npm:^0.32.4" + "@cosmjs/math": "npm:^0.32.4" + "@cosmjs/socket": "npm:^0.32.4" + "@cosmjs/stream": "npm:^0.32.4" + "@cosmjs/utils": "npm:^0.32.4" + axios: "npm:^1.6.0" + readonly-date: "npm:^1.0.0" + xstream: "npm:^11.14.0" + checksum: 10c0/5fae7afcdf98cc7dd36922aa1586254cc8c202cf8fe66804e61d793d31dcff816f40d33f7a0eb72c1b9226c7c361d4848e4ff12d0489f6fa66f47f0c86ae18dd + languageName: node + linkType: hard + +"@cosmjs/utils@npm:^0.29.4, @cosmjs/utils@npm:^0.29.5": + version: 0.29.5 + resolution: "@cosmjs/utils@npm:0.29.5" + checksum: 10c0/cfb2dbc499bc305cf0b7d3f0afc936b52e0e7492dce33e3bef7986b0e3aa8c34316c60072b7664799d182ce5f5016eaead3d5f948d871c5b1afe30604ef2542d + languageName: node + linkType: hard + +"@cosmjs/utils@npm:^0.31.1, @cosmjs/utils@npm:^0.31.3": + version: 0.31.3 + resolution: "@cosmjs/utils@npm:0.31.3" + checksum: 10c0/26266e1206ed8c7c4e744db1e97fc7a341ffee383ca9f43e6c9e8ff596039a90068c39aadc4f6524b6f2b5b6d581318657f3eb272f98b9e430f2d0df79382b6a + languageName: node + linkType: hard + +"@cosmjs/utils@npm:^0.32.3": + version: 0.32.3 + resolution: "@cosmjs/utils@npm:0.32.3" + checksum: 10c0/e21cb0387d135142fdebe64fadfe2f7c9446b8b974b9d0dff7a02f04e17e79fcfc3946258ad79af1db35b252058d97c38e1f90f2f14e903a37d85316f31efde6 + languageName: node + linkType: hard + +"@cosmjs/utils@npm:^0.32.4": + version: 0.32.4 + resolution: "@cosmjs/utils@npm:0.32.4" + checksum: 10c0/d5ff8b235094be1150853a715116049f73eb5cdfeea8ce8e22ecccc61ec99792db457404d4307782b1a2f935dcf438f5c485beabfcfbc1dc5df26eb6e6da9062 + languageName: node + linkType: hard + +"@cosmology/chain-template@workspace:.": + version: 0.0.0-use.local + resolution: "@cosmology/chain-template@workspace:." + dependencies: + "@chain-registry/types": "npm:0.44.3" + "@cosmjs/amino": "npm:0.32.3" + "@cosmjs/cosmwasm-stargate": "npm:0.32.3" + "@cosmjs/stargate": "npm:0.31.1" + "@cosmos-kit/react": "npm:2.18.0" + "@interchain-ui/react": "npm:1.23.31" + "@interchain-ui/react-no-ssr": "npm:0.1.2" + "@keplr-wallet/types": "npm:^0.12.111" + "@tanstack/react-query": "npm:4.32.0" + "@tanstack/react-query-devtools": "npm:4.32.0" + "@types/node": "npm:18.11.9" + "@types/node-gzip": "npm:^1" + "@types/react": "npm:18.0.25" + "@types/react-dom": "npm:18.0.9" + ace-builds: "npm:1.35.0" + bignumber.js: "npm:9.1.2" + chain-registry: "npm:1.69.33" + cosmos-kit: "npm:2.18.4" + dayjs: "npm:1.11.11" + eslint: "npm:8.28.0" + eslint-config-next: "npm:13.0.5" + generate-lockfile: "npm:0.0.12" + interchain-query: "npm:1.10.1" + next: "npm:^13" + node-gzip: "npm:^1.1.2" + react: "npm:18.2.0" + react-ace: "npm:11.0.1" + react-dom: "npm:18.2.0" + react-dropzone: "npm:^14.2.3" + react-icons: "npm:5.2.1" + react-markdown: "npm:9.0.1" + typescript: "npm:4.9.3" + yaml-loader: "npm:^0.8.1" + zustand: "npm:4.5.2" + languageName: unknown + linkType: soft + +"@cosmos-kit/cdcwallet-extension@npm:^2.13.2": + version: 2.13.2 + resolution: "@cosmos-kit/cdcwallet-extension@npm:2.13.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/2c159f90a568ed1a94495950ddc9d5674249276e803eff784143c2b35986933b95a8a8735d6fcd670070651e8bf3c8de67013cd5f58e62dae95f488bfd1a85d9 + languageName: node + linkType: hard + +"@cosmos-kit/cdcwallet@npm:^2.13.2": + version: 2.13.2 + resolution: "@cosmos-kit/cdcwallet@npm:2.13.2" + dependencies: + "@cosmos-kit/cdcwallet-extension": "npm:^2.13.2" + checksum: 10c0/d9d0d888a771810356154bc4fbfb1b4530cb97831ce7ff1e35c46a2b388864660dc9e0a7c7b76dff720c0a922645a519877e3f0e69180633f48e06ac0f8a5bf5 + languageName: node + linkType: hard + +"@cosmos-kit/coin98-extension@npm:^2.12.2": + version: 2.12.2 + resolution: "@cosmos-kit/coin98-extension@npm:2.12.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + cosmjs-types: "npm:>=0.9.0" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/1a1423dd45288f77b7cb615342fa9750a11cfd741d5047ef6737d258d6af115f5e2ef6eac4cc41b5ed7599db7d21d02fb7682e02b0f1b533625714a8316794da + languageName: node + linkType: hard + +"@cosmos-kit/coin98@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/coin98@npm:2.11.2" + dependencies: + "@cosmos-kit/coin98-extension": "npm:^2.12.2" + checksum: 10c0/7b9cf76b26e816743e17011eb3f1780bf9b49cbcdb7a8d2534322189c4e8e785212fe20794903ffbcfd11c532ab1828463d2527bba85b4a27f921bb8f63e1c9a + languageName: node + linkType: hard + +"@cosmos-kit/compass-extension@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/compass-extension@npm:2.11.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/663087e375619b271e0a0c41e45679c5e45ba17d0c6bd12a354316471ad186454583d15ff5076c106660b9becd723ed6ad3645a502352309a453053955cea8cf + languageName: node + linkType: hard + +"@cosmos-kit/compass@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/compass@npm:2.11.2" + dependencies: + "@cosmos-kit/compass-extension": "npm:^2.11.2" + checksum: 10c0/35fe8f1cfe889425cfd85ed41e8299839677a12a4fe3228b78cf2cf5e9389990aeb737b7cea3c9fb7b316a72abfa4bcd441fe07a4065f14e7f59b96d108b7ffe + languageName: node + linkType: hard + +"@cosmos-kit/core@npm:^2.13.1": + version: 2.13.1 + resolution: "@cosmos-kit/core@npm:2.13.1" + dependencies: + "@chain-registry/client": "npm:^1.48.1" + "@chain-registry/keplr": "npm:^1.68.2" + "@chain-registry/types": "npm:^0.45.1" + "@cosmjs/amino": "npm:^0.32.3" + "@cosmjs/cosmwasm-stargate": "npm:^0.32.3" + "@cosmjs/proto-signing": "npm:^0.32.3" + "@cosmjs/stargate": "npm:^0.32.3" + "@dao-dao/cosmiframe": "npm:^0.1.0" + "@walletconnect/types": "npm:2.11.0" + bowser: "npm:2.11.0" + cosmjs-types: "npm:^0.9.0" + events: "npm:3.3.0" + nock: "npm:13.5.4" + uuid: "npm:^9.0.1" + checksum: 10c0/5295440b213fed8d1853023253888652dd57624ea7dee86720c04964f00209078fafc843359686daffac78fc8e52b68078fbbdf4552dd2e8903315f2ab0e22d5 + languageName: node + linkType: hard + +"@cosmos-kit/cosmostation-extension@npm:^2.12.2": + version: 2.12.2 + resolution: "@cosmos-kit/cosmostation-extension@npm:2.12.2" + dependencies: + "@chain-registry/cosmostation": "npm:^1.66.2" + "@cosmos-kit/core": "npm:^2.13.1" + cosmjs-types: "npm:^0.9.0" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/fcc95612410700ed8114322b5cda8d059b9e168511d5ecdc652b0bdf97c48b25d46fd38227323066cd0b447ff0b8dd59bdb6c0925b8979480032947f77165f6b + languageName: node + linkType: hard + +"@cosmos-kit/cosmostation-mobile@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/cosmostation-mobile@npm:2.11.2" + dependencies: + "@chain-registry/cosmostation": "npm:1.66.2" + "@cosmos-kit/core": "npm:^2.13.1" + "@cosmos-kit/walletconnect": "npm:^2.10.1" + checksum: 10c0/a52d1ae62b1797b809251715e3c88c74646053e34f9e9b96d9d170c252ecf18118bf55e58ca59a8fd50fa7503cd5aebd5a59546de1dabfa618f09733ff3c5439 + languageName: node + linkType: hard + +"@cosmos-kit/cosmostation@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/cosmostation@npm:2.11.2" + dependencies: + "@cosmos-kit/cosmostation-extension": "npm:^2.12.2" + "@cosmos-kit/cosmostation-mobile": "npm:^2.11.2" + checksum: 10c0/f1c55e88e97b47091e5f757a9a4615ddec90baf4e49bbc7d401537728e75cd93b4e96f999215d3d74b3c9c65748b8dd81851b2565c964376a592df4326a445c9 + languageName: node + linkType: hard + +"@cosmos-kit/exodus-extension@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/exodus-extension@npm:2.10.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + react-icons: "npm:4.4.0" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/a6b7716472fd28a3172a99471d8e8f9c557344f0c9ea36e5e031f2424e9674ba5de16998fcb2bd0b72d5037a93bfae662f687d83f04268647042462707de3c6c + languageName: node + linkType: hard + +"@cosmos-kit/exodus@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/exodus@npm:2.10.2" + dependencies: + "@cosmos-kit/exodus-extension": "npm:^2.10.2" + checksum: 10c0/5733c78fbf176824881124b97a0404d95faf366d39b13fa4e3eecc1119edc9932f7f1469bd2c66d7f7c41d28d70392bf66deaebc76ba3c0a6f353f6e7d557502 + languageName: node + linkType: hard + +"@cosmos-kit/fin-extension@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/fin-extension@npm:2.11.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/314968c6c2c637fbc4d7785dd3fb2e12203ea9566583f7b8bc101833c59497d9ce3bd0216236b5dbcbb787d0492b80f9e501bd54d898f5a150b8f76fa46d4537 + languageName: node + linkType: hard + +"@cosmos-kit/fin@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/fin@npm:2.11.2" + dependencies: + "@cosmos-kit/fin-extension": "npm:^2.11.2" + checksum: 10c0/f24e13e27baf5caf37f1bd18474dad022f4b987fd0213974c7fdd4510cfce3eab428d69ed73ed134115f3b91aa208ec29451ab92f71146660a510ea92f08a025 + languageName: node + linkType: hard + +"@cosmos-kit/frontier-extension@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/frontier-extension@npm:2.10.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/ae6ceeaaded9367d0a46932d534c051c0ec8d49a76dd80144c61f8de5d9ddbf3cdfe03b682a2ea66756ce93e46e2e1142251a31174ffbc45f688a1aff9cc3155 + languageName: node + linkType: hard + +"@cosmos-kit/frontier@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/frontier@npm:2.10.2" + dependencies: + "@cosmos-kit/frontier-extension": "npm:^2.10.2" + checksum: 10c0/617ed26dd6cecf960b511180f9a15b4a1360ae7293467ea165b25a4ce89e192d98dc47d77d4086af79abd7ca682a26d2311ac61c3c3cf164b0007a87bca994f5 + languageName: node + linkType: hard + +"@cosmos-kit/galaxy-station-extension@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/galaxy-station-extension@npm:2.11.2" + dependencies: + "@chain-registry/types": "npm:0.45.1" + "@cosmos-kit/core": "npm:^2.13.1" + "@hexxagon/feather.js": "npm:^1.0.9-beta.8" + "@hexxagon/station-connector": "npm:^1.0.17" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/6c481b17504935ed589583d18cda708a9d81efde41e66c589b16ee401b8ae72a887b016a106a3a0f2ce9afd12560244474ccd11f818143d342169cea769ca073 + languageName: node + linkType: hard + +"@cosmos-kit/galaxy-station@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/galaxy-station@npm:2.10.2" + dependencies: + "@cosmos-kit/galaxy-station-extension": "npm:^2.11.2" + checksum: 10c0/86721b41a710dae0c8ec22c0466def90ef8b61cd09505e648d145bcd48997413e996cda4330bfce96e2e788cfcd572bbed556ad1d4d8ef693a1e7a6a3cb765d4 + languageName: node + linkType: hard + +"@cosmos-kit/keplr-extension@npm:^2.12.2": + version: 2.12.2 + resolution: "@cosmos-kit/keplr-extension@npm:2.12.2" + dependencies: + "@chain-registry/keplr": "npm:^1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + "@keplr-wallet/provider-extension": "npm:^0.12.95" + "@keplr-wallet/types": "npm:^0.12.95" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/679a71402b31a520dfe4a14ac18b7d3bc2aec75132760f4d3ad67ae91170a52e5c33587fb8208126ffec8ac911fe07413d37edf2d99c4637fec8d836d6338753 + languageName: node + linkType: hard + +"@cosmos-kit/keplr-mobile@npm:^2.12.2": + version: 2.12.2 + resolution: "@cosmos-kit/keplr-mobile@npm:2.12.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + "@cosmos-kit/keplr-extension": "npm:^2.12.2" + "@cosmos-kit/walletconnect": "npm:^2.10.1" + "@keplr-wallet/provider-extension": "npm:^0.12.95" + "@keplr-wallet/wc-client": "npm:^0.12.95" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/9e8ece5399bd206089e796812018e36ba76be39282e6b397316cb8c102512ee3e866d7b297530067f1705aa808095e016ae785295f0f8cc5d3ae2b780c943090 + languageName: node + linkType: hard + +"@cosmos-kit/keplr@npm:^2.12.2": + version: 2.12.2 + resolution: "@cosmos-kit/keplr@npm:2.12.2" + dependencies: + "@cosmos-kit/keplr-extension": "npm:^2.12.2" + "@cosmos-kit/keplr-mobile": "npm:^2.12.2" + checksum: 10c0/7bc3c2f6b8c360ab0d8fedc02353341d2ad64351d4f309e2a8374484170975e2cdb1a6866af58a2edb1957cc5e4e28012b43f283d23e4e3e9f0478d2db2770ae + languageName: node + linkType: hard + +"@cosmos-kit/leap-extension@npm:^2.12.2": + version: 2.12.2 + resolution: "@cosmos-kit/leap-extension@npm:2.12.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/5d7130cefbf5d29e05f7b792ac8f4d31ffd962088a25531d5be7cae5221309755a8a978982baf627d069d9ff315a6de592c527539657ee3dcf6f6957d205d223 + languageName: node + linkType: hard + +"@cosmos-kit/leap-metamask-cosmos-snap@npm:^0.12.2": + version: 0.12.2 + resolution: "@cosmos-kit/leap-metamask-cosmos-snap@npm:0.12.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + "@leapwallet/cosmos-snap-provider": "npm:0.1.26" + "@metamask/providers": "npm:^11.1.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + cosmjs-types: ">=0.9.0" + checksum: 10c0/123838d21fb83fce13f4635bf34c6484dd8f5e9f6d24d5ce674afd196e0a67c9f6e3e6068c873160060377c8c231d3089a40e5d93a51c9526eed1bd91d8a0080 + languageName: node + linkType: hard + +"@cosmos-kit/leap-mobile@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/leap-mobile@npm:2.11.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + "@cosmos-kit/walletconnect": "npm:^2.10.1" + checksum: 10c0/b00131dcdf4155dd6fde16afc3233accf64b31a1dbfbc854b95d7b89642fe95c39d182477cbd102b335b59a59f659072238a29f84e970f3e126694ee22d74596 + languageName: node + linkType: hard + +"@cosmos-kit/leap@npm:^2.12.2": + version: 2.12.2 + resolution: "@cosmos-kit/leap@npm:2.12.2" + dependencies: + "@cosmos-kit/leap-extension": "npm:^2.12.2" + "@cosmos-kit/leap-metamask-cosmos-snap": "npm:^0.12.2" + "@cosmos-kit/leap-mobile": "npm:^2.11.2" + checksum: 10c0/cf146378bfd82c7ca84ed4dbd95371ab02b496cd98aa041e5047dfa529f7c9723aae57cc74811f810ebbd737902ea84ea4677d82d9099ab7b2d5c1df19c3a104 + languageName: node + linkType: hard + +"@cosmos-kit/ledger@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/ledger@npm:2.11.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + "@ledgerhq/hw-app-cosmos": "npm:^6.28.1" + "@ledgerhq/hw-transport-webhid": "npm:^6.27.15" + "@ledgerhq/hw-transport-webusb": "npm:^6.27.15" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/96bacf4e41569bb274d10871e1974d156bc2a58e2e3bdf7ae7ee1b73630d2267f6a852c114e9ee30cda03ddda9f7e3d74ed2b937e9c575f84f87919804f985ec + languageName: node + linkType: hard + +"@cosmos-kit/okxwallet-extension@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/okxwallet-extension@npm:2.11.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/f2b2bd0067eed702f6a16cf8ef716e1c6a7aa42d8f263b90f4fb8e2346c41a275221a544c4fd42bb50a83d13c254de90d428e1f0b22c3591075e0daf37d069eb + languageName: node + linkType: hard + +"@cosmos-kit/omni-mobile@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/omni-mobile@npm:2.10.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + "@cosmos-kit/walletconnect": "npm:^2.10.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/71a780a4f7a9ffa60be8c35c0515123c4e657a4f4495df23c0343d870838ebac64a65678a15748774b166f60cde5894075534213e354f54d4e12d09cbada3cf3 + languageName: node + linkType: hard + +"@cosmos-kit/omni@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/omni@npm:2.10.2" + dependencies: + "@cosmos-kit/omni-mobile": "npm:^2.10.2" + checksum: 10c0/d33c64f53f740cf4c50bbdf04a195c8f676d1acfb94aac82b996cd183afdd405602904ac1ff11c41daddcde2a56691f959d528259e7d26d0a57b18ce61d4807e + languageName: node + linkType: hard + +"@cosmos-kit/owallet-extension@npm:^2.12.2": + version: 2.12.2 + resolution: "@cosmos-kit/owallet-extension@npm:2.12.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + "@keplr-wallet/types": "npm:^0.12.90" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/c6e10fa9caff33c3a8788ec1be4a12ee2c25d906a4fb24b0b08c387d6ea6c6b6b3d0e2a77e980c0839513a42ef790db897a310327ba0354a0ed79987f98ca285 + languageName: node + linkType: hard + +"@cosmos-kit/owallet@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/owallet@npm:2.11.2" + dependencies: + "@cosmos-kit/owallet-extension": "npm:^2.12.2" + checksum: 10c0/06d2a2b086d932ac18824a926674e6f102c99e4cd8ebfb79e5e0254d594c2ef82b2e44da550144ce56bd685c44a84b6c4cecc421b062b7a1ed07a07ae9f0e52a + languageName: node + linkType: hard + +"@cosmos-kit/react-lite@npm:^2.13.0": + version: 2.13.0 + resolution: "@cosmos-kit/react-lite@npm:2.13.0" + dependencies: + "@chain-registry/types": "npm:^0.45.1" + "@cosmos-kit/core": "npm:^2.13.1" + "@dao-dao/cosmiframe": "npm:^0.1.0" + peerDependencies: + "@types/react": ">= 17" + "@types/react-dom": ">= 17" + react: ^18 + react-dom: ^18 + checksum: 10c0/8eae200d14fdd74cfad691a56ae3cd87e4d84f3b0483669adc4cc0228782bd630959b13e0cd1276ad3b297aa21b56bbd93867e9644daa25bd4ea95cbafa682a6 + languageName: node + linkType: hard + +"@cosmos-kit/react@npm:2.18.0": + version: 2.18.0 + resolution: "@cosmos-kit/react@npm:2.18.0" + dependencies: + "@chain-registry/types": "npm:^0.45.1" + "@cosmos-kit/core": "npm:^2.13.1" + "@cosmos-kit/react-lite": "npm:^2.13.0" + "@react-icons/all-files": "npm:^4.1.0" + peerDependencies: + "@interchain-ui/react": ^1.23.9 + "@types/react": ">= 17" + "@types/react-dom": ">= 17" + react: ^18 + react-dom: ^18 + checksum: 10c0/b23e43a79e8c616e2c245a5637f904a7efc7b46358415963e0a6879846061a26964416afde4d2275175a3777291b985d25e433429bf198c52f148ea47aa08da8 + languageName: node + linkType: hard + +"@cosmos-kit/shell-extension@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/shell-extension@npm:2.11.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/c708c603aab2c7c289f8decfc8cb7b833595734e147f8905f8cd30a4bf288391f0c3366f2a8e4855041b12495ed70a40cb98470edd446a495277d00b4e91518c + languageName: node + linkType: hard + +"@cosmos-kit/shell@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/shell@npm:2.11.2" + dependencies: + "@cosmos-kit/shell-extension": "npm:^2.11.2" + checksum: 10c0/cc531070a980b4fa57a34ee96b54d070fe9782e4477ff9da997ae37e6f30d3ea5921ea523768bd70f72e0eddf46f67ba592e4b7fe75b99679bc7da562797ccf0 + languageName: node + linkType: hard + +"@cosmos-kit/station-extension@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/station-extension@npm:2.11.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + "@terra-money/feather.js": "npm:^1.0.8" + "@terra-money/station-connector": "npm:^1.1.0" + "@terra-money/wallet-types": "npm:^3.11.2" + peerDependencies: + "@chain-registry/types": ">= 0.17" + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/0532961a303ab7cad2319f27c71c80f9662ec9f7a5d957f27dc49c8753417dbc94c4ec175010b9b616af1512e42dc09144a12c5c143a5ab64bb2015d0fc6768e + languageName: node + linkType: hard + +"@cosmos-kit/station@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/station@npm:2.10.2" + dependencies: + "@cosmos-kit/station-extension": "npm:^2.11.2" + checksum: 10c0/1d0e1a05e9fd2528d1c105fba340244adff25460b536d75fcc2454f56f317efd6edced3eddee9cc8b9d897338114f9469af272fd1a5f7f1c317273acfc5f29b4 + languageName: node + linkType: hard + +"@cosmos-kit/tailwind-extension@npm:^1.5.2": + version: 1.5.2 + resolution: "@cosmos-kit/tailwind-extension@npm:1.5.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + checksum: 10c0/a8facdddc4df41814ae5048423b3c9da8c223503f16fb6728038238790fd143a2ebda727c813f9ae2c1190c0d0da07e942a8c0181ea2e1268f9580435550d2ed + languageName: node + linkType: hard + +"@cosmos-kit/tailwind@npm:^1.5.2": + version: 1.5.2 + resolution: "@cosmos-kit/tailwind@npm:1.5.2" + dependencies: + "@cosmos-kit/tailwind-extension": "npm:^1.5.2" + checksum: 10c0/79d9ce43765e90c990f52d72049d4705322d3fc9175214f80aec7d24cbce24460cf37aaab9baf424aa965ff2b9398e3c84c32f8ac2bb5c4a35370ebddefc4733 + languageName: node + linkType: hard + +"@cosmos-kit/trust-extension@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/trust-extension@npm:2.10.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/4a56176642f984aa07a3b46f4dfed59113e4012350c45b854c4ea96cedd2dbf8cbf07e7c9a943ffaf85d624c0f8612d3eb6dd2518926ce82289a48a208859f13 + languageName: node + linkType: hard + +"@cosmos-kit/trust-mobile@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/trust-mobile@npm:2.10.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + "@cosmos-kit/walletconnect": "npm:^2.10.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/6ed367a52d75355add3bddcbefc47e589110da9e1d42f7b65fdd7e02398786d083403f685539ea03a0b65f9a9813e1703d2c53a67aa834c091170e488b77205c + languageName: node + linkType: hard + +"@cosmos-kit/trust@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/trust@npm:2.11.2" + dependencies: + "@cosmos-kit/trust-extension": "npm:^2.10.2" + "@cosmos-kit/trust-mobile": "npm:^2.10.2" + checksum: 10c0/68824bdab267de17b5ed0689a6b2a4881b06d5ec292bc1d12d9890552039229f6768eaf0e0ac8017633f67e9140a56da62df514f13f9aa6de09e7a55cc350132 + languageName: node + linkType: hard + +"@cosmos-kit/vectis-extension@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/vectis-extension@npm:2.11.2" + dependencies: + "@chain-registry/keplr": "npm:1.68.2" + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/d150dd1f8845073b98d4ebf1d59f8459881cfc3e7b954fe0cd1932852bc7cb1986da6c44cbea7d06ce57c971fd8a1d5b7daa7c27fb0d31abfb4b1fdc786bd2b4 + languageName: node + linkType: hard + +"@cosmos-kit/vectis@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/vectis@npm:2.11.2" + dependencies: + "@cosmos-kit/vectis-extension": "npm:^2.11.2" + checksum: 10c0/e9baa032280d35fc6da13a771bb7e4180decede89f052d9297e702d9ea3aaed7ce92d98865e2bb3b60f8a86ae7770add714db8072d64c89fd8d00449887ddee7 + languageName: node + linkType: hard + +"@cosmos-kit/walletconnect@npm:^2.10.1": + version: 2.10.1 + resolution: "@cosmos-kit/walletconnect@npm:2.10.1" + dependencies: + "@cosmjs/proto-signing": "npm:^0.32.3" + "@cosmos-kit/core": "npm:^2.13.1" + "@walletconnect/sign-client": "npm:^2.9.0" + "@walletconnect/utils": "npm:^2.9.0" + events: "npm:3.3.0" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@walletconnect/types": 2.11.0 + checksum: 10c0/5940d33dfebb75f029b57cfa1de9206d2fc3c36e406cef29786ac5c0cd749cd0f5c06e5953d096bc522f45d8c1903cb1aa4429ee07425f261cc3167dcb6b35b6 + languageName: node + linkType: hard + +"@cosmos-kit/xdefi-extension@npm:^2.11.2": + version: 2.11.2 + resolution: "@cosmos-kit/xdefi-extension@npm:2.11.2" + dependencies: + "@cosmos-kit/core": "npm:^2.13.1" + peerDependencies: + "@cosmjs/amino": ">=0.32.3" + "@cosmjs/proto-signing": ">=0.32.3" + checksum: 10c0/73afc1fb1ed406c5fa44081baf2c0b3d0fd90e6d162427e66040f8319a10ef72c756bd180861400f0f1b51cdd8d54c4a4fdb56fb71eda1aef2003d3131a7404a + languageName: node + linkType: hard + +"@cosmos-kit/xdefi@npm:^2.10.2": + version: 2.10.2 + resolution: "@cosmos-kit/xdefi@npm:2.10.2" + dependencies: + "@cosmos-kit/xdefi-extension": "npm:^2.11.2" + checksum: 10c0/a7dcb2a6234d4828f60fa835247627a6183fe000f4e2106f8c6a1e2bff5c2c842a887a5ddae188e2d500b807e1d4580fddfb318499683914f0abf6ffa2f72faa + languageName: node + linkType: hard + +"@cosmostation/extension-client@npm:0.1.15": + version: 0.1.15 + resolution: "@cosmostation/extension-client@npm:0.1.15" + checksum: 10c0/4afc033a6f0c894a632b5b6806c9588daab2aeb0afd3004429be2b6ec96636b9103f3097b86c606de3df239451dce4efdc930acdb0835919cc3f6727755871c3 + languageName: node + linkType: hard + +"@dao-dao/cosmiframe@npm:^0.1.0": + version: 0.1.0 + resolution: "@dao-dao/cosmiframe@npm:0.1.0" + dependencies: + uuid: "npm:^9.0.1" + peerDependencies: + "@cosmjs/amino": "*" + "@cosmjs/proto-signing": "*" + checksum: 10c0/e65a64a8ce67063585c2f21c07a7443358cfcbd2153c432b2e882a0549e37edb8d5a375ef49d279d2ec7cb46dfce6d728ccc872cdf89a444602319d11e44ccc8 + languageName: node + linkType: hard + +"@emotion/hash@npm:^0.9.0": + version: 0.9.1 + resolution: "@emotion/hash@npm:0.9.1" + checksum: 10c0/cdafe5da63fc1137f3db6e232fdcde9188b2b47ee66c56c29137199642a4086f42382d866911cfb4833cae2cc00271ab45cad3946b024f67b527bb7fac7f4c9d + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^1.3.3": + version: 1.4.1 + resolution: "@eslint/eslintrc@npm:1.4.1" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.4.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/1030e1a4a355f8e4629e19d3d45448a05a8e65ecf49154bebc66599d038f155e830498437cbfc7246e8084adc1f814904f696c2461707cc8c73be961e2e8ae5a + languageName: node + linkType: hard + +"@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/abi@npm:5.7.0" + dependencies: + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/7de51bf52ff03df2526546dacea6e74f15d4c5ef762d931552082b9600dcefd8e333599f02d7906ba89f7b7f48c45ab72cee76f397212b4f17fa9d9ff5615916 + languageName: node + linkType: hard + +"@ethersproject/abstract-provider@npm:5.7.0, @ethersproject/abstract-provider@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/abstract-provider@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/networks": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/web": "npm:^5.7.0" + checksum: 10c0/a5708e2811b90ddc53d9318ce152511a32dd4771aa2fb59dbe9e90468bb75ca6e695d958bf44d13da684dc3b6aab03f63d425ff7591332cb5d7ddaf68dff7224 + languageName: node + linkType: hard + +"@ethersproject/abstract-signer@npm:5.7.0, @ethersproject/abstract-signer@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/abstract-signer@npm:5.7.0" + dependencies: + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + checksum: 10c0/e174966b3be17269a5974a3ae5eef6d15ac62ee8c300ceace26767f218f6bbf3de66f29d9a9c9ca300fa8551aab4c92e28d2cc772f5475fdeaa78d9b5be0e745 + languageName: node + linkType: hard + +"@ethersproject/address@npm:5.7.0, @ethersproject/address@npm:^5.6.0, @ethersproject/address@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/address@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/rlp": "npm:^5.7.0" + checksum: 10c0/db5da50abeaae8f6cf17678323e8d01cad697f9a184b0593c62b71b0faa8d7e5c2ba14da78a998d691773ed6a8eb06701f65757218e0eaaeb134e5c5f3e5a908 + languageName: node + linkType: hard + +"@ethersproject/base64@npm:5.7.0, @ethersproject/base64@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/base64@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + checksum: 10c0/4f748cd82af60ff1866db699fbf2bf057feff774ea0a30d1f03ea26426f53293ea10cc8265cda1695301da61093bedb8cc0d38887f43ed9dad96b78f19d7337e + languageName: node + linkType: hard + +"@ethersproject/basex@npm:5.7.0, @ethersproject/basex@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/basex@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + checksum: 10c0/02304de77477506ad798eb5c68077efd2531624380d770ef4a823e631a288fb680107a0f9dc4a6339b2a0b0f5b06ee77f53429afdad8f950cde0f3e40d30167d + languageName: node + linkType: hard + +"@ethersproject/bignumber@npm:5.7.0, @ethersproject/bignumber@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/bignumber@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + bn.js: "npm:^5.2.1" + checksum: 10c0/14263cdc91a7884b141d9300f018f76f69839c47e95718ef7161b11d2c7563163096fee69724c5fa8ef6f536d3e60f1c605819edbc478383a2b98abcde3d37b2 + languageName: node + linkType: hard + +"@ethersproject/bytes@npm:5.7.0, @ethersproject/bytes@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/bytes@npm:5.7.0" + dependencies: + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/07dd1f0341b3de584ef26c8696674ff2bb032f4e99073856fc9cd7b4c54d1d846cabe149e864be267934658c3ce799e5ea26babe01f83af0e1f06c51e5ac791f + languageName: node + linkType: hard + +"@ethersproject/constants@npm:5.7.0, @ethersproject/constants@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/constants@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + checksum: 10c0/6df63ab753e152726b84595250ea722165a5744c046e317df40a6401f38556385a37c84dadf5b11ca651c4fb60f967046125369c57ac84829f6b30e69a096273 + languageName: node + linkType: hard + +"@ethersproject/contracts@npm:5.7.0": + version: 5.7.0 + resolution: "@ethersproject/contracts@npm:5.7.0" + dependencies: + "@ethersproject/abi": "npm:^5.7.0" + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + checksum: 10c0/97a10361dddaccfb3e9e20e24d071cfa570050adcb964d3452c5f7c9eaaddb4e145ec9cf928e14417948701b89e81d4907800e799a6083123e4d13a576842f41 + languageName: node + linkType: hard + +"@ethersproject/hash@npm:5.7.0, @ethersproject/hash@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/hash@npm:5.7.0" + dependencies: + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/base64": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/1a631dae34c4cf340dde21d6940dd1715fc7ae483d576f7b8ef9e8cb1d0e30bd7e8d30d4a7d8dc531c14164602323af2c3d51eb2204af18b2e15167e70c9a5ef + languageName: node + linkType: hard + +"@ethersproject/hdnode@npm:5.7.0, @ethersproject/hdnode@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/hdnode@npm:5.7.0" + dependencies: + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/basex": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/pbkdf2": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + "@ethersproject/signing-key": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/wordlists": "npm:^5.7.0" + checksum: 10c0/36d5c13fe69b1e0a18ea98537bc560d8ba166e012d63faac92522a0b5f405eb67d8848c5aca69e2470f62743aaef2ac36638d9e27fd8c68f51506eb61479d51d + languageName: node + linkType: hard + +"@ethersproject/json-wallets@npm:5.7.0, @ethersproject/json-wallets@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/json-wallets@npm:5.7.0" + dependencies: + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/hdnode": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/pbkdf2": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/random": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + aes-js: "npm:3.0.0" + scrypt-js: "npm:3.0.1" + checksum: 10c0/f1a84d19ff38d3506f453abc4702107cbc96a43c000efcd273a056371363767a06a8d746f84263b1300266eb0c329fe3b49a9b39a37aadd016433faf9e15a4bb + languageName: node + linkType: hard + +"@ethersproject/keccak256@npm:5.7.0, @ethersproject/keccak256@npm:^5.5.0, @ethersproject/keccak256@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/keccak256@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + js-sha3: "npm:0.8.0" + checksum: 10c0/3b1a91706ff11f5ab5496840b9c36cedca27db443186d28b94847149fd16baecdc13f6fc5efb8359506392f2aba559d07e7f9c1e17a63f9d5de9f8053cfcb033 + languageName: node + linkType: hard + +"@ethersproject/logger@npm:5.7.0, @ethersproject/logger@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/logger@npm:5.7.0" + checksum: 10c0/d03d460fb2d4a5e71c627b7986fb9e50e1b59a6f55e8b42a545b8b92398b961e7fd294bd9c3d8f92b35d0f6ff9d15aa14c95eab378f8ea194e943c8ace343501 + languageName: node + linkType: hard + +"@ethersproject/networks@npm:5.7.1, @ethersproject/networks@npm:^5.7.0": + version: 5.7.1 + resolution: "@ethersproject/networks@npm:5.7.1" + dependencies: + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/9efcdce27f150459e85d74af3f72d5c32898823a99f5410e26bf26cca2d21fb14e403377314a93aea248e57fb2964e19cee2c3f7bfc586ceba4c803a8f1b75c0 + languageName: node + linkType: hard + +"@ethersproject/pbkdf2@npm:5.7.0, @ethersproject/pbkdf2@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/pbkdf2@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + checksum: 10c0/e5a29cf28b4f4ca1def94d37cfb6a9c05c896106ed64881707813de01c1e7ded613f1e95febcccda4de96aae929068831d72b9d06beef1377b5a1a13a0eb3ff5 + languageName: node + linkType: hard + +"@ethersproject/properties@npm:5.7.0, @ethersproject/properties@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/properties@npm:5.7.0" + dependencies: + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/4fe5d36e5550b8e23a305aa236a93e8f04d891d8198eecdc8273914c761b0e198fd6f757877406ee3eb05033ec271132a3e5998c7bd7b9a187964fb4f67b1373 + languageName: node + linkType: hard + +"@ethersproject/providers@npm:5.7.2": + version: 5.7.2 + resolution: "@ethersproject/providers@npm:5.7.2" + dependencies: + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/base64": "npm:^5.7.0" + "@ethersproject/basex": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/networks": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/random": "npm:^5.7.0" + "@ethersproject/rlp": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/web": "npm:^5.7.0" + bech32: "npm:1.1.4" + ws: "npm:7.4.6" + checksum: 10c0/4c8d19e6b31f769c24042fb2d02e483a4ee60dcbfca9e3291f0a029b24337c47d1ea719a390be856f8fd02997125819e834415e77da4fb2023369712348dae4c + languageName: node + linkType: hard + +"@ethersproject/random@npm:5.7.0, @ethersproject/random@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/random@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/23e572fc55372653c22062f6a153a68c2e2d3200db734cd0d39621fbfd0ca999585bed2d5682e3ac65d87a2893048375682e49d1473d9965631ff56d2808580b + languageName: node + linkType: hard + +"@ethersproject/rlp@npm:5.7.0, @ethersproject/rlp@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/rlp@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/bc863d21dcf7adf6a99ae75c41c4a3fb99698cfdcfc6d5d82021530f3d3551c6305bc7b6f0475ad6de6f69e91802b7e872bee48c0596d98969aefcf121c2a044 + languageName: node + linkType: hard + +"@ethersproject/sha2@npm:5.7.0, @ethersproject/sha2@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/sha2@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + hash.js: "npm:1.1.7" + checksum: 10c0/0e7f9ce6b1640817b921b9c6dd9dab8d5bf5a0ce7634d6a7d129b7366a576c2f90dcf4bcb15a0aa9310dde67028f3a44e4fcc2f26b565abcd2a0f465116ff3b1 + languageName: node + linkType: hard + +"@ethersproject/signing-key@npm:5.7.0, @ethersproject/signing-key@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/signing-key@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + bn.js: "npm:^5.2.1" + elliptic: "npm:6.5.4" + hash.js: "npm:1.1.7" + checksum: 10c0/fe2ca55bcdb6e370d81372191d4e04671234a2da872af20b03c34e6e26b97dc07c1ee67e91b673680fb13344c9d5d7eae52f1fa6117733a3d68652b778843e09 + languageName: node + linkType: hard + +"@ethersproject/solidity@npm:5.7.0": + version: 5.7.0 + resolution: "@ethersproject/solidity@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/bedf9918911144b0ec352b8aa7fa44abf63f0b131629c625672794ee196ba7d3992b0e0d3741935ca176813da25b9bcbc81aec454652c63113bdc3a1706beac6 + languageName: node + linkType: hard + +"@ethersproject/strings@npm:5.7.0, @ethersproject/strings@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/strings@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/570d87040ccc7d94de9861f76fc2fba6c0b84c5d6104a99a5c60b8a2401df2e4f24bf9c30afa536163b10a564a109a96f02e6290b80e8f0c610426f56ad704d1 + languageName: node + linkType: hard + +"@ethersproject/transactions@npm:5.7.0, @ethersproject/transactions@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/transactions@npm:5.7.0" + dependencies: + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/rlp": "npm:^5.7.0" + "@ethersproject/signing-key": "npm:^5.7.0" + checksum: 10c0/aa4d51379caab35b9c468ed1692a23ae47ce0de121890b4f7093c982ee57e30bd2df0c743faed0f44936d7e59c55fffd80479f2c28ec6777b8de06bfb638c239 + languageName: node + linkType: hard + +"@ethersproject/units@npm:5.7.0": + version: 5.7.0 + resolution: "@ethersproject/units@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/4da2fdefe2a506cc9f8b408b2c8638ab35b843ec413d52713143f08501a55ff67a808897f9a91874774fb526423a0821090ba294f93e8bf4933a57af9677ac5e + languageName: node + linkType: hard + +"@ethersproject/wallet@npm:5.7.0": + version: 5.7.0 + resolution: "@ethersproject/wallet@npm:5.7.0" + dependencies: + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/hdnode": "npm:^5.7.0" + "@ethersproject/json-wallets": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/random": "npm:^5.7.0" + "@ethersproject/signing-key": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/wordlists": "npm:^5.7.0" + checksum: 10c0/f872b957db46f9de247d39a398538622b6c7a12f93d69bec5f47f9abf0701ef1edc10497924dd1c14a68109284c39a1686fa85586d89b3ee65df49002c40ba4c + languageName: node + linkType: hard + +"@ethersproject/web@npm:5.7.1, @ethersproject/web@npm:^5.7.0": + version: 5.7.1 + resolution: "@ethersproject/web@npm:5.7.1" + dependencies: + "@ethersproject/base64": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/c82d6745c7f133980e8dab203955260e07da22fa544ccafdd0f21c79fae127bd6ef30957319e37b1cc80cddeb04d6bfb60f291bb14a97c9093d81ce50672f453 + languageName: node + linkType: hard + +"@ethersproject/wordlists@npm:5.7.0, @ethersproject/wordlists@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/wordlists@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/da4f3eca6d691ebf4f578e6b2ec3a76dedba791be558f6cf7e10cd0bfbaeab5a6753164201bb72ced745fb02b6ef7ef34edcb7e6065ce2b624c6556a461c3f70 + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.0.0": + version: 1.6.0 + resolution: "@floating-ui/core@npm:1.6.0" + dependencies: + "@floating-ui/utils": "npm:^0.2.1" + checksum: 10c0/667a68036f7dd5ed19442c7792a6002ca02d1799221c4396691bbe0b6008b48f6ccad581225e81fa266bb91232f6c66838a5f825f554217e1ec886178b93381b + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.6.0": + version: 1.6.2 + resolution: "@floating-ui/core@npm:1.6.2" + dependencies: + "@floating-ui/utils": "npm:^0.2.0" + checksum: 10c0/db2621dc682e7f043d6f118d087ae6a6bfdacf40b26ede561760dd53548c16e2e7c59031e013e37283801fa307b55e6de65bf3b316b96a054e4a6a7cb937c59e + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.6.4": + version: 1.6.7 + resolution: "@floating-ui/core@npm:1.6.7" + dependencies: + "@floating-ui/utils": "npm:^0.2.7" + checksum: 10c0/5c9ae274854f87ed09a61de758377d444c2b13ade7fd1067d74287b3e66de5340ae1281e48604b631c540855a2595cfc717adf9a2331eaadc4fa6d28e8571f64 + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.0.0": + version: 1.6.5 + resolution: "@floating-ui/dom@npm:1.6.5" + dependencies: + "@floating-ui/core": "npm:^1.0.0" + "@floating-ui/utils": "npm:^0.2.0" + checksum: 10c0/ebdc14806f786e60df8e7cc2c30bf9cd4d75fe734f06d755588bbdef2f60d0a0f21dffb14abdc58dea96e5577e2e366feca6d66ba962018efd1bc91a3ece4526 + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.6.7": + version: 1.6.10 + resolution: "@floating-ui/dom@npm:1.6.10" + dependencies: + "@floating-ui/core": "npm:^1.6.0" + "@floating-ui/utils": "npm:^0.2.7" + checksum: 10c0/ed7d7b400e00b2f31f1b8f11863af2cb95d0d3cd84635186ca31b41d8d9fe7fe12c85e4985617d7df7ed365abad48b327d0bae35934842007b4e1052d9780576 + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.1.1": + version: 2.1.1 + resolution: "@floating-ui/react-dom@npm:2.1.1" + dependencies: + "@floating-ui/dom": "npm:^1.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10c0/732ab64600c511ceb0563b87bc557aa61789fec4f416a3f092bab89e508fa1d3ee5ade0f42051cc56eb5e4db867b87ab7fd48ce82db9fd4c01d94ffa08f60115 + languageName: node + linkType: hard + +"@floating-ui/react@npm:^0.26.19": + version: 0.26.22 + resolution: "@floating-ui/react@npm:0.26.22" + dependencies: + "@floating-ui/react-dom": "npm:^2.1.1" + "@floating-ui/utils": "npm:^0.2.7" + tabbable: "npm:^6.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10c0/7eea7bef4fb98d13873752c5cabcf61216dbf00d748027450cdd0ff5c7a51328f8800fa012ecd87bef8e1abedcc7703d5298a604843ec031dc88a18233548623 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.0, @floating-ui/utils@npm:^0.2.1": + version: 0.2.1 + resolution: "@floating-ui/utils@npm:0.2.1" + checksum: 10c0/ee77756712cf5b000c6bacf11992ffb364f3ea2d0d51cc45197a7e646a17aeb86ea4b192c0b42f3fbb29487aee918a565e84f710b8c3645827767f406a6b4cc9 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.4, @floating-ui/utils@npm:^0.2.7": + version: 0.2.7 + resolution: "@floating-ui/utils@npm:0.2.7" + checksum: 10c0/0559ea5df2dc82219bad26e3509e9d2b70f6987e552dc8ddf7d7f5923cfeb7c44bf884567125b1f9cdb122a4c7e6e7ddbc666740bc30b0e4091ccbca63c6fb1c + languageName: node + linkType: hard + +"@formatjs/ecma402-abstract@npm:1.18.2": + version: 1.18.2 + resolution: "@formatjs/ecma402-abstract@npm:1.18.2" + dependencies: + "@formatjs/intl-localematcher": "npm:0.5.4" + tslib: "npm:^2.4.0" + checksum: 10c0/87afb37dd937555e712ca85d5142a9083d617c491d1dddf8d660fdfb6186272d2bc75b78809b076388d26f016200c8bddbce73281fd707eb899da2bf3bc9b7ca + languageName: node + linkType: hard + +"@formatjs/fast-memoize@npm:2.2.0": + version: 2.2.0 + resolution: "@formatjs/fast-memoize@npm:2.2.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/ae88c5a93b96235aba4bd9b947d0310d2ec013687a99133413361b24122b5cdea8c9bf2e04a4a2a8b61f1f4ee5419ef6416ca4796554226b5050e05a9ce6ef49 + languageName: node + linkType: hard + +"@formatjs/icu-messageformat-parser@npm:2.7.6": + version: 2.7.6 + resolution: "@formatjs/icu-messageformat-parser@npm:2.7.6" + dependencies: + "@formatjs/ecma402-abstract": "npm:1.18.2" + "@formatjs/icu-skeleton-parser": "npm:1.8.0" + tslib: "npm:^2.4.0" + checksum: 10c0/9fc72c2075333a969601e2be4260638940b1abefd1a5fc15b93b0b10d2319c9df5778aa51fc2a173ce66ca5e8a47b4b64caca85a32d0eb6095e16e8d65cb4b00 + languageName: node + linkType: hard + +"@formatjs/icu-skeleton-parser@npm:1.8.0": + version: 1.8.0 + resolution: "@formatjs/icu-skeleton-parser@npm:1.8.0" + dependencies: + "@formatjs/ecma402-abstract": "npm:1.18.2" + tslib: "npm:^2.4.0" + checksum: 10c0/10956732d70cc67049d216410b5dc3ef048935d1ea2ae76f5755bb9d0243af37ddeabd5d140ddbf5f6c7047068c3d02a05f93c68a89cedfaf7488d5062885ea4 + languageName: node + linkType: hard + +"@formatjs/intl-localematcher@npm:0.5.4": + version: 0.5.4 + resolution: "@formatjs/intl-localematcher@npm:0.5.4" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/c9ff5d34ca8b6fe59f8f303a3cc31a92d343e095a6987e273e5cc23f0fe99feb557a392a05da95931c7d24106acb6988e588d00ddd05b0934005aafd7fdbafe6 + languageName: node + linkType: hard + +"@formkit/auto-animate@npm:^0.8.2": + version: 0.8.2 + resolution: "@formkit/auto-animate@npm:0.8.2" + checksum: 10c0/0b24af241c229f37643cd62ea78fd7fddf621c06516cf62452035ea0bf489b6b53068eea47abb40b6bb3653bb91c1efad8b7257014a3559d26ad77b47b5337cb + languageName: node + linkType: hard + +"@hexxagon/feather.js@npm:^1.0.9-beta.8": + version: 1.0.11 + resolution: "@hexxagon/feather.js@npm:1.0.11" + dependencies: + "@classic-terra/terra.proto": "npm:^1.1.0" + "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7" + "@terra-money/terra.proto": "npm:3.0.5" + axios: "npm:^0.27.2" + bech32: "npm:^2.0.0" + bip32: "npm:^2.0.6" + bip39: "npm:^3.0.3" + bufferutil: "npm:^4.0.3" + decimal.js: "npm:^10.2.1" + jscrypto: "npm:^1.0.1" + readable-stream: "npm:^3.6.0" + secp256k1: "npm:^4.0.2" + tmp: "npm:^0.2.1" + utf-8-validate: "npm:^5.0.5" + ws: "npm:^7.5.9" + checksum: 10c0/912e3133e059b73eb587a47774db29d0299750f762bd7ef8a10a6b7ccd3ba05100d8c9d31c04b67097522ea64883ff864970d69875fb68652f239c54b0ad424b + languageName: node + linkType: hard + +"@hexxagon/station-connector@npm:^1.0.17": + version: 1.0.19 + resolution: "@hexxagon/station-connector@npm:1.0.19" + dependencies: + bech32: "npm:^2.0.0" + peerDependencies: + "@cosmjs/amino": ^0.31.0 + "@hexxagon/feather.js": ^2.1.0-beta.5 + axios: ^0.27.2 + checksum: 10c0/32d1eb7d20b941c199ebbf68022b9caa94ecdbee6983d7b66d64868362c03a684befb6c7432990afb28a4540ea304e7d5ed2d7823f204165345018ff71644417 + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.6": + version: 0.11.14 + resolution: "@humanwhocodes/config-array@npm:0.11.14" + dependencies: + "@humanwhocodes/object-schema": "npm:^2.0.2" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.2": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c + languageName: node + linkType: hard + +"@improbable-eng/grpc-web@npm:^0.14.1": + version: 0.14.1 + resolution: "@improbable-eng/grpc-web@npm:0.14.1" + dependencies: + browser-headers: "npm:^0.4.1" + peerDependencies: + google-protobuf: ^3.14.0 + checksum: 10c0/972f20d97970b3c7239ef8f26866e417e3079faec5a66e86755cc49b1dc3c56ed50a8f04dbb9d23d2f12ffb5719e39500d5e513d0087d576bc0844d2034491c1 + languageName: node + linkType: hard + +"@interchain-ui/react-no-ssr@npm:0.1.2": + version: 0.1.2 + resolution: "@interchain-ui/react-no-ssr@npm:0.1.2" + peerDependencies: + react: ^18.x + react-dom: ^18.x + checksum: 10c0/1613c455c767de2a3271705d53049e66911b36f01cab340e7d74be49bd8e68fd5db1204072d9c7bca2b850fdfb90d426b374c0cc4561d3806f18a73adb5a1bf1 + languageName: node + linkType: hard + +"@interchain-ui/react@npm:1.23.31": + version: 1.23.31 + resolution: "@interchain-ui/react@npm:1.23.31" + dependencies: + "@floating-ui/core": "npm:^1.6.4" + "@floating-ui/dom": "npm:^1.6.7" + "@floating-ui/react": "npm:^0.26.19" + "@floating-ui/react-dom": "npm:^2.1.1" + "@floating-ui/utils": "npm:^0.2.4" + "@formkit/auto-animate": "npm:^0.8.2" + "@react-aria/listbox": "npm:^3.12.1" + "@react-aria/overlays": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.24.1" + "@tanstack/react-virtual": "npm:^3.8.3" + "@vanilla-extract/css": "npm:^1.15.3" + "@vanilla-extract/dynamic": "npm:^2.1.1" + "@vanilla-extract/recipes": "npm:^0.5.3" + animejs: "npm:^3.2.2" + bignumber.js: "npm:^9.1.2" + client-only: "npm:^0.0.1" + clsx: "npm:^2.1.1" + copy-to-clipboard: "npm:^3.3.3" + immer: "npm:^10.1.1" + lodash: "npm:^4.17.21" + rainbow-sprinkles: "npm:^0.17.2" + react-aria: "npm:^3.33.1" + react-stately: "npm:^3.31.1" + zustand: "npm:^4.5.4" + peerDependencies: + react: ^16.14.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/b8ec3c81035651de08958aeb1497e423e02643f2b1e3fc1fc80b09396f017b2769e94de3b1f6cb44ef9852d8fa8ac890d82e86c23291a029961332000cccc2de + languageName: node + linkType: hard + +"@internationalized/date@npm:^3.5.5": + version: 3.5.5 + resolution: "@internationalized/date@npm:3.5.5" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/fc17291c8923eaf413e4cb1c74570a8f78269d8b6a5ad74de6f4f45b4e9a84f4243a9c3f224526c36b024f77e4a2fae34df6b34b022ae1b068384e04ad32560e + languageName: node + linkType: hard + +"@internationalized/message@npm:^3.1.4": + version: 3.1.4 + resolution: "@internationalized/message@npm:3.1.4" + dependencies: + "@swc/helpers": "npm:^0.5.0" + intl-messageformat: "npm:^10.1.0" + checksum: 10c0/29d2a2117381a2e50377a13cdc4379981403992b917997c477bc7bc82b59fcdd1252addf36d001edd4d30b2f496ad9c5a982732b52032e5559f0703e27521a9c + languageName: node + linkType: hard + +"@internationalized/number@npm:^3.5.3": + version: 3.5.3 + resolution: "@internationalized/number@npm:3.5.3" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/dd1bb4e89c6468b97e8357e1ba0a60234bd2c8226f3241c4c7499e5b1791ba0574127ea6de0fd6c4158e2ceef564bba6531a8f5589e58b820df669e312500f99 + languageName: node + linkType: hard + +"@internationalized/string@npm:^3.2.3": + version: 3.2.3 + resolution: "@internationalized/string@npm:3.2.3" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/824d2972951823d0421babb7e03003228fcbd9966028264838b2dad1032d4142f159c82f730a0b8026b8c8c10f06afe7df634c8d0cc8a9b6362909c6f653440a + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@keplr-wallet/common@npm:0.12.28": + version: 0.12.28 + resolution: "@keplr-wallet/common@npm:0.12.28" + dependencies: + "@keplr-wallet/crypto": "npm:0.12.28" + "@keplr-wallet/types": "npm:0.12.28" + buffer: "npm:^6.0.3" + delay: "npm:^4.4.0" + mobx: "npm:^6.1.7" + checksum: 10c0/6207dac075aad13af4cd78efe5f79b3abfc445cb42cef6c6bf0c06b32c6e570dd1f4f93a4c64214bd03b77a669b308c30c09d041f51e25f14544305bc7f7f6a2 + languageName: node + linkType: hard + +"@keplr-wallet/cosmos@npm:0.12.28": + version: 0.12.28 + resolution: "@keplr-wallet/cosmos@npm:0.12.28" + dependencies: + "@ethersproject/address": "npm:^5.6.0" + "@keplr-wallet/common": "npm:0.12.28" + "@keplr-wallet/crypto": "npm:0.12.28" + "@keplr-wallet/proto-types": "npm:0.12.28" + "@keplr-wallet/simple-fetch": "npm:0.12.28" + "@keplr-wallet/types": "npm:0.12.28" + "@keplr-wallet/unit": "npm:0.12.28" + bech32: "npm:^1.1.4" + buffer: "npm:^6.0.3" + long: "npm:^4.0.0" + protobufjs: "npm:^6.11.2" + checksum: 10c0/b062eb75c03a1285aba7e5398191961e7e9d01ec53e1094a6c3858817e4e41d9c571f09961289b07fb3175d9648eeb3587744efb563be9c379b79e2ed0fc207c + languageName: node + linkType: hard + +"@keplr-wallet/crypto@npm:0.12.28": + version: 0.12.28 + resolution: "@keplr-wallet/crypto@npm:0.12.28" + dependencies: + "@ethersproject/keccak256": "npm:^5.5.0" + bip32: "npm:^2.0.6" + bip39: "npm:^3.0.3" + bs58check: "npm:^2.1.2" + buffer: "npm:^6.0.3" + crypto-js: "npm:^4.0.0" + elliptic: "npm:^6.5.3" + sha.js: "npm:^2.4.11" + checksum: 10c0/90bb3ec875c1dbaceb5fa31c2bce201d4556b293e9bc8173e0959bd04f47690a65567ad2c6e8a49f597d7b5b81bf4f02c36fe12e1fa0ee4e5c4447d50101f228 + languageName: node + linkType: hard + +"@keplr-wallet/proto-types@npm:0.12.28": + version: 0.12.28 + resolution: "@keplr-wallet/proto-types@npm:0.12.28" + dependencies: + long: "npm:^4.0.0" + protobufjs: "npm:^6.11.2" + checksum: 10c0/c3b05d4788040dfcbb8e6ea1516aaa1e375f73fc1099476f880771ae410ec69985ccbf22056a37c8c715446c0e829912fa8061cfbfdd8bdeca74c58a6a153afc + languageName: node + linkType: hard + +"@keplr-wallet/provider-extension@npm:^0.12.95": + version: 0.12.113 + resolution: "@keplr-wallet/provider-extension@npm:0.12.113" + dependencies: + "@keplr-wallet/types": "npm:0.12.113" + deepmerge: "npm:^4.2.2" + long: "npm:^4.0.0" + checksum: 10c0/2f062539d892754141ad00767029e1b4ac259c97765a9f49a29b189a56941a45c60793fed8fdaa8c240a89fb922ca21c8f9cd91131b741b816c387995860a2b2 + languageName: node + linkType: hard + +"@keplr-wallet/provider@npm:0.12.113": + version: 0.12.113 + resolution: "@keplr-wallet/provider@npm:0.12.113" + dependencies: + "@keplr-wallet/router": "npm:0.12.113" + "@keplr-wallet/types": "npm:0.12.113" + buffer: "npm:^6.0.3" + deepmerge: "npm:^4.2.2" + long: "npm:^4.0.0" + checksum: 10c0/c3472442cf5d57122a734287f14103517e180183937a9d74de510d0216f97c2983f2162077417bcac94f82698ceacc1ed5d7cbc0ceb07c4c8aad25928c26eee5 + languageName: node + linkType: hard + +"@keplr-wallet/router@npm:0.12.113": + version: 0.12.113 + resolution: "@keplr-wallet/router@npm:0.12.113" + checksum: 10c0/7998bcafbe962bdc1e8c4b359ab60c1ee05c19920e952e82ba72389257121b9e4c74b69c43ed6f9ad24d689e091e84550f8373df592cf5586ddf42818b2cd1ba + languageName: node + linkType: hard + +"@keplr-wallet/simple-fetch@npm:0.12.28": + version: 0.12.28 + resolution: "@keplr-wallet/simple-fetch@npm:0.12.28" + checksum: 10c0/a5f7b9df3555f1d6b1fb0c72560302a62f6482ce7417c4218724e97827cad3ec8c71ea0dea2929571a9db9236d55ece7df15326944c5e1e64df0d55eab871882 + languageName: node + linkType: hard + +"@keplr-wallet/types@npm:0.12.113, @keplr-wallet/types@npm:^0.12.90, @keplr-wallet/types@npm:^0.12.95": + version: 0.12.113 + resolution: "@keplr-wallet/types@npm:0.12.113" + dependencies: + long: "npm:^4.0.0" + checksum: 10c0/00a0f49b9361689839bb120923da615f96a293d4aa413ef7565c9583ba48e0ea698e0c6ae2a8c3fa4cc4dd34878885627bb2d1122c3508337f758686f2a5d5a4 + languageName: node + linkType: hard + +"@keplr-wallet/types@npm:0.12.28": + version: 0.12.28 + resolution: "@keplr-wallet/types@npm:0.12.28" + dependencies: + long: "npm:^4.0.0" + checksum: 10c0/a541088e55ee0a57ac0e5a9c56e8b788d6325f438fcb4f0a478ba4ce76e336660774d8373a2c3dc6b53e4c6d7b5d91be3128102f340728c71a25448d35245980 + languageName: node + linkType: hard + +"@keplr-wallet/types@npm:^0.12.111": + version: 0.12.111 + resolution: "@keplr-wallet/types@npm:0.12.111" + dependencies: + long: "npm:^4.0.0" + checksum: 10c0/45988cafc2ae3197509c78545b50f8e37bb47290ed566ea85f501eb47c608f0b67339f3a7badae6e79e04db7dbd5c6f8ef6904ad6e518c900650fdb984d41338 + languageName: node + linkType: hard + +"@keplr-wallet/unit@npm:0.12.28": + version: 0.12.28 + resolution: "@keplr-wallet/unit@npm:0.12.28" + dependencies: + "@keplr-wallet/types": "npm:0.12.28" + big-integer: "npm:^1.6.48" + utility-types: "npm:^3.10.0" + checksum: 10c0/08d86d9ba01a11fcf2acd6a8a8b2252381eda8dc7613e3c3a50d7ebf73433fcece862b437f4118410e8c968983535e0aa5c4f2747eef9fd9785635eff836f7a7 + languageName: node + linkType: hard + +"@keplr-wallet/wc-client@npm:^0.12.95": + version: 0.12.113 + resolution: "@keplr-wallet/wc-client@npm:0.12.113" + dependencies: + "@keplr-wallet/provider": "npm:0.12.113" + "@keplr-wallet/types": "npm:0.12.113" + buffer: "npm:^6.0.3" + deepmerge: "npm:^4.2.2" + long: "npm:^3 || ^4 || ^5" + peerDependencies: + "@walletconnect/sign-client": ^2 + "@walletconnect/types": ^2 + checksum: 10c0/9b6f4dafd13bbfc93212302bec7f3e90eade3b62b8893c9b7fe67096bdf2fe945b66f5bc069e8c046bb0cc91dbcaa72b0a80b645c7eff2f1635e2dfc9a43f4af + languageName: node + linkType: hard + +"@leapwallet/cosmos-snap-provider@npm:0.1.26": + version: 0.1.26 + resolution: "@leapwallet/cosmos-snap-provider@npm:0.1.26" + dependencies: + "@cosmjs/amino": "npm:^0.32.0" + "@cosmjs/proto-signing": "npm:^0.32.0" + bignumber.js: "npm:^9.1.2" + long: "npm:^5.2.3" + checksum: 10c0/e6a74773eed4754b37777bfbd946fbfd902213774eabb047c3c4a9aec82728be42196d79aee735cefe6e03bd77be4548805a5fd373eba741dd9667004f43523a + languageName: node + linkType: hard + +"@ledgerhq/devices@npm:^8.2.2": + version: 8.2.2 + resolution: "@ledgerhq/devices@npm:8.2.2" + dependencies: + "@ledgerhq/errors": "npm:^6.16.3" + "@ledgerhq/logs": "npm:^6.12.0" + rxjs: "npm:^7.8.1" + semver: "npm:^7.3.5" + checksum: 10c0/c9bd63858ac4ce37a8e8fa3523ec1ed343b381d9711404d4334ef89d8cc8898af85e951b48ad962dce9a9c98344f0942393b69e52627cc34ec6e1b0dc93a5bbd + languageName: node + linkType: hard + +"@ledgerhq/errors@npm:^6.16.3": + version: 6.16.3 + resolution: "@ledgerhq/errors@npm:6.16.3" + checksum: 10c0/12e8e39317aac45694ae0f01f20b870a933611cd31187fc6ff63f268154b58f99d34b02f5dc033cbe3aebbe6fbfcd6f19aea842b7de22b5d8e051aef2fb94f94 + languageName: node + linkType: hard + +"@ledgerhq/hw-app-cosmos@npm:^6.28.1": + version: 6.29.5 + resolution: "@ledgerhq/hw-app-cosmos@npm:6.29.5" + dependencies: + "@ledgerhq/errors": "npm:^6.16.3" + "@ledgerhq/hw-transport": "npm:^6.30.5" + bip32-path: "npm:^0.4.2" + checksum: 10c0/0b1988defdf762abe3cd8d160f1e5234056765d0c4d13459300cef1c524a5b925dd85cb8c0357288537c040b72f48cb7d20a797770fdd1d24631a65b6419e3e9 + languageName: node + linkType: hard + +"@ledgerhq/hw-transport-webhid@npm:^6.27.15": + version: 6.28.5 + resolution: "@ledgerhq/hw-transport-webhid@npm:6.28.5" + dependencies: + "@ledgerhq/devices": "npm:^8.2.2" + "@ledgerhq/errors": "npm:^6.16.3" + "@ledgerhq/hw-transport": "npm:^6.30.5" + "@ledgerhq/logs": "npm:^6.12.0" + checksum: 10c0/e9233f83b9f5ee4ab480ffd894c44251c85d6a11c2591665ee5b91ce0997316a822bbd52ca9129736f074df5d809df576c528fd009a309652c1cc1bb41fe4862 + languageName: node + linkType: hard + +"@ledgerhq/hw-transport-webusb@npm:^6.27.15": + version: 6.28.5 + resolution: "@ledgerhq/hw-transport-webusb@npm:6.28.5" + dependencies: + "@ledgerhq/devices": "npm:^8.2.2" + "@ledgerhq/errors": "npm:^6.16.3" + "@ledgerhq/hw-transport": "npm:^6.30.5" + "@ledgerhq/logs": "npm:^6.12.0" + checksum: 10c0/25ae085cf6f74202f7c4d089aca39058790d32fa287de9fb3e7ae982fd9e80c34988ad3b82249b856839db81165e0c94f02a0a3954866b83f2cf13c393e3a2ba + languageName: node + linkType: hard + +"@ledgerhq/hw-transport@npm:^6.30.5": + version: 6.30.5 + resolution: "@ledgerhq/hw-transport@npm:6.30.5" + dependencies: + "@ledgerhq/devices": "npm:^8.2.2" + "@ledgerhq/errors": "npm:^6.16.3" + "@ledgerhq/logs": "npm:^6.12.0" + events: "npm:^3.3.0" + checksum: 10c0/ef80bb7d5839e3f2dc278fc4aaa2a2e74766cce80cfc0c42958601ce231ce576e2cd318ead971aa09263e43592160a5256a945ccb31dc542a341ad26f871102f + languageName: node + linkType: hard + +"@ledgerhq/logs@npm:^6.12.0": + version: 6.12.0 + resolution: "@ledgerhq/logs@npm:6.12.0" + checksum: 10c0/573122867ae807a60c3218234019ba7c4b35c14551b90c291fd589d7c2e7f002c2e84151868e67801c9f89a33d8a5569da77aef83b5f5e03b5faa2811cab6a86 + languageName: node + linkType: hard + +"@metamask/object-multiplex@npm:^1.1.0": + version: 1.3.0 + resolution: "@metamask/object-multiplex@npm:1.3.0" + dependencies: + end-of-stream: "npm:^1.4.4" + once: "npm:^1.4.0" + readable-stream: "npm:^2.3.3" + checksum: 10c0/24d80303b545da4c6de77a4f6adf46b3a498e15024f6b40b6e3594cbc7b77248b86b83716f343c24fc62379486b47ab4e5b0a4103552354f08e9fb68ecb01c7c + languageName: node + linkType: hard + +"@metamask/providers@npm:^11.1.1": + version: 11.1.2 + resolution: "@metamask/providers@npm:11.1.2" + dependencies: + "@metamask/object-multiplex": "npm:^1.1.0" + "@metamask/safe-event-emitter": "npm:^3.0.0" + detect-browser: "npm:^5.2.0" + eth-rpc-errors: "npm:^4.0.2" + extension-port-stream: "npm:^2.1.1" + fast-deep-equal: "npm:^3.1.3" + is-stream: "npm:^2.0.0" + json-rpc-engine: "npm:^6.1.0" + json-rpc-middleware-stream: "npm:^4.2.1" + pump: "npm:^3.0.0" + webextension-polyfill: "npm:^0.10.0" + checksum: 10c0/0c0da8735be8943b1801f98115a87554076e97d5ff00fad83bb707992bb35fb8a849ff0f04aecb1ff54ebeba47ba61326e39c5b9b6de373839e18607e2ee7c7b + languageName: node + linkType: hard + +"@metamask/safe-event-emitter@npm:^2.0.0": + version: 2.0.0 + resolution: "@metamask/safe-event-emitter@npm:2.0.0" + checksum: 10c0/a86b91f909834dc14de7eadd38b22d4975f6529001d265cd0f5c894351f69f39447f1ef41b690b9849c86dd2a25a39515ef5f316545d36aea7b3fc50ee930933 + languageName: node + linkType: hard + +"@metamask/safe-event-emitter@npm:^3.0.0": + version: 3.1.1 + resolution: "@metamask/safe-event-emitter@npm:3.1.1" + checksum: 10c0/4dd51651fa69adf65952449b20410acac7edad06f176dc6f0a5d449207527a2e85d5a21a864566e3d8446fb259f8840bd69fdb65932007a882f771f473a2b682 + languageName: node + linkType: hard + +"@next/env@npm:13.5.6": + version: 13.5.6 + resolution: "@next/env@npm:13.5.6" + checksum: 10c0/b1fefa21b698397a2f922ee53a5ecb91ff858f042b2a198652b9de49c031fc5e00d79da92ba7d84ef205e95368d5afbb0f104abaf00e9dde7985d9eae63bb4fb + languageName: node + linkType: hard + +"@next/eslint-plugin-next@npm:13.0.5": + version: 13.0.5 + resolution: "@next/eslint-plugin-next@npm:13.0.5" + dependencies: + glob: "npm:7.1.7" + checksum: 10c0/cee469f5484a9da000089ac9dd3169a904f61ab198b575efdaace086fa773aa6cc634a975b4ed567e97b8f8087983b59d133abd83cd51bd86a2213481d2672f8 + languageName: node + linkType: hard + +"@next/swc-darwin-arm64@npm:13.5.6": + version: 13.5.6 + resolution: "@next/swc-darwin-arm64@npm:13.5.6" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-darwin-x64@npm:13.5.6": + version: 13.5.6 + resolution: "@next/swc-darwin-x64@npm:13.5.6" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@next/swc-linux-arm64-gnu@npm:13.5.6": + version: 13.5.6 + resolution: "@next/swc-linux-arm64-gnu@npm:13.5.6" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-arm64-musl@npm:13.5.6": + version: 13.5.6 + resolution: "@next/swc-linux-arm64-musl@npm:13.5.6" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-linux-x64-gnu@npm:13.5.6": + version: 13.5.6 + resolution: "@next/swc-linux-x64-gnu@npm:13.5.6" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-x64-musl@npm:13.5.6": + version: 13.5.6 + resolution: "@next/swc-linux-x64-musl@npm:13.5.6" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-win32-arm64-msvc@npm:13.5.6": + version: 13.5.6 + resolution: "@next/swc-win32-arm64-msvc@npm:13.5.6" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-win32-ia32-msvc@npm:13.5.6": + version: 13.5.6 + resolution: "@next/swc-win32-ia32-msvc@npm:13.5.6" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@next/swc-win32-x64-msvc@npm:13.5.6": + version: 13.5.6 + resolution: "@next/swc-win32-x64-msvc@npm:13.5.6" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@noble/hashes@npm:^1, @noble/hashes@npm:^1.0.0, @noble/hashes@npm:^1.2.0": + version: 1.4.0 + resolution: "@noble/hashes@npm:1.4.0" + checksum: 10c0/8c3f005ee72e7b8f9cff756dfae1241485187254e3f743873e22073d63906863df5d4f13d441b7530ea614b7a093f0d889309f28b59850f33b66cb26a779a4a5 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c37a5b4842bfdece3d14dfdb054f73fe15ed2d3da61b34ff76629fb5b1731647c49166fd2a8bf8b56fcfa51200382385ea8909a3cbecdad612310c114d3f6c99 + languageName: node + linkType: hard + +"@parcel/watcher-android-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-android-arm64@npm:2.4.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-x64@npm:2.4.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-wasm@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-wasm@npm:2.4.1" + dependencies: + is-glob: "npm:^4.0.3" + micromatch: "npm:^4.0.5" + napi-wasm: "npm:^1.1.0" + checksum: 10c0/30a0d4e618c4867a5990025df56dff3a31a01f78b2d108b31e6ed7fabf123a13fd79ee292f547b572e439d272a6157c2ba9fb8e527456951c14283f872bdc16f + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-arm64@npm:2.4.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-ia32@npm:2.4.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-x64@npm:2.4.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher@npm:2.4.1" + dependencies: + "@parcel/watcher-android-arm64": "npm:2.4.1" + "@parcel/watcher-darwin-arm64": "npm:2.4.1" + "@parcel/watcher-darwin-x64": "npm:2.4.1" + "@parcel/watcher-freebsd-x64": "npm:2.4.1" + "@parcel/watcher-linux-arm-glibc": "npm:2.4.1" + "@parcel/watcher-linux-arm64-glibc": "npm:2.4.1" + "@parcel/watcher-linux-arm64-musl": "npm:2.4.1" + "@parcel/watcher-linux-x64-glibc": "npm:2.4.1" + "@parcel/watcher-linux-x64-musl": "npm:2.4.1" + "@parcel/watcher-win32-arm64": "npm:2.4.1" + "@parcel/watcher-win32-ia32": "npm:2.4.1" + "@parcel/watcher-win32-x64": "npm:2.4.1" + detect-libc: "npm:^1.0.3" + is-glob: "npm:^4.0.3" + micromatch: "npm:^4.0.5" + node-addon-api: "npm:^7.0.0" + node-gyp: "npm:latest" + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 10c0/33b7112094b9eb46c234d824953967435b628d3d93a0553255e9910829b84cab3da870153c3a870c31db186dc58f3b2db81382fcaee3451438aeec4d786a6211 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/aspromise@npm:1.1.2" + checksum: 10c0/a83343a468ff5b5ec6bff36fd788a64c839e48a07ff9f4f813564f58caf44d011cd6504ed2147bf34835bd7a7dd2107052af755961c6b098fd8902b4f6500d0f + languageName: node + linkType: hard + +"@protobufjs/base64@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/base64@npm:1.1.2" + checksum: 10c0/eec925e681081af190b8ee231f9bad3101e189abbc182ff279da6b531e7dbd2a56f1f306f37a80b1be9e00aa2d271690d08dcc5f326f71c9eed8546675c8caf6 + languageName: node + linkType: hard + +"@protobufjs/codegen@npm:^2.0.4": + version: 2.0.4 + resolution: "@protobufjs/codegen@npm:2.0.4" + checksum: 10c0/26ae337c5659e41f091606d16465bbcc1df1f37cc1ed462438b1f67be0c1e28dfb2ca9f294f39100c52161aef82edf758c95d6d75650a1ddf31f7ddee1440b43 + languageName: node + linkType: hard + +"@protobufjs/eventemitter@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/eventemitter@npm:1.1.0" + checksum: 10c0/1eb0a75180e5206d1033e4138212a8c7089a3d418c6dfa5a6ce42e593a4ae2e5892c4ef7421f38092badba4040ea6a45f0928869989411001d8c1018ea9a6e70 + languageName: node + linkType: hard + +"@protobufjs/fetch@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/fetch@npm:1.1.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.1" + "@protobufjs/inquire": "npm:^1.1.0" + checksum: 10c0/cda6a3dc2d50a182c5865b160f72077aac197046600091dbb005dd0a66db9cce3c5eaed6d470ac8ed49d7bcbeef6ee5f0bc288db5ff9a70cbd003e5909065233 + languageName: node + linkType: hard + +"@protobufjs/float@npm:^1.0.2": + version: 1.0.2 + resolution: "@protobufjs/float@npm:1.0.2" + checksum: 10c0/18f2bdede76ffcf0170708af15c9c9db6259b771e6b84c51b06df34a9c339dbbeec267d14ce0bddd20acc142b1d980d983d31434398df7f98eb0c94a0eb79069 + languageName: node + linkType: hard + +"@protobufjs/inquire@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/inquire@npm:1.1.0" + checksum: 10c0/64372482efcba1fb4d166a2664a6395fa978b557803857c9c03500e0ac1013eb4b1aacc9ed851dd5fc22f81583670b4f4431bae186f3373fedcfde863ef5921a + languageName: node + linkType: hard + +"@protobufjs/path@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/path@npm:1.1.2" + checksum: 10c0/cece0a938e7f5dfd2fa03f8c14f2f1cf8b0d6e13ac7326ff4c96ea311effd5fb7ae0bba754fbf505312af2e38500250c90e68506b97c02360a43793d88a0d8b4 + languageName: node + linkType: hard + +"@protobufjs/pool@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/pool@npm:1.1.0" + checksum: 10c0/eda2718b7f222ac6e6ad36f758a92ef90d26526026a19f4f17f668f45e0306a5bd734def3f48f51f8134ae0978b6262a5c517c08b115a551756d1a3aadfcf038 + languageName: node + linkType: hard + +"@protobufjs/utf8@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/utf8@npm:1.1.0" + checksum: 10c0/a3fe31fe3fa29aa3349e2e04ee13dc170cc6af7c23d92ad49e3eeaf79b9766264544d3da824dba93b7855bd6a2982fb40032ef40693da98a136d835752beb487 + languageName: node + linkType: hard + +"@react-aria/breadcrumbs@npm:^3.5.15": + version: 3.5.15 + resolution: "@react-aria/breadcrumbs@npm:3.5.15" + dependencies: + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/link": "npm:^3.7.3" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/breadcrumbs": "npm:^3.7.7" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/38d22f5d4741b156d3116431ea0b6ed8e4afc006b944ec3b8a4b87a4cfcd1e9e85423bf300ac1b808b5ef38aa5972d0d32f0c28a89ea765ad7d5c91cf51c8dd0 + languageName: node + linkType: hard + +"@react-aria/button@npm:^3.9.7": + version: 3.9.7 + resolution: "@react-aria/button@npm:3.9.7" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/toggle": "npm:^3.7.6" + "@react-types/button": "npm:^3.9.6" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/c8e6893933880db28cfcd701f82b0659d0ecc1e717cf75a2fa6b7c54626a4fc966bc1d22e39a01c2cc14926d20e45d63139a8aba2da3896041c6785a145c377f + languageName: node + linkType: hard + +"@react-aria/calendar@npm:^3.5.10": + version: 3.5.10 + resolution: "@react-aria/calendar@npm:3.5.10" + dependencies: + "@internationalized/date": "npm:^3.5.5" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/live-announcer": "npm:^3.3.4" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/calendar": "npm:^3.5.3" + "@react-types/button": "npm:^3.9.6" + "@react-types/calendar": "npm:^3.4.8" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/339a4224262f93b345bd5a1c81457927fc63aac43f5651aaa46420935bbbc3536fbc6446069d08eee18535c89e100734db0fb957aafdafbe04ab7130863d9da1 + languageName: node + linkType: hard + +"@react-aria/checkbox@npm:^3.14.5": + version: 3.14.5 + resolution: "@react-aria/checkbox@npm:3.14.5" + dependencies: + "@react-aria/form": "npm:^3.0.7" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/toggle": "npm:^3.10.6" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/checkbox": "npm:^3.6.7" + "@react-stately/form": "npm:^3.0.5" + "@react-stately/toggle": "npm:^3.7.6" + "@react-types/checkbox": "npm:^3.8.3" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/019b1e8063d9cf9ed229c7bbbfde5649b927daf008612cd35c038dd793dcae3a8b2de9a2758a294f5852e8bb2a82ce0b8ff1213963d4407618d7a2a1cc82f3af + languageName: node + linkType: hard + +"@react-aria/combobox@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-aria/combobox@npm:3.10.1" + dependencies: + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/listbox": "npm:^3.13.1" + "@react-aria/live-announcer": "npm:^3.3.4" + "@react-aria/menu": "npm:^3.15.1" + "@react-aria/overlays": "npm:^3.23.1" + "@react-aria/selection": "npm:^3.19.1" + "@react-aria/textfield": "npm:^3.14.7" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/combobox": "npm:^3.9.1" + "@react-stately/form": "npm:^3.0.5" + "@react-types/button": "npm:^3.9.6" + "@react-types/combobox": "npm:^3.12.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/e5b0f7466bc6956a19ef6cc4cf923c0768885efe6588c75edcf230f656cabc5bdf5d8882e9b900287627e51f65881845ba946857bd2144f2c4449555eeae2e71 + languageName: node + linkType: hard + +"@react-aria/datepicker@npm:^3.11.1": + version: 3.11.1 + resolution: "@react-aria/datepicker@npm:3.11.1" + dependencies: + "@internationalized/date": "npm:^3.5.5" + "@internationalized/number": "npm:^3.5.3" + "@internationalized/string": "npm:^3.2.3" + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/form": "npm:^3.0.7" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/spinbutton": "npm:^3.6.7" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/datepicker": "npm:^3.10.1" + "@react-stately/form": "npm:^3.0.5" + "@react-types/button": "npm:^3.9.6" + "@react-types/calendar": "npm:^3.4.8" + "@react-types/datepicker": "npm:^3.8.1" + "@react-types/dialog": "npm:^3.5.12" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/ed171f4a8a424248094a0af2ed7b8c181e5830413d1f66dd3547f41efa74c725e3fac38cc8d01409640ff8aabfb1d361d7948b394739fc4ce9b17d98eb5c0100 + languageName: node + linkType: hard + +"@react-aria/dialog@npm:^3.5.16": + version: 3.5.16 + resolution: "@react-aria/dialog@npm:3.5.16" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/overlays": "npm:^3.23.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/dialog": "npm:^3.5.12" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/a8993610563da0fb0cd247d25daff5d2e10d531272f1d61e38547c6abeda18ca71771c826c9865cf2a8da209122551d48820cf0624c69ad12a792b2bf9c6eecc + languageName: node + linkType: hard + +"@react-aria/dnd@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-aria/dnd@npm:3.7.1" + dependencies: + "@internationalized/string": "npm:^3.2.3" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/live-announcer": "npm:^3.3.4" + "@react-aria/overlays": "npm:^3.23.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/dnd": "npm:^3.4.1" + "@react-types/button": "npm:^3.9.6" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/288225d6a916ee64499ea7dee34aa151fbf1201f9a9982dfa3745e632016f18df502b11ab9e1599bc1082b34dcfa80e241834e82861bb6b58f3fbfedeb854ebf + languageName: node + linkType: hard + +"@react-aria/focus@npm:^3.18.1": + version: 3.18.1 + resolution: "@react-aria/focus@npm:3.18.1" + dependencies: + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/e52cac0c7b61f5e78fa4e7be7dc090fb5ff028549facaf58488712574042f73f1a0dc9f2f3b96ea2c239f581049bf3b4476aad292a7c9cda378c12d02327f1c6 + languageName: node + linkType: hard + +"@react-aria/form@npm:^3.0.7": + version: 3.0.7 + resolution: "@react-aria/form@npm:3.0.7" + dependencies: + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/form": "npm:^3.0.5" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/83f238854f6f3cb2ef9646d66a99965c55e56bade9ac42a0d56e9ac8354b277fefb9708d6aba2f1dbd2f47ccf8966f7ad6f386bec168db8b217c3c1511a568c6 + languageName: node + linkType: hard + +"@react-aria/grid@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-aria/grid@npm:3.10.1" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/live-announcer": "npm:^3.3.4" + "@react-aria/selection": "npm:^3.19.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/grid": "npm:^3.9.1" + "@react-stately/selection": "npm:^3.16.1" + "@react-types/checkbox": "npm:^3.8.3" + "@react-types/grid": "npm:^3.2.8" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/6072d42f5d8d1a98cf0b623e174348fd1d742e7a9777aec131e65588768a6d64494aaf664f94eb666c357cc15fc17e782b720343ad4cb1945c6afac3785eec69 + languageName: node + linkType: hard + +"@react-aria/gridlist@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-aria/gridlist@npm:3.9.1" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/grid": "npm:^3.10.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/selection": "npm:^3.19.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/list": "npm:^3.10.7" + "@react-stately/tree": "npm:^3.8.3" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/702e7840b0f979fdf5ade22159377ea89486c2e4e5c86b293f71df8c8a36178916a84fa9397724063fbd17726bdd79992cd0a5ad25b3eec582d948f1227ad14c + languageName: node + linkType: hard + +"@react-aria/i18n@npm:^3.12.1": + version: 3.12.1 + resolution: "@react-aria/i18n@npm:3.12.1" + dependencies: + "@internationalized/date": "npm:^3.5.5" + "@internationalized/message": "npm:^3.1.4" + "@internationalized/number": "npm:^3.5.3" + "@internationalized/string": "npm:^3.2.3" + "@react-aria/ssr": "npm:^3.9.5" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/145d602a0f47a24fe38ba444b2b72f7917d3f6656a2e3af9c71850af44f8939f912e508b6b4d251f8b8dc6c93ead3fe4749ab7f71e756304a675f23a852eebf1 + languageName: node + linkType: hard + +"@react-aria/interactions@npm:^3.22.1": + version: 3.22.1 + resolution: "@react-aria/interactions@npm:3.22.1" + dependencies: + "@react-aria/ssr": "npm:^3.9.5" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/d54d5398cd0e399b9752f57628b2c58c25add43c74fa785f849ffa187605a14bf0cc5754e1d8859af244cd3bb4478309fdea6e02653b5cbebfc7a66c8142e059 + languageName: node + linkType: hard + +"@react-aria/label@npm:^3.7.10": + version: 3.7.10 + resolution: "@react-aria/label@npm:3.7.10" + dependencies: + "@react-aria/utils": "npm:^3.25.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/34759d487c9d93041ce582fc0e5b2e5f8418c88e81ed913ed061e160a01acf42d2556a342017fb0448799e4544c731d261925df5910178bfb70c92ea83c9e4af + languageName: node + linkType: hard + +"@react-aria/link@npm:^3.7.3": + version: 3.7.3 + resolution: "@react-aria/link@npm:3.7.3" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/link": "npm:^3.5.7" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/751f68003aef54c277c98c823fb0289772c4069963a909e4456acd1810fb5f41436fa6e2296cb500561f48b34b467addd94454428d10d738e108812a64b1fcee + languageName: node + linkType: hard + +"@react-aria/listbox@npm:^3.12.1, @react-aria/listbox@npm:^3.13.1": + version: 3.13.1 + resolution: "@react-aria/listbox@npm:3.13.1" + dependencies: + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/selection": "npm:^3.19.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/list": "npm:^3.10.7" + "@react-types/listbox": "npm:^3.5.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/894aa8943bdd7b49dc374ae87caa7a3e8f6b0ae20bfa48047e86127db32e2a4057121f6209483f0e931015597e031a904593e56b2228cbc1008b22d438c3df44 + languageName: node + linkType: hard + +"@react-aria/live-announcer@npm:^3.3.4": + version: 3.3.4 + resolution: "@react-aria/live-announcer@npm:3.3.4" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/69c86b75686a2c4108da3f959da4c5739b0130ff370468c6d8ea3aaf594315c6ac1577c5b7bdb56629073ad19852d2bef18e412fd7acfd6c390201291ac9dcf9 + languageName: node + linkType: hard + +"@react-aria/menu@npm:^3.15.1": + version: 3.15.1 + resolution: "@react-aria/menu@npm:3.15.1" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/overlays": "npm:^3.23.1" + "@react-aria/selection": "npm:^3.19.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/menu": "npm:^3.8.1" + "@react-stately/tree": "npm:^3.8.3" + "@react-types/button": "npm:^3.9.6" + "@react-types/menu": "npm:^3.9.11" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/7e6cd5f3a7bf1fc71f71672c370a037be9052a44a54980edc8bff4ce83d01c283729b972504f4df073b087439613c49bc90d69a2bce33b03fe9df6bf247374ee + languageName: node + linkType: hard + +"@react-aria/meter@npm:^3.4.15": + version: 3.4.15 + resolution: "@react-aria/meter@npm:3.4.15" + dependencies: + "@react-aria/progress": "npm:^3.4.15" + "@react-types/meter": "npm:^3.4.3" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/104b67005613ff096155f1f2d6d1f023c0f5262affebad14f1b53c83ade2e0fd83066ff64dcd54ae132436af4832866f7d804ca8a770879243539c2946411ad5 + languageName: node + linkType: hard + +"@react-aria/numberfield@npm:^3.11.5": + version: 3.11.5 + resolution: "@react-aria/numberfield@npm:3.11.5" + dependencies: + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/spinbutton": "npm:^3.6.7" + "@react-aria/textfield": "npm:^3.14.7" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/form": "npm:^3.0.5" + "@react-stately/numberfield": "npm:^3.9.5" + "@react-types/button": "npm:^3.9.6" + "@react-types/numberfield": "npm:^3.8.5" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/71c9cbd60847b81642b65520ba226bb32beb81c8ce0d7835cb6ce87132f35809b17b556a7538fb8beefdbd3945730156327bff030983f66b0c53b50f64bfe989 + languageName: node + linkType: hard + +"@react-aria/overlays@npm:^3.22.1, @react-aria/overlays@npm:^3.23.1": + version: 3.23.1 + resolution: "@react-aria/overlays@npm:3.23.1" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/ssr": "npm:^3.9.5" + "@react-aria/utils": "npm:^3.25.1" + "@react-aria/visually-hidden": "npm:^3.8.14" + "@react-stately/overlays": "npm:^3.6.9" + "@react-types/button": "npm:^3.9.6" + "@react-types/overlays": "npm:^3.8.9" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/3a5829a57a28071efcbb4a548d6e30e5b0ea52c831e03ef5394c0fa64625ce3b4f64b7e769653f32d0bea6bbee0ee5ad7a1e6ae87373fb861fef57b1d54ee7df + languageName: node + linkType: hard + +"@react-aria/progress@npm:^3.4.15": + version: 3.4.15 + resolution: "@react-aria/progress@npm:3.4.15" + dependencies: + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/progress": "npm:^3.5.6" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/cb2b130fe869333d3c014b6093c62c29372dc7d680e121552a918f7b1f08808d53371b75b41f6c431bc54a9609babd624965a00f3e4ceaf68e850294f86464e0 + languageName: node + linkType: hard + +"@react-aria/radio@npm:^3.10.6": + version: 3.10.6 + resolution: "@react-aria/radio@npm:3.10.6" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/form": "npm:^3.0.7" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/radio": "npm:^3.10.6" + "@react-types/radio": "npm:^3.8.3" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/a5e2da0453f9319314607bba16f788efbe21016b326ddcbd4721687b18db7b6999afe4ddff4bae52948650dcfea78f6ef16d0aa73fb808a27230c013ba38499c + languageName: node + linkType: hard + +"@react-aria/searchfield@npm:^3.7.7": + version: 3.7.7 + resolution: "@react-aria/searchfield@npm:3.7.7" + dependencies: + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/textfield": "npm:^3.14.7" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/searchfield": "npm:^3.5.5" + "@react-types/button": "npm:^3.9.6" + "@react-types/searchfield": "npm:^3.5.7" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/48a6b01fb939b263e2cee8299591b121e04246bd439e3a34f8d7f4acf20e5e890a862251a239d465e054662c1e9a5b316ed4ea63f19bf9abd662f6cb492b6057 + languageName: node + linkType: hard + +"@react-aria/select@npm:^3.14.7": + version: 3.14.7 + resolution: "@react-aria/select@npm:3.14.7" + dependencies: + "@react-aria/form": "npm:^3.0.7" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/listbox": "npm:^3.13.1" + "@react-aria/menu": "npm:^3.15.1" + "@react-aria/selection": "npm:^3.19.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-aria/visually-hidden": "npm:^3.8.14" + "@react-stately/select": "npm:^3.6.6" + "@react-types/button": "npm:^3.9.6" + "@react-types/select": "npm:^3.9.6" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/26f302bcac13684732fc447896096abc1dade9458d7547233b036ec9633ebf946f907e0f997daa79b753ff3dc13d261ea1f38b8678d15bcdc6c82b343cb6f2ea + languageName: node + linkType: hard + +"@react-aria/selection@npm:^3.19.1": + version: 3.19.1 + resolution: "@react-aria/selection@npm:3.19.1" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/selection": "npm:^3.16.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/6b00810378d4e57e4cfd72af223df7772a52bf4c68fee3398f23b1e43c293c2eaca66048d1f4ef1180d80163e5f2e95cf105077e0e48cdebadfcb254d4cd47a6 + languageName: node + linkType: hard + +"@react-aria/separator@npm:^3.4.1": + version: 3.4.1 + resolution: "@react-aria/separator@npm:3.4.1" + dependencies: + "@react-aria/utils": "npm:^3.25.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/a48f42b21f14d1bb20149d8b5c43a41b1bed8bdc3876609c762a891cf5158889c419ea99f08be4efb77fe76b9e5f18a86f6d7085409195c9dc0460c6daf4d17e + languageName: node + linkType: hard + +"@react-aria/slider@npm:^3.7.10": + version: 3.7.10 + resolution: "@react-aria/slider@npm:3.7.10" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/slider": "npm:^3.5.6" + "@react-types/shared": "npm:^3.24.1" + "@react-types/slider": "npm:^3.7.5" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/309b6a7fea5220a798712f89b5e47ec75676667252546d24d0883f630e034130fe72bc306861268cead914ee796818ebc6f59ab6ffb3a32a8cd91fc82dcef021 + languageName: node + linkType: hard + +"@react-aria/spinbutton@npm:^3.6.7": + version: 3.6.7 + resolution: "@react-aria/spinbutton@npm:3.6.7" + dependencies: + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/live-announcer": "npm:^3.3.4" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/button": "npm:^3.9.6" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/44238b64b267513567b1eed1c24c5696c77bb61855223a7867ad9004a070cf042a895ebcd97c2970dd52b67cebce6d74807664d97eb5d03f2cfe0dd3613b1eb3 + languageName: node + linkType: hard + +"@react-aria/ssr@npm:^3.9.5": + version: 3.9.5 + resolution: "@react-aria/ssr@npm:3.9.5" + dependencies: + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/e28d3e366b77c77276bd74c8d906ccccc9a5f72c00e65c82c9f35584c3bb2467513429e87facc4e6ede756a2870dddb1645073a6b9afb00b3f28f20a1b0f2d36 + languageName: node + linkType: hard + +"@react-aria/switch@npm:^3.6.6": + version: 3.6.6 + resolution: "@react-aria/switch@npm:3.6.6" + dependencies: + "@react-aria/toggle": "npm:^3.10.6" + "@react-stately/toggle": "npm:^3.7.6" + "@react-types/shared": "npm:^3.24.1" + "@react-types/switch": "npm:^3.5.5" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/bd83dc1b3467f58c451d8b5d7a4bd2a6cbf848e291e5487a487f8694fb182bd6213890ea8a2f15a113d04ca8f4fe4c4ec276644228e208b1bf38a105af05f2e4 + languageName: node + linkType: hard + +"@react-aria/table@npm:^3.15.1": + version: 3.15.1 + resolution: "@react-aria/table@npm:3.15.1" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/grid": "npm:^3.10.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/live-announcer": "npm:^3.3.4" + "@react-aria/utils": "npm:^3.25.1" + "@react-aria/visually-hidden": "npm:^3.8.14" + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/flags": "npm:^3.0.3" + "@react-stately/table": "npm:^3.12.1" + "@react-types/checkbox": "npm:^3.8.3" + "@react-types/grid": "npm:^3.2.8" + "@react-types/shared": "npm:^3.24.1" + "@react-types/table": "npm:^3.10.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/5684c5de6281b34de63a0d872fe777d793d7403deeaa7645946797c75fc9e0ccc8a7be316a06e1cbf88e477f592b1a0124da4f395d0d26c16be126db93f24cd3 + languageName: node + linkType: hard + +"@react-aria/tabs@npm:^3.9.3": + version: 3.9.3 + resolution: "@react-aria/tabs@npm:3.9.3" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/selection": "npm:^3.19.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/tabs": "npm:^3.6.8" + "@react-types/shared": "npm:^3.24.1" + "@react-types/tabs": "npm:^3.3.9" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/59225fc3e25709006e474dd269df673125e06528173fed777fd75337b52bbe4c5a1bc4e4f5b67f27a324c099cdcc4dea040b3f73c7ce3e77eb06e7218d9e4531 + languageName: node + linkType: hard + +"@react-aria/tag@npm:^3.4.3": + version: 3.4.3 + resolution: "@react-aria/tag@npm:3.4.3" + dependencies: + "@react-aria/gridlist": "npm:^3.9.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/selection": "npm:^3.19.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/list": "npm:^3.10.7" + "@react-types/button": "npm:^3.9.6" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/07044ab99d2866a21677b88d4ed4141e5fb327f822cad8c88b9e8ce87ad171cbddcadbec20e5260a1f5437e31bdb4d6802f0ff7703a067db9bfec77bf7ad051a + languageName: node + linkType: hard + +"@react-aria/textfield@npm:^3.14.7": + version: 3.14.7 + resolution: "@react-aria/textfield@npm:3.14.7" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/form": "npm:^3.0.7" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/form": "npm:^3.0.5" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/shared": "npm:^3.24.1" + "@react-types/textfield": "npm:^3.9.5" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/f7805991e4593c3223f5ceee33984148575e504907b9d283b2ceef2815d6fa25c825536c71032585f873199ce62f6c28ea22db747f21b9dc970e115181024724 + languageName: node + linkType: hard + +"@react-aria/toggle@npm:^3.10.6": + version: 3.10.6 + resolution: "@react-aria/toggle@npm:3.10.6" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/toggle": "npm:^3.7.6" + "@react-types/checkbox": "npm:^3.8.3" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/80263dd0f445f48a4cff6501dd76cccef92b7552541a438b42f853cdd410196209854cc0a1b25dddf14a01d95221b7a0cd4dcfd381c4ffa26ea9c3d3b523c51b + languageName: node + linkType: hard + +"@react-aria/tooltip@npm:^3.7.6": + version: 3.7.6 + resolution: "@react-aria/tooltip@npm:3.7.6" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-stately/tooltip": "npm:^3.4.11" + "@react-types/shared": "npm:^3.24.1" + "@react-types/tooltip": "npm:^3.4.11" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/6fa92ada13ce0840eef879e155eaa4155462984e2bea62150d762879d20f2085f035173566a11e61612361b9490f21bde43377206889caf40ae84b8cd7a55bf8 + languageName: node + linkType: hard + +"@react-aria/utils@npm:^3.24.1, @react-aria/utils@npm:^3.25.1": + version: 3.25.1 + resolution: "@react-aria/utils@npm:3.25.1" + dependencies: + "@react-aria/ssr": "npm:^3.9.5" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/a03638713ce7d4f415256cbd3643ef16f2cfd76839778a4ec3b232c6534bd1b4aa1ce02d77dddca57305a04a220dcf345da187e16ba4ae5b2081d73479bafb33 + languageName: node + linkType: hard + +"@react-aria/visually-hidden@npm:^3.8.14": + version: 3.8.14 + resolution: "@react-aria/visually-hidden@npm:3.8.14" + dependencies: + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/6ba4071afe0dc5c587dccaec263ecbe0722ec69af7e6dff1c3737702a35f599c6459946a15b7683f1ae1b80c6ada72dbae27eb45269afd1c613ad832add76fe7 + languageName: node + linkType: hard + +"@react-icons/all-files@npm:^4.1.0": + version: 4.1.0 + resolution: "@react-icons/all-files@npm:4.1.0" + peerDependencies: + react: "*" + checksum: 10c0/6327623b857ba2a9fdf835f2e7029feec7acdd53dc14163085789518d7e1323deb7db649b660d3bad3991285e8408238ad4d09c37b9a0ba7d2601dd74ac0ae56 + languageName: node + linkType: hard + +"@react-stately/calendar@npm:^3.5.3": + version: 3.5.3 + resolution: "@react-stately/calendar@npm:3.5.3" + dependencies: + "@internationalized/date": "npm:^3.5.5" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/calendar": "npm:^3.4.8" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/8ae73e55503ee93864eded90bdbe3155218e55de0e19f52c5419930be41634085b8f90f99e56775ddef1f3172ef03f1fa0710bb9fd3cc5155d62a4f6305fc980 + languageName: node + linkType: hard + +"@react-stately/checkbox@npm:^3.6.7": + version: 3.6.7 + resolution: "@react-stately/checkbox@npm:3.6.7" + dependencies: + "@react-stately/form": "npm:^3.0.5" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/checkbox": "npm:^3.8.3" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/e84c9e8d57631e1007e05268cd15fce84f5208fd8d2f8bc3313ac6fede36cb580f224260a98caebfb9bdb7f5e54b43758d867d7e8e45ce67b4f6656b91a20792 + languageName: node + linkType: hard + +"@react-stately/collections@npm:^3.10.9": + version: 3.10.9 + resolution: "@react-stately/collections@npm:3.10.9" + dependencies: + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/726fb28ee15b3c115caef3b39513b70672c9a6c6e4de88d0c13572d449e95f5bd188bc2eac0ebd147fef78b4e008eefb20149e63c37b3c9bdf126dc98a237d2b + languageName: node + linkType: hard + +"@react-stately/combobox@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-stately/combobox@npm:3.9.1" + dependencies: + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/form": "npm:^3.0.5" + "@react-stately/list": "npm:^3.10.7" + "@react-stately/overlays": "npm:^3.6.9" + "@react-stately/select": "npm:^3.6.6" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/combobox": "npm:^3.12.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/74a160c1ee8af41a2fb329d4f885a43e2c58ed3c14d4393bd96232acf0905f447bf1e1c5e50afe9a746016aaebe0b5e93cbfcd4aec1bdee0be0dfeb1248f07c8 + languageName: node + linkType: hard + +"@react-stately/data@npm:^3.11.6": + version: 3.11.6 + resolution: "@react-stately/data@npm:3.11.6" + dependencies: + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/b81e229ef2ca8b0bc80a35a47695a1fbf1dd1c15f1728411e2440b398439024ce405cba963cbff267bf0a6235650f06744b719e6764fa21f6f490307c98783e1 + languageName: node + linkType: hard + +"@react-stately/datepicker@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-stately/datepicker@npm:3.10.1" + dependencies: + "@internationalized/date": "npm:^3.5.5" + "@internationalized/string": "npm:^3.2.3" + "@react-stately/form": "npm:^3.0.5" + "@react-stately/overlays": "npm:^3.6.9" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/datepicker": "npm:^3.8.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/0f50b56d643517ac9353cc2a4c0e30160c086075b586107bddf1c49da5072affd654de23b521b14feef40ab4307c183ca6ee98c179344d9075fa1d36fba42153 + languageName: node + linkType: hard + +"@react-stately/dnd@npm:^3.4.1": + version: 3.4.1 + resolution: "@react-stately/dnd@npm:3.4.1" + dependencies: + "@react-stately/selection": "npm:^3.16.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/7aeeb34f7dd7099635b1c08b1004ae7698af1b1cac5c1bdfbf2741aecc97d4555f8410fb01f45261dbf5f956df8b54f32c1d1083e971cae8dc51ae2f09711e1e + languageName: node + linkType: hard + +"@react-stately/flags@npm:^3.0.3": + version: 3.0.3 + resolution: "@react-stately/flags@npm:3.0.3" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/314a5885e2060dc56a32d1bae892af1f7644e14e66aa3ae3f6c0b1b4a6a1a8ded0e03adcea24bcfb9df3b87cd77f2139fde8a3d1098a0e3ba3604c3c8916385e + languageName: node + linkType: hard + +"@react-stately/form@npm:^3.0.5": + version: 3.0.5 + resolution: "@react-stately/form@npm:3.0.5" + dependencies: + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/e85c2e4635b56b29d0aaf636e6c4d9df9c8a2877db2cfb3a0d0a4ecb4fa54f028a24a606a495152d83c8b350a97dda199c572f1413a2d49ce9dd8ebcf577a51f + languageName: node + linkType: hard + +"@react-stately/grid@npm:^3.9.1": + version: 3.9.1 + resolution: "@react-stately/grid@npm:3.9.1" + dependencies: + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/selection": "npm:^3.16.1" + "@react-types/grid": "npm:^3.2.8" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/0a10d718062215c2c75bd27d629bf6af926e206edafaf846d97754d2d8c5a183cc1f72d83320648cfdfa5cc6ecbdeb94abff7ff0fd68f2ea7b8033ec840e3099 + languageName: node + linkType: hard + +"@react-stately/list@npm:^3.10.7": + version: 3.10.7 + resolution: "@react-stately/list@npm:3.10.7" + dependencies: + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/selection": "npm:^3.16.1" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/fba520082a8ff84cf1f9df20c7675366d16585fb58788c845ee3dedf3611c609c5746c1c40ce0cce45fffed2bb778eb4a26a0550006d44935dd164598e9d4f51 + languageName: node + linkType: hard + +"@react-stately/menu@npm:^3.8.1": + version: 3.8.1 + resolution: "@react-stately/menu@npm:3.8.1" + dependencies: + "@react-stately/overlays": "npm:^3.6.9" + "@react-types/menu": "npm:^3.9.11" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/81c9edddcbd4554337028545700fd18b1c8b70980ff6b4d97a15c90fb8d17ecec799a9aae826f0cd340f813cc4d25a210c06c83f6754f116b27ee22b2c706546 + languageName: node + linkType: hard + +"@react-stately/numberfield@npm:^3.9.5": + version: 3.9.5 + resolution: "@react-stately/numberfield@npm:3.9.5" + dependencies: + "@internationalized/number": "npm:^3.5.3" + "@react-stately/form": "npm:^3.0.5" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/numberfield": "npm:^3.8.5" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/75df2a78d9c2eba744f7d8bc9d57f7edd97f90152694978c4f75cb8260af0bd3d0aa3dce7f5ddbb1a1d2253e9cbb2a557218fab6e0f8ee7d200d2ddbf7422f8c + languageName: node + linkType: hard + +"@react-stately/overlays@npm:^3.6.9": + version: 3.6.9 + resolution: "@react-stately/overlays@npm:3.6.9" + dependencies: + "@react-stately/utils": "npm:^3.10.2" + "@react-types/overlays": "npm:^3.8.9" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/ee8074c60257605169f649c8dde09379d5700a7284c453c7e53b9ba84442247eac170319fab5b8e7663e698560ec3cb5c8014cc9f50b0edb9fbef3ae7bec7ef5 + languageName: node + linkType: hard + +"@react-stately/radio@npm:^3.10.6": + version: 3.10.6 + resolution: "@react-stately/radio@npm:3.10.6" + dependencies: + "@react-stately/form": "npm:^3.0.5" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/radio": "npm:^3.8.3" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/762713b9d39c11deee83b8192556ae911849e67349d029f1dc547a8167bc3cc56553c5d034ae8a44637f901dad1aaf94c5186e7ed291afd56ff565def8b6676a + languageName: node + linkType: hard + +"@react-stately/searchfield@npm:^3.5.5": + version: 3.5.5 + resolution: "@react-stately/searchfield@npm:3.5.5" + dependencies: + "@react-stately/utils": "npm:^3.10.2" + "@react-types/searchfield": "npm:^3.5.7" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/3d600d81bb806227d882b4f50a656fafbc7923c0bc647744827e7081b545dd905cd405262473fdf2858cf12c4eb660bd6f35e68183c34f2f22efc12234bafe5b + languageName: node + linkType: hard + +"@react-stately/select@npm:^3.6.6": + version: 3.6.6 + resolution: "@react-stately/select@npm:3.6.6" + dependencies: + "@react-stately/form": "npm:^3.0.5" + "@react-stately/list": "npm:^3.10.7" + "@react-stately/overlays": "npm:^3.6.9" + "@react-types/select": "npm:^3.9.6" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/6894b64bef84c3abc3de7711491e1696412f18521c15f16772542d7b16a1598f29d2375e0dba4cb5789212db322934cf6e47df22e78e4d96dc90412a9b9b3637 + languageName: node + linkType: hard + +"@react-stately/selection@npm:^3.16.1": + version: 3.16.1 + resolution: "@react-stately/selection@npm:3.16.1" + dependencies: + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/d4bd18c0a565070a0390e0cd0c658fcede552fdd7714f6c19f08013633cff3cb2b1c4c18004bb5e639a4455ec05ca34932ca3a703ff439f1b12c9487e7305607 + languageName: node + linkType: hard + +"@react-stately/slider@npm:^3.5.6": + version: 3.5.6 + resolution: "@react-stately/slider@npm:3.5.6" + dependencies: + "@react-stately/utils": "npm:^3.10.2" + "@react-types/shared": "npm:^3.24.1" + "@react-types/slider": "npm:^3.7.5" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/20056505c707c2667c350695fa20c7121aae317f82dda1b90bb711f34fcc7e5a63c39e6b0626efc49bca6658b3fd90996bba3f8bc3a9c959f8037ee1c0371264 + languageName: node + linkType: hard + +"@react-stately/table@npm:^3.12.1": + version: 3.12.1 + resolution: "@react-stately/table@npm:3.12.1" + dependencies: + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/flags": "npm:^3.0.3" + "@react-stately/grid": "npm:^3.9.1" + "@react-stately/selection": "npm:^3.16.1" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/grid": "npm:^3.2.8" + "@react-types/shared": "npm:^3.24.1" + "@react-types/table": "npm:^3.10.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/4d2922c976add176c14d01caa2adada27f4244f310e84205b3c35879b8db7edde93cb9ee0bb633485111aa2484659966c26b8bd724b23afcf02d0ea8f7a13110 + languageName: node + linkType: hard + +"@react-stately/tabs@npm:^3.6.8": + version: 3.6.8 + resolution: "@react-stately/tabs@npm:3.6.8" + dependencies: + "@react-stately/list": "npm:^3.10.7" + "@react-types/shared": "npm:^3.24.1" + "@react-types/tabs": "npm:^3.3.9" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/45e353bf2aaa248640f10a41b0ed1c98be85d4c37fb79f0cea2059824c5b761f67c7564f18af838d4498ad724e9f6f8fe59c44ffe700af5addb5b5ac1757c58c + languageName: node + linkType: hard + +"@react-stately/toggle@npm:^3.7.6": + version: 3.7.6 + resolution: "@react-stately/toggle@npm:3.7.6" + dependencies: + "@react-stately/utils": "npm:^3.10.2" + "@react-types/checkbox": "npm:^3.8.3" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/d79fa29ad9cc5783c31920f0cae9af5cf5c9e5b8edbb3eda827b88e30995504762be27ee891e77e61db6342880225749b8ab55b084caf3bf5ee193a411c07e51 + languageName: node + linkType: hard + +"@react-stately/tooltip@npm:^3.4.11": + version: 3.4.11 + resolution: "@react-stately/tooltip@npm:3.4.11" + dependencies: + "@react-stately/overlays": "npm:^3.6.9" + "@react-types/tooltip": "npm:^3.4.11" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/78be4066d582325c898784d32c4f324d0cfd4a953f05b4942ca530da22c3f6b9849888530ab382cfc02f17f204a6139536918a671339d3cf991a00a1221c4e5a + languageName: node + linkType: hard + +"@react-stately/tree@npm:^3.8.3": + version: 3.8.3 + resolution: "@react-stately/tree@npm:3.8.3" + dependencies: + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/selection": "npm:^3.16.1" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/6c87317309220043fefb0434d308a433a3936f864ff6eb690641e9b0d7ba065802fca7a5cfb7f26ff6c8f1789585ed100bca6b743fc173d1ad9d6f702e996488 + languageName: node + linkType: hard + +"@react-stately/utils@npm:^3.10.2": + version: 3.10.2 + resolution: "@react-stately/utils@npm:3.10.2" + dependencies: + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/b7cefaeaab45e700916130fbef25480245068d10272e40a18133d5fc6a187f666a2e50bf0c21cb6774060b9b2313a2ff4b188982e759b31995b87a51432c6fe1 + languageName: node + linkType: hard + +"@react-types/breadcrumbs@npm:^3.7.7": + version: 3.7.7 + resolution: "@react-types/breadcrumbs@npm:3.7.7" + dependencies: + "@react-types/link": "npm:^3.5.7" + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/9deaac78acfd4ccf9d821bdf3bed8701e933b1e106f9ff55ca890cb6e75eaf5e3432d631ac61f02829078305c00bc54123c82d0405511b83b171ca1f64d8e48c + languageName: node + linkType: hard + +"@react-types/button@npm:^3.9.6": + version: 3.9.6 + resolution: "@react-types/button@npm:3.9.6" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/b041a3922d8fa0a41ae4ca4f1e229b8ded70397057b1d6c6cd62e619978530c04cb283578a0c21afb83246169bfa0a71fb065071d12b58fa5d8c5e36c39abf1c + languageName: node + linkType: hard + +"@react-types/calendar@npm:^3.4.8": + version: 3.4.8 + resolution: "@react-types/calendar@npm:3.4.8" + dependencies: + "@internationalized/date": "npm:^3.5.5" + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/ccecf3dece7da830c2a260bd4ee11541c241bf95ba990d051c187b727a5308d03271e5d401c2715d436c3548cf69d63894a872d0d0cad27230a2f17628c2fdc1 + languageName: node + linkType: hard + +"@react-types/checkbox@npm:^3.8.3": + version: 3.8.3 + resolution: "@react-types/checkbox@npm:3.8.3" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/cc968b449857022a3b6a51ca7882ba6a7bc17a4878457c94eec93fcaf482cb02611b471c4fdb2c5060422bc6a2e6f4a10db011e48eb64bcece8d17934707cde6 + languageName: node + linkType: hard + +"@react-types/combobox@npm:^3.12.1": + version: 3.12.1 + resolution: "@react-types/combobox@npm:3.12.1" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/714dde84ce0effba879744bb4ae914a13215621d8b46692b09fbe71238143067163f9d07bcf2ea252aeb893118db57ceb32994746523852dd8d216a28ce3384b + languageName: node + linkType: hard + +"@react-types/datepicker@npm:^3.8.1": + version: 3.8.1 + resolution: "@react-types/datepicker@npm:3.8.1" + dependencies: + "@internationalized/date": "npm:^3.5.5" + "@react-types/calendar": "npm:^3.4.8" + "@react-types/overlays": "npm:^3.8.9" + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/4331a95b637a527217bd2fb2fdcc1ca2903653f17d53c30a2b25cb3ae2d8f382308f64cc0a7018d43d4dce3331e4c46f6ef0d0a7a36466b4839420dbad5bfafa + languageName: node + linkType: hard + +"@react-types/dialog@npm:^3.5.12": + version: 3.5.12 + resolution: "@react-types/dialog@npm:3.5.12" + dependencies: + "@react-types/overlays": "npm:^3.8.9" + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/75991c5be8a28323936baa2461db4cb4dc877a9f210a9d4f11f667d7b0e1eca2f90090fbaf335bb4be71c905216286177721fd7e9ba3ae084b1a272b2e8da6cb + languageName: node + linkType: hard + +"@react-types/grid@npm:^3.2.8": + version: 3.2.8 + resolution: "@react-types/grid@npm:3.2.8" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/1c2c456f89b2984fc330f9ddacd4d45c8aaf1afbaec8444e753a84dceea4381325c07d153b28942959b369ad7667575ae9bae08bd7c11a1ee22e908dd658498c + languageName: node + linkType: hard + +"@react-types/link@npm:^3.5.7": + version: 3.5.7 + resolution: "@react-types/link@npm:3.5.7" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/cc8c526ff1fcacab28647f7355a96ba21b858444d53ff5eb236636fc88da9e3fb91e784aa5cf2d112cdbf7be8fdea5067a975be6c1c113cd7e5dc3bf4fc8499c + languageName: node + linkType: hard + +"@react-types/listbox@npm:^3.5.1": + version: 3.5.1 + resolution: "@react-types/listbox@npm:3.5.1" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/fa1d0ec7e70a4b9a2a2e379899016dd81d9172f9065f6626436ab956f166f73e0062c2c73f8122b993096d8936f8433e85d6ecebeae67b54980e571ec30d688e + languageName: node + linkType: hard + +"@react-types/menu@npm:^3.9.11": + version: 3.9.11 + resolution: "@react-types/menu@npm:3.9.11" + dependencies: + "@react-types/overlays": "npm:^3.8.9" + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/e0bae8eb7c19900512a32d0d4d2909b7537c28be30cb58c9c8ff0de621828bdf14030fbe17cd8addf919844aa3d462182b2c81a0b3eba864f7144c9edbec3add + languageName: node + linkType: hard + +"@react-types/meter@npm:^3.4.3": + version: 3.4.3 + resolution: "@react-types/meter@npm:3.4.3" + dependencies: + "@react-types/progress": "npm:^3.5.6" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/e06d845e33b6cd0d3dee783ea68927187409896db963be1b7356e6ab63f909fbb3deaed6f95ce8f2b8855cd2d4f8138b4c54a5ab7e6fb8898d324a177302e16d + languageName: node + linkType: hard + +"@react-types/numberfield@npm:^3.8.5": + version: 3.8.5 + resolution: "@react-types/numberfield@npm:3.8.5" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/842c6cbb6c68c48764b1498103b1c40e940285366a8b342c3e259c48b518e9c986d9e358e7f0f6af0aaddbb48d709681c4fd4dcd3bb9b553a5be20d7548ce068 + languageName: node + linkType: hard + +"@react-types/overlays@npm:^3.8.9": + version: 3.8.9 + resolution: "@react-types/overlays@npm:3.8.9" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/8719684bd606e119f3a20db73cecf1e36e7c2d8158b996e9308495e5b78252689c459ce394a798f03ebb0c7303eac67093ce9345eb45e5bb4e1ae55451dcf4b3 + languageName: node + linkType: hard + +"@react-types/progress@npm:^3.5.6": + version: 3.5.6 + resolution: "@react-types/progress@npm:3.5.6" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/dfd6e957148fef5014e3b3ca761f38ef9927dfad78bdbe194eb08fa747718903397d973170f91a4f98c6c703217996e60c76217c0601f71015c43a6332dc6aae + languageName: node + linkType: hard + +"@react-types/radio@npm:^3.8.3": + version: 3.8.3 + resolution: "@react-types/radio@npm:3.8.3" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/b110d915a11747897781bf635fc1f1b86be892f8bd01ce38e2e8e229d9ab82e46b37980540bd930e71124ccc02081d143c513440994da127f9ed2d34a75912ee + languageName: node + linkType: hard + +"@react-types/searchfield@npm:^3.5.7": + version: 3.5.7 + resolution: "@react-types/searchfield@npm:3.5.7" + dependencies: + "@react-types/shared": "npm:^3.24.1" + "@react-types/textfield": "npm:^3.9.5" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/cd40e9e9227aa7ba5d664d1f7bb69b83370f89726da5d2c1f5f6d07663228e4dc8543c7efb0c1328d757221a372072db9b160cc5d2062869aa32a5efce2b188c + languageName: node + linkType: hard + +"@react-types/select@npm:^3.9.6": + version: 3.9.6 + resolution: "@react-types/select@npm:3.9.6" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/10495da46af019a1f2a5473740f4dcf84cd03c4aee9aa19dba2a8867f521efc33d4587c02ef762619c903ef8426cd887b89957efe3c91c96acd9e07a60f19af8 + languageName: node + linkType: hard + +"@react-types/shared@npm:^3.24.1": + version: 3.24.1 + resolution: "@react-types/shared@npm:3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/34ef83cf5d945963208beb724d54468e5371fd7361024f6f42a29cdc6d4a9516aa4d82804cdecbcf01c16d82c96aacb511418d7c839e1ea4579b20411e565ed4 + languageName: node + linkType: hard + +"@react-types/slider@npm:^3.7.5": + version: 3.7.5 + resolution: "@react-types/slider@npm:3.7.5" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/7566c726c2b4a0639130c4bb0730dc66bb17cacdfba39af95fbe64ef30544805ac2eb00af69d2689fc86529a0b7beea544e4c2d7f6fc91f1e3633921d0e9feff + languageName: node + linkType: hard + +"@react-types/switch@npm:^3.5.5": + version: 3.5.5 + resolution: "@react-types/switch@npm:3.5.5" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/b7d865c49d213af0048fd36d29991779021c3a6bc9a8e57eabe10f05be42b122c49fc3d2ba287bf3fd33b65fc00442905c9f3784d2524a333c931c782c55e2eb + languageName: node + linkType: hard + +"@react-types/table@npm:^3.10.1": + version: 3.10.1 + resolution: "@react-types/table@npm:3.10.1" + dependencies: + "@react-types/grid": "npm:^3.2.8" + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/1f3d2390f421ed9053816ba40b41744c5168d8f3b926c29d565e5588420a133315f1d2301db16c33ffff5d0689fad014b388385fd5876a7c365873e21b02189d + languageName: node + linkType: hard + +"@react-types/tabs@npm:^3.3.9": + version: 3.3.9 + resolution: "@react-types/tabs@npm:3.3.9" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/53416d3060c911e3c1416e5fe749cffff5eca30ed1a101bb012b9c89726cea818fd1f16650230410bec0dd7d2626dc1581c53106d7a0660101174a242f6ae458 + languageName: node + linkType: hard + +"@react-types/textfield@npm:^3.9.5": + version: 3.9.5 + resolution: "@react-types/textfield@npm:3.9.5" + dependencies: + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/d8732bbd53a44d7a6af824a063ec9ad8f448b0ac50dc7f5653ace06112c64b99a7c207415db213087b26c78e80b1d9eaf022c86b3b6030bf50f9bc08e0785aab + languageName: node + linkType: hard + +"@react-types/tooltip@npm:^3.4.11": + version: 3.4.11 + resolution: "@react-types/tooltip@npm:3.4.11" + dependencies: + "@react-types/overlays": "npm:^3.8.9" + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/76bfaeb25c9c06668e85e451bd527e0e15249f025a12fe4c710e8cb4d6ae2643f9fad065729646205c87b7be571c5d8baadb43ab7bc44946dc7e73402aae7f98 + languageName: node + linkType: hard + +"@rushstack/eslint-patch@npm:^1.1.3": + version: 1.10.3 + resolution: "@rushstack/eslint-patch@npm:1.10.3" + checksum: 10c0/ec75d23fba30fc5f3303109181ce81a686f7b5660b6e06d454cd7b74a635bd68d5b28300ddd6e2a53b6cb10a876246e952e12fa058af32b2fa29b73744f00521 + languageName: node + linkType: hard + +"@stablelib/aead@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/aead@npm:1.0.1" + checksum: 10c0/8ec16795a6f94264f93514661e024c5b0434d75000ea133923c57f0db30eab8ddc74fa35f5ff1ae4886803a8b92e169b828512c9e6bc02c818688d0f5b9f5aef + languageName: node + linkType: hard + +"@stablelib/binary@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/binary@npm:1.0.1" + dependencies: + "@stablelib/int": "npm:^1.0.1" + checksum: 10c0/154cb558d8b7c20ca5dc2e38abca2a3716ce36429bf1b9c298939cea0929766ed954feb8a9c59245ac64c923d5d3466bb7d99f281debd3a9d561e1279b11cd35 + languageName: node + linkType: hard + +"@stablelib/bytes@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/bytes@npm:1.0.1" + checksum: 10c0/ee99bb15dac2f4ae1aa4e7a571e76483617a441feff422442f293993bc8b2c7ef021285c98f91a043bc05fb70502457799e28ffd43a8564a17913ee5ce889237 + languageName: node + linkType: hard + +"@stablelib/chacha20poly1305@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha20poly1305@npm:1.0.1" + dependencies: + "@stablelib/aead": "npm:^1.0.1" + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/chacha": "npm:^1.0.1" + "@stablelib/constant-time": "npm:^1.0.1" + "@stablelib/poly1305": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/fe202aa8aface111c72bc9ec099f9c36a7b1470eda9834e436bb228618a704929f095b937f04e867fe4d5c40216ff089cbfeb2eeb092ab33af39ff333eb2c1e6 + languageName: node + linkType: hard + +"@stablelib/chacha@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha@npm:1.0.1" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/4d70b484ae89416d21504024f977f5517bf16b344b10fb98382c9e3e52fe8ca77ac65f5d6a358d8b152f2c9ffed101a1eb15ed1707cdf906e1b6624db78d2d16 + languageName: node + linkType: hard + +"@stablelib/constant-time@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/constant-time@npm:1.0.1" + checksum: 10c0/694a282441215735a1fdfa3d06db5a28ba92423890967a154514ef28e0d0298ce7b6a2bc65ebc4273573d6669a6b601d330614747aa2e69078c1d523d7069e12 + languageName: node + linkType: hard + +"@stablelib/ed25519@npm:^1.0.2": + version: 1.0.3 + resolution: "@stablelib/ed25519@npm:1.0.3" + dependencies: + "@stablelib/random": "npm:^1.0.2" + "@stablelib/sha512": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/b4a05e3c24dabd8a9e0b5bd72dea761bfb4b5c66404308e9f0529ef898e75d6f588234920762d5372cb920d9d47811250160109f02d04b6eed53835fb6916eb9 + languageName: node + linkType: hard + +"@stablelib/hash@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hash@npm:1.0.1" + checksum: 10c0/58b5572a4067820b77a1606ed2d4a6dc4068c5475f68ba0918860a5f45adf60b33024a0cea9532dcd8b7345c53b3c9636a23723f5f8ae83e0c3648f91fb5b5cc + languageName: node + linkType: hard + +"@stablelib/hkdf@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/hkdf@npm:1.0.1" + dependencies: + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/hmac": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/722d30e36afa8029fda2a9e8c65ad753deff92a234e708820f9fd39309d2494e1c035a4185f29ae8d7fbf8a74862b27128c66a1fb4bd7a792bd300190080dbe9 + languageName: node + linkType: hard + +"@stablelib/hmac@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hmac@npm:1.0.1" + dependencies: + "@stablelib/constant-time": "npm:^1.0.1" + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/a111d5e687966b62c81f7dbd390f13582b027edee9bd39df6474a6472e5ad89d705e735af32bae2c9280a205806649f54b5ff8c4e8c8a7b484083a35b257e9e6 + languageName: node + linkType: hard + +"@stablelib/int@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/int@npm:1.0.1" + checksum: 10c0/e1a6a7792fc2146d65de56e4ef42e8bc385dd5157eff27019b84476f564a1a6c43413235ed0e9f7c9bb8907dbdab24679467aeb10f44c92e6b944bcd864a7ee0 + languageName: node + linkType: hard + +"@stablelib/keyagreement@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/keyagreement@npm:1.0.1" + dependencies: + "@stablelib/bytes": "npm:^1.0.1" + checksum: 10c0/18c9e09772a058edee265c65992ec37abe4ab5118171958972e28f3bbac7f2a0afa6aaf152ec1d785452477bdab5366b3f5b750e8982ae9ad090f5fa2e5269ba + languageName: node + linkType: hard + +"@stablelib/poly1305@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/poly1305@npm:1.0.1" + dependencies: + "@stablelib/constant-time": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/080185ffa92f5111e6ecfeab7919368b9984c26d048b9c09a111fbc657ea62bb5dfe6b56245e1804ce692a445cc93ab6625936515fa0e7518b8f2d86feda9630 + languageName: node + linkType: hard + +"@stablelib/random@npm:^1.0.1, @stablelib/random@npm:^1.0.2": + version: 1.0.2 + resolution: "@stablelib/random@npm:1.0.2" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/ebb217cfb76db97d98ec07bd7ce03a650fa194b91f0cb12382738161adff1830f405de0e9bad22bbc352422339ff85f531873b6a874c26ea9b59cfcc7ea787e0 + languageName: node + linkType: hard + +"@stablelib/sha256@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha256@npm:1.0.1" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/e29ee9bc76eece4345e9155ce4bdeeb1df8652296be72bd2760523ad565e3b99dca85b81db3b75ee20b34837077eb8542ca88f153f162154c62ba1f75aecc24a + languageName: node + linkType: hard + +"@stablelib/sha512@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha512@npm:1.0.1" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/84549070a383f4daf23d9065230eb81bc8f590c68bf5f7968f1b78901236b3bb387c14f63773dc6c3dc78e823b1c15470d2a04d398a2506391f466c16ba29b58 + languageName: node + linkType: hard + +"@stablelib/wipe@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/wipe@npm:1.0.1" + checksum: 10c0/c5a54f769c286a5b3ecff979471dfccd4311f2e84a959908e8c0e3aa4eed1364bd9707f7b69d1384b757e62cc295c221fa27286c7f782410eb8a690f30cfd796 + languageName: node + linkType: hard + +"@stablelib/x25519@npm:^1.0.3": + version: 1.0.3 + resolution: "@stablelib/x25519@npm:1.0.3" + dependencies: + "@stablelib/keyagreement": "npm:^1.0.1" + "@stablelib/random": "npm:^1.0.2" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/d8afe8a120923a434359d7d1c6759780426fed117a84a6c0f84d1a4878834cb4c2d7da78a1fa7cf227ce3924fdc300cd6ed6e46cf2508bf17b1545c319ab8418 + languageName: node + linkType: hard + +"@swc/helpers@npm:0.5.2": + version: 0.5.2 + resolution: "@swc/helpers@npm:0.5.2" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/b6fa49bcf6c00571d0eb7837b163f8609960d4d77538160585e27ed167361e9776bd6e5eb9646ffac2fb4d43c58df9ca50dab9d96ab097e6591bc82a75fd1164 + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.5.0": + version: 0.5.8 + resolution: "@swc/helpers@npm:0.5.8" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/53a52b3654edb1b22ab317feb4ab7fa805eb368082530d2835647e5d0cc497f5c3aa8e16d568df6eee301982aac532674345acbaaa45354ffb58043768d4db36 + languageName: node + linkType: hard + +"@tanstack/match-sorter-utils@npm:^8.7.0": + version: 8.15.1 + resolution: "@tanstack/match-sorter-utils@npm:8.15.1" + dependencies: + remove-accents: "npm:0.5.0" + checksum: 10c0/a947c280093ed0214c3b1c6d9219b1a98cd000815891cb313f2a3e8cc01505a6d3bf358ba8273556804e0580a51e110a43ececabf0eec7386450662d827b0fa9 + languageName: node + linkType: hard + +"@tanstack/query-core@npm:4.32.0": + version: 4.32.0 + resolution: "@tanstack/query-core@npm:4.32.0" + checksum: 10c0/e897d1d294d79f6d3d522db2d64977e71d99f5f74e22314bd0bbbf6c31df3deac5d19516fc2513be4ad1c545fd031d4355ee0a47dec7211e70e80c9cd5feb25e + languageName: node + linkType: hard + +"@tanstack/react-query-devtools@npm:4.32.0": + version: 4.32.0 + resolution: "@tanstack/react-query-devtools@npm:4.32.0" + dependencies: + "@tanstack/match-sorter-utils": "npm:^8.7.0" + superjson: "npm:^1.10.0" + use-sync-external-store: "npm:^1.2.0" + peerDependencies: + "@tanstack/react-query": 4.32.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/c583365058f77b8e1199d938e4da337181b08dedd6316d25e4e65924e414aa4bf8b63072ab7fdc546bef01c4a9529368c6e30483f019999a6f2e87501bfeb8a4 + languageName: node + linkType: hard + +"@tanstack/react-query@npm:4.32.0": + version: 4.32.0 + resolution: "@tanstack/react-query@npm:4.32.0" + dependencies: + "@tanstack/query-core": "npm:4.32.0" + use-sync-external-store: "npm:^1.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-native: "*" + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + checksum: 10c0/761f0c48fba41d0296ac76d42d92128d6ca55fca261d819252753fb38988a6c1dc9442344bdccba946a8db243ebcd3f259c61ac1957933493db0605e1a0a0e77 + languageName: node + linkType: hard + +"@tanstack/react-virtual@npm:^3.8.3": + version: 3.9.0 + resolution: "@tanstack/react-virtual@npm:3.9.0" + dependencies: + "@tanstack/virtual-core": "npm:3.9.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/25b6e24d6ef7c5322d9ed8f422ac1ec6d0c18c75a0ef8d113911dd298e860f12138d6946532d1d6642a6f52b51b92de02cdb10a2c728c95e2c9bf57c650e255c + languageName: node + linkType: hard + +"@tanstack/virtual-core@npm:3.9.0": + version: 3.9.0 + resolution: "@tanstack/virtual-core@npm:3.9.0" + checksum: 10c0/2c8ce40204e377808a0f5dc53b95a04710eac7832b97f61a743ee234aba894c1efdf56e55be44d57e559d71b8d47f4e18f9535091fbe0fea68cc1dc12c3b577e + languageName: node + linkType: hard + +"@terra-money/feather.js@npm:^1.0.8": + version: 1.2.1 + resolution: "@terra-money/feather.js@npm:1.2.1" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7" + "@terra-money/terra.proto": "npm:^4.0.3" + assert: "npm:^2.0.0" + axios: "npm:^0.27.2" + bech32: "npm:^2.0.0" + bip32: "npm:^2.0.6" + bip39: "npm:^3.0.3" + bufferutil: "npm:^4.0.3" + crypto-browserify: "npm:^3.12.0" + decimal.js: "npm:^10.2.1" + ethers: "npm:^5.7.2" + jscrypto: "npm:^1.0.1" + keccak256: "npm:^1.0.6" + long: "npm:^5.2.3" + readable-stream: "npm:^3.6.0" + secp256k1: "npm:^4.0.2" + tmp: "npm:^0.2.1" + utf-8-validate: "npm:^5.0.5" + ws: "npm:^7.5.9" + checksum: 10c0/bf1c952bf6e6531f663727c5793bfc4a9fb1a6025eed0b8f68f994bedced184a11d961a4ae42620690108171428933fc48e68ea078b53c2375b938b791eb4ff0 + languageName: node + linkType: hard + +"@terra-money/legacy.proto@npm:@terra-money/terra.proto@^0.1.7": + version: 0.1.7 + resolution: "@terra-money/terra.proto@npm:0.1.7" + dependencies: + google-protobuf: "npm:^3.17.3" + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.2" + checksum: 10c0/3ae54002eac9b8fa7dcc90e167ca50134fd5d36549a336e1aa02c9deb6133441d755e6681a6a272e51c70e27610e1566ee5ccf1e2174f239f81b631cb7a8eead + languageName: node + linkType: hard + +"@terra-money/station-connector@npm:^1.1.0": + version: 1.1.0 + resolution: "@terra-money/station-connector@npm:1.1.0" + dependencies: + bech32: "npm:^2.0.0" + peerDependencies: + "@cosmjs/amino": ^0.31.0 + "@terra-money/feather.js": ^3.0.0-beta.1 + axios: ^0.27.2 + checksum: 10c0/9749876044357bc0f28ceeb15a1535b8201e6fa3eb09e95c0374ecba04b87d85388a4d5c491b2a89cc3b02ad24c8fa055e69240ae937c16f5bee196416263898 + languageName: node + linkType: hard + +"@terra-money/terra.proto@npm:3.0.5": + version: 3.0.5 + resolution: "@terra-money/terra.proto@npm:3.0.5" + dependencies: + "@improbable-eng/grpc-web": "npm:^0.14.1" + google-protobuf: "npm:^3.17.3" + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.2" + checksum: 10c0/f057cbf49dd8dc9effce875f2e60b7c0f17b375b160f08887a3007998584be834141f221dad642c68aac5324583f6e95d06fecc1fc8ee18374960bdd58808538 + languageName: node + linkType: hard + +"@terra-money/terra.proto@npm:^4.0.3": + version: 4.0.10 + resolution: "@terra-money/terra.proto@npm:4.0.10" + dependencies: + "@improbable-eng/grpc-web": "npm:^0.14.1" + browser-headers: "npm:^0.4.1" + google-protobuf: "npm:^3.17.3" + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.2" + checksum: 10c0/80e701fe8ff5420c896acda16682cc8ad3aa4a317bbfcae89c5576a2ad800f349b0cb1d9bba82c1770829e083bbfbbf82ba2d6124ea06c8b64a17d386126c71e + languageName: node + linkType: hard + +"@terra-money/wallet-types@npm:^3.11.2": + version: 3.11.2 + resolution: "@terra-money/wallet-types@npm:3.11.2" + peerDependencies: + "@terra-money/terra.js": ^3.1.6 + checksum: 10c0/3fe1d475bb02655b4d4817dfbddf52f6ecbb87c8731a0c2077f4a5c36c88c730e9d167e802294b04fd6f25f841f68ab12f159f69164375c00dac2a9b6e6f32f5 + languageName: node + linkType: hard + +"@types/debug@npm:^4.0.0": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "npm:*" + checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f + languageName: node + linkType: hard + +"@types/estree-jsx@npm:^1.0.0": + version: 1.0.5 + resolution: "@types/estree-jsx@npm:1.0.5" + dependencies: + "@types/estree": "npm:*" + checksum: 10c0/07b354331516428b27a3ab99ee397547d47eb223c34053b48f84872fafb841770834b90cc1a0068398e7c7ccb15ec51ab00ec64b31dc5e3dbefd624638a35c6d + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.0": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d + languageName: node + linkType: hard + +"@types/hast@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/hast@npm:3.0.4" + dependencies: + "@types/unist": "npm:*" + checksum: 10c0/3249781a511b38f1d330fd1e3344eed3c4e7ea8eff82e835d35da78e637480d36fad37a78be5a7aed8465d237ad0446abc1150859d0fde395354ea634decf9f7 + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + languageName: node + linkType: hard + +"@types/long@npm:^4.0.1": + version: 4.0.2 + resolution: "@types/long@npm:4.0.2" + checksum: 10c0/42ec66ade1f72ff9d143c5a519a65efc7c1c77be7b1ac5455c530ae9acd87baba065542f8847522af2e3ace2cc999f3ad464ef86e6b7352eece34daf88f8c924 + languageName: node + linkType: hard + +"@types/mdast@npm:^4.0.0": + version: 4.0.4 + resolution: "@types/mdast@npm:4.0.4" + dependencies: + "@types/unist": "npm:*" + checksum: 10c0/84f403dbe582ee508fd9c7643ac781ad8597fcbfc9ccb8d4715a2c92e4545e5772cbd0dbdf18eda65789386d81b009967fdef01b24faf6640f817287f54d9c82 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: 10c0/ac80bd90012116ceb2d188fde62d96830ca847823e8ca71255616bc73991aa7d9f057b8bfab79e8ee44ffefb031ddd1bcce63ea82f9e66f7c31ec02d2d823ccc + languageName: node + linkType: hard + +"@types/node-gzip@npm:^1": + version: 1.1.3 + resolution: "@types/node-gzip@npm:1.1.3" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/dfb240b02a5d8e335942f847b61cd02dda38425b6083b6d7ae1c6fa70624c19faee87e82b470f5880e73d4937bf1aa8e61a06ca52700bce2a1f50e552f137011 + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 22.0.0 + resolution: "@types/node@npm:22.0.0" + dependencies: + undici-types: "npm:~6.11.1" + checksum: 10c0/af26a8ec7266c857b0ced75dc3a93c6b65280d1fa40d1b4488c814d30831c5c752489c99ecb5698daec1376145b1a9ddd08350882dc2e07769917a5f22a460bc + languageName: node + linkType: hard + +"@types/node@npm:10.12.18": + version: 10.12.18 + resolution: "@types/node@npm:10.12.18" + checksum: 10c0/7c2f966f59bff476ea9bf6bbe2d4b03d583899cb4fd7eb4d4daf49bab3475a9c68601ed8e40f57f89a860f46ab4e6c0216ad428506abac17182e888675b265f8 + languageName: node + linkType: hard + +"@types/node@npm:18.11.9": + version: 18.11.9 + resolution: "@types/node@npm:18.11.9" + checksum: 10c0/aeaa925406f841c41679b32def9391a9892171e977105e025050e9f66e2830b4c50d0d974a1af0077ead3337a1f3bdf49ee7e7f402ebf2e034a3f97d9d240dba + languageName: node + linkType: hard + +"@types/node@npm:>=13.7.0": + version: 20.12.4 + resolution: "@types/node@npm:20.12.4" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/9b142fcd839a48c348d6b9acfc753dfa4b3fb1f3e23ed67e8952bee9b2dfdaffdddfbcf0e4701557b88631591a5f9968433910027532ef847759f8682e27ffe7 + languageName: node + linkType: hard + +"@types/prop-types@npm:*": + version: 15.7.12 + resolution: "@types/prop-types@npm:15.7.12" + checksum: 10c0/1babcc7db6a1177779f8fde0ccc78d64d459906e6ef69a4ed4dd6339c920c2e05b074ee5a92120fe4e9d9f1a01c952f843ebd550bee2332fc2ef81d1706878f8 + languageName: node + linkType: hard + +"@types/react-dom@npm:18.0.9": + version: 18.0.9 + resolution: "@types/react-dom@npm:18.0.9" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/1c85b0889f15631132816fba93bf3aaa7b11cd0ce6f4a825d3c863a46b1b8d0b7fcdf03d7fcdf761f4a2e38312e5f26fc9b9ba34b486ee9f160477b9103625af + languageName: node + linkType: hard + +"@types/react@npm:18.0.25": + version: 18.0.25 + resolution: "@types/react@npm:18.0.25" + dependencies: + "@types/prop-types": "npm:*" + "@types/scheduler": "npm:*" + csstype: "npm:^3.0.2" + checksum: 10c0/5d30dbf46124a63ee832864bf38ce42de2e8924dc53470f14742343503a2cf1851b6b4f8b892ef661e1a670561f4c9052d782e419d314912e54626f3296e49b6 + languageName: node + linkType: hard + +"@types/scheduler@npm:*": + version: 0.23.0 + resolution: "@types/scheduler@npm:0.23.0" + checksum: 10c0/5cf7f2ba3732b74877559eb20b19f95fcd0a20c17dcb20e75a7ca7c7369cd455aeb2d406b3ff5a38168a9750da3bad78dd20d96d11118468b78f4959b8e56090 + languageName: node + linkType: hard + +"@types/unist@npm:*, @types/unist@npm:^3.0.0": + version: 3.0.2 + resolution: "@types/unist@npm:3.0.2" + checksum: 10c0/39f220ce184a773c55c18a127062bfc4d0d30c987250cd59bab544d97be6cfec93717a49ef96e81f024b575718f798d4d329eb81c452fc57d6d051af8b043ebf + languageName: node + linkType: hard + +"@types/unist@npm:^2.0.0": + version: 2.0.10 + resolution: "@types/unist@npm:2.0.10" + checksum: 10c0/5f247dc2229944355209ad5c8e83cfe29419fa7f0a6d557421b1985a1500444719cc9efcc42c652b55aab63c931813c88033e0202c1ac684bcd4829d66e44731 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^5.42.0": + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.0.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + languageName: node + linkType: hard + +"@vanilla-extract/css@npm:^1.15.3": + version: 1.15.3 + resolution: "@vanilla-extract/css@npm:1.15.3" + dependencies: + "@emotion/hash": "npm:^0.9.0" + "@vanilla-extract/private": "npm:^1.0.5" + css-what: "npm:^6.1.0" + cssesc: "npm:^3.0.0" + csstype: "npm:^3.0.7" + dedent: "npm:^1.5.3" + deep-object-diff: "npm:^1.1.9" + deepmerge: "npm:^4.2.2" + media-query-parser: "npm:^2.0.2" + modern-ahocorasick: "npm:^1.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/57c53e961bc0a273fa792c65c1b6cc6ce45d8f0d3c8b239df6ece4fbf2c58d09764ed70773bf25582e3cc6789ccce2b920c33d177ef276f63c6604c85dbc5c01 + languageName: node + linkType: hard + +"@vanilla-extract/dynamic@npm:^2.1.1": + version: 2.1.1 + resolution: "@vanilla-extract/dynamic@npm:2.1.1" + dependencies: + "@vanilla-extract/private": "npm:^1.0.5" + checksum: 10c0/0c353b6326e73054a5ca1cfbb02e865cd8853e88976d7f53794e91ccf3fdfcab18211ad93750927b05c8d57e3816c1e56b55a8e24ad7f616b5e627339a3d36b6 + languageName: node + linkType: hard + +"@vanilla-extract/private@npm:^1.0.5": + version: 1.0.5 + resolution: "@vanilla-extract/private@npm:1.0.5" + checksum: 10c0/9a5053763fc1964b68c8384afcba7abcb7d776755763fcc96fbc70f1317618368b8127088871611b7beae480f20bd05cc486a90ed3a48332a2c02293357ba819 + languageName: node + linkType: hard + +"@vanilla-extract/recipes@npm:^0.5.3": + version: 0.5.3 + resolution: "@vanilla-extract/recipes@npm:0.5.3" + peerDependencies: + "@vanilla-extract/css": ^1.0.0 + checksum: 10c0/1a8a155c53031efeafd67e0e429bb766049a61ca1dda8dfc6144f09882ccf7058557d6a89c2454cd2726452fedd5110a55a4d89a5f1e2846d815eca095494aea + languageName: node + linkType: hard + +"@walletconnect/core@npm:2.12.1": + version: 2.12.1 + resolution: "@walletconnect/core@npm:2.12.1" + dependencies: + "@walletconnect/heartbeat": "npm:1.2.1" + "@walletconnect/jsonrpc-provider": "npm:1.0.13" + "@walletconnect/jsonrpc-types": "npm:1.0.3" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/jsonrpc-ws-connection": "npm:1.0.14" + "@walletconnect/keyvaluestorage": "npm:^1.1.1" + "@walletconnect/logger": "npm:^2.1.0" + "@walletconnect/relay-api": "npm:^1.0.9" + "@walletconnect/relay-auth": "npm:^1.0.4" + "@walletconnect/safe-json": "npm:^1.0.2" + "@walletconnect/time": "npm:^1.0.2" + "@walletconnect/types": "npm:2.12.1" + "@walletconnect/utils": "npm:2.12.1" + events: "npm:^3.3.0" + isomorphic-unfetch: "npm:3.1.0" + lodash.isequal: "npm:4.5.0" + uint8arrays: "npm:^3.1.0" + checksum: 10c0/1bc872d5659fc229436e6ee620126c7d2f7e30c711dd2781fcc254a201b3b2ff3fee94a596681ac4797d023db2233904d1a679a920b11a4607a77478251d188d + languageName: node + linkType: hard + +"@walletconnect/environment@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/environment@npm:1.0.1" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/08eacce6452950a17f4209c443bd4db6bf7bddfc860593bdbd49edda9d08821696dee79e5617a954fbe90ff32c1d1f1691ef0c77455ed3e4201b328856a5e2f7 + languageName: node + linkType: hard + +"@walletconnect/events@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/events@npm:1.0.1" + dependencies: + keyvaluestorage-interface: "npm:^1.0.0" + tslib: "npm:1.14.1" + checksum: 10c0/919a97e1dacf7096aefe07af810362cfc190533a576dcfa21387295d825a3c3d5f90bedee73235b1b343f5c696f242d7bffc5ea3359d3833541349ca23f50df8 + languageName: node + linkType: hard + +"@walletconnect/heartbeat@npm:1.2.1": + version: 1.2.1 + resolution: "@walletconnect/heartbeat@npm:1.2.1" + dependencies: + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/time": "npm:^1.0.2" + tslib: "npm:1.14.1" + checksum: 10c0/5ad46f26dcb7b9b3227f004cd74b18741d4cd32c21825a036eb03985c67a0cf859c285bc5635401966a99129e854d72de3458ff592370575ef7e52f5dd12ebbc + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-provider@npm:1.0.13": + version: 1.0.13 + resolution: "@walletconnect/jsonrpc-provider@npm:1.0.13" + dependencies: + "@walletconnect/jsonrpc-utils": "npm:^1.0.8" + "@walletconnect/safe-json": "npm:^1.0.2" + tslib: "npm:1.14.1" + checksum: 10c0/9b5b2f0ce516d2ddebe2cd1a2c8ea18a6b765b0d068162caf39745c18534e264a0cc6198adb869ba8684d0efa563be30956a3b9a7cc82b80b9e263f6211e30ab + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-types@npm:1.0.3, @walletconnect/jsonrpc-types@npm:^1.0.2, @walletconnect/jsonrpc-types@npm:^1.0.3": + version: 1.0.3 + resolution: "@walletconnect/jsonrpc-types@npm:1.0.3" + dependencies: + keyvaluestorage-interface: "npm:^1.0.0" + tslib: "npm:1.14.1" + checksum: 10c0/a0fc8a88c62795bf4bf83d4e98a4e2cdd659ef70c73642582089fdf0994c54fd8050aa6cca85cfdcca6b77994e71334895e7a19649c325a8c822b059c2003884 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-utils@npm:1.0.8, @walletconnect/jsonrpc-utils@npm:^1.0.6, @walletconnect/jsonrpc-utils@npm:^1.0.8": + version: 1.0.8 + resolution: "@walletconnect/jsonrpc-utils@npm:1.0.8" + dependencies: + "@walletconnect/environment": "npm:^1.0.1" + "@walletconnect/jsonrpc-types": "npm:^1.0.3" + tslib: "npm:1.14.1" + checksum: 10c0/e4a6bd801cf555bca775e03d961d1fe5ad0a22838e3496adda43ab4020a73d1b38de7096c06940e51f00fccccc734cd422fe4f1f7a8682302467b9c4d2a93d5d + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-ws-connection@npm:1.0.14": + version: 1.0.14 + resolution: "@walletconnect/jsonrpc-ws-connection@npm:1.0.14" + dependencies: + "@walletconnect/jsonrpc-utils": "npm:^1.0.6" + "@walletconnect/safe-json": "npm:^1.0.2" + events: "npm:^3.3.0" + ws: "npm:^7.5.1" + checksum: 10c0/a710ecc51f8d3ed819ba6d6e53151ef274473aa8746ffdeaffaa3d4c020405bc694b0d179649fc2510a556eb4daf02f4a9e3dacef69ff95f673939bd67be649e + languageName: node + linkType: hard + +"@walletconnect/keyvaluestorage@npm:^1.1.1": + version: 1.1.1 + resolution: "@walletconnect/keyvaluestorage@npm:1.1.1" + dependencies: + "@walletconnect/safe-json": "npm:^1.0.1" + idb-keyval: "npm:^6.2.1" + unstorage: "npm:^1.9.0" + peerDependencies: + "@react-native-async-storage/async-storage": 1.x + peerDependenciesMeta: + "@react-native-async-storage/async-storage": + optional: true + checksum: 10c0/de2ec39d09ce99370865f7d7235b93c42b3e4fd3406bdbc644329eff7faea2722618aa88ffc4ee7d20b1d6806a8331261b65568187494cbbcceeedbe79dc30e8 + languageName: node + linkType: hard + +"@walletconnect/logger@npm:^2.0.1": + version: 2.0.1 + resolution: "@walletconnect/logger@npm:2.0.1" + dependencies: + pino: "npm:7.11.0" + tslib: "npm:1.14.1" + checksum: 10c0/1778686f608f03bc8a67fb560a2694e8aef74b392811508e98cc158d1839a1bb0a0256eb2ed719c4ee17e65a11543ddc4f9059d3bdd5dddcca6359ba1bab18bd + languageName: node + linkType: hard + +"@walletconnect/logger@npm:^2.1.0": + version: 2.1.0 + resolution: "@walletconnect/logger@npm:2.1.0" + dependencies: + "@walletconnect/safe-json": "npm:^1.0.2" + pino: "npm:7.11.0" + checksum: 10c0/3d7b4eaf3b1e95e8cc12740ef7768a2722f70d23998a4dc45422da6817829626c6d79fa3683bd8eb52c5e1091bd6b63773d7c04b1f2d1932167f38e0123b1537 + languageName: node + linkType: hard + +"@walletconnect/relay-api@npm:^1.0.9": + version: 1.0.9 + resolution: "@walletconnect/relay-api@npm:1.0.9" + dependencies: + "@walletconnect/jsonrpc-types": "npm:^1.0.2" + tslib: "npm:1.14.1" + checksum: 10c0/e5994c63619b89cae45428108857389536f3c7e43a92f324a8ef305f351cf125dcfafeb9c480f23798c162ca2cad7b8f91828bae28a84cf869c3e7ee1dcca9dd + languageName: node + linkType: hard + +"@walletconnect/relay-auth@npm:^1.0.4": + version: 1.0.4 + resolution: "@walletconnect/relay-auth@npm:1.0.4" + dependencies: + "@stablelib/ed25519": "npm:^1.0.2" + "@stablelib/random": "npm:^1.0.1" + "@walletconnect/safe-json": "npm:^1.0.1" + "@walletconnect/time": "npm:^1.0.2" + tslib: "npm:1.14.1" + uint8arrays: "npm:^3.0.0" + checksum: 10c0/e90294ff718c5c1e49751a28916aaac45dd07d694f117052506309eb05b68cc2c72d9b302366e40d79ef952c22bd0bbea731d09633a6663b0ab8e18b4804a832 + languageName: node + linkType: hard + +"@walletconnect/safe-json@npm:^1.0.1, @walletconnect/safe-json@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/safe-json@npm:1.0.2" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/8689072018c1ff7ab58eca67bd6f06b53702738d8183d67bfe6ed220aeac804e41901b8ee0fb14299e83c70093fafb90a90992202d128d53b2832bb01b591752 + languageName: node + linkType: hard + +"@walletconnect/sign-client@npm:^2.9.0": + version: 2.12.1 + resolution: "@walletconnect/sign-client@npm:2.12.1" + dependencies: + "@walletconnect/core": "npm:2.12.1" + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/heartbeat": "npm:1.2.1" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/logger": "npm:^2.0.1" + "@walletconnect/time": "npm:^1.0.2" + "@walletconnect/types": "npm:2.12.1" + "@walletconnect/utils": "npm:2.12.1" + events: "npm:^3.3.0" + checksum: 10c0/ccf0ea03d953c0e7b06d037f9e4c2f957cc6a0134be31e55adb308f3ee88dd91c89e53c521317ea9b1274cf80a1ae9a28d2474258ad980714e07f254efe56e55 + languageName: node + linkType: hard + +"@walletconnect/time@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/time@npm:1.0.2" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/6317f93086e36daa3383cab4a8579c7d0bed665fb0f8e9016575200314e9ba5e61468f66142a7bb5b8489bb4c9250196576d90a60b6b00e0e856b5d0ab6ba474 + languageName: node + linkType: hard + +"@walletconnect/types@npm:2.11.0": + version: 2.11.0 + resolution: "@walletconnect/types@npm:2.11.0" + dependencies: + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/heartbeat": "npm:1.2.1" + "@walletconnect/jsonrpc-types": "npm:1.0.3" + "@walletconnect/keyvaluestorage": "npm:^1.1.1" + "@walletconnect/logger": "npm:^2.0.1" + events: "npm:^3.3.0" + checksum: 10c0/7fa2493d8a9c938821f5234b4d2a087f903359875925a7abea3a0640aa765886c01b4846bbe5e39923b48883f7fd92c3f4ff8e643c4c894c50e9f715b3a881d8 + languageName: node + linkType: hard + +"@walletconnect/types@npm:2.12.1": + version: 2.12.1 + resolution: "@walletconnect/types@npm:2.12.1" + dependencies: + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/heartbeat": "npm:1.2.1" + "@walletconnect/jsonrpc-types": "npm:1.0.3" + "@walletconnect/keyvaluestorage": "npm:^1.1.1" + "@walletconnect/logger": "npm:^2.0.1" + events: "npm:^3.3.0" + checksum: 10c0/c04d2f769b5a2c7e72e501a50b95ccfad9bc086643dbd036779bb66662885c312be9ed0ddc7b095e26ed666d47494c912e8b82624e6e348063b42a73ba174299 + languageName: node + linkType: hard + +"@walletconnect/utils@npm:2.12.1, @walletconnect/utils@npm:^2.9.0": + version: 2.12.1 + resolution: "@walletconnect/utils@npm:2.12.1" + dependencies: + "@stablelib/chacha20poly1305": "npm:1.0.1" + "@stablelib/hkdf": "npm:1.0.1" + "@stablelib/random": "npm:^1.0.2" + "@stablelib/sha256": "npm:1.0.1" + "@stablelib/x25519": "npm:^1.0.3" + "@walletconnect/relay-api": "npm:^1.0.9" + "@walletconnect/safe-json": "npm:^1.0.2" + "@walletconnect/time": "npm:^1.0.2" + "@walletconnect/types": "npm:2.12.1" + "@walletconnect/window-getters": "npm:^1.0.1" + "@walletconnect/window-metadata": "npm:^1.0.1" + detect-browser: "npm:5.3.0" + query-string: "npm:7.1.3" + uint8arrays: "npm:^3.1.0" + checksum: 10c0/0864afecb5bbfa736e6d390cb0e0b721cdd03a9616a6c0c93a8f381cb8f0354db658800880131e9bbcf6e5a22e819bf413e197484dce3218b677fad6da068b8e + languageName: node + linkType: hard + +"@walletconnect/window-getters@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-getters@npm:1.0.1" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/c3aedba77aa9274b8277c4189ec992a0a6000377e95656443b3872ca5b5fe77dd91170b1695027fc524dc20362ce89605d277569a0d9a5bedc841cdaf14c95df + languageName: node + linkType: hard + +"@walletconnect/window-metadata@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-metadata@npm:1.0.1" + dependencies: + "@walletconnect/window-getters": "npm:^1.0.1" + tslib: "npm:1.14.1" + checksum: 10c0/f190e9bed77282d8ba868a4895f4d813e135f9bbecb8dd4aed988ab1b06992f78128ac19d7d073cf41d8a6a74d0c055cd725908ce0a894649fd25443ad934cf4 + languageName: node + linkType: hard + +"@yarnpkg/lockfile@npm:^1.1.0": + version: 1.1.0 + resolution: "@yarnpkg/lockfile@npm:1.1.0" + checksum: 10c0/0bfa50a3d756623d1f3409bc23f225a1d069424dbc77c6fd2f14fb377390cd57ec703dc70286e081c564be9051ead9ba85d81d66a3e68eeb6eb506d4e0c0fbda + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"ace-builds@npm:1.35.0, ace-builds@npm:^1.32.8": + version: 1.35.0 + resolution: "ace-builds@npm:1.35.0" + checksum: 10c0/f5bcde60e26718634d87aba84fee4c110fea48ba76aa0fc2d73b8c945e9626dbe95be943a0f3fdb16a4c9594d1a7b0d28979b94f73ca9c7073a8269e20e42cfb + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn@npm:^8.11.3, acorn@npm:^8.9.0": + version: 8.11.3 + resolution: "acorn@npm:8.11.3" + bin: + acorn: bin/acorn + checksum: 10c0/3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 + languageName: node + linkType: hard + +"aes-js@npm:3.0.0": + version: 3.0.0 + resolution: "aes-js@npm:3.0.0" + checksum: 10c0/87dd5b2363534b867db7cef8bc85a90c355460783744877b2db7c8be09740aac5750714f9e00902822f692662bda74cdf40e03fbb5214ffec75c2666666288b8 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: "npm:^4.3.4" + checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ajv@npm:^6.10.0, ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"animejs@npm:^3.2.2": + version: 3.2.2 + resolution: "animejs@npm:3.2.2" + checksum: 10c0/f43dfcc0c743a2774e76fbfcb16a22350da7104f413d9d1b85c48128b0c078090642809deb631e21dfa0a40651111be39d9d7f694c9c1b70d8637ce8b6d63116 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"aria-query@npm:^5.3.0": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" + dependencies: + dequal: "npm:^2.0.3" + checksum: 10c0/2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7, array-includes@npm:^3.1.8": + version: 3.1.8 + resolution: "array-includes@npm:3.1.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + is-string: "npm:^1.0.7" + checksum: 10c0/5b1004d203e85873b96ddc493f090c9672fd6c80d7a60b798da8a14bff8a670ff95db5aafc9abc14a211943f05220dacf8ea17638ae0af1a6a47b8c0b48ce370 + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.3": + version: 1.2.5 + resolution: "array.prototype.findlastindex@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/962189487728b034f3134802b421b5f39e42ee2356d13b42d2ddb0e52057ffdcc170b9524867f4f0611a6f638f4c19b31e14606e8bcbda67799e26685b195aa3 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 + languageName: node + linkType: hard + +"array.prototype.toreversed@npm:^1.1.2": + version: 1.1.2 + resolution: "array.prototype.toreversed@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/2b7627ea85eae1e80ecce665a500cc0f3355ac83ee4a1a727562c7c2a1d5f1c0b4dd7b65c468ec6867207e452ba01256910a2c0b41486bfdd11acf875a7a3435 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.3": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/eb3c4c4fc0381b0bf6dba2ea4d48d367c2827a0d4236a5718d97caaccc6b78f11f4cadf090736e86301d295a6aa4967ed45568f92ced51be8cbbacd9ca410943 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 + languageName: node + linkType: hard + +"asn1.js@npm:^4.10.1": + version: 4.10.1 + resolution: "asn1.js@npm:4.10.1" + dependencies: + bn.js: "npm:^4.0.0" + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/afa7f3ab9e31566c80175a75b182e5dba50589dcc738aa485be42bdd787e2a07246a4b034d481861123cbe646a7656f318f4f1cad2e9e5e808a210d5d6feaa88 + languageName: node + linkType: hard + +"assert@npm:^2.0.0": + version: 2.1.0 + resolution: "assert@npm:2.1.0" + dependencies: + call-bind: "npm:^1.0.2" + is-nan: "npm:^1.3.2" + object-is: "npm:^1.1.5" + object.assign: "npm:^4.1.4" + util: "npm:^0.12.5" + checksum: 10c0/7271a5da883c256a1fa690677bf1dd9d6aa882139f2bed1cd15da4f9e7459683e1da8e32a203d6cc6767e5e0f730c77a9532a87b896b4b0af0dd535f668775f0 + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: 10c0/e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a + languageName: node + linkType: hard + +"attr-accept@npm:^2.2.2": + version: 2.2.2 + resolution: "attr-accept@npm:2.2.2" + checksum: 10c0/f77c073ac9616a783f2df814a56f65f1c870193e8da6097139e30b3be84ecc19fb835b93e81315d1da4f19e80721f14e8c8075014205e00abd37b856fe030b80 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"axe-core@npm:=4.7.0": + version: 4.7.0 + resolution: "axe-core@npm:4.7.0" + checksum: 10c0/89ac5712b5932ac7d23398b4cb5ba081c394a086e343acc68ba49c83472706e18e0799804e8388c779dcdacc465377deb29f2714241d3fbb389cf3a6b275c9ba + languageName: node + linkType: hard + +"axios@npm:^0.21.2": + version: 0.21.4 + resolution: "axios@npm:0.21.4" + dependencies: + follow-redirects: "npm:^1.14.0" + checksum: 10c0/fbcff55ec68f71f02d3773d467db2fcecdf04e749826c82c2427a232f9eba63242150a05f15af9ef15818352b814257541155de0281f8fb2b7e8a5b79f7f2142 + languageName: node + linkType: hard + +"axios@npm:^0.27.2": + version: 0.27.2 + resolution: "axios@npm:0.27.2" + dependencies: + follow-redirects: "npm:^1.14.9" + form-data: "npm:^4.0.0" + checksum: 10c0/76d673d2a90629944b44d6f345f01e58e9174690f635115d5ffd4aca495d99bcd8f95c590d5ccb473513f5ebc1d1a6e8934580d0c57cdd0498c3a101313ef771 + languageName: node + linkType: hard + +"axios@npm:^1.6.0": + version: 1.6.8 + resolution: "axios@npm:1.6.8" + dependencies: + follow-redirects: "npm:^1.15.6" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 10c0/0f22da6f490335479a89878bc7d5a1419484fbb437b564a80c34888fc36759ae4f56ea28d55a191695e5ed327f0bad56e7ff60fb6770c14d1be6501505d47ab9 + languageName: node + linkType: hard + +"axobject-query@npm:^3.2.1": + version: 3.2.1 + resolution: "axobject-query@npm:3.2.1" + dependencies: + dequal: "npm:^2.0.3" + checksum: 10c0/f7debc2012e456139b57d888c223f6d3cb4b61eb104164a85e3d346273dd6ef0bc9a04b6660ca9407704a14a8e05fa6b6eb9d55f44f348c7210de7ffb350c3a7 + languageName: node + linkType: hard + +"bail@npm:^2.0.0": + version: 2.0.2 + resolution: "bail@npm:2.0.2" + checksum: 10c0/25cbea309ef6a1f56214187004e8f34014eb015713ea01fa5b9b7e9e776ca88d0fdffd64143ac42dc91966c915a4b7b683411b56e14929fad16153fc026ffb8b + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"base-x@npm:^3.0.2": + version: 3.0.9 + resolution: "base-x@npm:3.0.9" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/e6bbeae30b24f748b546005affb710c5fbc8b11a83f6cd0ca999bd1ab7ad3a22e42888addc40cd145adc4edfe62fcfab4ebc91da22e4259aae441f95a77aee1a + languageName: node + linkType: hard + +"base64-js@npm:^1.3.0, base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + +"bech32@npm:1.1.4, bech32@npm:^1.1.4": + version: 1.1.4 + resolution: "bech32@npm:1.1.4" + checksum: 10c0/5f62ca47b8df99ace9c0e0d8deb36a919d91bf40066700aaa9920a45f86bb10eb56d537d559416fd8703aa0fb60dddb642e58f049701e7291df678b2033e5ee5 + languageName: node + linkType: hard + +"bech32@npm:^2.0.0": + version: 2.0.0 + resolution: "bech32@npm:2.0.0" + checksum: 10c0/45e7cc62758c9b26c05161b4483f40ea534437cf68ef785abadc5b62a2611319b878fef4f86ddc14854f183b645917a19addebc9573ab890e19194bc8f521942 + languageName: node + linkType: hard + +"bfs-path@npm:^1.0.2": + version: 1.0.2 + resolution: "bfs-path@npm:1.0.2" + checksum: 10c0/776cd5cf823d0767bab64d9c029bcf3336a5ee3a3e15f8ef9186772885fa2a3dd2bf4e3a5a5e7a96d02805a85d983a51d0aff76712a5b5c0b331db37578d0b79 + languageName: node + linkType: hard + +"big-integer@npm:^1.6.48": + version: 1.6.52 + resolution: "big-integer@npm:1.6.52" + checksum: 10c0/9604224b4c2ab3c43c075d92da15863077a9f59e5d4205f4e7e76acd0cd47e8d469ec5e5dba8d9b32aa233951893b29329ca56ac80c20ce094b4a647a66abae0 + languageName: node + linkType: hard + +"big.js@npm:^5.2.2": + version: 5.2.2 + resolution: "big.js@npm:5.2.2" + checksum: 10c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f + languageName: node + linkType: hard + +"bignumber.js@npm:9.1.2, bignumber.js@npm:^9.1.2": + version: 9.1.2 + resolution: "bignumber.js@npm:9.1.2" + checksum: 10c0/e17786545433f3110b868725c449fa9625366a6e675cd70eb39b60938d6adbd0158cb4b3ad4f306ce817165d37e63f4aa3098ba4110db1d9a3b9f66abfbaf10d + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"bindings@npm:^1.3.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + languageName: node + linkType: hard + +"bip32-path@npm:^0.4.2": + version: 0.4.2 + resolution: "bip32-path@npm:0.4.2" + checksum: 10c0/7d4123a5393fc5b70a20d0997c2b5a77feb789b49bdc3485ff7db02f916acf0f8c5eccf659f3d5dff5e0b34f22f5681babba86eb9ad7fa1287daf31d69982d75 + languageName: node + linkType: hard + +"bip32@npm:^2.0.6": + version: 2.0.6 + resolution: "bip32@npm:2.0.6" + dependencies: + "@types/node": "npm:10.12.18" + bs58check: "npm:^2.1.1" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + tiny-secp256k1: "npm:^1.1.3" + typeforce: "npm:^1.11.5" + wif: "npm:^2.0.6" + checksum: 10c0/65005eec40786767842665d68ba37e9be789570516256b7419dad9cc1160a7bb0a5db51cc441ff57d10461506ae150c2dfcfb22e83076a3d566fbbd7420006c6 + languageName: node + linkType: hard + +"bip39@npm:^3.0.3": + version: 3.1.0 + resolution: "bip39@npm:3.1.0" + dependencies: + "@noble/hashes": "npm:^1.2.0" + checksum: 10c0/68f9673a0d6a851e9635f3af8a85f2a1ecef9066c76d77e6f0d58d274b5bf22a67f429da3997e07c0d2cf153a4d7321f9273e656cac0526f667575ddee28ef71 + languageName: node + linkType: hard + +"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.8, bn.js@npm:^4.11.9": + version: 4.12.0 + resolution: "bn.js@npm:4.12.0" + checksum: 10c0/9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 + languageName: node + linkType: hard + +"bn.js@npm:^5.0.0, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1": + version: 5.2.1 + resolution: "bn.js@npm:5.2.1" + checksum: 10c0/bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa + languageName: node + linkType: hard + +"bowser@npm:2.11.0": + version: 2.11.0 + resolution: "bowser@npm:2.11.0" + checksum: 10c0/04efeecc7927a9ec33c667fa0965dea19f4ac60b3fea60793c2e6cf06c1dcd2f7ae1dbc656f450c5f50783b1c75cf9dc173ba6f3b7db2feee01f8c4b793e1bd3 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^3.0.2, braces@npm:~3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: "npm:^7.0.1" + checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 + languageName: node + linkType: hard + +"braces@npm:^3.0.3": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"brorand@npm:^1.0.1, brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 + languageName: node + linkType: hard + +"browser-headers@npm:^0.4.1": + version: 0.4.1 + resolution: "browser-headers@npm:0.4.1" + checksum: 10c0/3b08864bb955b295ab3dd6ab775c7798096c2e85486571803b4070ec484de83ccceebe531a8b00d5daf4463fada5e7ca18cd1a71cc1ee0dfdbab705332318cef + languageName: node + linkType: hard + +"browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": + version: 1.2.0 + resolution: "browserify-aes@npm:1.2.0" + dependencies: + buffer-xor: "npm:^1.0.3" + cipher-base: "npm:^1.0.0" + create-hash: "npm:^1.1.0" + evp_bytestokey: "npm:^1.0.3" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 + languageName: node + linkType: hard + +"browserify-cipher@npm:^1.0.0": + version: 1.0.1 + resolution: "browserify-cipher@npm:1.0.1" + dependencies: + browserify-aes: "npm:^1.0.4" + browserify-des: "npm:^1.0.0" + evp_bytestokey: "npm:^1.0.0" + checksum: 10c0/aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d + languageName: node + linkType: hard + +"browserify-des@npm:^1.0.0": + version: 1.0.2 + resolution: "browserify-des@npm:1.0.2" + dependencies: + cipher-base: "npm:^1.0.1" + des.js: "npm:^1.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d + languageName: node + linkType: hard + +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": + version: 4.1.0 + resolution: "browserify-rsa@npm:4.1.0" + dependencies: + bn.js: "npm:^5.0.0" + randombytes: "npm:^2.0.1" + checksum: 10c0/fb2b5a8279d8a567a28d8ee03fb62e448428a906bab5c3dc9e9c3253ace551b5ea271db15e566ac78f1b1d71b243559031446604168b9235c351a32cae99d02a + languageName: node + linkType: hard + +"browserify-sign@npm:^4.0.0": + version: 4.2.3 + resolution: "browserify-sign@npm:4.2.3" + dependencies: + bn.js: "npm:^5.2.1" + browserify-rsa: "npm:^4.1.0" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + elliptic: "npm:^6.5.5" + hash-base: "npm:~3.0" + inherits: "npm:^2.0.4" + parse-asn1: "npm:^5.1.7" + readable-stream: "npm:^2.3.8" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/30c0eba3f5970a20866a4d3fbba2c5bd1928cd24f47faf995f913f1499214c6f3be14bb4d6ec1ab5c6cafb1eca9cb76ba1c2e1c04ed018370634d4e659c77216 + languageName: node + linkType: hard + +"bs58@npm:^4.0.0": + version: 4.0.1 + resolution: "bs58@npm:4.0.1" + dependencies: + base-x: "npm:^3.0.2" + checksum: 10c0/613a1b1441e754279a0e3f44d1faeb8c8e838feef81e550efe174ff021dd2e08a4c9ae5805b52dfdde79f97b5c0918c78dd24a0eb726c4a94365f0984a0ffc65 + languageName: node + linkType: hard + +"bs58check@npm:<3.0.0, bs58check@npm:^2.1.1, bs58check@npm:^2.1.2": + version: 2.1.2 + resolution: "bs58check@npm:2.1.2" + dependencies: + bs58: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/5d33f319f0d7abbe1db786f13f4256c62a076bc8d184965444cb62ca4206b2c92bee58c93bce57150ffbbbe00c48838ac02e6f384e0da8215cac219c0556baa9 + languageName: node + linkType: hard + +"buffer-xor@npm:^1.0.3": + version: 1.0.3 + resolution: "buffer-xor@npm:1.0.3" + checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c + languageName: node + linkType: hard + +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + +"bufferutil@npm:^4.0.3": + version: 4.0.8 + resolution: "bufferutil@npm:4.0.8" + dependencies: + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10c0/36cdc5b53a38d9f61f89fdbe62029a2ebcd020599862253fefebe31566155726df9ff961f41b8c97b02b4c12b391ef97faf94e2383392654cf8f0ed68f76e47c + languageName: node + linkType: hard + +"busboy@npm:1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: "npm:^1.1.0" + checksum: 10c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.3 + resolution: "cacache@npm:18.0.3" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/dfda92840bb371fb66b88c087c61a74544363b37a265023223a99965b16a16bbb87661fe4948718d79df6e0cc04e85e62784fbcf1832b2a5e54ff4c46fbb45b7 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001406": + version: 1.0.30001606 + resolution: "caniuse-lite@npm:1.0.30001606" + checksum: 10c0/fc9816f7d073e4f655c00acf9d6625f923e722430545b0aabefb9dc01347f3093608eb18841cf981acbd464fcac918a708908549738a8cd9517a14ac005bf8fc + languageName: node + linkType: hard + +"ccount@npm:^2.0.0": + version: 2.0.1 + resolution: "ccount@npm:2.0.1" + checksum: 10c0/3939b1664390174484322bc3f45b798462e6c07ee6384cb3d645e0aa2f318502d174845198c1561930e1d431087f74cf1fe291ae9a4722821a9f4ba67e574350 + languageName: node + linkType: hard + +"chain-registry@npm:1.69.33": + version: 1.69.33 + resolution: "chain-registry@npm:1.69.33" + dependencies: + "@chain-registry/types": "npm:^0.50.14" + checksum: 10c0/96ed7b5a12c627aad124c499ac06f7009d248ba79c77b01f9901b43fc8312a72794b2dd0450459d6c875988d0933ac8755c3ff0c71153222b09bc5d9055646a5 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"character-entities-html4@npm:^2.0.0": + version: 2.1.0 + resolution: "character-entities-html4@npm:2.1.0" + checksum: 10c0/fe61b553f083400c20c0b0fd65095df30a0b445d960f3bbf271536ae6c3ba676f39cb7af0b4bf2755812f08ab9b88f2feed68f9aebb73bb153f7a115fe5c6e40 + languageName: node + linkType: hard + +"character-entities-legacy@npm:^3.0.0": + version: 3.0.0 + resolution: "character-entities-legacy@npm:3.0.0" + checksum: 10c0/ec4b430af873661aa754a896a2b55af089b4e938d3d010fad5219299a6b6d32ab175142699ee250640678cd64bdecd6db3c9af0b8759ab7b155d970d84c4c7d1 + languageName: node + linkType: hard + +"character-entities@npm:^2.0.0": + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: 10c0/b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308 + languageName: node + linkType: hard + +"character-reference-invalid@npm:^2.0.0": + version: 2.0.1 + resolution: "character-reference-invalid@npm:2.0.1" + checksum: 10c0/2ae0dec770cd8659d7e8b0ce24392d83b4c2f0eb4a3395c955dce5528edd4cc030a794cfa06600fcdd700b3f2de2f9b8e40e309c0011c4180e3be64a0b42e6a1 + languageName: node + linkType: hard + +"chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": + version: 1.0.4 + resolution: "cipher-base@npm:1.0.4" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/d8d005f8b64d8a77b3d3ce531301ae7b45902c9cab4ec8b66bdbd2bf2a1d9fceb9a2133c293eb3c060b2d964da0f14c47fb740366081338aa3795dd1faa8984b + languageName: node + linkType: hard + +"citty@npm:^0.1.5, citty@npm:^0.1.6": + version: 0.1.6 + resolution: "citty@npm:0.1.6" + dependencies: + consola: "npm:^3.2.3" + checksum: 10c0/d26ad82a9a4a8858c7e149d90b878a3eceecd4cfd3e2ed3cd5f9a06212e451fb4f8cbe0fa39a3acb1b3e8f18e22db8ee5def5829384bad50e823d4b301609b48 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"client-only@npm:0.0.1, client-only@npm:^0.0.1": + version: 0.0.1 + resolution: "client-only@npm:0.0.1" + checksum: 10c0/9d6cfd0c19e1c96a434605added99dff48482152af791ec4172fb912a71cff9027ff174efd8cdb2160cc7f377543e0537ffc462d4f279bc4701de3f2a3c4b358 + languageName: node + linkType: hard + +"clipboardy@npm:^4.0.0": + version: 4.0.0 + resolution: "clipboardy@npm:4.0.0" + dependencies: + execa: "npm:^8.0.1" + is-wsl: "npm:^3.1.0" + is64bit: "npm:^2.0.0" + checksum: 10c0/02bb5f3d0a772bd84ec26a3566c72c2319a9f3b4cb8338370c3bffcf0073c80b834abe1a6945bea4f2cbea28e1627a975aaac577e3f61a868d924ce79138b041 + languageName: node + linkType: hard + +"clsx@npm:^2.0.0": + version: 2.1.0 + resolution: "clsx@npm:2.1.0" + checksum: 10c0/c09c00ad14f638366ca814097e6cab533dfa1972a358da5b557be487168acbb25b4c1395e89ffa842a8a61ba87a462d2b4885bc9d4f8410b598f3cb339599cdb + languageName: node + linkType: hard + +"clsx@npm:^2.1.1": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"comma-separated-tokens@npm:^2.0.0": + version: 2.0.3 + resolution: "comma-separated-tokens@npm:2.0.3" + checksum: 10c0/91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67 + languageName: node + linkType: hard + +"commander-plus@npm:^0.0.6": + version: 0.0.6 + resolution: "commander-plus@npm:0.0.6" + dependencies: + keypress: "npm:0.1.x" + checksum: 10c0/c20cb3e27c220f101e354c9c916dacd80de4363cb5a1b1b94dd6b81a675e2cabc92d182a3a041a6bea418300e2955077607da1a07dabf383813007963c01533b + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"consola@npm:^3.2.3": + version: 3.2.3 + resolution: "consola@npm:3.2.3" + checksum: 10c0/c606220524ec88a05bb1baf557e9e0e04a0c08a9c35d7a08652d99de195c4ddcb6572040a7df57a18ff38bbc13ce9880ad032d56630cef27bef72768ef0ac078 + languageName: node + linkType: hard + +"cookie-es@npm:^1.0.0": + version: 1.1.0 + resolution: "cookie-es@npm:1.1.0" + checksum: 10c0/27f1057b05eb42dca539a80cf45b8f9d5bacf35482690d756025447810dcd669e0cd13952a063a43e47a4e6fd7400745defedc97479a4254019f0bdb5c200341 + languageName: node + linkType: hard + +"copy-anything@npm:^3.0.2": + version: 3.0.5 + resolution: "copy-anything@npm:3.0.5" + dependencies: + is-what: "npm:^4.1.8" + checksum: 10c0/01eadd500c7e1db71d32d95a3bfaaedcb839ef891c741f6305ab0461398056133de08f2d1bf4c392b364e7bdb7ce498513896e137a7a183ac2516b065c28a4fe + languageName: node + linkType: hard + +"copy-to-clipboard@npm:^3.3.3": + version: 3.3.3 + resolution: "copy-to-clipboard@npm:3.3.3" + dependencies: + toggle-selection: "npm:^1.0.6" + checksum: 10c0/3ebf5e8ee00601f8c440b83ec08d838e8eabb068c1fae94a9cda6b42f288f7e1b552f3463635f419af44bf7675afc8d0390d30876cf5c2d5d35f86d9c56a3e5f + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"cosmjs-types@npm:>=0.9.0, cosmjs-types@npm:^0.9.0": + version: 0.9.0 + resolution: "cosmjs-types@npm:0.9.0" + checksum: 10c0/bc20f4293fb34629d7c5f96bafe533987f753df957ff68eb078d0128ae5a418320cb945024441769a07bb9bc5dde9d22b972fd40d485933e5706ea191c43727b + languageName: node + linkType: hard + +"cosmjs-types@npm:^0.5.2": + version: 0.5.2 + resolution: "cosmjs-types@npm:0.5.2" + dependencies: + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.2" + checksum: 10c0/88bc5fd23339abeaf08a7d63cb34eb96e04a36776c7dba585ae03ceb364b436526dadafc709ba0494cb7d53d9a8b9cd4233c4d6b45cce323042366d4f8781812 + languageName: node + linkType: hard + +"cosmjs-types@npm:^0.8.0": + version: 0.8.0 + resolution: "cosmjs-types@npm:0.8.0" + dependencies: + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.2" + checksum: 10c0/910a84d04d17c3a32120bda52063a582325b900e9bb2f5ddffee621c1d053bc562bedc0d39d20e12736445b66d897bdae085247f51c6ffd1ca0154f99b938214 + languageName: node + linkType: hard + +"cosmos-kit@npm:2.18.4": + version: 2.18.4 + resolution: "cosmos-kit@npm:2.18.4" + dependencies: + "@cosmos-kit/cdcwallet": "npm:^2.13.2" + "@cosmos-kit/coin98": "npm:^2.11.2" + "@cosmos-kit/compass": "npm:^2.11.2" + "@cosmos-kit/cosmostation": "npm:^2.11.2" + "@cosmos-kit/exodus": "npm:^2.10.2" + "@cosmos-kit/fin": "npm:^2.11.2" + "@cosmos-kit/frontier": "npm:^2.10.2" + "@cosmos-kit/galaxy-station": "npm:^2.10.2" + "@cosmos-kit/keplr": "npm:^2.12.2" + "@cosmos-kit/leap": "npm:^2.12.2" + "@cosmos-kit/ledger": "npm:^2.11.2" + "@cosmos-kit/okxwallet-extension": "npm:^2.11.2" + "@cosmos-kit/omni": "npm:^2.10.2" + "@cosmos-kit/owallet": "npm:^2.11.2" + "@cosmos-kit/shell": "npm:^2.11.2" + "@cosmos-kit/station": "npm:^2.10.2" + "@cosmos-kit/tailwind": "npm:^1.5.2" + "@cosmos-kit/trust": "npm:^2.11.2" + "@cosmos-kit/vectis": "npm:^2.11.2" + "@cosmos-kit/xdefi": "npm:^2.10.2" + checksum: 10c0/76ccf246c852b58e99a64b1eed4c3409664159f4b9348362369775c74c6037437c945e2a44759a59bd79320d0d45981aa34cd7d4a3c4d3e67d7865d7777f7f61 + languageName: node + linkType: hard + +"create-ecdh@npm:^4.0.0": + version: 4.0.4 + resolution: "create-ecdh@npm:4.0.4" + dependencies: + bn.js: "npm:^4.1.0" + elliptic: "npm:^6.5.3" + checksum: 10c0/77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": + version: 1.2.0 + resolution: "create-hash@npm:1.2.0" + dependencies: + cipher-base: "npm:^1.0.1" + inherits: "npm:^2.0.1" + md5.js: "npm:^1.3.4" + ripemd160: "npm:^2.0.1" + sha.js: "npm:^2.4.0" + checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 + languageName: node + linkType: hard + +"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + dependencies: + cipher-base: "npm:^1.0.3" + create-hash: "npm:^1.1.0" + inherits: "npm:^2.0.1" + ripemd160: "npm:^2.0.0" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 + languageName: node + linkType: hard + +"cross-fetch@npm:^3.1.5": + version: 3.1.8 + resolution: "cross-fetch@npm:3.1.8" + dependencies: + node-fetch: "npm:^2.6.12" + checksum: 10c0/4c5e022ffe6abdf380faa6e2373c0c4ed7ef75e105c95c972b6f627c3f083170b6886f19fb488a7fa93971f4f69dcc890f122b0d97f0bf5f41ca1d9a8f58c8af + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"crossws@npm:^0.2.0, crossws@npm:^0.2.2": + version: 0.2.4 + resolution: "crossws@npm:0.2.4" + peerDependencies: + uWebSockets.js: "*" + peerDependenciesMeta: + uWebSockets.js: + optional: true + checksum: 10c0/b950c64d36f3f11fdb8e0faf3107598660d89d77eb860e68b535fe6acba9f0f2f0507cc7250bd219a3ef2fe08718db91b591e6912b7324fcfc8fd1b8d9f78c96 + languageName: node + linkType: hard + +"crypto-browserify@npm:^3.12.0": + version: 3.12.0 + resolution: "crypto-browserify@npm:3.12.0" + dependencies: + browserify-cipher: "npm:^1.0.0" + browserify-sign: "npm:^4.0.0" + create-ecdh: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + create-hmac: "npm:^1.1.0" + diffie-hellman: "npm:^5.0.0" + inherits: "npm:^2.0.1" + pbkdf2: "npm:^3.0.3" + public-encrypt: "npm:^4.0.0" + randombytes: "npm:^2.0.0" + randomfill: "npm:^1.0.3" + checksum: 10c0/0c20198886576050a6aa5ba6ae42f2b82778bfba1753d80c5e7a090836890dc372bdc780986b2568b4fb8ed2a91c958e61db1f0b6b1cc96af4bd03ffc298ba92 + languageName: node + linkType: hard + +"crypto-js@npm:^4.0.0": + version: 4.2.0 + resolution: "crypto-js@npm:4.2.0" + checksum: 10c0/8fbdf9d56f47aea0794ab87b0eb9833baf80b01a7c5c1b0edc7faf25f662fb69ab18dc2199e2afcac54670ff0cd9607a9045a3f7a80336cccd18d77a55b9fdf0 + languageName: node + linkType: hard + +"css-what@npm:^6.1.0": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2, csstype@npm:^3.0.7": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-buffer@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583 + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "data-view-byte-offset@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f + languageName: node + linkType: hard + +"dayjs@npm:1.11.11": + version: 1.11.11 + resolution: "dayjs@npm:1.11.11" + checksum: 10c0/0131d10516b9945f05a57e13f4af49a6814de5573a494824e103131a3bbe4cc470b1aefe8e17e51f9a478a22cd116084be1ee5725cedb66ec4c3f9091202dc4b + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": + version: 4.3.5 + resolution: "debug@npm:4.3.5" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/082c375a2bdc4f4469c99f325ff458adad62a3fc2c482d59923c260cb08152f34e2659f72b3767db8bb2f21ca81a60a42d1019605a412132d7b9f59363a005cc + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + +"decimal.js@npm:^10.2.1": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee + languageName: node + linkType: hard + +"decode-named-character-reference@npm:^1.0.0": + version: 1.0.2 + resolution: "decode-named-character-reference@npm:1.0.2" + dependencies: + character-entities: "npm:^2.0.0" + checksum: 10c0/66a9fc5d9b5385a2b3675c69ba0d8e893393d64057f7dbbb585265bb4fc05ec513d76943b8e5aac7d8016d20eea4499322cbf4cd6d54b466976b78f3a7587a4c + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.2": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 + languageName: node + linkType: hard + +"dedent@npm:^1.5.3": + version: 1.5.3 + resolution: "dedent@npm:1.5.3" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/d94bde6e6f780be4da4fd760288fcf755ec368872f4ac5218197200d86430aeb8d90a003a840bff1c20221188e3f23adced0119cb811c6873c70d0ac66d12832 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deep-object-diff@npm:^1.1.9": + version: 1.1.9 + resolution: "deep-object-diff@npm:1.1.9" + checksum: 10c0/12cfd1b000d16c9192fc649923c972f8aac2ddca4f71a292f8f2c1e2d5cf3c9c16c85e73ab3e7d8a89a5ec6918d6460677d0b05bd160f7bd50bb4816d496dc24 + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"defu@npm:^6.1.3, defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 10c0/2d6cc366262dc0cb8096e429368e44052fdf43ed48e53ad84cc7c9407f890301aa5fcb80d0995abaaf842b3949f154d060be4160f7a46cb2bc2f7726c81526f5 + languageName: node + linkType: hard + +"delay@npm:^4.4.0": + version: 4.4.1 + resolution: "delay@npm:4.4.1" + checksum: 10c0/9b3aa8c4cc88ee5e18a92c2e53f3912ed2930d4279c7d16d913813de6c2214eaf8bc5704b7357c72bf0f2f28f4507f9ab37599c3f84dc7d99ac178ae91dea3f9 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"dequal@npm:^2.0.0, dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + languageName: node + linkType: hard + +"des.js@npm:^1.0.0": + version: 1.1.0 + resolution: "des.js@npm:1.1.0" + dependencies: + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 + languageName: node + linkType: hard + +"destr@npm:^2.0.3": + version: 2.0.3 + resolution: "destr@npm:2.0.3" + checksum: 10c0/10e7eff5149e2839a4dd29a1e9617c3c675a3b53608d78d74fc6f4abc31daa977e6de08e0eea78965527a0d5a35467ae2f9624e0a4646d54aa1162caa094473e + languageName: node + linkType: hard + +"detect-browser@npm:5.3.0, detect-browser@npm:^5.2.0": + version: 5.3.0 + resolution: "detect-browser@npm:5.3.0" + checksum: 10c0/88d49b70ce3836e7971345b2ebdd486ad0d457d1e4f066540d0c12f9210c8f731ccbed955fcc9af2f048f5d4629702a8e46bedf5bcad42ad49a3a0927bfd5a76 + languageName: node + linkType: hard + +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d + languageName: node + linkType: hard + +"devlop@npm:^1.0.0, devlop@npm:^1.1.0": + version: 1.1.0 + resolution: "devlop@npm:1.1.0" + dependencies: + dequal: "npm:^2.0.0" + checksum: 10c0/e0928ab8f94c59417a2b8389c45c55ce0a02d9ac7fd74ef62d01ba48060129e1d594501b77de01f3eeafc7cb00773819b0df74d96251cf20b31c5b3071f45c0e + languageName: node + linkType: hard + +"diff-match-patch@npm:^1.0.5": + version: 1.0.5 + resolution: "diff-match-patch@npm:1.0.5" + checksum: 10c0/142b6fad627b9ef309d11bd935e82b84c814165a02500f046e2773f4ea894d10ed3017ac20454900d79d4a0322079f5b713cf0986aaf15fce0ec4a2479980c86 + languageName: node + linkType: hard + +"diffie-hellman@npm:^5.0.0": + version: 5.0.3 + resolution: "diffie-hellman@npm:5.0.3" + dependencies: + bn.js: "npm:^4.1.0" + miller-rabin: "npm:^4.0.0" + randombytes: "npm:^2.0.0" + checksum: 10c0/ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"duplexify@npm:^4.1.2": + version: 4.1.3 + resolution: "duplexify@npm:4.1.3" + dependencies: + end-of-stream: "npm:^1.4.1" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + stream-shift: "npm:^1.0.2" + checksum: 10c0/8a7621ae95c89f3937f982fe36d72ea997836a708471a75bb2a0eecde3330311b1e128a6dad510e0fd64ace0c56bff3484ed2e82af0e465600c82117eadfbda5 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"elliptic@npm:6.5.4": + version: 6.5.4 + resolution: "elliptic@npm:6.5.4" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/5f361270292c3b27cf0843e84526d11dec31652f03c2763c6c2b8178548175ff5eba95341dd62baff92b2265d1af076526915d8af6cc9cb7559c44a62f8ca6e2 + languageName: node + linkType: hard + +"elliptic@npm:^6.4.0, elliptic@npm:^6.5.3, elliptic@npm:^6.5.4, elliptic@npm:^6.5.5": + version: 6.5.5 + resolution: "elliptic@npm:6.5.5" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/3e591e93783a1b66f234ebf5bd3a8a9a8e063a75073a35a671e03e3b25253b6e33ac121f7efe9b8808890fffb17b40596cc19d01e6e8d1fa13b9a56ff65597c8 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"emojis-list@npm:^3.0.0": + version: 3.0.0 + resolution: "emojis-list@npm:3.0.0" + checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1, end-of-stream@npm:^1.4.4": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: "npm:^1.4.0" + checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.12.0": + version: 5.17.0 + resolution: "enhanced-resolve@npm:5.17.0" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/90065e58e4fd08e77ba47f827eaa17d60c335e01e4859f6e644bb3b8d0e32b203d33894aee92adfa5121fa262f912b48bdf0d0475e98b4a0a1132eea1169ad37 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + data-view-buffer: "npm:^1.0.1" + data-view-byte-length: "npm:^1.0.1" + data-view-byte-offset: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-set-tostringtag: "npm:^2.0.3" + es-to-primitive: "npm:^1.2.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.1" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.3" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.13.1" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.2" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.9" + string.prototype.trimend: "npm:^1.0.8" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.2" + typed-array-byte-length: "npm:^1.0.1" + typed-array-byte-offset: "npm:^1.0.2" + typed-array-length: "npm:^1.0.6" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10c0/d27e9afafb225c6924bee9971a7f25f20c314f2d6cb93a63cada4ac11dcf42040896a6c22e5fb8f2a10767055ed4ddf400be3b1eb12297d281726de470b75666 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 + languageName: node + linkType: hard + +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.0.15, es-iterator-helpers@npm:^1.0.19": + version: 1.0.19 + resolution: "es-iterator-helpers@npm:1.0.19" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.3" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + iterator.prototype: "npm:^1.1.2" + safe-array-concat: "npm:^1.1.2" + checksum: 10c0/ae8f0241e383b3d197383b9842c48def7fce0255fb6ed049311b686ce295595d9e389b466f6a1b7d4e7bb92d82f5e716d6fae55e20c1040249bf976743b038c5 + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0": + version: 1.0.0 + resolution: "es-object-atoms@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" + dependencies: + get-intrinsic: "npm:^1.2.4" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.1" + checksum: 10c0/f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"eslint-config-next@npm:13.0.5": + version: 13.0.5 + resolution: "eslint-config-next@npm:13.0.5" + dependencies: + "@next/eslint-plugin-next": "npm:13.0.5" + "@rushstack/eslint-patch": "npm:^1.1.3" + "@typescript-eslint/parser": "npm:^5.42.0" + eslint-import-resolver-node: "npm:^0.3.6" + eslint-import-resolver-typescript: "npm:^3.5.2" + eslint-plugin-import: "npm:^2.26.0" + eslint-plugin-jsx-a11y: "npm:^6.5.1" + eslint-plugin-react: "npm:^7.31.7" + eslint-plugin-react-hooks: "npm:^4.5.0" + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: ">=3.3.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/3f04508d00bb7a68fb52baae3e96734170bf040422cb9f2516fce145f0ce72b63c4683b29a6958373fde0f47d3f1b3c8d36a9dab89be535e7642dc99c726e38f + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.6, eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" + dependencies: + debug: "npm:^3.2.7" + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 + languageName: node + linkType: hard + +"eslint-import-resolver-typescript@npm:^3.5.2": + version: 3.6.1 + resolution: "eslint-import-resolver-typescript@npm:3.6.1" + dependencies: + debug: "npm:^4.3.4" + enhanced-resolve: "npm:^5.12.0" + eslint-module-utils: "npm:^2.7.4" + fast-glob: "npm:^3.3.1" + get-tsconfig: "npm:^4.5.0" + is-core-module: "npm:^2.11.0" + is-glob: "npm:^4.0.3" + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + checksum: 10c0/cb1cb4389916fe78bf8c8567aae2f69243dbfe624bfe21078c56ad46fa1ebf0634fa7239dd3b2055ab5c27359e4b4c28b69b11fcb3a5df8a9e6f7add8e034d86 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.7.4, eslint-module-utils@npm:^2.8.0": + version: 2.8.1 + resolution: "eslint-module-utils@npm:2.8.1" + dependencies: + debug: "npm:^3.2.7" + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/1aeeb97bf4b688d28de136ee57c824480c37691b40fa825c711a4caf85954e94b99c06ac639d7f1f6c1d69223bd21bcb991155b3e589488e958d5b83dfd0f882 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:^2.26.0": + version: 2.29.1 + resolution: "eslint-plugin-import@npm:2.29.1" + dependencies: + array-includes: "npm:^3.1.7" + array.prototype.findlastindex: "npm:^1.2.3" + array.prototype.flat: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.2" + debug: "npm:^3.2.7" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.8.0" + hasown: "npm:^2.0.0" + is-core-module: "npm:^2.13.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.7" + object.groupby: "npm:^1.0.1" + object.values: "npm:^1.1.7" + semver: "npm:^6.3.1" + tsconfig-paths: "npm:^3.15.0" + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + checksum: 10c0/5f35dfbf4e8e67f741f396987de9504ad125c49f4144508a93282b4ea0127e052bde65ab6def1f31b6ace6d5d430be698333f75bdd7dca3bc14226c92a083196 + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:^6.5.1": + version: 6.8.0 + resolution: "eslint-plugin-jsx-a11y@npm:6.8.0" + dependencies: + "@babel/runtime": "npm:^7.23.2" + aria-query: "npm:^5.3.0" + array-includes: "npm:^3.1.7" + array.prototype.flatmap: "npm:^1.3.2" + ast-types-flow: "npm:^0.0.8" + axe-core: "npm:=4.7.0" + axobject-query: "npm:^3.2.1" + damerau-levenshtein: "npm:^1.0.8" + emoji-regex: "npm:^9.2.2" + es-iterator-helpers: "npm:^1.0.15" + hasown: "npm:^2.0.0" + jsx-ast-utils: "npm:^3.3.5" + language-tags: "npm:^1.0.9" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.7" + object.fromentries: "npm:^2.0.7" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/199b883e526e6f9d7c54cb3f094abc54f11a1ec816db5fb6cae3b938eb0e503acc10ccba91ca7451633a9d0b9abc0ea03601844a8aba5fe88c5e8897c9ac8f49 + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:^4.5.0": + version: 4.6.2 + resolution: "eslint-plugin-react-hooks@npm:4.6.2" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 10c0/4844e58c929bc05157fb70ba1e462e34f1f4abcbc8dd5bbe5b04513d33e2699effb8bca668297976ceea8e7ebee4e8fc29b9af9d131bcef52886feaa2308b2cc + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.31.7": + version: 7.34.2 + resolution: "eslint-plugin-react@npm:7.34.2" + dependencies: + array-includes: "npm:^3.1.8" + array.prototype.findlast: "npm:^1.2.5" + array.prototype.flatmap: "npm:^1.3.2" + array.prototype.toreversed: "npm:^1.1.2" + array.prototype.tosorted: "npm:^1.1.3" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.0.19" + estraverse: "npm:^5.3.0" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.8" + object.fromentries: "npm:^2.0.8" + object.hasown: "npm:^1.1.4" + object.values: "npm:^1.2.0" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.5" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.11" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/37dc04424da8626f20a071466e7238d53ed111c53e5e5398d813ac2cf76a2078f00d91f7833fe5b2f0fc98f2688a75b36e78e9ada9f1068705d23c7031094316 + languageName: node + linkType: hard + +"eslint-scope@npm:^7.1.1": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-utils@npm:^3.0.0": + version: 3.0.0 + resolution: "eslint-utils@npm:3.0.0" + dependencies: + eslint-visitor-keys: "npm:^2.0.0" + peerDependencies: + eslint: ">=5" + checksum: 10c0/45aa2b63667a8d9b474c98c28af908d0a592bed1a4568f3145cd49fb5d9510f545327ec95561625290313fe126e6d7bdfe3fdbdb6f432689fab6b9497d3bfb52 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^2.0.0": + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: 10c0/9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint@npm:8.28.0": + version: 8.28.0 + resolution: "eslint@npm:8.28.0" + dependencies: + "@eslint/eslintrc": "npm:^1.3.3" + "@humanwhocodes/config-array": "npm:^0.11.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + ajv: "npm:^6.10.0" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.1.1" + eslint-utils: "npm:^3.0.0" + eslint-visitor-keys: "npm:^3.3.0" + espree: "npm:^9.4.0" + esquery: "npm:^1.4.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.15.0" + grapheme-splitter: "npm:^1.0.4" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.0.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-sdsl: "npm:^4.1.4" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.1" + regexpp: "npm:^3.2.0" + strip-ansi: "npm:^6.0.1" + strip-json-comments: "npm:^3.1.0" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 10c0/5378ee96346cf0c59e9a1de002f7bd19c2c0642ad8010f18254936563fa3cfd1d34fd420de5a31866aab1fa586875d39e4cef6b9367c2a361f2106723f900db2 + languageName: node + linkType: hard + +"espree@npm:^9.4.0": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esquery@npm:^1.4.0": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"estree-util-is-identifier-name@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-is-identifier-name@npm:3.0.0" + checksum: 10c0/d1881c6ed14bd588ebd508fc90bf2a541811dbb9ca04dec2f39d27dcaa635f85b5ed9bbbe7fc6fb1ddfca68744a5f7c70456b4b7108b6c4c52780631cc787c5b + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"eth-rpc-errors@npm:^4.0.2": + version: 4.0.3 + resolution: "eth-rpc-errors@npm:4.0.3" + dependencies: + fast-safe-stringify: "npm:^2.0.6" + checksum: 10c0/332cbc5a957b62bb66ea01da2a467da65026df47e6516a286a969cad74d6002f2b481335510c93f12ca29c46ebc8354e39e2240769d86184f9b4c30832cf5466 + languageName: node + linkType: hard + +"ethers@npm:^5.7.2": + version: 5.7.2 + resolution: "ethers@npm:5.7.2" + dependencies: + "@ethersproject/abi": "npm:5.7.0" + "@ethersproject/abstract-provider": "npm:5.7.0" + "@ethersproject/abstract-signer": "npm:5.7.0" + "@ethersproject/address": "npm:5.7.0" + "@ethersproject/base64": "npm:5.7.0" + "@ethersproject/basex": "npm:5.7.0" + "@ethersproject/bignumber": "npm:5.7.0" + "@ethersproject/bytes": "npm:5.7.0" + "@ethersproject/constants": "npm:5.7.0" + "@ethersproject/contracts": "npm:5.7.0" + "@ethersproject/hash": "npm:5.7.0" + "@ethersproject/hdnode": "npm:5.7.0" + "@ethersproject/json-wallets": "npm:5.7.0" + "@ethersproject/keccak256": "npm:5.7.0" + "@ethersproject/logger": "npm:5.7.0" + "@ethersproject/networks": "npm:5.7.1" + "@ethersproject/pbkdf2": "npm:5.7.0" + "@ethersproject/properties": "npm:5.7.0" + "@ethersproject/providers": "npm:5.7.2" + "@ethersproject/random": "npm:5.7.0" + "@ethersproject/rlp": "npm:5.7.0" + "@ethersproject/sha2": "npm:5.7.0" + "@ethersproject/signing-key": "npm:5.7.0" + "@ethersproject/solidity": "npm:5.7.0" + "@ethersproject/strings": "npm:5.7.0" + "@ethersproject/transactions": "npm:5.7.0" + "@ethersproject/units": "npm:5.7.0" + "@ethersproject/wallet": "npm:5.7.0" + "@ethersproject/web": "npm:5.7.1" + "@ethersproject/wordlists": "npm:5.7.0" + checksum: 10c0/90629a4cdb88cde7a7694f5610a83eb00d7fbbaea687446b15631397988f591c554dd68dfa752ddf00aabefd6285e5b298be44187e960f5e4962684e10b39962 + languageName: node + linkType: hard + +"events@npm:3.3.0, events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 + languageName: node + linkType: hard + +"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": + version: 1.0.3 + resolution: "evp_bytestokey@npm:1.0.3" + dependencies: + md5.js: "npm:^1.3.4" + node-gyp: "npm:latest" + safe-buffer: "npm:^5.1.1" + checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 + languageName: node + linkType: hard + +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^8.0.1" + human-signals: "npm:^5.0.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^3.0.0" + checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"extend@npm:^3.0.0": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 + languageName: node + linkType: hard + +"extension-port-stream@npm:^2.1.1": + version: 2.1.1 + resolution: "extension-port-stream@npm:2.1.1" + dependencies: + webextension-polyfill: "npm:>=0.10.0 <1.0" + checksum: 10c0/e3fb183669fee8adbb0fecdd0aa604feb976dc9d54c42da6c838c97c10be7f7f33c5341f198401e21216e1dd536fadd7b3f4bdf8e1bb38bbe3f135ecc3f6fda4 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.1": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fast-redact@npm:^3.0.0": + version: 3.5.0 + resolution: "fast-redact@npm:3.5.0" + checksum: 10c0/7e2ce4aad6e7535e0775bf12bd3e4f2e53d8051d8b630e0fa9e67f68cb0b0e6070d2f7a94b1d0522ef07e32f7c7cda5755e2b677a6538f1e9070ca053c42343a + languageName: node + linkType: hard + +"fast-safe-stringify@npm:^2.0.6": + version: 2.1.1 + resolution: "fast-safe-stringify@npm:2.1.1" + checksum: 10c0/d90ec1c963394919828872f21edaa3ad6f1dddd288d2bd4e977027afff09f5db40f94e39536d4646f7e01761d704d72d51dce5af1b93717f3489ef808f5f4e4d + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"file-selector@npm:^0.6.0": + version: 0.6.0 + resolution: "file-selector@npm:0.6.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/477ca1b56274db9fee1a8a623c4bfef580389726a5fef843af8c1f2f17f70ec2d1e41b29115777c92e120a15f1cca734c6ef36bb48bfa2ee027c68da16cd0d28 + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"filter-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "filter-obj@npm:1.1.0" + checksum: 10c0/071e0886b2b50238ca5026c5bbf58c26a7c1a1f720773b8c7813d16ba93d0200de977af14ac143c5ac18f666b2cfc83073f3a5fe6a4e996c49e0863d5500fccf + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf + languageName: node + linkType: hard + +"follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.6": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/9ff767f0d7be6aa6870c82ac79cf0368cd73e01bbc00e9eb1c2a16fbb198ec105e3c9b6628bb98e9f3ac66fe29a957b9645bcb9a490bb7aa0d35f908b6b85071 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: "npm:^1.1.3" + checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"generate-lockfile@npm:0.0.12": + version: 0.0.12 + resolution: "generate-lockfile@npm:0.0.12" + dependencies: + "@yarnpkg/lockfile": "npm:^1.1.0" + chalk: "npm:^4.1.0" + commander-plus: "npm:^0.0.6" + bin: + generate-lockfile: bin/index.js + checksum: 10c0/c573e6a9137cb82c57022587dcb0d4024b2ffcaf8c87a95cb7c17c41d3303a0dd414c06ceb905f48f7bb653da13a490ba324d12350a5bd945289206170b02d99 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 + languageName: node + linkType: hard + +"get-port-please@npm:^3.1.2": + version: 3.1.2 + resolution: "get-port-please@npm:3.1.2" + checksum: 10c0/61237342fe035967e5ad1b67a2dee347a64de093bf1222b7cd50072568d73c48dad5cc5cd4fa44635b7cfdcd14d6c47554edb9891c2ec70ab33ecb831683e257 + languageName: node + linkType: hard + +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc + languageName: node + linkType: hard + +"get-tsconfig@npm:^4.5.0": + version: 4.7.5 + resolution: "get-tsconfig@npm:4.7.5" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 10c0/a917dff2ba9ee187c41945736bf9bbab65de31ce5bc1effd76267be483a7340915cff232199406379f26517d2d0a4edcdbcda8cca599c2480a0f2cf1e1de3efa + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 + languageName: node + linkType: hard + +"glob@npm:7.1.7": + version: 7.1.7 + resolution: "glob@npm:7.1.7" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/173245e6f9ccf904309eb7ef4a44a11f3bf68e9e341dff5a28b5db0dd7123b7506daf41497f3437a0710f57198187b758c2351eeaabce4d16935e956920da6a4 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.4.1 + resolution: "glob@npm:10.4.1" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/77f2900ed98b9cc2a0e1901ee5e476d664dae3cd0f1b662b8bfd4ccf00d0edc31a11595807706a274ca10e1e251411bbf2e8e976c82bed0d879a9b89343ed379 + languageName: node + linkType: hard + +"glob@npm:^7.1.3": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"globals@npm:^13.15.0, globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd + languageName: node + linkType: hard + +"globalthis@npm:^1.0.1": + version: 1.0.3 + resolution: "globalthis@npm:1.0.3" + dependencies: + define-properties: "npm:^1.1.3" + checksum: 10c0/0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 + languageName: node + linkType: hard + +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"google-protobuf@npm:^3.17.3": + version: 3.21.2 + resolution: "google-protobuf@npm:3.21.2" + checksum: 10c0/df20b41aad9eba4d842d69c717a4d73ac6d321084c12f524ad5eb79a47ad185323bd1b477c19565a15fd08b6eef29e475c8ac281dbc6fe547b81d8b6b99974f5 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.1.3" + checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"grapheme-splitter@npm:^1.0.4": + version: 1.0.4 + resolution: "grapheme-splitter@npm:1.0.4" + checksum: 10c0/108415fb07ac913f17040dc336607772fcea68c7f495ef91887edddb0b0f5ff7bc1d1ab181b125ecb2f0505669ef12c9a178a3bbd2dd8e042d8c5f1d7c90331a + languageName: node + linkType: hard + +"h3@npm:^1.10.2, h3@npm:^1.11.1": + version: 1.11.1 + resolution: "h3@npm:1.11.1" + dependencies: + cookie-es: "npm:^1.0.0" + crossws: "npm:^0.2.2" + defu: "npm:^6.1.4" + destr: "npm:^2.0.3" + iron-webcrypto: "npm:^1.0.0" + ohash: "npm:^1.1.3" + radix3: "npm:^1.1.0" + ufo: "npm:^1.4.0" + uncrypto: "npm:^0.1.3" + unenv: "npm:^1.9.0" + checksum: 10c0/bd02bfae536a0facb9ddcd85bd51ad16264ea6fd331a548540a0846e426348449fcbcb10b0fa08673cd1d9c60e6ff5d8f56e7ec2e1ee43fda460d8c16866cbfa + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"hash-base@npm:^3.0.0": + version: 3.1.0 + resolution: "hash-base@npm:3.1.0" + dependencies: + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.6.0" + safe-buffer: "npm:^5.2.0" + checksum: 10c0/663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 + languageName: node + linkType: hard + +"hash-base@npm:~3.0": + version: 3.0.4 + resolution: "hash-base@npm:3.0.4" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/a13357dccb3827f0bb0b56bf928da85c428dc8670f6e4a1c7265e4f1653ce02d69030b40fd01b0f1d218a995a066eea279cded9cec72d207b593bcdfe309c2f0 + languageName: node + linkType: hard + +"hash.js@npm:1.1.7, hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: "npm:^2.0.3" + minimalistic-assert: "npm:^1.0.1" + checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"hast-util-to-jsx-runtime@npm:^2.0.0": + version: 2.3.0 + resolution: "hast-util-to-jsx-runtime@npm:2.3.0" + dependencies: + "@types/estree": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/unist": "npm:^3.0.0" + comma-separated-tokens: "npm:^2.0.0" + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + hast-util-whitespace: "npm:^3.0.0" + mdast-util-mdx-expression: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.0" + property-information: "npm:^6.0.0" + space-separated-tokens: "npm:^2.0.0" + style-to-object: "npm:^1.0.0" + unist-util-position: "npm:^5.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/df7a36dcc792df7667a54438f044b721753d5e09692606d23bf7336bf4651670111fe7728eebbf9f0e4f96ab3346a05bb23037fa1b1d115482b3bc5bde8b6912 + languageName: node + linkType: hard + +"hast-util-whitespace@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-whitespace@npm:3.0.0" + dependencies: + "@types/hast": "npm:^3.0.0" + checksum: 10c0/b898bc9fe27884b272580d15260b6bbdabe239973a147e97fa98c45fa0ffec967a481aaa42291ec34fb56530dc2d484d473d7e2bae79f39c83f3762307edfea8 + languageName: node + linkType: hard + +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: "npm:^1.0.3" + minimalistic-assert: "npm:^1.0.0" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d + languageName: node + linkType: hard + +"html-url-attributes@npm:^3.0.0": + version: 3.0.0 + resolution: "html-url-attributes@npm:3.0.0" + checksum: 10c0/af300ae1f3b9cf90aba0d95a165c3f4066ec2b3ee2f36a885a8d842e68675e4133896b00bde42d18ac799d0ce678fa1695baec3f865b01a628922d737c0d035c + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"http-shutdown@npm:^1.2.2": + version: 1.2.2 + resolution: "http-shutdown@npm:1.2.2" + checksum: 10c0/1ea04d50d9a84ad6e7d9ee621160ce9515936e32e7f5ba445db48a5d72681858002c934c7f3ae5f474b301c1cd6b418aee3f6a2f109822109e606cc1a6c17c03 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.4 + resolution: "https-proxy-agent@npm:7.0.4" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/bc4f7c38da32a5fc622450b6cb49a24ff596f9bd48dcedb52d2da3fa1c1a80e100fb506bd59b326c012f21c863c69b275c23de1a01d0b84db396822fdf25e52b + languageName: node + linkType: hard + +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"idb-keyval@npm:^6.2.1": + version: 6.2.1 + resolution: "idb-keyval@npm:6.2.1" + checksum: 10c0/9f0c83703a365e00bd0b4ed6380ce509a06dedfc6ec39b2ba5740085069fd2f2ff5c14ba19356488e3612a2f9c49985971982d836460a982a5d0b4019eeba48a + languageName: node + linkType: hard + +"ieee754@npm:^1.2.1": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"ignore@npm:^5.2.0": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd + languageName: node + linkType: hard + +"immer@npm:^10.1.1": + version: 10.1.1 + resolution: "immer@npm:10.1.1" + checksum: 10c0/b749e10d137ccae91788f41bd57e9387f32ea6d6ea8fd7eb47b23fd7766681575efc7f86ceef7fe24c3bc9d61e38ff5d2f49c2663b2b0c056e280a4510923653 + languageName: node + linkType: hard + +"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"inline-style-parser@npm:0.2.3": + version: 0.2.3 + resolution: "inline-style-parser@npm:0.2.3" + checksum: 10c0/21b46d39a39c8aeaa738346650469388e8a412dd276ab75aa3d85b1883311e89c86a1fdbb8c2f1958f4c979bae74067f6ba0385455b125faf4fa77e1dbb94799 + languageName: node + linkType: hard + +"interchain-query@npm:1.10.1": + version: 1.10.1 + resolution: "interchain-query@npm:1.10.1" + dependencies: + "@cosmjs/amino": "npm:0.29.4" + "@cosmjs/proto-signing": "npm:0.29.4" + "@cosmjs/stargate": "npm:0.29.4" + "@cosmjs/tendermint-rpc": "npm:^0.29.4" + protobufjs: "npm:^6.11.2" + peerDependencies: + "@tanstack/react-query": ^4.29.12 + checksum: 10c0/ee8f57ad17d9b4255a0ab1c924bd5bd4ecc16f8c1aaf7e0ea6e0373c134fb9108ff27a5c8c43b3b7082ea7fcd6612c57249305e97aea597a1cf3a5c75cc7e33e + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c + languageName: node + linkType: hard + +"intl-messageformat@npm:^10.1.0": + version: 10.5.11 + resolution: "intl-messageformat@npm:10.5.11" + dependencies: + "@formatjs/ecma402-abstract": "npm:1.18.2" + "@formatjs/fast-memoize": "npm:2.2.0" + "@formatjs/icu-messageformat-parser": "npm:2.7.6" + tslib: "npm:^2.4.0" + checksum: 10c0/423f1c879ce2d0e7b9e0b4c1787a81ead7fe4d1734e0366a20fef56b06c09146e7ca3618e2e78b4f8b8f2b59cafe6237ceed21530fe0c16cfb47d915fc80222d + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"iron-webcrypto@npm:^1.0.0": + version: 1.1.0 + resolution: "iron-webcrypto@npm:1.1.0" + checksum: 10c0/58c783a3f18128e37918f83c8cd2703b2494ccec9316a0de5194b0b52282d9eac12a5a0a8c18da6b55940c3f9957a5ae10b786616692a1e5a12caaa019dde8de + languageName: node + linkType: hard + +"is-alphabetical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphabetical@npm:2.0.1" + checksum: 10c0/932367456f17237533fd1fc9fe179df77957271020b83ea31da50e5cc472d35ef6b5fb8147453274ffd251134472ce24eb6f8d8398d96dee98237cdb81a6c9a7 + languageName: node + linkType: hard + +"is-alphanumerical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphanumerical@npm:2.0.1" + dependencies: + is-alphabetical: "npm:^2.0.0" + is-decimal: "npm:^2.0.0" + checksum: 10c0/4b35c42b18e40d41378293f82a3ecd9de77049b476f748db5697c297f686e1e05b072a6aaae2d16f54d2a57f85b00cbbe755c75f6d583d1c77d6657bd0feb5a2 + languageName: node + linkType: hard + +"is-arguments@npm:^1.0.4": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + languageName: node + linkType: hard + +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: "npm:^1.0.1" + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-view@npm:1.0.1" + dependencies: + is-typed-array: "npm:^1.1.13" + checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e + languageName: node + linkType: hard + +"is-decimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-decimal@npm:2.0.1" + checksum: 10c0/8085dd66f7d82f9de818fba48b9e9c0429cb4291824e6c5f2622e96b9680b54a07a624cfc663b24148b8e853c62a1c987cfe8b0b5a13f5156991afaf6736e334 + languageName: node + linkType: hard + +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-hexadecimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-hexadecimal@npm:2.0.1" + checksum: 10c0/3eb60fe2f1e2bbc760b927dcad4d51eaa0c60138cf7fc671803f66353ad90c301605b502c7ea4c6bb0548e1c7e79dfd37b73b632652e3b76030bba603a7e9626 + languageName: node + linkType: hard + +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: "npm:^3.0.0" + bin: + is-inside-container: cli.js + checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + +"is-nan@npm:^1.3.2": + version: 1.3.2 + resolution: "is-nan@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.0" + define-properties: "npm:^1.1.3" + checksum: 10c0/8bfb286f85763f9c2e28ea32e9127702fe980ffd15fa5d63ade3be7786559e6e21355d3625dd364c769c033c5aedf0a2ed3d4025d336abf1b9241e3d9eddc5b0 + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-plain-obj@npm:^4.0.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: "npm:^1.0.2" + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" + dependencies: + which-typed-array: "npm:^1.1.14" + checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/8ad6141b6a400e7ce7c7442a13928c676d07b1f315ab77d9912920bf5f4170622f43126f111615788f26c3b1871158a6797c862233124507db0bcc33a9537d1a + languageName: node + linkType: hard + +"is-what@npm:^4.1.8": + version: 4.1.16 + resolution: "is-what@npm:4.1.16" + checksum: 10c0/611f1947776826dcf85b57cfb7bd3b3ea6f4b94a9c2f551d4a53f653cf0cb9d1e6518846648256d46ee6c91d114b6d09d2ac8a07306f7430c5900f87466aae5b + languageName: node + linkType: hard + +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: "npm:^1.0.0" + checksum: 10c0/d3317c11995690a32c362100225e22ba793678fe8732660c6de511ae71a0ff05b06980cf21f98a6bf40d7be0e9e9506f859abe00a1118287d63e53d0a3d06947 + languageName: node + linkType: hard + +"is64bit@npm:^2.0.0": + version: 2.0.0 + resolution: "is64bit@npm:2.0.0" + dependencies: + system-architecture: "npm:^0.1.0" + checksum: 10c0/9f3741d4b7560e2a30b9ce0c79bb30c7bdcc5df77c897bd59bb68f0fd882ae698015e8da81d48331def66c778d430c1ae3cb8c1fcc34e96c576b66198395faa7 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"isomorphic-unfetch@npm:3.1.0": + version: 3.1.0 + resolution: "isomorphic-unfetch@npm:3.1.0" + dependencies: + node-fetch: "npm:^2.6.1" + unfetch: "npm:^4.2.0" + checksum: 10c0/d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 + languageName: node + linkType: hard + +"isomorphic-ws@npm:^4.0.1": + version: 4.0.1 + resolution: "isomorphic-ws@npm:4.0.1" + peerDependencies: + ws: "*" + checksum: 10c0/7cb90dc2f0eb409825558982fb15d7c1d757a88595efbab879592f9d2b63820d6bbfb5571ab8abe36c715946e165a413a99f6aafd9f40ab1f514d73487bc9996 + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" + dependencies: + define-properties: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + reflect.getprototypeof: "npm:^1.0.4" + set-function-name: "npm:^2.0.1" + checksum: 10c0/a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.2.3 + resolution: "jackspeak@npm:3.2.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/eed7a5056ac8cdafcadeb1fedbfbe96aef4e7fea7cf6f536f48696df7ef4d423c323ba03320860b886ecf1e59d0478bb3d0f8ed7d464932c7e3c0712095425f1 + languageName: node + linkType: hard + +"javascript-stringify@npm:^2.0.1": + version: 2.1.0 + resolution: "javascript-stringify@npm:2.1.0" + checksum: 10c0/374e74ebff29b94de78da39daa6e530999c58a145aeb293dc21180c4584459b14d9e5721d9bc6ed4eba319c437ef0145c157c946b70ecddcff6668682a002bcc + languageName: node + linkType: hard + +"jiti@npm:^1.21.0": + version: 1.21.0 + resolution: "jiti@npm:1.21.0" + bin: + jiti: bin/jiti.js + checksum: 10c0/7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f + languageName: node + linkType: hard + +"js-sdsl@npm:^4.1.4": + version: 4.4.2 + resolution: "js-sdsl@npm:4.4.2" + checksum: 10c0/50707728fc31642164f4d83c8087f3750aaa99c450b008b19e236a1f190c9e48f9fc799615c341f9ca2c0803b15ab6f48d92a9cc3e6ffd20065cba7d7e742b92 + languageName: node + linkType: hard + +"js-sha3@npm:0.8.0": + version: 0.8.0 + resolution: "js-sha3@npm:0.8.0" + checksum: 10c0/43a21dc7967c871bd2c46cb1c2ae97441a97169f324e509f382d43330d8f75cf2c96dba7c806ab08a425765a9c847efdd4bffbac2d99c3a4f3de6c0218f40533 + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jscrypto@npm:^1.0.1": + version: 1.0.3 + resolution: "jscrypto@npm:1.0.3" + bin: + jscrypto: bin/cli.js + checksum: 10c0/9af6d4db4284d27a43b1228d2d510582fc650f53f6732a16a27d624c9fe28e87e68a7fde5ea2ca12c5d5748ba828715785dea75682f16781ee1e061f1faa505d + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-rpc-engine@npm:^6.1.0": + version: 6.1.0 + resolution: "json-rpc-engine@npm:6.1.0" + dependencies: + "@metamask/safe-event-emitter": "npm:^2.0.0" + eth-rpc-errors: "npm:^4.0.2" + checksum: 10c0/29c480f88152b1987ab0f58f9242ee163d5a7e95cd0d8ae876c08b21657022b82f6008f5eecd048842fb7f6fc3b4e364fde99ca620458772b6abd1d2c1e020d5 + languageName: node + linkType: hard + +"json-rpc-middleware-stream@npm:^4.2.1": + version: 4.2.3 + resolution: "json-rpc-middleware-stream@npm:4.2.3" + dependencies: + "@metamask/safe-event-emitter": "npm:^3.0.0" + json-rpc-engine: "npm:^6.1.0" + readable-stream: "npm:^2.3.3" + checksum: 10c0/d21b86e79b5711c99f4211a4f129c9c24817ea372945cae8ea1425285680e71ff8d0638d4d8738fe480a56baa7f8cd7f9a8330b43b81a0719e522bd5d80567c7 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json-stringify-safe@npm:^5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 + languageName: node + linkType: hard + +"json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: "npm:^1.2.0" + bin: + json5: lib/cli.js + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + languageName: node + linkType: hard + +"json5@npm:^2.1.2": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonc-parser@npm:^3.2.0": + version: 3.2.1 + resolution: "jsonc-parser@npm:3.2.1" + checksum: 10c0/ada66dec143d7f9cb0e2d0d29c69e9ce40d20f3a4cb96b0c6efb745025ac7f9ba647d7ac0990d0adfc37a2d2ae084a12009a9c833dbdbeadf648879a99b9df89 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + languageName: node + linkType: hard + +"keccak256@npm:^1.0.6": + version: 1.0.6 + resolution: "keccak256@npm:1.0.6" + dependencies: + bn.js: "npm:^5.2.0" + buffer: "npm:^6.0.3" + keccak: "npm:^3.0.2" + checksum: 10c0/2a3f1e281ffd65bcbbae2ee8d62e27f0336efe6f16b7ed9932ad642ed398da62ccbc3d38dcdf43bd2fad9885f02df501dc77a900c358644df296396ed194056f + languageName: node + linkType: hard + +"keccak@npm:^3.0.2": + version: 3.0.4 + resolution: "keccak@npm:3.0.4" + dependencies: + node-addon-api: "npm:^2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/153525c1c1f770beadb8f8897dec2f1d2dcbee11d063fe5f61957a5b236bfd3d2a111ae2727e443aa6a848df5edb98b9ef237c78d56df49087b0ca8a232ca9cd + languageName: node + linkType: hard + +"keypress@npm:0.1.x": + version: 0.1.0 + resolution: "keypress@npm:0.1.0" + checksum: 10c0/0d6c1921fc92a8b0c1f8dd4845f7b764579a9ac69aa489b9eba60c4fb83f2f7983749534b37f1052b5244a3956d027d8b170aea5c4f24c8dda67b74fa9049a11 + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"keyvaluestorage-interface@npm:^1.0.0": + version: 1.0.0 + resolution: "keyvaluestorage-interface@npm:1.0.0" + checksum: 10c0/0e028ebeda79a4e48c7e36708dbe7ced233c7a1f1bc925e506f150dd2ce43178bee8d20361c445bd915569709d9dc9ea80063b4d3c3cf5d615ab43aa31d3ec3d + languageName: node + linkType: hard + +"language-subtag-registry@npm:^0.3.20": + version: 0.3.23 + resolution: "language-subtag-registry@npm:0.3.23" + checksum: 10c0/e9b05190421d2cd36dd6c95c28673019c927947cb6d94f40ba7e77a838629ee9675c94accf897fbebb07923187deb843b8fbb8935762df6edafe6c28dcb0b86c + languageName: node + linkType: hard + +"language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" + dependencies: + language-subtag-registry: "npm:^0.3.20" + checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"libsodium-sumo@npm:^0.7.13": + version: 0.7.13 + resolution: "libsodium-sumo@npm:0.7.13" + checksum: 10c0/8159205cc36cc4bdf46ee097e5f998d5cac7d11612be7406a8396ca3ee31560871ac17daa69e47ff0e8407eeae9f49313912ea95dbc8715875301b004c28ef5b + languageName: node + linkType: hard + +"libsodium-wrappers-sumo@npm:^0.7.11": + version: 0.7.13 + resolution: "libsodium-wrappers-sumo@npm:0.7.13" + dependencies: + libsodium-sumo: "npm:^0.7.13" + checksum: 10c0/51a151d0f73418632dcf9cf0184b14d8eb6e16b9a3f01a652c7401c6d1bf8ead4f5ce40a4f00bd4754c5719a7a5fb71d6125691896aeb7a9c1abcfe4b73afc02 + languageName: node + linkType: hard + +"libsodium-wrappers@npm:^0.7.6": + version: 0.7.13 + resolution: "libsodium-wrappers@npm:0.7.13" + dependencies: + libsodium: "npm:^0.7.13" + checksum: 10c0/3de2c09a41991832333b379f4eefadd3113abb216c5be8d141eb053bbe904a4d529c01a4bbb8f46c1e2a987c3de1fb9adbb0cf7980155822e06504a38dc16cbb + languageName: node + linkType: hard + +"libsodium@npm:^0.7.13": + version: 0.7.13 + resolution: "libsodium@npm:0.7.13" + checksum: 10c0/91a65df81e123d8374b1dcfc1214970203139b4ac75c8032cc2ca390c6173f456d15dbdbf8b79115337086fc2f5a3faa8f96625d909a788125b6ead5894cd5f5 + languageName: node + linkType: hard + +"listhen@npm:^1.7.2": + version: 1.7.2 + resolution: "listhen@npm:1.7.2" + dependencies: + "@parcel/watcher": "npm:^2.4.1" + "@parcel/watcher-wasm": "npm:^2.4.1" + citty: "npm:^0.1.6" + clipboardy: "npm:^4.0.0" + consola: "npm:^3.2.3" + crossws: "npm:^0.2.0" + defu: "npm:^6.1.4" + get-port-please: "npm:^3.1.2" + h3: "npm:^1.10.2" + http-shutdown: "npm:^1.2.2" + jiti: "npm:^1.21.0" + mlly: "npm:^1.6.1" + node-forge: "npm:^1.3.1" + pathe: "npm:^1.1.2" + std-env: "npm:^3.7.0" + ufo: "npm:^1.4.0" + untun: "npm:^0.1.3" + uqr: "npm:^0.1.2" + bin: + listen: bin/listhen.mjs + listhen: bin/listhen.mjs + checksum: 10c0/cd4d0651686b88c61a5bd5d5afc03feb99e352eb7862260112010655cf7997fb3356e61317f09555e2b7412175ae05265fc9e97458aa014586bf9fa4ab22bd5a + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.0": + version: 2.0.4 + resolution: "loader-utils@npm:2.0.4" + dependencies: + big.js: "npm:^5.2.2" + emojis-list: "npm:^3.0.0" + json5: "npm:^2.1.2" + checksum: 10c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"lodash.get@npm:^4.4.2": + version: 4.4.2 + resolution: "lodash.get@npm:4.4.2" + checksum: 10c0/48f40d471a1654397ed41685495acb31498d5ed696185ac8973daef424a749ca0c7871bf7b665d5c14f5cc479394479e0307e781f61d5573831769593411be6e + languageName: node + linkType: hard + +"lodash.isequal@npm:4.5.0, lodash.isequal@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: 10c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"long@npm:^3 || ^4 || ^5, long@npm:^5.2.3": + version: 5.2.3 + resolution: "long@npm:5.2.3" + checksum: 10c0/6a0da658f5ef683b90330b1af76f06790c623e148222da9d75b60e266bbf88f803232dd21464575681638894a84091616e7f89557aa087fd14116c0f4e0e43d9 + languageName: node + linkType: hard + +"long@npm:^4.0.0": + version: 4.0.0 + resolution: "long@npm:4.0.0" + checksum: 10c0/50a6417d15b06104dbe4e3d4a667c39b137f130a9108ea8752b352a4cfae047531a3ac351c181792f3f8768fe17cca6b0f406674a541a86fb638aaac560d83ed + languageName: node + linkType: hard + +"longest-streak@npm:^3.0.0": + version: 3.1.0 + resolution: "longest-streak@npm:3.1.0" + checksum: 10c0/7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa + languageName: node + linkType: hard + +"loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1": + version: 10.2.2 + resolution: "lru-cache@npm:10.2.2" + checksum: 10c0/402d31094335851220d0b00985084288136136992979d0e015f0f1697e15d1c86052d7d53ae86b614e5b058425606efffc6969a31a091085d7a2b80a8a1e26d6 + languageName: node + linkType: hard + +"lru-cache@npm:^10.2.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: 10c0/c9847612aa2daaef102d30542a8d6d9b2c2bb36581c1bf0dc3ebf5e5f3352c772a749e604afae2e46873b930a9e9523743faac4e5b937c576ab29196774712ee + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + proc-log: "npm:^4.2.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10c0/df5f4dbb6d98153b751bccf4dc4cc500de85a96a9331db9805596c46aa9f99d9555983954e6c1266d9f981ae37a9e4647f42b9a4bb5466f867f4012e582c9e7e + languageName: node + linkType: hard + +"md5.js@npm:^1.3.4": + version: 1.3.5 + resolution: "md5.js@npm:1.3.5" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 + languageName: node + linkType: hard + +"mdast-util-from-markdown@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-from-markdown@npm:2.0.1" + dependencies: + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + decode-named-character-reference: "npm:^1.0.0" + devlop: "npm:^1.0.0" + mdast-util-to-string: "npm:^4.0.0" + micromark: "npm:^4.0.0" + micromark-util-decode-numeric-character-reference: "npm:^2.0.0" + micromark-util-decode-string: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unist-util-stringify-position: "npm:^4.0.0" + checksum: 10c0/496596bc6419200ff6258531a0ebcaee576a5c169695f5aa296a79a85f2a221bb9247d565827c709a7c2acfb56ae3c3754bf483d86206617bd299a9658c8121c + languageName: node + linkType: hard + +"mdast-util-mdx-expression@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-mdx-expression@npm:2.0.0" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/512848cbc44b9dc7cffc1bb3f95f7e67f0d6562870e56a67d25647f475d411e136b915ba417c8069fb36eac1839d0209fb05fb323d377f35626a82fcb0879363 + languageName: node + linkType: hard + +"mdast-util-mdx-jsx@npm:^3.0.0": + version: 3.1.2 + resolution: "mdast-util-mdx-jsx@npm:3.1.2" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + ccount: "npm:^2.0.0" + devlop: "npm:^1.1.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + parse-entities: "npm:^4.0.0" + stringify-entities: "npm:^4.0.0" + unist-util-remove-position: "npm:^5.0.0" + unist-util-stringify-position: "npm:^4.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/855b60c3db9bde2fe142bd366597f7bd5892fc288428ba054e26ffcffc07bfe5648c0792d614ba6e08b1eab9784ffc3c1267cf29dfc6db92b419d68b5bcd487d + languageName: node + linkType: hard + +"mdast-util-mdxjs-esm@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdxjs-esm@npm:2.0.1" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/5bda92fc154141705af2b804a534d891f28dac6273186edf1a4c5e3f045d5b01dbcac7400d27aaf91b7e76e8dce007c7b2fdf136c11ea78206ad00bdf9db46bc + languageName: node + linkType: hard + +"mdast-util-phrasing@npm:^4.0.0": + version: 4.1.0 + resolution: "mdast-util-phrasing@npm:4.1.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + unist-util-is: "npm:^6.0.0" + checksum: 10c0/bf6c31d51349aa3d74603d5e5a312f59f3f65662ed16c58017169a5fb0f84ca98578f626c5ee9e4aa3e0a81c996db8717096705521bddb4a0185f98c12c9b42f + languageName: node + linkType: hard + +"mdast-util-to-hast@npm:^13.0.0": + version: 13.2.0 + resolution: "mdast-util-to-hast@npm:13.2.0" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + "@ungap/structured-clone": "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" + trim-lines: "npm:^3.0.0" + unist-util-position: "npm:^5.0.0" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/9ee58def9287df8350cbb6f83ced90f9c088d72d4153780ad37854f87144cadc6f27b20347073b285173b1649b0723ddf0b9c78158608a804dcacb6bda6e1816 + languageName: node + linkType: hard + +"mdast-util-to-markdown@npm:^2.0.0": + version: 2.1.0 + resolution: "mdast-util-to-markdown@npm:2.1.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + longest-streak: "npm:^3.0.0" + mdast-util-phrasing: "npm:^4.0.0" + mdast-util-to-string: "npm:^4.0.0" + micromark-util-decode-string: "npm:^2.0.0" + unist-util-visit: "npm:^5.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/8bd37a9627a438ef6418d6642661904d0cc03c5c732b8b018a8e238ef5cc82fe8aef1940b19c6f563245e58b9659f35e527209bd3fe145f3c723ba14d18fc3e6 + languageName: node + linkType: hard + +"mdast-util-to-string@npm:^4.0.0": + version: 4.0.0 + resolution: "mdast-util-to-string@npm:4.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + checksum: 10c0/2d3c1af29bf3fe9c20f552ee9685af308002488f3b04b12fa66652c9718f66f41a32f8362aa2d770c3ff464c034860b41715902ada2306bb0a055146cef064d7 + languageName: node + linkType: hard + +"media-query-parser@npm:^2.0.2": + version: 2.0.2 + resolution: "media-query-parser@npm:2.0.2" + dependencies: + "@babel/runtime": "npm:^7.12.5" + checksum: 10c0/91a987e9f6620f5c7d0fcf22bd0a106bbaccdef96aba62c461656ee656e141dd2b60f2f1d99411799183c2ea993bd177ca92c26c08bf321fbc0c846ab391d79c + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromark-core-commonmark@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-core-commonmark@npm:2.0.1" + dependencies: + decode-named-character-reference: "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-factory-destination: "npm:^2.0.0" + micromark-factory-label: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-factory-title: "npm:^2.0.0" + micromark-factory-whitespace: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-classify-character: "npm:^2.0.0" + micromark-util-html-tag-name: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-resolve-all: "npm:^2.0.0" + micromark-util-subtokenize: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/a0b280b1b6132f600518e72cb29a4dd1b2175b85f5ed5b25d2c5695e42b876b045971370daacbcfc6b4ce8cf7acbf78dd3a0284528fb422b450144f4b3bebe19 + languageName: node + linkType: hard + +"micromark-factory-destination@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-destination@npm:2.0.0" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/b73492f687d41a6a379159c2f3acbf813042346bcea523d9041d0cc6124e6715f0779dbb2a0b3422719e9764c3b09f9707880aa159557e3cb4aeb03b9d274915 + languageName: node + linkType: hard + +"micromark-factory-label@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-label@npm:2.0.0" + dependencies: + devlop: "npm:^1.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/8ffad00487a7891941b1d1f51d53a33c7a659dcf48617edb7a4008dad7aff67ec316baa16d55ca98ae3d75ce1d81628dbf72fedc7c6f108f740dec0d5d21c8ee + languageName: node + linkType: hard + +"micromark-factory-space@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-space@npm:2.0.0" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/103ca954dade963d4ff1d2f27d397833fe855ddc72590205022832ef68b775acdea67949000cee221708e376530b1de78c745267b0bf8366740840783eb37122 + languageName: node + linkType: hard + +"micromark-factory-title@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-title@npm:2.0.0" + dependencies: + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/2b2188e7a011b1b001faf8c860286d246d5c3485ef8819270c60a5808f4c7613e49d4e481dbdff62600ef7acdba0f5100be2d125cbd2a15e236c26b3668a8ebd + languageName: node + linkType: hard + +"micromark-factory-whitespace@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-whitespace@npm:2.0.0" + dependencies: + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/4e91baab0cc71873095134bd0e225d01d9786cde352701402d71b72d317973954754e8f9f1849901f165530e6421202209f4d97c460a27bb0808ec5a3fc3148c + languageName: node + linkType: hard + +"micromark-util-character@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-util-character@npm:2.1.0" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/fc37a76aaa5a5138191ba2bef1ac50c36b3bcb476522e98b1a42304ab4ec76f5b036a746ddf795d3de3e7004b2c09f21dd1bad42d161f39b8cfc0acd067e6373 + languageName: node + linkType: hard + +"micromark-util-chunked@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-chunked@npm:2.0.0" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/043b5f2abc8c13a1e2e4c378ead191d1a47ed9e0cd6d0fa5a0a430b2df9e17ada9d5de5a20688a000bbc5932507e746144acec60a9589d9a79fa60918e029203 + languageName: node + linkType: hard + +"micromark-util-classify-character@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-classify-character@npm:2.0.0" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/2bf5fa5050faa9b69f6c7e51dbaaf02329ab70fabad8229984381b356afbbf69db90f4617bec36d814a7d285fb7cad8e3c4e38d1daf4387dc9e240aa7f9a292a + languageName: node + linkType: hard + +"micromark-util-combine-extensions@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-combine-extensions@npm:2.0.0" + dependencies: + micromark-util-chunked: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/cd4c8d1a85255527facb419ff3b3cc3d7b7f27005c5ef5fa7ef2c4d0e57a9129534fc292a188ec2d467c2c458642d369c5f894bc8a9e142aed6696cc7989d3ea + languageName: node + linkType: hard + +"micromark-util-decode-numeric-character-reference@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.1" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/3f6d684ee8f317c67806e19b3e761956256cb936a2e0533aad6d49ac5604c6536b2041769c6febdd387ab7175b7b7e551851bf2c1f78da943e7a3671ca7635ac + languageName: node + linkType: hard + +"micromark-util-decode-string@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-decode-string@npm:2.0.0" + dependencies: + decode-named-character-reference: "npm:^1.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-decode-numeric-character-reference: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/f5413bebb21bdb686cfa1bcfa7e9c93093a523d1b42443ead303b062d2d680a94e5e8424549f57b8ba9d786a758e5a26a97f56068991bbdbca5d1885b3aa7227 + languageName: node + linkType: hard + +"micromark-util-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-encode@npm:2.0.0" + checksum: 10c0/ebdaafff23100bbf4c74e63b4b1612a9ddf94cd7211d6a076bc6fb0bc32c1b48d6fb615aa0953e607c62c97d849f97f1042260d3eb135259d63d372f401bbbb2 + languageName: node + linkType: hard + +"micromark-util-html-tag-name@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-html-tag-name@npm:2.0.0" + checksum: 10c0/988aa26367449bd345b627ae32cf605076daabe2dc1db71b578a8a511a47123e14af466bcd6dcbdacec60142f07bc2723ec5f7a0eed0f5319ce83b5e04825429 + languageName: node + linkType: hard + +"micromark-util-normalize-identifier@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-normalize-identifier@npm:2.0.0" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/93bf8789b8449538f22cf82ac9b196363a5f3b2f26efd98aef87c4c1b1f8c05be3ef6391ff38316ff9b03c1a6fd077342567598019ddd12b9bd923dacc556333 + languageName: node + linkType: hard + +"micromark-util-resolve-all@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-resolve-all@npm:2.0.0" + dependencies: + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/3b912e88453dcefe728a9080c8934a75ac4732056d6576ceecbcaf97f42c5d6fa2df66db8abdc8427eb167c5ffddefe26713728cfe500bc0e314ed260d6e2746 + languageName: node + linkType: hard + +"micromark-util-sanitize-uri@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-sanitize-uri@npm:2.0.0" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-encode: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/74763ca1c927dd520d3ab8fd9856a19740acf76fc091f0a1f5d4e99c8cd5f1b81c5a0be3efb564941a071fb6d85fd951103f2760eb6cff77b5ab3abe08341309 + languageName: node + linkType: hard + +"micromark-util-subtokenize@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-subtokenize@npm:2.0.1" + dependencies: + devlop: "npm:^1.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/000cefde827db129f4ed92b8fbdeb4866c5f9c93068c0115485564b0426abcb9058080aa257df9035e12ca7fa92259d66623ea750b9eb3bcdd8325d3fb6fc237 + languageName: node + linkType: hard + +"micromark-util-symbol@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-symbol@npm:2.0.0" + checksum: 10c0/4e76186c185ce4cefb9cea8584213d9ffacd77099d1da30c0beb09fa21f46f66f6de4c84c781d7e34ff763fe3a06b530e132fa9004882afab9e825238d0aa8b3 + languageName: node + linkType: hard + +"micromark-util-types@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-types@npm:2.0.0" + checksum: 10c0/d74e913b9b61268e0d6939f4209e3abe9dada640d1ee782419b04fd153711112cfaaa3c4d5f37225c9aee1e23c3bb91a1f5223e1e33ba92d33e83956a53e61de + languageName: node + linkType: hard + +"micromark@npm:^4.0.0": + version: 4.0.0 + resolution: "micromark@npm:4.0.0" + dependencies: + "@types/debug": "npm:^4.0.0" + debug: "npm:^4.0.0" + decode-named-character-reference: "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-core-commonmark: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-combine-extensions: "npm:^2.0.0" + micromark-util-decode-numeric-character-reference: "npm:^2.0.0" + micromark-util-encode: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-resolve-all: "npm:^2.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" + micromark-util-subtokenize: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/7e91c8d19ff27bc52964100853f1b3b32bb5b2ece57470a34ba1b2f09f4e2a183d90106c4ae585c9f2046969ee088576fed79b2f7061cba60d16652ccc2c64fd + languageName: node + linkType: hard + +"micromatch@npm:^4.0.4": + version: 4.0.7 + resolution: "micromatch@npm:4.0.7" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/58fa99bc5265edec206e9163a1d2cec5fabc46a5b473c45f4a700adce88c2520456ae35f2b301e4410fb3afb27e9521fb2813f6fc96be0a48a89430e0916a772 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.5": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: "npm:^3.0.2" + picomatch: "npm:^2.3.1" + checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + languageName: node + linkType: hard + +"miller-rabin@npm:^4.0.0": + version: 4.0.1 + resolution: "miller-rabin@npm:4.0.1" + dependencies: + bn.js: "npm:^4.0.0" + brorand: "npm:^1.0.1" + bin: + miller-rabin: bin/miller-rabin + checksum: 10c0/26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mime@npm:^3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + languageName: node + linkType: hard + +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf + languageName: node + linkType: hard + +"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + languageName: node + linkType: hard + +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.4": + version: 9.0.4 + resolution: "minimatch@npm:9.0.4" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/2c16f21f50e64922864e560ff97c587d15fd491f65d92a677a344e970fe62aafdbeafe648965fa96d33c061b4d0eabfe0213466203dd793367e7f28658cf6414 + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/9d702d57f556274286fdd97e406fc38a2f5c8d15e158b498d7393b1105974b21249289ec571fa2b51e038a4872bfc82710111cf75fae98c662f3d6f95e72152b + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mlly@npm:^1.2.0, mlly@npm:^1.6.1": + version: 1.6.1 + resolution: "mlly@npm:1.6.1" + dependencies: + acorn: "npm:^8.11.3" + pathe: "npm:^1.1.2" + pkg-types: "npm:^1.0.3" + ufo: "npm:^1.3.2" + checksum: 10c0/a7bf26b3d4f83b0f5a5232caa3af44be08b464f562f31c11d885d1bc2d43b7d717137d47b0c06fdc69e1b33ffc09f902b6d2b18de02c577849d40914e8785092 + languageName: node + linkType: hard + +"mobx@npm:^6.1.7": + version: 6.12.3 + resolution: "mobx@npm:6.12.3" + checksum: 10c0/33e1d27d33adea0ceb4de32eb66b4384e81a249be5e01baa6bf556f458fd62a83d23bfa0cf8ba9e87c28f0d810ae301ee0e7322fd48a3bf47db33ffb08d5826c + languageName: node + linkType: hard + +"modern-ahocorasick@npm:^1.0.0": + version: 1.0.1 + resolution: "modern-ahocorasick@npm:1.0.1" + checksum: 10c0/90ef4516ba8eef136d0cd4949faacdadee02217b8e25deda2881054ca8fcc32b985ef159b6e794c40e11c51040303c8e2975b20b23b86ec8a2a63516bbf93add + languageName: node + linkType: hard + +"mri@npm:^1.2.0": + version: 1.2.0 + resolution: "mri@npm:1.2.0" + checksum: 10c0/a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"multiformats@npm:^9.4.2": + version: 9.9.0 + resolution: "multiformats@npm:9.9.0" + checksum: 10c0/1fdb34fd2fb085142665e8bd402570659b50a5fae5994027e1df3add9e1ce1283ed1e0c2584a5c63ac0a58e871b8ee9665c4a99ca36ce71032617449d48aa975 + languageName: node + linkType: hard + +"nan@npm:^2.13.2": + version: 2.19.0 + resolution: "nan@npm:2.19.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/b8d05d75f92ee9d94affa50d0aa41b6c698254c848529452d7ab67c2e0d160a83f563bfe2cbd53e077944eceb48c757f83c93634c7c9ff404c9ec1ed4e5ced1a + languageName: node + linkType: hard + +"nanoid@npm:^3.3.6": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + languageName: node + linkType: hard + +"napi-wasm@npm:^1.1.0": + version: 1.1.0 + resolution: "napi-wasm@npm:1.1.0" + checksum: 10c0/074df6b5b72698f07b39ca3c448a3fcbaf8e6e78521f0cb3aefd8c2f059d69eae0e3bfe367b4aa3df1976c25e351e4e52a359f22fb2c379eb6781bfa042f582b + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + +"next@npm:^13": + version: 13.5.6 + resolution: "next@npm:13.5.6" + dependencies: + "@next/env": "npm:13.5.6" + "@next/swc-darwin-arm64": "npm:13.5.6" + "@next/swc-darwin-x64": "npm:13.5.6" + "@next/swc-linux-arm64-gnu": "npm:13.5.6" + "@next/swc-linux-arm64-musl": "npm:13.5.6" + "@next/swc-linux-x64-gnu": "npm:13.5.6" + "@next/swc-linux-x64-musl": "npm:13.5.6" + "@next/swc-win32-arm64-msvc": "npm:13.5.6" + "@next/swc-win32-ia32-msvc": "npm:13.5.6" + "@next/swc-win32-x64-msvc": "npm:13.5.6" + "@swc/helpers": "npm:0.5.2" + busboy: "npm:1.6.0" + caniuse-lite: "npm:^1.0.30001406" + postcss: "npm:8.4.31" + styled-jsx: "npm:5.1.1" + watchpack: "npm:2.4.0" + peerDependencies: + "@opentelemetry/api": ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + dependenciesMeta: + "@next/swc-darwin-arm64": + optional: true + "@next/swc-darwin-x64": + optional: true + "@next/swc-linux-arm64-gnu": + optional: true + "@next/swc-linux-arm64-musl": + optional: true + "@next/swc-linux-x64-gnu": + optional: true + "@next/swc-linux-x64-musl": + optional: true + "@next/swc-win32-arm64-msvc": + optional: true + "@next/swc-win32-ia32-msvc": + optional: true + "@next/swc-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + sass: + optional: true + bin: + next: dist/bin/next + checksum: 10c0/ef141d7708a432aff8bf080d285c466a83b0c1d008d1c66bbd49652a598f9ac15ef2e69a045f21ba44a5543b595cb945468b5f33e25deae2cc48b4d32be5bcec + languageName: node + linkType: hard + +"nock@npm:13.5.4": + version: 13.5.4 + resolution: "nock@npm:13.5.4" + dependencies: + debug: "npm:^4.1.0" + json-stringify-safe: "npm:^5.0.1" + propagate: "npm:^2.0.0" + checksum: 10c0/9ca47d9d7e4b1f4adf871d7ca12722f8ef1dc7d2b9610b2568f5d9264eae9f424baa24fd9d91da9920b360d641b4243e89de198bd22c061813254a99cc6252af + languageName: node + linkType: hard + +"node-addon-api@npm:^2.0.0": + version: 2.0.2 + resolution: "node-addon-api@npm:2.0.2" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/ade6c097ba829fa4aee1ca340117bb7f8f29fdae7b777e343a9d5cbd548481d1f0894b7b907d23ce615c70d932e8f96154caed95c3fa935cfe8cf87546510f64 + languageName: node + linkType: hard + +"node-addon-api@npm:^7.0.0": + version: 7.1.0 + resolution: "node-addon-api@npm:7.1.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/2e096ab079e3c46d33b0e252386e9c239c352f7cc6d75363d9a3c00bdff34c1a5da170da861917512843f213c32d024ced9dc9552b968029786480d18727ec66 + languageName: node + linkType: hard + +"node-fetch-native@npm:^1.6.1, node-fetch-native@npm:^1.6.2, node-fetch-native@npm:^1.6.3": + version: 1.6.4 + resolution: "node-fetch-native@npm:1.6.4" + checksum: 10c0/78334dc6def5d1d95cfe87b33ac76c4833592c5eb84779ad2b0c23c689f9dd5d1cfc827035ada72d6b8b218f717798968c5a99aeff0a1a8bf06657e80592f9c3 + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"node-forge@npm:^1.3.1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.3.0": + version: 4.8.0 + resolution: "node-gyp-build@npm:4.8.0" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 10c0/85324be16f81f0235cbbc42e3eceaeb1b5ab94c8d8f5236755e1435b4908338c65a4e75f66ee343cbcb44ddf9b52a428755bec16dcd983295be4458d95c8e1ad + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.1.0 + resolution: "node-gyp@npm:10.1.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^3.0.0" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/9cc821111ca244a01fb7f054db7523ab0a0cd837f665267eb962eb87695d71fb1e681f9e21464cc2fd7c05530dc4c81b810bca1a88f7d7186909b74477491a3c + languageName: node + linkType: hard + +"node-gzip@npm:^1.1.2": + version: 1.1.2 + resolution: "node-gzip@npm:1.1.2" + checksum: 10c0/c7aec81659bf69065bcfecb596293aaa3bd115ba328a2188a257f3640799f5ae8157ce82d93c17500494c695ff16e718308353ac628a9353679b2353f9e93402 + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/a069c7c736767121242037a22a788863accfa932ab285a1eb569eb8cd534b09d17206f68c37f096ae785647435e0c5a5a0a67b42ec743e481a455e5ae6a6df81 + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"npm-run-path@npm:^5.1.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" + dependencies: + path-key: "npm:^4.0.0" + checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba + languageName: node + linkType: hard + +"object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.1": + version: 1.13.1 + resolution: "object-inspect@npm:1.13.1" + checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d + languageName: node + linkType: hard + +"object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 + languageName: node + linkType: hard + +"object.entries@npm:^1.1.7, object.entries@npm:^1.1.8": + version: 1.1.8 + resolution: "object.entries@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/db9ea979d2956a3bc26c262da4a4d212d36f374652cc4c13efdd069c1a519c16571c137e2893d1c46e1cb0e15c88fd6419eaf410c945f329f09835487d7e65d3 + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.7, object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.1": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + checksum: 10c0/60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c + languageName: node + linkType: hard + +"object.hasown@npm:^1.1.4": + version: 1.1.4 + resolution: "object.hasown@npm:1.1.4" + dependencies: + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/f23187b08d874ef1aea060118c8259eb7f99f93c15a50771d710569534119062b90e087b92952b2d0fb1bb8914d61fb0b43c57fb06f622aaad538fe6868ab987 + languageName: node + linkType: hard + +"object.values@npm:^1.1.6, object.values@npm:^1.1.7, object.values@npm:^1.2.0": + version: 1.2.0 + resolution: "object.values@npm:1.2.0" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/15809dc40fd6c5529501324fec5ff08570b7d70fb5ebbe8e2b3901afec35cf2b3dc484d1210c6c642cd3e7e0a5e18dd1d6850115337fef46bdae14ab0cb18ac3 + languageName: node + linkType: hard + +"ofetch@npm:^1.3.3": + version: 1.3.4 + resolution: "ofetch@npm:1.3.4" + dependencies: + destr: "npm:^2.0.3" + node-fetch-native: "npm:^1.6.3" + ufo: "npm:^1.5.3" + checksum: 10c0/39855005c3f8aa11c11d3a3b0c4366b67d316da58633f4cf5d4a5af0a61495fd68699f355e70deda70355ead25f27b41c3bde2fdd1d24ce3f85ac79608dd8677 + languageName: node + linkType: hard + +"ohash@npm:^1.1.3": + version: 1.1.3 + resolution: "ohash@npm:1.1.3" + checksum: 10c0/928f5bdbd8cd73f90cf544c0533dbda8e0a42d9b8c7454ab89e64e4d11bc85f85242830b4e107426ce13dc4dd3013286f8f5e0c84abd8942a014b907d9692540 + languageName: node + linkType: hard + +"on-exit-leak-free@npm:^0.2.0": + version: 0.2.0 + resolution: "on-exit-leak-free@npm:0.2.0" + checksum: 10c0/d4e1f0bea59f39aa435baaee7d76955527e245538cffc1d7bb0c165ae85e37f67690aa9272247ced17bad76052afdb45faf5ea304a2248e070202d4554c4e30c + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: "npm:^4.0.0" + checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c + languageName: node + linkType: hard + +"optionator@npm:^0.9.1": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"pako@npm:^2.0.2": + version: 2.1.0 + resolution: "pako@npm:2.1.0" + checksum: 10c0/8e8646581410654b50eb22a5dfd71159cae98145bd5086c9a7a816ec0370b5f72b4648d08674624b3870a521e6a3daffd6c2f7bc00fdefc7063c9d8232ff5116 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.7": + version: 5.1.7 + resolution: "parse-asn1@npm:5.1.7" + dependencies: + asn1.js: "npm:^4.10.1" + browserify-aes: "npm:^1.2.0" + evp_bytestokey: "npm:^1.0.3" + hash-base: "npm:~3.0" + pbkdf2: "npm:^3.1.2" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/05eb5937405c904eb5a7f3633bab1acc11f4ae3478a07ef5c6d81ce88c3c0e505ff51f9c7b935ebc1265c868343793698fc91025755a895d0276f620f95e8a82 + languageName: node + linkType: hard + +"parse-entities@npm:^4.0.0": + version: 4.0.1 + resolution: "parse-entities@npm:4.0.1" + dependencies: + "@types/unist": "npm:^2.0.0" + character-entities: "npm:^2.0.0" + character-entities-legacy: "npm:^3.0.0" + character-reference-invalid: "npm:^2.0.0" + decode-named-character-reference: "npm:^1.0.0" + is-alphanumerical: "npm:^2.0.0" + is-decimal: "npm:^2.0.0" + is-hexadecimal: "npm:^2.0.0" + checksum: 10c0/9dfa3b0dc43a913c2558c4bd625b1abcc2d6c6b38aa5724b141ed988471977248f7ad234eed57e1bc70b694dd15b0d710a04f66c2f7c096e35abd91962b7d926 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 + languageName: node + linkType: hard + +"pbkdf2@npm:^3.0.3, pbkdf2@npm:^3.1.2": + version: 3.1.2 + resolution: "pbkdf2@npm:3.1.2" + dependencies: + create-hash: "npm:^1.1.2" + create-hmac: "npm:^1.1.4" + ripemd160: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0": + version: 1.0.0 + resolution: "picocolors@npm:1.0.0" + checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"pino-abstract-transport@npm:v0.5.0": + version: 0.5.0 + resolution: "pino-abstract-transport@npm:0.5.0" + dependencies: + duplexify: "npm:^4.1.2" + split2: "npm:^4.0.0" + checksum: 10c0/0d0e30399028ec156642b4cdfe1a040b9022befdc38e8f85935d1837c3da6050691888038433f88190d1a1eff5d90abe17ff7e6edffc09baa2f96e51b6808183 + languageName: node + linkType: hard + +"pino-std-serializers@npm:^4.0.0": + version: 4.0.0 + resolution: "pino-std-serializers@npm:4.0.0" + checksum: 10c0/9e8ccac9ce04a27ccc7aa26481d431b9e037d866b101b89d895c60b925baffb82685e84d5c29b05d8e3d7c146d766a9b08949cb24ab1ec526a16134c9962d649 + languageName: node + linkType: hard + +"pino@npm:7.11.0": + version: 7.11.0 + resolution: "pino@npm:7.11.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + fast-redact: "npm:^3.0.0" + on-exit-leak-free: "npm:^0.2.0" + pino-abstract-transport: "npm:v0.5.0" + pino-std-serializers: "npm:^4.0.0" + process-warning: "npm:^1.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.1.0" + safe-stable-stringify: "npm:^2.1.0" + sonic-boom: "npm:^2.2.1" + thread-stream: "npm:^0.15.1" + bin: + pino: bin.js + checksum: 10c0/4cc1ed9d25a4bc5d61c836a861279fa0039159b8f2f37ec337e50b0a61f3980dab5d2b1393daec26f68a19c423262649f0818654c9ad102c35310544a202c62c + languageName: node + linkType: hard + +"pkg-types@npm:^1.0.3": + version: 1.0.3 + resolution: "pkg-types@npm:1.0.3" + dependencies: + jsonc-parser: "npm:^3.2.0" + mlly: "npm:^1.2.0" + pathe: "npm:^1.1.0" + checksum: 10c0/7f692ff2005f51b8721381caf9bdbc7f5461506ba19c34f8631660a215c8de5e6dca268f23a319dd180b8f7c47a0dc6efea14b376c485ff99e98d810b8f786c4 + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd + languageName: node + linkType: hard + +"postcss@npm:8.4.31": + version: 8.4.31 + resolution: "postcss@npm:8.4.31" + dependencies: + nanoid: "npm:^3.3.6" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.0.2" + checksum: 10c0/748b82e6e5fc34034dcf2ae88ea3d11fd09f69b6c50ecdd3b4a875cfc7cdca435c958b211e2cb52355422ab6fccb7d8f2f2923161d7a1b281029e4a913d59acf + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc + languageName: node + linkType: hard + +"proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"process-warning@npm:^1.0.0": + version: 1.0.0 + resolution: "process-warning@npm:1.0.0" + checksum: 10c0/43ec4229d64eb5c58340c8aacade49eb5f6fd513eae54140abf365929ca20987f0a35c5868125e2b583cad4de8cd257beb5667d9cc539d9190a7a4c3014adf22 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + languageName: node + linkType: hard + +"propagate@npm:^2.0.0": + version: 2.0.1 + resolution: "propagate@npm:2.0.1" + checksum: 10c0/01e1023b60ae4050d1a2783f976d7db702022dbdb70dba797cceedad8cfc01b3939c41e77032f8c32aa9d93192fe937ebba1345e8604e5ce61fd3b62ee3003b8 + languageName: node + linkType: hard + +"property-information@npm:^6.0.0": + version: 6.5.0 + resolution: "property-information@npm:6.5.0" + checksum: 10c0/981e0f9cc2e5acdb414a6fd48a99dd0fd3a4079e7a91ab41cf97a8534cf43e0e0bc1ffada6602a1b3d047a33db8b5fc2ef46d863507eda712d5ceedac443f0ef + languageName: node + linkType: hard + +"protobufjs@npm:^6.11.2, protobufjs@npm:^6.8.8, protobufjs@npm:~6.11.2, protobufjs@npm:~6.11.3": + version: 6.11.4 + resolution: "protobufjs@npm:6.11.4" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/long": "npm:^4.0.1" + "@types/node": "npm:>=13.7.0" + long: "npm:^4.0.0" + bin: + pbjs: bin/pbjs + pbts: bin/pbts + checksum: 10c0/c244d7b9b6d3258193da5c0d1e558dfb47f208ae345e209f90ec45c9dca911b90fa17e937892a9a39a4136ab9886981aae9efdf6039f7baff4f7225f5eeb9812 + languageName: node + linkType: hard + +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b + languageName: node + linkType: hard + +"public-encrypt@npm:^4.0.0": + version: 4.0.3 + resolution: "public-encrypt@npm:4.0.3" + dependencies: + bn.js: "npm:^4.1.0" + browserify-rsa: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + parse-asn1: "npm:^5.0.0" + randombytes: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.0 + resolution: "pump@npm:3.0.0" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/bbdeda4f747cdf47db97428f3a135728669e56a0ae5f354a9ac5b74556556f5446a46f720a8f14ca2ece5be9b4d5d23c346db02b555f46739934cc6c093a5478 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"query-string@npm:7.1.3": + version: 7.1.3 + resolution: "query-string@npm:7.1.3" + dependencies: + decode-uri-component: "npm:^0.2.2" + filter-obj: "npm:^1.1.0" + split-on-first: "npm:^1.0.0" + strict-uri-encode: "npm:^2.0.0" + checksum: 10c0/a896c08e9e0d4f8ffd89a572d11f668c8d0f7df9c27c6f49b92ab31366d3ba0e9c331b9a620ee747893436cd1f2f821a6327e2bc9776bde2402ac6c270b801b2 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"quick-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 10c0/fe5acc6f775b172ca5b4373df26f7e4fd347975578199e7d74b2ae4077f0af05baa27d231de1e80e8f72d88275ccc6028568a7a8c9ee5e7368ace0e18eff93a4 + languageName: node + linkType: hard + +"radix3@npm:^1.1.0": + version: 1.1.2 + resolution: "radix3@npm:1.1.2" + checksum: 10c0/d4a295547f71af079868d2c2ed3814a9296ee026c5488212d58c106e6b4797c6eaec1259b46c9728913622f2240c9a944bfc8e2b3b5f6e4a5045338b1609f1e4 + languageName: node + linkType: hard + +"rainbow-sprinkles@npm:^0.17.2": + version: 0.17.2 + resolution: "rainbow-sprinkles@npm:0.17.2" + peerDependencies: + "@vanilla-extract/css": ^1 + "@vanilla-extract/dynamic": ^2 + checksum: 10c0/c7ab7955592860afaab023f75b20c82d5f6242c766a8b2c42cd5794082ef51b25411c6c2f22f46525791ef8104c95dc13d72772904d37382564aed3a229684ef + languageName: node + linkType: hard + +"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + languageName: node + linkType: hard + +"randomfill@npm:^1.0.3": + version: 1.0.4 + resolution: "randomfill@npm:1.0.4" + dependencies: + randombytes: "npm:^2.0.5" + safe-buffer: "npm:^5.1.0" + checksum: 10c0/11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c + languageName: node + linkType: hard + +"react-ace@npm:11.0.1": + version: 11.0.1 + resolution: "react-ace@npm:11.0.1" + dependencies: + ace-builds: "npm:^1.32.8" + diff-match-patch: "npm:^1.0.5" + lodash.get: "npm:^4.4.2" + lodash.isequal: "npm:^4.5.0" + prop-types: "npm:^15.8.1" + peerDependencies: + react: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/fa8acd2dc977d5edf6d99e238429c696c3cb4f35fb9f78b296cff875a399b12c6672618f34495be00c6d96ca877c3e30f37c5235b9b3878f65d19aa0ed5dab69 + languageName: node + linkType: hard + +"react-aria@npm:^3.33.1": + version: 3.34.1 + resolution: "react-aria@npm:3.34.1" + dependencies: + "@internationalized/string": "npm:^3.2.3" + "@react-aria/breadcrumbs": "npm:^3.5.15" + "@react-aria/button": "npm:^3.9.7" + "@react-aria/calendar": "npm:^3.5.10" + "@react-aria/checkbox": "npm:^3.14.5" + "@react-aria/combobox": "npm:^3.10.1" + "@react-aria/datepicker": "npm:^3.11.1" + "@react-aria/dialog": "npm:^3.5.16" + "@react-aria/dnd": "npm:^3.7.1" + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/gridlist": "npm:^3.9.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/label": "npm:^3.7.10" + "@react-aria/link": "npm:^3.7.3" + "@react-aria/listbox": "npm:^3.13.1" + "@react-aria/menu": "npm:^3.15.1" + "@react-aria/meter": "npm:^3.4.15" + "@react-aria/numberfield": "npm:^3.11.5" + "@react-aria/overlays": "npm:^3.23.1" + "@react-aria/progress": "npm:^3.4.15" + "@react-aria/radio": "npm:^3.10.6" + "@react-aria/searchfield": "npm:^3.7.7" + "@react-aria/select": "npm:^3.14.7" + "@react-aria/selection": "npm:^3.19.1" + "@react-aria/separator": "npm:^3.4.1" + "@react-aria/slider": "npm:^3.7.10" + "@react-aria/ssr": "npm:^3.9.5" + "@react-aria/switch": "npm:^3.6.6" + "@react-aria/table": "npm:^3.15.1" + "@react-aria/tabs": "npm:^3.9.3" + "@react-aria/tag": "npm:^3.4.3" + "@react-aria/textfield": "npm:^3.14.7" + "@react-aria/tooltip": "npm:^3.7.6" + "@react-aria/utils": "npm:^3.25.1" + "@react-aria/visually-hidden": "npm:^3.8.14" + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/69883cf03802eada811926929d6e45e1485a546043aafbf0a84886ad2cb3c295bef25311b1796794f2e0f410500636ca4197ba33f1842f1d608adda7cbba4a25 + languageName: node + linkType: hard + +"react-dom@npm:18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 10c0/66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + languageName: node + linkType: hard + +"react-dropzone@npm:^14.2.3": + version: 14.2.3 + resolution: "react-dropzone@npm:14.2.3" + dependencies: + attr-accept: "npm:^2.2.2" + file-selector: "npm:^0.6.0" + prop-types: "npm:^15.8.1" + peerDependencies: + react: ">= 16.8 || 18.0.0" + checksum: 10c0/6433517c53309aca1bb4f4a535aeee297345ca1e11b123676f46c7682ffab34a3428cbda106448fc92b5c9a5e0fa5d225bc188adebcd4d302366bf6b1f9c3fc1 + languageName: node + linkType: hard + +"react-icons@npm:4.4.0": + version: 4.4.0 + resolution: "react-icons@npm:4.4.0" + peerDependencies: + react: "*" + checksum: 10c0/8daeae11e4b989eebcb97b9fdf3a743607b76b637d2eece309f6274f3a85b9c720313956cfabe220628324abf50b9b01823f65ac9cf71b8a816e440d2fca5293 + languageName: node + linkType: hard + +"react-icons@npm:5.2.1": + version: 5.2.1 + resolution: "react-icons@npm:5.2.1" + peerDependencies: + react: "*" + checksum: 10c0/9d52b975afaf27dab07dcaefd50497ba43cc57076fc26ccac5142965e01c7fd0c503a62ea31c3bb710e0b2959a4620c2fed12c3c86960ad8ceb63de7f0085f3a + languageName: node + linkType: hard + +"react-is@npm:^16.13.1": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + languageName: node + linkType: hard + +"react-markdown@npm:9.0.1": + version: 9.0.1 + resolution: "react-markdown@npm:9.0.1" + dependencies: + "@types/hast": "npm:^3.0.0" + devlop: "npm:^1.0.0" + hast-util-to-jsx-runtime: "npm:^2.0.0" + html-url-attributes: "npm:^3.0.0" + mdast-util-to-hast: "npm:^13.0.0" + remark-parse: "npm:^11.0.0" + remark-rehype: "npm:^11.0.0" + unified: "npm:^11.0.0" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.0" + peerDependencies: + "@types/react": ">=18" + react: ">=18" + checksum: 10c0/3a3895dbd56647bc864b8da46dd575e71a9e609eb1e43fea8e8e6209d86e208eddd5b07bf8d7b5306a194b405440760a8d134aebd5a4ce5dc7dee4299e84db96 + languageName: node + linkType: hard + +"react-stately@npm:^3.31.1": + version: 3.32.1 + resolution: "react-stately@npm:3.32.1" + dependencies: + "@react-stately/calendar": "npm:^3.5.3" + "@react-stately/checkbox": "npm:^3.6.7" + "@react-stately/collections": "npm:^3.10.9" + "@react-stately/combobox": "npm:^3.9.1" + "@react-stately/data": "npm:^3.11.6" + "@react-stately/datepicker": "npm:^3.10.1" + "@react-stately/dnd": "npm:^3.4.1" + "@react-stately/form": "npm:^3.0.5" + "@react-stately/list": "npm:^3.10.7" + "@react-stately/menu": "npm:^3.8.1" + "@react-stately/numberfield": "npm:^3.9.5" + "@react-stately/overlays": "npm:^3.6.9" + "@react-stately/radio": "npm:^3.10.6" + "@react-stately/searchfield": "npm:^3.5.5" + "@react-stately/select": "npm:^3.6.6" + "@react-stately/selection": "npm:^3.16.1" + "@react-stately/slider": "npm:^3.5.6" + "@react-stately/table": "npm:^3.12.1" + "@react-stately/tabs": "npm:^3.6.8" + "@react-stately/toggle": "npm:^3.7.6" + "@react-stately/tooltip": "npm:^3.4.11" + "@react-stately/tree": "npm:^3.8.3" + "@react-types/shared": "npm:^3.24.1" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10c0/26343451f2f66e1f53e5080d8ad771be8a179cc327c19bafcb006fd0a085deeac4d278d2a1141d15fd041590be02278314b9d1ff609f6ab731813570aab27693 + languageName: node + linkType: hard + +"react@npm:18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + languageName: node + linkType: hard + +"readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.8": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"readonly-date@npm:^1.0.0": + version: 1.0.0 + resolution: "readonly-date@npm:1.0.0" + checksum: 10c0/7ab32bf19f6bfec102584a524fa79a289e6ede0bf20c80fd90ab309962e45b71d19dd0e3915dff6e81edf226f08fda65e890539b4aca74668921790b10471356 + languageName: node + linkType: hard + +"real-require@npm:^0.1.0": + version: 0.1.0 + resolution: "real-require@npm:0.1.0" + checksum: 10c0/c0f8ae531d1f51fe6343d47a2a1e5756e19b65a81b4a9642b9ebb4874e0d8b5f3799bc600bf4592838242477edc6f57778593f21b71d90f8ad0d8a317bbfae1c + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.4": + version: 1.0.6 + resolution: "reflect.getprototypeof@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.1" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + which-builtin-type: "npm:^1.1.3" + checksum: 10c0/baf4ef8ee6ff341600f4720b251cf5a6cb552d6a6ab0fdc036988c451bf16f920e5feb0d46bd4f530a5cce568f1f7aca2d77447ca798920749cfc52783c39b55 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" + dependencies: + call-bind: "npm:^1.0.6" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.1" + checksum: 10c0/0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552 + languageName: node + linkType: hard + +"regexpp@npm:^3.2.0": + version: 3.2.0 + resolution: "regexpp@npm:3.2.0" + checksum: 10c0/d1da82385c8754a1681416b90b9cca0e21b4a2babef159099b88f640637d789c69011d0bc94705dacab85b81133e929d027d85210e8b8b03f8035164dbc14710 + languageName: node + linkType: hard + +"remark-parse@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-parse@npm:11.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/6eed15ddb8680eca93e04fcb2d1b8db65a743dcc0023f5007265dda558b09db595a087f622062ccad2630953cd5cddc1055ce491d25a81f3317c858348a8dd38 + languageName: node + linkType: hard + +"remark-rehype@npm:^11.0.0": + version: 11.1.0 + resolution: "remark-rehype@npm:11.1.0" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + mdast-util-to-hast: "npm:^13.0.0" + unified: "npm:^11.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/7a9534847ea70e78cf09227a4302af7e491f625fd092351a1b1ee27a2de0a369ac4acf069682e8a8ec0a55847b3e83f0be76b2028aa90e98e69e21420b9794c3 + languageName: node + linkType: hard + +"remove-accents@npm:0.5.0": + version: 0.5.0 + resolution: "remove-accents@npm:0.5.0" + checksum: 10c0/a75321aa1b53d9abe82637115a492770bfe42bb38ed258be748bf6795871202bc8b4badff22013494a7029f5a241057ad8d3f72adf67884dbe15a9e37e87adc4 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab + languageName: node + linkType: hard + +"resolve@npm:^1.22.4": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.5": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": + version: 2.0.2 + resolution: "ripemd160@npm:2.0.2" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + checksum: 10c0/f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"rxjs@npm:^7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.2": + version: 1.1.2 + resolution: "safe-array-concat@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9 + languageName: node + linkType: hard + +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.1.4" + checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 + languageName: node + linkType: hard + +"safe-stable-stringify@npm:^2.1.0": + version: 2.4.3 + resolution: "safe-stable-stringify@npm:2.4.3" + checksum: 10c0/81dede06b8f2ae794efd868b1e281e3c9000e57b39801c6c162267eb9efda17bd7a9eafa7379e1f1cacd528d4ced7c80d7460ad26f62ada7c9e01dec61b2e768 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"scheduler@npm:^0.23.0": + version: 0.23.0 + resolution: "scheduler@npm:0.23.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd + languageName: node + linkType: hard + +"scrypt-js@npm:3.0.1": + version: 3.0.1 + resolution: "scrypt-js@npm:3.0.1" + checksum: 10c0/e2941e1c8b5c84c7f3732b0153fee624f5329fc4e772a06270ee337d4d2df4174b8abb5e6ad53804a29f53890ecbc78f3775a319323568c0313040c0e55f5b10 + languageName: node + linkType: hard + +"secp256k1@npm:^4.0.2": + version: 4.0.3 + resolution: "secp256k1@npm:4.0.3" + dependencies: + elliptic: "npm:^6.5.4" + node-addon-api: "npm:^2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + checksum: 10c0/de0a0e525a6f8eb2daf199b338f0797dbfe5392874285a145bb005a72cabacb9d42c0197d0de129a1a0f6094d2cc4504d1f87acb6a8bbfb7770d4293f252c401 + languageName: node + linkType: hard + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.5.0": + version: 7.6.0 + resolution: "semver@npm:7.6.0" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10c0/fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53 + languageName: node + linkType: hard + +"semver@npm:^7.3.7": + version: 7.6.2 + resolution: "semver@npm:7.6.2" + bin: + semver: bin/semver.js + checksum: 10c0/97d3441e97ace8be4b1976433d1c32658f6afaff09f143e52c593bae7eef33de19e3e369c88bd985ce1042c6f441c80c6803078d1de2a9988080b66684cbb30c + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.1": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.11, sha.js@npm:^2.4.8": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + bin: + sha.js: ./bin.js + checksum: 10c0/b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.3 + resolution: "socks-proxy-agent@npm:8.0.3" + dependencies: + agent-base: "npm:^7.1.1" + debug: "npm:^4.3.4" + socks: "npm:^2.7.1" + checksum: 10c0/4950529affd8ccd6951575e21c1b7be8531b24d924aa4df3ee32df506af34b618c4e50d261f4cc603f1bfd8d426915b7d629966c8ce45b05fb5ad8c8b9a6459d + languageName: node + linkType: hard + +"socks@npm:^2.7.1": + version: 2.8.3 + resolution: "socks@npm:2.8.3" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/d54a52bf9325165770b674a67241143a3d8b4e4c8884560c4e0e078aace2a728dffc7f70150660f51b85797c4e1a3b82f9b7aa25e0a0ceae1a243365da5c51a7 + languageName: node + linkType: hard + +"sonic-boom@npm:^2.2.1": + version: 2.8.0 + resolution: "sonic-boom@npm:2.8.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + checksum: 10c0/6b40f2e91a999819b1dc24018a5d1c8b74e66e5d019eabad17d5b43fc309b32255b7c405ed6ec885693c8f2b969099ce96aeefde027180928bc58c034234a86d + languageName: node + linkType: hard + +"source-map-js@npm:^1.0.2": + version: 1.2.0 + resolution: "source-map-js@npm:1.2.0" + checksum: 10c0/7e5f896ac10a3a50fe2898e5009c58ff0dc102dcb056ed27a354623a0ece8954d4b2649e1a1b2b52ef2e161d26f8859c7710350930751640e71e374fe2d321a4 + languageName: node + linkType: hard + +"space-separated-tokens@npm:^2.0.0": + version: 2.0.2 + resolution: "space-separated-tokens@npm:2.0.2" + checksum: 10c0/6173e1d903dca41dcab6a2deed8b4caf61bd13b6d7af8374713500570aa929ff9414ae09a0519f4f8772df993300305a395d4871f35bc4ca72b6db57e1f30af8 + languageName: node + linkType: hard + +"split-on-first@npm:^1.0.0": + version: 1.1.0 + resolution: "split-on-first@npm:1.1.0" + checksum: 10c0/56df8344f5a5de8521898a5c090023df1d8b8c75be6228f56c52491e0fc1617a5236f2ac3a066adb67a73231eac216ccea7b5b4a2423a543c277cb2f48d24c29 + languageName: node + linkType: hard + +"split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.6 + resolution: "ssri@npm:10.0.6" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/e5a1e23a4057a86a97971465418f22ea89bd439ac36ade88812dd920e4e61873e8abd6a9b72a03a67ef50faa00a2daf1ab745c5a15b46d03e0544a0296354227 + languageName: node + linkType: hard + +"std-env@npm:^3.7.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 10c0/60edf2d130a4feb7002974af3d5a5f3343558d1ccf8d9b9934d225c638606884db4a20d2fe6440a09605bca282af6b042ae8070a10490c0800d69e82e478f41e + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.2": + version: 1.0.3 + resolution: "stream-shift@npm:1.0.3" + checksum: 10c0/939cd1051ca750d240a0625b106a2b988c45fb5a3be0cebe9a9858cb01bc1955e8c7b9fac17a9462976bea4a7b704e317c5c2200c70f0ca715a3363b9aa4fd3b + languageName: node + linkType: hard + +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 10c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab + languageName: node + linkType: hard + +"strict-uri-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "strict-uri-encode@npm:2.0.0" + checksum: 10c0/010cbc78da0e2cf833b0f5dc769e21ae74cdc5d5f5bd555f14a4a4876c8ad2c85ab8b5bdf9a722dc71a11dcd3184085e1c3c0bd50ec6bb85fffc0f28cf82597d + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.11": + version: 4.0.11 + resolution: "string.prototype.matchall@npm:4.0.11" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + regexp.prototype.flags: "npm:^1.5.2" + set-function-name: "npm:^2.0.2" + side-channel: "npm:^1.0.6" + checksum: 10c0/915a2562ac9ab5e01b7be6fd8baa0b2b233a0a9aa975fcb2ec13cc26f08fb9a3e85d5abdaa533c99c6fc4c5b65b914eba3d80c4aff9792a4c9fed403f28f7d9d + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.9": + version: 1.2.9 + resolution: "string.prototype.trim@npm:1.2.9" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimend@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: "npm:~5.1.0" + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"stringify-entities@npm:^4.0.0": + version: 4.0.4 + resolution: "stringify-entities@npm:4.0.4" + dependencies: + character-entities-html4: "npm:^2.0.0" + character-entities-legacy: "npm:^3.0.0" + checksum: 10c0/537c7e656354192406bdd08157d759cd615724e9d0873602d2c9b2f6a5c0a8d0b1d73a0a08677848105c5eebac6db037b57c0b3a4ec86331117fa7319ed50448 + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"style-to-object@npm:^1.0.0": + version: 1.0.6 + resolution: "style-to-object@npm:1.0.6" + dependencies: + inline-style-parser: "npm:0.2.3" + checksum: 10c0/be5e8e3f0e35c0338de4112b9d861db576a52ebbd97f2501f1fb2c900d05c8fc42c5114407fa3a7f8b39301146cd8ca03a661bf52212394125a9629d5b771aba + languageName: node + linkType: hard + +"styled-jsx@npm:5.1.1": + version: 5.1.1 + resolution: "styled-jsx@npm:5.1.1" + dependencies: + client-only: "npm:0.0.1" + peerDependencies: + react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" + peerDependenciesMeta: + "@babel/core": + optional: true + babel-plugin-macros: + optional: true + checksum: 10c0/42655cdadfa5388f8a48bb282d6b450df7d7b8cf066ac37038bd0499d3c9f084815ebd9ff9dfa12a218fd4441338851db79603498d7557207009c1cf4d609835 + languageName: node + linkType: hard + +"superjson@npm:^1.10.0": + version: 1.13.3 + resolution: "superjson@npm:1.13.3" + dependencies: + copy-anything: "npm:^3.0.2" + checksum: 10c0/389a0a0c86884dd0558361af5d6d7f37102b71dda9595a665fe8b39d1ba0e57c859e39a9bd79b6f1fde6f4dcceac49a1c205f248d292744b2a340ee52846efdb + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"symbol-observable@npm:^2.0.3": + version: 2.0.3 + resolution: "symbol-observable@npm:2.0.3" + checksum: 10c0/03fb8766b75bfa65a3c7d68ae1e51a13a5ff71b40d6d53b17a0c9c77b1685c20a3bfbf45547ab36214a079665c3f551e250798f6b2f83a2a40762d864ed87f78 + languageName: node + linkType: hard + +"system-architecture@npm:^0.1.0": + version: 0.1.0 + resolution: "system-architecture@npm:0.1.0" + checksum: 10c0/1969974ea5d31a9ac7c38f2657cfe8255b36f9e1d5ba3c58cb84c24fbeedf562778b8511f18a0abe6d70ae90148cfcaf145ecf26e37c0a53a3829076f3238cbb + languageName: node + linkType: hard + +"tabbable@npm:^6.0.0": + version: 6.2.0 + resolution: "tabbable@npm:6.2.0" + checksum: 10c0/ced8b38f05f2de62cd46836d77c2646c42b8c9713f5bd265daf0e78ff5ac73d3ba48a7ca45f348bafeef29b23da7187c72250742d37627883ef89cbd7fa76898 + languageName: node + linkType: hard + +"tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.2.1 + resolution: "tar@npm:6.2.1" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"thread-stream@npm:^0.15.1": + version: 0.15.2 + resolution: "thread-stream@npm:0.15.2" + dependencies: + real-require: "npm:^0.1.0" + checksum: 10c0/f92f1b5a9f3f35a72c374e3fecbde6f14d69d5325ad9ce88930af6ed9c7c1ec814367716b712205fa4f06242ae5dd97321ae2c00b43586590ed4fa861f3c29ae + languageName: node + linkType: hard + +"tiny-secp256k1@npm:^1.1.3": + version: 1.1.6 + resolution: "tiny-secp256k1@npm:1.1.6" + dependencies: + bindings: "npm:^1.3.0" + bn.js: "npm:^4.11.8" + create-hmac: "npm:^1.1.7" + elliptic: "npm:^6.4.0" + nan: "npm:^2.13.2" + node-gyp: "npm:latest" + checksum: 10c0/b47ceada38f6fa65190906e8a98b58d1584b0640383f04db8196a7098c726e926cfba6271a53e97d98d4c67e2b364618d7b3d7e402f63e44f0e07a4aca82ac8b + languageName: node + linkType: hard + +"tmp@npm:^0.2.1": + version: 0.2.3 + resolution: "tmp@npm:0.2.3" + checksum: 10c0/3e809d9c2f46817475b452725c2aaa5d11985cf18d32a7a970ff25b568438e2c076c2e8609224feef3b7923fa9749b74428e3e634f6b8e520c534eef2fd24125 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"toggle-selection@npm:^1.0.6": + version: 1.0.6 + resolution: "toggle-selection@npm:1.0.6" + checksum: 10c0/f2cf1f2c70f374fd87b0cdc8007453ba9e981c4305a8bf4eac10a30e62ecdfd28bca7d18f8f15b15a506bf8a7bfb20dbe3539f0fcf2a2c8396c1a78d53e1f179 + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"trim-lines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-lines@npm:3.0.1" + checksum: 10c0/3a1611fa9e52aa56a94c69951a9ea15b8aaad760eaa26c56a65330dc8adf99cb282fc07cc9d94968b7d4d88003beba220a7278bbe2063328eb23fb56f9509e94 + languageName: node + linkType: hard + +"trough@npm:^2.0.0": + version: 2.2.0 + resolution: "trough@npm:2.2.0" + checksum: 10c0/58b671fc970e7867a48514168894396dd94e6d9d6456aca427cc299c004fe67f35ed7172a36449086b2edde10e78a71a284ec0076809add6834fb8f857ccb9b0 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 + languageName: node + linkType: hard + +"tslib@npm:1.14.1, tslib@npm:^1.8.1": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:^2.1.0, tslib@npm:^2.4.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: "npm:^1.8.1" + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.6": + version: 1.0.6 + resolution: "typed-array-length@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77 + languageName: node + linkType: hard + +"typeforce@npm:^1.11.5": + version: 1.18.0 + resolution: "typeforce@npm:1.18.0" + checksum: 10c0/011f57effd9ae6d3dd8bb249e09b4ecadb2c2a3f803b27f977ac8b7782834855930bff971ba549bcd5a8cedc8136d8a977c0b7e050cc67deded948181b7ba3e8 + languageName: node + linkType: hard + +"typescript@npm:4.9.3": + version: 4.9.3 + resolution: "typescript@npm:4.9.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/bddcb0794f2b8aa52094b9de9d70848fdf46ccecac68403e1c407dc9f1a4e4e28979887acd648e1917b1144e5d8fbfb4c824309d8806d393b4194aa39c71fe5e + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A4.9.3#optional!builtin": + version: 4.9.3 + resolution: "typescript@patch:typescript@npm%3A4.9.3#optional!builtin::version=4.9.3&hash=a66ed4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/e5a7c3c6b75cf3eb2b6619fdc84f7ee434659413ace558da8b2c7270b21266be689ece5cf8e6bba529cdd3ea36d3c8ddac9c6d63e5f5c5224c1eac8785c92620 + languageName: node + linkType: hard + +"ufo@npm:^1.3.2, ufo@npm:^1.4.0, ufo@npm:^1.5.3": + version: 1.5.3 + resolution: "ufo@npm:1.5.3" + checksum: 10c0/1df10702582aa74f4deac4486ecdfd660e74be057355f1afb6adfa14243476cf3d3acff734ccc3d0b74e9bfdefe91d578f3edbbb0a5b2430fe93cd672370e024 + languageName: node + linkType: hard + +"uint8arrays@npm:^3.0.0, uint8arrays@npm:^3.1.0": + version: 3.1.1 + resolution: "uint8arrays@npm:3.1.1" + dependencies: + multiformats: "npm:^9.4.2" + checksum: 10c0/9946668e04f29b46bbb73cca3d190f63a2fbfe5452f8e6551ef4257d9d597b72da48fa895c15ef2ef772808a5335b3305f69da5f13a09f8c2924896b409565ff + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 + languageName: node + linkType: hard + +"uncrypto@npm:^0.1.3": + version: 0.1.3 + resolution: "uncrypto@npm:0.1.3" + checksum: 10c0/74a29afefd76d5b77bedc983559ceb33f5bbc8dada84ff33755d1e3355da55a4e03a10e7ce717918c436b4dfafde1782e799ebaf2aadd775612b49f7b5b2998e + languageName: node + linkType: hard + +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + +"undici-types@npm:~6.11.1": + version: 6.11.1 + resolution: "undici-types@npm:6.11.1" + checksum: 10c0/d8f5739a8e6c779d72336c82deb49c56d5ac9f9f6e0eb2e8dd4d3f6929ae9db7cde370d2e46516fe6cad04ea53e790c5e16c4c75eed7cd0f9bd31b0763bb2fa3 + languageName: node + linkType: hard + +"unenv@npm:^1.9.0": + version: 1.9.0 + resolution: "unenv@npm:1.9.0" + dependencies: + consola: "npm:^3.2.3" + defu: "npm:^6.1.3" + mime: "npm:^3.0.0" + node-fetch-native: "npm:^1.6.1" + pathe: "npm:^1.1.1" + checksum: 10c0/d00012badc83731c07f08d5129c702c49c0212375eb3732b27aae89ace3c67162dbaea4496965676f18fc06b0ec445d91385e283f5fd3e4540dda8b0b5424f81 + languageName: node + linkType: hard + +"unfetch@npm:^4.2.0": + version: 4.2.0 + resolution: "unfetch@npm:4.2.0" + checksum: 10c0/a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b + languageName: node + linkType: hard + +"unified@npm:^11.0.0": + version: 11.0.4 + resolution: "unified@npm:11.0.4" + dependencies: + "@types/unist": "npm:^3.0.0" + bail: "npm:^2.0.0" + devlop: "npm:^1.0.0" + extend: "npm:^3.0.0" + is-plain-obj: "npm:^4.0.0" + trough: "npm:^2.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/b550cdc994d54c84e2e098eb02cfa53535cbc140c148aa3296f235cb43082b499d239110f342fa65eb37ad919472a93cc62f062a83541485a69498084cc87ba1 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + languageName: node + linkType: hard + +"unist-util-is@npm:^6.0.0": + version: 6.0.0 + resolution: "unist-util-is@npm:6.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/9419352181eaa1da35eca9490634a6df70d2217815bb5938a04af3a662c12c5607a2f1014197ec9c426fbef18834f6371bfdb6f033040fa8aa3e965300d70e7e + languageName: node + linkType: hard + +"unist-util-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-position@npm:5.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/dde3b31e314c98f12b4dc6402f9722b2bf35e96a4f2d463233dd90d7cde2d4928074a7a11eff0a5eb1f4e200f27fc1557e0a64a7e8e4da6558542f251b1b7400 + languageName: node + linkType: hard + +"unist-util-remove-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-remove-position@npm:5.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-visit: "npm:^5.0.0" + checksum: 10c0/e8c76da4399446b3da2d1c84a97c607b37d03d1d92561e14838cbe4fdcb485bfc06c06cfadbb808ccb72105a80643976d0660d1fe222ca372203075be9d71105 + languageName: node + linkType: hard + +"unist-util-stringify-position@npm:^4.0.0": + version: 4.0.0 + resolution: "unist-util-stringify-position@npm:4.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/dfe1dbe79ba31f589108cb35e523f14029b6675d741a79dea7e5f3d098785045d556d5650ec6a8338af11e9e78d2a30df12b1ee86529cded1098da3f17ee999e + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^6.0.0": + version: 6.0.1 + resolution: "unist-util-visit-parents@npm:6.0.1" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-is: "npm:^6.0.0" + checksum: 10c0/51b1a5b0aa23c97d3e03e7288f0cdf136974df2217d0999d3de573c05001ef04cccd246f51d2ebdfb9e8b0ed2704451ad90ba85ae3f3177cf9772cef67f56206 + languageName: node + linkType: hard + +"unist-util-visit@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-visit@npm:5.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-is: "npm:^6.0.0" + unist-util-visit-parents: "npm:^6.0.0" + checksum: 10c0/51434a1d80252c1540cce6271a90fd1a106dbe624997c09ed8879279667fb0b2d3a685e02e92bf66598dcbe6cdffa7a5f5fb363af8fdf90dda6c855449ae39a5 + languageName: node + linkType: hard + +"unstorage@npm:^1.9.0": + version: 1.10.2 + resolution: "unstorage@npm:1.10.2" + dependencies: + anymatch: "npm:^3.1.3" + chokidar: "npm:^3.6.0" + destr: "npm:^2.0.3" + h3: "npm:^1.11.1" + listhen: "npm:^1.7.2" + lru-cache: "npm:^10.2.0" + mri: "npm:^1.2.0" + node-fetch-native: "npm:^1.6.2" + ofetch: "npm:^1.3.3" + ufo: "npm:^1.4.0" + peerDependencies: + "@azure/app-configuration": ^1.5.0 + "@azure/cosmos": ^4.0.0 + "@azure/data-tables": ^13.2.2 + "@azure/identity": ^4.0.1 + "@azure/keyvault-secrets": ^4.8.0 + "@azure/storage-blob": ^12.17.0 + "@capacitor/preferences": ^5.0.7 + "@netlify/blobs": ^6.5.0 || ^7.0.0 + "@planetscale/database": ^1.16.0 + "@upstash/redis": ^1.28.4 + "@vercel/kv": ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + "@azure/app-configuration": + optional: true + "@azure/cosmos": + optional: true + "@azure/data-tables": + optional: true + "@azure/identity": + optional: true + "@azure/keyvault-secrets": + optional: true + "@azure/storage-blob": + optional: true + "@capacitor/preferences": + optional: true + "@netlify/blobs": + optional: true + "@planetscale/database": + optional: true + "@upstash/redis": + optional: true + "@vercel/kv": + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + checksum: 10c0/89d61e6b2165ddc78005b8a4a340576877b56b70ec0b318f7cf2e74ee7ab19006036267ba28587100fa7256c573db3bd720700daf6586bbdcad4ed60b64c4284 + languageName: node + linkType: hard + +"untun@npm:^0.1.3": + version: 0.1.3 + resolution: "untun@npm:0.1.3" + dependencies: + citty: "npm:^0.1.5" + consola: "npm:^3.2.3" + pathe: "npm:^1.1.1" + bin: + untun: bin/untun.mjs + checksum: 10c0/2b44a4cc84a5c21994f43b9f55348e5a8d9dd5fd0ad8fb5cd091b6f6b53d506b1cdb90e89cc238d61b46d488f7a89ab0d1a5c735bfc835581c7b22a236381295 + languageName: node + linkType: hard + +"uqr@npm:^0.1.2": + version: 0.1.2 + resolution: "uqr@npm:0.1.2" + checksum: 10c0/40cd81b4c13f1764d52ec28da2d58e60816e6fae54d4eb75b32fbf3137937f438eff16c766139fb0faec5d248a5314591f5a0dbd694e569d419eed6f3bd80242 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"use-sync-external-store@npm:1.2.0": + version: 1.2.0 + resolution: "use-sync-external-store@npm:1.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/ac4814e5592524f242921157e791b022efe36e451fe0d4fd4d204322d5433a4fc300d63b0ade5185f8e0735ded044c70bcf6d2352db0f74d097a238cebd2da02 + languageName: node + linkType: hard + +"use-sync-external-store@npm:1.2.2, use-sync-external-store@npm:^1.2.0": + version: 1.2.2 + resolution: "use-sync-external-store@npm:1.2.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/23b1597c10adf15b26ade9e8c318d8cc0abc9ec0ab5fc7ca7338da92e89c2536abd150a5891bf076836c352fdfa104fc7231fb48f806fd9960e0cbe03601abaf + languageName: node + linkType: hard + +"utf-8-validate@npm:^5.0.5": + version: 5.0.10 + resolution: "utf-8-validate@npm:5.0.10" + dependencies: + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10c0/23cd6adc29e6901aa37ff97ce4b81be9238d0023c5e217515b34792f3c3edb01470c3bd6b264096dd73d0b01a1690b57468de3a24167dd83004ff71c51cc025f + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"util@npm:^0.12.5": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: "npm:^2.0.3" + is-arguments: "npm:^1.0.4" + is-generator-function: "npm:^1.0.7" + is-typed-array: "npm:^1.1.3" + which-typed-array: "npm:^1.1.2" + checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 + languageName: node + linkType: hard + +"utility-types@npm:^3.10.0": + version: 3.11.0 + resolution: "utility-types@npm:3.11.0" + checksum: 10c0/2f1580137b0c3e6cf5405f37aaa8f5249961a76d26f1ca8efc0ff49a2fc0e0b2db56de8e521a174d075758e0c7eb3e590edec0832eb44478b958f09914920f19 + languageName: node + linkType: hard + +"uuid@npm:^9.0.1": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b + languageName: node + linkType: hard + +"vfile-message@npm:^4.0.0": + version: 4.0.2 + resolution: "vfile-message@npm:4.0.2" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-stringify-position: "npm:^4.0.0" + checksum: 10c0/07671d239a075f888b78f318bc1d54de02799db4e9dce322474e67c35d75ac4a5ac0aaf37b18801d91c9f8152974ea39678aa72d7198758b07f3ba04fb7d7514 + languageName: node + linkType: hard + +"vfile@npm:^6.0.0": + version: 6.0.1 + resolution: "vfile@npm:6.0.1" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-stringify-position: "npm:^4.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/443bda43e5ad3b73c5976e987dba2b2d761439867ba7d5d7c5f4b01d3c1cb1b976f5f0e6b2399a00dc9b4eaec611bd9984ce9ce8a75a72e60aed518b10a902d2 + languageName: node + linkType: hard + +"watchpack@npm:2.4.0": + version: 2.4.0 + resolution: "watchpack@npm:2.4.0" + dependencies: + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.1.2" + checksum: 10c0/c5e35f9fb9338d31d2141d9835643c0f49b5f9c521440bb648181059e5940d93dd8ed856aa8a33fbcdd4e121dad63c7e8c15c063cf485429cd9d427be197fe62 + languageName: node + linkType: hard + +"webextension-polyfill@npm:>=0.10.0 <1.0, webextension-polyfill@npm:^0.10.0": + version: 0.10.0 + resolution: "webextension-polyfill@npm:0.10.0" + checksum: 10c0/6a45278f1fed8fbd5355f9b19a7b0b3fadc91fa3a6eef69125a1706bb3efa2181235eefbfb3f538443bb396cfcb97512361551888ce8465c08914431cb2d5b6d + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.1.3": + version: 1.1.3 + resolution: "which-builtin-type@npm:1.1.3" + dependencies: + function.prototype.name: "npm:^1.1.5" + has-tostringtag: "npm:^1.0.0" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.0.2" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.9" + checksum: 10c0/2b7b234df3443b52f4fbd2b65b731804de8d30bcc4210ec84107ef377a81923cea7f2763b7fb78b394175cea59118bf3c41b9ffd2d643cb1d748ef93b33b6bd4 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.1": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.15 + resolution: "which-typed-array@npm:1.1.15" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"wif@npm:^2.0.6": + version: 2.0.6 + resolution: "wif@npm:2.0.6" + dependencies: + bs58check: "npm:<3.0.0" + checksum: 10c0/9ff55fdde73226bbae6a08b68298b6d14bbc22fa4cefac11edaacb2317c217700f715b95dc4432917f73511ec983f1bc032d22c467703b136f4e6ca7dfa9f10b + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"ws@npm:7.4.6": + version: 7.4.6 + resolution: "ws@npm:7.4.6" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/4b44b59bbc0549c852fb2f0cdb48e40e122a1b6078aeed3d65557cbeb7d37dda7a4f0027afba2e6a7a695de17701226d02b23bd15c97b0837808c16345c62f8e + languageName: node + linkType: hard + +"ws@npm:^7, ws@npm:^7.5.1, ws@npm:^7.5.9": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/aec4ef4eb65821a7dde7b44790f8699cfafb7978c9b080f6d7a98a7f8fc0ce674c027073a78574c94786ba7112cc90fa2cc94fc224ceba4d4b1030cff9662494 + languageName: node + linkType: hard + +"xstream@npm:^11.14.0": + version: 11.14.0 + resolution: "xstream@npm:11.14.0" + dependencies: + globalthis: "npm:^1.0.1" + symbol-observable: "npm:^2.0.3" + checksum: 10c0/7a28baedc64385dc17597d04c7130ec3135db298e66d6dcf33821eb1953d5ad1b83c5fa08f1ce4d36e75fd219f2e9ef81ee0721aa8d4ccf619acc1760ba37f71 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yaml-loader@npm:^0.8.1": + version: 0.8.1 + resolution: "yaml-loader@npm:0.8.1" + dependencies: + javascript-stringify: "npm:^2.0.1" + loader-utils: "npm:^2.0.0" + yaml: "npm:^2.0.0" + checksum: 10c0/4bb4789c8ace38067ff68a67fba27626c0793f4d001a485d2334bff7c4fed73ee1696bee287949a834c3387655df2e27e3d7c52ad7d3c20cd5c5ecbff320ff57 + languageName: node + linkType: hard + +"yaml@npm:^2.0.0": + version: 2.4.5 + resolution: "yaml@npm:2.4.5" + bin: + yaml: bin.mjs + checksum: 10c0/e1ee78b381e5c710f715cc4082fd10fc82f7f5c92bd6f075771d20559e175616f56abf1c411f545ea0e9e16e4f84a83a50b42764af5f16ec006328ba9476bb31 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"zustand@npm:4.5.2": + version: 4.5.2 + resolution: "zustand@npm:4.5.2" + dependencies: + use-sync-external-store: "npm:1.2.0" + peerDependencies: + "@types/react": ">=16.8" + immer: ">=9.0.6" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + checksum: 10c0/aee26f11facebb39b016e89539f72a72c2c00151208907fc909c3cedd455728240e09e01d98ebd3b63a2a3518a5917eac5de6c853743ca55a1655296d750bb48 + languageName: node + linkType: hard + +"zustand@npm:^4.5.4": + version: 4.5.5 + resolution: "zustand@npm:4.5.5" + dependencies: + use-sync-external-store: "npm:1.2.2" + peerDependencies: + "@types/react": ">=16.8" + immer: ">=9.0.6" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + checksum: 10c0/d04469d76b29c7e4070da269886de4efdadedd3d3824dc2a06ac4ff62e3b5877f925e927afe7382de651829872b99adec48082f1bd69fe486149be666345e626 + languageName: node + linkType: hard + +"zwitch@npm:^2.0.0": + version: 2.0.4 + resolution: "zwitch@npm:2.0.4" + checksum: 10c0/3c7830cdd3378667e058ffdb4cf2bb78ac5711214e2725900873accb23f3dfe5f9e7e5a06dcdc5f29605da976fc45c26d9a13ca334d6eea2245a15e77b8fc06e + languageName: node + linkType: hard diff --git a/go.work.example b/go.work.example index 55d17d15..a816de9e 100644 --- a/go.work.example +++ b/go.work.example @@ -13,4 +13,5 @@ use ( ./rollkit ./spaceship ./wasm + ./web )