diff --git a/app/ante.go b/app/ante.go index b44892b..7a9a338 100644 --- a/app/ante.go +++ b/app/ante.go @@ -46,6 +46,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { wasmkeeper.NewLimitSimulationGasDecorator(options.WasmConfig.SimulationGasLimit), wasmkeeper.NewCountTXDecorator(options.TxCounterStoreKey), ante.NewRejectExtensionOptionsDecorator(), + passageante.NewValidateMinGasPricesDecorator(), ante.NewMempoolFeeDecorator(), ante.NewValidateBasicDecorator(), ante.NewTxTimeoutHeightDecorator(), @@ -53,6 +54,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper), passageante.NewBlockAccountDecorator(), + passageante.NewValidateMinCommissionDecorator(), // SetPubKeyDecorator must be called before all signature verification decorators ante.NewSetPubKeyDecorator(options.AccountKeeper), ante.NewValidateSigCountDecorator(options.AccountKeeper), diff --git a/app/ante/min_commission.go b/app/ante/min_commission.go new file mode 100644 index 0000000..31f55ce --- /dev/null +++ b/app/ante/min_commission.go @@ -0,0 +1,70 @@ +package ante + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + authztypes "github.com/cosmos/cosmos-sdk/x/authz" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +var MinCommissionRate = sdk.MustNewDecFromStr("0.05") + +// ValidateMinCommissionDecorator validates the minimum commission rate of validator +// to be not less than minimum commission rate when creating or editing validator. +type ValidateMinCommissionDecorator struct{} + +func NewValidateMinCommissionDecorator() ValidateMinCommissionDecorator { + return ValidateMinCommissionDecorator{} +} + +func (mcd ValidateMinCommissionDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, + next sdk.AnteHandler, +) (sdk.Context, error) { + msgs := tx.GetMsgs() + + // handle msg based on type + if err := mcd.handleMsgs(msgs); err != nil { + return ctx, err + } + + return next(ctx, tx, simulate) +} + +func (mcd ValidateMinCommissionDecorator) handleMsgs(msgs []sdk.Msg) error { + for _, msg := range msgs { + switch m := msg.(type) { + case *stakingtypes.MsgCreateValidator: + if err := validateMinCommissionRate(m.Commission.Rate); err != nil { + return err + } + + case *stakingtypes.MsgEditValidator: + if m.CommissionRate != nil { + if err := validateMinCommissionRate(*m.CommissionRate); err != nil { + return err + } + } + + case *authztypes.MsgExec: + execMsgs, err := m.GetMessages() + if err != nil { + return err + } + + if err := mcd.handleMsgs(execMsgs); err != nil { + return err + } + + } + } + return nil +} + +func validateMinCommissionRate(rate sdk.Dec) error { + if rate.IsNil() || rate.LT(MinCommissionRate) { + return sdkerrors.ErrInvalidRequest.Wrapf( + "cannot set validator commission to less than minimum rate of %s", MinCommissionRate) + } + + return nil +} diff --git a/app/ante/min_gas_prices.go b/app/ante/min_gas_prices.go new file mode 100644 index 0000000..8d4d56f --- /dev/null +++ b/app/ante/min_gas_prices.go @@ -0,0 +1,40 @@ +package ante + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +const ( + BaseDenom string = "upasg" + DefaultMinGasPrice string = "12.5" +) + +type ValidateMinGasPricesDecorator struct{} + +func NewValidateMinGasPricesDecorator() ValidateMinGasPricesDecorator { + return ValidateMinGasPricesDecorator{} +} + +func (mgp ValidateMinGasPricesDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { + // Ensure that the min gas prices is not less than default minimum gas price + if ctx.IsCheckTx() && !simulate { + minGasPrices := ctx.MinGasPrices() + if err := ValidateMinGasPrices(minGasPrices); err != nil { + return ctx, err + } + } + + return next(ctx, tx, simulate) +} + +// ValidateMinGasPrices validates given minimum gas prices +func ValidateMinGasPrices(minGasPrices sdk.DecCoins) error { + if minGasPrices.AmountOf(BaseDenom).LT(sdk.MustNewDecFromStr(DefaultMinGasPrice)) { + return fmt.Errorf("minimum-gas-prices value should be greater than or equal to %s%s", + DefaultMinGasPrice, BaseDenom) + } + + return nil +} diff --git a/app/app.go b/app/app.go index 18f82bd..bb1eb2a 100644 --- a/app/app.go +++ b/app/app.go @@ -13,6 +13,7 @@ import ( "github.com/envadiv/Passage3D/app/upgrades" "github.com/envadiv/Passage3D/app/upgrades/v2.2.0" v3 "github.com/envadiv/Passage3D/app/upgrades/v2.4.0" + v2_5 "github.com/envadiv/Passage3D/app/upgrades/v2.5.0" "github.com/envadiv/Passage3D/x/claim" "github.com/gorilla/mux" @@ -189,7 +190,7 @@ var ( wasm.ModuleName: {authtypes.Burner}, } - Upgrades = []upgrades.Upgrade{v2.Upgrade, v3.Upgrade} + Upgrades = []upgrades.Upgrade{v2.Upgrade, v3.Upgrade, v2_5.Upgrade} ) var ( @@ -266,7 +267,6 @@ func NewPassageApp( homePath string, invCheckPeriod uint, encodingConfig appparams.EncodingConfig, enabledProposals []wasm.ProposalType, appOpts servertypes.AppOptions, wasmOpts []wasm.Option, baseAppOptions ...func(*baseapp.BaseApp), ) *PassageApp { - appCodec := encodingConfig.Marshaler legacyAmino := encodingConfig.Amino interfaceRegistry := encodingConfig.InterfaceRegistry @@ -402,7 +402,7 @@ func NewPassageApp( // The last arguments can contain custom message handlers, and custom query handlers, // if we want to allow any custom callbacks // See https://github.com/CosmWasm/cosmwasm/blob/main/docs/CAPABILITIES-BUILT-IN.md - availableCapabilities := "iterator,staking,stargate,cosmwasm_1_1,cosmwasm_1_2" + availableCapabilities := "iterator,staking,stargate,cosmwasm_1_1,cosmwasm_1_2,cosmwasm_1_3" app.WasmKeeper = wasm.NewKeeper( appCodec, keys[wasm.StoreKey], @@ -411,6 +411,7 @@ func NewPassageApp( app.BankKeeper, app.StakingKeeper, app.DistrKeeper, + app.IBCKeeper.ChannelKeeper, // may be replaced with IBC fee middleware app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper, scopedWasmKeeper, @@ -454,7 +455,7 @@ func NewPassageApp( // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment // we prefer to be more strict in what arguments the modules expect. - var skipGenesisInvariants = cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants)) + skipGenesisInvariants := cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants)) // NOTE: Any module instantiated in the module manager that is later modified // must be passed by reference here. @@ -628,7 +629,6 @@ func NewPassageApp( TxCounterStoreKey: keys[wasm.StoreKey], }, ) - if err != nil { panic(err) } @@ -662,9 +662,14 @@ func (app *PassageApp) setupUpgradeHandlers() { upgrade.CreateUpgradeHandler( app.mm, app.configurator, + app.appCodec, app.DistrKeeper, app.BankKeeper, app.AccountKeeper, + app.StakingKeeper, + app.GovKeeper, + app.AuthzKeeper, + app.FeeGrantKeeper, app.ClaimKeeper, ), ) diff --git a/app/upgrades/types.go b/app/upgrades/types.go index 7143399..dca5642 100644 --- a/app/upgrades/types.go +++ b/app/upgrades/types.go @@ -1,11 +1,16 @@ package upgrades import ( + "github.com/cosmos/cosmos-sdk/codec" store "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/cosmos-sdk/types/module" auth "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authz "github.com/cosmos/cosmos-sdk/x/authz/keeper" bank "github.com/cosmos/cosmos-sdk/x/bank/keeper" distribution "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + feegrant "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" + gov "github.com/cosmos/cosmos-sdk/x/gov/keeper" + staking "github.com/cosmos/cosmos-sdk/x/staking/keeper" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" claim "github.com/envadiv/Passage3D/x/claim/keeper" ) @@ -19,7 +24,9 @@ type Upgrade struct { UpgradeName string // CreateUpgradeHandler defines the function that creates an upgrade handler - CreateUpgradeHandler func(*module.Manager, module.Configurator, distribution.Keeper, bank.Keeper, auth.AccountKeeper, claim.Keeper) upgradetypes.UpgradeHandler + CreateUpgradeHandler func(*module.Manager, module.Configurator, codec.Codec, distribution.Keeper, + bank.Keeper, auth.AccountKeeper, staking.Keeper, gov.Keeper, authz.Keeper, feegrant.Keeper, claim.Keeper, + ) upgradetypes.UpgradeHandler // Store upgrades, should be used for any new modules introduced, new modules deleted, or store names renamed. StoreUpgrades store.StoreUpgrades diff --git a/app/upgrades/v2.2.0/upgrade.go b/app/upgrades/v2.2.0/upgrade.go index 90964b8..df1f92e 100644 --- a/app/upgrades/v2.2.0/upgrade.go +++ b/app/upgrades/v2.2.0/upgrade.go @@ -4,22 +4,29 @@ import ( "fmt" "time" + "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" auth "github.com/cosmos/cosmos-sdk/x/auth/keeper" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + authz "github.com/cosmos/cosmos-sdk/x/authz/keeper" bank "github.com/cosmos/cosmos-sdk/x/bank/keeper" distribution "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + feegrant "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" + gov "github.com/cosmos/cosmos-sdk/x/gov/keeper" + staking "github.com/cosmos/cosmos-sdk/x/staking/keeper" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" "github.com/envadiv/Passage3D/app/upgrades" claim "github.com/envadiv/Passage3D/x/claim/keeper" claimtypes "github.com/envadiv/Passage3D/x/claim/types" ) -const Name = "v2.2.0" -const upasgDenom = "upasg" +const ( + Name = "v2.2.0" + upasgDenom = "upasg" +) // 150,000,000 $PASG tokens var amount = sdk.NewCoins(sdk.NewCoin(upasgDenom, sdk.NewInt(150000000000000))) @@ -33,12 +40,16 @@ var Upgrade = upgrades.Upgrade{ func CreateUpgradeHandler( mm *module.Manager, configurator module.Configurator, + _ codec.Codec, dk distribution.Keeper, bk bank.Keeper, ak auth.AccountKeeper, + _ staking.Keeper, + _ gov.Keeper, + _ authz.Keeper, + _ feegrant.Keeper, ck claim.Keeper, ) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { if err := ExecuteProposal(ctx, ak, bk, ck, dk); err != nil { return nil, err @@ -49,7 +60,7 @@ func CreateUpgradeHandler( } func ExecuteProposal(ctx sdk.Context, ak auth.AccountKeeper, bk bank.Keeper, ck claim.Keeper, dk distribution.Keeper) error { - var sixMonths = time.Hour * 24 * 180 + sixMonths := time.Hour * 24 * 180 vestingAcc, err := sdk.AccAddressFromBech32("pasg105488mw9t3qtp62jhllde28v40xqxpjksjqmvx") if err != nil { diff --git a/app/upgrades/v2.4.0/upgrade.go b/app/upgrades/v2.4.0/upgrade.go index a4350e2..4b0be54 100644 --- a/app/upgrades/v2.4.0/upgrade.go +++ b/app/upgrades/v2.4.0/upgrade.go @@ -1,13 +1,18 @@ package v2 import ( + "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" auth "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authz "github.com/cosmos/cosmos-sdk/x/authz/keeper" bank "github.com/cosmos/cosmos-sdk/x/bank/keeper" distribution "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + feegrant "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" + gov "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + staking "github.com/cosmos/cosmos-sdk/x/staking/keeper" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" "github.com/envadiv/Passage3D/app/upgrades" claim "github.com/envadiv/Passage3D/x/claim/keeper" @@ -25,12 +30,16 @@ var Upgrade = upgrades.Upgrade{ func CreateUpgradeHandler( mm *module.Manager, configurator module.Configurator, + _ codec.Codec, _ distribution.Keeper, bk bank.Keeper, ak auth.AccountKeeper, + _ staking.Keeper, + _ gov.Keeper, + _ authz.Keeper, + _ feegrant.Keeper, _ claim.Keeper, ) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { if err := ExecuteProposal(ctx, ak, bk); err != nil { return nil, err diff --git a/app/upgrades/v2.5.0/claim_records_data.go b/app/upgrades/v2.5.0/claim_records_data.go new file mode 100644 index 0000000..92f6213 --- /dev/null +++ b/app/upgrades/v2.5.0/claim_records_data.go @@ -0,0 +1,6442 @@ +package v2_5 + +import ( + "github.com/cosmos/cosmos-sdk/types" + claimtypes "github.com/envadiv/Passage3D/x/claim/types" +) + +var NewClaimRecords = []*claimtypes.ClaimRecord{ + { + Address: "pasg1lvxw50vdlyncstwnm89r2lep0u0n0yvaww6reu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18zzevw75ysd50gyu3fyx5kmqph4yam2uhujdqt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg147cq9ae52gmzn9x7vzly7a69hr2hwx06tpll8k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zemqgkmldkea8mws0lz55syrxtzznsjcchgj4u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14wf978hl0pgn44tt6ly2hc7r38rumqw67xltu4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zz7z0mz9wq5tnzf5wh2vkgj56ltxl7xxt3tsm6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16t7x9kfzfm6q3a2jzhvz7y482rsdqqw9ny4jv6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dhhr5lgf3zfvdl4zutqdecxxw934cman254gmf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10u24rwqfxl48rshaasextp5a25gejuza892els", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16gngua9g8k88xsp5ly39fg7pp25ffe9fk9nfk6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hey6zup6z04ewsf4apws7fzg7p3309jpnkc89p", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16s3f0uct659k3hfg47dzex60w48q70uc4qr9ws", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lf9u98fj3vsgpt7ad2rvdsmx5gsjak2xken5c9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1d6ta07cfe0uns6sn9qal89znp4ccudvmtvyv4y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tc4hg5avgc6xsyd4uam99tshtvmga559mqdway", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nsxwd4e8mxhf6yvzyvyaqyhu0n3q9g87yqk6kc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kafta3ymwg3d4wk67hd7qr8lkpvdeh5qyml9sh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13cwv4sq3uct0rqc0m2ml9h5g59wpy3uuj0f3j8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1r4ycwcwxj74mqu4z6fv5mfzdj6756q434rrddu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1h87g5k9gus5yr3dtpxzxcphrl5eaaa4cjqmzd8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xyfkcatfwwggy6dvqlewtusfmzzfrger2mqt30", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1n0kealrf96zcmc68ahqp6mjq939x4x2lgw45fx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fysj4cadldlzcpjkfm2apdxex48wlvrglrxax5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vv2nm8tvpyx88r07hx5x4zyctpkztp6yn0x0gl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(55944000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18975e67epmk0dj3les32l2hqngvvgyhfj5zy5h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kyxjswfmg65krwqm59583dyxhf500jpv4tya34", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10c2423nt0p8g7uzscjets9d2z6gzrsk62nezlk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pyryxpnqpcjq83czjcvq97qd665j0pk2zgpzey", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19ppk89xzyfel7y9ym43srgaemsjmm8j7e2fpva", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z9zyhgk59af064gaemclnf396gj9uep0u3prd2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w4ekxwjeclaua2akarpzytwugjs48g8errdpnf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg147l6ml8xymdffxr3rlehv4hxzq069dc6dk7xq2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(81585000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1n376n0a09juj0x96rtndsrhmh78m9vly5tnhxj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18pyt4cfkm2w7lyjr33d5eqt0clqnv2wxfemsae", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yxypw09jfrm9p0ejfgwm0tg0ekeh33zjfyqkk7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19k5zgwukrchkah44c528dktt3vs2zeked8m2xt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15elrmytx8ngdxuykzprxjdpkcg2ukm475cjfs0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dq8lath3g6rn7p65t773488k4wk8ey08m22gzg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18smjyp3mjh9kautf54tmhg9nj23ngjgaqnclju", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14kx637jvpqt2ryr4wlcecduljel84qupyhk86u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rhd7lywrqh6hg9qgmv3xqz3n6np42mj05h8y9s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dlxpesm60tqwl26hqn30q96ash9tfyhh4wxr70", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z4quax3k5hlj4xt7wkdkqp5l4hpgn89yrxsxkx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12uk22nzee0hgahzttujcdce78ax627asykpjxa", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yapj782cpsx9u2nd4fv7yvqrumv9jlzr4uray0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sf90h3v0lc3f6sjejscqy4nsaxj8prd4j25kkw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qvkvcar33wnwkuv56yurnu4lsfkkdcz65yymn2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1upcvptj0v0ay934fmuhqdm6jvqp9dpl5thxj0p", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kym28fyj67mh55hd9hkedt2f0gc5haafp4p4uw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19ddmvr48sprynzfhml4h5c9khm90qy4psuwnee", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zpqceawvmkzvrwcmqnfh8umktgsj2ldr5v6mvj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18jlc56v4gxux4wcah5njcnkxv6lde2hnrgzclk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rpzsesr5cjgwwyj2t3edez45e0x37qxcwtlr6j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dlhrplxt2yanvs7d8mtzrsdpvczzqg4vpzfev2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1axgl6tyxfh9hrjm8e8agkd9452mgxpy04wjahm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dx686pl2x8e5768v5typznq7cgzm6ng7v2vwgr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vr62v4qvfuxd8l0z0qexahaktnyff63er725r3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ncus6prmh83yf5vwtxaf9qnaksckfk7nm750c4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(32634000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ax0ssew6dq432pdtmcvctgssu584af6j4afdy4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tm2574s2vxshre22dmp8lfxugp0fqqsr5zn2ps", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hgmtmxulxfys9rg8ps0g50da5xgczqpv7g5564", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mzgkxt38n0k54dzy2teux5398d820xa0prgdaz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s8zdget7zytklwm0fmduu6pscuz4rz0e858y7h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yuhwapyye4dcsz6xad3xcpc9xdhwggwrjpwccc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1570zgpm0dx8965pk9rrmjv2tllfxmnrd7htv3f", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nvt4vp5z0qz9lrfqr85mxsy7juf9ce08g48wuk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10cqu7a6jyh86a595d30p2k0wpdnl49stfdsg3g", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dzrxf6xg8wj5v6m9dn9hweuvq73lyprzrwwa50", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1udz95dyzm9crjsyrm6ezm3gca44l8wk3kehjgj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14tz757z7ghj0n97s3tgkwdyqrlecmxqrv8nc4h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jttkyrrlfwdesa7d88tcu544dxh27upvreej55", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qf0kxkk60qrcj5qa7v7t439249qfkcd4texl44", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nssn4hy8nzljp6up5e7pmtlkkmxmedh9fajjsa", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1auczavgptqrs8dfnaqvtgfsmyktyve3k3wvsfj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(55944000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yxmchasl40gfk8k5z4wvhqtcq6vttraq8azptp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ec3dua4lkzjzjle43jsdq00z5lfmrnt8g6s778", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tph4w98zcv4k6c9cc6x8qug5kfqjphmzg7n9t9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1auaffqw8enc5ru9arlqxj6c8ceksvq20kfh6dk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1973qhhswmsf0y99h88t40v7ecgzqhs6rudj55j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18f5nduc77d6qv7kqjpcu48dkglyaeyxsnh7m6m", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1402r5jhy950qkmfycu8yqudzwd3n2w8c5vuzq0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mx26py964dy0rraylx9pz2wu3p7lv9j52xqghy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(123543000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18c0grhdx96lw2u5t9qchl390n5weu9znx2vdqq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17czz0ftq5w52hzcgjmwzx82u0a4d5fgnegc64s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1udukg2mkycxnejxkv2974c0vrn8s6h9sg6stje", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg135svane9nts78jwhpuxz3r6vvf27nff2svkaal", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xgp5cuqjyrdtrysfsqzu0ektndha72pu76fcvy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lere506utvk0027vfl9xhtjxm00lve85c5tr0p", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17au89e6t85nhuptq8j2wavumhqp6vl6mu7qpsv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1aa6wcqvnt6jgyv8k9jf278v5ax24hdkgavgx25", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pcanc7tnjphv9kmdsyh7ckspag5dg3q8z7lsk7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1l6yzpysst9ky3eegx270jzn96e444e5l3hx4us", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ur3nlec4l0a8rs32vmzpgd0yumk7wgtcl8lew7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1swxrvqjycece2zg6475rhaz3k4mr3smfavqp4w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hdh5xna5h5sp7djfxr4vu4qkf7w6pswwyhx6wd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg195khh6nr3zsvaxkm53wavkxv46uucdlaqwkv0k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y8xh5fu3ynfm9gdevf2k2lvv0sta5g2vu2tysy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12clgwgl9hha45rtv5w8r7v0t06gv9wxhrckusv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cnl4lczpmgfutyfs394lpghv7epapwe9xdws59", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1swvpard7ga354snnqk0kcwuu7pe8s80ds5xh4s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gk6h6lswwqer8ulfgfvy64nj0p42xd9d79qpma", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c73p3flynm0x0s22q9r5v7ztzvmka6r5fa4r9m", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1l2jeel3xu0v0udjaw47sfe56hjnm5xd7sl8c2v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nllnffudccy2f6wrfv4djaadsvqsr2lam5vwtm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1a7unnd2yj958elqfmngx7nzh6z3pfhspnxdf6a", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kyw7529fmllut4x690hhg3qygu0k04kka82vjm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18rkgyuyndswqq5ratusymmnpwa00gpumzta83x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v8f8awsn786gtv9cl5ufft993dj2ulfv7x9s4c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1l72ayh6xpge306s6jwr6l5dflrj35kfkh4r2z7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16td5zka0xdx28z2mekwqexlxduppfe6xqjgpxf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cd9j0spak8lh5m76pqjfh7lprurgqlwfvh7nu2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kshlyr257twv93ma4dwr6s636p5e0vxn0sdra3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1d03ppywn369qzajeuqs0dge29rchxtea9pnf3t", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z4ks5f55uhhycekpdu4jcc9y4dl0m4hk3xtj22", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1efkr049k8enwqhsup89fhtx6lq66f34n2ygfcp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19arx8wzy4pwdtf7tc8tk349ham5lemgx9qecyg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fgurqdwm38hpsl3y4l4upvsgt46jarsn82q9kg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10rgklxvl892p07754t4yv573y9nrw3q06wvqm5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jyjs2pyxnrws6eld2dumcl65efw9p6d6g3fn48", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg100fjd4fgvavlevh44wqtfl8e46ryyzmh39jh23", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(30303000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1an7f7d9fq7dg8rl9h3st8wa9v2z88tfp58r3z5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lx520st5ctmh4uj2q2j9hq5d0skszkf57p9hfg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1u9ll8fr233w7ujup7x8vqd3srnycw3jfz82e5j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16dtzn6748f69anpk9ukpdq4xzmfhtun78pu0k2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18ruuxmdtvfpnrv5mqgwftj3qc9llt0d8j76ju7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w80g5swy7armj8ls3r433v0lknxyrp532zgjjy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1g7axdfn5crhysznqjp8dg4rw70qmwvja596axy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m5rvw2gnwett7uy5st57jtwdyqr30kwy7xqu8x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1g38pv08t94ng2a29qqmnlcn050nwhgmc4vsr9u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zvd8c2wk0dup5rxctysa6p0y6ruu0c34y9php0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13lmh7zyl4rtvvxyx9tszwfv4efsmfz7agfqc9l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg153zjzc704l5e8l6npdp2lnw8q7y0tjmpfuvzsa", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ycwr24g3pn29txqdegark5krdqpg2c4lyg09me", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15ueeauh5jdr6l70twxms6cs3ewcnkgzzu6lmjn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14d4mek8tj5uef7gxpg6lp3ur6f5j3ka86ghlr8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t95l7vvlhjj23wk5573ktvmkv0v7tr5z42vk5p", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12g2v4a7ej468c023x9f98zl9knddtwq0qadxz8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w5h4fh48p3x8tkaqt0vdt49vnk082s9v65eafk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mpss07x852zjg4z7x3ym423h6cs4g8pqx02wfv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tqvphnmazgccrdzm8v47vrvq8lerrfdanufw33", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16w2cwcuyddkkc9u28zqfaxtq6rsf6jzmcv358e", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s9qddt4kgfzdt23zd30r0tg20wggeydrw5cugx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16rwmjj3vqkmfjeuh5eujhujcl6lgm0s6ekjkke", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1g5fgtj0zry8arpffqh2y3035jtt5eml5pknaw5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1afchm0klqn76uuvmmamzzxnamqkhrxdxy05mqs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xyh0eh3tqd84d3tvr4a84r3jh9hqltt8qm64fg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wqhz5j2y5t5zvwvx2sukdpanz5vxfj540u8j59", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ng7nu0yqg4vl747khhez4j383d8e9ehhxdt9m8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hk07wupszu5akm2k7qlczr9j6w5uw7uayq8yg9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p887x0zffg07dk9ns87ejgux43n93cjn5rptpa", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1chklmgcvq93xcw5umqefl7nycufvjmacgq9uen", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mpwtasagtk3zlnsnq8gzu7gevxsl7qfldvdlym", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1uy8830027jlfs8udje8cjffc8vs4zm59cp4uwc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j89p2jyvh607p96saeh28sl9uyqtdky7670jjt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gq5vp7dwg2h6s9ekhkgjnly30wfpjq5nlzzj7n", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(32634000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10962jenlsq0sfqmd3q026ye0kcceder5dzff78", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1q5r883azzh0n7v377h6ehv87y7xm5yldq0vn23", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fkwnrnmqzgnr8vvjw7eudv6j4ggvft6t9juv66", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg193tk9u56gu6qyeurhwxugxgwxh3vtcnegnmwrg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(30303000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yujgsv3ffzq6q8qmtkguceu60ledtt6teax6n5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15hz829wam3wc3k9jlhdrwwdl93050k29dmnnrf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1myk93jzj5n5adfp2d4pu28gjxcmn9v4erzyjyu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sjgcmslzl28jrjr0cuz0yng4lsu2x8urnt439j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fwup7pumungfgsxz47s2fkvns5xhkly9dtv48c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rpy846jxr530g5p7ktzlggzuv0g37g8jamaqx6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j70e2x77px8tjdnvh7f0v3z6s43vzth4a2t35p", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(46620000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12zxu8hay06ym8d0qa7rxnr50utx0kq8qm057pm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1e495uzepkxmkfqvkpnkjzm0mmxeqtmn634pu8q", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(37296000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wj2n82u8hwmtqgumspfku0zuhy0vnmuuvla0wc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w8j57u5wzdnk97ycd5ts0takdgvdkfscdra0v6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1uvmm26ngcj05dcurr09d2c57k69kprf25ruju9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(32634000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1me6plvgecwx254t7r3ejsj4ejewdwzyay0c8ql", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16f5mu7wtwj56vk6g6amlq69qa4nfm7ul27vg4l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1grggpfq0l9ef0pmlaeutjhtyae3u52u6xy4rk2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1uxfmrc4arhef2am55lxjqcr38sye2tf94590hd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1q67zmjw69hnylqyy55vpu95q8jqwdmw5sday5h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg199dm0ugv50k4qgcsxjc8p2rertstltxvpfrl75", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1l8dkffnc8russ5q0jadk4hnjxzvs47tz2n4a8z", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16askh465vj65v9ny0x0xggt3t9dhhqz7z330ax", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wrgas3fgtl2sukdvwyk2jywxskckzfcq08sh63", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j2exvgumqhutx6s9gl2n40lenkslgvun06elxd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10rmuqzkwesg6z6vdjthkz0gnxth0f50eyhj53k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wd26spzpm098dxu6e3hcrelzsdyt49mnd88yrf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xqeh4h5hg6pu05sksu7jvr7uh9z9t8nhlfut4f", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16fg5tyhezfzr0wekffxwwj9sj2nm743274mp0f", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j0xhrzgmkxd5z6chc76dtzvjezg9sh5xkg4k5k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w6cf5r94q0k8znh0sgpnzhkqlkk38fhzme6dkj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1h7hq2rdj2d7tdt7w09wjuuzdcvyyknd6ltua6v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17xfvpq3uqt80z9sdtp32f2qt6nge3pgzycpzax", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1st278sp2ll9n6v2f5yudpcu0cr8s5k4rhzk0sv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lga37w9ze6ugmp6k989canqgxw8esrqvlvn4m3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j9fzxuekuftc700x7xvtdagy7xupvq6vnak9tj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13dzw4ea8ar6aclttk5l0zmhzu9yt6e9v5exdq7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hznuyevt3udxyereut58dj89rz2tydl8j264dt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1e6zdjcj3wry34hns4pw9hvse7xcv9mmt9ct9z2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ak7fwazexwqj0ptsyrkxgz3ctquvjdlcvg7mur", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t3h8l90f4mcq7qyeedlcutwpwg4mvvh3vpxhgt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg166hnu9h3cta8j0099acftqq4a3wc46q20va0zq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w4tv7u3kzusl0ze5e5zacn6xnadrgf2mzkkr7m", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1g0xluyamawjq5g097qtzm840dcf3unhn02ywwk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(34965000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10avnjpeqs5zj0wa39lc5386usl72n06lheakjr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19t7k5wxtc9pvmxku34ltj030czt906e5gjkedx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1su4msyz2vpx4mvw3nll25adjfqelqyqqu7sfsd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1x69drymnrdlwckhhy0j0kr2e5hswff0l7wpn3y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg138897rghcgukk8vumm9u2z7q950mwksaxuqlws", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14ghs6hs8xkl9racufmqnvmg4l0n7unhpn428x5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lj5hf3fwz2tj7f4q6r66hm4cgmx889zyn4rdmg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14pj448fst82kckwe0xgqenq0dxvu3pqns9mk0n", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg140mtc9tsl84l5udw6j6vn672nev95w69k65cvj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1apz8jzzxyk2nxdw4rgs6vgj8at6vl4zm9fs6r9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1988j02fqralf4ta22jx5794tkrtthhkgxszk5x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1a3nm66sw7ejp454azqem2d88g5m7lc6dwzgzr9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yujaep7vnr6j3au3zsr7gnvk7gj0z6f5a8m04k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19e3lcuv452a99pthwapm56uqgj4jwc87r63kgw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c0ruh7r88alluyl055q046kq8cqksazfrf3mwg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hwh9dy9tkdsljshzp4aekvu6dcrvhdsm2g2msn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17szsxh03v9mqn04jg5dglappsh048d953agf53", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vp934uw50u8erdf5c65v3unacecg9rcdkffc3w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg183r8f0zqtla46mt85uy2c9twvqgz2vjk9p6l4j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19lezakyp0kwsr97kmpvz56qpjvmet26f5nfkfe", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yzw2svld0xh0rkl0luahyasenpwuy793zz2esf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1uf4uwkeneagg65yxn8dx7qf4d69nsegsqs58pn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14v0fdjhp9jyhvd4ag8200e40vx99hv2gx5gnnf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zme7m4v7s3za5flm4xfh6ruqcy8zqa642992mp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c05ry8rah4ds6phxprvdtpvhsg2my4klrj0pqz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ejsynnjxjh9cewqvfn25707clyghtu46wlm4wv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg132am47mms4v5eszeudmcfvmp20m48qmjqruuqu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jy7hg7q4mw5kpj5r6xa5akvf7hvtdjua7rjw9s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1d0zydkzyw5jw0dwusp603uxpu75u4shtpnp8v6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16eraqn22mm7n3rqndkw6chc7qk2pdqgk6h0kaf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kj2s2p9k56x7dwvgf5vkat39mxnhej7q5k8vt7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qx3yaanre054nlq84qdzufsjmrrxcqxwqyxjfj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18gl36nj988lm7u8dsfldjtcsqv7qzzdtyk80je", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1eh664aalt3a3d0e824p5p45ut2w5s9z2ahe9my", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wh3nwe6gcgf3vld5vlfthjqk40wxkh0020pprm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14lskljerzdrw0xe7e3p9t4n3xfgrm2ar8rpkpn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xug46uep68c3g6nx5dt8m3jvxvfdenrk42t2af", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1k58zka6d93tzgr9wdp3t2hzaex32dum5er8w6v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y573wwtlw47tj0flkwhphhgrpufgptxfngwy04", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1q7zah2j8r4uzwth4hc76cuza75nrtfg3xa4mw9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1577dwsa2ku807rcd0sfkkwwzptd8l5emjy62x6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pe4zy8s5lpk4vndzpnc77lvpaqnl6shs5tg0z6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jkl7tkgaq5vky4dhafyrvqzjtxhtcvj7f04hp7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12u74rzm3r807fvjyjxrfm0ywkhj3749mpadjpm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rjw7jtspkeg3efy52cw84d3z6waheh7wxsllyg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1uy3efc0t599rsemaars94ve0x6m80fgc64ypm4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1adjv7746k249fsuu8qrhz5zcmjdh2ygxadkt76", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1h2wtf356hvdm2ft2sfyrxnetv3a98g49tfy52t", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zmyx0tegzetxfvlutf09fagmugz2r044qtw4wp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vkkpasj60mktyun39gac9ue0029gj0wu458rsm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zlly4fmwfdznlhuw5swqdk32ujt8c6cws93xy3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1f8re58pt9hyayy2f5mlrn2dwd23n49p4k9t4ff", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(76923000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c63txgqpsnjxrygjfn4mzkvdwu4cmh2s9a96hq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1d0hk2gflp7hsejy4t2a750g34w2m9nelr69kp2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nnj7f2anlskm09eklwmwjypnd2erzd74fn4meu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gytmegr98ykwfx4k345nyp5vuche4ttkh6tefl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1e5jprrmun9t7tuuk9qf3s7nu3mg6yq727nm2up", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg147p9ct2896vxzmvjszu58t70ta273697q0zpz8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dd03n2jfd4q0j4t7fr8qa5taam7w3ulxh88l42", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10rdut36lnhsrudd3t4zqqgpvrmxam4le2q66e9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1h4zpmxkcjw05fzn39ym44zzrvu3sch9yk42vrk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p76mgvn39jgyrndz24pryukczhsghwuwgtm9ap", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nhmm3erpkwt6u9qt8jgas24t900ryu9y7zqggp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg157paj0r5ymw2peyudrh8x4ddlzfyrvazz9mrqz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qm8ttsqm99uucnjqg7h2qzlrl6rxcay7j7c33d", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hztsrmta30guexqhjyjsezkrxmtnpdlm600dmr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1060t4vlql9ngh4jj4h67nsyu4lmljyd8266w0d", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1r2z9ca2u8ymu74lm9mx0nxt4hyw38y3w5qkmup", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nztdgv0545srvxkm2aphcfc0esgvt0zg3zxdd8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16zlzmce8klra8je5qu24q8pw7tgplnt6ecyhmt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pyjqy5l25fl7953n7ptfarr0mx3n4a6c678396", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(489510000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sgp5x2m9c4hyyy2vs6qdhgl2qv9330v4pejquz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lgu66ly24wz0x95hkhuzny754hfm9pkunravd4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lwc6zdylrgjt8uvdys0j8wwhhnul2wlmsrrh9w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xzp6uh4f8kyuxq703fmnzkacnkmkq4cwlj2e4w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cv73z7f9749md2kckw8nh8wr9sajpggfcgp9zr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(37296000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13mzcw7ezlgzcgpls7xqxpsg5qqsxvp8jws873v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(51282000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1a6xqyhu6wdvsw7s4v5y5u6nq4qpkms280l27x2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1djqpcjyy2rcphlestk64l3c8pt48udh3zev5fs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(83916000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sg8r7u5ddqkpha7qv52c6lu82ude88lyzffnwh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y8eyz3vf48ydt9ycjlwdrtsfffs79zj3m67vv9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19yg9hngpl9xd943wp9qlfz7pm439dcclg7q9pl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1730kjgxzpd96t640aryke7zzyur787a3uydru8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1uyrzdkn90p32842th44f6tj7xjwsmutg4gdxfw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17vz8hvg96lddwawdfygvu89ua4v7qgd62j30cf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ax32rmtyraxnf76w3tcx6pmt7psdfgfdqr0m7j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(97902000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m6xmmjmrhxusvn0djy0g45n5lue0pvhcv3905t", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19jfu8esg7pt8s7lkgk88pc0hn4efm4hr6yl5tr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16rhn73tpuhjq3hcnwa07jmdffkgjkhuc9q3yjk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fxtg53uexmvh47wppasxjpee4u0erv2lye03xl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ap9mr6xcwg8m4cfm9uusueweaq25zz9dm73u7q", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j6t96vzz3cqagdsg6pwzklw82sjq7p5m3edz8u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m5atd6fm6zh3rtekjrtetve2c5es6f9en2qhh3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xpe0fr4elxw00a0evs3l7kgqrzlv52ah5lzg0t", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v3truxzuz0j7896tumz77unla4sltqlgzee0jv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16l5w8y5ch6jykxy8k2q6c90jt8pcn06gwew82y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18zpwqjkzns5xmu9pgeh9zqcq0gxtp4j22sr55q", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lmadawkk6udk8hmtpd9khazxehh7e0wd5rctn7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17ltj7avw89nldqhf6lpvj6eksykd48sfrz5k64", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ffvhvyrntp4l99xqgn2vvly6v4kn2xlhdrkggq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1a0twvtftd26lt2ffyuxjak9e6q3wh8w9c6rrnf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10pwq7v59jzcyhyl05n8m6gzqu6ns2j34s576c5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xcguxztyxmzgc5llejqmhgrhx6g6uzwphlamyc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lawe72mzyrprjjark9q4902033p8rsuesduglv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cn9tlqutcz77l34e2pnhtuszd0y9thz8arqmd0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c7uuyjz3uvhk2vsjgrxc7e7jhnjlsysdhr88u3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qm8j0dz4hc3u87zmgywq86wtwd5uswnjwp4l9e", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rlj87qcqf47qv2nve60a28a2x6ue344sg0ckdj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17070wwjhlurczgm9658k7p9a8ds08shjqwrd38", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hqlccktvv33yslhftt3fwja089xpvgw4yv6sg3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fvfh8py05qqs5x3vz258gv68c3afh3y7h37vqj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sx39u44hp5w0uhj6drtdnjr94nah8mklz0hnl6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg164k7htgk8ex98sjtusjdp2c9tmd29pcgux7sa8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ajql4ug94hxka0vqpq949mwgl72cst4gpmylfy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vmjhyw4ft73vsn52ks7h0ne8wvtrnfcxlcxvyu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17rx4caclnlkqwlkq4hq3aq0cvj993pnft3jg2g", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kjfzu6xnuac7met0vwa040jfur7fu5cftjuu50", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10wzm37rf0ek2p7lfa2jsd0st58xppc7gkhtgsk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lwkpyc07zta670uuz750xet787czp6uct3h4pv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wv8s3cflrukukpe8wt0t246ewamshqln5ysqr7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tl2p5pz70zjp4s60gr5he0cljwjezpmkvqlmmc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1n2tk9u7lz2wg4jx6fj3lnly6slwemqxveacfcz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v4tlfdusty83w6ac6889q8d6ymdhlue9l59snj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m8c0p07f26mtcermr02kqw970elguszcxr369y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t2ptfqvg5gl6g0sppgecr05vav6nhv08jy0tkq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15usql5rxplvmfffmy8ey4v4r72lst7syfm2er3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z7qvrdv3dym46rdz52gyzeygqemjwc68re0t6d", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ugtvk2new74hqcmqn4fnwzgch46hr80v4tp05x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19md46nr7xk6p3py9jzlhevhfgpvn7fl0say4p3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg169dycfnavm0386wyf4jq2vvxeak2m02lxhqram", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13wty05763rtts3ca0waun5m2cshwu0qpldawtg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mez8nqzly3hlky942eymwe26v6kgdn9nsscald", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1430sd9ycr45sffsy25a4msy6kn72h8zrum09n3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hfzkq7qcz9t49425emld263agy5dknlc46fvun", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lxgnd5mgqc3a232t7hzxyvrqhfgczuguqw086q", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mzk5077xzm36cw4wjzqesw0nf9udl52c6wes6s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kezzd8q3lc8wek2ks48e36cv57jvtsr7k8uxy2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ygq7s6ndq2eusqztj3hcqyx7yvn7g3xs6wmm96", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1k4xehrlwnvunyxh259a3067k63ypua6dfscdet", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zq43hajvhh7gx9xgtpthwgk0nuz8g2ye4xsxpr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(58275000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1k3q3tpth6ft2u70g54sg24e0m8kcmrt3qukr7v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14pjsxrl852gxj4p8hu4euc9wqvhgjpr4tl28g4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y2ptynyf78vjl7agjj7e7x9t2k3gwgv5scmlt2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j4vmxp982wq0zwqamwsms5z27p8nqjmrffa6d3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ckhgfntq20zyrrx7agufg5687lt72acnewd3dy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15vuclcqyefslulswmhcwgdnut3273spf6cg6ph", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cesw6mymnw57cw33sgd3w8nlqxyeygeuxxl8s6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg193fzh5pz8w49kq2vztmtv4uwamud79lrmpzrhf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg104la2yl7wplyg08kwvh6vxrrky07ju7mke9dnl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fknhdqr0q6h98nn28gymamdz04ehks3vty89au", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1twkyt4xfgnu5lwkeuvqkep6xhah9rd826ntg0f", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hz7y2csdrgswnkmnp9yunf69x72eh2p0m5chnl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1659yg973g7nqg0806gfavc5m5rdyrm2grz90pu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18e9g3kfkzc9n9aet5c9eqwvt6ay5raarvc0npd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19wm52zqxp9y8yd8t2vhxzwrjcrmp8ws64y5fhl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dy4h30xea3hjcul938et76xp4098ua7zvwnk7h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg100lngazcuyx9s7retesv34e447jadtg949qzxs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y99w5r6qtynjlfwq3fvcn7ge60msw5e3apdhdg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16pfkyl4a3uq239hr5cleje768m4nmnxtzsegc0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rdcrdyj833wp2kqeaukwfu67vkjznq83t8dkyy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15rgrmd7xszmqvjaepqezh663e9vcqz52jyl3lc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c84g70323ss2vlu2jzydpx9gf6lnzeykh46q35", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xf4n5alscmyuhuyv5elnpns38lf64u8yn6dlrk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ame2j4xqpenzt40hq97rdfkmx477cap3ula7uf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wygsp6depahahyg8zn0q5w358gceh5syakf8dn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1n3mhyp9fvcmuu8l0q8qvjy07x0rql8q4u95986", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ms0eyqrr30twt9u6m8ny02r0ctqmc2n736dd26", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wt9r4ue7j44j4ac0h6x7csqhxgq3xmh0sxx7gc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s79z3d8c7n3kymnswf6vqv245lmxxetjsze4ve", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1q8837gqxf9e270pspr0rajslszgy2caf9zwgc4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nzevrg2qrpvp9jxamaew3zrql65czrphruwvuy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dhhge47ta3sxhwlqfwpgt4fl2h7jzs5gp4q7hh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jnnzyn9el80qufsdc4aec47h2jffv8ygjjph2a", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xufk53y9cxf098f5jyhpr49xg8mgchl0v5plrg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16742zep7a433pwapctascqk65dqg44xu3xlgug", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mfudcqr8yv0gs6rr0yvanzhjnrta74qvus7qd7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1agyhst9990lykr5w6gdwckh2kzg436pq0qs4ry", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qvj6xdgtfa3w5n63733wlu4qscenvak0xgrlww", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hx2gy2qnx7mf32cdc47nvmk2gvcft5s25adv6l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zkzte8sqwu3nenxrchlh203qclnfhl2zau5g8c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xmdwmy2gcgam53ujslxdjdgrr6y5jppkygw62y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t6p740sgsl0g7e2mec20xnz4t7d4zx0pept70l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gve09wm4jkf3kzhe50frelkezp28uc5j2pu94r", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10wrgyvux6nk4slz93hr4tpvx5r8pf4ar0veg2j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xak52rydav4k8ajtahllvn0qvg5l5u9x8lmvt7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gyfrfuygwsl93m46ewx4znqgza6zqtaha7vqqq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13pxux7qp8snn73cm9twmh2mcy3qa84dhn37e83", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v6q4pxt0mvgyxtk3jucwlalygta2g2x7yu6vge", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pdt2sd0l6y0z393jun39nj9f4dxg888j6m8ctq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1na6z4trrdftp7efyz7rrz9k2m50e43sgym34ng", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gx5cx6prh66wkqtpmssd84q5dmvuw8cvxc0zge", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hmda69ykt8rzsrxanrxm2r837edln3pjvx4vtd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dws2msppztcyeahnv057ffq8km92hvh7wkm3xz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xz2uw78qtxhvhw3kxen8tmn85hj37uxx0gqpad", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(32634000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1r0htkx5nmaslglj7mr7g66htf6tuk7a7ve682r", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10css64ces6gr8djvpmzpxuqag5mwsdms02rk9p", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16zqwqnjn4d33d2tddvsfpwpumj2xwt8e93k97g", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1h3pd599uevns4gfl84ha3yuc4zll5xlz928tar", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sdptpxtu0v3uqp7tzk6n7yue2yqf0lf6m5wudt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1n5d7khestmwc7drhtfjqdhthcl4k9ray9xac7z", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13gjhk3pmmusvdrsgqwdc74fcafdmvex0uk5w2d", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12r6yat4wdma5627v2a0lryw6xga28zx5ef6vk0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1f79v6wqh5p6akq4pgp4gyft800usuxe88mrfx7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s84s8z9qd93uja646m3c8j53my8ykt3jedg0xq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qx3q2esg62xdevkshzjqe3a9mhpy0ylugf5t9u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v0x4nnjmuqw7kj25vyn00d5phhnxa7gnqghqn7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gq8uv8s94gls578x5hgzq4gq4gwhe6td5ahm00", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z2r8c2hfeajzn54q02gujvhpgk3ag66thl0lx7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ln0znrnnmy9ve63030629y89m6cza7dqqyu805", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qnqwxazzha6lsx2rs2gewu2337uha5lzllrqlx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13s0hlxhp584rtl4kx3reshsjq9u42r8fsyec0s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(86247000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kkuy7ysjq9wwgd55ftk2zy2svl0xwa6esnkhkh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg105qeucljvgkgf4vqc0nsksaflg3y7n3dy96ftz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wrurz04vpxgaxsap6rn9t6rvspj3call6ye3yq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yajq9f2csr2h74f32gxcg9d20fxmdfv37g52ph", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t60ptgcr6gh0ljmdj9lkecx5ace42f4d8gp9fg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tm2vgq9ddqujmmjnq3hmjz34gfxcxu9hlwgn68", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1meyqsak7822u5f9mgpn7lqe25g9pnjly6c7tg5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pluvppw3973qkk5rt8w0mmdsqx03hy6x5ylnsk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15v3gafftnkk0wdjdw7w2ttlr38ee29ae9yagxy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19u8kv086wylu0t5wus3cjfep7zwdcwa4w0s8vx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p8ktdc6st0tcd0rqx6eu32xpcf7472sun5gpyk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kqtu5swvgzqqe6es7l6sj82swg7g37l5mddr3x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fcukvhl5c82h4s7uxtsmknl30l3p6xtqssf254", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ug6twhurfzhvyw2nxscv0ke6wncvckksrfsfpy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18dw7camzt7ve7tvq0y4u7ym0zer7wnwh6vhv6c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1chywz2q3e6mqfkw7p96utnmzl55xxnlxp59d3l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18trhwvlg6tjtu8x82xpxenx6e4mhxmglr8kct8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fm2h9mp4xrrumdrjk2w97hltnrt2u2twyjcth2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fwzqwujy2xpn99vh3k7d066r3wrtjct8syf350", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p7pxhn6s25qjrjlqgvxa8q35mp6rl0995zup9q", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg185cenfuuzc9c0dnja4lcu69je3rqk3p5e7qvt5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c0vv2ttu27z6zsat876j9vtuqhgscgt9cj80m4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dclzuklectgdvm8aw5fught572smlfhnwgmqtg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10c05jah3l6y47f40fk66g4nw9k78n476yr0aze", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16rql7acrwmhc9wysdld0sg8epe2p0yv6hrgh38", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qg4xepdngw6hg79m7fstyuenv4kfyf8m07whzq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17uxvykh0ergz94sm76qudx7txh5xhcfud4w4l6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1u7h6dkwsszuv84ka74uqn6jz7xdspjydpcywu4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s9plr47kx58rdn78x7uxy8nyzw5yjgk2jfd28l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mst628zrpwsce39usqcwdd8l7cuchhmkvkctlz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zwhl6q04uft9ryq7qyxjt9ue9a5aguppd3scka", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg170mnvq98tc6a46sckduss3qeu8n9683k6ahnsj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(37296000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1u6plw5v2atha3grsfrw9cgn2q0rwudxazlrn3m", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12q567kam3tclejefg8jggkxfxues5xlhl4nuwy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(214452000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kw90gvh90vte5d878dhahzvg3m3d74zvzsdnns", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1k3zhx2vn7s24wnf2456frnc7wcrjnw7wqghslz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1n605hcsqzdzvc74lvnjwupruwk35szpglya299", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10njskfe93gszekjwzuf0wx8u2mvmxa4y66ua6x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1usme6asdhk6tn58a68w4zxudnl22ywa2n4ghfp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ycaelu4ju2r8jrsedeuzd32a5dwv5v05770gth", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13k4p55ls5m6srku3z24njhcqj550hjpke4jrk2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1thde4rs82ezq3d2jqpe5j8dwtv8ndex9f543ca", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yjh55mu7j58s8z9p604ltjefg36nls296cxp6r", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1l8y9h7d0d47p9va00w59puztygur3n3nntjsr7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c5qduhcwymj77zn4988kzuws6l36fsp0zxyw6c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1algjxvnhf9rk8hxmjjc29saae848adhlxw05mr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vrpfls8ynj4fxz535pqyyektl55w06zjs8xn20", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg157rdvutx3fzsw97lmdcur08lea058fmfw2fc8v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vfjzkqdet4tew8s60vsnghr2lpn9tkns977pwf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1emc889yhhjdzctpyzx8qf5fzytrgfgthns06cs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1htr84ep3rr7vwkaldqqv7jvpgnd6kekewugtcx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t9pm7ydqg5zm72h44frprxa843v4mqklqnayjt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15ckeufu2fflrjw46auglgf8vzplj0ermn9hsj3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(37296000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1slryw5v7cxae2uhudfr20q7qs09avs7vv6h336", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lm25s78k6jpfq6kgg4lmd7hfukcyyrvx8anq6j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z4xjq43r7r8jjs46lr9uqeax57hu7g4lndajsy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cpa7xvlrhk5yg9q7nwjrr0u7jxr9drysa376fs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tpq239xgqa056lqrl72aa3vwcawt8d2pn4j63v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fj8gfsq43mhr779kdmmfkqpyu0vpxschn7gajv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zkc7224j6ne2f68cxp8nm20s6sw4xhgfzdug6x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rkty8csmczt8ctxc5lswjg895szr0ds2v3y8wf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1l6r6je8509d807yqj765hy3ysfusy3md6tkzwy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c0406jw6fg78pmfld0ddhudaf307g4nhc5u4ek", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s6h4m6g8t8na4lyy4tvzhvrjt955mzzcuang4m", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nm50zycnm9yf33rv8n6lpks24usxzahk5usg2c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1alvev8c6hspafjvmuqhhnvamd3quzvtkpf9404", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10uple3kqcsk8k8fnle62zaa8e4gn2wtkvp0dl3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kfcxl4lm3md25yj66qkp4lkntyd78jy4gewk5z", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s9xp57kdmu7t54m7uf4wc4rx5hd5dwjx203du8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jxmfe6zmc6w3rsljlgdwmftf6gxexcetqatwr4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xhkqg8vxc9aqz3n6u7xxc96rmny865ld0f83qz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hwyjjs28jsyaxmax3hqhdmgz2lw6pltf8ucwkx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xvd45767z3j27200n0czkayx5rmvnlud4qnvtl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jdkd57kyj0ps6y8ev2sktxzteavsqzm8n9g4t3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14kl3awhj2l6gy9a6jy0m9zprlzrkzvl79qwc7c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hdec9a4gl4n7tlf85vzynzdqd5qeljv2qvh6ze", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qy7wp6fv79ggt5skmr5jfqy6prypc2eyryp04s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1uxy7ytyycnh4lxt7watkl0zekut70hlvpkczcy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wz69rcq9qdnksdryma0caxsktt272hlgrqxr7u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(39627000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1u25lkjvg5yvcvkdg4uyxwe3r9kf5ls0gzslc9h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wrdhvg9xx7f3whl95hk3q3379l6yyy0ktecf6h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10z6mwcv78kmnj4lm74ce3zydrqwuh5qhuuw4pa", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1k7f59dgnqkny0aj5wk2jelu5jm809lcr9zcc88", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v0u9rcqpp65rslucp02enkj93tkhj2f8qz88uk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16v6rzsagvj44ahxp9f08l5vlfpw6at5s5skduf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hyw4gayhnya4fk52c63uj8e00un5uqngqalv7v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10h4lk6gxzs6amemqt9uenep3utaqqmeyln4sde", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tc4m0q2795e0zzzcj23kfz26qcf560juf8u4gt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m76s3lm9a3sdvhuxetle5dlq9smzllf7s5676y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1f4pyghxn647qvaqwcj6adcywetu8tn6z4ep2pz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dadyjk5e5mwqajrurcug3rzgk5mdc0ru5rceg3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ferfl4vl894w54yrpa5kcr8xeg3z2ye50w5t90", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg164zc5r2xufynsdywyv22eqdpav2lmgmara7n0k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qfrfy40j56sugghuac7kafjg90tux7ray2eamq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16xjxyaaxjmypzeapxq3grt34djgq08hhmqy0vu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17qg3pf85kj56z8lye25kpwvjx6cgftq0nh7f98", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kjyk39gqxqeh7xam6ejc7l3ng6edgsgn23ln33", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jfrs6r5q9shj0w27ydm3gn86pa44fh9au7c6j5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19zztynvan4k83522thaaza6tg8nulseda3pe4y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xadmlv23gm2mfr9hhylldwkffvfqwr8lz8md9x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18rwuaujwml6ry0pn5pc6mnazn02zux2wgt4uhz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17qrfgsyepv3mk2f29jkvf0y7q0fnyx7d66fcjv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1d4326nfkxuglcjdl9kn86xfaked5txweaakpw0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vasunpy8eyx29fd4pk9kvkl8je2hpfvyzeg0ue", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg150eda7frspqhpwn265hlgwgpfv2f62f9v4rdfs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10ct9umf8r8y5c06zkyleexn7kt7m2pw85x2lq9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17fzx4rvw04586s8f2c2vv53pe3yypu0cdkwmsr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1uqpwch2jjy08zvqq874cf00knnfm9tzj89cd0c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15msrg5rvjnawdj6ra43um2cuvdtrtlt92w6rhl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1h80m6frg6gsu63ydj8yc49q3wt6cgylflg4z6s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y86f4qj6gs8fzcrdgh7ye335hkp75czs36ncch", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13a9tgvmnmap2e647xf8uaewwzz5sef7d5s6ca8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xk9nguk28krahklva6a25umjvcqm2jqhwtk6wt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1r87e54g80m06l877xfxpe3nyadle3tc877gx0s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yen5f0ej9njg0d9pa8nn2hwjpqqm36zjyd3xsv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(44289000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sj8juva0wc44n5f0t0vurzcr5ta9l6f27kqm39", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gkfm69ulp493c4srhet0gm8pgpzm7j7us27al2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gyq30sfwk4xgv9942uzwmqkwsuapun2desnjrz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z58lfqa2005hs34qupar265v3e6crf6xl0he2y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17jvy2a5g9eamn9pcnjqc5eea46wqm925jesjhy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cmcjvrxvjjjmwn0xh4kvhdl8h3vwye3sv5gal8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1636nygvq8gsegncfnjmv4kc08w928yncudhshh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rgs4eqlsl08znywevt907tdfeytdqn86flck42", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lsq36skm8gr326pjm3eqwm40w7lf7wkxwlvj9p", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(51282000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w7tsxvjpc4fqxekcvzhtudyw3jd4mekk02qv20", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1235lqzck5mvea8rnp90snz9cah5qcnvkfhewtc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1axatyze45syyavsa7ad8ys8gjgyzkuw4a7nwjz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pm8jhqcmjhh85u5ja0yqcahk42n5dsgct7xe63", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1k4apjnu6xtjs9avedq64rh3pdjcm6hg52am8al", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13k05qcmneetfh5d8s3hvudc3vrkugnz5pp5vz3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nr8aj7fa9yzus84rcc353t0hqjtadl4m6vv98l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12y8efwpvtzxhav3kpy8t6qhywz6msdt3nkhqce", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yqlfk4c0tdzme4vj40jjer5ecq9mh42ht4gu2k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w3tsuzw776pjeudcezq3yhzv69ymt8csdd0nca", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(48951000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kc5aczjdyggu4yt08v44fplnhkwx98pgf5ch30", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14x4ufeheyq6e53qqxmstq66e2p5sdg29z2tdkp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1epyh0cv6essp58as3nfj4gqhqzsaqsq0v6lwgc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jmkm38v66xh275hlp89zmrgka3rvypp56jc93r", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19jxasz22u3d5sx6l4c8v9z79dffds6e45teyyl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pua6p84dmhnt5cc9ha793h8fyejjdetqyfuu74", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16s3nqpvl6jypaxg5j2u68kejf5fuegtxq6qwvy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1q43ef7nxpfrgsqjchfd70fm8y945343mf4xtvw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lq7ja884xuu7fjuxa74k2uzwheq404am30jryq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(90909000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kvlncp5luy22k9ql0lh52ryg3zcd3app4ds24y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12h0hympmykpt8j5f05z6mxwsa0wam3d5f6edfp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pvgdhrlfc5eqkkzlptjrs6u35zd0qcteyaf225", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12xxlnez072hzvg6x03uzth8xu4z7szvg04j2an", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gdqxarm5lw34rv09d9msymzw8dl6fujp4fk93q", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zxsezt42dugf98au57mtcsyl2wymwd7lhmvmnn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dtuah6xggyvc9h90pjjptwrg5svvze78aj0xfr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sxzxt5faqz0pxu4qd2yw6qag9lwkx7tyq5x07k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fkjh4gyxrr4ttg7q3wpzgxds2jnz2ay2tddsze", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1590ug5m44064w8k8kz2a55sgaryddwx76n0gqa", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(46620000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qwksnfwthtpyvalslxket6tsgcx40f0hl6w9fc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ltw6t39j32kc8579rn9acxcwjrcd9tefk4lh0c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ejqe3wwy03y9aafqf702489gq02q5gfrdplwmz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg149jhzmmw6fvyz2h9jhxpnsppqnlnxax6wzsxwp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13tqhtr7m67zw0hj7axrw9hap7dfds97rs4yddn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(67599000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mmshag0xqx75rmwd5pjlxr4kqg699ded5kahvp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg149s2gvrncljdrtqs44ff48nw4e3ly43h0n2gel", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1daw2sahp0qcqcccv75p39wccj3guv6hkfz5xsh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xmm3guyzffj3v770sey4ejc2qxv046wvevw8j2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16zs53whzuydl50pptd9cx8w5f22tfqa3zr58k9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ftgdv75navpvelzr0s7ycxy9v44a2tzlzpffeu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19enhux802sxs7rnnp5hkade39r4el7gnsgdlun", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s4spqlar0fsmmyl5grce5rydkwz42dqex6ae9k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ahvc0taf6e352au0qqh0ldq5egzv8j2l8vpprt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg108ss9dsdya700yjzvvz9ad5zaf4c9tpat9wmg2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1svw5zf0vqkdzwyuf4xage0f7nyhjw622y94l66", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hwhf3jpuj5t28tjnjacycnzsws35pg67fahhj2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sxjff8lc6wpqukspsma7xcpxaf4emeg3mxxw2f", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16yuewmcpm84wpzu27g77f0elwzfk4ndcz5exa6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg197azlmrp8wvz4446jfnxu605snegznl47wqtdl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mm9c780seznwf2aaktenw3nsjhpp0klaqy28es", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ek6mxuayf030zaew7a3hcvffke7ey5rhet5mql", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1e428jv2twka9fpsr2sjalx639yk72y86heyrrn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1q50hkqt3lx3d9lpsj523n0qj3epr9hfsewxyy0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17ec5sj7avyw6s3gly8aqs3u3mrplzdc88x76tj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg136tl6kt38cp5mhdjzh8rvfd6nhds22vgcct9zn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(72261000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ykqfsmrw0uk4fcnycpp60a0cdg0xlsmcv8qed9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kumm56t35c9d6f7rnrz00wwjd6fhdqgvdurcs5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17ry7yg9d55sjrtdh04xe7p723p9ckl2yvekqup", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16akr2g377x5hutw74a75p45ql6dnu5dr3zam03", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg104zzv5fdhqyu9ulj6qql3fnexw40hl66jqmhv9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15w9y37qj2wfvgz3f66007j2v6vajls5wq2gwae", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(114219000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg193auvtawlsd0vflcnt7vrfhkuu4r6htevfltfc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg184p7qzr6749tf9z5fl6jatxgakrt4z66rqdn7u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1q804sacllc07va0nxrkje4jmk0m3eku7sx48pf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qg04faedykl4da9p66wk7937zkauv766meezyn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1f3pfqg7kt68raamsezs5q8mr03ud8hz0ns493q", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19et2vxd8sk8fn3p67gvdwf0v9gv544crprkr4x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yg9zevglatk27qk8hj98cgc25r7etya7wnqru9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j5ka2lsf6q4kfyupm748gyzhekhypk338elj79", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ay5q0xn8dsacq2fellhp6cg3ljxh8zqwfk2k6u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lujrdh66jk9fqp9lrdu2va7t5sl0net0qseff5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(34965000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1e50q47uzfev7375ur7zumz97dz4j6sqs88ezsg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg139395uy26hue092uvat7awq5slnuagar2k4w8w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(39627000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pvgyc3rcnlpyl8gkzgax3x8ewexq2fvvcevpr7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lzfdwz0svf4n776zc3m2fl5cmn3r3z68zm0wgg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13erzudf7gztd43jlsgs90kzc5vvecxwhx4t35j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xp0qs6pkay2jssu58p8eap0epdhwx5mq556lhn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ywqjtwhtn02zkph80cgwlg6kkmzl8wg74dpq93", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nneh3cdwx7ytp70h76gs5nsuaqxkm2e9ldjgwt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18fk8tum9ju0nqkda5rf9sj825fxxehfxl4ylrp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1884v32e4wdl48d7gskt97pq89xmcyedw7z2dnc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ue5e5v2wsmkxr87hzlp2h3zkz4fh7cvj0xekdh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1krerq7df3jkrzqq5g6yfvh9t2w29tmh48ay2hh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hkzvpuwttztfzrjkw6ca7lz3xdptpse475cak9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1n60nyh5j2l6hx2uhcmh9gj9yytfvg40szysck4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13nhlg7cqspec5e0yv0n6nts3zcmfnc6hhcpnwf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v9zdw8atfkxve2zgsykpmdgkchhjs9vagq2l90", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gjnvccpjrn00fp57g992r0cthyfkyzakdt06vj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xt352n044y3tmxyugun6fv9uahxa23se69hzmr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j4xv97j7vt7244mmeu9fl2vy0gvj0l3sa8ugu6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mu37fanl290gnv3789cp57kran5nv8rj7n44a2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13e6svcf0dy58ee6z7s8d5jjmt92jz67kq508u3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(58275000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s24ht39ea9pquwa2ry3zwd4ahlq5zlj5zsyv0u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kdt3yjxqtnrzea50harm6rglw3rxzh6r70yp9t", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14q6u59hujrzy3jn90ugsksjkz9cqy8udfdm9kc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18tgy7tmpng6qspxgwl4alvc0myq6ln7uvuuk5y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1a8gx9m553deeajj8jcdlp37tgwqyy2c007yx22", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1txv5vqvrx97gm8370js9f7m47vwh2vnqwe9dj2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(53613000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13wsy4r7wl67kdf8hp32szqwxnhuh7wa8dsger7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1a5ps8qwvvy2ejzvy80uz03q06ughcyqeuxauxf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17yyxwztaakgehhc0c03a3wlgyep57dyfswmtyk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s5v89unkxcc0l0juclmgtdeazmfqapakuc342v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tlpzqu6tg3ry82mvxdsc8vnm3aqnqmvqqucksf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w7dndq5ru7v5yuulavfxw5av9dp5e6gw94kzjr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(74592000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17gpgeqe82hznztwnys6v7mwxupz349esuf86s7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18jlkmt8dyl5c43ljdvjnv29urrn2x4rkdnjqew", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(41958000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1u8xff6p6p4uunrpha6m7fskv6j5z49qh06k4sf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ryxlj2dv7ccj9zpg03qcm5zezkunve3nlt5m8e", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p9k8p9zaegef6c50fqs8h2ya2eslcd0q35wd45", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(62937000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fqdskfmgajkjmdhc38lp7e0q44f0l8jn7s2sa7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tvcd8welups8wwgj9jxqpt9027eyzatlkesldz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1n8y37mzlazsuluhdq4pznu45vuphqw6x2x32jc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1q876z0vwc3c6rqa0ngsrm6z37k2h3566n7hgrh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1axu49w3g7zcgsg4mljj3sqvns7dnd5qlsxgclx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v8hayns4zauhwvw07tjf67lknq4ptdq78sct8u", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg107r0ylq95jdantsxr2v376s3mu0ufh6gl2a9fn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yv6grsrwrrq6p49f54h9l8r3uszav4gqc4mczu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vm54wuzq8mfflcacf5za50s5gjle57pxztn20a", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1u6gdcskzef7d40hhsmnuakd66c90xzk5av5jca", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1shelw0khqgg78d64q6gd29yrwkxksefsz27lgs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w9fe863z9kaqmessfujrpusn794np65el6xlgs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z5x7q5v4v7a2pec2ml26w69v5suw970umcruu2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nm2s7g4p5wf0q9y5vvvhj2cfwedvqea3cn0ah8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(372960000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v6lpudgwn25zrc6vczhkrhjargnknwu3akcyr9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1u8s2x5954k6s94kawlyexweatv83dnnxksgqg2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1k3xhm37pfet7sqt2uz9gu3u3uu92w8acndzxek", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1e6z8gv0k8zjcmsggjd4k6smhgeeccu3kurdwhc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg144yjwr38rl5zn4hntwad0su3rk9scpz0rh3kmw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1prpzxqtxkz56d8ur3yq3qsmwg4ge4vssa2rlnu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1drek4v8029rjx78vnkrnsy7gr5nr244a0v5gsg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19hhgamth8ph9tcg9deak35znpxvswzearr2sjs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14nnk576c9vwzycjrmvemgpu76zylvqn7c3cgf6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1x58ve32e0puzuxd2nyf5e3hp8zz90nfakcuk7a", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kxykphkk82x4pk5nzq2kq5f2r6n69k73e6ngsf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1k9han64l9lpreyahaukwl7y27m68t0cfyknqrc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t7ks4gfahlce0f68uy3jyejg8mdp20h0pspgs0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fhya00nlma79csme2pmwfkk7nqa37n29j0kx2w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1njwz8za7zwfw2d7evh8pyp3kteq8y8tvu5tsqf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(30303000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16qj5p6u43uhdp6xcx572cgwusagpyeq4a0hqf2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1k278k46nsvnc9ahx0n94qwt9qul7vea69tsuv9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(67599000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rxx647ckyg8ap608fxuy60sz524j94dcnrltgc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg109l75rczg4a72qdgdamr4acha9938curck00au", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lgjnf7a6gpwp7a08qz0c77zntt28k0w3f0q3zy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qwjzpda94a5ewa5r5ky6p8reffzu5dmu67hrkf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cw7hn6y8zn46mt80ns484f8kuk90aq5f0m3pe4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pwgarshnhf2mzdlshmps4c84w2q5v4jlu9h2zg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(41958000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jmnycnz90nxh9v0cnmht2p679gufdppnagfvxq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(48951000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg179438zdh2k5qsc3mfw7kp42a2lw4eqc2ge8447", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t5hslm089hx3qetp2f7nuhfww2qhuknkqxk22t", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wtcp7m7589vdmsse30rsrlt357dwy0qylusz68", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hspmmtel4musdr3q2v4ceutqpfvq2n9q5plhw7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg160c4hf65fcxewuf7efhum8p78e2y9wz3yjthlj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(142191000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1at8axsjnjq2kdvapg9sf87zjde8rt9vacpzygf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m3mf2t06jz8u5vf9zx8rahwfdnes9x3n4jdg6t", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12t3szfpfpp3rw3nr7fqmq4wkl5wp5msxzsf4pk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16k96em8nk5usnxw38n94skklx2j9rr2w5lyghx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(41958000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p24gny9u8jqsvs7cqn5pkzu4xr6zeelmgw2dxt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13vx59cumygt7z3tdyln06lw6tzpw9f0sg26yqm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1h8n4qh8u66psn6jf55vtq232rhjkr6wxw9ddmm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15qmq6pftdcev62pzk3qgkk2ltksxhmm9aglfsp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1da85gjhaupl8ae7ee66sw9zh585uu9j3u48d87", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(104895000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13l9ph442yjtejq8rj58rpjmkd7lgct4vw6n5js", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1r0a6pwt3gvlzlfjndmrdsxq9qpycj9zzvwwrh6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vrqx9wlh4uglxrl5naz5y0rnzmxkjvnvnxwysg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1up7p4uhgzfzrk6fnqjes0wty9rv7q0yxhk55gc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg187x9xcqyf7dguh30sqhnhjghelmzymgxevscw7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1l8pfkguyv7ay6h7zn5yk5tmlgw5pym59d6saxy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg157rtdtg843fe0d62a5skz2nex980n6puynvwh0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vpdehzac9n8lz22xhz09kstttf8kedp27ek87l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16exd34g4wa535202klvulkddzkx7k584aj455w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lxjq7nd9waasquv478lvza9kpt6eyje0x4pngv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(76923000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gpskhfjea2grzxueuj8lkv0azud09rtymsh28q", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1swqcn946mvgvfpup84msgjs96kx6yejfnyr4ae", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p64d8tal0tc02csp0h9cflxr0lfcaxqx89a5dg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vhdwjygytsd5l8d2fk46awka6usltxe35va3rk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1smqr5tp684g07aekcn0w852wqlme5mn6dsa6hf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y8lzp8danh26us8jef74jgjjpshxnjxhupg5tm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(342657000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dy6c2gvg0802ujsnkhcg3f0vuvqwypu3pe2jwu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1aq33wu0ld26l473ykv9gzc76d8pdyk0pjvhyzs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1f4n4a3xyun8ntgk9skh50t2l884vfyejy5nrp9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18rjjpwnch7p835g7fxjjr8jmt9rvk0n6v0pgpx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1eex3xmwtc42sdc4pjlwlcqg3v37m7mmdgnh6wt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t4fp7etc8hdsqscrp8v6xf38z3a37k5fkaf9cw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hys43qstpwxt802n79rp8lq83xrhhgpaqtw0hd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zx90dztp8f9kcnmg4hggvwz7r0rx0cjky70y3h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1e8mr7m87hq88usp8y7ztxujlq5utdsjw88gxcy", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pa54qmddyzs36ekun2wnv2wkyegjhlrfykat2p", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1u8y8cwzq2umyaglam593r9nu5l2cjtvn2vs9mw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1x4qhn656zx06lr6k8xlefy22gnwg3hjzd33far", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1snca9yjx2ucmla4f60dhmwymcwxmx5nh7n8crs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1f3344ll8ksu6yg7qwvkc247yquc4cc05rlc7l8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dphjqwenetur8p05a3jqr00navx0de09rydpqz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(34965000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1e06pgha4dlcqvsq43udzerh564cw4wk9jgqlsd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yng9j50r23j4nvmqdg6tyjmk4clnrq9dyua603", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z3p5gkh62r0nhfu69w2l9064chkw52ye2jekcd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qayp9f5755ewka96cpat0879re00kv0mlv8cg4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14q60cfz4nm52wru8ue8r3vl9f2v75hj8569v8z", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1yld2e4vudgdza2dc793ww0g49sq0x0x9jwwe29", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v40qwum0avxwuhrygmgchway8596cs52u8xcus", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17vffvqwqjugzfydkmhyq73duj53pm0l5tvyf5x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg180xqk2neysezr77yuz9qp6dfhshttnrpuv0wtn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg152ztwzg7hqkz2ffzm9pstvx09nsw6etexmxenr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cqav2a8xp3l30tkcxucx9gg25uwmfke32jvsga", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12hwvkjvru4j2nttd7dxj3n4aqmxhuklwsrgc3x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(30303000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sjf45fjk04jlyqkgjhwttz9mnctwczylqdllz4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19s4eslttt3xkhtn2f23pzjjkqtxmhh5c0x4jts", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1l0ftwyr5lanlkg6rurk3fq9yur0dna4t0p8wcs", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xsh2hw3kjwz2cswpaenn76m0vggsm32e86pcdz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pcsaq68d70ycvdxxv3tdl6uvamhkg9nvhlh207", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1g7fraxwaxm8f08kvedjark3c8eq2n9ahryfa85", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1zsq8w5fwsn0l5azk6xaglxsphfrpayjthz3vj9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j8m9vh5qmeqh5hqxhljga7dg8l2e3utypr239z", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p77sfv0aefkxst0uuc5vvavuvp08jw3ge2tvzf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vzcw49n2vuzjgs22h0zm7xyhk94hqmns5qvsge", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xvenlkm7vrns5qa3e4weswuc8h8hs99c3pykk2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lwpgncxae7ppr78v4sxv9xgp8ylq5qv5fgvxks", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qjq3c5gx6az9ymmkda28yjvk86a04vus5nzkct", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w9ee57gnduzm4l9h6xwn9tee9pyh8wlrkmueut", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jynrydx7p784tt927h9pa0hlhlnfvtyl823d9j", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vga8kq2ykshvl994sc98ug4ss6l28wg297jqtq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lrwn4yjnhzuyx47ycg43r5nwlkfh2c5efy88fl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1r624n6cuefjyqk0xdn9eh0c6drjefflf8avc7d", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jjx0jndnr98wjflrvtp79mpxf8vgpnc6qd03v8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14v3rftahmxnteg2cnpuwagwmd0d933fxtg79jk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1khq7neq8ct3sd3qa0xjs08zqlhrzrj8r8y8pk9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sfc34ujkys84eeqmegm7lle955y3edytrv8jql", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c7qhmdnxq45m67pcaj7ymzzgcxveg3gq90f2pf", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1h9v9er46xw46r3mmptywt2r46snz403pc95f8r", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19e4fe06cqhspawwmdxmjfj2706wuqy8vcwuym7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rts33gaex2hnp45yjqzenxk263jmczw09jxu44", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qxh8dfj72vymqnqamatdn5e8zmun5ggxkg5rxr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dqlkv625esnmc30k978ygjd8w84pnaxcmhlq5w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cccuhn0slxng278khwp662y8wapfztestnzyen", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c2sld394e9slmmsct6epngl3wp8xfnj8huae4h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1d9u6q0he32ggex3mlqqs3avsha5du0yw3lrvsg", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ts42636c908ucra9hdjfjr0txtxuuatl294pzk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18xhs7tmx833m36y7gvq9y4pqtymuu9xat3lnu2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(32634000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1snf48lzfx7t05ld62vn0er5g2kpqlrm4dtp9a6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13zvrzx4jllv7vyc3e4nfq02qlxjy0z60ur50hz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qsk66jfz02x9r6433xdj5ptkpfp07ytkk9glzu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1plle8dy39jq0m4a4ppqqt04q0zqk28xlhd5kwx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qrg60yrf7avsjegk0hrewecydu5atzrdy4vgu8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12hrhl7jv3jsdpknm2402c9cr0ksfzpex57kd3t", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rt3qgjs5g5mu79mfxwm6cx4nj9ufg0e6mnzsjl", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1x5d0lvwcdgj60cgcx5fm7ap4txpg5e0fxupyv7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t5zgnfz0jrvflywjmgs95rey3un57n426lhgec", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lt3zkefmj9y3w06ca30fpnnx94gxk4p3e5fa2k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15mzm26hcdu8rqgg2lpps6gyvm9dt8943cpyvdj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vmw63s8gd5ej3kenfme9rjxxf92k27e7x9v3kt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dtknkwg2wknp99v5w6jhsa8s6equ838hp4qu0y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j7x0wrj0dh57pmnxx07kp8nnxmgp29m5lhj3em", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1v6umul8nun2xaml2y24zrhwc3gx2lv382xg3w2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(23310000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fmpe639njut6spqja0z67y08aj5g3ynnfcpzt5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sm6g9yd7jym6nkccq6nkyhahd808eydt6xx9p3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jwweg4kzakwax2zzwlqs3petaq949gv6zrg92c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sp4l6xvg92rsh2yz2h02kcme4ul3pjcu9psnjm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jnzqc9c5fxfmmdttftaw92ada4wgepkmsn099n", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15su23rd34k89e3zpu65f2w2yfn9dcaqzcsuq4l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ghh9phew5lp463trajrk9wvup4lxfu77q6phjh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s7kyhfe3aghmssvuu0ek9zdlvc5rcu8c8hwqz7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cyepvt5kayjzsa76ft98ud8mrpvh3acxanngzx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1pvcn0jjv2mugdevlue9vj2ks7ryjgtccjqh9fd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18av2j9mzvltakcr04ld7s6j8dg2h4q8cugy7u5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1n8j9xve22sh5arf2kfdtdde46udztada5cf5r8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sz8kx4hcfzp4an6ymmc3dfpeetu8058lpl6ryv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1het5ulhuwssp9stmyslnmzx3y699culln3n7t4", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vgnnzud6vk67zwz2ksl56hysjdz5w088xtat5r", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(55944000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mk2yasfjljrvrxrjwj5823xh6lctkjc9gyyq7e", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ptyzewnns2kn37ewtmv6ppsvhdnmeapvd9429c", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1jk67ss5e3u55d87g2pexuhyaqcyg47m0avmgyu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1deause75qhyz0mugkpwqfptczclmk9hfv9k2dc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13acu2gmykq658hht7x7hafhrcjlpkcrycnn78d", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(30303000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s08rv2zz06hs750slkglfzs96xvgd8hpcvj640", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nul93xq4es683ee03rctw6vqhmhd7agg87z6g5", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gt0mt8vm5wa6a0t6un6dvs0x3a83twm7f4nh5w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rsks3gfv2rcf3atj8gs09yyhrftyn7j58lk0hn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wtdcsxn8jdvxqyg5yk33cgcjn4zupe93l7pelw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j37aljze5knsr5rh6pr7wlfpkglx3vv454nq2m", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y0fsxt2an8f9cgteqk5n3yrpu3ls4w5r5tpwye", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wdwss6h9xy6dr0nzu7j83n7glkvqndljnm6j5s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vt37stwlqhxzl8t5qlecu74mrm0ffav229gv27", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vphuauezcyprxlrqr20tg3nlgtvmeyudszntw8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kpuurcmjv0fhan4z923cpadjrpn57qre0j48aq", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ajjg8l3qq0aqnu5r4mcj9curegc8aj8jxhhp0x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17y3wjy5t7cyz30g7d4t2ex5czl5ker9qzz92k6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg107vjqq2g0ksant3ga08s6am7j9pk7vwqu39xcz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(130536000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1msv68cjavuesayq84x62wy7s536uc3evjj233l", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mghyndah0dlqvdpxthawaphafx0q30y5mum8x8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dd0ng5nxe823vhkd4wwa2tpucfgh6nrttl99yv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17fvj54vszd55sxgccu942ckpkdv3vxwfzlrmjh", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mcrfu6hc00hf5hupj9zyt98td7384q88vaj7zn", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dgmmfk3uqa9xj7u0y3rqe6xf6ur2q390mpmqka", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c60qxt64946vww87v7vq2wd9vetwtfgqq8gpkk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1s940y4zvkegsqm8mc5nqjxfnwdmyst95jk8kn2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cusfg2hmhtel52avjpzeddgzy6xycuezrsgef0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17ry2hplzzvsjuhdpq7mj2gejvthkhhcj488qt0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kdsavjlatpqagmj46my3akzgz9zuyclkncjgxm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y9vq20zaeljcch80uh4kgaw8gczpw7wpl0k72h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tx2uajd6jkazwz89dc42gw3ewjly0aqsr2ha3n", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1my56tj9lrtsj0lelfwyhw4k8vree357r2z5l7d", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mkjcsmard8jf6wmnf5q54yavqqt4hv6lgt9a8e", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1556nk7vnt90qhd599xnew77frmsl3w6l58csdz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1afjulnwyhhq2gqpx6tfwf9t8jny4ejm4f2kj7k", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lcfgsnhlgxtq8dklaljz87d4yak666k5lpecqr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1h0qwpv0l2spu7h988dvh92q0v08gkkwsn6nzlw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1ssmeg0jhyr57kwjlt508lgz8jeqsfx85t2yjlv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1xxzc8awwllqq4waxtej8u8vlyr89lmuynqu0pm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vwx523xngkc68rl3pqcjqwfuv54awpwqw0nxmk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j74acake6d2mfx4ra4rx6p7cuv2z8x8qvkhdsm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17uwr4v9y2883d5ql3dr5wzw3uppt2yurjl7wgk", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m67vytjqkkdcwjxgqpuc7vldvunsz7ra3e736y", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1kdze9r6y8jx9ljjxrn3lzslwcw8vpx7p97q0ve", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1thxwe4r4036lezkpuajj9uufvm0f7rja4ex7z9", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg15pks8v7a7vy5y0ya6l5jgwwp3pxgrayhl758l6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1f9psk667z9dhvxku7eaps33fsysttdzeng89dc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m07cw59gph6nh4kcje20arwe2ztf7lmday865w", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y7nms8xs397z0gjvxhmstcncsk9y4lpzfw3nyp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14cqc6vaxv7nl225vgfd8mvdpx2v0vcjr8fhr60", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sywqmssxxgvw5544effpqw6mn9xzdn3ctfflar", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1vaj3wce6lz3lmfd7wklzhgwhwa5nrqspwh4alz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg120xwn5r4nq30cgrxlvuvvawsweantnke896rmu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17l9y74v8re90jgcsrsqa2uus09jkd89fhcqh76", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1grh0k6pmjp4a6c5y39aj7nhf3g827g4anszuxe", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19gqzgxe99gq6du2va5p0ahszklrumpkflxgft8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg17f5tvrtlayh0tf0dtwpjz9j2f77fs849uwses2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t0dsu39y4cqzv8aa85m4k3dqtcff55gkjfsq4p", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1z379gcx3x6xthe5sey6t0lktvp800pnlswrpfm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg19vhf9gpskfynxcptceyrxnu9pf7yzq6ryucntc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10gspc953t0smgs4as886varkatcmjrgsk3kmjz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg10tgegahhm8xcf5zm927364nrukxznc9qkck9th", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wsuvf5rt4ftr40axdq4m8dkwdtnefqfpwcp7ju", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tnnrk252p8zxruykqtpm5sta7rsrpchqvet7z6", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(130536000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18ve637mup6d3z80qxf0n3d27rvedyxffcvl2fd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1cujhq72xqa5t5pvz3zjn0rfqmdl2sl0hxvzerw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg122fay3nlevumegezput77ng8263w7tfpm40q7x", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1380y94cvu02n72afx5zg4geu6l47t00uplqm8r", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p36myn49zp4y52n0vg2ea4rvesr0urryp9walr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gkyaffl4t63lafgmquvygsanh9xh8d6jytdg64", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dp4t4k6skqtemjzwunxhna77fk3y8upaaxge9z", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg175vqr7shng96xcz3z3nj7h4dmpe8mtyalyuf4e", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(39627000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1afn6qy27mxyuj8at3axuz4e888uyy5ews9jfg0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1fgwaqndwpl2hmk6vv98vt07fkefvx46wwx27ds", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(34965000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m87v8nlrxlnezy7cdh5u7ecjjvk8l3cwtmxt8z", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c5gurl2vqae3v5t25aswnh0x66xkp994stlnvd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(25641000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wnnq8zw5s4elhnl6znyza82q73x7w8g3yu0xny", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(58275000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12rnu5pl8rd0nvjym6qx45dddv85y5sanvy5gww", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14x8f347h4jvl9574fzl4v7z8etys4jsjumph47", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1sydtq7f5f0xtekn7m8lt4adegq4zc4wcuq7tke", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hadpkatv63gd5mkdhlm5c9swm2k5e370y20qj7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1nevrswxvenflzlqymn54n3nxvc4ug23qwu5f2v", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1lzyqyrj54fc0cjjhmc3kc09z8kkhvr48hn5v57", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1tks6g2zg9sxvdha28frhm7gjkawq8afehjgnhm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rrrmtxt8gxaxt5ffrvnusm7hrq0ul2z2nvfvlt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(16317000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg169xaq8zq683t69jghd08aykg863lfmd2jqr8dc", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1krm2dexx0gcrzxhtvll8k4j65n6z6faqcum4u7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1d6v6rq4qnfgtqx2q4rpw40pa4g2wxszeva7mjj", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1gvphz7e20qqdqdcupyzcgusz7290lydx9amj2h", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1qtztrn55m5ucszckmquu2y2mxa70aej0rdawql", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg12wyh5wdaq7ej0tz5v8nkkgauz8cvlcdfvyptpt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(37296000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1p06guptkql3eannp5cl5qeqh27xwhzjqfpr5qu", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wtvvnpmwptwdx6hym0fgjaj09z6p49axc8egug", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1j3vdrdacteqh6u23hnmrfdj8nmg5paflzv0evp", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1y7zfelflwnm9aaldd9xp5x4p8azn8vdd96hymv", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1t9cztvjgd5ydhakyt64nda4s8a97gn2lxm6dc3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14tdg37jf4x0vkdwjszs5npd0gxndew5mzftf8e", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(9324000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg160220jz36846rxctu44rnv85wpd2cu6cmzml0r", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg127377nerp0zah7t2hca6wppnc29d2sfcfdlqpm", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wc4mj2vjkpyt4ummdjxzfgahndpmql3y96292a", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1mvk8603ksv5spt9epgruemcqdh3qruzej42xnd", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(13986000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1uaux0dl3gh40y9czng2eqn2d52uu8afvnmzq6s", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18perfd479atcgpqstfh3nkkt34cz20vahl3tlx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(6993000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg14qc4rmffuymfm0l6pzyzn6emw9g348acty0ta2", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(27972000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1dph7z7w3fp9ccdd9rkzx0fjthvsuqqljxg0txx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(11655000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1c2w7sxnp423935c47zwv32rgmk2zmgt8s76ygt", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(34965000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1m3ymkn82x2yrevtg9nm6rqkzp63fj2u2j630d7", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1hc7a3gtn6l60x4w66jv9x7dupqw4gqy08np2cx", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(65268000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg137kc3ax77uwrymknz0af686sh5sqzk9qfex8p0", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(4662000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1wx3gcudvtxnsrvvhqzgqkuqxylmsqdc7z7ayy8", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16d6rm93fs5d5e5r2fg5ynpchhx6dfwwvna6293", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg13lzly6934ymemk6k3tzvlu3tl7v7gzq3qpldxr", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(256410000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1w6dpa2l2fc3v2rc9dpuhqg4lt6ykvlqgrh0a87", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(48951000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg18u5n3augn6q8z7wyu8mv97y6a6su7v3uy5lck3", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(20979000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg16vh6tnpa48nd5stqs9y42vsqs5609kpftz6qvz", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(2331000000)), + ), + ActionCompleted: []bool{false}, + }, + { + Address: "pasg1rffel43l8mhy8ywcevnx5rzptjkarl9g8j8zqw", + ClaimableAmount: types.NewCoins( + types.NewCoin("upasg", types.NewInt(18648000000)), + ), + ActionCompleted: []bool{false}, + }, +} diff --git a/app/upgrades/v2.5.0/migrations.go b/app/upgrades/v2.5.0/migrations.go new file mode 100644 index 0000000..77a4fa9 --- /dev/null +++ b/app/upgrades/v2.5.0/migrations.go @@ -0,0 +1,24 @@ +package v2_5 + +var AddressMigrations = []AddressMigration{ + { + OldAddress: "pasg19zkz9x0u84a0ykzm8lggwy5x0s0gcnwskark5c", + NewAddress: "pasg14ngd35ndr0ajxfw5k79zpt3hatwcanygtds5w7", + }, + { + OldAddress: "pasg1sap5junfzydgqcll4ezyl4sh4yeekl64qkna34", + NewAddress: "pasg1dnn9gvrjr2rxwma5n0mrcdz08xld0mjr56ktxf", + }, + { + OldAddress: "pasg1lel0s624jr9zsz4ml6yv9e5r4uzukfs7hwh22w", + NewAddress: "pasg1cn5rqy7psjm7h60y8524afvffuktllxh947tx0", + }, + { + OldAddress: "pasg1vl7u3a9p37ajemv7wyvuegh7mhujtmdvpt8apu", + NewAddress: "pasg1nma4rcj9nly549jjtmnra0x0n6a9dvg3cp0a4y", + }, + { + OldAddress: "pasg1pfdyn3nzajult9e6s2nvhmlgaeglh8lljdv779", + NewAddress: "pasg1nvqpvagr7r8t3s7ncmqu904wtwhc9uddvjrgzz", + }, +} diff --git a/app/upgrades/v2.5.0/min_commission.go b/app/upgrades/v2.5.0/min_commission.go new file mode 100644 index 0000000..8c85c24 --- /dev/null +++ b/app/upgrades/v2.5.0/min_commission.go @@ -0,0 +1,24 @@ +package v2_5 + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + staking "github.com/cosmos/cosmos-sdk/x/staking/keeper" +) + +// SetValidatorsMinCommissionRate update the minimum commission rate of the validator +// whose commission rate is below the minimum commission rate. +func SetValidatorsMinCommissionRate(ctx sdk.Context, sk staking.Keeper, minCommissionRate sdk.Dec) error { + validators := sk.GetAllValidators(ctx) + + for _, validator := range validators { + if validator.Commission.Rate.IsNil() || validator.Commission.Rate.LT(minCommissionRate) { + // call before validator modified hooks in staking keeper + sk.BeforeValidatorModified(ctx, validator.GetOperator()) + validator.Commission.Rate = minCommissionRate + validator.Commission.UpdateTime = ctx.BlockTime() + sk.SetValidator(ctx, validator) + } + } + + return nil +} diff --git a/app/upgrades/v2.5.0/replace_multisig_addrs.go b/app/upgrades/v2.5.0/replace_multisig_addrs.go new file mode 100644 index 0000000..06c5bda --- /dev/null +++ b/app/upgrades/v2.5.0/replace_multisig_addrs.go @@ -0,0 +1,381 @@ +package v2_5 + +import ( + "fmt" + + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + pageQuery "github.com/cosmos/cosmos-sdk/types/query" + auth "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + authz "github.com/cosmos/cosmos-sdk/x/authz" + authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" + bank "github.com/cosmos/cosmos-sdk/x/bank/keeper" + feegrant "github.com/cosmos/cosmos-sdk/x/feegrant" + feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" + gov "github.com/cosmos/cosmos-sdk/x/gov/keeper" + staking "github.com/cosmos/cosmos-sdk/x/staking/keeper" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + claim "github.com/envadiv/Passage3D/x/claim/keeper" +) + +type AddressMigration struct { + OldAddress string `json:"old_address"` + NewAddress string `json:"new_address"` +} + +type AddressMap map[string]string + +type OldDelegation struct { + Delegation stakingtypes.Delegation + DelegationAmount sdk.Int +} + +func MigrateMultisigAddresses( + ctx sdk.Context, + appCodec codec.Codec, + migrations []AddressMigration, + bk bank.Keeper, + ak auth.AccountKeeper, + sk staking.Keeper, + gk gov.Keeper, + azk authzkeeper.Keeper, + fk feegrantkeeper.Keeper, + ck claim.Keeper, +) error { + addressMap := AddressMap{} + + for _, m := range migrations { + oldAddr, err := sdk.AccAddressFromBech32(m.OldAddress) + if err != nil { + return fmt.Errorf("invalid bech32 old address: %s, error: %w", m.OldAddress, err) + } + + oldAccount := ak.GetAccount(ctx, oldAddr) + if oldAccount == nil { + return fmt.Errorf("old account %s not found", m.OldAddress) + } + + newAddr, err := sdk.AccAddressFromBech32(m.NewAddress) + if err != nil { + return fmt.Errorf("invalid bech32 new address: %s, error: %w", m.NewAddress, err) + } + addressMap[m.OldAddress] = newAddr.String() + + if err := migrateAccount(ctx, appCodec, ak, oldAccount, newAddr); err != nil { + return fmt.Errorf("failed to migrate account: %w", err) + } + + // unbond old delegation + delegations, err := unbondOldDelegations(ctx, sk, oldAddr) + if err != nil { + return fmt.Errorf("failed to unbond old delegations: %w", err) + } + + // send spendable balance from old account to new account + if err := migrateBalances(ctx, bk, oldAddr, newAddr); err != nil { + return fmt.Errorf("failed to migrate balances: %w", err) + } + + if err := migrateDelegations(ctx, sk, newAddr, delegations); err != nil { + return fmt.Errorf("failed to migrate delegations: %w", err) + } + + if err := migrateAuthorizations(ctx, azk, oldAddr, newAddr); err != nil { + return fmt.Errorf("failed to migrate authorizations: %w", err) + } + + if err := migrateFeeGrants(ctx, fk, oldAddr, newAddr); err != nil { + return fmt.Errorf("failed to migrate feegrants: %w", err) + } + + // transfer remaining vested tokens from old to new account + oldAccount = ak.GetAccount(ctx, oldAddr) + oldAcc, ok := oldAccount.(*vestingtypes.PeriodicVestingAccount) + if ok && !oldAcc.DelegatedVesting.Empty() { + newAccount := ak.GetAccount(ctx, newAddr) + newAcc, _ := newAccount.(*vestingtypes.PeriodicVestingAccount) + newAcc.DelegatedVesting = newAcc.DelegatedVesting.Add(oldAcc.DelegatedVesting...) + ak.SetAccount(ctx, newAcc) + oldAcc.DelegatedVesting = sdk.NewCoins() + ak.SetAccount(ctx, oldAcc) + } + + // send again spendable balance from old account to new account to avoid missing balances + if err := migrateBalances(ctx, bk, oldAddr, newAddr); err != nil { + return fmt.Errorf("failed to migrate balances: %w", err) + } + } + + // migrate gov votes + migrateGovVotes(ctx, gk, addressMap) + + return nil +} + +// Migrate account information based on type +func migrateAccount(ctx sdk.Context, appCodec codec.Codec, ak auth.AccountKeeper, oldAccount authtypes.AccountI, + newAddr sdk.AccAddress, +) error { + switch oldAcc := oldAccount.(type) { + case *vestingtypes.PeriodicVestingAccount: + return migrateVestingAccount(ctx, appCodec, ak, oldAcc, newAddr) + + case *authtypes.BaseAccount: + return migrateBaseAccount(ctx, ak, newAddr) + + default: + return fmt.Errorf("not supported account type for upgrade") + } +} + +// Migrate vesting account +func migrateVestingAccount(ctx sdk.Context, appCodec codec.Codec, ak auth.AccountKeeper, oldAcc *vestingtypes.PeriodicVestingAccount, + newAddr sdk.AccAddress, +) error { + // copy old account to new vesting account + accBytes, err := appCodec.Marshal(oldAcc) + if err != nil { + return err + } + + var newVestingAccount vestingtypes.PeriodicVestingAccount + if err := appCodec.Unmarshal(accBytes, &newVestingAccount); err != nil { + return err + } + + // update base account details + newVestingAccount.BaseAccount = authtypes.NewBaseAccountWithAddress(newAddr) + newVestingAccount.DelegatedFree = sdk.NewCoins() + newVestingAccount.DelegatedVesting = sdk.NewCoins() + ak.SetAccount(ctx, &newVestingAccount) + + // Clear old account's vesting periods + for i := range oldAcc.VestingPeriods { + oldAcc.VestingPeriods[i].Length = 0 + } + // set start time earlier than context time + oldAcc.StartTime = ctx.BlockTime().Unix() - 10 + oldAcc.EndTime = ctx.BlockTime().Unix() + ak.SetAccount(ctx, oldAcc) + + return nil +} + +// Migrate base account +func migrateBaseAccount(ctx sdk.Context, ak auth.AccountKeeper, newAddr sdk.AccAddress) error { + newBaseAcc := authtypes.NewBaseAccountWithAddress(newAddr) + ak.SetAccount(ctx, newBaseAcc) + return nil +} + +func unbondOldDelegations(ctx sdk.Context, sk staking.Keeper, + oldAddr sdk.AccAddress, +) ([]OldDelegation, error) { + // complete all existing redelegations + sk.IterateDelegatorRedelegations(ctx, oldAddr, func(red stakingtypes.Redelegation) (stop bool) { + // set all entry completionTime to now so we can complete re-delegation + redelegationSrc, _ := sdk.ValAddressFromBech32(red.ValidatorSrcAddress) + redelegationDst, _ := sdk.ValAddressFromBech32(red.ValidatorDstAddress) + + blockTime := ctx.BlockTime() + for i := range red.Entries { + red.Entries[i].CompletionTime = blockTime + } + sk.SetRedelegation(ctx, red) + _, err := sk.CompleteRedelegation(ctx, oldAddr, redelegationSrc, redelegationDst) + if err != nil { + panic(err) + } + + return false + }) + + delegations := sk.GetAllDelegatorDelegations(ctx, oldAddr) + oldDelegations := []OldDelegation{} + for _, delegation := range delegations { + valAddr := delegation.GetValidatorAddr() + shares := delegation.GetShares() + + validator, found := sk.GetValidator(ctx, valAddr) + if !found { + return oldDelegations, fmt.Errorf("validator not found: %s from delegation %s", + delegation.ValidatorAddress, delegation.DelegatorAddress) + } + + delegatedAmount := validator.TokensFromShares(shares).TruncateInt() + + _, err := sk.Undelegate(ctx, oldAddr, valAddr, shares) + if err != nil { + return []OldDelegation{}, err + } + + oldDelegations = append(oldDelegations, OldDelegation{ + Delegation: delegation, DelegationAmount: delegatedAmount, + }) + } + + // complete all existing unbonding delegations + undelegations := sk.GetAllUnbondingDelegations(ctx, oldAddr) + for _, ubd := range undelegations { + validatorValAddr, _ := sdk.ValAddressFromBech32(ubd.ValidatorAddress) + + blockTime := ctx.BlockTime() + for i := range ubd.Entries { + ubd.Entries[i].CompletionTime = blockTime + } + + sk.SetUnbondingDelegation(ctx, ubd) + _, err := sk.CompleteUnbonding(ctx, oldAddr, validatorValAddr) + if err != nil { + return oldDelegations, err + } + } + + return oldDelegations, nil +} + +// Migrate delegations,redelegations and unbonding delegations +func migrateDelegations(ctx sdk.Context, sk staking.Keeper, newAddr sdk.AccAddress, + delegations []OldDelegation, +) error { + // update delegations, unbond and delegate from new address + for _, delegation := range delegations { + validator, found := sk.GetValidator(ctx, delegation.Delegation.GetValidatorAddr()) + if !found { + return fmt.Errorf("validator not found: %s from delegation %s", + delegation.Delegation.ValidatorAddress, delegation.Delegation.DelegatorAddress) + } + + _, err := sk.Delegate(ctx, newAddr, delegation.DelegationAmount, stakingtypes.Unbonded, validator, true) + if err != nil { + return err + } + } + + return nil +} + +// Migrate authorizations +func migrateAuthorizations(ctx sdk.Context, azk authzkeeper.Keeper, oldAddress, newAddress sdk.AccAddress) error { + var allGrants []*authz.GrantAuthorization + var nextKey []byte + + for { + goCtx := sdk.WrapSDKContext(ctx) + resp, err := azk.GranterGrants(goCtx, &authz.QueryGranterGrantsRequest{ + Granter: oldAddress.String(), + Pagination: &pageQuery.PageRequest{ + Limit: 100, + Key: nextKey, + }, + }) + if err != nil { + return err + } + + allGrants = append(allGrants, resp.Grants...) + nextKey = resp.Pagination.NextKey + + // If nextKey is nil, we've retrieved all pages + if nextKey == nil { + break + } + } + + // Process all grants + for _, grant := range allGrants { + granteeAddr, err := sdk.AccAddressFromBech32(grant.Grantee) + if err != nil { + return fmt.Errorf("invalid bech32 grantee address: %s, error: %w", grant.Grantee, err) + } + + auth, ok := grant.Authorization.GetCachedValue().(authz.Authorization) + if !ok { + return fmt.Errorf("invalid authorization for granter: %s, grantee: %s", grant.Granter, grant.Grantee) + } + + // Delete old grant + if err := azk.DeleteGrant(ctx, granteeAddr, oldAddress, auth.MsgTypeURL()); err != nil { + return err + } + + // Create new grant with the updated address + if err := azk.SaveGrant(ctx, granteeAddr, newAddress, auth, grant.Expiration); err != nil { + return err + } + } + + return nil +} + +// Migrate fee grants +func migrateFeeGrants(ctx sdk.Context, fk feegrantkeeper.Keeper, oldAddress, newAddress sdk.AccAddress) error { + var allGrants []*feegrant.Grant + var nextKey []byte + + for { + goCtx := sdk.WrapSDKContext(ctx) + resp, err := fk.AllowancesByGranter(goCtx, &feegrant.QueryAllowancesByGranterRequest{ + Granter: oldAddress.String(), + Pagination: &pageQuery.PageRequest{ + Limit: 100, + Key: nextKey, + }, + }) + if err != nil { + return err + } + + allGrants = append(allGrants, resp.Allowances...) + nextKey = resp.Pagination.NextKey + + // If nextKey is nil, we've retrieved all pages + if nextKey == nil { + break + } + } + + // Process all grants + for _, grant := range allGrants { + granteeAddr, err := sdk.AccAddressFromBech32(grant.Grantee) + if err != nil { + return fmt.Errorf("invalid bech32 grantee address: %s, error: %w", grant.Grantee, err) + } + + g, ok := grant.Allowance.GetCachedValue().(feegrant.FeeAllowanceI) + if !ok { + return fmt.Errorf("invalid fee grant for granter: %s, grantee: %s", grant.Granter, grant.Grantee) + } + + // Create new grant with the updated address + if err := fk.GrantAllowance(ctx, newAddress, granteeAddr, g); err != nil { + return err + } + } + + return nil +} + +// Migrate balances +func migrateBalances(ctx sdk.Context, bk bank.Keeper, oldAddr, newAddr sdk.AccAddress) error { + spendable := bk.SpendableCoins(ctx, oldAddr) + if err := bk.SendCoins(ctx, oldAddr, newAddr, spendable); err != nil { + return err + } + return nil +} + +// Migrate gov votes +func migrateGovVotes(ctx sdk.Context, gk gov.Keeper, addressMap AddressMap) { + votes := gk.GetAllVotes(ctx) + + for _, vote := range votes { + newAddr, found := addressMap[vote.Voter] + if found { + vote.Voter = newAddr + gk.SetVote(ctx, vote) + } + } +} diff --git a/app/upgrades/v2.5.0/replace_multisig_addrs_test.go b/app/upgrades/v2.5.0/replace_multisig_addrs_test.go new file mode 100644 index 0000000..52650d9 --- /dev/null +++ b/app/upgrades/v2.5.0/replace_multisig_addrs_test.go @@ -0,0 +1,340 @@ +package v2_5_test + +import ( + "testing" + "time" + + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmtypes "github.com/tendermint/tendermint/types" + + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + "github.com/cosmos/cosmos-sdk/x/authz" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + distributionkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + "github.com/cosmos/cosmos-sdk/x/feegrant" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + app "github.com/envadiv/Passage3D/app" + v2_5 "github.com/envadiv/Passage3D/app/upgrades/v2.5.0" +) + +type UpgradeTestSuite struct { + suite.Suite + + app *app.PassageApp + ctx sdk.Context + oldAddr sdk.AccAddress + newAddr sdk.AccAddress + oldPrivKey *secp256k1.PrivKey + newPrivKey *secp256k1.PrivKey + migrations []v2_5.AddressMigration + vestingAmount sdk.Coins // Amount that is vesting + totalBalance sdk.Coins // Total balance including vesting and non-vesting +} + +func TestUpgradeTestSuite(t *testing.T) { + suite.Run(t, new(UpgradeTestSuite)) +} + +func (s *UpgradeTestSuite) SetupTest() { + // Generate test addresses + s.oldPrivKey = secp256k1.GenPrivKey() + s.newPrivKey = secp256k1.GenPrivKey() + accKey := secp256k1.GenPrivKey() + s.oldAddr = sdk.AccAddress(s.oldPrivKey.PubKey().Address()) + s.newAddr = sdk.AccAddress(s.newPrivKey.PubKey().Address()) + accAddr := sdk.AccAddress(accKey.PubKey().Address()) + + s.vestingAmount = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000))) + s.totalBalance = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1500))) + + // Create old vesting account for genesis + vestingStart := time.Now().Unix() + oldBaseAcc := authtypes.NewBaseAccount(s.oldAddr, s.oldPrivKey.PubKey(), 1, 0) + oldVestingAcc := vestingtypes.NewPeriodicVestingAccount( + oldBaseAcc, + s.vestingAmount, + vestingStart, + []vestingtypes.Period{ + {Length: 50000, Amount: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(500)))}, + {Length: 50000, Amount: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(500)))}, + }, + ) + + accAcc := authtypes.NewBaseAccount(accAddr, accKey.PubKey(), 2, 0) + // Setup the app with genesis accounts + genAccs := []authtypes.GenesisAccount{ + accAcc, + oldVestingAcc, + } + balances := []banktypes.Balance{ + { + Address: s.oldAddr.String(), + Coins: s.totalBalance, + }, + } + + // Create validator + valPrivKey := secp256k1.GenPrivKey() + valPubKey := valPrivKey.PubKey() + tmPubKey, err := cryptocodec.ToTmPubKeyInterface(valPubKey) + require.NoError(s.T(), err) + + validator := tmtypes.NewValidator(tmPubKey, 1) + valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{validator}) + + // Setup the app with genesis state + s.app = app.SetupWithGenesisValSet(s.T(), valSet, genAccs, balances...) + s.ctx = s.app.BaseApp.NewContext(false, tmproto.Header{Height: 1, Time: time.Now().Add(time.Second * 120)}) + + s.app.Commit() + + // Create migration data + s.migrations = []v2_5.AddressMigration{ + { + OldAddress: s.oldAddr.String(), + NewAddress: s.newAddr.String(), + }, + } +} + +func (s *UpgradeTestSuite) checkInvariants() { + // Check supply invariants + // totalSupply := s.app.BankKeeper.GetSupply(s.ctx, sdk.DefaultBondDenom) + // bondedTokens := s.app.StakingKeeper.TotalBondedTokens(s.ctx) + // notBondedTokens := s.app.BankKeeper.GetAllBalances(s.ctx, s.app.StakingKeeper.GetNotBondedPool(s.ctx).GetAddress()) + // require.True(s.T(), totalSupply.Amount.Equal(bondedTokens.Add(notBondedTokens.AmountOf(sdk.DefaultBondDenom)))) + + // Check module invariants + res, stop := bankkeeper.AllInvariants(s.app.BankKeeper)(s.ctx) + assert.False(s.T(), stop, res) + + res, stop = stakingkeeper.AllInvariants(s.app.StakingKeeper)(s.ctx) + assert.False(s.T(), stop, res) + + res, stop = distributionkeeper.AllInvariants(s.app.DistrKeeper)(s.ctx) + assert.False(s.T(), stop, res) +} + +func (s *UpgradeTestSuite) TestMigrateMultisigAddresses() { + // Setup delegation + delegationAmt := sdk.NewInt(500) + validator := s.app.StakingKeeper.GetValidators(s.ctx, 1)[0] + + // Create another validator for redelegation + valPrivKey := secp256k1.GenPrivKey() + valPubKey := valPrivKey.PubKey() + validator2, err := stakingtypes.NewValidator(sdk.ValAddress(valPubKey.Address()), valPubKey, stakingtypes.Description{}) + require.NoError(s.T(), err) + validator2.Status = stakingtypes.Bonded + s.app.StakingKeeper.SetValidator(s.ctx, validator2) + s.app.StakingKeeper.AfterValidatorCreated(s.ctx, validator2.GetOperator()) + amt := sdk.NewInt(1000000) + val2Addr := sdk.AccAddress(valPubKey.Address()) + require.NoError(s.T(), s.app.BankKeeper.MintCoins(s.ctx, minttypes.ModuleName, + sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, amt)))) + require.NoError(s.T(), s.app.BankKeeper.SendCoinsFromModuleToAccount(s.ctx, minttypes.ModuleName, + val2Addr, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, amt)))) + _, err = s.app.StakingKeeper.Delegate(s.ctx, val2Addr, amt, + stakingtypes.Unbonded, validator2, true) + require.NoError(s.T(), err) + + // Get the old vesting account before migration + oldAcc := s.app.AccountKeeper.GetAccount(s.ctx, s.oldAddr) + require.NotNil(s.T(), oldAcc) + oldVestingAcc, ok := oldAcc.(*vestingtypes.PeriodicVestingAccount) + require.True(s.T(), ok) + originalVesting := oldVestingAcc.OriginalVesting + vestingPeriods := oldVestingAcc.VestingPeriods + startTime := oldVestingAcc.StartTime + + // Perform delegation + _, err = s.app.StakingKeeper.Delegate( + s.ctx, + s.oldAddr, + delegationAmt, + stakingtypes.Unbonded, + validator, + true, + ) + require.NoError(s.T(), err) + + // Create an unbonding delegation + unbondAmt := sdk.NewInt(200) + shares, err := s.app.StakingKeeper.ValidateUnbondAmount(s.ctx, s.oldAddr, validator.GetOperator(), unbondAmt) + require.NoError(s.T(), err) + _, err = s.app.StakingKeeper.Undelegate(s.ctx, s.oldAddr, validator.GetOperator(), shares) + require.NoError(s.T(), err) + + // Create a redelegation + redelegateAmt := sdk.NewInt(50) + shares, err = s.app.StakingKeeper.ValidateUnbondAmount(s.ctx, s.oldAddr, validator.GetOperator(), redelegateAmt) + require.NoError(s.T(), err) + _, err = s.app.StakingKeeper.BeginRedelegation(s.ctx, s.oldAddr, validator.GetOperator(), validator2.GetOperator(), shares) + require.NoError(s.T(), err) + + // Setup authorization + grantee := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address()) + authorization := authz.NewGenericAuthorization(sdk.MsgTypeURL(&banktypes.MsgSend{})) + expiration := time.Now().Add(time.Hour) + err = s.app.AuthzKeeper.SaveGrant(s.ctx, grantee, s.oldAddr, authorization, expiration) + require.NoError(s.T(), err) + + // Setup feegrant + basicAllowance := &feegrant.BasicAllowance{ + SpendLimit: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100))), + Expiration: &expiration, + } + err = s.app.FeeGrantKeeper.GrantAllowance(s.ctx, s.oldAddr, grantee, basicAllowance) + require.NoError(s.T(), err) + + // Setup gov votes to test it + var proposalID uint64 = 1 + weightedVote := []govtypes.WeightedVoteOption{ + {Option: govtypes.OptionYes}, + } + vote := govtypes.NewVote(proposalID, s.oldAddr, weightedVote) + s.app.GovKeeper.SetVote(s.ctx, vote) + + // fetch balances and state before migration + oldSpendableBalance := s.app.BankKeeper.SpendableCoins(s.ctx, s.oldAddr) + oldTotalBalance := s.app.BankKeeper.GetAllBalances(s.ctx, s.oldAddr) + + oldDelegations := s.app.StakingKeeper.GetAllDelegatorDelegations(s.ctx, s.oldAddr) + require.Len(s.T(), oldDelegations, 2) + + oldUnbonding := s.app.StakingKeeper.GetAllUnbondingDelegations(s.ctx, s.oldAddr) + require.Len(s.T(), oldUnbonding, 1) + + oldRedelegations := s.app.StakingKeeper.GetAllRedelegations(s.ctx, s.oldAddr, validator.GetOperator(), validator2.GetOperator()) + require.Len(s.T(), oldRedelegations, 1) + + // get staking module accounts balances + oldBondedPoolBal := s.app.BankKeeper.GetAllBalances(s.ctx, s.app.StakingKeeper.GetBondedPool(s.ctx).GetAddress()) + + // Check invariants before migration + s.checkInvariants() + + // Store total supply before migration + totalSupplyBefore := s.app.BankKeeper.GetSupply(s.ctx, sdk.DefaultBondDenom) + + // Perform migration + err = v2_5.MigrateMultisigAddresses( + s.ctx, + s.app.AppCodec(), + s.migrations, + s.app.BankKeeper, + s.app.AccountKeeper, + s.app.StakingKeeper, + s.app.GovKeeper, + s.app.AuthzKeeper, + s.app.FeeGrantKeeper, + s.app.ClaimKeeper, + ) + require.NoError(s.T(), err) + + // Check invariants after migration + s.checkInvariants() + + // Verify total supply hasn't changed + totalSupplyAfter := s.app.BankKeeper.GetSupply(s.ctx, sdk.DefaultBondDenom) + require.Equal(s.T(), totalSupplyBefore, totalSupplyAfter) + + // Verify account migration + newAcc := s.app.AccountKeeper.GetAccount(s.ctx, s.newAddr) + require.NotNil(s.T(), newAcc) + newVestingAcc, ok := newAcc.(*vestingtypes.PeriodicVestingAccount) + require.True(s.T(), ok) + + // Verify vesting details are correctly migrated + require.Equal(s.T(), originalVesting, newVestingAcc.OriginalVesting) + require.Equal(s.T(), vestingPeriods, newVestingAcc.VestingPeriods) + require.Equal(s.T(), startTime, newVestingAcc.StartTime) + + // Verify old account vesting periods are cleared + oldAccAfterMigration := s.app.AccountKeeper.GetAccount(s.ctx, s.oldAddr) + require.NotNil(s.T(), oldAccAfterMigration) + oldVestingAccAfterMigration, ok := oldAccAfterMigration.(*vestingtypes.PeriodicVestingAccount) + require.True(s.T(), ok) + for _, period := range oldVestingAccAfterMigration.VestingPeriods { + require.Equal(s.T(), int64(0), period.Length) + } + + // Verify balances + // Check total balances + actualBalance := s.app.BankKeeper.GetAllBalances(s.ctx, s.newAddr) + // as removing unbond delegations, related amount should be added to balance + // so update expected balance to include unbond amount + oldTotalBalance = oldTotalBalance.Add(sdk.NewCoin(sdk.DefaultBondDenom, unbondAmt)) + require.Equal(s.T(), oldTotalBalance, actualBalance) + + // Check spendable balances + spendableBalance := s.app.BankKeeper.SpendableCoins(s.ctx, s.newAddr) + require.Equal(s.T(), oldSpendableBalance, spendableBalance) + + // Old address should have no balance + oldBalance := s.app.BankKeeper.GetAllBalances(s.ctx, s.oldAddr) + require.True(s.T(), oldBalance.IsZero()) + oldSpendable := s.app.BankKeeper.SpendableCoins(s.ctx, s.oldAddr) + require.True(s.T(), oldSpendable.IsZero()) + + // Verify delegation migration + newDelegations := s.app.StakingKeeper.GetAllDelegatorDelegations(s.ctx, s.newAddr) + require.Len(s.T(), newDelegations, 2) + require.Equal(s.T(), oldDelegations[0].ValidatorAddress, newDelegations[0].ValidatorAddress) + require.Equal(s.T(), oldDelegations[0].Shares, newDelegations[0].Shares) + oldDelegations = s.app.StakingKeeper.GetAllDelegatorDelegations(s.ctx, s.oldAddr) + require.Empty(s.T(), oldDelegations) + + // Verify authorization migration + oldGrants := s.app.AuthzKeeper.GetAuthorizations(s.ctx, grantee, s.oldAddr) + require.Empty(s.T(), oldGrants) + newGrants := s.app.AuthzKeeper.GetAuthorizations(s.ctx, grantee, s.newAddr) + require.Len(s.T(), newGrants, 1) + require.Equal(s.T(), authorization.MsgTypeURL(), newGrants[0].MsgTypeURL()) + + // Verify feegrant migration + newFeeGrants, err := s.app.FeeGrantKeeper.GetAllowance(s.ctx, s.newAddr, grantee) + require.NoError(s.T(), err) + require.NotNil(s.T(), newFeeGrants) + require.Equal(s.T(), basicAllowance.SpendLimit, newFeeGrants.(*feegrant.BasicAllowance).SpendLimit) + + // Verify gov votes migration + votes := s.app.GovKeeper.GetAllVotes(s.ctx) + require.Len(s.T(), votes, 2) // includes old vote too + newVote := vote + newVote.Voter = s.newAddr.String() + require.Contains(s.T(), votes, newVote) + + // validate staking module accounts balances + newBondedPoolBal := s.app.BankKeeper.GetAllBalances(s.ctx, s.app.StakingKeeper.GetBondedPool(s.ctx).GetAddress()) + newNonBondedPoolBal := s.app.BankKeeper.GetAllBalances(s.ctx, s.app.StakingKeeper.GetNotBondedPool(s.ctx).GetAddress()) + require.Equal(s.T(), oldBondedPoolBal, newBondedPoolBal) + // non bonded pool should be empty as removing all undelegations of old address + require.Empty(s.T(), newNonBondedPoolBal) + + // Verify unbonding delegation migration + newUnbonding := s.app.StakingKeeper.GetAllUnbondingDelegations(s.ctx, s.newAddr) + require.Empty(s.T(), newUnbonding) + + oldUnbonding = s.app.StakingKeeper.GetAllUnbondingDelegations(s.ctx, s.oldAddr) + require.Empty(s.T(), oldUnbonding) + + // Verify redelegation migration + newRedelegations := s.app.StakingKeeper.GetAllRedelegations(s.ctx, s.newAddr, validator.GetOperator(), validator2.GetOperator()) + require.Empty(s.T(), newRedelegations) + + oldRedelegations = s.app.StakingKeeper.GetAllRedelegations(s.ctx, s.oldAddr, validator.GetOperator(), validator2.GetOperator()) + require.Empty(s.T(), oldRedelegations) +} diff --git a/app/upgrades/v2.5.0/upgrade.go b/app/upgrades/v2.5.0/upgrade.go new file mode 100644 index 0000000..d8c9957 --- /dev/null +++ b/app/upgrades/v2.5.0/upgrade.go @@ -0,0 +1,103 @@ +package v2_5 + +import ( + "fmt" + "time" + + "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + auth "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authz "github.com/cosmos/cosmos-sdk/x/authz/keeper" + bank "github.com/cosmos/cosmos-sdk/x/bank/keeper" + distribution "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + feegrant "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" + gov "github.com/cosmos/cosmos-sdk/x/gov/keeper" + staking "github.com/cosmos/cosmos-sdk/x/staking/keeper" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + passageante "github.com/envadiv/Passage3D/app/ante" + "github.com/envadiv/Passage3D/app/upgrades" + claim "github.com/envadiv/Passage3D/x/claim/keeper" + claimtypes "github.com/envadiv/Passage3D/x/claim/types" +) + +const ( + Name = "v2.5.0" +) + +var Upgrade = upgrades.Upgrade{ + UpgradeName: Name, + CreateUpgradeHandler: CreateUpgradeHandler, + StoreUpgrades: storetypes.StoreUpgrades{}, +} + +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + appCodec codec.Codec, + _ distribution.Keeper, + bk bank.Keeper, + ak auth.AccountKeeper, + sk staking.Keeper, + gk gov.Keeper, + azk authz.Keeper, + fk feegrant.Keeper, + ck claim.Keeper, +) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + if err := ExecuteProposal(ctx, ak, bk, sk, ck); err != nil { + return nil, err + } + + // migrate multisig addresses + if err := MigrateMultisigAddresses(ctx, appCodec, AddressMigrations, bk, ak, sk, gk, + azk, fk, ck); err != nil { + return nil, err + } + + return fromVM, nil + } +} + +func ExecuteProposal(ctx sdk.Context, ak auth.AccountKeeper, bk bank.Keeper, sk staking.Keeper, ck claim.Keeper) error { + oneMonth := time.Hour * 24 * 30 + + // clear old claim records + ck.ClearInitialClaimables(ctx) + + // add new claim records and update module account balance + var amount sdk.Coins + for _, record := range NewClaimRecords { + amount = amount.Add(record.ClaimableAmount...) + + // update the claim record in claim module + if err := ck.UpdateClaimRecord(ctx, *record); err != nil { + return err + } + } + ctx.Logger().Info(fmt.Sprintf("added new claim records: %d", len(NewClaimRecords))) + + // get airdrop account + airdropAccAddr, err := sdk.AccAddressFromBech32("pasg1lel0s624jr9zsz4ml6yv9e5r4uzukfs7hwh22w") + if err != nil { + return err + } + + // send the added balances from airdrop account to claim module account + if err := bk.SendCoinsFromAccountToModule(ctx, airdropAccAddr, claimtypes.ModuleName, amount); err != nil { + return err + } + ctx.Logger().Info(fmt.Sprintf("sent coins: %s from airdrop account to claim module account", amount.String())) + + params := ck.GetParams(ctx) + params.AirdropEnabled = true + params.AirdropStartTime = time.Date(2025, 4, 24, 16, 30, 0, 0, time.UTC) // (dd/mm/yyyy: 24/04/2025, 16:30UTC) + params.DurationOfDecay = time.Second * 1 + params.DurationUntilDecay = oneMonth + + ck.SetParams(ctx, params) + + // set minimum commission rate to validators + return SetValidatorsMinCommissionRate(ctx, sk, passageante.MinCommissionRate) +} diff --git a/cmd/passage/cmd/root.go b/cmd/passage/cmd/root.go index a4c4bdc..c43e09f 100644 --- a/cmd/passage/cmd/root.go +++ b/cmd/passage/cmd/root.go @@ -2,6 +2,7 @@ package cmd import ( "errors" + "fmt" "io" "os" "path/filepath" @@ -37,6 +38,7 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/cosmos/cosmos-sdk/x/crisis" genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" + passageante "github.com/envadiv/Passage3D/app/ante" "github.com/prometheus/client_golang/prometheus" ) @@ -121,8 +123,9 @@ func initAppConfig() (string, interface{}) { // - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their // own app.toml to override, or use this default value. // - // In simapp, we set the min gas prices to 0. - srvCfg.MinGasPrices = "0upasg" + // We set the min gas prices to defaultMinGasPrice value. + // Error will be thrown if srvCfg.MinGasPrices value is less than defaultMinGasPrice value. + srvCfg.MinGasPrices = fmt.Sprintf("%s%s", passageante.DefaultMinGasPrice, passageante.BaseDenom) customAppConfig := CustomAppConfig{ Config: *srvCfg, @@ -265,6 +268,17 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a wasmOpts = append(wasmOpts, wasmkeeper.WithVMCacheMetrics(prometheus.DefaultRegisterer)) } + // validate minimum-gas-prices value is greater than or equal to defaultMinGasPrice value + minGasPricesStr := cast.ToString(appOpts.Get(server.FlagMinGasPrices)) + minGasPrices, err := sdk.ParseDecCoins(minGasPricesStr) + if err != nil { + panic(err) + } + err = passageante.ValidateMinGasPrices(minGasPrices) + if err != nil { + panic(err) + } + return app.NewPassageApp( logger, db, traceStore, true, skipUpgradeHeights, cast.ToString(appOpts.Get(flags.FlagHome)), @@ -274,7 +288,7 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a appOpts, wasmOpts, baseapp.SetPruning(pruningOpts), - baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), + baseapp.SetMinGasPrices(minGasPricesStr), baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))), baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))), baseapp.SetMinRetainBlocks(cast.ToUint64(appOpts.Get(server.FlagMinRetainBlocks))), @@ -291,8 +305,8 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a // and exports state. func (a appCreator) appExport( logger log.Logger, db dbm.DB, traceStore io.Writer, height int64, forZeroHeight bool, jailAllowedAddrs []string, - appOpts servertypes.AppOptions) (servertypes.ExportedApp, error) { - + appOpts servertypes.AppOptions, +) (servertypes.ExportedApp, error) { var simApp *app.PassageApp homePath, ok := appOpts.Get(flags.FlagHome).(string) if !ok || homePath == "" { diff --git a/go.mod b/go.mod index 9d7e296..d4074a1 100644 --- a/go.mod +++ b/go.mod @@ -3,14 +3,14 @@ go 1.20 module github.com/envadiv/Passage3D require ( - github.com/CosmWasm/wasmd v0.31.0 + github.com/CosmWasm/wasmd v0.34.1 github.com/cosmos/cosmos-sdk v0.45.16 github.com/cosmos/ibc-go/v4 v4.6.0 github.com/golang/mock v1.6.0 github.com/gorilla/mux v1.8.0 - github.com/prometheus/client_golang v1.14.0 + github.com/prometheus/client_golang v1.15.0 github.com/rakyll/statik v0.1.7 - github.com/spf13/cast v1.5.0 + github.com/spf13/cast v1.5.1 github.com/spf13/cobra v1.6.1 github.com/spf13/viper v1.14.0 github.com/stretchr/testify v1.8.2 @@ -20,12 +20,12 @@ require ( require ( github.com/gogo/protobuf v1.3.3 - github.com/golang/protobuf v1.5.2 + github.com/golang/protobuf v1.5.3 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/regen-network/cosmos-proto v0.3.1 // indirect - google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa + google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc google.golang.org/grpc v1.53.0 - google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 + google.golang.org/protobuf v1.30.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -37,7 +37,7 @@ require ( github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect - github.com/CosmWasm/wasmvm v1.2.1 // indirect + github.com/CosmWasm/wasmvm v1.5.7 // indirect github.com/DataDog/zstd v1.5.0 // indirect github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect github.com/Workiva/go-datastructures v1.0.53 // indirect @@ -46,7 +46,7 @@ require ( github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cockroachdb/errors v1.9.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677 // indirect @@ -70,7 +70,7 @@ require ( github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.0 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/docker/distribution v2.8.1+incompatible // indirect + github.com/docker/distribution v2.8.2+incompatible // indirect github.com/dustin/go-humanize v1.0.0 // indirect github.com/dvsekhvalnov/jose2go v1.5.0 // indirect github.com/felixge/httpsnoop v1.0.2 // indirect @@ -100,16 +100,16 @@ require ( github.com/improbable-eng/grpc-web v0.14.1 // indirect github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.15.11 // indirect + github.com/klauspost/compress v1.16.3 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/lib/pq v1.10.6 // indirect + github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/linxGnu/grocksdb v1.7.10 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -122,8 +122,8 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.37.0 // indirect - github.com/prometheus/procfs v0.8.0 // indirect + github.com/prometheus/common v0.42.0 // indirect + github.com/prometheus/procfs v0.9.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/rs/cors v1.8.2 // indirect @@ -139,28 +139,40 @@ require ( github.com/tidwall/btree v1.5.0 // indirect github.com/zondax/hid v0.9.1 // indirect github.com/zondax/ledger-go v0.14.1 // indirect - go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/crypto v0.5.0 // indirect - golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/term v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + go.etcd.io/bbolt v1.3.7 // indirect + golang.org/x/crypto v0.7.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect + golang.org/x/net v0.8.0 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/term v0.6.0 // indirect + golang.org/x/text v0.8.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect nhooyr.io/websocket v1.8.6 // indirect ) -// latest grpc doesn't work with with our modified proto compiler, so we need to enforce -// the following version across all dependencies. -replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 +replace ( + // use cosmos fork of keyring + github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 -replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + // dgrijalva/jwt-go is deprecated and doesn't receive security updates. + // TODO: remove it: https://github.com/cosmos/cosmos-sdk/issues/13134 + github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 -// Fix upstream GHSA-h395-qcrw-5vmq vulnerability. -// TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 -replace github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0 + // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. + // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 + github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.8.1 -replace github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.27 + // Use regen gogoproto fork + // This for is replaced by cosmos/gogoproto in future versions + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 -replace github.com/CosmWasm/wasmvm => github.com/CosmWasm/wasmvm v1.2.6 + github.com/jhump/protoreflect => github.com/jhump/protoreflect v1.9.0 + + // use cometbft + github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.27 + + // latest grpc doesn't work with with our modified proto compiler, so we need to enforce + // the following version across all dependencies. + google.golang.org/grpc => google.golang.org/grpc v1.33.2 +) diff --git a/go.sum b/go.sum index 2845ddf..20f1c81 100644 --- a/go.sum +++ b/go.sum @@ -51,8 +51,6 @@ git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFN git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= 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.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= -github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= @@ -66,10 +64,10 @@ github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EF github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= -github.com/CosmWasm/wasmd v0.31.0 h1:xACf6A/SkCeGWQWrKGsR4X9PQb5G4XYuNfnrl+HQ1mE= -github.com/CosmWasm/wasmd v0.31.0/go.mod h1:VcyDGk/ISVlMUeW+1GGL0zdHWBS2FPwLEV2qZ86l7l8= -github.com/CosmWasm/wasmvm v1.2.6 h1:QmOaiJUyeh8+pPCjJBTgWrbi/hCzCuWewduDO85Pcpc= -github.com/CosmWasm/wasmvm v1.2.6/go.mod h1:KO0zfQgCsQ6urWL1MYLlGqRgr7R4an6jo+LWRZjfD4c= +github.com/CosmWasm/wasmd v0.34.1 h1:4pALn+N9F8ItxEG+aHX5IsTbf0Z8wcRf8Mz4I/ExW98= +github.com/CosmWasm/wasmd v0.34.1/go.mod h1:MPhNbLmIHWxTVJZwdV/4QMslehW3Xpd1aPtLwEa2Lrk= +github.com/CosmWasm/wasmvm v1.5.7 h1:xUN+XK0Kk3RAkZlB092a2DgEELWSfDxn9MlkNUB1I1Y= +github.com/CosmWasm/wasmvm v1.5.7/go.mod h1:Q0bSEtlktzh7W2hhEaifrFp1Erx11ckQZmjq8FLCyys= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= @@ -143,8 +141,8 @@ github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx2 github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= +github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd v0.22.2 h1:vBZ+lGGd1XubpOWO67ITJpAEsICWhA0YzqkcpkgNBfo= github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= @@ -174,8 +172,8 @@ github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW 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.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -244,6 +242,8 @@ github.com/cosmos/iavl v0.19.5/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONAp github.com/cosmos/ibc-go/v4 v4.6.0 h1:G7kiD4Zf8Wrxc8BXWIKuFnzI0W4wpvRPrl5HwdfTIsA= github.com/cosmos/ibc-go/v4 v4.6.0/go.mod h1:ksiZHUypws0NVP50E3ea0ivVFO/bfS8q8yLg8yZ2ATQ= github.com/cosmos/interchain-accounts v0.2.6 h1:TV2M2g1/Rb9MCNw1YePdBKE0rcEczNj1RGHT+2iRYas= +github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= +github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA= github.com/cosmos/ledger-cosmos-go v0.12.2/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= @@ -280,7 +280,6 @@ github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KP github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= 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= @@ -289,8 +288,8 @@ github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8 github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= -github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= +github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -327,7 +326,7 @@ github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= 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.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= 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.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -343,8 +342,8 @@ github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgoo 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.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= -github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +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/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= @@ -359,8 +358,6 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 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.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= 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= @@ -373,11 +370,11 @@ github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dT github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= 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/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -389,6 +386,8 @@ 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.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= 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= @@ -401,6 +400,7 @@ github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6x github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -434,8 +434,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD 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 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 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= @@ -590,7 +591,7 @@ github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+ github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c h1:XImQJfpJLmGEEd8ll5yPVyL/aEvmgGHW4WYTyNseLOM= +github.com/jhump/protoreflect v1.9.0 h1:npqHz788dryJiR/l6K/RUQAyh2SwV91+d1dnh4RjO9w= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= @@ -604,7 +605,6 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u 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.11/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/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -639,8 +639,8 @@ github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 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.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= +github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= @@ -664,11 +664,11 @@ github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4F github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -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.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= -github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= @@ -706,8 +706,8 @@ github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsO github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= @@ -772,8 +772,8 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= -github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= 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= @@ -805,6 +805,7 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP 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.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -835,10 +836,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn 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.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= +github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= 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= @@ -855,20 +854,16 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 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.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= 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.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= @@ -886,6 +881,7 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So 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.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -929,8 +925,8 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= 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.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= @@ -991,11 +987,13 @@ github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+l github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -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 v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= 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.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= 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/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= @@ -1029,8 +1027,8 @@ github.com/zondax/hid v0.9.1/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWp github.com/zondax/ledger-go v0.14.1 h1:Pip65OOl4iJ84WTpA4BKChvOufMhhbxED3BaihoZN4c= github.com/zondax/ledger-go v0.14.1/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= +go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1073,8 +1071,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1090,8 +1088,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 h1:BEABXpNXLEz0WxtA+6CQIz2xkg80e+1zrhWyMcq8VzE= -golang.org/x/exp v0.0.0-20230131160201-f062dba9d201/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= 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= @@ -1166,15 +1164,12 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 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-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= 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-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1184,8 +1179,6 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= 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= @@ -1251,7 +1244,6 @@ golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1267,27 +1259,24 @@ golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/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-20210603081109-ebe580a85c40/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-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210909193231-528a39cd75f3/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-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/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-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/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-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1297,8 +1286,8 @@ golang.org/x/text v0.3.4/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.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1452,8 +1441,8 @@ google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa h1:qQPhfbPO23fwm/9lQr91L1u62Zo6cm+zI+slZT+uf+o= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc h1:ijGwO+0vL2hJt5gaygqP2j6PfflOBrRot0IczKbmtio= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1468,8 +1457,9 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj 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.28.2-0.20220831092852-f930b1dc76e8 h1:KR8+MyP7/qOlV+8Af01LtjL04bu7on42eVsxT4EyBQk= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= 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=