From c0f32e5678ae23aa43a5daf11bb4dab7e1907a6a Mon Sep 17 00:00:00 2001 From: Tomasz Kulik Date: Fri, 25 Oct 2024 17:39:47 +0200 Subject: [PATCH 01/40] Update wasmvm to 2.2.0-rc.2 --- Dockerfile | 8 ++++---- go.mod | 2 +- go.sum | 4 ++-- x/wasm/keeper/keeper_test.go | 4 ++-- x/wasm/keeper/recurse_test.go | 24 ++++++++++++------------ 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9275a0de72..9cfb61573e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,10 +17,10 @@ RUN apk add git WORKDIR /code COPY . /code/ # See https://github.com/CosmWasm/wasmvm/releases -ADD https://github.com/CosmWasm/wasmvm/releases/download/v2.1.2/libwasmvm_muslc.aarch64.a /lib/libwasmvm_muslc.aarch64.a -ADD https://github.com/CosmWasm/wasmvm/releases/download/v2.1.2/libwasmvm_muslc.x86_64.a /lib/libwasmvm_muslc.x86_64.a -RUN sha256sum /lib/libwasmvm_muslc.aarch64.a | grep 0881c5b463e89e229b06370e9e2961aec0a5c636772d5142c68d351564464a66 -RUN sha256sum /lib/libwasmvm_muslc.x86_64.a | grep 58e1f6bfa89ee390cb9abc69a5bc126029a497fe09dd399f38a82d0d86fe95ef +ADD https://github.com/CosmWasm/wasmvm/releases/download/v2.2.0-rc.2/libwasmvm_muslc.aarch64.a /lib/libwasmvm_muslc.aarch64.a +ADD https://github.com/CosmWasm/wasmvm/releases/download/v2.2.0-rc.2/libwasmvm_muslc.x86_64.a /lib/libwasmvm_muslc.x86_64.a +RUN sha256sum /lib/libwasmvm_muslc.aarch64.a | grep 7af80eb7e79d82789eca0d5512a87dc20e96182590fe88ae5fd0153e31c097c9 +RUN sha256sum /lib/libwasmvm_muslc.x86_64.a | grep 2c497b5246c7217a70c447c50117c7fb09909ec23e6e4151a4de3e5f29db8134 # force it to use static lib (from above) not standard libgo_cosmwasm.so file RUN LEDGER_ENABLED=false BUILD_TAGS=muslc LINK_STATICALLY=true make build diff --git a/go.mod b/go.mod index ba7fb2489b..81a02bacb3 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/CosmWasm/wasmd go 1.21 require ( - github.com/CosmWasm/wasmvm/v2 v2.1.2 + github.com/CosmWasm/wasmvm/v2 v2.2.0-rc.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.10 github.com/cosmos/gogogateway v1.2.0 // indirect diff --git a/go.sum b/go.sum index d178f285a0..7738c17a25 100644 --- a/go.sum +++ b/go.sum @@ -223,8 +223,8 @@ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25 github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CosmWasm/wasmvm/v2 v2.1.2 h1:GkJ5bAsRlLHfIQVg/FY1VHwLyBwlCjAhDea0B8L+e20= -github.com/CosmWasm/wasmvm/v2 v2.1.2/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg= +github.com/CosmWasm/wasmvm/v2 v2.2.0-rc.2 h1:Y9sQqabWsj9ePbZFKRUEIWSY2QYyHeEIrF/qz0ZNGl4= +github.com/CosmWasm/wasmvm/v2 v2.2.0-rc.2/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg= github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 81c28517e1..5da656d509 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -402,7 +402,7 @@ func TestInstantiate(t *testing.T) { gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x1bc8f), gasAfter-gasBefore) + require.Equal(t, uint64(0x1bca5), gasAfter-gasBefore) } // ensure it is stored properly @@ -939,7 +939,7 @@ func TestExecute(t *testing.T) { // make sure gas is properly deducted from ctx gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x1acb4), gasAfter-gasBefore) + require.Equal(t, uint64(0x1acdb), gasAfter-gasBefore) } // ensure bob now exists and got both payments released bobAcct = accKeeper.GetAccount(ctx, bob) diff --git a/x/wasm/keeper/recurse_test.go b/x/wasm/keeper/recurse_test.go index de9d2f474b..58f88a4666 100644 --- a/x/wasm/keeper/recurse_test.go +++ b/x/wasm/keeper/recurse_test.go @@ -56,14 +56,14 @@ func initRecurseContract(t *testing.T) (contract sdk.AccAddress, ctx sdk.Context func TestGasCostOnQuery(t *testing.T) { const ( - GasNoWork uint64 = 63_968 + GasNoWork uint64 = 63_987 GasNoWorkDiscounted uint64 = 5_968 // Note: about 100 SDK gas (10k CosmWasm gas) for each round of sha256 - GasWork50 uint64 = 64_207 // this is a little shy of 50k gas - to keep an eye on the limit + GasWork50 uint64 = 64_234 // this is a little shy of 50k gas - to keep an eye on the limit GasWork50Discounted uint64 = 6_207 - GasReturnUnhashed uint64 = 55 - GasReturnHashed uint64 = 46 + GasReturnUnhashed uint64 = 89 + GasReturnHashed uint64 = 86 ) cases := map[string]struct { @@ -214,12 +214,12 @@ func TestLimitRecursiveQueryGas(t *testing.T) { const ( // Note: about 100 SDK gas (10k CosmWasm gas) for each round of sha256 - GasWork2k uint64 = 76_264 // = SetupContractCost + x // we have 6x gas used in cpu than in the instance + GasWork2k uint64 = 76_817 // = SetupContractCost + x // we have 6x gas used in cpu than in the instance - GasWork2kDiscounted uint64 = 18_264 + GasWork2kDiscounted uint64 = 18_264 + 432 // This is overhead for calling into a sub-contract - GasReturnHashed uint64 = 48 + GasReturnHashed uint64 = 48 + 132 ) cases := map[string]struct { @@ -240,7 +240,7 @@ func TestLimitRecursiveQueryGas(t *testing.T) { expectedGas: GasWork2k, }, "recursion 5, lots of work": { - gasLimit: 4_000_000, + gasLimit: GasWork2k + 5*(GasWork2kDiscounted+GasReturnHashed) + 1, msg: Recurse{ Depth: 5, Work: 2000, @@ -251,13 +251,13 @@ func TestLimitRecursiveQueryGas(t *testing.T) { // this is where we expect an error... // it has enough gas to run 5 times and die on the 6th (5th time dispatching to sub-contract) // however, if we don't charge the cpu gas before sub-dispatching, we can recurse over 20 times - "deep recursion, should die on 5th level": { - gasLimit: 150_000, + "deep recursion, should die on 6th level": { + gasLimit: GasWork2k + 5*(GasWork2kDiscounted+GasReturnHashed), msg: Recurse{ - Depth: 50, + Depth: 6, Work: 2000, }, - expectQueriesFromContract: 5, + expectQueriesFromContract: 6, expectOutOfGas: true, }, "very deep recursion, hits recursion limit": { From 20fb7859761f07a5ae5ebe7fa4fa54e7bd57fbcd Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Mon, 28 Oct 2024 21:56:39 +0800 Subject: [PATCH 02/40] Fix temp dir creation --- cmd/wasmd/commands.go | 1 - cmd/wasmd/root.go | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cmd/wasmd/commands.go b/cmd/wasmd/commands.go index ba97b85db1..29d696254d 100644 --- a/cmd/wasmd/commands.go +++ b/cmd/wasmd/commands.go @@ -260,7 +260,6 @@ var tempDir = func() string { if err != nil { panic("failed to create temp dir: " + err.Error()) } - defer os.RemoveAll(dir) return dir } diff --git a/cmd/wasmd/root.go b/cmd/wasmd/root.go index 6f6022336b..a402277c67 100644 --- a/cmd/wasmd/root.go +++ b/cmd/wasmd/root.go @@ -37,7 +37,9 @@ func NewRootCmd() *cobra.Command { cfg.Seal() // we "pre"-instantiate the application for getting the injected/configured encoding configuration // note, this is not necessary when using app wiring, as depinject can be directly used (see root_v2.go) - tempApp := app.NewWasmApp(log.NewNopLogger(), dbm.NewMemDB(), nil, false, simtestutil.NewAppOptionsWithFlagHome(tempDir()), []wasmkeeper.Option{}) + temp := tempDir() + defer os.RemoveAll(temp) + tempApp := app.NewWasmApp(log.NewNopLogger(), dbm.NewMemDB(), nil, false, simtestutil.NewAppOptionsWithFlagHome(temp), []wasmkeeper.Option{}) encodingConfig := params.EncodingConfig{ InterfaceRegistry: tempApp.InterfaceRegistry(), Codec: tempApp.AppCodec(), From 8df66c4227c98d828d1297c40060cad4176dfe0c Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Tue, 29 Oct 2024 22:30:59 +0800 Subject: [PATCH 03/40] Add comment --- cmd/wasmd/root.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/wasmd/root.go b/cmd/wasmd/root.go index a402277c67..e75031da9a 100644 --- a/cmd/wasmd/root.go +++ b/cmd/wasmd/root.go @@ -38,6 +38,8 @@ func NewRootCmd() *cobra.Command { // we "pre"-instantiate the application for getting the injected/configured encoding configuration // note, this is not necessary when using app wiring, as depinject can be directly used (see root_v2.go) temp := tempDir() + // cleanup temp dir after we are done with the tempApp, so we don't leave behind a + // new temporary directory for every invocation. See https://github.com/CosmWasm/wasmd/issues/2017 defer os.RemoveAll(temp) tempApp := app.NewWasmApp(log.NewNopLogger(), dbm.NewMemDB(), nil, false, simtestutil.NewAppOptionsWithFlagHome(temp), []wasmkeeper.Option{}) encodingConfig := params.EncodingConfig{ From 60ed81c12db529e763497643788a0bf2c8db3a94 Mon Sep 17 00:00:00 2001 From: Tomasz Kulik Date: Mon, 4 Nov 2024 10:00:31 +0100 Subject: [PATCH 04/40] feat: Add conditional migrate calling (#1966) --- x/wasm/keeper/keeper.go | 12 ++++++++++-- x/wasm/keeper/keeper_test.go | 23 +++++++++++++---------- x/wasm/keeper/submsg_test.go | 23 +++++++++++++++++++++++ x/wasm/keeper/testdata/hackatom_42.wasm | Bin 232952 -> 243535 bytes x/wasm/keeper/testdata/hackatom_420.wasm | Bin 232953 -> 243537 bytes x/wasm/keeper/wasmtesting/mock_engine.go | 8 ++++++++ x/wasm/types/wasmer_engine.go | 22 ++++++++++++++++++++++ 7 files changed, 76 insertions(+), 12 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index a72ed59040..27dc6074fd 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -502,7 +502,7 @@ func (k Keeper) migrate( if report.ContractMigrateVersion == nil || oldReport.ContractMigrateVersion == nil || *report.ContractMigrateVersion != *oldReport.ContractMigrateVersion { - response, err = k.callMigrateEntrypoint(sdkCtx, contractAddress, wasmvmtypes.Checksum(newCodeInfo.CodeHash), msg, newCodeID) + response, err = k.callMigrateEntrypoint(sdkCtx, contractAddress, wasmvmtypes.Checksum(newCodeInfo.CodeHash), msg, newCodeID, caller, oldReport.ContractMigrateVersion) if err != nil { return nil, err } @@ -560,6 +560,8 @@ func (k Keeper) callMigrateEntrypoint( newChecksum wasmvmtypes.Checksum, msg []byte, newCodeID uint64, + senderAddress sdk.AccAddress, + oldMigrateVersion *uint64, ) (*wasmvmtypes.Response, error) { sdkCtx, discount := k.checkDiscountEligibility(sdkCtx, newChecksum, k.IsPinnedCode(sdkCtx, newCodeID)) setupCost := k.gasRegister.SetupContractCost(discount, len(msg)) @@ -573,7 +575,13 @@ func (k Keeper) callMigrateEntrypoint( prefixStoreKey := types.GetContractStorePrefix(contractAddress) vmStore := types.NewStoreAdapter(prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(sdkCtx)), prefixStoreKey)) gasLeft := k.runtimeGasForContract(sdkCtx) - res, gasUsed, err := k.wasmVM.Migrate(newChecksum, env, msg, vmStore, cosmwasmAPI, &querier, k.gasMeter(sdkCtx), gasLeft, costJSONDeserialization) + + migrateInfo := wasmvmtypes.MigrateInfo{ + Sender: senderAddress.String(), + OldMigrateVersion: oldMigrateVersion, + } + res, gasUsed, err := k.wasmVM.MigrateWithInfo(newChecksum, env, msg, migrateInfo, vmStore, cosmwasmAPI, &querier, k.gasMeter(sdkCtx), gasLeft, costJSONDeserialization) + k.consumeRuntimeGas(sdkCtx, gasUsed) if err != nil { return nil, errorsmod.Wrap(types.ErrVMError, err.Error()) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 5da656d509..dc0afc507e 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -50,7 +50,7 @@ var hackatomWasm []byte var AvailableCapabilities = []string{ "iterator", "staking", "stargate", "cosmwasm_1_1", "cosmwasm_1_2", "cosmwasm_1_3", - "cosmwasm_1_4", "cosmwasm_2_0", "cosmwasm_2_1", + "cosmwasm_1_4", "cosmwasm_2_0", "cosmwasm_2_1", "cosmwasm_2_2", } func TestNewKeeper(t *testing.T) { @@ -1372,14 +1372,14 @@ func TestMigrate(t *testing.T) { migrateMsg: migMsgBz, expVerifier: newVerifierAddr, }, - "all good with migration to older migrate version": { - admin: creator, - caller: creator, - initMsg: initMsgBz, - fromCodeID: hackatom420.CodeID, - toCodeID: hackatom42.CodeID, - migrateMsg: migMsgBz, - expVerifier: newVerifierAddr, + "contract returns error when downgrading version": { + admin: creator, + caller: creator, + initMsg: initMsgBz, + fromCodeID: hackatom420.CodeID, + toCodeID: hackatom42.CodeID, + migrateMsg: migMsgBz, + expErr: types.ErrMigrationFailed, }, } @@ -1599,7 +1599,10 @@ func TestIterateContractsByCodeWithMigration(t *testing.T) { // mock migration so that it does not fail when migrate example1 to example2.codeID mockWasmVM := wasmtesting.MockWasmEngine{MigrateFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { return &wasmvmtypes.ContractResult{Ok: &wasmvmtypes.Response{}}, 1, nil - }} + }, + MigrateWithInfoFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, migrateInfo wasmvmtypes.MigrateInfo, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { + return &wasmvmtypes.ContractResult{Ok: &wasmvmtypes.Response{}}, 1, nil + }} wasmtesting.MakeInstantiable(&mockWasmVM) ctx, keepers := CreateTestInput(t, false, AvailableCapabilities, WithWasmEngine(&mockWasmVM)) k, c := keepers.WasmKeeper, keepers.ContractKeeper diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index b5e4a879ac..31fa5b2672 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -652,6 +652,29 @@ func TestMigrateGovSubMsgAuthzPropagated(t *testing.T) { var instanceLevel int // mock wasvm to return new migrate msgs with the response + mockWasmVM.MigrateWithInfoFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, migrateInfo wasmvmtypes.MigrateInfo, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { + if instanceLevel == 1 { + return &wasmvmtypes.ContractResult{Ok: &wasmvmtypes.Response{}}, 0, nil + } + instanceLevel++ + submsgPayload := fmt.Sprintf(`{"sub":%d}`, instanceLevel) + return &wasmvmtypes.ContractResult{ + Ok: &wasmvmtypes.Response{ + Messages: []wasmvmtypes.SubMsg{ + { + ReplyOn: wasmvmtypes.ReplyNever, + Msg: wasmvmtypes.CosmosMsg{ + Wasm: &wasmvmtypes.WasmMsg{Migrate: &wasmvmtypes.MigrateMsg{ + ContractAddr: example1.Contract.String(), + NewCodeID: example2.CodeID, + Msg: []byte(submsgPayload), + }}, + }, + }, + }, + }, + }, 0, nil + } mockWasmVM.MigrateFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { if instanceLevel == 1 { return &wasmvmtypes.ContractResult{Ok: &wasmvmtypes.Response{}}, 0, nil diff --git a/x/wasm/keeper/testdata/hackatom_42.wasm b/x/wasm/keeper/testdata/hackatom_42.wasm index e4b36b206c6aeb6fc34f08d257ba8ec62dea9592..75ebfbc79e253fc41ef2fb0392bc066b8b0106d1 100644 GIT binary patch delta 83608 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 delta 74856 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%0A)#jn$Abh= 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 diff --git a/x/wasm/keeper/testdata/hackatom_420.wasm b/x/wasm/keeper/testdata/hackatom_420.wasm index 6baf02d837d226d2827c8aa77c855ae6cb7f84f7..df52d4cd09de1fd9b879b0792cd0cba72bb80731 100644 GIT binary patch delta 83609 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 delta 74499 zcmb@v34B!5**|`tJ9}m(nLzf9I}-w734|>Pi;#;36i{&A6%-T$T0v{IuXUoLqN1W# zJgBHpsSriQii#F(R1~bJSgoasihb!@RBCC9)wgx|f1l^vJClT9_4oeeWA5CuKIb{l zdA9SMbKm?d_kZustukg^bUqn|LEETorkPGtn*SOzeQExEYgO&7N2P{^@WTHYGY#ZR z))g}YoN|RRGl!r0KVzn!f1uu-6MWxL{MPqsi5x#2*E@01oU<<+KB{5furn{2v+%rg zE;CH$E2^SA=V-H_!t~9#;F5wlvxkowHEi^mXU)3!?77)uSDJk$e`J1WhRGic2SW++ z6Mm6F_%9d?lFx{Q!@*!YKTMn$3Y*HX^xIhnWXsP}mnTs&vtIkV25!xMYac|W?~ z%qHV%XG)+l{VfJ>Q*<>|{M@{q7E!-pzoNUSrfD%xu@ z=~lXp92(txNaJp^X~MYi%W1Tt*~g!H+9_vMTzdBD{mz_q#>~;p3(sw8nsC8|$DBC& zF0=J5dV`worhDkT^A^lGdH%h0{+-lx&I&r=q~p>@SKLSUn~$3tsiNr_dYYc1m#E@R zdWV`Oyi8lDgI=KL>31~xS>(J+@6l%3L4Tm8=jeog(C5_jZ~9;Q7wxB}FR1B5^JcT@ zHglNGuVK4<>g{Il6%K5xEY{*U>Ki1{ZoXT@J* zADT{cY&_*UDRnek))F6A9G_@~l9u8BY45{4^|IYbt2}3pHyEqrot&pzUw9ziD#@ z=hXtfH$fkh&xBS6X4^u1{wQs)(h-^gOw??bIjbGN@3><8D zd~7e1oLQ0Yp3#A{&bcUOO7v!*=}*%Y)rMW~Y|R;g@qLxUR4^(!aGZH0@P~=FeTh5< zE}RSqCJiglnj*^_Y8YcN8DyIbo!MGv7-R4*HJp2+Wf=R@(d0DDR^L`k%aw#*7>M5r z)|!3M03L&Rym;24Cz6@MJ2F$NwvN!F)t*Jobel7s`1Bq2m^GSu&?woMa z@~EUHTCE7G{qITRklJwapqQlYGdOvzbN)Y(jUVr@Y!qbL1HlR ziSzf9TZVNh5i_G!D3fo-4cm-S)b>S_e#_SqH>^-%n=|*6Mq1;nJf)#zE4Lm_6vaXe zt?qXXnQ6y9t&obH^<@Q4$*D6-+%AehYCRQu;M7Yk7o;NO8x7_-z#51}I+b?DpH_kv zPdx21DskRCZA#efy40yYeOB1*pwwA{7q_WW=kwF=FXRQA(~=BW(UxRyZxK5WpHTyZ zy>-U4>|KUZSkFN#)`G$yQo3m2LJT$sgT3I)6N7q6oLA2rL=QM$oH?L~TaAIt z;zDLQjF>3OHq7ixtDRG49<;z+Gn4Uq76E5G&T*}YGH2_|`C)F&wA;v;&@jSWbc^#? zpIWMP-tA+V?WFSCDVdpUO02!@)j{fi@1ugMfPLrv&l^}LWmq+oI4b3Di37iwCs6;# zYS2pR=R9QnDE|(Sl1)fseu{o9XYPs14k- z4J~D2^4Z%#Oz776#n7?2+bEXL^aElfklklP4`s-F;JkQW<&3Kzh??itPs_j?LaFEK z8!%;`*H1v+s9`tKFP!Ix9fse*;cjivKG!~Ocz>i`K74kU+MfLbY@at*zS50wQVe_Lh`r2X=*<;H({W zd~s&Ed3o++uN_t6jBXfh?z-8Xk9!)1S7b153dRF1ajX{zAj?dA?0ni#mFw|lA6Dy1 za*jHy4_)OnHl8|%=h$yI&+BXCLCWbVF=a}!%y&W;-itE(#+p_-$P9J8Z(hpmYhe2J zQEMv1A`i?G%q=18V-GQ2+MO>N$Am(lOVbKDO--r(AlbjKY(3Wahnz-OHqEcuQka;y9CePcy2UXZU4e#C4O!) zTazVtu0d868sMcAaz1Wq9#$GR?FbqyilU*mD;6Yuwx2mnslVAyAiXdOt|u&OJHTN; zP8mI+s9oUP3Zh=nf`a}e%i6f}=;)GWDT}UAb}dTPnww2XK0G^20E_1)6RQ}{jbe!<2Xj6y%i}y;*3-fZDU3YF*-_DIWE!GX#881o zNz{rgOvUsNa|2}hjG*vu4apjz1pwi*izdZ=R*}_vfN3;>D-^L_)Ej@mBB0qYao4P| zX_63(SDB~C9Yrx3z$naqtc1vf8_8V8b8QAY#lTJkfZFk7vGdgU0qJ6)ex4woT|e*P ziQm%I$&?R`h@O>rkS0>HhTE`o8&)dWR|vn(NTwoyx&8=r=_dN@(NnW;F214Jq$U~@ za}uALmN~#zGJ{zGLjeq$&Y2VPDdjAfPoFWDE_R^LWn2dY`c4PXR# zMy%Y04d4yTh`4=*ZlVE@Vo|IAns^T2_7LMDCE_9lS|Q`a`P+nKpRSZ3_`lt!*$z6+ zb%r(9XGX0jik?ayHCFjEXxJjO3O!T4f1T!u&8kCT@8kOZA6z_Td~ z`WYrgsAo*vNCG)*HLXOvknwQ9kU>biHeEtGx(7-MbFG!K5Q@3Ol|p@!6SA>@$%{dE1$wE|-ZC7z;LesADR(p(L2Bi-#1leiTtkHKQIo2n zGA^7nb)eQOL!z7v~Tqpjszctns+!jmv{V1_bvG3VRKC21~*iS{uErDTp3u|tqN5Hj~(i4_on8e|)jlQ~fP zylj>SzHZqN)NJN}ONo$*=@CbhK5p8|S(wTbQRTzzFkSIK6oI5pqcJGTfQ>nU*J_cK zXo-XWx-$sqwM2t$AmO`%8*EQgBEa`BomV4GS5){bctVJ+mcLrGpUOP33W%!$^ z1JZgK!kh@&;FO=WM9pC3lD4?p}#%WQ_W5dcL)EiYm%$7B-sTh{bc1&|u8 zGmK7yAUhCb(8j#8swHG4x;9}2 zMy={K$$Sm^Vqq2SPW802HScJX1kF1Z!C=SmzSK%|TZVV!JL{)a1Y&3^;k-G`8lB-E zP{<)DeZoNk;2_Z0BoFH~fjo$GcbT(;g(rXDk>$=CABP7f^SJ?qtUz;nc763(!r2A`dcBa(G?8Q znLwc{nV(3Oo|j$jyxcNzsNW$+iWk&U3{ecf?wN~}SHvD(t)r(R>wvlM880`;08_{Gn=9QIZ5jwnL zt0!8E$7ck5we#4Farp&$SjiMiBaFJx`DR8@y3kdrLt~HzctZl`ul3LHC1Z_eVJ37| zHv=u;^gZw*G0ZIAhPL%h8zNZ|6U z+GuNEPzPSdjc~EJM+MSOT(<*#cB!-Bn2LUJn-P9JC_1MF>Wv^-GvrW$8PecuF}QPhfOtbk>#qbMiC}u$UgXpoxdD^Sk4`2 z*CxC!bH<)fZmuD9>wQ!LfxO^^sdT^d>wsTjp zyNdy1IRNprwfOWdyBJNGT?}{_co)Mi;a!XqORm&TUAT{9sP^9_yo+I#cG|^=!Q*mb z>EV?x@O;6i!k#zy>4jg~TV2WIY%1+PtV;>@P6RUfyoi=Z z<*OQiM(V2i;O~)D75Lj)RfAoJrIP-Pq`xcaUsNS?U%Up0v(N%udf08~*XOA0Zo{Bt z6%a5b*^ehXY3scs?e1UYJSWM2O0LsW)I1Lx9PQ4E)Cd&bo;t2B3uILL=`i=v#43pS zI%A~RPMB-JUoZaUqpPpg?O58)`^W0(XlHm|cdECF_O#YHukYcNdf(KW>X4pl-mVp& z+8f_gIG^;5mUk(|)9sTjT`7~ODFjyf)eOMsX4EveyTsU}%4O!F`NT{9BQu(1`J1Jip&0`pDVP?+E<;rr#uU<*m-U{io(tV)GyD z5=M>5yF$*&{!MNcwsQK_Hi1aato?D=g}c<*S$l5S9aX6_b-)NfoE|W<)F;2`RKtX1EJ2~RHyxnE}I|Dw!w=~@#wlL z{JpSl7`9=4Ubmnggb1EzwI;D6%AVpN1RoraJPMX1z^u0|qW4goLx&7-nr98{^Ibb3 z@WDHuHIxVSW{C6PtlF}#e%k@>Q_LcJ(JTC`z{0MH9cxW&arVyYLyMf)StDtSW1lq` z`z05gb^Or`*bm+>c{5I-H1C$M&l|fXes=bPBw@8yI|XNtx7rA4(4te|fS^tOGm>{u z{OtQQf$D{4A3GvT+HP4Ua6fxCO(t-EozXXm`n>Cf`c^6j^}am&VkU4ucKd<2cIPLv zdE2UEwh*{q4Er4LvM**&^k)4N$DUJM;t{qf+BIw)*T!}(oHMF0LkzG0yf)T2&&;_2 z#ME-m;a*Fn&a!hZL2t2hU&q`&Hn${z$pi_0dG0A$YH%Bn5rK=GH+Qm>t>~?Vu5MoE zu6B0KJtor@29$%_PbIP^~$efyHyC$T2^AOR$ChL^+}WOy0EWFuiG5 z0i`W8qQIdm1Ebv^|FEGtONLM)U(^TV?Xch zqpLPE?sHbOmZ8)em!;BJwmuzTkz%i>UsMNOO=;)GlU_AExq(HH^zf75w++<{%H9}* zTXrk1MSt3SXCSea3KC^Go$vO|)ih*W^7AyaC5!>(+~5;kj_p#vy_San^$E?_p_9ZT z#KxoF-UDt27)=RAfNH>Wx&dYNPs=|5K&HZtzFiDvxRE_)*u??ZCL2v20F0XSFL;o# zgf~d(mYdSe>-ZMTi==qNMRx!TYGZ@(7%KuUQr4NwA2YAt3rFdmkkkTyy5Iitdk%76 zW{?^=KM4AvS$I1k36>wW_;mlEyS_Zayf^0=tf^=7y4q+04fW4B-(WXwsGCS z|4;Y_)OwbAxy!Vq|0A)!$pFNABvv7Yjo)(`)@P=nGZfgj%ToIX=t@>wq89_#233*? zljY*~q2`VQdw^~1b->j85s$^!8JXz+2hl^11WeE>4k*`+VonNi4(v#Or4hHy) zMjsRAa!G;3kV#=*5_<2Hq6gPJ&nv?hz|wiK~!2zz1#*rx-RUi4`^M9%Dy@5;e|W7B$vJ z8hr^1?ikia4W=$w=C%pXO3c+bQ;d{kz?pWyLnfg24=~o6jRs)^Fctjvqh{*>!)P=NEw#*M z&8Q`MAP|5{OOzfAPZlC8L#*S&)bP@o%el#%c)RE*a2aswQYp-yN_(-{!ph4*N(1Fy zX&7c+)9m8$+SaIEZ#v_yD?L>v8`@AOQh>V#3qo)u1PP~XXIw2tHVRlcLFDx5@y$=w;GjI)fGu#^QQpae3jt zB`DS8r~p_p%wdCxbg6&J0S25h%!m>f}WVBjqhK+RLz)V&U0&b_X63e40(#eqhqB1C#b0nACPXw*@-s z)c#UQ>yot6O>!Q-*_xa&D}54R7le+1-4C(gJ~pwaS<6Q_*x~R4Wr|`~2hor4A%ZqT zpo{=KTLrhIXsFY8%c|b4f6J$1?FhNcoKJ6AqJz#WvN7f+3_MsbD{!tr$1pE--dOrf znu8|b8(`vWf!Q+n(1&| zro&)^IUjg4ZR`L^$M}hL(qPWz)CTiHyz9}ppb!!c0Oj0Hu<%gf**OSAPz~dw_lBg+vO0IjD}WI0G6hB0B#Ai>+o`LAcnqK`5N@HF`nPdF=|897sj_==~L z|Ab+N!Aa8$Mk2*z9(3d{XR~ub0=&IqJb1Jw#dJ(C7b`(AOB;30$X`vRhaPYHRUQrJ zwIv7z4J;XN_Hr%QOxPt{6_1kH%>M+SRKl6zlwy(RI`!erOR#uMaDqurHIiDLL1#Y! zAZyL_J_eS5Z9uFHMD0I=?MK6dfP+sET?a@oN227z1y#I~vQ zp30Z`lo4ej9ROzB@*`p%x~MT98^gX9aprA6Y-b4dp2ic=1riR*j>&es=is>r&nR5O zShfq$L7Ye8;|GtV-hzdKp>Qf6!@wJc!UI7HY>HNUFyt@eAD(b{&z^ApwXFZt1P05| z#}KX9!eN)Wph5yj`4GGc3@sAhV5F$q#Sk9l+Btw) zRw$kodI@S|OK4)Yu=aadu{6rnN;%oKTF((IXpbY%06zCnhyK{FA~CgJLir5oya(Bjd2H;*tbCwuDu%P#Cw*|x#6d>r0^NOt z9^`Rs8r#c#&aU>NQUJ8nrvVbq?gEsEI@8zGl<3~z={d+GhCPRcbMKv%AgHPpeMa*l z*8jwfo9joos6Vr!eD-D@V5o=55EZU%mFelfv4|0s>V8$wk2gev|u}P`JhIB}iuK(xnfp*^O{f}s$_J2UT zY$j*X{@IPrDZi*pA7r8QG;iG+IAGpd;w%Y%7%|l7&`^!0|7A3Z7qc5{=|r6z&ha17 z^namFi5JPD=^ciN-P58gWEhb<4>)Pl(~u`-IZjWAgeSq{rq{5@=|ou>ZrW+cT>L){ z`NRxFtW^B4NznV9ZOj7UB?W1>`Qmw+FLpQ|wih1*MzxWHE@4~>ql$LooO=$=ZFlv+ zZQ&v@?X|-H>d@>;-+|4_!gHBBGoL!JqQoQ4zO}_^uz1-JJ0O?Xg(52tHC(BJ^C>PD zPUb;d3xcn}whLq1m@RzP9B>%Im3MyZJR?qf8=q=h=RJ021=rI{=xjg)o1nw^~CEq{jF_>brQa z^Ugq~Q7a3UG)G=@=7G)GKi_ZgVM+#rZR9Ypkf&uQ6SzO|OE=I$-mE;UH+EML{pCs! zVaD0wFdL?VUBAZ*f|Vrg-APDPjh6eaobQpTi-nV2R+>MjUH%NmLT3^4NA7~xToVg@ zJjE!|>O6X40`GwUpd0^C!iQq>!z&4;{m>N#>$L~qj{a^wA*RR=Tgp!EgGJ66?Gbv! zncLn+w1V>CU$eJ@gL?8s*#J&G12gREMeDmQLnrcJc}`Zba)vy}Dl4?dvvgYm*>@b0jx?R#jb)|Q>qABy6T zG*?M#BMFqvYVtkcq1xRAI!92?FP1nrKcv;<*@iDHmYt|r;Vzl^U1nClOJX_9!xy0*^sOQpZz!|1~^e> zU;4K2yhV(4&%Vd#zK+k7Y+gtHy{4L%#E%ZXv#PB?YWap}FR zTzil6*uzEiu(S2y<4^;>TU~P;S9A^BB)mJYcX1YP+#~G3df!PoH$F0ualBmP__;?| zf!z5BA3_)Wf>!Xv(&Jd+{eaG8Nq%NYUoLSPA7%W)q{LzT8y_t@&l6h#k9h#?vV|?- ziOfR+dZzIZbA-=K=j!wLm`l95h9L5JR=XI2fkf7bcJ{5WsoT!zLYyC$#UIxn;Btlx zkKrr?6FM!ARi`!LR{G+6xDg(8J_d!l_)#(+QN|p-*qRK(ZWS=W-7;XZ>CK63dLuxs zGngR_Cgz9x>;xqvRWuk^i8gP0tT62Y&C$ye$(&(lh>OcIPCz6(&3I}bMuSV8Y;<>L zdYMs$c_6K+u!W;!9JgWGZ442xih~7+C`dd^IG`zVUEB&`Y`FJK+9}+e(YIAE0C>>m z**=yp2+xDbcK~hJyI*+o#$W>^j1&-myf`HgRW{ES$>akOvSbpf0>uke!2{$yAita>FB3K#*$XcSBkbhf zD{$`JPy+YwQyXw~f|@?j>>KfT$vSn}M3dQi`ib(~F|1-BdPCyq&Tv6@(^vOc} zTKZ(>Rt>NlS-U|{f&DfXsLPRwIr7dW&Zkc@$H0vVIiN~-bFf}EI1`@YdpvG@itq7w z;;8|>csJCRX@Jo#3)|WER6*UJg*|c#4k~1Pd!U#ZvX6+_#P7p7x?&nG;25@X3>uxk zu{Hv>A%$?4!&6DG@gOfi`~lZ+wr?z`cN-77>(0F#0;^N1@*3*ae!UJiEzaCwp`U;V_EX%>Uq^Vb>;5!VW|L5ATdbxJ11YaMPItCnzXD zBq{I6fVs7@%y5%10cgZ8`w*_%pSNNRcz#%jbS^ckdolEnVo|_=>g@h^-9@Au4fohK z@q|lhpo#ZDyzZmR!p;ZJm8IblMCg>g(_q<;CNMK6F?g9l^FqR);ga%UrDX>#Na0c# zcGfo`F*7aV{LxGgn^CgtC4<{{Cmmhjci(|tx2^+MClBUSa4ypxDJlv3Cj9EnIx6N_ z5n-6*09M3=`CKkp&jn=<4A4Ut1YB-cDdKUPI-DoF4TR3Wf8RiLk|0w^y<11Q-wg!A z${0kK<1|oM23r4R(Ac=qupEdDU7U$ayR%VT^o?%FJJxMp2B42&Wy(vx1%Or%Ajv6q zv}XH+0^vm|izhCX#ct!luq!>q1sbj{QzP!aPL*p8R@tQqKnA=xx4uxuv9e5vF>K|! zt3cW@)zODj!D!u%_(B0VhZK4c^MycNC*EBIJV3Oac(GpE#(L+r{hHP~we8N__iLLY z|Io8;8xTWNga6vXNjnzIhW2+NS1tm}I;aM# z#Ns{Bvh1cB$9NwV6>I;{5pKi~8}d0I#NBuGt$o!uDO9gz6{GdD9Ma2s|Tl zkKs&TTHEznr%SiAm>X_!e!ZocDsS6rAzU%JwMxeXBVX_PqBxo2y6efI)TJ~9PjOfzyY4629hUnjPyKI^E?`RglvozbsweER|Y z4=evK=XaC6*?+Z>MR zaAyWju)T*%gcFD6Mb#r6ROUSWo64T?aCjCEhaZ54!$z)Ofp+5D6E8`(C-NYBmU9_0 zOe3Ij-<)%QGd}z_zxXkKFKw&N{XLV>QbcovECcs`{c~Gwd>QU<0=t5OPKi6zV^Jz} znqP}@G7Baoo7v<*Z|qy5rk4rrI#G@Y)4opoYnM_VC-wT==+EWg0+Uy}v+VVo3cO8Q zpG2)0*msQQJ41fgKY$=Mgom8<#*v+Ze|;Rom?C}20m6fEM-7^*GX@L&TTm3CBuRAp zAKzHSlq~n)aJ=?{?Hv63%yzl6#>aXDt}Ai&ZJ+JkQ}l^*+M9M&_TnWFHRjO9`2^@4 z%m_H>_QE+u`7A6A4%~2CS>yci&8C9PtxLQ~pqpRg4EZg`v!DIj5t-YTtQZd1vPI_= zc|?l*_iu+Gez@?hY1u23&U@>0542L}^|wxh658+WIT*u|w{ObNB8_8tfHY^|?}k#1 zbIR|oLAhPOE5hF|es_9RHf$P*!5N{5?pV+WEotF917ggqna{}h*1XdX#};0Hr><*q z==TG1|N9!yNhRu|N1R$1|9cKczV-KqRqeikchSKN>}_yKt;oD>#@nJBoPYfOU*_Vw z9{=l(0zw7!`d-)Mh4B;MGqT+Ta9(zVe zaD4Wto#`|GL)(li-8k1iXj8}x^X@yIkY++bctUVHz26@qeGrrc&@CT;O$9_Gbr)EX zjEIV8jYA-g;0iK5#t5k09XF1tBe-73Dwe2sR=$5prS@7NC;^Ot4gLTva^6Gu6Be>imT*cjUNX?LRA<~X-anD7`2M=JQi z))5Zkw7=cYsn~T$dOhM&?EN6I#0Kc;ULb?deiZxFT>}}~`mF$7-%~yHA9RLRsP9l>Rp{GwJ=eW^oSPugLhghg^5}2^jP#Y)f zKx+fwhttRWmYPX9Cyrx&aN8od&b=C9E}shI*vk|YW*i1c$&vc>e0?JoB1sJQmYsUO z1%Nk9>WpFbzxe_n+^rMT=Z%rJ8|YzREpWkkDYz_mV^HkCkh_Y4*rYh%V4T-4^JbHe zZXnJGznC|t*{uTR42WvMyxS$&VhGSJ&OO2p6vY1lQLS+s4cuv16bs-hW3@Y(%lW?M zjFqOZ80vO?QCOhE#SiX%D{__=<_=5Ev}DT3Z8^Iy@`LqhOs58>6kP(;62XelCEsG? z=Ua@(?rkTaK;bxdxxOMo`o~dtzk2}$7)YieoU3*($l_52#B{1l8~NS^5prdO+dl^u zL&*X*Y7te*qpd{j{|SC*Vv7m78T`JYS(`wkKP z1%U0XVD6sC*fXv1!4Tu{Z_|84L_ zhOaYZO^rC{4C+U8&{h-PTZ|uvuuu$edc&53=a@F>3)3c@VcG-)j2%jtgkIqkYTA68 zTfya956THFR=@9H}DJKWekv^NsDsF0}PnVBma*Wg^BOhFAN zHaBPlf*QKcjO;T)J7;v-Zvb%t?`*aO!$**gV2ADL%v=Jg*!REz?bm>!U<)W$4rqG@ zpm07m5{1`UhWH;X&Hez#+j8C+PJdG`P8@~@4sb-##LkD@lEBLn#x*9uJEF%LSlYWf z6yyUyfh+guJjetUMJxyl0H5r_0?-&QH&(P+S_=KS4Xl=)bpyP{P!Yt~V*^H7T0nii zNdfWOum>erTL^qFzk?+A;K}n~Kgfz6sGEsBQKtLd0Kid~XPW5)v&Qs^{pWRD3n!}A z0zAHZ1ktYyXdM!~2+R&M&7(#WotM};P!#sDkq%DcsgS0<4sV_ciHJ75ErPVyJwtY* zJg)G_&?=}DDG;ccl=ZTj|H@RUE3HLB+J(25yU7x7FmGp)z%33-`I+x-aN(f197@lT zL+QvF;JeTbEJF(`8CoES=bUlF$mRp~NgtGql`JM%Y2naLq$4mt#p)jB_d4ekAXIMu z^{24q5X%pO&3gY>m7I$}S@3i(c-DsS(^rRrx$`Cu4lQQ(o$X)XrPh#5X(Mr!vv+^P z;bI^|gPGrmJC_aS9x)dXc4a3DE!0LIcAP2Aus_6EOSXL%18)+Uj^Bu~O9h?g&nwbE z1`h*zH2(e#$To}=5Qj7ie&q8~y&HXOLqfo_;6YqFUXr*1g{MGXN?U$ecrh8;7o~^L*ByemRdrIm zBmp^GQ7ogF&*}5UjG}ztxd4c)H7{mh*$;=Aah85jC0?|Hw=1dvj^cK1n32!#>_rpD zAvy!My5x#}#`yOHmi&l%JG%w-idHD0)VhI%>mZBJ{zQQBUn1Qj%ERI0b7!?=3PI+u;7S;+TP!iUXz&4oQfN9JIyCaom&$Wo=gh76*a zt(Oc}5z|Z5dI$sn1S5lKUMp5WFE1PuoQXxrNErvlCRSR;4-Tg9S=unA%x+d1BZX)8 zKToa*gzq`K_6k1GI|!{}Shh9*VFh+E08JYlzncNL*)j|Dp@Hq44Zx+4?!2u7?^fjB zwd2LS!_FP%6d}-J-SIA&#swyh#4cRS^zs$BOEBZw3W6lco&4=(&h`I3mYrHcQ0&zD z^S_(uFvt4pu*Ut6{hsKD9+t|{w$Wk`PEO)5jp@Z&Qxtsb3|xco72nJJ-d87fy3xU{ z3llCUbE5;>N8rPllll~2)^X<7S7dH<;P*XWv(IbTH-p^U5-u--QnzSn+n~!MLO=1 zMF}qNaMpjz-mpJ?JHk68U$o4kbE#z6VmdPHRw-TfKAqv^moBR#OPx*Bh>NA~=104F zi|E#jXG7MnUeft$T7>!+Vm)g`vJHNGF@7(HmwAIpo6y7pA9>e&;1;bG+*JnsO0N09 z{Ht~!onD@Gm;tLRSe*kk1OA-E11jk!T=Su(`Uy@GHP25Ka_4x6O((5#Lp#Ss1Ef|x zNCgqT_!d5c#Qo|SKUJf~2fE@nevq10=z^GbV9v{#8Xybh<_G9JTCLs*P~CWDHL|?} zBQt40^74Kps1p^z*EQ>9fd+-tm)%XnMj>=OG;9ay^q?j~wK_F3I>V1qPlxbwq@Q^sTYj{RF2I*JqOQ8sJqS%_K&s zyCanKF@aI?K}hv=gnDo?sg@k7ALQ~cY;prz+$yGZn#;h!ggd*L)XE&1GesE8q8qVr zJA0VKy6DDWc3)u@rTy$-S|7wVruH!T?3IYq31C=vsOeD>_j#C^3t|JbpS(=n8>L{z ze-0&5r(2mM15TuJ=hh+Rsy^2Y-4Uae)JLs~(YzSgjL+^sI0^WSDv8sz8D#qG9k^kL zk@;wx>ZwNUiql|fQSn?ltSZZg;Fe?Xm=F2v5+SYSnYbZS!a z!CG)Jkn3N^I%lm6YCtXDyQyx=Be@h_9PFGx2?DoKQxYWXMmLZ9FV&Su0aahvn{Y9_ zy0V(;)K>|L7ME~iTYcEO#>Lr5G>_H84OQjSBzi!-R!SqnNl-t4Xjd!qsf_Mdzsjdl zbn?4=I<;D0+=aF20XZ8sIPicJG(1zFJhm6jX6EOUFb8h^#a?s-T8Q`V0nAF?AQGdH z&MBa(;`_-iN}4t$!!e6l>`D+bkLT_J zI=x2Ef~06PgW>QHAftE)%jK3rRar>q=rQn0;LdI-q^aoOy+W$f89b9Nsw?wwtoEQ| zxTT1qHC+&2g#KVsal10pmtor#8!DHoUDZ^e-YTLRcP`Z6VtjI_T{RVFhlSIBu|7Pk z9qzEsFZPDDz0#xP$u%P(Kux6FWupTbyaah=YI@qwPdov7Mu`Ys% zE`!5SDX~`>X^TohpF&pSF^X6jS>ELMFp4T}0Ww-9=g=}b-Nm@1tWxXB`1&pNQke%c zE2!LRW4XY5b$L%Pt3Tl8l&+*-4HD}SRK7ENkK5=e6&|P~4#oW+KGsqhFc#GahpaPp zkvJ*~`1eO7SFD$yfJ!xhZiBG-ii7|=O33b-?OvS2%c!sqjVg3=i((0ejY-x_ ztWjt7p(d(Q%llwRCFz0_^# z&FajIsU!Q!Iyt#7g!%pIr+sMw#;~_9&C=_gPegef>npy^&&QfHulFzEM#2;$q=u%3_43?hDypW!%8yLXqb!a=xka=K%dPxg@Z%Vm^bqf#h5!2g0{^o90{@f! z>3^_n?x}@TX;-h;QU%@r)Tgzym!P8T7)aCm{N-w>6s3Af;V;U%zFfUy(je*wJf1&@ zrgqvZ+!@F^dVKcVcw2PCQ|}C-vk9AhYHS^qHD)Xq?GJ%M*9%0})gMA#{2>q_iL2C- zIvR%#t0s${HhwadOH4^f+pR6}QVB5??MYP(p}th8>>>1ca2xFM#47c#Av9{RyTQuV zzwAr<6Fd2ycn;o8NFWikuW=GZv(r(h4h2@WsY{2_$YZ^o*-q7XYtP%NGHe*T-4qGW zRk&OF=Y6fr$l?A;9HqV;N^c=>;jMb|?iN!8!)Q#^es(0}+ly}p+)r@5Ha3+i?B$%W zO3fcec4Zm^U}qHJs4RZ6shx?Ccv8JOjAqg!YVdFxg8`g7oKm^&bV^YuS86zYb}s8= z28#*UgIK-PY$UUWCE814{eu+*>|Wxz!c0NkfyQcY1SCVfuSg;Ia6R5LUZb_y7mfnL z%su#t4d@SVuz1KWmsOuLQ22MG3VWF%H#xcc3KzafnHw(U2o{Ud2vtj0|y zd-F22Y!of-l(KJ`8qh%3r??Cn=O)>c&7Hsi7N;0`K>R>j{jPy-f*N&pqc%Po>3Fm4 zF7@|D8WlmHws?oGQuR$Vvk;B3@3jS&rsBsw@H>j-sUybFkzC{Xu{22a8BIC5T0IYQ z_-LA$Q-ec2*x&RgmZ=q^X=o0gdWSQM-*d-MvSdGoX%9h95S#YuWq8?uKZy+o%iX1O zCy$}&UcbFD@wx%Nu7dqN==_~AG}BiT3#r5y>eE9nEAEtDE*zU_#~m>a1zx4T9See~ zQ8UL;vat(<>rlmuN=Nv-I^O+`t+UbP{EFqOQo`!&m$B(BZ9y7;Nne1wZ zv}cNGl0#@w@Rsp3n?6zd$J3<2_&!^R5yR^QhMqVk@e?~gO?a?o1X9K?-1C@HGbhl+ zG)Dby0v#=;A6qPZMXKDx4yz7rk86guJ4VfIrZe+y;`JG{-LRk`>YZk4=zjSpU+ag< z{jk@?ABe)|Jt~gBLlB5}AqkHcn9bfl8*~EyFp10!wc4xD4SO&R1L(R7FYXF6?6;ve z=!KkCciGghSBl-EEUXQ=XMhqz)pnbfrz7I#0Q%W$imPBQ&9WfuFQK#EybsZP;+_|7 zdhd=U??3ey_Vs4V>|?qGL>Nmp5y!2NhI>1FnKXC|!M<+=h%QqI*o>pvs6dYp4b)Ko zoJhm+?#PZQ0tBjtLov5Q)tp1|HPN&haTtv{4ip5(Y!b)^?y}_5#N@*iYc{NBiZ8{{ zzX<0~+`N$YLtl0w&O~^3J4+|D_R%E5{g~?XNz}J5lan|SvsQHWvu5mz?76zcX=G>} zyN#gg7*i%{=ue{cPZXt( zx_09U!?!)QG&cP``b{sSx(WB#F@ewqv z#0^i`?(-Z6Xnz~pS8pCcy?vP63@V1IaZ@OFzBmqcU(d{w*Y5%M2D_JTAXX)KFa;pv zeEQ}Jvn(AD*Mh&3YXKoOykP);!C$9Pnc6;u{N;RaLmSd_+1Kk&<{%s1h9J0yl&Z?( z44sI}9^hBF^2TB{Vk#XHk!vhg_>ysT*;JaKeG6=XAVfrMo(ipevif>zH}AnNXcDfj ziB3U@lhv8ipeL?TZPVz8JRCTwGZt}FXc%{VN7RmKot$-0(ODevws2Toa4iie!aJOG zK#23=3YPD+Y7k0g}eL2zcYs~;Ujg$2B= zgrJceUp7)Ctd<`|qxwoC5JO@^F^I1aLLTtk$~C~*V5&GYqBt1hE$6VxolZpnpk_MN z6-r$mYk(s)(B)#7i|YB)sh|*op#>+a7P`&?iKNI;tNKBo{PuKwzjuvVH=UZ2Vl?dY zVgC(&4qQzkd+uz_F$7No5*3(16QEa`ivQixApqEt~-+plZgg8h%CiTnu!?QZZex0)~B!rIW7TPc`BP*O6coTH(; zMQkIPx}EkvudP{+xEUr*#8RHXAFJmV@nu% z7h?)f;1`}2-rtNQZMf~FQ)ut}?F2115iaBB8%+&}Tfe=Tqh2MFmyPN$`@eDjreS~a z!7J|tC#!oxW_e|%c%*A__Vq^8(Z^C@4vr)<3&X|fYURJENL_m@k~CX+l0?9&iH6$GiJW_!(2L9#2PBM4raASqOVx%GsXC=u z04rkdnmL)LzRozwTf2TE;Bd=?OW!`KHl*vv=l9-jLVj;r@w*!~YBO4REo(;>%4Sf~kQxFEr_W*O&J_PLe2 z&^-qlX=j9dH`m8sgyiT3PUX*SMAXbvsJQrGnKz#zUe&dyz*P}eWv5bkVWb7)TNpR7 zMc{roB$_nUd&kou)z~sRfSmH>+l2!5_aUcUr&8gengPOYbcx9pVnQrRH)0Y-n1Bh5 zFU=ufM-wI(Dbr=sX;j5uK*fzC68g&ClG&%xH0{8~W|_zQMvBycM;o}T7b1J}H0s^6 z%=q#&8l@YsvP75E62tO{P6S3phK%^19wzpoaw(kg9bome02ugH(^zGCM0V_U34b( z58&W7=;FRJA?jAECy`PgZh^{&MUVOAIcMe3^&x6XLO?f%RWVU@;Acd|XVM|X*Dk`s z0kyLh!aGX6!5RuMHM3??Qzw7VW-J{qu*YX_!rP)7)KfEQegx4tE0|m5s=>3UzswVw z61m{VobxGRmQ5TXnuGtt>cUyD1bA!YH0DS4c4$AWvqG)R_2HY0a16-K5c_HjFW3UV zVP|sa4etQ0HDRlCiMT-*+RJ3XT#=9xbli~^0a26$TRUewz;C^Uh zBYfa$?pf3)EpeL&36lW8_3}YIfEC7X zD&|K4lm^5QNvu)Dnp9~r>e+tSuoPE|pJxZGJbUS08s8iS4q$RYB(aRceuI(t*u*qL z|Kr;;tHoUk1Udpak;nZfsc02Xd!7Xha2 zUj9ai8%dU+#9csKp8D0<5FVS5!2`FO7eM#4CoD)YP9&;L(i0!wF`LS9fU9CQjii`5 zdN!5ju?51X%WanIdrbAy*>qL!O>XQ4_8e0P(gCJ7sk}LKM!_a1ex8xel(89nUR^nd zijPC|qY#Qj_O5q7^nx$ALE5+>ES$CRS~!RL4e5?L*~;&Px_lRP za5=!%Q7`k*e|;W&ha*}EzD||XiiG1^=@NuGSxmsa+3M^Kt5bh0Y$L!m*d>Y(J}gT3 zPw^8U3(^rh_?Q}j5lKu^oxx@-7G)TkHdrhFf~SxfitKto4#EGx+0YtfI1+n^4(#kFVc&JRrq`wKNj`{@8EY1=`%XJu+79(0tj1jfCuc(4uJ&*qM)hY%%j0+FyI7S zQV14~;Q@(`*lk|kxFCRI>kPXuG&~DcDxh63M9fVDT==aqB3@@Gj=(@!)tfQ+s6L>{ zoZV!{7Zww)3>jeJYD+91mzRQ{Fsh2!lbnKeIi@pXG}YDf>G+Yt0l^r99xS-2!G`7u zEyvz|ONU`6?e$o(5)uO@YcbzZ7oJaLRkA`by$GV_0LoNEPYu=@R^StA)|JqHpF5u_ z2f{4MAU@(Do@d31aNI69n~V5}3S2geYC^GLiHm_?YS9*CSSI!^)+zQb=6N`C zPyk*ZO{EBO(gbRFcuE5rp-T8U!P)$Cc`VZicMFd9(A&Upvof<3; zk1RWcEY;QpR0sFs7Yk?rJYy_k5s{1)0+EMSIgEWb576Zs9B^T~Co7*+GZxY@ac#_5 z*an%G=&c@I2oq7;YgR7aUtdVaVz(uA5$y!n-(Cc;UF`{A`x)%|i?L^wR!3h<3-VTD z#GPXN)UPkbBKXI}R8qmwdz;|cT+7i(%)W{())#=HM71jaF%7fYc-<}rkCP?Y%&g=v zeFlgxP=Iba|HpKEr*oCMumQ~*_2ih)D*WQF2Jy0o+KdM3aT=;!?f)^=LT&bt$;XfE zb$%SuQT3M~Oy!S9Q>mJJ3H2JDJ#!Oemg|0z2pTn7k+zepDb*Pef!YNVRDU~)iq(sk zP^pi5`tTAO(8sODj3DYBl>vkC1ZqU}{|VJj3fuhIZmePl#Ax#;sk-b>BU`(?yJpKL zb+EYDn<#qavY*hn22FW@vH> zh%eHr%bxrZQ=#YKMAUhgQVkUITP~%-^CO8XG;d|^C%#W;#o0NJ#V==I@O?Q}A2qYa z!H~83D`PAWcA`TT1v{857-&{su3$hBj&JI4{O+x({L841xoD|ce;JMKi;HO_rmBVy zNAN*nW=hZ{OqKfu`l(qXQ(o}U0~9UqI( z9e5K}svi6)-7m8}VBquN+rL71IF*CCpn(?Z-SP@!>%i~{{Q~xqC>^VS7FLuV7&R?y@{*3yE zk&(gCmsB*sC*-? zqGmzOpx7C>H1o3;K&4Hqzg$J9Rse=+OrE%uMbMi8f!#wLZ8QvI_xCm$JW+qLmsl$h z^+)j9!SNj-)YqQ|3sjO*@T=-+|1z$NwbgNCchUsZdv3O>LdFBiLEX@gaGO=%<-TQ87$N=U)T;Iah_RC4BUZ?daP*g;P68U_`SA2pM0=eg27&>iKJ_w->AV?zMCw5H|HX zs?Pg2BkXOqy4k``s-Im)w?<{R;r1Ilctf~!F%3EJkgYmtF%6eMe|V7nT_PQMeP)BOI`I;l>qYR#LfvFFcbSnT~-IhW@%NA0zP^&IddeqF~xPtEnQ_Q)0;LlnQa2 zF&vpT4lO3$rzB1$=pW#l`iI{}5CH#Fldq={XTJ|4e4gc-TJ9D@FMlEI=~3b%_FR90 zbCQ}3yUdspyS46a1&+k>^4q%}c-{b`oW!0Yd#CpT=V;=Od@jwO_(;8fJ@tvaqAx|k zYv2YNP4BA-H&D%tPsqkG8tBayH062dj+JJ=y&LVwAJHOlg`}uEh#uf{{)6-svti8a zRD4Js$ALI!&jV`14KzNzjbHc=irH7-D2VTppDaKr*i|x2z%CdyWqjz|O#BHZ1)PKK zV=E94kML1I0#`yJ_EH$DZ|gSsjyMFA9uW_i&6y@G{^HkEZWlT!>Oj^3*EpLBX3IT% z0(=4;z$h#!-6Oy6;aw!&V7IRTh)|UnhjIu^defRI#X~sa+N~>aOx4&5M~N@9Hf!Wje~^jOYO_?V>gxaMsc>YBuQ_U5JgB(ghKq0hP|Neene@L*E-sR zjN+#L!j14R+d%prhB8{q1K>G^Vr-iirw~W5wF42zd92IZd*wGG7G75MH&c=SO*6Vk zJ#;foEBO@AageQlqA~HeA3gZ)U)H>G-9L@Qrz-Cjc&H_p53O|19e)emMxUxTZ=s?P zKC(;p`ft={w@{4<*G17%s+XE@v{?Amfnom%o^->;d8@>;>WrmSlitHP@vX7z7mhLJ z*hUoikW#I7e_S1xSYt9ySOLaXFh#3*sEamt;DqFh9T<)tWy&bGqjtbD$`db}(aNsl zx8HV043h%6oj!GenM{~(n(Cb;G^lEMdk5B7J^I=PH4gC?CJuKoBB78bwx~WgLF3)O zN}Y5QolINQFK?m&b*sBq$rLv+b^P^5u8!bu23^fM)GVw6wo5hGDTbXZfX3N12wUwX z!UQ9r+magt%(S}6p%NTcDrklO1BF3pY(<$*!&$e z#LhUN#y+=3Sr47yq&E7q)R5b0Sakm?1_mAydys0q9iGT7rexO((~n-)ZBX8vK}?~_ z0o|^}+#YObJp;PETaD^Y*l+>WkYqnDu~WV3(7@=f=eaLN=-@kUr+&a*XTVnYw5;OD?lj8hk81SPzO)Oa<>73fR8qYAO7sTb zsP>Pg5b_sG1@cX`Nzq7i+m-6?ipEtuV8#s)2mDbnxlRqCTU-qX#H z7}#S5oemEX6Qu55PJ=76<@u^qY)GRN|ADfGCU!5UsS?PAjfZ*qJK_M*ZUp^JXtft( zeD-eqf%1Orozz^^aUTY3!nX$><6M+k%i~$0+V6z*v`u||C)FX`k)aWDlmUXRGWIUQ zcZ1a_cfr!wrha@Ejc#zSl@t#FxI0TWv2QXrRm!duuOc*&DWG=Wg?Nc=-Y2Qp4$8k< z0)nUAO=Gc*AB{r6(b6*UBX!5!^dd}~?$_T9&rVy;Jya2epv^%o%;S&LuzP5@x$b`T z^u6$}UaW4uhYl~{RsH||iS+0ltThu_UuHUX!!UEZZar|Z<+JOZ^p^2v+iKPCK59mP z=iY~cYt-WVC|RR@PY7ycrxSZdA_zHw_2=Hn0w)fxWKpl*M|L(05U~wgB`b$d<{jDz5$Ma6TV8a)jK8X0qQe z1YlZ6)PkPu2MEWtoF_(b2YW}1MZwyUtMRex=Z6)lrE6$y)%tru#YubLTF~k$o{jaG zQAD5X1ZVB2qr4)!x);$2C{m;Typ~c3+sJ9B+RVs+lG|P#q~^9$b$A!FOb*mhPCGSb z-+tRpXN5OI*1)lRi5mAHmEmJ+ta@P)f}>?}T9I?`y9F=L-l=yvpJQd~FncGVn%6-C zi~bBbWGB3<^S*H3)I%NAFMS;Y#}^NFzAZ3wm!QMB98$ubH1A5j%sqrVxTQSg!uP;S z8=<>gzBiZ0y79`pcMoD6fkCY262ZhJ%q~%&uSi_@-u=-}eWp*JcHU)(@`}W@J6fx@JV=Mq73#i+Xs~L0h>Fck?P|tDG$72MM8l;AHR{TT;QqKm-SZH&c$vMt zOps_NJUv}ABgLOr=O9uGw{~0NFT$2nnf)?!^Ev|;%iAxttFPD5q2_fDs)-NNW&C^= zmtgaA=fhOmblrn6j)viyiL!~`(lKC5xR-&ieoy)AOjda&%b&?ob&qteU70Bo%oK4O zu0qz);s^+3veXri(Ep?}9h69sh|Ra^`0a=k3uOB*b+dCMJEwa#LwYS)K$#b0-3%h4C9vRpo$u8=it#KK#izT}_o2_1ajMgx4^M9#$CevyL~e4s+Py;cU5igfbx^}qTjpBM&vs@;`@=FxKA~0pzAB8DW;p=2vM9A z4_Ocp(hOl9)dw4>G+U%tiV%uuQj;PDPtcOaeQ%?u3VSyh-7Te2Tl6TBnO0{wt~->K5B1 zNu8Qn(mlbgblg%av`!><3 zv`9^R7Eb0Z>WXLKgW2%D`uVfe53jF0i-R@WC36JKG+}^!TeV>adD~!C0102d&o)2_ zel7VO|FSr+nR(O}HRn01F8^)z6p~${k08L$h>y4x5LUX88k9!#D&U@}AYOwlx?ipER*s*wTK-%evjtm-P@DUe@iO^0IFK%9jslzx<%>S9EIs zIyNK`y+n%zqNLc?qzZ9d{njC$44_Zj|p%S@TvszH_&NT>{K&x8h**3Jt|0TWK7p z?cGWf`C0!8RrB-sSM+o)ao-<%g^JQ&y$kAM76Bb0XfN^JJchA?6NHl?qQG9~Wm_Q> z-jsO@;BA}t=2hL9smd+y^|BFay;)0le3X*Zq~FlFRXcXNKm_1Iw5W9|obV8MxDW#y zL650de?!eMht;gtVD@ZL zH@rrD&Giqf^>`h{y=YhANSEuG%=HF?qi%bcxl%3v64SR{bU&O?+oIyHqlvwl7EgPf zmgZ(+&wOmAsDHgq=OKn=_8Vj&JnR1}?n}U{sd7Wxm&l81W+dfbAGm|vlreJ$m-F2k(|BsiBm>e0dGv6%iglj z#(?zCx9pzTOExoRoZnkZO2QYO5!(uH#EgF1e!j-5ndA3rhPLETQ1=g5DO&n&GfteG z<46>MQKloI@WCKp^T^=IObG26@4fgjS;SR_Tmj*X)7h@hd|kZwyTyeSBP9@zUnCG9Z%RvGWvMXc4Z_w*t~-FqO!`hTbg-?KaZ5h1>L z&#q*W(eK;oLo^}yD2BGX#A-?sw{pw|uI=mz5D3g+2;&rl5Qd~O6ngf3J1xgB;m`o5 zp3ByReU;0FKfZ5wP4uWJN<@kCp`m2)F5GRfL+QdF{PV*9x+_@t9-)N?8~tJ7KMeFR zDntKGQM32jGwevUWUrl?a1!m+BcEak2NZO^gcVZUe!Fw_#(%O?wGGr9VhWZ*&SrR{ zQ;qln`rV!C`p@jk3h{vQ0RMsq@@2C~+Y&O&;_c~Lk2^V^_%8$b^aOn>J`dzXHP8q| zzfSCIGdVr=xn0yl>vc9>1UW&2G=k)$q(+daHv3TJ=>NLPxy$QMS>@I6)?z993p+PC zAhb!1BVN#XpV@_%u$2D{voKO|mac~?-Kpn7RB6OTed!p)6-k6{AMW$Q{Tv{4 zcv>$}fN(6?z&^t_S0#RB_pxJGlceNRb{=)rS6KfHX~10d;`?@s98;x}`L|AsTFp5A zgSy%$$64x$V^l6zP5Ihxp)HS5kplKDU8S~MX4H$2@Qw?3^K9#hJucX*a{s(n2{rU> zjHt0H`vBJW;?!Rb*jZSn)bzjwk%|6f-@R(#0T?!6CGN^!Qtw#RGF-iM0Ecs~QNJI+ z9Rc^zPIooz_ac4QsMQB;UVrq$LAx9aQJoIK4*Xg*;gDSt8tq!O=@2q_K)rRy-i2rn zeq&!|!k0j`i-dBY@U6aOr2V({4JLqgD70hS{4H-8S$5c5GGg+DE!#3%3|2S57hJya zu-!Z3m#q-8VZNDMV2RA`q)>i>yF#~)SKVgF;Q;1Dh9ug z6Ct%y6x-$MDJiPeA&GRwUs~Eu{aTOWtb>XZy>l?Iqk!-0Ip5! zaM{QY_EZ!pCtO_G90#0|8MX&uSTIx#N6hs;*lX85Yc%HF0vr8!ND5w9A>Sonl)ga? z_!0I_n$FwdPoIV#Ne2~oG?Wk$i>-r?+Pom@%A;IyRCgS;d#7DZOnaoh9apd0@aQO! ze0~&$G3(UGpX>psqxuOOOdHhppY*}VFMhJS!884s-3rd>$M8JM2DRdteOW8h-XTR^ zEAsd#3eGezqt)i(m8_rbYuq-4KaUdK`?D_cH$R6KnHR*g`L{hF>evftFs$#XEB}q{ zc@Gk_J;WX&4!&b}heCscfxVO6(3w17YT7jdm*1dWd*rI?}G{f4`4aJSQMc2|!#Zi5$i13Ruf*KUgP&~NsO zh<4@g9!+6QPUhEaumh7?<_a&+6q6Y;|98K8-GO$h@VWC^0WP@nWudRG@>ra`VTRWc zj*zbZ7ahS(r#r$kYN8bBO?tzPD0%-d;a0FK>V~shVa|F}F7;TLaQS{RBF+yNUjH^# zRNsUPUI7&uA(pxQ8v(dwQEiA|jnt13LSKAls)TzM)o;y2Cv{n*$PF%A-xw(d2BFs@ z1$+N<%|#n9{#VUKzhrm0d#34=6j5=$*{Y9E6lWhKS)w2x;^T3e1J^HM71+z{0ktDa z^t7*6ulPh4NQYm1qPLnB9n7ps-H;$gN4YqvRBnuD1a%I_XjxGhi^MzBxL7eK(nyQx z>aj%OS21xS#$$-n;zToWOsq;s5*>K4Js%Y^B)Bn7R3QC#aUu~8MTZ(4FUV09@nV!A z*Dl1RoP0B0@No5)@nVrHA6z6iG!wi)?&W5upyTiyZy&&1Sg8-}hC5%lJy7t#ZceeZ zgpH->Sf@#3&az^IQA6&o#L)?MQd~fA>NdckWRJjZ8@L&=4PfJoHqZy1O*5UM4X*Xt z+9ki6T$8^-UC=^|3%0>`Ep!{SO~kb{V5&rqQ45wOiCD<9xFpE^4QgnTpmeK95|e`z zKaeDTMc7x#B0H@di_j4i0Fg#atOpO_yt7o_{RHdk9x34Ba&=CMXp021Q$$~kiJMbA zX7|R#%v4bTmMlpX(-7?uK&Gus_@3Q zCUrrYD8QX5G+hJHF$IE7Kqf*d)#5bKA=O=?Gk0mYbdU61uNu=tHype7YOj88sS^5>R|AD z3hn*rEHNJJl9w$eQwO{y8~5M@6PLiK3W;{2hzG3N#m}B z+RiHMcF+lh^`KG3eNh{ZM;lK<@ zFA(61tGfcvN#OG&OiQ2fF!lUHOf@H>f|Nf6s*M3uT|HD`|EW;=Ir@_dwWBE}JT|}+ zUjLzfQ11knAiA;Ix_H{Uo@t|ymd0G54XJl5fF5xT^?awo4r4UL_D!j2N=WD%r>Omk zXFWpx_q9jQJq4y6Ct|AkFKQ3#r%+UGP4}FL>c7AQ38LwUYPfV%zC4k1J}I}T;iO9b zDdn0H4&A&7X4NbY_q`JD=KmF5$coUqHwKXP(#>nOKF9~W5bMM~Qo~g=q&J-eQZ5wL z{s5}p{{^Zhn6NaYF=?ZvK*z1q=6US6-n=`?%Uo6Fi&5Esx=g1&%@-LhHexl-0o#(< zm(pbC4He%~6tvhxe;yu!{}L|xzM%%T6urhiP5%Vgi5j8$2Ei19sI2YmC748zCH9-n z!in-R2E;fwK1m1uFlt}K?-l%mqaw^^J-#v2f7DW3QM2PI_&0Yxq7&iQtATs@eR6yw zix7oN=oU1q-k!pk1$Ph=V>}o@Q<2O<7_9ei+@;stZULk)5-U`d6Y(bn{xk)@mOv+ z|0!>ZiIAlGnI`tcq!1FPA{XUCNZKEmHp(#*T=@SPwI~P>CCjby?EvN;C7~rb5{NVf|Jv;U+atv$u=-yRFF$BS{}i=zFTb`B@A$+F&Pd? z`? zOguX2hldZhACRCvWA2MLQ*CEGBcea6kJ^Z{YL2}K zDAp?;Oh8eymzbM2?L`LxfH@BOH(1!~F9b1+p>hG)04B4Yplkr&*v<;3O=M*7La3*4Ca1#HJMW8*v*&tPBW923pZLd*H<){$I-+Sh#AssDgG-*4|Nr+lg^C zi(cXI)Yi%88jElqalv$RA6n8iz$g!8!zX2!K3_?rvnasncpzrAWuwdOra!g;|3 z+j5F1oC7Y{i<3&>-20l2T;sGcN8w*Fu+!TpU2}FAT)oZZ{ZF`HN3H}2XP*nEv4Mp1 zy9+kgZ#6l$zHZXSna8T`cEL;>Q95zeYNOzOUDA>n-Ff|z#_ zT&mt}F9yP%AiYrJV>hjDp}07{u@Q}xqC7nc_{g_JbED9oaFsBXb^v*LD`8Y#2tq z*F|)M6W&#HfYa4Dqm8r3I8SJ&{>!f7d=ar3#q+IH{d4DTeXFOwGYu zRK{gU*pzj!h>Tgm#9m@zb_23BN_w5sBV>SP)Ug9ZKru=k~uU_trxnr~X z!@Wg2RyU&-c#*gm0Q^M)z5}7*IGQ7z)r%tnq4*Aj;^rcRHq`agp*7sh z0}u$781gYAefYDmKxzVkaLiN~{`~u$g5dxH;h5MmeCdJRG8lnSg|4#2BS(0g9=pV} zp0)?_ehr}+9qGvBdS@h$`d?cr`Q&}vhX9V}(J;=9wNC7(eugf>(MJs|5i7IZgd7c+ zP~Qm&n@GJXii=B1M0UK}(e}T?j)vP;A)TA6VVHW^8&$0%c!cwiBf6Z&~Gh>t%U&?w6s^N^9G6b z5Q*0f68@C;8745!!2lyLiCnE7AB1l6vf4XHbV7op!8*a|gGDQ`F2=Yf(}M5ztgvwb)(%!(j1DZr25Sw6E~J12ur6 zhHb%q;`<0Y*M8Yf`g&m*Kw_&He=vplP<>u1dR(vzq1YSB13iE+j~3RJ?*r`_#zRV) zLBlOP^M3tZ`WpEeinx5DC`>&*4>tYbzSXXI*_`~y5@I;ZByLxW} zE*^BEO+mpFkg!I~`W{1HQTryMk)Krwldz1uLlsUE{Q@Qmm6Jqk30r&B5rOKlNg|I% z@+dU^#>V2b-#Yc_BuJSZDsr-TH09wsy}>G=n>W3niWFy|!Huam`V;Gq+3>h+WI zHM`LYsP4KZ%GHNqHjHoR|25X#MG60-1fSd7$_D@Ck%;C$n?nz=oOI?sev5 zEQb=**}-)~5+?BGSSN)V(PBmDE7)s*sL{28=X@>SD=K%oD2m*Hl{_w@eiuiOu(^JEw_mk&Q&$xK6z} zO{{LQ`92dJ?ZyA}pHm?+)As1chCm^|&C4uIXJqK+3gOtFs-qQRRI{zf3#H2!7?L)x zRhLwX9^%M4wWLyH)f__GqLo16AW!_i;fMf37>j!htSFNzoR0f@LYO0OgaCu#v~?(l z*x(Rd?LD9gQvL6^q^K#Egax?-4a*!%!}4G-m_+rt64&Ym`H`G->egrD8=;H}u<=jD zJ5)*!npzBp)v0^19m^B?D0iN4PetcR2ik%5!&%^Rwew1m*U_y#Mu9(0XFKS`U=S3% z@s5eIefHK2m-2)6RNN@&4Z z2ZyVMCvmuQghBj+mck*re0CE*&N~5PM)O#{#_&h{Ur;4R=6sAD5|13=9yw4J^Qo3q ziB6G-gRSFrYDbkgv#ahKas1D>Qbq=EUVlO5tST@9f#Glxc(VkAQ$n3gd<&e9!?;CW*uo79q?xIpD%d>lNq%sFQYKN=_?2HAGRZImvQUMIRtW~^EEF4AbM0GpFFQQ9)=vK zFV3f6LS_ZqI?@x&c@akHZJcGK-fOc&&yp|oe#oChH)Nz*h}EQ7s1Ppz#W_8}Bpr3RuRh#y{Z5h~F2!1SDzXKC(-go?sD+d%D-{hms)MXpPF~EGR(qsYE2= z_`ZX^wM&Wo=H*T*EV4*eEqLikUt{|bWN>vJ5)7=0MWB$L?J7N&U1z%gHP?x=N1?JPF7J4O zMjots9!Y_k;KmeQ-3!{m{@ip5b|ITLsZh*MDaUx=4t0Jl&8P;d%1+`!JsHZoGzJ%e(2pQ}J1x_r&9x)Q6OxW()UmxRv9n47e0M#DSM*oG z)|Ob@3P?P!f!y?GL6GPq$l1sujWVECAezk{&p1JRC?eTg)88CH1oMaC7y+Aj7ec_( z{+bx*$$@f#5lPGdbLLy5A@0T}9&&5G7KfVWC=MZ*Aoykwq06G!WHs&L4LfKOL;@NX z62kuk9;?wz#!K>aZ8SMURb_?jDK$9!UMdPR zt7z%75Kp%!|)_}SaNQ$=dn;s0C})mH8oPks$K6yjo(|{0Jn>sLW~<(ac-6` zPz`<46{3HkheO|XRXSJX57GB7=?Slw7z-V!y&rOo!jW=Kx@j=|fmy0fFZB&nl%{zR zkUM+T8*@dc)U}^BU>}UzLtJQd9wQio6}F^#SjcHq#q&hbnaAMCbui&@sS8#bjxGsd>Bn=aP9>y?WR_^w@p(qT> zWESs?AI`qOj|MnC6leR5>*S!BH1C4FmYWwaN?z;3|E z1>)wMEesAb!C|4n+<qU~bdYC}HbYIy%FGWWr9xZZrX#9}_dMKW9= z;=c3ZZ2K8yqzQt1ZeLRK=R|%N19}1FCpiAG>;aDn6t#qgv}Oqu`ZxhJHx@#1Pa5_#!-_0@UcAVP10y4lw=Hh~ z>CkA1rJ@#z0TCvt2bV5~oG% zG;G>@vB(nJ_N$`B7;X1{rp{h0me@Ph$BRW3cErxRRSb)6I0iHkzW0UNbO0~L*54|U z#c{j-ja$W~qSNYw$X*{!Y=)E58CswAHyf4-O?6WsNWg$_iH6ige-#TNR)CPcx78Pa z6(3@|uiu*x>^Js`VYh7jx_oS~3Pa`n4*#LpPMvyPiE8_(8n9g40Oz^oqBi27j#EG6E^)ry!eooNwPWLsY_LDBfxBCj zrX5ElrytI0ZUZB2{Q^3usB=gaEJ)nYoq4r}zz#YJmGe$oDu%7j@{ zpiDTJi=sI9QIcb`K&@LNx(c_Jts4K^5)DJ%lkXMznYCI>g%Ti;nY#a8F~kcA-|Q__ZQC>@k52 ziH>XahQ!5dMV7r>&0LGF(70FCuN5sLj!|H)PV`C9i*i1Rp^@K$HL)JG>YGPfFBYe2COBVsJ2e=K! z2Lx~(O%@y!GRfl*tTJl!Bs0XCMq+3_!sP*MJcavF5uBk+u(|FPu1Oi^@d$E&ag*Ef zIH8D09&)TAqda_w2*t0@+aPWg@e7VL;B8W86C4-}9s9^rtq7tklE&)>mUJ{T3Jsod%6TeX~ilw%=4vnoN(_gHhi1lp2F? zd#gISJyu##+>5fvy=w}C&^B&x%dn!9BS?RSAEjs5Wo?Q$kq3D{rJC& zayxYe1|g@=AI&bX4Woy%6Mt~O*B6^%4YIvH=^xlkj#_dU0oa>WJ^v|M_ur$_8)l4| z;d+J7iqzYXIi456D!J@rSHNWNro)4(0;b>O0=zAqc! zTblarFoihO;j#v0sto!02i6!x8;5;sO|LL3b} z`IN{H5`XVgqVJg12s3o{D!36qR%8{v%Sn$eCg&Jl^DYgbO4Q}&O3_Pd%(Ei1Xm23Mlo3o7 z@UgL4L>y?9!o{1x>_sR16yNPH0d9t;NXxN9}mT#s$8Jio4cO3cL%P@*K`E-K6?IhuO<- zHXiEskR%|*b`hVTJ)DQS7_M(aE3&#^tHj^}Yw2pSQ2y{t zCmn?j&veVpqVcLM6iR*noXAW4gQ%+g^Wr;PmYem07#`zNg35B$3!*4hSCv6+~T zro$n6RsVt*1Ingt6K%XSq~5S?;{5ER99=`H79B!0wPl+a9bh1)1;TI>ja`cj$O!@#7~zGM zsS`Lp8ScDpabGAv$6X{dC)$V#%SuQd-_hQ<%h|(-13C`-q=zm7eH^_42+2jLakvvw zsgGY0S?NKp!i!T{BzUaR;$>)TH>rLvi?c#ffiEF*5EU!R=)_H$nYH<&_Iu@J;UC>J zGt>YWx`#5#pI|UGHq3%qlvg91+9y%W)M@B;oDcoYR^{8pX{Wyna_SE2)*ZbZ<$H~> zBMk{7IJ@%@foKSRJ3wLe`F7Fz^!EruCm_W=hSqPM;xrGCpvxFvnmK_qQX_dkkVp-E z1?wTZY18B7Bb}q18t4XBHLr+nF+m1UTVD|urf*|%C@ES9Af}#afF~BJ!dFG>m|z2| z%U%^7qqbqF#Nf1A{q+2dZ)3M)EYu^?J@Dlivcf`4XK7B|09I>BxSE)TaF<>81zw8v50!OFQ--XuwQhm>N zMfWiKT~+>p$Q`kpvofuJaIeF54zfL>DcmeSUk11RK0oHyoF3WEkGiomMCCI9XVi5> z+igb3{0}}5ZTvr(c<*EW@5lBEH?;7Dp&19f!hD!m`#*%qSG=nV9AgpI)Svqiq;EvS zQ2=kN>vyA02kOf{7PD-)d;W##IOfqG?-351+)u^(?f2-I)I6a2Q8RE32YjFhP;Yh` z4L1L0V%5l|{SB7C9uop3m^~=T(7D)Ea9XU|Nt?;L&oQ6)r9tn(g9zKOAi}i|KgDO_ z=VEM(?&f-+Qa5}qvSO$;fTtr7zV>rWqvoi_&qb>@n*175&$hax6dbM}g)7-}PKZ(Frj zT;cVuuoHV%ol5>f3~NdK#6%bI)Eiyl5$`Mv1gJS*0Pj~Uik8J{)fb}H8(<(QRJ$+5 zt>D2eUy2*k4>20r%F7OV7dxGAfx2Ly=os^i!6K2W(;+C#^VFJs&>)^S^)#v2O~FfX z=W>bEEf3b=O%&F1@gZ3D&QmS+i_tAY^3xV3$mpj1qMtWvv3TDc5^3tQ{bFF3Ic8A- zkG4d$lWFfb(3K@!VJR^nXI?^=xcEi zIJnyZ(Pv0-c(9EoVCy&{o~n)?Q=u?!+JQMueu5?&Zk3~)-K??^oc}l=ZVV;4b5N7K z@t_!%GGBnmdUeKjT>7#Y|2z6No2RuvJ)rpJ3$(!&`{%=H4N+@b9IcW;{>No=As>pA}Ijw_8 zwd&|)$h&evRmW?;62cY?!e$~T={yOUVhCSfcUX*ucv5@63vvK? zu+R5RI3Ut+K%`N`YQ7g^?73>s_o5`j2vps@2gfJ!3`G@BOpaEYqjVICb@r5eD&-R7`r#B ze;*Oqts0@NkWp)Ew^?~yoXm$oEY(siiecJn`;OVF?~h`7%_exU7?J?8o`gK%RLI>SL3aj7XkdYM5gj0Tw8j#`)_6@1=Uz_2%{voJ!PUW| zBDOSic!>APd@}?{0CQx>7=RK-;(W|WSm|>TIYNet%YPDAWClensUA?oIOwRIKZ#*y zg$@?9uy7?+Sjb?3lwmk?!|Xx}5fl;956r%!YVt90eog3rEqRc~Lm3gu+ju)u8+5qY z!L}kGP>@|XkNB8$7*T_D67lr+fmB!=aFfcWB~7ErL@@3Bmj9wK~;F@fUjN5e)ohSWQ1J&dz??j58RNsS?`ff{d;N7FZ+KHRIr-AJ!h zn5ONoI12Nw8uhDqqQw!c1z`R}J=+Mro0R`IQRqn!4kn`jpR(T2T9o=tv@bl&BH~yH zizxAWGp?HR<}$P~ww<3C0b8C(aPT)ASHc=o$?w?Ect<_^yQlQl%|Ebo#93ainlW; zStwVmwyLEq&rfyP%A{sDw%%o4J#eTy0_ zLaQ!by;xd`kg&?bAfW({zcy3Z33)!btU`l7inCMN%aDR=-Bm9&8I%y$2Ip#Na7G0BoaKb#)azdw=dv)F(Kl28=+a|`9EPz$ci1qU z3yur1BJ5@UpuRu?T^J_&c+*2_>i2}nh0$}(EDvQa3YQO}kM0VWojhh^*G-6!+0Y(4 zMaZ!kAtcfgkMh`0`82ow!3delf&bM=c`Jy0Nt7%IS$M%1&4m{;MysV!vU?iVn@}&^ z*HG?YyQn=;$ndE8ElOU{!p%^#8m6F_2ay~>Z3?FEL`b7JL0J+y+7?$AmzGAI zndo7RX6e|QEVQip>5yoy2E@s&P<@ug%hsM)WeawWmr0>*bxyp@Nq*S$HiT3505Qmh z$xgiN9FLU-jh4K(T|E;oyQcopG%m84%xM!Wk=wC10k`hh`VjCY?uK)#`Rr!0P2$t{ zV2=V1`Qiu=x(zn9@nFV0U}^ah1Gurj9v{BPh4Yq)iH?f>eeH+qfn<;Nchn&wdLXvb zb#gA05lV7yX9!e#FQmS8b2-Gem#PY%>>FVYN2*OeIWhAN%~VlbaA8-|=gN3QkdHfb zNs!&6mL6xvz^cQv1lcLgi%#ZZbX@LcqwT&@n-k<>u~giV9NovmU)Mqo>KoWA!W`Lm z4plMkF`?E>Hi8A#_tCNiA>*6IR$+((QaMS0K2SZAWdGn< zR$W?kW0LG(-=Q8&!nVm*>Xjtf3edMnG9~HouloJp{O~>&tji8MrPhcYmXWQGfS%Q5H z9DV9P9etR{TSK>AF3Ej(~e{;j?;N$pOJHND4cj|qjk)%O<(~7JrkG1UjX$Qc461%rS?nhp|-S^!%}w7*ZeIh zI0S8LfD4;0^D^X_sas&N1KvL&OqhhnPnod(j7<3)_tK)WCHB;W8kr-{6*#i9I0qac z)H6As=XW32JMTj zW+)-9v!CTOztRc%#%tdwTfC zJ{A~?efOEWRY^NJ^8Z7gT~tMT8JV;Z1@fMuig6627PgnY#KC*i^X+9R-FAgCubJ6N zLlc4Z58tCME|l2}n_Vc+7Kc};7Yk)k#9_1BcC1h?PTP7bNZ!F&dK;W=u+CZn_j!p^ z4u9()TczE-6kuEDYdWh0HWlGMDiHc%2iXH8^A*YDOM+yL$C4=Q1WsrPZmPnR?gU>5 z_FxkP+A>D_Cbs$ua&+G(*kkmzzCqyA9<-$5jr;6Fmc5cy9V?xbSVy47&ASwhbB)zCp5z@21K6Vy{8*SkahJhc9SqD ztYdz#o;R7@*+ULOKmV|Y93G)*b*C!oiD68rAw8wP<1$k?tWXD(4^S+Fb;!!YViz>N zVk;9)cL=VV)SJEJh3Y_0nc;J5g+bh{RdO#mrmxO{yR#waIA7p03y&Z1q!&;pId?H% z?y(0Ws>gcCEK(SmOgkC>*}dh^#Em8y@A82vU~2e4Z#i4+u2cTgWC7hXPLnxwC%W#u z(_}8;2TsFO3GOSW$<}ngJ58p>uZ1wijTsGaU_+2xEITl0U@=AjxRZ-zKHWtw{8+I( zi|}tQ+_H}xM7XSvEQDLXtdESf<6%=kd19`8QJa?8nNd4|A0llX2hVi-33Z^a+z)4G zKiNJIRv*z{ej>xszUh{_EeE1XEE|APVVz1IAV;9VN(X>%9#@M7$X=ex2NHy+e1HNf zUm!#s8X&tMb?!jfI__~8RN>%Bv_Ho8xH@m({|wRN12v+(K$IPdNO;%j#F{&$9#?G! z1+~&ZL9|wS>LSh?B)g%APY!~n^rZS^kR0A+xoPQ8t(c7I>b13|YlMcXD+bH7#8*xZ zs9!Kx_P23Y?8|3hiY4kV90D+{fs$75gRwKwDsuUJ_`Iz)4uzH^)Q>}D%ZLTWD`%Lz zspyMap0i-tKu+eKbP^mYKYHwgKZYzIar_lj`kf}q`R$&1PkK&W@pQb>>eBG4U;0BHk@fO6XAFZ>zXjL zRsbbIYr3)EIu-%~;qKw6VC{&_s0{2demGCw?|rX4 zUsl*(*T-KVhs#TsGJF+B7jBoYC8VGGLGLw?4#U9|XPd^vn0Q3m*%^SEhQ$ZM)aDE2 z^~pz|0B}%u1fHU_Y=Nc3y|<_{E<)MhmR|(10{6~~tZ<# zQZ(`s`S+xa7~D(&xmu*5RqBmPv2_j+5fDIy>ywJ zgH6hzmt%I&94{P4K;^{?G3Hj|Sy#y0uu>557x`4dZWMfqtGZxhEazkxm!nKAhjBSB zFtDo~h@~(7A}^|Cega>8nz8CC+4sY}Pp?9RN>2GOAET&b-ih#U=>CnP^Y5#r%<#H`;iUVdfA?YP&D zLIGdI-e z$5u@n0O-7#r8AaIg5o@QlI-RyFTHwvWkvOjvE!>pmsL!xRCi92MJlBXf96h>`6{+d z#;WHh$-(N(8)S2}eX?w;{ADs+Ju_LRs|O~_7O_>;W2;Mxi!Xqqo|`1crA!_>zI-fl zEH0i_H3{^mGW7os%483fH$`@8alZ6f?Jdh% zgI^kc=SwwV3Ko1;z~6K928DIOc@#ttW)Pcmmw|g!tdM;l$Zi9YBrJ8<2G# z!29vb#m|GEQ!UHo?9LuI|AgR=Pk>t>Cni^i%Vn>)@s$%wN0&{QI(A&?RMmH?tWBOZ zcIwR1^GmCyS5{P&md*kdsu20rsdA&(9igt8CVO@~H_~S{2a3^ffz6sQbNbY>@n|{! z#In+<6Z~V~HyvTncM(VJo+eu-FLmMj;l|;nkK4d=b5v@D>><93ROeL4Suqo%e3lPM zW<{wtDr839BEUp33vL+PIJlR>?T=qi!YaB_-jRP8-s1qCCa7LpmIo&QX7a;P>X}Ly z?}7u4R?3`FTcb_suS6KhTU}aJ-4VR&`Csq)PXnv_$qwU6{iV~US6>Z(FV0+ivn>L! zDw{6*BoxQ^G;KZa2h~5O%OTMo__PYYQnn0$+v~erDgSN<;CIxa88S5hexl;5WFN63 zPMujL+xI8Y`EOLk*qPOnD`%8lQ#zr0Jc$VkmCh&w>1T{9ttg#XHok1^jH|1vOUF(f zJ#l8m1T^1e@#^_1c|-9XsCp#g--L8gaBp$bE4Z+$NEYS}eo zC}5`R+{~v*-48DD4R5Ais+Lp4j%I4lo$`EDH&eEWiZpLS7c6|$vzcc$zYKBu|Q z>Z?AvTlP`s&%&s^y}7z>mVC0sa-YvS3usoLIhw%*nxV60N3o}w>U@tJpI~M%+F43`PG|O z$v#*gj=dT>`}P*9_tmm%_`wzsA?myeIY4b#BI9zrWRuD&N;^%foM4hB`mDboFH3!N zwd@t`cfqSv<~6cqya(QZ2nA~FZSwN63Bk0-5jm7|J=o)14<74s@_@1mv}{{zNs=LZ zJ78UnZ_=Tx0v)$(f`8oDs?wg_i~Spu>V4Njd9$Nb&2=(2rgMtVNBsXi+oaWnBFv-Yij;d;4BL`0>5ZG>8My-aTg*;+Zn$WlmAbz7}$ z6Ml9E%A$U+#X$02E#_;BGSu-}IY8{pP$hF@|GXmz?+tuuaM|nHfF3NX2M<=y&XH$D zkIeL8L?zb58|7K;HUY#UP9WCu6H?WCu$q6PY$FP?)TSFTAPmYaHGsHbm|X;C8qaU4|Aa;IqgU%S<%OgO>w71HVwXBm`FYW--0+yH9{uoB*$E3fEYxntE9C0e8dCLrAz) z2)qE_n6CuF2^WUICHT$^fd}B5bo1~L_S0`>)r?M4)t)=#;6!hr4UEsni&XEWvi%j4 zI~w6I8!m}m3)hD0b+)pK=`*YSQ%fr*RZphGT7hs5dS3X{u~6x%uAVloa;kqT!jcdc zz@?sDDpSS&j%wFZdE@Xdr}ffWLdbA!b?aml&@Ui($r}ZLnZ4(Z@mJ2E^6SBy5FWvB z^}wB2tv}L9YeyK7yDgLR#Z#Tt)@3q79PF%iEtC1SrG8l^d%@|ZWJ^T4NXf$R8@oW9 zsW+8ORx1=%`ZlT;;4O}HQHPc6AKjs=ks6NbwH&JhW7I{<-LqV_%-@DU3O_a( zspY}v2{QxO)>Z9UF7K|H+|6foNBAt%r8C^9&Sr?HMc#;N`HTDkzpaQX;Rm^E`Sm}` z+6g~alYHk#p3KXHxqru2`wt@yv65Ayx*M|HhkTHw`uQ#_RA;G{ccb>_s>|-i9#oyW z2aY)0-B2t{b-G86M)hukli$$8XN>@!ze5_b1w-LH4J+RYbg2?mzCxbW!VB(&aftH1 zp@-VOLQd)WOHZG5F<|yYigpiX5kp~)>IPO5{w9lSym*!HZxfPkI=-_*;2HR4alH7@ zGxZG9gR22^q$oy)o*(tZP#l{9Qz&}j|FEo@CP;5a;INPgx8R$zJ1+rYb~g@9p5Nc_ z-2=Z4?b`P5+q!*;=YJ#pLgLlon_Zn!*o!lt$^t#-;fKc4KQh=aJ=Nxwa$?tgy?xe5 zz+Lg9w&cMqL?~PsfYsTn8N@y>#OGo4OtU4`DUueaK@O7;wdcR{A?((w1MmN#@g zx7cT$26!P{G_bW8Za&;c;c__e@LrB|85&lNtK~U?ay|=x63mO21CGxLfm;G5KIC`q z8d=QpELtPar@Lnj<|uG|_hR|xjJ`f=6ylA;kMhog%ka&5hpBt+mE-L*)bIDoTS{a5 zpflhXhF?$oqVVg6AN_Li%fPRr3;W;};Fp45d;E&=V?6%i@yo++8@f~<*Dn!n8~jdF z-`*!Li@vzOAw*ww!CF}^w)d}ZSS#n*(S;?LjGJT+QAf2ew~7 z(CC~`!ev9v7+Wz36ZVP;elA{JVw!|C{brUC>KWj z^XBKQ*lz062W6@{{Gg0f$M7YN+^iBFlC7NT!De1R01}6SKNM~o0{4Izq!QLLT(a~;xU4}txTL?otjb@B zajtTre;k#1KodFac<7fS9=k|8HGU)3&bObT7HmWhIs$L@T+)s*?Z_GRjT`0T;VrhD z?Xy^mbMd3Q Date: Tue, 5 Nov 2024 08:26:39 +0100 Subject: [PATCH 05/40] chore: Refactor test case --- x/wasm/keeper/submsg_test.go | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index 31fa5b2672..ba3129a174 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -652,29 +652,6 @@ func TestMigrateGovSubMsgAuthzPropagated(t *testing.T) { var instanceLevel int // mock wasvm to return new migrate msgs with the response - mockWasmVM.MigrateWithInfoFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, migrateInfo wasmvmtypes.MigrateInfo, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { - if instanceLevel == 1 { - return &wasmvmtypes.ContractResult{Ok: &wasmvmtypes.Response{}}, 0, nil - } - instanceLevel++ - submsgPayload := fmt.Sprintf(`{"sub":%d}`, instanceLevel) - return &wasmvmtypes.ContractResult{ - Ok: &wasmvmtypes.Response{ - Messages: []wasmvmtypes.SubMsg{ - { - ReplyOn: wasmvmtypes.ReplyNever, - Msg: wasmvmtypes.CosmosMsg{ - Wasm: &wasmvmtypes.WasmMsg{Migrate: &wasmvmtypes.MigrateMsg{ - ContractAddr: example1.Contract.String(), - NewCodeID: example2.CodeID, - Msg: []byte(submsgPayload), - }}, - }, - }, - }, - }, - }, 0, nil - } mockWasmVM.MigrateFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { if instanceLevel == 1 { return &wasmvmtypes.ContractResult{Ok: &wasmvmtypes.Response{}}, 0, nil @@ -698,6 +675,9 @@ func TestMigrateGovSubMsgAuthzPropagated(t *testing.T) { }, }, 0, nil } + mockWasmVM.MigrateWithInfoFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, migrateInfo wasmvmtypes.MigrateInfo, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { + return mockWasmVM.MigrateFn(codeID, env, migrateMsg, store, goapi, querier, gasMeter, gasLimit, deserCost) + } specs := map[string]struct { policy types.AuthorizationPolicy From ce1e0f2425bd395a225a3951b39dd4c2cdceef6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 12:22:00 +0100 Subject: [PATCH 06/40] Bump bufbuild/buf-setup-action from 1.45.0 to 1.46.0 (#2019) Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.45.0 to 1.46.0. - [Release notes](https://github.com/bufbuild/buf-setup-action/releases) - [Commits](https://github.com/bufbuild/buf-setup-action/compare/v1.45.0...v1.46.0) --- updated-dependencies: - dependency-name: bufbuild/buf-setup-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/proto-buf-publisher.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/proto-buf-publisher.yml b/.github/workflows/proto-buf-publisher.yml index 6e10275d81..be18ddb6df 100644 --- a/.github/workflows/proto-buf-publisher.yml +++ b/.github/workflows/proto-buf-publisher.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: bufbuild/buf-setup-action@v1.45.0 + - uses: bufbuild/buf-setup-action@v1.46.0 # lint checks - uses: bufbuild/buf-lint-action@v1 From 6fa6afcf29b8f062cb7070f4bfebf9cd597044b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 12:55:02 +0100 Subject: [PATCH 07/40] Bump github.com/prometheus/client_golang from 1.20.4 to 1.20.5 (#2008) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.20.4 to 1.20.5. - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.20.4...v1.20.5) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 81a02bacb3..8c7e3ce4be 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/gorilla/mux v1.8.1 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.20.4 + github.com/prometheus/client_golang v1.20.5 github.com/spf13/cast v1.7.0 github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum index 7738c17a25..9241d8e47e 100644 --- a/go.sum +++ b/go.sum @@ -906,8 +906,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.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= -github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= From 447c907e15915eeee65fc26d0717f07b9d94b5c5 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Wed, 31 Jul 2024 10:10:56 +0200 Subject: [PATCH 08/40] Add ibc fee support --- tests/e2e/ibc_fees_test.go | 121 +++++++++++++++++++++++ tests/e2e/testdata/reflect_2_2.wasm | Bin 0 -> 395862 bytes x/wasm/keeper/handler_plugin_encoders.go | 48 +++++++++ 3 files changed, 169 insertions(+) create mode 100644 tests/e2e/testdata/reflect_2_2.wasm diff --git a/tests/e2e/ibc_fees_test.go b/tests/e2e/ibc_fees_test.go index 6f622a839d..fe83227705 100644 --- a/tests/e2e/ibc_fees_test.go +++ b/tests/e2e/ibc_fees_test.go @@ -23,6 +23,7 @@ import ( "github.com/CosmWasm/wasmd/app" wasmibctesting "github.com/CosmWasm/wasmd/tests/ibctesting" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + wasmvmtypes "github.com/CosmWasm/wasmvm/v2/types" ) func TestIBCFeesTransfer(t *testing.T) { @@ -219,3 +220,123 @@ func TestIBCFeesWasm(t *testing.T) { payeeBalance = chainB.AllBalances(payee) assert.Equal(t, sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(2)).String(), payeeBalance.String()) } + +func TestIBCFeesReflect(t *testing.T) { + // scenario: + // given 2 chains with reflect on chain A + // and an ibc channel established + // when ibc-reflect sends a PayPacketFee and a PayPacketFeeAsync msg + // then the relayer's payee is receiving the fee(s) on success + + marshaler := app.MakeEncodingConfig(t).Codec + coord := wasmibctesting.NewCoordinator(t, 2) + chainA := coord.GetChain(wasmibctesting.GetChainID(1)) + chainB := coord.GetChain(ibctesting.GetChainID(2)) + actorChainA := sdk.AccAddress(chainA.SenderPrivKey.PubKey().Address()) + actorChainB := sdk.AccAddress(chainB.SenderPrivKey.PubKey().Address()) + + // setup chain A + codeID := chainA.StoreCodeFile("./testdata/reflect_2_2.wasm").CodeID + + initMsg := []byte("{}") + reflectContractAddr := chainA.InstantiateContract(codeID, initMsg) + + payee := sdk.AccAddress(bytes.Repeat([]byte{2}, address.Len)) + oneToken := []wasmvmtypes.Coin{wasmvmtypes.NewCoin(1, sdk.DefaultBondDenom)} + + path := wasmibctesting.NewPath(chainA, chainB) + path.EndpointA.ChannelConfig = &ibctesting.ChannelConfig{ + PortID: ibctransfertypes.PortID, + Version: string(marshaler.MustMarshalJSON(&ibcfee.Metadata{FeeVersion: ibcfee.Version, AppVersion: ibctransfertypes.Version})), + Order: channeltypes.UNORDERED, + } + path.EndpointB.ChannelConfig = &ibctesting.ChannelConfig{ + PortID: ibctransfertypes.PortID, + Version: string(marshaler.MustMarshalJSON(&ibcfee.Metadata{FeeVersion: ibcfee.Version, AppVersion: ibctransfertypes.Version})), + Order: channeltypes.UNORDERED, + } + // with an ics-29 fee enabled channel setup between both chains + coord.Setup(path) + appA := chainA.App.(*app.WasmApp) + appB := chainB.App.(*app.WasmApp) + require.True(t, appA.IBCFeeKeeper.IsFeeEnabled(chainA.GetContext(), ibctransfertypes.PortID, path.EndpointA.ChannelID)) + require.True(t, appB.IBCFeeKeeper.IsFeeEnabled(chainB.GetContext(), ibctransfertypes.PortID, path.EndpointB.ChannelID)) + // and with a payee registered for A -> B + _, err := chainA.SendMsgs(ibcfee.NewMsgRegisterPayee(ibctransfertypes.PortID, path.EndpointA.ChannelID, actorChainA.String(), payee.String())) + require.NoError(t, err) + _, err = chainB.SendMsgs(ibcfee.NewMsgRegisterCounterpartyPayee(ibctransfertypes.PortID, path.EndpointB.ChannelID, actorChainB.String(), payee.String())) + require.NoError(t, err) + + // when reflect contract on A sends a PayPacketFee msg, followed by a transfer + _, err = ExecViaReflectContract(t, chainA, reflectContractAddr, []wasmvmtypes.CosmosMsg{ + { + IBC: &wasmvmtypes.IBCMsg{ + PayPacketFee: &wasmvmtypes.PayPacketFeeMsg{ + Fee: wasmvmtypes.IBCFee{ + AckFee: oneToken, + RecvFee: oneToken, + TimeoutFee: []wasmvmtypes.Coin{}, + }, + Relayers: []string{}, + Src: wasmvmtypes.IBCEndpoint{ + PortID: ibctransfertypes.PortID, + ChannelID: path.EndpointA.ChannelID, + }, + }, + }, + }, + { + IBC: &wasmvmtypes.IBCMsg{ + Transfer: &wasmvmtypes.TransferMsg{ + ChannelID: path.EndpointA.ChannelID, + ToAddress: actorChainB.String(), + Amount: wasmvmtypes.NewCoin(10, sdk.DefaultBondDenom), + Timeout: wasmvmtypes.IBCTimeout{ + Timestamp: 9999999999999999999, + }, + }, + }, + }, + }) + require.NoError(t, err) + + pendingIncentivisedPackages := appA.IBCFeeKeeper.GetIdentifiedPacketFeesForChannel(chainA.GetContext(), ibctransfertypes.PortID, path.EndpointA.ChannelID) + assert.Len(t, pendingIncentivisedPackages, 1) + + // and sends an PayPacketFeeAsync msg + _, err = ExecViaReflectContract(t, chainA, reflectContractAddr, []wasmvmtypes.CosmosMsg{ + { + IBC: &wasmvmtypes.IBCMsg{ + PayPacketFeeAsync: &wasmvmtypes.PayPacketFeeAsyncMsg{ + Fee: wasmvmtypes.IBCFee{ + AckFee: []wasmvmtypes.Coin{}, + RecvFee: oneToken, + TimeoutFee: oneToken, + }, + Relayers: []string{}, + Sequence: pendingIncentivisedPackages[0].PacketId.Sequence, + Src: wasmvmtypes.IBCEndpoint{ + PortID: ibctransfertypes.PortID, + ChannelID: path.EndpointA.ChannelID, + }, + }, + }, + }, + }) + require.NoError(t, err) + + // and packages relayed + require.NoError(t, coord.RelayAndAckPendingPackets(path)) + + // then + // on chain A + payeeBalance := chainA.AllBalances(payee) + // 2 tokens from the PayPacketFee and 1 token from the PayPacketFeeAsync + assert.Equal(t, sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(3)).String(), payeeBalance.String()) + // and on chain B + pendingIncentivisedPackages = appA.IBCFeeKeeper.GetIdentifiedPacketFeesForChannel(chainA.GetContext(), ibctransfertypes.PortID, path.EndpointA.ChannelID) + assert.Len(t, pendingIncentivisedPackages, 0) + expBalance := ibctransfertypes.GetTransferCoin(path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, sdk.DefaultBondDenom, sdkmath.NewInt(10)) + gotBalance := chainB.Balance(actorChainB, expBalance.Denom) + assert.Equal(t, expBalance.String(), gotBalance.String(), chainB.AllBalances(actorChainB)) +} diff --git a/tests/e2e/testdata/reflect_2_2.wasm b/tests/e2e/testdata/reflect_2_2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1923ce863e4135186e67c53ecabe74b39b067e42 GIT binary patch literal 395862 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�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

TiHFnYygxWQp{3@;BH6&9;&T z(LI@n_LPY4N`=RtSbxL&=Lw2hOnBeZd@-?!zd^-cb(U}v30l7=h1n1Yk537N8GplQ zgTG;0u;*=4{)W}Kxay0kx>M?}DMi%tiC{#?O3pYHpVmfW+f#5BN!&G*7w?OnHK$hC z0^65flDPD7_YhqAi>8?J7?3qO8nd^M0i?JM~ z-^_6zw7?+x5Ch%P`M{8y&Ii01IMN$!9dR2C=YyUgX|CeFt|;&toDcF2y>ZS5!yiIm zk_gt$2LwQQxG}8HBorOi@HRLf@V(AxUUv;^=iQY$AFR(F0*LH>MX?}Jn(p(z%l$a9{0(qK>}xn8>d{wzito&~Szoeb`x7u7)gDp-m5ZG;FkdBU zQgOk>P`*M1yePVl75`Ov*vRN2{mV=jXwH+TbN#Q~ar$%{8g5HgAA;H5!+?*|R z)ybK*t{fOlAwsroY1AD2&}C2tC`b%v?fH>s$kZMblV|I*v}8fR#2?CA<@ znQOmfjIf*AV{DWwsK!4Ru)3FQE*?qjC2{Q+uVA;rO@jbd55h8`V z=c*^bl_7doT?4{;44ijzC&|Hu{bEB(r+OQEq&GF*Kb=R!7L`(NWAICJPbVr;^4I^z z-rGRgbzOCy_v5`+uj;+3dXgnsmK6KG7bU3z%T~Z`nb=`;YT~akZYNn;v(nvJYeLp6 zIxS^pMZ#mk8V@P2sEyKyK_LQ^js_GWVud(FX#|l$KsixB1SKe7h)6^t4-P1UnTW=K z(g-rY|32s3cVE@3Qc1Q0^t6@Kz3<+8zV_Z{f1Q2y5yXA`uW%dFt$-p^yl@{!d(uz` zjgh)k10&-JWf^uj_e;a6i7m8sIQMg(dHRDRcT+vHS=pX=C#AVreMjH5Fkv&8&P{mW zh(?-4YbP#T(&e~Jt8@ZBHIFN7!FCI~b05Hm#wpu`{Ebg&3mmKD_VB1Bvc$E5*JQ68>_Fbfn$q704%3-IoizyRtU+7><{|)f zF{)J&tp|80pV59@S%2H7D;$r?O-QL1!N;?oTkl7IGCb6jM1e1gcjJde?$_pgP9DqSX*_CwWp!2E+iNQs(tewewY(K=c6v4K zeB#I+%O#1JV`x6hvmqmSZkSMvP8avn@*avcnb^6h5!&~F(pZDg^OWE5$ zOn5}j=2l#g>z|@HA`UR>nc9BZSIcVeeQJd3em~$e$Qop84}`*oIdI*$X%lWLq(oKQKE9+<-CnE4)M6cTt5nCT{XJ9%$H17dGNB*hDx>{eR_4KFW=5u}#VarXrgFa~ z7rA2F572U1!AcdZ0aSf$C39105y+Cv4gJUrY`PJ7PG}XixH7DF2Po~<@JucCycMCv zh?s-(=FQz~iX2laa0JETYVn}V_Y=UA;w){K+OWrrk>Vp^1y&@iFC)nts5O`{tC#_% zZ5XSyIg7K$;ES^-SaaH^TE?>_bXW0gT2;T*rj77hhKa^x6h}RzC+n3YkEy-8^8?;YYA*m66XbOzs%Qw$YPp=uaWfM(z3Dg1D1j;sz#zM zfF`v1Ka|isXUzm{HuIig9xgfr_pR* z%Jms?Z>{J09KSbm{cEl-cKdR zX~(%-?s1cvX~*`?wBuZ<+2b)mj58it_<41o5uUaYF5y*PX`9r@;f{7(DSt9TCVG|i z1=?{I8F;R|@3CPBv~px2UrrIT8*p9zHWMzq-m$ zp;}+H&j7ut{~TN6{Ps*1zGiCIS==~N?0&4xU+XfjMGK~ZcCOcpK6)TYbBzTQ83y(S zI06ft1cXcVCy3N#*#Ua|p3MDeLNZOtG~I-h<^lLVQ$4>SR6mYTS#V&cz&%j%&s4J3 z@h3mTk_>iXN$GXi}Cb|Vtt_ASBQE=!lg%pc$CxQa)^;1s+d?0h!m_~q+}!==5shC1I)%* zXf6(+S7>ImmJK~w1hpv0v|2c(Oaxsh%7r*2LDj9&%` zvnFW7w$SZ}qG)?7OlB9S!wbN%Rzm;F+$FL%} zTu$>P660<}3F{))VkBT|%Tyneb+T6cCAD_lY-P?q5*Ycc=nXrK$uOx93RVobr7H8E z<({N}5B`$5FIs{^p8+VlIX%<9J!M{D(1^x=%Rb@5O)-lgpPU}QJ^8ezAPT7^Ve zdt5#e52rI?(<2CWRW$Tvlb0e0dD@`RDabyYNTRG!M)u6!GXeRAHScBn16a3cl3=FB zP8_qMWF1Aa5>iH^3SqCM8D5hbW?qA7DbhFk?nGZ@cQTXu6F9O5g!ilY`6v%uiFRZ7 zHSO`{oD=!eCap(O7y#pR|&F>#EO| zi^6P@ssAta>92z3e)g_o`sK+Nxi}~I!{2N&V*WD;WA?5m81abv2k$(G=K~hy@Ja$y z#sVVBxr#S2%+;$t9S?$C)oS0PPM;6cLE4)jabA!ZVgjdEV*=mXH-W90U;?M!1m+PW zeJ&k1F-3hi6Z;TMU^uEC|B;YYn!hr4+d~Z5Wf`x4d{N_-P1SL2oF2vn`p*YSIcp^H0cr8fH(7Bp*JtVC--SlUumDphzNrT9;X3Wog%Osq-)Lu?vb zCPTwz{uvuG7ing!J8XXNCBov4X7Msux9!0iVa|FDKY$&D#avc#Y0lbws=u?NOi?&T zD`5{7>qv1AmfF^)S8)n)43h!+&X@>mKqk@oVwgm4mRw>HiSFP+FMYbES3IualmS^km8nxx9~y`CSxDwdB>iK|Q2jA!|edzOEYM@)&s3t9fb*oQ%u|AB8c z%imuij`s!P*l&GX9?RcbDZe+4X^`c=Cw*~Pz8#QtnO(Qd;k$0HnC16(-TpV0?^%9z z+btsdpC-%C{&}!`x@jzb);Ne~`Lmi#OS1e&23UU9-q6zSJloB>yD}@^9cJ}zRrp^! z%U>DJL%f*ujox=K?y7?Cm%)FqqTiQ`t4l6%5kzrk$?Pv!1D@GGXzKlWp1|whUY-*y zDgV~8?V6mmJo$G~r^kuoq|;xUm%d~PsPJ!5t-c>#Fxk(WIEutaf9!`COq%b?d)Lp= zv3Mfz_j>d1&FWU4!RLM7x(_hWendOkmN2wR={JVac-MMNn)t6Gd$$td)K@98@ibuA zgL$g3qA@;gZ9QuA3J8>D4g_@?umuJ7z3Z6v_3aaRn&~j$ywA#UqHFyEfaXyd4~GGd z0tSqH#d}82@<1gOd7w%Jw2D=r^MvKi%35?7hhI_#f0a4RIZ4qB(;*2JC;i?+Kk`A{ zAB}HG-Jg++00wVfL|L;~bpn_rRP+`>NT`S#EBM}RAxaj(%5bnuum}w1SOgY*HDD1C zt>CvR4p=u6_)D~F%?^27II7EaL&1q=X3Xn`kpSJWgoAX$BnKYTc&dzbyem41hKZ@0 zgNo>)J|!kMJIdvo2}u>{cqE*jDuozh_!(X@BS!1d>3;Z`RUTr?WS*dzqtKfwY=I0G zhi0eBD1wHzT8kM%Hb%(a#)u&VNGw<(1iFp%4_XOH71dlYj5J^zDYUGxH%y*++Z8D> z^cWgCZuSzrHhalCUlyp?_gv0ik{MX>fTk~sD78??%Ue&&_kcz#itd_7J#Bp2i`3V` zz6K=feCOxuD!xxR!D^ADCx02Npl&Iv$mWV0&3l;NWlI7L}875!@XQ9^ z*Hqu0o*+sat#Z;`vr+&vPm^W1GXVO~Ucn@O1$-QA`+xmlEoWt1E8cOMIok-ix{-_@C1iUFm{K z<0g-?g1z)QnH`WvkMT(l=6hh?6z%w?8yhqxOj#nU!vKV%tUq z%(7ya46cs>v-T#7?N0nESzY@(d$pq5k7uYCT}3+N`)fu0=H%&G@$FGyj}&!OVnjw! zCoi*(Vd6KN`CGc4=LmRR&#+O{weK2l7VC=oG_`0UVx1sd3nm8!MBQn7XToYQCHB`8 zkIUw{qF#*Lo;+RW^`DT~W+b4KEiVS{L)?JBAT2ZVnI1sQ+#VhU_pQPgFtkb7JOG0hE05x7bV=vfr%z>i4 zw9>SVU(F=e%(J>p?e;9UmaS~H4j~eD>Xfu|9>MJ&13UMXdZ~~Bvgzzxoz-jbd$!(P zp~AIooqwOoc~E!k4tCFIuhK}T$4^0^?vB*#*hG*_ZPWQ-@C}5~C+cn=AN0HbF8lmX zYHF@$YrnC>d(>g0wH_xXK4QN}>rvAR$S(UOa_g;lRWfV8M1(zb_Dc|=#(t5jlM`pP z^h5e?P8^ouAac_*lb}$p(h3MwY)XDGDDSJ~^{BgZ*0(*toXy&O42}qh`I%a~&~Vrg zDo~Iy?UPqAeO_BSb3JojiO=7}6tJBcS8v>0=h>qG3?T zL-!Sfsg2a8D7D#Cq;@_6l@>SPr-QK%k2|v$>y{;e2_^h7C7x7;p8_2H*(cM$qUf(~ z*egWpU4xpFAd5OD3KA`L^)CO6J@TZiNc1BT9+EV?DvG`R^SlnwAw@l)}4HS zkv`vEYTxor+2LuRX-8?lD1QUIM$Dp@z-?d=3h^~QVVnbZ)T(Z(om#}q1{#)2akUH> zs(PEvUHS6p*jszeKtyj2?ScW?Rog2hgedU6P}d6HV(Zo2rF>ggVZAAq47Q8@F_FMx zZK_Ji1(T(yXhyI9E7nq|H@Oe`3ZFvKy1SH zFJ0q0g_^l*J=B6~V=ucaYz59(y=?VZlWcW4ZM`zILfgz4)9a!&Q`3Xk0f?rlAYMP~ z7;b+SGEcy)i7;&tVSoaVtzIXpUQ-Y$t#Hy+mA#*$=J-yL14;E=t5_x1V4@fvK-%y? zYIPG}3VYhwv*}@>K>^Z2gDmP)IWvtwb%1oaN0iV43nMVr%uw(hmR*)gRCl|KnISDo zNd#Lz3tzrue&1mQHCC9Y|17~#inum`6GS!&r?Dp5E7aV@Tq2w7min=aB#*kzvhhgQ zOF5(|vJ%InM7LkU;s#*1NOu~$lzTC)yr|agvct^Svvtr8kW!#$U5+3?^ccgmHeqp5 zD~WJOB;Qm<)!LD;j6~{$6er&{vV&Xk30e``)pw>@@X-bz zO+W+YihySNc@?DYo~?V;AwtvGIV#l<$%{r(k-TDa>Z_N$#yXisUh>Y_yC`|3)MzBf zbj2|f85?s%%JbrK*A0`q(shQ)UB`AR#VpsAYDKcws4CoJ+#%8`T;N{MPonoM$Q=_m z%sqH9-ZMKS)RTr$Zl5Ol^eA}&U07SvL;EsDbQ@$0qRdoMWQ-Axl>vNS#ykzfN$(^K zXr~xkY5{x;i0PV=m{79;yp-Mn3G+-)#m<>32JGuYC5%l@yjKwkx0T$`q>D)*eX}X~ zuD*l`PnlqslQQ-tk_HJLBn^(SC}?hx{^IaT0nN=ES8S(L(vrMVqTx-+G+0^1uWn=c z(j=81)uhRwBuS;Y+bO?wIkVK9n&^7O7aDh8kkl4rrcEWJ`hrCAlg?v<$BJZpdpY7| zquy^yu8VTS3WVm-iz(*i2uz51U|Jos-Q6U5YU&u%!Zva)pvux9i7bu; zFTEu460wJid0=HQO|ddfP6)yq7@-&H{msd*>FsaywNrx*dXwqAa|X3d33^kXkCnvg z;H*eef404GC2LmGM9u1ojEW>5jCPP^MmsPaQ0(V(M9+Lt>>Y=;8dtD61nY*$cvgWj zhqz8mm5>F+3-!%DM!Nw|XxXczAPA&BbuJHw4{iY@kpHD{vC#H{_!Q=srOs75MtCQ3 zZS^hRHyJaDS9-c)u#~VN-R=olLRepCFnrJFC@FT-a_Y19A^s$X%kQzVJ}<%Y`#i-H z|4@$#z>LbD2eoHa7i{f}uCTSIbcO4k))l#UN>|w5Nv<*v`Fjk@=<8Ab+Hw^?78)mp zeghkj@{`7l6QQ3(AA&tq)4gcbSoeJA#Al%99!u5K6{VKR$;7qZ$tIYft%WAHSY^PkaZV^u%G!paU9ZQhrt8gH@{7X3OYo-Yx&d#Rt|G)tb~E=> zv6m+f{FrS)Zssn;A;LkM=Qwr#uY?1mFHOj6v%QyZL^B@xFIXa#cMG2^DCsnI@?#qZ zbM5W8x>!JaV7={hPSUIazS5~|Ro5;Zx|X|3>`O^pJ5De*T{A9xhvFJ&(a&+~w3jm1 zcJ$62hUHwFD5bUM?gUnQ?v7_=`64IzM}}KO;R3t@$U{HK=W?DC$?2Z>5eWI!{Fq}_ zyu8R+9!uRgc87`+p=qOmuiMuJea8Asdz?kB#+m0uYbtB6XrRb*I7R9j5(@T>@8L=N zh#|-CZP?UH(Qbk%GwR0M>-$~x-;37NLB2DpvEDMwnN%J=SQYEe0?qCp6YU+*E!y+} zddD4+gJ_Eaq78}(BSmi9>Vyz)f*d3j!WqK&xyf!Q#p^JD3j+(vOKuZ|H` zo4d0%MuPyvv5!YQgv5<2>Yg$6U?Y2Vuc%2IwI3xaYZ&JD_~G2+hqFKRgFKM>K_67A zp<3rAB=xvl2sA)96ZDlZX#ur8==2|GOO;t3p1Fu*b$2oKM4ss4iJT5np8Yo%hl;a`t4H%j0*^9XfP#^6~8UB-QP7 zK8F}#b;XHKY)XDHlP=JZ#%}XE%!7t(0h{`9Vu;^jBvS=cL%by3b=GEBPC+B5ing)7 z(?%RGEUN%16?SNn!m|paHdw`8225Y~h#g+^><~DKRqPR#JgX3nj3MH{3l#M~d&+t9 zGFSzAO&dlS3NCR|9P;cB`BFzSecRLIY_D-KcS`N~{`fS?WgvabAYTJbB zAuzGBHY@fb&^#(g9W|vhyCEQn8Y+b%%;-V4HZnwhiV%S)7u0?6 z%4YXQ^pFc|ZB8~O%om#N=rVKLqx_luhx}bLQ;+V_?d+wIcg?J|r?aycC*L*Gd~}yy zGQeZ;NNsM#X3o{o)_}>nwDxEe`8VO84lOZI_VvWdnO6QiHN^7 zdlOHN|BOWS8@WS;-Jsf-TeoI!w!02@Yk49Ui?0W?Nw^4WiTe|K49^p*3SG(X*^>Ml z>s0c_Ejfkx?kmZ*X?7(iHw5^ie_^;K)5#6mNK6-}^R-)&l*e@C79JSPYfic~y++zI zavxnJ%&@YlS^W$wLu|<%wpomJ>tSM=$U#4|jS_$jS~fGwo}Kp3pej9sdiaZi0N?1{ z_3G(4ZbLWDb89GK zLclmPbr0!m1b$3co}PzhFX$eC;LbOq=P%5)^W9$i6$CB>brZhLOBj#vpy5*mI_eg$ zjA4=-u?(Sf)283T553xXB-`eG^WAfao2Ir>?L3kNwG+3un$cIaot=}gXIVRzmB|?O z5&A6FJdYC(;nlb%B7A)js38KE2TV@JmI}91jNUwF+?}*10(ED-R^trRjQGy+8@NAZ zs;h+P4SF?z>j3xxTnD@i;5wjf0M{O?0aIWbOxX~vP8*xmMBG6@JLysbEi{Ze+SjW; zP?+y22XUZHNk6@SutwHc(QuQPpg3SWHk4XA31^FxB)-(qI z+p*Mx?Re_DFqf)F5>vgF6fY%6o6Y(*tI7mTTenA1PBcQ*9X4?bn`(l;XanvsShT~8 zW*y}kU)b25CsVpfC$$tVHY3Bcv)Q?t@=^gJ80;VxMg4hlEDHK1T3dzUq8Kn(^`0&mJJPO3n6Ai zd=aXu?c@_c2Nlc1?uEl*Er8dGQai-PKT1DTpY*<}jW7EluphN$><0;MbJzW4*Tas_sc;yA4MDzmK-Vf&OrA1%9$lSOJ zj0!iVO9l>{1PrfKf{9x3;P@STzJCxLdjZF%1Vj&x-^vHT@s2(?m<|F*0k&3R6cik*Mx2&;Ry4!rYdp3zMm{)|WPf2bcsF=v5zM zf&Nzg8O{QKSxkIW@^>lv3-ul}p1#))KH zgvbP4tk%sQX`bxq(C)5rJ66eOVX*{;HVg3hWDI&p}$Y)r7h!Xir(7SXhAS97*tUZvFTIDFmydv`L6my{^Ig^)Y5q+!$ zNXC!8Xt4*HC;%Q6KX83%)1%iqJ?~~Up$Zb;dP85 zI-H56inRm%EH+c5{0wnxA+Tj`_GgL+wA3*^BHQR6UB{r``+_@eubke3DDu4X78cAs zsp>#3OR(v4Z5pW_6TyKP6HScI1QCn)CbBzH8>DLDcA)yr`g2R?FZ56z2`#ZhH(Jj} zJ`iDL^2HQt*7nPI0>udWHx{s%vW}pv3O zN|vkD4(6eImbl3x*AnH|PAzgxVv{Lj?<{i7j_hmsPGaK4?yQi`zbVm@y2TsB7Rtai zJM(0{5A3s-EG8?$(_Bwjh_NCqTYIQ#Ty_iy^@c4x6TU!b9tDbG#2bK~tFwsan5)m*MaK}3{IAU8tvDcP!RHAxg`oKm4K z9&_RN5PmQx?O|n3Qd(0%inm|*?N>msL|K8+|Kb%eH$9^loR1660Ku#*fFP+?s^ka) z_j5nW?0$(SKOX{-yIu5~vLYGT5ui`B1~!E)x$!RI9;Q1-Z48Q*&`H31efSEb+7OywVU!_s6)OlpG_?$Yg zTf-K$Xgn9pxOfYeMY+f&Bjb7aTYQ{tfoJ+#=Wlu5`VgvNMRCD3Jk$?kSg(-y0clc!rd63vW5~grgOPg5n^BtQ(XOiyW=No4pdy9vSeT#1 z`NBJn=_^8ZSd)7R5Z+*byg_#O_1sF3#7c;is#da3?o|~AK)wLd(=*bM*A6y zKlZ&pbdk45ewqhe_bivr|6`xe@?b;dLHOd}{4dG}>l3nEr*8BC`jQq&XTJ&Kr1Mi* ztM&1bwDHck#l^@Y^B*Es`LH))Xw)LkKLl%HL#;eV2Mtb3{|2MR*xBiZ;U7wTb$h9X9@dwIZR zdzaWvBZ&~iY-W#}^gi3}9+_?4%M)mzcK;3et^d&u49AD;c*v3$6 z0R%lFS*To1Y00C`^115}%O@uQLWiL!6ioLCF?jk3JE*yXblLt;ImH^=nUE+a?r}ZW zA2mw875)Jwy*Z>e`lB}hjDOj^dLttani9?R7`gYA_iA^8^qQ39Hd&0(n{;%w+pS9U zhmYM4$<^`D5A2|hR=^72HCo9G1#~*=`~q8si+a5Lc*d@jQK{L|?s%7uH&OlFUSFrc zKtj!X$LrbFvPyv3tKDbysve9fNT*xZ%vS@y2*yDOILC$J8`STQ%MsTgJi+}CJ*>41 z%Y}~6vBrF)YC1lGG?~{DHi)kmgjXu0v#R&U;n?Z8_BgnG1D(FlbE^>m3*z+ud)If4 zZC0lVfy+{g7MY+{N%wTYY{F~Qd4JxzGl8Is5Lx9`ZPQ9qpeoVl z>?vWR$(_e|$Eb>EqrJIRUiix2mn}I#lvo8qwLEYNCK&?YrATWyN|qw6h?4$bm|kuv zLV3~P-UgatU}@)BTo&bzLwV~hz|3=#3=F}5`Al3P!)EfF0)C*0%z0Rk2@M_YzFk;X zF1jhW!dkm)b2kNEGPD5UMSR4Np0s{A^=*J)+Cb$}8?YyN1hW#`){NRc16LNd$#iEt zMA*)d+TuC@Xh@0K&n;R)yJ<4K$kHua-#0K;^}^mpmY6xDlZLnVcT}JHvPpviC~>@= zA8O>0A7-8(R>%A4dE@n5IgVNsn59y)hm7R(;v?<$p`0(u?)MM?k!HI8xTLbdvL63@{*@rIzX} z3V@nQC}ZaC4|9ixuoZgswgv%+j1>U!scy~dL^o1b+s-3e&a@ewpZWsNzcECXLsB!TW%UBS^^rkX;!qUW6aes(ZE!j5q9f3 z#>zEi;A76=O5Nx2$o9W#+)?^Z4ZVT7U4|)g6@8wVHKAnDoHCv1^Z8;91(D92r0#q9WF&SMO zRK38+TGBR_Fi>X$Kuhp8?;lqNs-!gxi~}%K&w!yn@AID#4AXfq6!7jB+#axX${_&J zsxk?_T+JQ(1=z!RlT2DEVLN*2SekknfESzrJdTMR0^(O8AI074MeG~NRwC*H^yr@A ze&U57gtZ{!qOA#=P?YQZGWKfgGg+F286&mHR;_7jHWf8z;;C)@?8slkb+&e|o^$)( z?ck%GuS!T3%dhrB1ex;-b%tM!hsxLEEN8N7m62}RHfC_%eR|$ z01(s8M8EP-r4%tTyI&X;Bs68uzXxIn9z@G?>``CFieJHyRee0|v9 zQh>m!Dx+T-V_s^`xfIG(JUIMe$uIf$ZjvS`^6;9o?wY1K3r1+pze>+dZ*Ki%iu&al zrrHQnrJH$evj10PR-4G!u*zt0N~T?C19zm9XQsC>Y>^1^Ez1tYxl8lFAeEQKNQP2C+L(xm=s0vEYeTs0hXrwNwJ2QDg@Kuf(Ql1) zBhKE=SC~f*G@Hlw3ZZ)HDxkV6^_bg=9}cMEpc3Zrg9&qWVU7hdIqGjA5>`E}dmNJa zD704hI7AV+HM>L1@Yd`$F3NNvTS#}eakts-B5sv-LAX^$6v*-29Px>2SZXXrrU2ou z(mq}@CbQ&W&Wf{5c*Iw#pqFe@V!Zyx?aXtVY#y`fm)!{z!njgU%L8iMEk2lE zL^_{>Uf_h&*(znfNyi-1t<@}Q{ zSKbvL4WnP*g|T>QU!+CWdOx!!gX+9&b9I?u#5=)>Q@E<8CvBHWF3 zYshQ@n(pGyA18P1IZt_R@n9siv;eY(AkJK@ zNsk1)4Y)C9PKrz|GfbxGX;E|3VbHUvIs1SoE4s)lt5Egu>Ke+5+X@ULow-z$UC@|? zagj9pWxRStnHI=SM!1my@zoUZD%7|!@PE;Y+SPE3XZY9RBIeWAil5;GO_+?Dnrmd> z^NbM<2gaz3pmOK47f>vb6Fx_M22OR)+&n^tX{3t%(#e=;Lq3lvaNY{R6J0e1=sj_0 z4_hD(Qx|;mpbF72oxP!C2W+SJy9jAE@e|qNZ8rA_W3v$kRg-U9F^BANjf8=Iv;<*L zQ6P+|NEm{gQN)d+2*V;&fvgyy3h*ux>WxO{dn6CBX;DWV>cGe{3L!}s$?=+=LYgr- z9-?)W6&_oe;>bpkNCS*_c!ryNA+@Z4UL(;c)kCbchvDFq4^K6d53er1YcIPTxXDjA zY!=b48ccE+*|F{pdFXv5tk4RC=7F(gF@m0M6TuMsDe_S=C&)$TpEvI01Zy+#8?q0n zP^*oM$5I&iiO75qg;13jZv6^OsNF~+b$5rDfGCS^r?XqOWE;&U8>D;MWUzF1D!Z{e zrc0m7bw=92Y_M?|&1-n6hhE9+e4ZzrRauwr%F()F6q;(vBQaJqy5Iv3!$Yke*?XB0 z#h4}otE8F?*jJhiq|sEDM>QEjc45I<^4$n$>9~!z!|M_;VSs7Apa=Zl}#rf8*}Wk`|Y&MR7Ly@(T?Z!8t9!tPAb+F**7OdWHhOG}cI znHnUGKM7lxaIq{v%z)`^gNKx85~!dzhk65`G6(o7p841C{#gKWYX=! zHM_@dwOjj*Kt{wVB~)#9ZW7Na`vew3pQPD;GF4s6@0Did3)CyngNea1G%5fSaxtoq z#pwxIZ38oAI0Kx@HhMy?XnyLONBB>_JX`(FrnK(UARI50`Gg3A$Xvcddt%wjzoH>NIw9bK_E;jN~Q*cAs`--Aj%(RqK`>k$3~8;60x zI3;xPk*r$h{suIma&=d`zYce6`jz(Y^tH5id_9aw{y=pL{bq%PeJ^*f#!Unnf8xko zV&eas`cjj~%=PU(x({l{A6Sp~A-&V0Pf+Y(LHYgbdu;~Tn`CgkaU2E+i7}OIyEpH^ znU>uL@W<%AdV?mZ6nH%bb)UFB{-R#Z_rRKdC7oG2^Ud^i0L!D@u0=(oy-2MIZblpLv^`gU`-r~BMTOKXe&b;c;UA?u% zx|y4}URSKQtPmS!di+{fykuqr*Y%ZD5bG+bAg(J@L9De@5Z|4Uu1RM5`r`VTHIMEp zZkXw)@|iNlgl=Ps2@c?Xb%N=Fc_;6L%^=y`6MM-*^m3qZVP{_BW>RrcBz zI)w8hgEF{_BW>Ywh*5^I!K-fV6s%W&x(tmCS;**3-4~d+Je;JDsRe zbJxv(?NN}sb@qDQ{MQ}@xm$0q*Ux|LQGol;UT>KH+RuXAy~JL>Wd3W9g4|tiudko~ z+M^(MH`wbN=D+qR$e9HzUo;e~xgr!G_v*zMT(a2K8&#xh1D$h}N!mqyY|5*q1)b54 z&J>Rp`A3x_2fYXD2PW%|d}U5L<?cGVl+1R%3N@}icr!M!-?7Yq7l-} zi@##>KKUH@w5K%|gkxT;gx8DzrKJGwU4xN#7aj>*nTD9kt5xo=tCUw> z0#;t>R1*a#lFSl4gg8-37uULp2k8bOrw{JLIMJFq*~ZH13me?N5(_Dc z(KDc?^PhzRdC#BIFGC2xce_gTl=!U~e$x`aghH|^$N!b!5v9a0&3b^xzrr9I4jM%} zn$huiyp)qCbSc1I3Pk4@449%%*Wl_DzIsZy zfR&i@Y)lrGFa^y}0RfBd)wXMn*i^tKyz;9WcsZ zd7YuMJv@VbNg)^XnNEIm%1~3z#m6H?H5v*pezSv8ac`+!^H)(`Tr{Ze~qTb zXe&(L)fh8j#fmj@b+|6pDl-ggM+v^`<8Y@nPONO=L6{aCkFUh**un#I>os(I>N^2> z<88fBw|2)vJJy3o7TgG}hQoJQA>cA`Z?Cl;Shnso_Rl6XD6W6c?+oFO#<^WU$c{7>GNcM9F0eMy^vxwnnqJ#Vpwxhc)>o@Uptc|EQvfxo_k7DhoV(mzKZ0sf%ylFKq zS~UXl@x$GS8$TGax2HieLS0*-3bDuHrvP?zo58PM z3Lwb0d_89Hnf)(`K?tIaZ)Vtys0}?f(!%+mrhhhIAt_kWrxV9t+#JML#k%l_x`vG3bp~1Q)Q_ zfpf{PO|sKuoBIxXt2LVqygK@)^8c*m?vJ>(DW({jTj>RNa_#8B2oIEhK>;(0r36rw zhE%=94nxzv(r5lOR!Ua5lT2r4x#ugkN47HhwPE`uV2gGJPq9X(uDbsQ4XsLMgN zSfWmyEl^}AazbGjM1fOY2t%C%{Y7rK*6(0S@u}C`T3eFlqp9H3ONx$P-?YpXwy$a8 zqwon}i-TmnXo=j73LxSEEs?vud`#Q3Jg`tXcjQBJ3E`P? zVY&0VKk*o^wD0SSY!#TdD!pufDCSx8hlYh`IU$!=cxHqMu+9m~M3Nw*b$@lvza^G^ zrTN%0@Bf=7+1BbmUW{y?7|-hbm)7ffQm@xw#i{$LQ^2G{+>|)Edo2E9!iP1=#F1;Z zW}f%pqh*5XH{w`dw-s}h_rC^%{_Usqc0_MkYPK~8F5<6NcDLS6@)qx#(UAL$o?N5v zlm7Sh(00L$bLaF$qw{NNwKpt{*IMr_o!iAw-*z7qnyy+EVz}ImY9%)X8HX)Ji?!ahbfAE$5jnc&*h1klfGcd2_%i5W&U|Do{^zdEYrBVKeT+;hQ6jHFbI<_Owq{=X`u5v_z=4gB}N z-$!&J7GCxsi0RrK#!h{sv9N7ST5RL~Ru}a}Yr0y^ zk~FSR#VCES@DOe|w$VGf$E>)825~qkj&5AVc}pEKo35E{g|DnvsOE@UC##i?79;ns z?@s2tp?B-H5xmA%Z7g&A0!^tajiUJgB!@t82fhj`k~tZ5f<1a*3XZ8446vBM@|#9= z&q%!6%V%D-`!V;o07`bZS;P#j$og*4UTvng;1e`!)Xg$!FV)<_Hw2;$)|7?MVnW~A zu3db3)38s8Y0L564ygpMWLEL_W)**LR{DDx45@#6*<<+b*I0<&U{BC_#?g5eb`kxD zNX}g|8-_Iv_m)?5Nob8O4-|Mn4Pw#T+#^t?bVDx=7EUN#1T1(8hhc^Tk=0H=Rr1pC zT4dl8KxHvdayaX7P$I%wEVnHQtrg3I7CyMEfz~yPLTlATo;6hT=3B`G~vpOkjHAp8U?=-oy0dwb^oJOTj%ASBQ(CO$cmcj>lEdnBz#%_IwrV zO03fmnes?J{y~eMbDN+v97lD=$ZH`X)lsqN8ZpX_rd+69sJ&Xxne#Gn&bs< zz28%k2m`(G(9VUQ!E-s=_(8s{EqtwBvsBvd)r-~xrvJ#lIO0ylj%P@X`Tv;5@*`vk zGL2DEjth*6bx`xdV$BVXM83dYUF*w)H$5O@To2gA@c`Q0h>Fq=dKk)&4C|>pvGkH6 z1n8^C2xE44%o82d46@Su6gFuIj;w#$zg_7cB?tQ_vqe2rm~*JR_MqE5uWmYE2Yi9o z#|0j_a5R2*{7=HKh~-myU)TqAnOB|Jo} z(uRD%Pi+sF(cik#c0+V$;yHf@?SW~n@t=*Y;>Aca|xx{*$X$k%dW-i$5Hqa zsW?r4sd2&mptv2`1*Ds}^f+qXCinP9Y2+UOWegK-cneFzKmYT*(_S=pkvsQo?$AfV z$LLMO3$OKB)GB}JaG{B|J5H63upzqYPU`-Q+K{ES!4$z@5}G9$_Pj_P{NH@oKYDvA zT@ZtDn2~BbR!S=s%Ad{%QowAK!6_3z)NavVvO>$&yum3z*cwb~fN15+q6_Sdk{ap* z-Ug?ef@2fSx4La82N5!2YUWdrp@$2MFSN_cXV^I>O9A`yW&u0H;PuXn%x(6eCbWGc z&o7zvt38&uGT3CwBRMYckaMR!rJJFy3>!S`Db)rG)LWwAu;F#JU{Q4T7o<0beoMw=B?N56tT*OlE1Am^71O2mBNU^0Sb;_2#Cx;ndoiB6F`m>gZDyuwEGBr*+ zsXQSA8&4`{O(}ogNz#a3sHD)j#_zI#z$Kd|x4A>VG^ZnjZ%sTSaQ_#-QMtC*@1N-Z zuv~pZ*#x?VMa+^-S}mSQXA)TB-e3KdKm6#0@tLIapR@&Kw>meSpC0y7XRgd7uji}1 zHk=+iT&DAPJdE6IzF{YhE9b|5%(7bfVM?3E2IDGg+>N0G1tM_j&l9NxKH;(`mOoGu9oQAu1r->Q4oR=?=n|MfGU1GtaPEq(vEK6_}|*v(F@vSjlS7cIg>Om5d$c>j|#|k#9y- z;J!Yy_jB4yo4T?4kPbe?77a&_tpdnn*FSvd%TKSEnf>G!Zst3(*eL6!0w$>zC5F^S zJ9=rT_O(>YeO)VG&mNvj+_$^4Fgw$#9HG~yByckxwFLujS+| zMX^Nn0)qWfzOeDn10xxE9p^4; zl{W4;t1uIZ#j9f`mhZIQMG3e4GSwO0thRMsIosqdLu=W`gxVAxO3c1J{Rw8XZ&&sA zB?dVi&LUWhu@S}zWdVUe9f7U&sY7}Xy+llu)X`rVfDF*AX5I&7D6Qc98D}obraiZ# zcM4;LBU+3gjN@BEoJ9Yp?z%{vm(rl~*bYd-q!}0x;}kmGvYd1PP`KT{tVjE~Pmhda}k1*j?D^jZViE4Z8D$!&rc^M6TrVOSZk?kQKLJj?SkH1H-CnF96Y z?mJcMR%I%X_Th!5nw`#X+md{{jV+nd>0D;Nuy!8WDak`u=^4ud=Cmg~Naj2N7jR!lWWt_9eaipED7dgsM}5XoOflQQ zOnZu6q60WViX2l~z96fE7$9GV#oC6#ilRUi(1i#2qbM*%Ozafm7zR!Euz;~D035ux zsjwlL#WmZcD~v(EAw{0dHDVk*y3YOVoFc$3LWN%9g$HMmg#N+YA-?Fk^YM#lJ?F*> z_NIOhGyCdNq1iQiL~J17OYoCEG3tz|`sWv`A$BZ4H`~_IJ{}h{4e@)pr+$X!8h(?v zF-&!rPo}fBr)w?sV$_Fzo;e=-N!8Y)eKiQrJx(><5x*SI#t(Nyzd1FW6_RE(A`L{7 z7 zoXwXu3quE+mW#l5u(?PFg%aDXZ;0fN$0f^ihRe*B?fbYq_G=NB0l6pRgGh5VFMhOL z#wQTVd?-Wa4)UobstWmI3dV?(Kdc&*KjsJVdz36F@!0dZKy6b;AA3njtq8oxLSp7q zly$_F(5W4%TrlE-kEOrUJ+V#_U*MCR{%l(H_CPxc2#~9#XB$7{Mc{{!Vv#03`(bch z(blRkQv8N~f?s-4Bc=T^Q;sIRJM_sg(qUzu;^mMsXJeUvoiJ0#+rkuPK*p5pqERw6 zYxG*|u*23AfiCHK&`HkLw3i9F%QG@UC|1UFT1{%PnARhy>V`ce)U9b#49Uv2pINNY z#q@8hxWlD(DPqspd85BfaRC+^xiF#l)XytKv9Ds|HY?o$K}KM$o5JYS1M3_OX;>8{ zi?PZ5VLjeg&r%;Gp-n`_)gtBiD|2jCfqWiRf)OqEDWQ`yQxK!r&1}I&hv}11Q4$yY zU-Wt6*Gt7x`l35t{S8)+R)0U<|B<2+4AYuewMK-BTi)gkXW1Xp97>@tJqDpaLjKEtabM zJbsDYQ<*YJ;{1^iJCOu6$*7*gP~9QMt~3m(`%a5p;zoy+3J1!Y;X|XQG`8Cawvtwv z4TBF;PTh_0F&(`MAJfq*@JZcERi_=gT2Yc{6uZgJUF9yZBTQ|?DXDRXC`k|-5n6Cg zIm@~FGg{IZ@`GYsM5f`*KLKKVMiLA9|>8tDR>9HdA&7ePXtyd~P)TvE~>G%_=X zb45V+y<>heQj%EIdL$WPh5)3F->4YEp%6y&eJw~GAnJ{kN;4Rj+xr`H(WPZXzMJ0x zC`RP7)!z{L#XenU?n3{EA!ZmBp>lYRI%v9XPOs^@%=_psGAi%ux>bcWkoh5~d~OJt zL!ii~qzjpdK&7uK9jySmkqhij;drGUZv^^1JUMR!dJlIH=#6}t20dPP8%&QEZSq5U z{BkJN#ug~FKej-j{jt%YYMrmg8;J%z9un>A@#%0qK9Xo5zJ?FpSh+~HM`|-XBq$yt z-k78;s{1KKZTt9+(OxUT5x8 zIHCvsQWCjXwEJQtbPZ<`X99=J-4Eo{G`|FOfhb z=-Fq{aX*sXp88xljud>h(KmIhD)pxf9K}6r6g9AX~xpsN>SI85Bu%osmME=_ z%`In2$;~TjN-^R^9OJQULvXPw*v0ET*cE#1!46qTb=x)92Rjoz02{?L0-HMxH`uGu zv&54HEqIlFK?|iy|K9vtIu~HE|K#Vw8K5uUSVRh|nVJjdN~8>#KaZQ`w4lsU9>@7} z1+(T8H6f)Uo6y)k2mOmP;^YuVf|!}XZMsG*6>g^TeGyayBX-mZh(ylv^8IbMX0P$( zH*d-ASUAu8T+>VwHSy<;ZJp6!SVPxXWU>VowoD~s@#%IMCMHFx&&4G8J?11A2L=C$ z5)H%Tg~#2(QcsnomSlNkeUTnx$k{59AJvRU9<97MD(|-)I2YsB3Vd3~LtJo~h z936vmn>l*!`?8hq%%%DtWJPT;X;`HZx`jR4>dB*t##HO#dy+1@S{Lno^eQbx*BdFW zDOT&eM+pT2lJRTO(CHe^9+~SpipX;8RI9gp?@ZxuQQMRp#vZifXZrEsyqCG27Sc14 zH7VR@V&;cYwhyx46;A3nh^aBs`E;t%96pc1VHxm94`6-;9H=)ZKUcdw87(HrL_jwl zvn&zFF*R^V&bSE?KbGWS6!L^$DExjO#e@zU;feVzEY*^7h#?6^3xojSEj?DU`XNHy2*A;C|+k7VW2)-T_Ij86G){t8)WW6*nrjH~NqmtE(8t%gQ?y+BOf4tt;!gs4g=b_0~qCFE%CL@QehKwKAa-ns;^>s-He%VfwJa zc`Ac9*n$f@MH$RADc~vE=tn9u>L)gVp|PtvC8jV*+@Js66CZ5cP4(=N4(~L{8`XE@ zG`JJXHzq(E^MGPRY*^KxT;&+lFb;NR&;sxxhco;3Kk}P%NT-fsobDVS6I1e&(~d%= z*S@!6l{I&Y(be4J<`fnqV+Kt#tS#9I%fcHA{<_U-xW{-HejbKz+$2`WL${X-E%Q;$ z?crAHF;91MiOZF+CvcdkwCc33B2TK77@)~o z&P%Wq$Nejp>#Nwm6}oI+u|?=Bys@S+?EyF%&~9BB%`S2|!PFFCYnUlAC6R>fYu?p# z#vFeS^g$~y^TcC`BF$)B7|{0t^rPH40CZ3-$dcFsE_ftBjp!s$52%o_5f=4nz5Oi{ zSK|Ge#naizT6c};`2W4wk?a9~d*EC|Jw`NQBto=eB*LtispSNF{6IvU5hF==VIbF{)_bg2%ojNa?h34@a zhaRty)rMGF^O&FEU&}O)#m2N}45h%J_8j5Qin)k=)?xr$_8_ga*R+&Nq2|tUia8^- zdrs>t=lfs6wFHn0YCEj$8h7Bi%KZo};5xJ&z@GRNAH%@MIBH#};7~6^zR|8w!y@hN z$-7}2%{!T7JGE2ZpPagYAkvZ`Zl-{5Y!j@Y#MYjGt=)z#&MJkcuvNVR6a><^9c0Z2 zE08=FW`C3me8xt1hWWHKA()Y5uRV;iK|2r?gNAHCdtrySab%OezKvC-bU0%TdFgQ0 zz~@f$2>Lsd^>QyA$`vl^r`gl$4=r%}c^xf=4C1J4ZYX=@ zsHB28cK=}PhB#R6Y2hS&Q0r>sx77&OlLiN&AU04+1T}(0Fa^b4BHaP6&1g4QscX*a zFp1DWB3P&xRX)0DX^ zNt=RFC86tUtLk-cr>rZ01dwg|KNkN{@F9 zmhYu6>V=wmPvG5qJ&sGguin@D!Ypqp^F?3pYkIwJccre~aWq&#HX5(@y}O*{Rwi^p z^Rf|UIb>k^US+mJ+NMc0z21ic?e)G88Kk*BBE66Ebw7(brd`_PfMl4a`q}Hdm?Z=v z54>gsccPov(zX~8P=+DG4wumW*1pzMImlPqU#Rc6r%+=r4N~QX?)s#+P}(VzszcaI zRq<0nPl`6yv0#%rq6|v}&GvyhCME}^xpB+W()2X^2m-@xVgq-UBswN7cdy)TimZ-F zMMjNjS{cwesDSJw-%Q`tT|=-+O|gr-_?vVlCC37^aFOLNv!d5@ueJGy&Yn{FW(9|Y zXSw?>g`9+60hdJ5BT*9qgDrBkHl3eOUu*1lIzN~8*3zfY^25C~#oB)jrvy&|8QP5L zcHL;Opzz8K(8ZAQ8t%372m}qcXmKzlzoa;zI0lMV_h%BijHle|a*gM!^sarZ)OrKH zrS8#hx<+q@xnh3niQEeleDplGA5@DfAOVy^VYUuPLs-gymi7*canI3>=c~(_*7mK{W$C`@vTVU9<<1$=BgD42F8fF6mFcoMlE^3V4!W!* z^d|bboNj+9yOFs-bo6{()@-Upby;*+(`C_NO_%isOjVa%fcY0jcWt$F2tdu94v>qo z?R1#UQGc}=hwhm6wbzPlyNq9>uemDPH~KY*%9V;W$0O$Q$#j8VV=ndqDN~VePYTH5 zYcGyp;~4#kevKyrK95;Xq{UvDU*kxnt|M_YgMN*Vr`}Wd;`ue6KKY*aj@&)muMyup zf4{~dNy`5p`ZdD1|GE1$kTeni{}uQ(7>UUOb^(^M;GpK-lCt0fS11cI*rq(Ab>&?M) zJ6dKJHDvr{<_~Xjh8oIP%WR^Cy59CS(JcK`4<-8_33#8i-t}e1LYv6!*uG8F(AG`# zYPP_|y50flcvrXwv_9CB{9u$ARw8sk7E!xz5mgqFOvj|4SqYQgB9h5FiIbrtZ+MF) z0#r${r({l9mZJ98E9sXAbjEr>N3IjSH}juA^VxU(?PtIA#8;EobA(~)?Fy_=sRR+E z168#KtCCTnv_A7IqP*iEIHJz)M1^i?VU~6S`1^L2o$09n67QgC&$FPURV-yeF^W-$ zGCF%>*D%V=Iq4x;I@LRZT*bCDTN6)`Y)d>z>`ReO$a$gt3J*vYHs#|VAD;j`4efFr z)>k=`R!R|DL)lB{l-%)T#KVX%TLnc`x2g}_m0Ry~_um4+2-H$8 zMlgaLBS`dQBS>2+RaNsEfQ`ond|L|N!Wgo}v@s}_B5EhV+P4$Y!ob6_i6A5=H9j)G zJi@Aw)OKZ$+%JL0(t%u8r8k)|ng&k$wv^z#$_un_xYnR2F1qb|ihuWg$9|{rS+o4{ ztoBzF6uy73FKxB3z`R;wK_M(AU%`R`V;sFxE?B=lBWGD3pq}8gdJ|SkGKI0#nQj>F zOgKCGz^_O2M>DVtp*S*1`&E$2GDLR8%MgIV#I^Qh$7P7OdudIg*hN+$c3hd^mJSux zws56cGys?|HT+7L&0Vu+&sVtezw<`kTL~gFsw53GFo99U&EmUnvzPDlpYWdv!5=+Jp zG+UBxLDCb!%&nL7Z!#m05N7d%Hx*_CJTK9{a+qk(lO-g(`w7V{ zOIf+3P!E+1lj(z1{9}uA)29#;0P^{W^8gkT=N#mRIJaryE3P_k|EY>|Rv!Pki1PsJ zZ?!mI^Ss14^8Vn9E6%~-m5K8)FV0EqE^%Il7rf}=98j1zXLpOFxnE?s4PJ-Bwzxe1 zF0DqfPO{9Pg2dL+V?;r{<$d?dmFETwf^4Ia^-9mub+Tl|O!u0scl3r;N0OI^C@&TT zmyS(%k>&kZNv_W$ZlT4oC{dFrmpv63Y2gPocSb=S$XTyFo05d>Kv2h){B+KN1sq>5 zJ^K_3%q3YBD1c9>(6928-4H%%L&Z*$Wc>thq;byaiei0SSE5sn>558pRM*K{vm;!I z;5G`9RGjkk!`*aPwq%Lf!byY~VSj*dPAnFU;#V}KbSWCgqtMr*X`*;Ef;(*0(|?1N z>_)nih%x$8`2OfYBm?!WkQ~=~4=2^4vF=9r@r2&Q6Wm&R7M9zIV@6mo_=FQ_HcXO^5XxZ8|d}SqIe0F5t2( z$ej8jl(C9Duopk%9?*tC*Cy55-`N|La7fh42aMe4`lXwKC_R&rwh!#9R27un}R=gk3mXf}VBgo55AM z7F-!#=(B}d;=8gwW51K>La?XD>_k?NA((g#Js17kQttxH`kn(%z7U~>m^wd8IO$0X zkWAsWykg8=&-8tdP$EN*%(-ekBJzkHfq;d*VWwDb8eP04(pQ*1{RRVv5*dfXTmJ1{2L*;SGapD-d@SS7%nKz?rHaiga`#ugBz(Toqu z<3?kii3JbJBHHhe$B=D-yw`x96{yTg(9_&aTj zxso|*Khak93UJw6p6eWa+-fCaHxwGKxu41&2H+)f*$i*# zO#)&8$L4@oZI|{)BYniH5-Kdxo0H=9#OcoUe75!fp6#={A7S^#iY+GfRJ?7`AP{tpMAv~e>4l|)V;StL94a5GbuRWT^Sy(vD^gm zp^3-{b=Ce!c7XVTg7i%qGwVOLvr&_7-e%+@9|F@`_~vKGTy|bRPCUk>SLU+MHGQ%t z_CIDDD<`*z%MSi4lroHH&55?(Dmu~}Wx)iebmrL9*Utf}6q<*AOFPuoa(9cSj8BfB z(SUvJP31yz4^OSyCa(iqQ2B?{bfT>3Uo5*OmZpZ(bhfOC9Id`j%I~^lpYSRUsp-;H z)I`vp63;l2n2PR!n9u(RDwP^W#}fk?!S3+M2s^&@{nQc13;L-|Y??rWP{iv!q{pYq zI+s6oWd4wvE?q@UNVRHBVVrw^JC1YteL~eRC{kiR6otzQ6pt^g{R*Inyk2HI&pfYo z;NMlq%zh?<^^sPlR%Rub*r5(*(tPKgG{g`l(?9Xidg8J$g(p#@xs4!gCfi zj_dxE{wNTVxqOEE&QIii{MxU`_|G(kcWjWC>eu4@)SC0%xO9T%Cf$#GnoEP{w7O6C zL%LxMlutAfG=f9=t}{^d=we01F)6AUqM|4C-I)8FF6ccP{83V%4Q*8{l22mM&#TP% z@`{QlQdGHY)asX2bkhBWE>f(N9Yy!Mf0I8NJUN2&z<}TR$=u?1?XfTaf9kts_FBxX zQgpwHwwBjxakEO%52|Q0Z1>^$Qm_*H;uB>=(SSeZi+;iyuM{oe&VU8?a=>CsmGYld z!M6L{vdfFzSUbM`Kl1ID#1+$;4kIq{mrBv6ebd#VdlsXRFta4@HR``m(UpC=1Yonj z#iJpu4$Q1OsuN3{@zs3}#stBANtZA$pW(j4E2Yz$~xUHUVREXY`>MOY3*CYV9!~VE&9R=lfV+f0Fi8c>iUciqDtLY^tP?H zW>Wll`EkIz?LF;#_yRFd9Ug!}&;NS*Q!ro|Kt;pcTe zOy+OH&kc%>$=rK?-+#PbkwlsMh4AwRt)OJ?v*G8C3K`nPLED4F|M_&I4T)BSq* z*_K}?bDs%6*ZY0fUoC%{wl(_&U)Aqgijd6xZuotNC?#`0a>l>@F3Ho(od`c~3-Xj5 z_{vlv!3CuKd`8#@YvBt3cB7xlIynGULz~l&8c4l*t8}mhUu3u=rQfC8abm&0V96Kl@R<21}nAtDRDJAH$UxKFP z6ZxOW@L6CM$+&Fx_>2MdGDY}vhl40rvTrPZS&VL!%mMD&`&?RZt_g|RYdcun&UF5* zrg$%Q#PXB6H7)h@RF>9508yVhePfv4YRn(vs>bU1)@&=VsN3-`HJY2)m?X6t|C|3` z^-)7JTF}KH6(~qp7c!*A(C&f#@e z400SK)m+kNAsMI>WH6|6Spd|ZC_i_I=0 zhHEKtEF*GlyUzGwOXFH{T}aj`#%P0_W62Dzp2Xs8Y37nRk{wJRD&c~&lNP~nm$P|U z13(Ml>300-$-fj^)5FsHSBxP-Idg%`@E-BRbBQ;?aeXH%$^+uh@!&(|rjRs$ur`)cgoaSjsF z!lZjL**@{|QTuPrqW^{WN?btFEw)QgDP?=xC*F{*uKYLfqw;*{t^YXVT^`=oxYk!U zT1b8c!LDG;QUZ_#MJ`vfR5X?r#`Q?aOt_G^T4(@~mQP96!qCs{I~D6uSNK>0cNrhc zXX&N!az1YBW6A2}d~6wwB*~ZaaZGButdChUL7mDqU$oF?gwybuzvT;5PGX^J73rflfXeIG{@<)A=&Pa?yk8l+!=Eu z_KX!v>apF|zMi`1tzS=lu%5crW0|h&s>gE2=!|q*0;GX34evp~g=G1s*56r2?odIeme4Py07f6>rdn8w^4r`R(v|qpR&hK}# zdyl_U6PelL!`}4{(9EVj3;k?I%utH}oE$ov?tE3Uf?qX`zhes%zc@*c48La5_CHw} zKdF|X6X$5Q{Sb!;S;3rwbe(u}>a#9=^ApMeFE#@Kz!$o0lu_59YiP<)f_vtV;D2@& z96eIwDRlsbP=5B9^d!gHrj+M)sPtnwyD#0Ov6WdC73?u@XIXLZpNs)4hCIuTY$8`@ zPb7CyBhUgo{Mhb+w9}53=?{`5QuGNp#6kK|Grsu1Lu%ziZe#~XW@yY|MulAWo^M#L zd#HOJE8t0oe7gWcYmlTRhshvg+!5)fU3Y+s>84=Y&pb=P@2lk0-jFZd&-lPyWC!z# zeB{2yqPDGNxkS~1xI1P7B22l`S<^*=5Ex?Y*jRT{j1O!Xf2;A0ng#qaLOG!2%P0$$ zq?``rZqL~usK5|wr7r#cASPQV9=3=Azbl%|VN*3&RI!YOSe3eiDpYw-o5#7)8N{~v z)kLNiql2)NCYoUrypovu;?WrvX=aPpNyboaM1_QPv1MIlIe*Z&tZw`}Wx@W&iq4GgSs! zV@{arm=t!rCH$e~3!tOlD}Mal)|qC{+Zwib$_mxERnkQaK!k#cU>!UF7$Q_gkbsK+ z`*Exn^r{Xl74Ik7X;W*0;LTT6k5z#RZ9ZoNh6t&#{~vkpA8pxH73l6C=bZcF++Ot6m`Sv;0iFm{pl*a=%G1$Q7oly`=rW9Hc*CJ5;c(>8Z=H`p zTIV0d(=$dBbM3k($k`*PP#1X+7YHZ&xU-P(TcxDu=qu{VT>l$YLgT--c zulsLO872%G^Fkv1B*FljK=;#Qc(N4|^MpMIJcSYmZU!Bu z)Q80mrk{_d6Q5y73wV1RUs&Fiz2oq;tv|*qs@J6SHLw0pqQg<}2=m8iut|F)B))$V=)Mrpxr}(c z)8Vk}OMPFgp!e$#9)?yW#T{EEp zZnW%O^E9GF8KH)NZX$8Fe1wV+R4Oxr%Oh&j*(wx3`v^h6nlp*AGtpMj2_Uhe45wf) z$1FND@BhQ4*dI$$@i`9}~NibuOoD?>6vCBzN$*mKNNH};8xE9L=7nWQ`sdkt>~o`^QyRxWR~5LY5ys`SpL+YBj=;$n zy&{wt^v8$G@ptBGyYW7a+9Q@x6g%Rp@~EjLYG@8sC-k5{3JUsK*7$c(<4;yq-4F1P zGo0KmWrrCjF|v!&oM^!~`tGAYL`}|4l`1;UxEl|pA?nd(;qJf10AAk4#6%w zb+E9`$V+MLU+^wn0<$na!$deuXU6$-lcba{^mnE=z3 z6|WQux=bQ0wx@G58m`_!KDrc%=;FbSXCviuoqNVCq6k}!8T_gN>iKC+kUAm;v%ywP z$O0c2X~?|)m$^K1(9o8qX8_qZ7H1<%$oBUW-J~+5s~#R=J}4s6MIR|V;%yXa`J4$0JO8;nu0kCy zs|Xn>j{fGm|Ihc|dDF>{z4`h?#UFU-+aLbhJO1L=ua$~}%-`~rzkdDCzwEbe_`X!& z;jg^s?_c(cUw-AcTHr6V&jSX>L?8j6*3$LjI~_rA0>w{bjjKGMu5$9T1VbC$%DFbC zm?FI2qZ%h~;vvU-L+Kv1sFMkn;W>=T`SO+{ZPx5QT)Q)Yl%7~#Df;NFu=&fO1`NSRvbm04Y4PC z20JPC4j2zU%#8Q|t3Sh5Q(kt*i*8rr7sO)o^iApVI(w^K;h5<8jfxeGBNdQ;Hk`@ox%2v<_e)3f1%Wxkp^N~L3cYQ?v(!NNz#lpR&jS|Hke9}q(@9U zMcUO95WvW)j=ls-4cX9{5ozL(qU;bnqNu^8I?*Fo<_=?Zg-B4lhpOGE5K1Cs;5OA% z?ZiE)%-m}`g@ji-8b|o64WMj4c_Rb?CajP*Egx@B9<2Bp86}6n$dcG%2$tGHl3G|6 zxM^Scs=JEGp9AFhgH=yZ1e(QY*tzfv!KTaP&w;TR+JebcTEL1B>bjDoQ>L-XaW_}j zz1yX(%heXX*b{dPW%??*I&nKte!$Dlh7Yu1m zjRQOu8&6f!_*~JaV^L+UJ~TeQhdj3CmFFrAoZ&^Bf5>OGYFXmhs4~U)o1wPEK*ed2 zZ^4lHti2Hq#bZ7{X;_*z-Ne$)X?edJ=<`o>~*(1h| z30k9=ZEv=V{&9?%Zdpac$;TWPKYbNtR1r#4Jd9tsWi62EvWY0Pt1e*KGiDf=LTMNP z?`FrPY=00Z#GQ8)_^qq!J50|YWnR_Sa(sPkxP->ROS~5Ck^hi2DtNSA{oyfFAuP#_ zZb+BEW(igF2<4sq&l``}x^LL|YJ zS`Zg3#}He9`K*IXIyIs)B{89$bXT-Dig5qXCiKbWP|&BSRf%Q0fybSN!fOYB#*g{qq&G-U-r_?xp2Ug0+)Q%ry1^ ztoowgXI*#DKJi*alXEg{5CO%p2&O>80Uo(VE$k{cvoaA497Ym?ugqx&?C@|uSR_=z z0pm5;bMrm{6P@vqARs4DhCJ11F6D$? z^fpKFk@IN`Pu}@gA9NsA$8T8)`knkT+z!SC!PUTrkL65B^8PBbAr3m{5ixgAK5aR* zChyGRe&Yc9jwU}|wM@os=6(moA~M8Fdwq-zd}mRdv@wnRBQr#cb>=q3W=V|){?W1q zmXzjx@C$_u!{`OJu{s{Vd{*sAh8>nDW0ojKx_=<=3#yYH&PUxak`yQnBRF3iM)X~V z5x*LCw0;;%9#mHyY#0Kgr!c()DUie}^_NYNV2y#OgIDA1?s&DH^vtVq^1Eh-R~Ly_ zgQm=@M?IScc`Oxxm%-uxA+*exk6_E!L_AVFtmz&y9G(P+HEx58I|~UBgxo?T)?`#u ze=AXtv}0v?0~VD*`0aXb9W7o#-w>5koVfty!UFT74kwX+I6Fm_N^EwK=YBV;OC+ch)PIMobGo5ISgbRD|KESz{TzIk95)D6|Xkf{m- ztD3wOgX!e|QZ8W(P27U&uJ-hz`9D(ggTp*JGo%U^-bhwWBY zpRoz1>MPYHoYWA&!D&e?mQ-%=WT4)RDGXxwfmX ziHMgkF@} zSz*8k${2d{n607(KT4}Iej0p?REYX2s|T4t)nak(H+UBkXA5OIQ_Uj0xDn`p+69(*g!NfQ?EQeD-SwTUF!vf%?V3? zz?`z-`yo{Z+s`Gl2$coZp~FCR)sdd=!cU)uoZuG5nAwu}v$r?Lx~rZK^P;{lnweVN z;G#h<4sJp-`o5fFd2oXV=fP#+1ih!hJpHA#f{!7(tgk{TSdO1GB=7O2cnlP)CSFv&#lW-y`o7YHy zF;!lfG}dOFzR)*jYQr#(=HUK8wSO2i9zvI_aL?P4Tm*m+n>`=6zo=|xp zshwEr2_@%`h#JhdQ*uVoTC6;@=F-kqgZZ~;zf6H&$jK4C^f#S1KS_l#a(*N--% zBZ{3y&5zbYrf^?bL%ror>6OgR#Dx^!Qfl1OYjOMEwiiN3ZxjuR!*9p2) z`&%5ij^ieFk!@s*Na6hI=Pb?$@KL9pL8hEE*!4`68@<~#v@5S}Y7uUnhyg21`Vobw zMi^nmu3>ghEr3gX34GhX=p#=!4|(Gg-#oZ@^JQ;*;+uyTZ*KU{yzz-|b{21L^u{N?x!Idn<{Pj5o7a1DQ-0&M zFLtXpugh<|_Qme-=9c`%YhUag-rSzwc>h7U<~LsZ zVjuG6z4?vTzSu{-xi`P@+84Xun~&r-Ui)I7_U69)#%o{fA#WbYZ@l)!zU<9|`Hk1U z*bTCWhw~e+eX*UzH(8Z9ji^toJ*yJStS7-Ww;nD+D7Mm*`pL+ba+T1%mt1wExW5wf+P4^mBCuodZYCGkO@PzmF^I@gCuj586ViF)#5`mhw;tbM5E0GlbsA1jkflh849 zXM``4zehrcqQ_fR87s^7L!Uay)_OOEQ%l)?!rOIkL!rTuQD0o3yM@z=ey89ov;Z`m z$xqoZqwQJ&Why(WimNv17Zx7<1+IF~LfrCu`(K`fNui8I`~vQWwiE$YbQAWW1MyR2 zPG0L8_J*8uqt75>3-?e*_-t<-rT($eC-slMrGNbv{JI*HS`=Fj7o=8E&*HX~QR;AE z9BCSrJf$$Ni}nxRa+l!;EL;4QV!)s}wdy*?`{~6KavNb2`!uDfRg>ByD{g+P47jjX z(u<`}s`#~E+*YFF0$v-v5gVRGjDaj4`m_)Be?6!~$71SW>tqViwpAs&&aOUzDf;|-*+$kel^dY zK|PM_)2e63FI(Xoo|(wwGOlFTV*PWH7Fq}9vSV#M`3xlA-uxMc$ej^9J;~*L8OUY8p4S7GKy>f;=|Fr)5SeU(IM@Z^?Anxl;56F$L+<~blYknQEz%gK+{%%xb-5Uv(Gb9UZ)@5-fa@gRJ} zyp_DwbN#gH60U5^>e2x)mb`0kd8wrN41PV#wTaTEOnGMflHA0{CCA!3=p(om-DSMv1-0gOsEgm$Dm0A4cXNRUKOf+mORMK_hnh^=UI2<8 z&!F%{@#_+PId4I12Ii2!jIqe+-re9liAZBlY7aUUiH6`VVhpZkG;P_w%NLhY$HyV_ zhrGGrWdxs?o2@M^88~;M9+H`Y^D*mI=%I+n2<+~`jW0-+YQ+~r)J%)|2+IXl>XaqK z3EXqfLRIv0jq^0%A%tjQ>t*3JxVYG4+_-EYD=dK#|Gz_FOkqm}wPUcCU9m^cWbk0X zm~}D~Xh<^Zg0_@C%m8dRY?BniA>^z~*m)4bGo)q>2xCOXx6Z03C11!bNXa@;TR<9= zxFCr>3e~pf^pfbWy*;a!M4Wo#Bt{^)i9HDr0p_qsbfV zgtGVxv*KU;)$lLV0_YV*7`p<0i&JmSI9j#kv$S4uMb{Zr%%3PSJby5x)rU+@2lecJgszNnga-od;6M==Ad~Vd_arMmPR|1yzG(q4mAhk&9P?dxtoT4KAH005RDxz zU-mqk_d_htDG5M?mgO(EnkVIEjuG5p3g84g<};WF|3-xEoqKS00GluM9B97o*z^!z z9N6YinvLcFP|;vz%cJHHlQ#OvHR+OHpIWV&bF*XPkWmnFeJ)kADf%{p$&7MEYdRHj z*O~bHnseE$nt)9?Z}hW`y5(UN58aB(n$$YNyUB}zlmTV{&eBkf zNB~dmJHG_MN+R(@aNfK0#1=l%KatLuTtxme`3&TWX}+4K^`>$<&*6bsFTNuW)+%}n zRJO@O0!3oSZ{$RvV@&p-vdv6orul%%w2}suk@WeRW{vdrluT4c$=LC`7F1^Wpt48~ z2bEbcQCT&oGQNo&zwu2fBXtSxZzZPG(VZPKhs0W|n~6@2c(MjDk7gTp9$mj~_T;0@ zD{lkwaP?<3PreOKG1k9OL7Bu{GV+Y)DCp4Aa_8X@R%LQtf1?Fye|zFiYfcjLNM%ARFH&8A-h~OfHyEtbSQ-qWyOt*` z5(jlmezJn{oa{I&URF`eIAjhv72cdmb*Y&AM#N;VuvuZc=_9qo5wqQ22F|X0Q(=~f z6~(WIpP9{M^TcfYT#Yce-hAA_dccQ#w*geqrZfiaAlv)TTe_7ZQzOtU1cf*x$l zSp^>jt5AfWNEuQTy0Qpzk=Q+3jaEt%BLM!Woo=`1UCH(1k33Qwk3l;C&nx2H)3>*t zT&DkuGya#~NA1K8zBuM7ik5*2Km@BL>@VoABW7kqTZTrwK;20wa{Qr)<$sg`4rA0T zFwxUJ;R2m*aKTr+%7r5l2V9_}qM3MXf~ooVMXYmJ)K^$~u#~0W?R^Yq`>!Ebtzx%) znVYxqCsyn9a{_fUM&~q>>~22?%K#Pa@6y?y!<6AZnZ0P^9F;#T(D}WXJ;!Am{CC2V zip5T>lQ48w=wVGADfstO9}Nj(Z5sY&f3C3h!2|K2H>B0g{xGqKAB@ zdV-)ug}JUL2wPN`>{FBo8z>d#2X!+u)qUMO@oCj}a{+|Q#w_lVmA8ON()pSPVX5Fe zNfw{ng{_FQEa_Z)v*Vf+^WS_)+MERpl#Go_T*E`oH5S_aI`#03xMyZR{K(-eaJ@H8 z*FUPuZa5 zQIV{O{fkK;k|U)0?eIeNDCLybFt0X;p+rUj zu?+RC(l7hF>KizU|2Se15M8Y%BbY1L?$^H*i!kf3JXjNicM+GHu+(UqSkW5xeO$PE z0Sp&w*mrXw)@0`-{Qi0Ai)T{>Vys|HE{mU<(hd`#vBIKX>piO;5zZKu88lw)!xH(L zyX=ExybC@j0MFhLaKPg+U<9ZgfVXx4@+w&!&j9L60F`)`#|^2}v7)^>i#0Lz9G;wv z2I*^s(9Ma9z4V#NqD{Q}I^sF86#4fQ! zFs$2v0jLPV2#<*@b1F$)h>t;eNM(*_L;bN9ETs?`O9P(ZC-((kLibIilJrd0ta0_3I=IF3U{;d z(fjZ&i-%|`*Gaf%peN!B5=L}5j$d0YWE<(bUoUr`I_Z(-nZEn(608`=1X`^U#e=-~D`>us4Mueqjbbk@Bz)Kn`jtwEQ|MwF~updr;3ltQC(PA&_6Xk%n zzT-g$3A^~x{z`J_`a3>bs@e7IEAw!OAq1#Lw{z>V23OZCsw0S?k;m&1fArQM(EKZ$ zys?eG+e@Fm(3+}X8n*8W2qyeWb8&-LBsx9Bg`VzfKT3NNNtLSi7Mw=2@vgl;6(GnO zCDqPP_LguLGN$N8-ss-b00i?uDvT$BLS5ZhMF7V|O+ep<&v^hNaW!S~bmEXH({kND zKHejaO80m0WBbH-J^g5kx+Ygu-NTyc=MG2aPH9B=Z|qy!bAu-Eo4%H!j4 zeo-I4eEej7r!UxZQ=VwukP*XUtPF_26y}rh*IBM?-NJji*BcA3^O-X_Ue(S7agDzo zL~I9<2n3U%h|_V_%QlVD9|ZgVYNCd6`PocqUOG7tVG9|; z{Aria7q&Nl1%{kM8DI<>%m9d#Jga5_$5z&?M+#N$*|W>E!H1>-1q*zP!U_QFc2{EL zD*O>Ka+1Ot<`MbWnnreN1Y-*@yV?nu>jZO^2EGU53@`^6W(Qvy_%py9 z9W+~m3ut`F!dwBfXGI7z*?1+0rxz^jnDPsdj<(Y@!(83LIYfwp+X38U5nYAoDuY0w zbO<65Xa{E`d+rBfaQec#;LPri)4-|w3&54%bSXtoT!Q>%J^#1CATH6qq{}xLM)vGN zhQyIHNRJ4d3T=S3bVvH(rz^DOuO?gmYFNam6y7au!V1HdU!t30sN?k2g$$)7$Hr1J z`701+4@$ko$rw zPw@Bqb&YYA$ofpD1WZIdT!lgFAwMH+32mP^5#4>38e*M(GU6rXbNv8F2U>^>g*=?R zDh|RW0RYBo?y*F;>A$Ay&^G#%bOiSkH)Z?c<5Pe$!@lFtp!|eG2;(WvP%xM+soqqJ zH+6plUPKlAF{cn5!V;}%TBJ(5DguF+utOtfE`>Ls9w$0LBUa5+znD~;_Dfs| z6msyN!=-YO(8V8_P%DK2shVE`cW+YcUByCIjB8<}yG{iT;rjbd9W`R9S4Ts~;mc6D z+q)?g>S!h|=rvg!o0{Mm^`#G4Licj}Fs`=tsqL*D!~FNV)6-`G$4XSsVW}||=>1(@pG#?qv_6AK>oYj^^gT$Rvr+WQ~X5T6l|#|r}%+TljZC&p&`rA|BK*^?>ShV)#vov6N@Xc83xFK zhW>K80si2VYobq5I7=e-MEq%wv4_5yJsfyb}LgzzJz|(;dzQjkG2IzvE$u zHXPDr%=k&#$2|Arvo>BsO9QO+DZQMsDGP*^vslU1Di$gaK1~0@x6nRyd#f(0l8@m( zM17|yU|nDKnP+Z4q#n-QLCLE55hcVFBetqH7;{2+fcJ$5c<$5P87#CbIQg-4-Zw!5F`4yA9j4?)n8bkWbU$DJ3uFCGeBIZ|hC7yc%8E~M757i80kUjrD^f%pv=Lxf+Ex=3_qD9pm zHK*bH@pEOMGBz+`#&}}y!$T=1B?4DV@-#L=Bz>${(8or4MzJAvB|{$z=Vz1;A}|+^ zL}0;F^f78box_yF!zF?lvX!~uh>qIme9`^KfFRZF5t`1G#0vv@#=&z?OP%;rpkH%I zdjWG0^`c34hqy2-u^!srtVL$MlY>h!nXR=KsI@v_`LplX5|YT5)@O|AZM508qs_G3HFL$oZM|I9K?|_zXxcFWIN|qj!OK*~HC1 z>@Vc8%CUK(~vhMSgrB(dsY48E60TP%&;8b+o~kvI&8x8EP!jRc7c$2ttC zg?VgL! zS7L(Tvy!JvY6|)P4GPduVZ4((U)MdcvfVI2PuOw4mUAD1!@U=B<}*N+fScMK^(OInN2POfwD36h|zVp=AZnWGS! zt#;ykmF3Nn(zC*3q;<+ID}4zws(dB3HM?VQX6OnGb80N9cu{EFGK8&&6X>nWj@AVA$##z`?4t4XrV^!rWpe(q0(U+LH5O#G_t;&=~1$invW$ zV*${+Pe(fFBFzEgtV=`^>=A=WJ9g6DeDVi1NK$$G`ZwK`1Eh<#xsn2ppa@M-g!qQ> zLPPv%s`jSXCmAO4>(O!(-bWSzCzPb+T)4I!o z7w&c1f3bF(tw4rg59!O`yHOWEK>Gzk5dksG%Sm{m?L2Z)D|^~=QyH-s?;*T#d&|yU z5KU8o+-OZ~ve!{jcKxl~Mfk z&q_>$4AmARGHCA?D(o8W7dp%3K?n5a(yP55>c<=hS(}vJjMKOx*r%BMb|tt@p2JDP z6Nz-$r8PU7SOgoNlgr)11Y;XUOf>v$Jie@pM_}qar8<0R-So}x<#nTx<2}_T2eD?D z_wwLJYcvxdw7(EogK8*Y%IkPK`2}y|{afbmJ*F1`zZnUT>VkS>KJgkSAVV=XZTc6s;HC>^4gRoqVa$U7ZGY<^&pH1gTJ=QV(-gn5a4uMM;{I=+^UK7F$QJ|2Gh7DB6{T zns6M18VHyZ>LPjot&&ia`zQ!C&|(9rJK>yOpj9*GORH#JP%X5IET7Y=VyNpLb?oAl zZo6PEPf|>Q<)&q#DUBi!mxIBGF)S`Bs)&i8PhFTPInZ;I=}kL`Pxpj&%>^9~TDAMO zObErD1^`Hh->EPp4BOv{jSC4nioc60T1+ys@W8yS>&fciAGWRvy4pr*cM0`nraD|4 zz0|yZEMB8sq*Bn#a2M^O{4DYR#L;>w;Mc+Xkp+Z2pH2i|qUZT3GC(?)!X-!K#WN{` zm7eNOTuw@=4(PQ-pv`>=hRjB_o5?$JXJqtduS$$Q^>>1T7_7kjXuJ9gW_PpxN3GkD zNOjBeGOEk=4hIXRp1}e=0d?0lo|WhZ9X_&62_&COlaLHm`)-sGm>eu;Vhq1EP7$rL zro%dAs-Tg;bBW5uNpy0&zFlE`t8Jq|N+@w&OZOVu;Po#r&=I2>EriHk7yg-mswSmoU!__-2flq}swer@5SM1s+aEzhB#7wXU^5SZNR0Vy4Pb^C|9lk;>K z=x#m+p(*S#n?JvR7tYl9da6D(y01 zBpE6h74`BZy(xO&up-!}#Qb=H!VM^l(BuP^hr}~5;RlJfT?>`$qC6jjMdx^Y#vcHfEELW4lQcfO9srx5i zh-<~V&#d>8FDgkmyC@~$jO7d8?}UAup*u}ExjEI+g0FR5jo)4^c00xsMZS_8HnL@l zh=w@Hf$RJThqMJHe4#s@;o6_SaG!TtuCPPQ&wTa7HP_jmr@&Z9T9#NotYP6q1=Wbf z0{^h{9ynE1>oR8Gpn&2=GY-Bn3#T2pWJ(@Xo6G<5~cmyiSvFq%Fu%>+U z0~#XJ!R`YZzC#m&U}Sez4@-D3c`;x>s|*V4;wq&rpt7hN5Lr_PXV4nq=|ki3pRH9- zV09JLd3{Ht20z7mzHGOgbxaR~``AUKRoP&zA8`3fsl!bB5{Iksfa7Q#*>s>{QZ}A6 z?8S{c5GerkUM2_?yN~R$eHUJj>}E>)8N#xZs?^Ellw~f% zd#8TRk?=f4PkQcbFUnDI#fj-TtsO|aCpNaH=W-J}J8%(^>(4`l*N)-JW7W3J?*9_? zgDvVMVU2cctG)h;>HcO5Gf(LF9g@0hvtP|(FE|1^cCQ^(3aq)k`xVW3FPpM6JISzd zb3pZm+2-b$L(O^3*_4U>=9_hWq~CGV9AIUD`5*lkc^GvP<3AnqL9RD_W0#m&7c}R@ zVn{}{vQ#Mr+*Wfa*PW^YAxl-o4s;MmydUfZByaGKK-*>`_EeKQbswoY)9&)khQl@V zmThuCH@Idm8-P2m>}wCw2nZn&HB^NH-)tGB4l8+UJ---$xdrKIS z-_Sc6;U7r>=)0x5;*7)gIDFsE!iWJu>!0t9weG>iMc5u0%H+KZx83jrx5@rXf$-Oa zS(i1p`w6i%@;+IB7kqUTP2n!d0?Yu6f+Ui`u>^dO<;Vuy1v&tjK{jYfZlxW?13w9h z^JWLsgB^y!PV+e*)4fqFwW5!Z4&q=dFhkYSPHus+#rT86ax*94Sy3X(FeWpq(n}LT zf&6BT>4e|73gqLGR7(hswyrk}#$(zE{6nrtw~XVAjh1We06K=C+1U(5X;^PpUADU| zfdK`ZlQ&=vMg~9vZmJA@lOgVe=LRd1P>GlhFw^l>;!sG zK`*Pbz0&WdQZ35N&O&!4Zs9Bg@~jtfAixFQh5DiU7weDi-xb&Yj44xjDF%Syl8d-K zZN9Z0_pc?FV*on$?@IDunASoMh6R%cV_|E37Xy&@%O=~4N&@5_F#r`z#Cs-$n1X)@ zc%=|h#mxu0?`_UGh8n=*ZA3fs$|!6~ZczjqbZo~aktbo8}<)b33(2#;ZvbuFx7P&%-A|z(5FH3gcmU?qZcWi$<<~sa8qGIN#_M5v{&ti zzg%1utjbK)o# zfgptoAoE}uR2H7{!hloRU06ReM~P~BrKyzNq1`8TSL?7HrjWhF?y6ndlYzpL0YoXg zb7CZRSI-@`e6yfNF-epDq=F>7tLQ2A8EvwQ;qfWnTeY~0_cnT1U8%g24W5Hn+`z0w zBZE&m=w0B_M;*UUDQ=K3aSm#;>Mo)|GINY?u1I9479{V7aT0cbEI~SOSxq5IOc`{E zP<`Vdd!S49$nYhTfNo{hxqcmOGY$93wS#QH2*iXaY3feO>VKo1O1WX)C_a`Y)>i7%xZc#ZNxruB?ZpvLn&y! z>U#rnB}~IJz*&%183n@86YvGh{EBf2mrO1Va+8~+?+>Vn(O?Z3q*gfu$qn?F{t;JM z3_;|W*XJ8<(4y&5U((t0w%dNT>5q*#`{P|(EMzr)UWG164$jqoT z=BQxQ9L+$dUT&rrpE(1;shCfNLBZ409R4B;x`bcI$uFR>4n^ps!9Zg|4X!#!PQpMP z^2w^wseR2lQzT|8!!@hVT<=;01dmliK*0Dmj7S|@VPhBB$e3xapgVXWiyq$0VRm=S z&P8#}L$gt`R>Z0sK^?Kvg2`8!Ye0fso^} zv>^vwQ9^^#)OFb!7O>Td{D8DB2T+x_EWx5W#=t6p+Da0X; z^4M~8JMhU0pAcpOOP_yYv*Hn)my?mqO7Lfetu8!c=^h{2F2`2#3gbb~ zKBOh5u?`Oea@rxts)Z9^Z%Buz0nzO*%RjR_TOWbVMkEZ&a8~Z8|3{4vC1b5ZVrySL z+B4j$uf{qt7LSZZ6NJN8(qzy1yZAGV>78byl1*}@1?Sp z_P2KM{h*oH;3OO-;d0C1qzIM#cEO8_OMsq7ltx$lx2=dtVnqb2(A4Dp#M*RNxO{V~ zP4O(L$ey{QKeuI!X9pj^n>b-wF_Ey}S4YGpJ8@7=YR1I7?jUKMU0Pe5oRLzk;T~dx z)EIlphCUNR;pd&RYXF?y_RcPR(>S{%(`lJobFqN43yqC_Ii=uMOewKxl7m&E!nr^# zb41upLrNDqlBnSF&CQ5c?Oqs7u}mPpBLYzlMc`K8+Ri6EX{ZgZ`nOnJXYr(tSVn=lAa^9;&4X@!=@^~neIW69;bkb3&DB zvl(T{zR_$(hz=7zfZ1eyolz{G6q%=^9r)nsXvgBP)+PE;e{O%zVFJ?~{X{V);qNgZ zP)6je1}Q{x|{*zY8@UEvF}3{*4AH=-O2Ga)z8I2L!!3 z@>L-YEeeR{({4A~V(|dJB*#+_h3q5Pvj?=p^{YDUnwf+Z8udip-3_em!_#2~R7 zoMt&YmSn>MfmKKRilr?B%a45iJFDm<8%A-U+Hvt<4Z$R zFDCag&@eI3-1F&RH2*{KX+(~2LNAQ;zJEBMtUErrCS~0vsbwXkBS^#cR-FGd(*%eVoU?m^WZM^`J zb7B#CK8i|&J|qMcGBAyXD%2By8e^jrJ%RyQ0ulJWVe=625`+3WsZqS2`)r)%oHqYl> zTEyUL?vOyL_~|YroVW4B`TK+M{tc`$+r-c=-#oZ+$c4`O)tl$B2u&jJvkdOg?Rrr! zlF+>5P$6Hh>6!MsO;?hM^tW(g=eTF$eFx}BaLdqnk z7mhr)a4|cboE~Ne%Cek>Ni`ho1<8`mIOMcePyENa{G&s&jb2V`*;U8b9n`*|p=W_B zZnT|YH#FvrMXpG+Nv|<)%r$1KPHSvJ)8}$}+{sGXmkoL-8; z?B%rc9!p#=r&q*SP;A~h(hYc!&2T|ZuOvCWvKZ8!<+T1wRkvk19rnJlavJW-l5l3y zF|F*FpOw>t6x2?Got#GOsO%8b{(go-yGAdt>3tJ7xfRp?;H? z*HxO=xEN%M?rDeTfb=0@p0BI3A)#z%DUM2@T@t6anByUCpG|!<?Wgp<1srK|pLbL8FM7uJ%3S|B& zAh}t|1mD{}0I^g%)>3h-&5dEexNR6pYOgb6LCM;$4A5hV<7B`J&5>N7mCFUoW~||o z8Ox0ZAwV?`x$Tp{KJtrYX#hT6ec+;CXC=<2{5EwhwSoba7N&w?oNOQLRjO#*P*#gWsbJb@s> zsUO^`UhZ|hWGVd-XBoyZ*JpGawF1_oG>7$|tEDclGlHid_N4NhZrD4dWz@;S`i?FU zfhMHTS>RHEi+<@xNQGv>)JC^QN=%!*PocGTH6O3#0xtciilInmL8oy>9wXdgJ$3W| zE}OO_u>L4v8PT(-jA@^BoxLheUPcga&1azqN8 zUL9Zv7k2zC>jDlhI8TNZG=dDF)-EPI8dMO$e8LmzWHd;*nHW{_k=(cdi~3zK0&q0> z1GZR0E>n1vU)vq=9wlaXPF6=Cg+HBMKd%s*WoX)Thh*T0=aF$b8q ztjR0s_(-2yd;#A#@?ZZUss{V9^z~!mN>iP7I4%j!o<1&_PsC`zWlf-EK7O+ z0?XSxfx;-;AuB8;BNI6#Nn2z%sA9(cH9=Q{-MAgVkBa(w`bKmo( z(jyk#&(Xg>?0ugapGM-%g~EF^ZAQ#}v`n+5dA#|{p$YUidiwm_)2ne?M^CTz%jZN- zpE=_hF=HfwJI-rV4k9&DFVYDuynH6QN%ZW0HhCcrzB`q|-%k$*l6SJw>I&~xVKEB_ zP&XJ*5L$P|fzk{-gdyZSjiYOFD#H62`JB5IM79rc3kw!&(gZS)$tKSQFv+Hg2Y6UBk$_{-`IQB%A%9r2RsrR zd2229gz(R71r#(<<|Hk)@p8`&NDy*v1WwW z?VJ^y=n{oojK$v7G-A=(R}yW6_*Uyt5@=W))JH5;C|H9Q=AD(o=bhzcv)I|0+$+N` z&Si$vNTy?T!CIHPAZ2{@T?qe4b_p(aA(9-WF2tNspAZXK!20$NTzJ0b{+02o>xJM! z9Uq-3G!H|!OzPHEMxOvj1PNb^(7R{BYn|e&Q0UC~3}_KT_}iHu?Si<1}+g+>J5>1bM?3L&oLWRe~Bf_{yB23d=I$IgYM#|?4);6P@Vs~q_@11 zu$14eBJPMu0#B&MFULq6$-nzqP}E`pYMOH*2jH|m_QV{6nFsmBR9l$T^2$*MF%O5BpT_4U z?$^N)z+a3%X-)Htwq|pRPHoRSvEPoc(!hIL@as2CmVU0AKNFJLr)`f zY4XX&&U^_pdGD~s%*T9Jz$q4pJm%}oxQmXU?}=uaSa&w-D8?;wS=r_~9&sXe!&qA$tz7|S{ND&^a1N?e)Jf{rUoZQ70WU}6{L1|%SzFXW5KgFJrMuw2cj zj_leBpSm!F9v5j@wQvL}t~T|wL>iGzwpoo0KGZoUk>r|P!734~g~0KZwp(WB!0{DW zm5KstrWs>XPQ_s#fryMCMv*0q@p%AI9o^x-=F%AZl9LSFH*JWN!D`*fBC4$6kpQx4 z@@rML4qwT{g>ic70P`jW$E6)PIzVv8iUNJH303k7*#zb6l1oyFZ~2%}S^hXJPt*He zvaw#J7(=g3SJTL1HzGa})}1>7)xpa$+yaZKSQ_DBvT`TW@slIu)?8s>7p`17nR6RK z?pgtr^C{InECYV3lxf;z7v|@`n3X;G^eH_-{ zg7%U%7$Z!V4A-~q9c+YaZ}vcEGqcdyuy}*3#lFZqGai@$>Q#$IWR&Yzam)kv#amK< zOFmmz?o(|xGmJl1C+dX_50TDCmj5LR9(5EPla=5EFtj2wZPK!%hJsC znrUiIIlJ|tq!37VAv~u!ZBur{gh>SO7jXpN2Y*%jqsjK7dP5HdB5OLx!f0=bUrT^6 zCGC%lqcCLCH~2N+qXQP^7D)>cev?hCWaPjEa|^_viW4@$8OsLK4kDPAp0OB=lR6(Y z0ygVg%*SEkMkaY@TOtS>ERaE7UENGiVs#a{JZ>hGwso`8`2Mm>xG>cNgZZXFRbU!m z9C2Q;+S}Lu&CgOiZ4G9YAZ_+mbTgrhc&&yL);73A^q;e2~cm(zt**1<3wg&hNZ%N>HDSTV0sa+H?aHo zF2klqE&L$k?;k@<;1gozk|OuD#PDT=s|#m^VA$FD!QiSu6yz7VDB>ig$;V}BSzg+u zSRh9SSlk8xth-!$L=v4v)Fs3$WIAz3VP^E#KOkp2Qu@02zW9lX^$FyWj zlWmE(lSA|?#*|q(AJZUd#x!z~Q42rPn6l8`0GV9!n1&3c$4EfORAHaTR4pF}L>m<^ zjA=EreWtQLMUV!2%Z)3zx4 zsgzl*E6?JyKfWuK4+kN$pAUi_LsTfh8Cx#K(~FTbm3)+}tnn+oN@bKV=`%Y&K0pP4 z@R7INB_3x*`=>lO$RSw8_(&ocreUy1P|04ZXpk@Af9<_5zl(Mt>h_lSmD4+agquk3 z{NW*7h++2xR>r-lRXyzN&!TOpcwcyFbqP;7C78dL9GkqU2C*Q;JwNG0-r9pR7p)@C zyR?1*?@&EzO+T}8atl?ddNA5}3pGS4hRVs$#PdTA1Kxv#Gcg6Y-~a+}#z{TK zL9KS9UlR&1gTkIE2lF%&rohvH7-n&$xp+J+7OlWp0VvPJuE^yXSQimlcw>0u+*GQX z>qOfk@A-VYjg2;bPwRF6J%nim%mh*p584mC;;w=e*R$cb73v<z$wOx&lc)A+E>yQ}kYVWH`J-|X(SqjO4UlNu>Ho{?xb+UFE%s9h2W&vdmg z%{yX-=f=bea*1EoAE!NzUsabYnV&5z=cOeDGI@=HhtLAl$e?g^0&mbT5U=P<5fU*% z14pH(JkbZ6=d^N6_<}Z8x6^f!ulwU#9pgXblC;lfKc@C9{N%qqN$${YTlXd!kYneML6z68w<}BhK0j+oh|zfyW#p;aL($32`2ydZ?;Bui0)x8R?AQ z+T=lca9dlUhwaUOb&@um7XsujL(hUw#Vtt~L@`G+OpJ}iJ$c`j1;q)ZAC8yeC#C61{tE+YNZ z8es@zQZPG7B#trLRI}!BAT=T^=;-1i@=&drT#9w}C}mP$mv3ZJuwZgRE}Y{=?U6|# zzBvI5DXK3GXq@MUF~}IB^ajHb!XAFvx5QC|Rx2zPKhc0&a5$6${ zD(4XdD=;f^4#5slw9ykbVAJi5aacV+gM7ksEz5GjIpM-GQ|&PDX5>h!k<#<(IR7T9 zQwPu0@iVFmZvfGrQI9-=v$$)}$+|nyy5xE8S<5L|Ccl5CY1<5m6d>M>mp47cu4KynH3j2j|L{Z2e1ITX*KU?QG(0ZHRVb1w?$)M==??<15IFjFvKE`%~h zZiHpHO`=E)*q6oX0vkk3D69BCJVb(HE#vR+Wucx+Gn7IUlh0Nf-{n9_ELTagRqg9z z)uo#&OEx}W>4NM}EQ1%T$1s@sxr{ODlC4)EE}K&q3-Dw61?Og>oo2B>C8sV$K7A&2 z{^3!-7Dcg0oMrj1Ny&$+`M5n?)tB=MjouH?@dS|?XRi66lzQVTP-U#mc&W%0C+jqSQ zXRx@{JXZgw#7SGww#EH z$m7^>9I>cV4+9n!LhXYU+_C*z?gPr0QBNsHm-0s8z&BgRzNw6oMGHS*9P~-7i*^^m z|NrbffPEky&Xp3z?Kks#$T?}+ao_OJc)R_RvClv8VSc`Ge|~Y@@%9Z5u0M{xW-pKW>RsMMV`fAB`sZ2>zuS$HU%6!K`UE&()P=!F0{yN8o1OVPpalTsR|e5_TKDEtK`5cpC1jvw7J$ti&qPcYNP40yH6;Fws}-3d?fF z5EIOE4{Gni(u74`@?LE*R@6s=^x?4)-a&waaSENuOQQzXeb-Z%*Gc&Z;ahZu?-;mW z^3ofA@Hi_U_gySKz?s50&x~D*bgRr93>-|<2=>`Q5sV)b^?^XQ#qQ#CDtcgS2{~;rmoL>GH7M zgokZZZnS114_ao;Eu4>Q5FvMO9s7H1a5uULcU z#=Dgg<1{2jV0&v=7DXXL9(l5pl~q?+!FP~}O$Nt-PFM$gewbl!5iw|A0|3EDCBm6j zxj+co$YK}86dE$)F6N%=j)82b`;F_LvpGy7a-Zr*9vp`$ePXSC!h~7)q$_w5TX;W? zidP2V&KsJw8!oM6Nv_|6<;Bn^INAS_DaZwiu4M_+L5&>8c9eUmCd74^%@yXD+np#u z;WyURko1pO3y$C&ia_`k(1;o^P)8zLJl#bl#%`NdZzaY9Cp57^|k`i5CY^m-nS-tCwQU_dGdBoiuY#t1k07>x`#W7x|0T)zgb- z@N4~2Ol*Ek5^IVbb}`L5?xi)z@nM@fksfH#JcO$_!EXspNNMj$-Q@Qr2`f{x5DBg8 zkq8MLvcu&9upQR8Z!X|bTI2EpB#jF|KmvAzo?$=J=w@fadp6XQ{3=NV2wu(g65g0G zDs@Z~o3I;irMDsj#2UTxRt&;hk-b%&*(fy_<{>y&)QjziU)F}*i2AARR=pD{l^3$W zTl9VGr5iyx{uyX%+(#For1Usr$%jkJq=Gfl_>F^d9Pvnlv@k5DpiDpAhKiG(r0NJ% zs(~`k0lb(jaD8Ih2?e|*c!HZ#7Ci$skzu77hV8d#i)lesJPxi%qEXXG(iJ)tnuer? z(TOt((vqE<#N<Xe>h|%DmzUI+Okf475I1KimDqb6 zhY(H&m#vNIzXx4gGVaLeSx;lB;|imj=TXw-4?0x-4lng7-DB1*cF*cz5SSGmMYzfU zWEJu!MhSg1S_BbPgh;~jFi0)a3Ps2ysF8ey=LFQvSO``cZZ`M|5XS9EX^c?rjt|I0 zv8M#ZV>qDFHP-Kt{}q_lnQ+j~cIqQ%RYrQ+Rm3Z^8lZC}=$z3ii3T^v@2RRm&$d|4 z0*%AJ$hP8M#s#Gvf+iB<()3|rXKChO^k|W%P(Z|ZTKl}<@7o{P_F_S05>;dSiE<2x z45(gYKwvI2Am>eDK=CXXkhwqTWf=c1<3er0fcTXe5EzyL`LS;C!(g$N#bAt+MQ(Dt zz+(8_v6!@{g4IJV89OUFp5s}n)FaOs|4Xa_fDfg@@fnMfArfi)+1EahdcEYi7>|Eq zgvbaj!-a)*LDnbx6xIc)GhX)hZ~oXP_PRZlySqO8P2UBYhC#{@C_D+fzI;j%$oLmX z$s6K}o!R{Nbw4y)<;5po_V$mRyK@`S1?}rzh4zw{sw@j!Ee*Cwd3=AdGh5^DOHV1q zD%S!xy}#Hw!~0d=pS;@gCAOl(EjRz% ztDZ;^^YEXpCbDM(;&nfC8+6y+_i8BZQ2S*rX}2HUl@E335*|^-l`p^pJ$TV>*aAh6 z{5HdUfAJy`(w?RR9HQZSF!Z7`f(8Nd=?k}G?;LnXd*qYl0de9NLh_pT7p^e}c}EYk z1!hbnljLhF6yd_r4fuW&DuisgvLFmw@cBR>=@e6AL99x zX6eo;&30||Uq3%J_~*I7GBw!Lx3!0fL;ha~k_EDW{aE{C7J+yMr#`qT{B-5`FU#KM z8WB3G+)6#eX3}0iy7ABUL`0O{seQ@ON#D5KSM}75=xKY?Ywm*K?+O;q!Awji)#>r) zmQke)ipu}LjIl?Jus$u)p62w$hud&z!Ve@#9fG7#`bo9x9S#*QmL#s#wchwoQYa5x zQ|e6mFtZuu7WJ8Dh!=!~zwuQPeb^S$lEMt`vvhLtQ=>k{yw-zhnBjHQr0QsBObQUG zQ6d*^7MyLamb*7ol_-OimJR{5dkf$CZ!Lll=01c{DoPKK&IskS`g;=xSf z1ceb(=X8~J2kn<}VXmkj!r$e0I!3E&I9kUCO))LO5377NBWLml17s+AnEZ$2BZz%>|79ERq$V^y7R+B30V?9(l=^SB~>DuE&UCAG{Eg z9yTa>IQS%Aa@U)*yeTvM?$OBb(}4D9d1EPmCg1O=g~EE;hf7y?Noy0$tL7 z@B(Fqof(5rGF%hm=4c|5y3fFrRR$p=*b^bw<8Li0qx!2>S2sK9T5ywyK<8y7Az;~x z$e@mO$bf0H zv9&huN80+LJneOf8%Ay=@1Hbvz|IJ zUg`vQU-M3kyH0#y-ieJz>%>Ot1nz7*fqq~oHqO|I_MUg2bg$UB{Rltom3k5@?+xY> z1H-SSK7rz5_KzHxjjm7M0!4+rroAKCeX@5uTecJvj0mhZ=ekiY72_xLL)b4RofP9g zA5~jv6`#W0+A^O&2r=y=$>@yf6qG;P!_s)R<)^%(0;mPMK z0XJaOKra}lKk*=6Tx_LX&hd;jG~1aem-Y-au@eN5NjPHUU4i$>s4$gBBK^p*2EPv9 zpBAuOYH=fUG#hH^F?ry21F};b1>j*Z)cw$>g=8&9TFBX6l8rQbS<+%c2UvzM5Y6Kjm9xg&k~T8A)BqeWxTN`&sD;(~h6OmqNxcqb6HUw%_|OEyKr z@E|cigch6*x?ae?!$9&jjZTcA4#Yf$IutPL@qT*>wdN5j7ly|fBIHwSVs#25*$nYw zi)DLv*WxEv=NqdG>j zzQ6xUIX22EOV#IWLTm=JX`5y&C+!e*@@HI7YXGWUQNU~+X3*NXg1{*KhcQ07p4UTPW z17Vd$nk#AWXhzK9g;fTUkOTr`gN8sLp@i&7A5BO?L)vC(R!CpArfIg47uuJFq-oku z(}wr`oqO--O14uHl0L!lx#!-q{LlaV&wo4rd#AsO8_Y=|XOIRlt8hD^!=oVcQ|k(! z0csyoMOcDdnxJ?G$ko1x^Bd7CA_L-}d z+}p{s7Ws~U{3dL5)F*wni?`8!VqPa_fc}R#2XFX=j^X%JWvJ_!Lz-7Cs`QG*)QE$X z5xueH{`AJy=|g4g$2B%OiWxhmu^}>Ms~scEz%qP8+pMINI3TumvOc!Y{pA&h`%82U zDBJ)|o%f;&FeO8;=0{n1`J>->g=u8OK=7lrR`8>>nDo4iV61`26#u8XdF{aey;@H> zl&_rGL6LOIa1}ZVgsT6?A#~0}?cJf(yvM(uhTE|UZapk( zH9agZuVC2;WBEDuZ@(x&D_kWk!-b8DW;I0h&st$DF>{7g%RUjo>AdHo5%0A(e7?9p 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 Date: Mon, 12 Aug 2024 16:52:32 +0200 Subject: [PATCH 09/40] Add cosmwasm_2_2 capability --- tests/integration/module_test.go | 2 +- x/wasm/keeper/capabilities.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/integration/module_test.go b/tests/integration/module_test.go index 1155968585..87693b8326 100644 --- a/tests/integration/module_test.go +++ b/tests/integration/module_test.go @@ -66,7 +66,7 @@ func setupTest(t *testing.T) testData { ctx, keepers := keeper.CreateTestInput(t, false, []string{ "iterator", "staking", "stargate", "cosmwasm_1_1", "cosmwasm_1_2", "cosmwasm_1_3", - "cosmwasm_1_4", "cosmwasm_2_0", "cosmwasm_2_1", + "cosmwasm_1_4", "cosmwasm_2_0", "cosmwasm_2_1", "cosmwasm_2_2", }) encConf := keeper.MakeEncodingConfig(t) queryRouter := baseapp.NewGRPCQueryRouter() diff --git a/x/wasm/keeper/capabilities.go b/x/wasm/keeper/capabilities.go index d312370a58..47fbf2f7db 100644 --- a/x/wasm/keeper/capabilities.go +++ b/x/wasm/keeper/capabilities.go @@ -17,5 +17,6 @@ func BuiltInCapabilities() []string { "cosmwasm_1_4", "cosmwasm_2_0", "cosmwasm_2_1", + "cosmwasm_2_2", } } From 9b9f507693f32348074b2b6e9f53a3461f80acb1 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Mon, 12 Aug 2024 16:59:24 +0200 Subject: [PATCH 10/40] Adjust to IBC fee renamings --- tests/e2e/ibc_fees_test.go | 22 +++++++++------------- tests/e2e/testdata/reflect_2_2.wasm | Bin 395862 -> 403163 bytes x/wasm/keeper/handler_plugin_encoders.go | 10 +++++----- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/tests/e2e/ibc_fees_test.go b/tests/e2e/ibc_fees_test.go index fe83227705..e3c28da3b0 100644 --- a/tests/e2e/ibc_fees_test.go +++ b/tests/e2e/ibc_fees_test.go @@ -274,14 +274,12 @@ func TestIBCFeesReflect(t *testing.T) { PayPacketFee: &wasmvmtypes.PayPacketFeeMsg{ Fee: wasmvmtypes.IBCFee{ AckFee: oneToken, - RecvFee: oneToken, + ReceiveFee: oneToken, TimeoutFee: []wasmvmtypes.Coin{}, }, - Relayers: []string{}, - Src: wasmvmtypes.IBCEndpoint{ - PortID: ibctransfertypes.PortID, - ChannelID: path.EndpointA.ChannelID, - }, + Relayers: []string{}, + PortID: ibctransfertypes.PortID, + ChannelID: path.EndpointA.ChannelID, }, }, }, @@ -310,15 +308,13 @@ func TestIBCFeesReflect(t *testing.T) { PayPacketFeeAsync: &wasmvmtypes.PayPacketFeeAsyncMsg{ Fee: wasmvmtypes.IBCFee{ AckFee: []wasmvmtypes.Coin{}, - RecvFee: oneToken, + ReceiveFee: oneToken, TimeoutFee: oneToken, }, - Relayers: []string{}, - Sequence: pendingIncentivisedPackages[0].PacketId.Sequence, - Src: wasmvmtypes.IBCEndpoint{ - PortID: ibctransfertypes.PortID, - ChannelID: path.EndpointA.ChannelID, - }, + Relayers: []string{}, + Sequence: pendingIncentivisedPackages[0].PacketId.Sequence, + PortID: ibctransfertypes.PortID, + ChannelID: path.EndpointA.ChannelID, }, }, }, diff --git a/tests/e2e/testdata/reflect_2_2.wasm b/tests/e2e/testdata/reflect_2_2.wasm index 1923ce863e4135186e67c53ecabe74b39b067e42..31ec3140639a0d03ef156215c10e9a3001514474 100644 GIT binary patch literal 403163 zcmd?S3)EiMS>Jgs@8x@M-}mZ%u`HeQ`jagM3)>;Fd`ZDawS1YTt6^4VtuU)=*(O$F zONrwsPMXYO#d6~i1q@ZFlPJYdg&L#;r=zr{QD!_Wh4Fw0?u=3l2x>qXOmRv|4P>Z+ zbeP}&dG}Nms{p{x?cfI=^X_6%Av*{&wW)D7?KB#|_ zJM#zaT!-Y&)c)sIi=Ujgb>P^sBPVv9`*VIl_qySftNu7A*60WBOs02}JCpdp2dtS7 zaOlTY)DG`(DSPk(djA8uGML^LxWmRz1OEg1xBcJ;_>*K`$k*ii?t5?d?(eV)?B+Y(`QCj=OTR~V-F^4LJKlTO+wZ;mE}pShR@t?;-gVzQ z@4NS{-1(pOCCT*Jd*1VoyY8#6t^eM)zx$fk-tisRU314>Z+qLpeQ%?cJKlDUzp(Pn z*ZR%P(>L$G>)wO+-uJdU_Py&pboapflb*U;JAL4uyWV}z9S^)y4PWrqYyH;v-TU5p z|7%}=?SX6Vc<;W0_x^+TCz%@CIK6yu-&+~}!8`7M&-WhK_x@z0+wrY~E5F6%mEM}) zclT>w|N3jLpXq6By!gF$J@D3hW^T3b-uJ!ld7C4C@UHjlJNW)P-g?hn_udEEPvk$9 z&!u@jx2l_W=JK4`N>l#t@NcWrN?ZEbO7l*d=yEsj=JscG-syC8C2esx^~-vapL!$b zKl{g?woBYhTS?NgKd?iVb$F4!J6XohUYmcG{ps*DU2|QX2nfBR9_AC8Zl gp18 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

TiHFnYygxWQp{3@;BH6&9;&T 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%0A(e7?9p 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 Date: Fri, 13 Sep 2024 17:58:14 +0200 Subject: [PATCH 11/40] Add WasmLimitsConfig query --- docs/proto/proto-docs.md | 31 ++ proto/cosmwasm/wasm/v1/query.proto | 16 + x/wasm/keeper/querier.go | 6 + x/wasm/types/query.pb.go | 551 +++++++++++++++++++++++------ x/wasm/types/query.pb.gw.go | 83 +++-- 5 files changed, 562 insertions(+), 125 deletions(-) diff --git a/docs/proto/proto-docs.md b/docs/proto/proto-docs.md index c72708524f..d5c5cc62ae 100644 --- a/docs/proto/proto-docs.md +++ b/docs/proto/proto-docs.md @@ -85,6 +85,8 @@ - [QueryRawContractStateResponse](#cosmwasm.wasm.v1.QueryRawContractStateResponse) - [QuerySmartContractStateRequest](#cosmwasm.wasm.v1.QuerySmartContractStateRequest) - [QuerySmartContractStateResponse](#cosmwasm.wasm.v1.QuerySmartContractStateResponse) + - [QueryWasmLimitsConfigRequest](#cosmwasm.wasm.v1.QueryWasmLimitsConfigRequest) + - [QueryWasmLimitsConfigResponse](#cosmwasm.wasm.v1.QueryWasmLimitsConfigResponse) - [Query](#cosmwasm.wasm.v1.Query) @@ -1421,6 +1423,34 @@ Query/SmartContractState RPC method + + + +### QueryWasmLimitsConfigRequest +QueryWasmLimitsConfigRequest is the request type for the +Query/WasmLimitsConfig RPC method. + + + + + + + + +### QueryWasmLimitsConfigResponse +QueryWasmLimitsConfigResponse is the response type for the +Query/WasmLimitsConfig RPC method. It contains the MsgPack encoded limits for +static validation of Wasm files. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `config` | [bytes](#bytes) | | | + + + + + @@ -1447,6 +1477,7 @@ Query provides defines the gRPC querier service | `PinnedCodes` | [QueryPinnedCodesRequest](#cosmwasm.wasm.v1.QueryPinnedCodesRequest) | [QueryPinnedCodesResponse](#cosmwasm.wasm.v1.QueryPinnedCodesResponse) | PinnedCodes gets the pinned code ids | GET|/cosmwasm/wasm/v1/codes/pinned| | `Params` | [QueryParamsRequest](#cosmwasm.wasm.v1.QueryParamsRequest) | [QueryParamsResponse](#cosmwasm.wasm.v1.QueryParamsResponse) | Params gets the module params | GET|/cosmwasm/wasm/v1/codes/params| | `ContractsByCreator` | [QueryContractsByCreatorRequest](#cosmwasm.wasm.v1.QueryContractsByCreatorRequest) | [QueryContractsByCreatorResponse](#cosmwasm.wasm.v1.QueryContractsByCreatorResponse) | ContractsByCreator gets the contracts by creator | GET|/cosmwasm/wasm/v1/contracts/creator/{creator_address}| +| `WasmLimitsConfig` | [QueryWasmLimitsConfigRequest](#cosmwasm.wasm.v1.QueryWasmLimitsConfigRequest) | [QueryWasmLimitsConfigResponse](#cosmwasm.wasm.v1.QueryWasmLimitsConfigResponse) | WasmLimitsConfig gets the configured limits for static validation of Wasm files, encoded in MsgPack. | GET|/cosmwasm/wasm/v1/wasm-limits-config| | `BuildAddress` | [QueryBuildAddressRequest](#cosmwasm.wasm.v1.QueryBuildAddressRequest) | [QueryBuildAddressResponse](#cosmwasm.wasm.v1.QueryBuildAddressResponse) | BuildAddress builds a contract address | GET|/cosmwasm/wasm/v1/contract/build_address| diff --git a/proto/cosmwasm/wasm/v1/query.proto b/proto/cosmwasm/wasm/v1/query.proto index acf1ccd8b5..a6e54347a0 100644 --- a/proto/cosmwasm/wasm/v1/query.proto +++ b/proto/cosmwasm/wasm/v1/query.proto @@ -90,6 +90,13 @@ service Query { "/cosmwasm/wasm/v1/contracts/creator/{creator_address}"; } + // WasmLimitsConfig gets the configured limits for static validation of Wasm + // files, encoded in MsgPack. + rpc WasmLimitsConfig(QueryWasmLimitsConfigRequest) + returns (QueryWasmLimitsConfigResponse) { + option (google.api.http).get = "/cosmwasm/wasm/v1/wasm-limits-config"; + } + // BuildAddress builds a contract address rpc BuildAddress(QueryBuildAddressRequest) returns (QueryBuildAddressResponse) { @@ -317,6 +324,15 @@ message QueryContractsByCreatorResponse { cosmos.base.query.v1beta1.PageResponse pagination = 2; } +// QueryWasmLimitsConfigRequest is the request type for the +// Query/WasmLimitsConfig RPC method. +message QueryWasmLimitsConfigRequest {} + +// QueryWasmLimitsConfigResponse is the response type for the +// Query/WasmLimitsConfig RPC method. It contains the MsgPack encoded limits for +// static validation of Wasm files. +message QueryWasmLimitsConfigResponse { bytes config = 1; } + // QueryBuildAddressRequest is the request type for the Query/BuildAddress RPC // method. message QueryBuildAddressRequest { diff --git a/x/wasm/keeper/querier.go b/x/wasm/keeper/querier.go index 8da91c252e..ef0e488d43 100644 --- a/x/wasm/keeper/querier.go +++ b/x/wasm/keeper/querier.go @@ -439,6 +439,12 @@ func ensurePaginationParams(req *query.PageRequest) (*query.PageRequest, error) return req, nil } +func (q GrpcQuerier) WasmLimitsConfig(c context.Context, req *types.QueryWasmLimitsConfigRequest) (*types.QueryWasmLimitsConfigResponse, error) { + return &types.QueryWasmLimitsConfigResponse{ + Config: []byte{}, // TODO: implement + }, nil +} + func (q GrpcQuerier) BuildAddress(c context.Context, req *types.QueryBuildAddressRequest) (*types.QueryBuildAddressResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "empty request") diff --git a/x/wasm/types/query.pb.go b/x/wasm/types/query.pb.go index 45d4f796ff..37e08faf14 100644 --- a/x/wasm/types/query.pb.go +++ b/x/wasm/types/query.pb.go @@ -1171,6 +1171,93 @@ func (m *QueryContractsByCreatorResponse) XXX_DiscardUnknown() { var xxx_messageInfo_QueryContractsByCreatorResponse proto.InternalMessageInfo +// QueryWasmLimitsConfigRequest is the request type for the +// Query/WasmLimitsConfig RPC method. +type QueryWasmLimitsConfigRequest struct{} + +func (m *QueryWasmLimitsConfigRequest) Reset() { *m = QueryWasmLimitsConfigRequest{} } +func (m *QueryWasmLimitsConfigRequest) String() string { return proto.CompactTextString(m) } +func (*QueryWasmLimitsConfigRequest) ProtoMessage() {} +func (*QueryWasmLimitsConfigRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9677c207036b9f2b, []int{25} +} + +func (m *QueryWasmLimitsConfigRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} + +func (m *QueryWasmLimitsConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryWasmLimitsConfigRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} + +func (m *QueryWasmLimitsConfigRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryWasmLimitsConfigRequest.Merge(m, src) +} + +func (m *QueryWasmLimitsConfigRequest) XXX_Size() int { + return m.Size() +} + +func (m *QueryWasmLimitsConfigRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryWasmLimitsConfigRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryWasmLimitsConfigRequest proto.InternalMessageInfo + +// QueryWasmLimitsConfigResponse is the response type for the +// Query/WasmLimitsConfig RPC method. It contains the MsgPack encoded limits for +// static validation of Wasm files. +type QueryWasmLimitsConfigResponse struct { + Config []byte `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` +} + +func (m *QueryWasmLimitsConfigResponse) Reset() { *m = QueryWasmLimitsConfigResponse{} } +func (m *QueryWasmLimitsConfigResponse) String() string { return proto.CompactTextString(m) } +func (*QueryWasmLimitsConfigResponse) ProtoMessage() {} +func (*QueryWasmLimitsConfigResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9677c207036b9f2b, []int{26} +} + +func (m *QueryWasmLimitsConfigResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} + +func (m *QueryWasmLimitsConfigResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryWasmLimitsConfigResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} + +func (m *QueryWasmLimitsConfigResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryWasmLimitsConfigResponse.Merge(m, src) +} + +func (m *QueryWasmLimitsConfigResponse) XXX_Size() int { + return m.Size() +} + +func (m *QueryWasmLimitsConfigResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryWasmLimitsConfigResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryWasmLimitsConfigResponse proto.InternalMessageInfo + // QueryBuildAddressRequest is the request type for the Query/BuildAddress RPC // method. type QueryBuildAddressRequest struct { @@ -1189,7 +1276,7 @@ func (m *QueryBuildAddressRequest) Reset() { *m = QueryBuildAddressReque func (m *QueryBuildAddressRequest) String() string { return proto.CompactTextString(m) } func (*QueryBuildAddressRequest) ProtoMessage() {} func (*QueryBuildAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9677c207036b9f2b, []int{25} + return fileDescriptor_9677c207036b9f2b, []int{27} } func (m *QueryBuildAddressRequest) XXX_Unmarshal(b []byte) error { @@ -1234,7 +1321,7 @@ func (m *QueryBuildAddressResponse) Reset() { *m = QueryBuildAddressResp func (m *QueryBuildAddressResponse) String() string { return proto.CompactTextString(m) } func (*QueryBuildAddressResponse) ProtoMessage() {} func (*QueryBuildAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9677c207036b9f2b, []int{26} + return fileDescriptor_9677c207036b9f2b, []int{28} } func (m *QueryBuildAddressResponse) XXX_Unmarshal(b []byte) error { @@ -1294,6 +1381,8 @@ func init() { proto.RegisterType((*QueryParamsResponse)(nil), "cosmwasm.wasm.v1.QueryParamsResponse") proto.RegisterType((*QueryContractsByCreatorRequest)(nil), "cosmwasm.wasm.v1.QueryContractsByCreatorRequest") proto.RegisterType((*QueryContractsByCreatorResponse)(nil), "cosmwasm.wasm.v1.QueryContractsByCreatorResponse") + proto.RegisterType((*QueryWasmLimitsConfigRequest)(nil), "cosmwasm.wasm.v1.QueryWasmLimitsConfigRequest") + proto.RegisterType((*QueryWasmLimitsConfigResponse)(nil), "cosmwasm.wasm.v1.QueryWasmLimitsConfigResponse") proto.RegisterType((*QueryBuildAddressRequest)(nil), "cosmwasm.wasm.v1.QueryBuildAddressRequest") proto.RegisterType((*QueryBuildAddressResponse)(nil), "cosmwasm.wasm.v1.QueryBuildAddressResponse") } @@ -1301,107 +1390,111 @@ func init() { func init() { proto.RegisterFile("cosmwasm/wasm/v1/query.proto", fileDescriptor_9677c207036b9f2b) } var fileDescriptor_9677c207036b9f2b = []byte{ - // 1585 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x98, 0xcd, 0x6f, 0x13, 0xc7, - 0x1b, 0xc7, 0x3d, 0xc1, 0x71, 0xec, 0x27, 0xf9, 0xfd, 0x70, 0xa6, 0x01, 0x8c, 0x01, 0x3b, 0x5a, - 0x20, 0x04, 0x43, 0xbc, 0x24, 0x94, 0x22, 0xe8, 0xa1, 0xb2, 0x03, 0x25, 0xa0, 0x52, 0x82, 0x91, - 0x5a, 0xa9, 0x55, 0xe5, 0x8e, 0xed, 0x89, 0xb3, 0xad, 0xbd, 0x6b, 0x76, 0x26, 0x84, 0x28, 0x0a, - 0x07, 0x4e, 0x95, 0x7a, 0x68, 0xab, 0x9e, 0x4a, 0xa5, 0xb6, 0x87, 0x1e, 0xa0, 0xb4, 0x12, 0x52, - 0x2b, 0x15, 0x55, 0xea, 0x3d, 0x47, 0xd4, 0x5e, 0x7a, 0xb2, 0xda, 0x50, 0x89, 0x8a, 0x3f, 0x81, - 0x53, 0xb5, 0xb3, 0xb3, 0xde, 0xf5, 0xcb, 0xda, 0x26, 0xf8, 0xd0, 0x8b, 0xb5, 0xbb, 0xf3, 0x3c, - 0xcf, 0x7c, 0xe6, 0x3b, 0x6f, 0xcf, 0x63, 0xd8, 0x5f, 0x34, 0x58, 0x75, 0x95, 0xb0, 0xaa, 0x2a, - 0x7e, 0x6e, 0xcc, 0xaa, 0xd7, 0x57, 0xa8, 0xb9, 0x96, 0xae, 0x99, 0x06, 0x37, 0x70, 0xd4, 0x69, - 0x4d, 0x8b, 0x9f, 0x1b, 0xb3, 0xf1, 0x89, 0xb2, 0x51, 0x36, 0x44, 0xa3, 0x6a, 0x3d, 0xd9, 0x76, - 0xf1, 0xf6, 0x28, 0x7c, 0xad, 0x46, 0x99, 0xd3, 0x5a, 0x36, 0x8c, 0x72, 0x85, 0xaa, 0xa4, 0xa6, - 0xa9, 0x44, 0xd7, 0x0d, 0x4e, 0xb8, 0x66, 0xe8, 0x4e, 0x6b, 0xca, 0xf2, 0x35, 0x98, 0x5a, 0x20, - 0x8c, 0xda, 0x9d, 0xab, 0x37, 0x66, 0x0b, 0x94, 0x93, 0x59, 0xb5, 0x46, 0xca, 0x9a, 0x2e, 0x8c, - 0xa5, 0xed, 0x3e, 0x69, 0xeb, 0x98, 0x79, 0x61, 0xe3, 0xe3, 0xa4, 0xaa, 0xe9, 0x86, 0x2a, 0x7e, - 0xe5, 0xa7, 0xbd, 0xb6, 0x7d, 0xde, 0x06, 0xb6, 0x5f, 0xec, 0x26, 0xe5, 0x4d, 0x88, 0x5d, 0xb5, - 0x9c, 0xe7, 0x0d, 0x9d, 0x9b, 0xa4, 0xc8, 0x2f, 0xea, 0x4b, 0x46, 0x8e, 0x5e, 0x5f, 0xa1, 0x8c, - 0xe3, 0x39, 0x18, 0x21, 0xa5, 0x92, 0x49, 0x19, 0x8b, 0xa1, 0x49, 0x34, 0x1d, 0xc9, 0xc6, 0x7e, - 0xfb, 0x69, 0x66, 0x42, 0xba, 0x67, 0xec, 0x96, 0x6b, 0xdc, 0xd4, 0xf4, 0x72, 0xce, 0x31, 0x54, - 0x7e, 0x40, 0xb0, 0xb7, 0x43, 0x40, 0x56, 0x33, 0x74, 0x46, 0xb7, 0x13, 0x11, 0xbf, 0x05, 0xff, - 0x2b, 0xca, 0x58, 0x79, 0x4d, 0x5f, 0x32, 0x62, 0x43, 0x93, 0x68, 0x7a, 0x74, 0x2e, 0x91, 0x6e, - 0x9d, 0x94, 0xb4, 0xb7, 0xcb, 0xec, 0xf8, 0x66, 0x3d, 0x19, 0x78, 0x54, 0x4f, 0xa2, 0xa7, 0xf5, - 0x64, 0xe0, 0xee, 0x93, 0x07, 0x29, 0x94, 0x1b, 0x2b, 0x7a, 0x0c, 0xce, 0x06, 0xff, 0xf9, 0x26, - 0x89, 0x94, 0x2f, 0x10, 0xec, 0x6b, 0xe2, 0x5d, 0xd0, 0x18, 0x37, 0xcc, 0xb5, 0x17, 0xd0, 0x00, - 0xbf, 0x0e, 0xe0, 0x4e, 0x99, 0xc4, 0x9d, 0x4a, 0x4b, 0x1f, 0x6b, 0x7e, 0xd3, 0xf6, 0x7c, 0xc9, - 0xf9, 0x4d, 0x2f, 0x92, 0x32, 0x95, 0xfd, 0xe5, 0x3c, 0x9e, 0xca, 0x43, 0x04, 0xfb, 0x3b, 0xb3, - 0x49, 0x39, 0xaf, 0xc0, 0x08, 0xd5, 0xb9, 0xa9, 0x51, 0x0b, 0x6e, 0xc7, 0xf4, 0xe8, 0x5c, 0xca, - 0x5f, 0x94, 0x79, 0xa3, 0x44, 0xa5, 0xff, 0x79, 0x9d, 0x9b, 0x6b, 0xd9, 0xc8, 0x66, 0x43, 0x18, - 0x27, 0x0a, 0xbe, 0xd0, 0x81, 0xfc, 0x48, 0x4f, 0x72, 0x9b, 0xa6, 0x09, 0xfd, 0x56, 0x8b, 0xaa, - 0x2c, 0xbb, 0x66, 0x01, 0x38, 0xaa, 0xee, 0x81, 0x91, 0xa2, 0x51, 0xa2, 0x79, 0xad, 0x24, 0x54, - 0x0d, 0xe6, 0x42, 0xd6, 0xeb, 0xc5, 0xd2, 0xc0, 0xa4, 0xfb, 0xba, 0x55, 0xba, 0x06, 0x80, 0x94, - 0xee, 0x15, 0x88, 0x38, 0xab, 0xc1, 0x16, 0xaf, 0xdb, 0xcc, 0xba, 0xa6, 0x83, 0x53, 0xe8, 0x8e, - 0x43, 0x98, 0xa9, 0x54, 0x1c, 0xc8, 0x6b, 0x9c, 0x70, 0xfa, 0x5f, 0x58, 0x79, 0xdf, 0x22, 0x38, - 0xe0, 0x03, 0x27, 0xf5, 0x3b, 0x0b, 0xa1, 0xaa, 0x51, 0xa2, 0x15, 0x67, 0xe5, 0xed, 0x69, 0x5f, - 0x79, 0x97, 0xad, 0x76, 0xef, 0x32, 0x93, 0x1e, 0x83, 0xd3, 0xf0, 0xba, 0x94, 0x30, 0x47, 0x56, - 0x07, 0x26, 0xe1, 0x01, 0x00, 0xd1, 0x7b, 0xbe, 0x44, 0x38, 0x11, 0x70, 0x63, 0xb9, 0x88, 0xf8, - 0x72, 0x8e, 0x70, 0xa2, 0x9c, 0x94, 0xc2, 0xb4, 0x77, 0x29, 0x85, 0xc1, 0x10, 0x14, 0x9e, 0x48, - 0x78, 0x8a, 0x67, 0xe5, 0x4b, 0x04, 0x09, 0xe1, 0x75, 0xad, 0x4a, 0x4c, 0x3e, 0x30, 0xd4, 0xf3, - 0xed, 0xa8, 0xd9, 0xa9, 0x67, 0xf5, 0x24, 0xf6, 0xc0, 0x5d, 0xa6, 0x8c, 0x91, 0x32, 0xbd, 0xf3, - 0xe4, 0x41, 0x6a, 0x54, 0xd3, 0x2b, 0x9a, 0x4e, 0xf3, 0x1f, 0x30, 0x43, 0xf7, 0x0e, 0xe9, 0x3d, - 0x48, 0xfa, 0xc2, 0x35, 0x66, 0xdb, 0x33, 0xa8, 0xbe, 0xfb, 0xb0, 0x07, 0x7f, 0x0c, 0xa2, 0x72, - 0x27, 0xf6, 0xde, 0xff, 0x8a, 0x0a, 0x13, 0x0d, 0x63, 0xef, 0x55, 0xe4, 0xeb, 0xf0, 0xdd, 0x10, - 0xec, 0x6a, 0xf1, 0x90, 0xcc, 0x07, 0x5b, 0x5c, 0xb2, 0xb0, 0x55, 0x4f, 0x86, 0x84, 0xd9, 0xb9, - 0xc6, 0x79, 0x33, 0x07, 0x23, 0x45, 0x93, 0x12, 0x6e, 0x98, 0x42, 0xbf, 0xae, 0xb2, 0x4b, 0x43, - 0xbc, 0x08, 0xe1, 0xe2, 0x32, 0x2d, 0x7e, 0xc8, 0x56, 0xaa, 0xb1, 0x1d, 0x42, 0x90, 0x97, 0x9f, - 0xd5, 0x93, 0x27, 0xca, 0x1a, 0x5f, 0x5e, 0x29, 0xa4, 0x8b, 0x46, 0x55, 0x2d, 0x1a, 0x55, 0xca, - 0x0b, 0x4b, 0xdc, 0x7d, 0xa8, 0x68, 0x05, 0xa6, 0x16, 0xd6, 0x38, 0x65, 0xe9, 0x05, 0x7a, 0x33, - 0x6b, 0x3d, 0xe4, 0x1a, 0x51, 0xf0, 0xfb, 0xb0, 0x5b, 0xd3, 0x19, 0x27, 0x3a, 0xd7, 0x08, 0xa7, - 0xf9, 0x1a, 0x35, 0xab, 0x1a, 0x63, 0xd6, 0xe6, 0x08, 0xfa, 0xdd, 0x75, 0x99, 0x62, 0x91, 0x32, - 0x36, 0x6f, 0xe8, 0x4b, 0x5a, 0xd9, 0xbb, 0xc7, 0x76, 0x79, 0x02, 0x2d, 0x36, 0xe2, 0xc8, 0xcb, - 0xee, 0xe1, 0x10, 0x44, 0xdb, 0x74, 0x3a, 0xda, 0xaa, 0x53, 0xd4, 0xd5, 0xe9, 0x69, 0x3d, 0x39, - 0xa4, 0x95, 0x5e, 0x48, 0xad, 0xab, 0x10, 0xb1, 0x96, 0x41, 0x7e, 0x99, 0xb0, 0xe5, 0x17, 0x93, - 0xcb, 0x0a, 0xb3, 0x40, 0xd8, 0x72, 0x17, 0xb9, 0x42, 0x83, 0x94, 0xeb, 0x52, 0x30, 0x1c, 0x8c, - 0x0e, 0x5f, 0x0a, 0x86, 0x87, 0xa3, 0x21, 0xe5, 0x36, 0x82, 0x71, 0xcf, 0x32, 0x96, 0xda, 0x5d, - 0xb4, 0x6e, 0x11, 0x4b, 0x3b, 0x2b, 0x2f, 0x41, 0xa2, 0x73, 0xa5, 0xd3, 0x15, 0xdc, 0x2c, 0x79, - 0x36, 0xec, 0xe4, 0x25, 0xb9, 0x70, 0x51, 0xb6, 0xe1, 0xfd, 0x72, 0x8b, 0xd9, 0xdb, 0x38, 0xfc, - 0xb4, 0x9e, 0x14, 0xef, 0xf6, 0x26, 0x92, 0xf3, 0xf7, 0xae, 0x87, 0x81, 0x39, 0x5b, 0xa3, 0xf9, - 0xcc, 0x47, 0xdb, 0x3e, 0xf3, 0xef, 0x23, 0xc0, 0xde, 0xe8, 0x72, 0x88, 0x6f, 0x00, 0x34, 0x86, - 0xe8, 0x1c, 0xf6, 0xfd, 0x8c, 0xd1, 0x23, 0x72, 0xc4, 0x19, 0xe4, 0x00, 0x8f, 0x7e, 0x02, 0x7b, - 0x04, 0xec, 0xa2, 0xa6, 0xeb, 0xb4, 0xd4, 0x45, 0x90, 0xed, 0x5f, 0x82, 0x1f, 0x23, 0x99, 0x1b, - 0x37, 0xf5, 0x21, 0x65, 0x99, 0x82, 0xb0, 0xdc, 0x35, 0xb6, 0x28, 0xc1, 0xec, 0xe8, 0x56, 0x3d, - 0x39, 0x62, 0x6f, 0x1b, 0x96, 0x1b, 0xb1, 0x77, 0xcc, 0x00, 0x07, 0x3c, 0x21, 0x67, 0x67, 0x91, - 0x98, 0xa4, 0xea, 0x8c, 0x55, 0xc9, 0xc1, 0x4b, 0x4d, 0x5f, 0x25, 0xdd, 0xab, 0x10, 0xaa, 0x89, - 0x2f, 0x72, 0x3d, 0xc4, 0xda, 0x27, 0xcc, 0xf6, 0x68, 0xba, 0x9e, 0x6d, 0x17, 0x6b, 0x21, 0x24, - 0xda, 0x72, 0x27, 0x7b, 0x37, 0x3b, 0x12, 0x67, 0x60, 0xa7, 0xdc, 0xdf, 0xf9, 0x7e, 0x6f, 0xad, - 0xff, 0x4b, 0x87, 0xcc, 0x80, 0x53, 0x95, 0x1f, 0x91, 0xbc, 0xbe, 0x3a, 0xd1, 0x4a, 0x39, 0x2e, - 0x00, 0x6e, 0x94, 0x10, 0x92, 0x97, 0xf6, 0xce, 0xfa, 0xc6, 0x1d, 0x9f, 0x8c, 0xe3, 0x32, 0xb8, - 0xd9, 0xbc, 0xef, 0xac, 0xad, 0xec, 0x8a, 0x56, 0x29, 0xc9, 0x0e, 0x1c, 0x75, 0xf7, 0xc9, 0x53, - 0x45, 0x1c, 0x99, 0x42, 0x57, 0xfb, 0x9c, 0x10, 0x87, 0x5f, 0x07, 0xe9, 0x87, 0x9e, 0x53, 0x7a, - 0x0c, 0x41, 0x46, 0x2a, 0x5c, 0x9c, 0xc6, 0x91, 0x9c, 0x78, 0xb6, 0xfa, 0xd4, 0x74, 0x8d, 0xe7, - 0x89, 0x59, 0x66, 0xe2, 0xd6, 0x19, 0xcb, 0x85, 0xad, 0x0f, 0x19, 0xb3, 0xcc, 0x94, 0x2b, 0xb2, - 0xa6, 0x6b, 0x86, 0xdd, 0x7e, 0x4d, 0x37, 0x77, 0x2f, 0x0a, 0xc3, 0x22, 0x22, 0xbe, 0x83, 0x60, - 0xcc, 0x5b, 0xb7, 0xe1, 0x0e, 0x25, 0x8c, 0x5f, 0x81, 0x1a, 0x3f, 0xd6, 0x97, 0xad, 0xcd, 0xa9, - 0xcc, 0x7e, 0x64, 0xad, 0xf2, 0xdb, 0xbf, 0xff, 0xfd, 0xf9, 0xd0, 0x14, 0x3e, 0xa4, 0xb6, 0x95, - 0xea, 0xce, 0x6c, 0xab, 0xeb, 0x92, 0x72, 0x03, 0xdf, 0x47, 0xb0, 0xb3, 0xa5, 0xf6, 0xc2, 0x33, - 0x3d, 0xfa, 0x6c, 0xae, 0x1f, 0xe3, 0xe9, 0x7e, 0xcd, 0x25, 0xe5, 0x19, 0x97, 0x32, 0x8d, 0x8f, - 0xf7, 0x43, 0xa9, 0x2e, 0x4b, 0xb2, 0x7b, 0x1e, 0x5a, 0x59, 0xee, 0xf4, 0xa4, 0x6d, 0xae, 0xcb, - 0x7a, 0xd2, 0xb6, 0x54, 0x51, 0xca, 0x69, 0x97, 0xf6, 0x38, 0x4e, 0x75, 0xa2, 0x2d, 0x51, 0x75, - 0x5d, 0x1e, 0x94, 0x1b, 0xaa, 0x5b, 0x46, 0x7d, 0x8f, 0x20, 0xda, 0x5a, 0x5b, 0x60, 0xbf, 0xde, - 0x7d, 0x2a, 0xa4, 0xb8, 0xda, 0xb7, 0x7d, 0xdf, 0xb8, 0x6d, 0xe2, 0x32, 0x41, 0xf6, 0x33, 0x82, - 0x68, 0x6b, 0xc6, 0xef, 0x8b, 0xeb, 0x53, 0x8d, 0xf8, 0xe2, 0xfa, 0x95, 0x12, 0x4a, 0xd6, 0xc5, - 0x3d, 0x8d, 0x4f, 0xf5, 0x85, 0x6b, 0x92, 0x55, 0x75, 0xdd, 0x2d, 0x0a, 0x36, 0xf0, 0x2f, 0x08, - 0x70, 0x7b, 0x62, 0x8f, 0x4f, 0xf8, 0xb0, 0xf8, 0x16, 0x28, 0xf1, 0xd9, 0xe7, 0xf0, 0x90, 0xfc, - 0xaf, 0x09, 0xf4, 0x33, 0xf8, 0x74, 0x7f, 0x4a, 0x5b, 0x81, 0x9a, 0xe1, 0x6f, 0x41, 0x50, 0xac, - 0x62, 0xc5, 0x77, 0x59, 0xba, 0x4b, 0xf7, 0x60, 0x57, 0x1b, 0x49, 0x34, 0xe3, 0x2a, 0xaa, 0xe0, - 0xc9, 0x5e, 0xeb, 0x15, 0xaf, 0xc2, 0xb0, 0xb8, 0xf5, 0x71, 0xb7, 0xe0, 0xce, 0xb1, 0x1d, 0x3f, - 0xd4, 0xdd, 0x48, 0x22, 0x1c, 0x74, 0x11, 0x62, 0x78, 0x77, 0x67, 0x04, 0xfc, 0x09, 0x82, 0xb0, - 0x93, 0x51, 0xe1, 0xa9, 0x2e, 0x71, 0xbd, 0xa7, 0xe1, 0x91, 0x9e, 0x76, 0x12, 0x61, 0xce, 0x45, - 0x38, 0x82, 0x0f, 0x77, 0x46, 0x98, 0xb1, 0xf2, 0x3d, 0x8f, 0x14, 0x9f, 0x21, 0x18, 0xf5, 0xe4, - 0x41, 0xf8, 0xa8, 0x4f, 0x67, 0xed, 0xf9, 0x58, 0x3c, 0xd5, 0x8f, 0xa9, 0x44, 0x3b, 0xe6, 0xa2, - 0x4d, 0xe2, 0x44, 0x67, 0x34, 0xa6, 0xd6, 0x84, 0x27, 0xbe, 0x8d, 0x20, 0x64, 0xa7, 0x31, 0xd8, - 0x4f, 0xfb, 0xa6, 0x6c, 0x29, 0x7e, 0xb8, 0x87, 0xd5, 0xf3, 0x41, 0xd8, 0x3d, 0xff, 0x8a, 0x00, - 0xb7, 0xa7, 0x1e, 0xbe, 0x1b, 0xcc, 0x37, 0xa7, 0xf2, 0xdd, 0x60, 0xfe, 0x79, 0x4d, 0xdf, 0x07, - 0x04, 0x53, 0x65, 0x06, 0xa0, 0xae, 0xb7, 0xe4, 0x0e, 0x1b, 0xf8, 0x2b, 0x04, 0x63, 0xde, 0x7b, - 0xdd, 0xf7, 0x02, 0xee, 0x90, 0xa9, 0xf8, 0x5e, 0xc0, 0x9d, 0x12, 0x05, 0xe5, 0x94, 0x4b, 0x9b, - 0xc2, 0xd3, 0x5d, 0xce, 0x84, 0x82, 0xe5, 0xed, 0x10, 0x66, 0x17, 0x36, 0xff, 0x4a, 0x04, 0xee, - 0x6e, 0x25, 0x02, 0x9b, 0x5b, 0x09, 0xf4, 0x68, 0x2b, 0x81, 0xfe, 0xdc, 0x4a, 0xa0, 0x4f, 0x1f, - 0x27, 0x02, 0x8f, 0x1e, 0x27, 0x02, 0x7f, 0x3c, 0x4e, 0x04, 0xde, 0x99, 0xf2, 0xd4, 0x92, 0xf3, - 0x06, 0xab, 0xbe, 0xed, 0x44, 0x2d, 0xa9, 0x37, 0xed, 0xe8, 0xe2, 0x6f, 0xf8, 0x42, 0x48, 0xfc, - 0xe5, 0x7d, 0xf2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x93, 0x29, 0xae, 0x95, 0xed, 0x17, 0x00, - 0x00, + // 1653 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcf, 0x6f, 0x13, 0xc7, + 0x17, 0xcf, 0x04, 0xc7, 0x71, 0x26, 0xf9, 0x7e, 0x71, 0xe6, 0x1b, 0x20, 0x18, 0xb0, 0xa3, 0x05, + 0x42, 0x08, 0xc4, 0x4b, 0xc2, 0x97, 0x46, 0xd0, 0x43, 0x15, 0x07, 0x4a, 0x40, 0x50, 0x82, 0x91, + 0x8a, 0xd4, 0xaa, 0x72, 0xc7, 0xf6, 0xc4, 0xd9, 0xd6, 0xde, 0x35, 0x3b, 0x13, 0x42, 0x14, 0x85, + 0x03, 0xa7, 0x4a, 0x3d, 0xb4, 0x55, 0x4f, 0xa5, 0x52, 0x7f, 0x48, 0x3d, 0xd0, 0xd2, 0x4a, 0x48, + 0xad, 0x54, 0x54, 0xa9, 0xf7, 0x5c, 0x2a, 0xa1, 0xf6, 0xd2, 0x93, 0xd5, 0x86, 0x4a, 0x54, 0xfc, + 0x09, 0x9c, 0xaa, 0x9d, 0x7d, 0xeb, 0x5d, 0xff, 0x18, 0xdb, 0x04, 0x1f, 0x7a, 0x31, 0xbb, 0x3b, + 0xef, 0xbd, 0xf9, 0xcc, 0xe7, 0xfd, 0x98, 0xf7, 0x02, 0xde, 0x9f, 0xb3, 0x78, 0x69, 0x95, 0xf2, + 0x92, 0x2e, 0x7f, 0x6e, 0x4e, 0xeb, 0x37, 0x56, 0x98, 0xbd, 0x96, 0x2c, 0xdb, 0x96, 0xb0, 0x48, + 0xd4, 0x5b, 0x4d, 0xca, 0x9f, 0x9b, 0xd3, 0xb1, 0x91, 0x82, 0x55, 0xb0, 0xe4, 0xa2, 0xee, 0x3c, + 0xb9, 0x72, 0xb1, 0x46, 0x2b, 0x62, 0xad, 0xcc, 0xb8, 0xb7, 0x5a, 0xb0, 0xac, 0x42, 0x91, 0xe9, + 0xb4, 0x6c, 0xe8, 0xd4, 0x34, 0x2d, 0x41, 0x85, 0x61, 0x99, 0xde, 0xea, 0xa4, 0xa3, 0x6b, 0x71, + 0x3d, 0x4b, 0x39, 0x73, 0x37, 0xd7, 0x6f, 0x4e, 0x67, 0x99, 0xa0, 0xd3, 0x7a, 0x99, 0x16, 0x0c, + 0x53, 0x0a, 0x83, 0xec, 0x3e, 0x90, 0xf5, 0xc4, 0x82, 0x60, 0x63, 0xc3, 0xb4, 0x64, 0x98, 0x96, + 0x2e, 0x7f, 0xe1, 0xd3, 0x5e, 0x57, 0x3e, 0xe3, 0x02, 0x76, 0x5f, 0xdc, 0x25, 0xed, 0x35, 0x3c, + 0x7a, 0xd5, 0x51, 0x9e, 0xb7, 0x4c, 0x61, 0xd3, 0x9c, 0xb8, 0x60, 0x2e, 0x59, 0x69, 0x76, 0x63, + 0x85, 0x71, 0x41, 0x66, 0x70, 0x3f, 0xcd, 0xe7, 0x6d, 0xc6, 0xf9, 0x28, 0x1a, 0x43, 0x13, 0x03, + 0xa9, 0xd1, 0x5f, 0x7f, 0x98, 0x1a, 0x01, 0xf5, 0x39, 0x77, 0xe5, 0x9a, 0xb0, 0x0d, 0xb3, 0x90, + 0xf6, 0x04, 0xb5, 0xef, 0x10, 0xde, 0xdb, 0xc4, 0x20, 0x2f, 0x5b, 0x26, 0x67, 0xdb, 0xb1, 0x48, + 0x5e, 0xc7, 0xff, 0xc9, 0x81, 0xad, 0x8c, 0x61, 0x2e, 0x59, 0xa3, 0xbd, 0x63, 0x68, 0x62, 0x70, + 0x26, 0x9e, 0xac, 0x77, 0x4a, 0x32, 0xb8, 0x65, 0x6a, 0x78, 0xb3, 0x92, 0xe8, 0x79, 0x54, 0x49, + 0xa0, 0xa7, 0x95, 0x44, 0xcf, 0xbd, 0x27, 0x0f, 0x26, 0x51, 0x7a, 0x28, 0x17, 0x10, 0x38, 0x13, + 0xfa, 0xfb, 0x8b, 0x04, 0xd2, 0x3e, 0x41, 0x78, 0x5f, 0x0d, 0xde, 0x05, 0x83, 0x0b, 0xcb, 0x5e, + 0x7b, 0x01, 0x0e, 0xc8, 0xab, 0x18, 0xfb, 0x2e, 0x03, 0xb8, 0xe3, 0x49, 0xd0, 0x71, 0xfc, 0x9b, + 0x74, 0xfd, 0x05, 0xfe, 0x4d, 0x2e, 0xd2, 0x02, 0x83, 0xfd, 0xd2, 0x01, 0x4d, 0xed, 0x21, 0xc2, + 0xfb, 0x9b, 0x63, 0x03, 0x3a, 0xaf, 0xe0, 0x7e, 0x66, 0x0a, 0xdb, 0x60, 0x0e, 0xb8, 0x1d, 0x13, + 0x83, 0x33, 0x93, 0x6a, 0x52, 0xe6, 0xad, 0x3c, 0x03, 0xfd, 0x73, 0xa6, 0xb0, 0xd7, 0x52, 0x03, + 0x9b, 0x55, 0x62, 0x3c, 0x2b, 0xe4, 0x7c, 0x13, 0xe4, 0x47, 0xda, 0x22, 0x77, 0xd1, 0xd4, 0x40, + 0xbf, 0x5d, 0xc7, 0x2a, 0x4f, 0xad, 0x39, 0x00, 0x3c, 0x56, 0xf7, 0xe0, 0xfe, 0x9c, 0x95, 0x67, + 0x19, 0x23, 0x2f, 0x59, 0x0d, 0xa5, 0xc3, 0xce, 0xeb, 0x85, 0x7c, 0xd7, 0xa8, 0xfb, 0xbc, 0x9e, + 0xba, 0x2a, 0x00, 0xa0, 0xee, 0x25, 0x3c, 0xe0, 0x45, 0x83, 0x4b, 0x5e, 0x2b, 0xcf, 0xfa, 0xa2, + 0xdd, 0x63, 0xe8, 0xae, 0x87, 0x70, 0xae, 0x58, 0xf4, 0x40, 0x5e, 0x13, 0x54, 0xb0, 0x7f, 0x43, + 0xe4, 0x7d, 0x85, 0xf0, 0x01, 0x05, 0x38, 0xe0, 0xef, 0x0c, 0x0e, 0x97, 0xac, 0x3c, 0x2b, 0x7a, + 0x91, 0xb7, 0xa7, 0x31, 0xf2, 0x2e, 0x3b, 0xeb, 0xc1, 0x30, 0x03, 0x8d, 0xee, 0x71, 0x78, 0x03, + 0x28, 0x4c, 0xd3, 0xd5, 0xae, 0x51, 0x78, 0x00, 0x63, 0xb9, 0x7b, 0x26, 0x4f, 0x05, 0x95, 0xe0, + 0x86, 0xd2, 0x03, 0xf2, 0xcb, 0x59, 0x2a, 0xa8, 0x76, 0x12, 0x88, 0x69, 0xdc, 0x12, 0x88, 0x21, + 0x38, 0x24, 0x35, 0x91, 0xd4, 0x94, 0xcf, 0xda, 0xa7, 0x08, 0xc7, 0xa5, 0xd6, 0xb5, 0x12, 0xb5, + 0x45, 0xd7, 0xa0, 0x9e, 0x6b, 0x84, 0x9a, 0x1a, 0x7f, 0x56, 0x49, 0x90, 0x00, 0xb8, 0xcb, 0x8c, + 0x73, 0x5a, 0x60, 0x77, 0x9f, 0x3c, 0x98, 0x1c, 0x34, 0xcc, 0xa2, 0x61, 0xb2, 0xcc, 0x3b, 0xdc, + 0x32, 0x83, 0x47, 0x7a, 0x0b, 0x27, 0x94, 0xe0, 0xaa, 0xde, 0x0e, 0x1c, 0xaa, 0xe3, 0x3d, 0xdc, + 0xc3, 0x1f, 0xc3, 0x51, 0xc8, 0xc4, 0xf6, 0xf9, 0xaf, 0xe9, 0x78, 0xa4, 0x2a, 0x1c, 0xbc, 0x8a, + 0x94, 0x0a, 0xdf, 0xf4, 0xe2, 0x5d, 0x75, 0x1a, 0x80, 0xf9, 0x60, 0x9d, 0x4a, 0x0a, 0x6f, 0x55, + 0x12, 0x61, 0x29, 0x76, 0xb6, 0x5a, 0x6f, 0x66, 0x70, 0x7f, 0xce, 0x66, 0x54, 0x58, 0xb6, 0xe4, + 0xaf, 0x25, 0xed, 0x20, 0x48, 0x16, 0x71, 0x24, 0xb7, 0xcc, 0x72, 0xef, 0xf2, 0x95, 0xd2, 0xe8, + 0x0e, 0x49, 0xc8, 0xff, 0x9f, 0x55, 0x12, 0x27, 0x0a, 0x86, 0x58, 0x5e, 0xc9, 0x26, 0x73, 0x56, + 0x49, 0xcf, 0x59, 0x25, 0x26, 0xb2, 0x4b, 0xc2, 0x7f, 0x28, 0x1a, 0x59, 0xae, 0x67, 0xd7, 0x04, + 0xe3, 0xc9, 0x05, 0x76, 0x2b, 0xe5, 0x3c, 0xa4, 0xab, 0x56, 0xc8, 0xdb, 0x78, 0xb7, 0x61, 0x72, + 0x41, 0x4d, 0x61, 0x50, 0xc1, 0x32, 0x65, 0x66, 0x97, 0x0c, 0xce, 0x9d, 0xe4, 0x08, 0xa9, 0xee, + 0xba, 0xb9, 0x5c, 0x8e, 0x71, 0x3e, 0x6f, 0x99, 0x4b, 0x46, 0x21, 0x98, 0x63, 0xbb, 0x02, 0x86, + 0x16, 0xab, 0x76, 0xe0, 0xb2, 0x7b, 0xd8, 0x8b, 0xa3, 0x0d, 0x3c, 0x1d, 0xad, 0xe7, 0x29, 0xea, + 0xf3, 0xf4, 0xb4, 0x92, 0xe8, 0x35, 0xf2, 0x2f, 0xc4, 0xd6, 0x55, 0x3c, 0xe0, 0x84, 0x41, 0x66, + 0x99, 0xf2, 0xe5, 0x17, 0xa3, 0xcb, 0x31, 0xb3, 0x40, 0xf9, 0x72, 0x0b, 0xba, 0xc2, 0xdd, 0xa4, + 0xeb, 0x62, 0x28, 0x12, 0x8a, 0xf6, 0x5d, 0x0c, 0x45, 0xfa, 0xa2, 0x61, 0xed, 0x0e, 0xc2, 0xc3, + 0x81, 0x30, 0x06, 0xee, 0x2e, 0x38, 0xb7, 0x88, 0xc3, 0x9d, 0xd3, 0x97, 0x20, 0xb9, 0xb9, 0xd6, + 0xec, 0x0a, 0xae, 0xa5, 0x3c, 0x15, 0xf1, 0xfa, 0x92, 0x74, 0x24, 0x07, 0x6b, 0x64, 0x3f, 0xa4, + 0x98, 0x9b, 0xc6, 0x91, 0xa7, 0x95, 0x84, 0x7c, 0x77, 0x93, 0x08, 0xfc, 0xf7, 0x66, 0x00, 0x03, + 0xf7, 0x52, 0xa3, 0xb6, 0xe6, 0xa3, 0x6d, 0xd7, 0xfc, 0xfb, 0x08, 0x93, 0xa0, 0x75, 0x38, 0xe2, + 0x25, 0x8c, 0xab, 0x47, 0xf4, 0x8a, 0x7d, 0x27, 0x67, 0x0c, 0x90, 0x3c, 0xe0, 0x1d, 0xb2, 0x8b, + 0xa5, 0x9f, 0xe2, 0x3d, 0x12, 0xec, 0xa2, 0x61, 0x9a, 0x2c, 0xdf, 0x82, 0x90, 0xed, 0x5f, 0x82, + 0xef, 0x23, 0xe8, 0x8d, 0x6b, 0xf6, 0x00, 0x5a, 0xc6, 0x71, 0x04, 0xb2, 0xc6, 0x25, 0x25, 0x94, + 0x1a, 0xdc, 0xaa, 0x24, 0xfa, 0xdd, 0xb4, 0xe1, 0xe9, 0x7e, 0x37, 0x63, 0xba, 0x78, 0xe0, 0x11, + 0xf0, 0xce, 0x22, 0xb5, 0x69, 0xc9, 0x3b, 0xab, 0x96, 0xc6, 0xff, 0xab, 0xf9, 0x0a, 0xe8, 0x5e, + 0xc6, 0xe1, 0xb2, 0xfc, 0x02, 0xf1, 0x30, 0xda, 0xe8, 0x30, 0x57, 0xa3, 0xe6, 0x7a, 0x76, 0x55, + 0x9c, 0x40, 0x88, 0x37, 0xf4, 0x4e, 0x6e, 0x36, 0x7b, 0x14, 0xcf, 0xe1, 0x9d, 0x90, 0xdf, 0x99, + 0x4e, 0x6f, 0xad, 0xff, 0x82, 0xc2, 0x5c, 0x97, 0x5b, 0x95, 0xef, 0x11, 0x5c, 0x5f, 0xcd, 0xd0, + 0x02, 0x1d, 0xe7, 0x31, 0xa9, 0x8e, 0x10, 0x80, 0x97, 0xb5, 0xef, 0xfa, 0x86, 0x3d, 0x9d, 0x39, + 0x4f, 0xa5, 0x7b, 0xde, 0x8c, 0x43, 0xe7, 0x72, 0x9d, 0xf2, 0xd2, 0x25, 0xa3, 0x64, 0x08, 0xa8, + 0x4d, 0x9e, 0x5f, 0x67, 0xa1, 0xcd, 0x68, 0x5c, 0x87, 0x23, 0xed, 0xc6, 0xe1, 0x9c, 0xfc, 0x02, + 0x8d, 0x06, 0xbc, 0x39, 0xce, 0x73, 0x83, 0x36, 0xb5, 0x62, 0x14, 0xf3, 0x80, 0xdc, 0x73, 0xdb, + 0x3e, 0x28, 0x57, 0xb2, 0x16, 0x4b, 0x87, 0xb9, 0x05, 0x48, 0x56, 0xd5, 0x26, 0x3e, 0xed, 0x7d, + 0x4e, 0x9f, 0x12, 0x1c, 0xe2, 0xb4, 0x28, 0x64, 0x99, 0x1f, 0x48, 0xcb, 0x67, 0x67, 0x4f, 0xc3, + 0x34, 0x44, 0x86, 0xda, 0x05, 0x2e, 0xaf, 0xb3, 0xa1, 0x74, 0xc4, 0xf9, 0x30, 0x67, 0x17, 0xb8, + 0x76, 0x05, 0x86, 0xc5, 0x5a, 0xb0, 0xdb, 0x1f, 0x16, 0x67, 0x7e, 0x19, 0xc6, 0x7d, 0xd2, 0x22, + 0xb9, 0x8b, 0xf0, 0x50, 0x70, 0x20, 0x24, 0x4d, 0x66, 0x23, 0xd5, 0xe4, 0x1b, 0x3b, 0xd6, 0x91, + 0xac, 0x8b, 0x53, 0x9b, 0x7e, 0xcf, 0x49, 0x9f, 0x3b, 0xbf, 0xfd, 0xf5, 0x71, 0xef, 0x38, 0x39, + 0xa4, 0x37, 0xfc, 0x0d, 0xc0, 0x0b, 0x23, 0x7d, 0x1d, 0x50, 0x6e, 0x90, 0xfb, 0x08, 0xef, 0xac, + 0x1b, 0xea, 0xc8, 0x54, 0x9b, 0x3d, 0x6b, 0x07, 0xd3, 0x58, 0xb2, 0x53, 0x71, 0x40, 0x79, 0xda, + 0x47, 0x99, 0x24, 0xc7, 0x3b, 0x41, 0xa9, 0x2f, 0x03, 0xb2, 0xaf, 0x03, 0x68, 0x61, 0x8e, 0x6a, + 0x8b, 0xb6, 0x76, 0xe0, 0x6b, 0x8b, 0xb6, 0x6e, 0x3c, 0xd3, 0x66, 0x7d, 0xb4, 0xc7, 0xc9, 0x64, + 0x33, 0xb4, 0x79, 0xa6, 0xaf, 0x43, 0x05, 0xde, 0xd0, 0xfd, 0xf9, 0xec, 0x5b, 0x84, 0xa3, 0xf5, + 0x43, 0x0b, 0x51, 0xed, 0xae, 0x18, 0xbd, 0x62, 0x7a, 0xc7, 0xf2, 0x1d, 0xc3, 0x6d, 0x20, 0x97, + 0x4b, 0x64, 0x3f, 0x22, 0x1c, 0xad, 0x1f, 0x25, 0x94, 0x70, 0x15, 0x63, 0x8e, 0x12, 0xae, 0x6a, + 0x46, 0xd1, 0x52, 0x3e, 0xdc, 0x59, 0x72, 0xaa, 0x23, 0xb8, 0x36, 0x5d, 0xd5, 0xd7, 0xfd, 0x69, + 0x63, 0x83, 0xfc, 0x84, 0x30, 0x69, 0x9c, 0x18, 0xc8, 0x09, 0x05, 0x16, 0xe5, 0xe4, 0x13, 0x9b, + 0x7e, 0x0e, 0x0d, 0xc0, 0xff, 0x8a, 0x84, 0x7e, 0x9a, 0xcc, 0x76, 0xc6, 0xb4, 0x63, 0xa8, 0x16, + 0xfc, 0x6d, 0x1c, 0x92, 0x51, 0xac, 0x29, 0xc3, 0xd2, 0x0f, 0xdd, 0x83, 0x2d, 0x65, 0x00, 0xd1, + 0x94, 0xcf, 0xa8, 0x46, 0xc6, 0xda, 0xc5, 0x2b, 0x59, 0xc5, 0x7d, 0xb2, 0x9d, 0x20, 0xad, 0x8c, + 0x7b, 0x65, 0x3b, 0x76, 0xa8, 0xb5, 0x10, 0x40, 0x38, 0xe8, 0x43, 0x18, 0x25, 0xbb, 0x9b, 0x43, + 0x20, 0x1f, 0x20, 0x1c, 0xf1, 0x5a, 0x35, 0x32, 0xde, 0xc2, 0x6e, 0xb0, 0x1a, 0x1e, 0x69, 0x2b, + 0x07, 0x10, 0x66, 0x7c, 0x08, 0x47, 0xc8, 0xe1, 0xe6, 0x10, 0xa6, 0x9c, 0x46, 0x32, 0x40, 0xc5, + 0x47, 0x08, 0x0f, 0x06, 0x1a, 0x2c, 0x72, 0x54, 0xb1, 0x59, 0x63, 0xa3, 0x17, 0x9b, 0xec, 0x44, + 0x14, 0xa0, 0x1d, 0xf3, 0xa1, 0x8d, 0x91, 0x78, 0x73, 0x68, 0x5c, 0x2f, 0x4b, 0x4d, 0x72, 0x07, + 0xe1, 0xb0, 0xdb, 0x1f, 0x11, 0x15, 0xf7, 0x35, 0x6d, 0x58, 0xec, 0x70, 0x1b, 0xa9, 0xe7, 0x03, + 0xe1, 0xee, 0xfc, 0x33, 0xc2, 0xa4, 0xb1, 0xa7, 0x51, 0x26, 0x98, 0xb2, 0x59, 0x53, 0x26, 0x98, + 0xba, 0x61, 0xea, 0xb8, 0x40, 0x70, 0x1d, 0x3a, 0x00, 0x7d, 0xbd, 0xae, 0x77, 0xd8, 0x20, 0x5f, + 0x22, 0x1c, 0xad, 0x6f, 0x5f, 0x94, 0xa5, 0x4d, 0xd1, 0x07, 0x29, 0x4b, 0x9b, 0xaa, 0x2f, 0xd2, + 0x8e, 0xab, 0xef, 0x61, 0xe7, 0xdf, 0xa9, 0xa2, 0x54, 0x9a, 0x72, 0xbb, 0x25, 0xf2, 0x19, 0xc2, + 0x43, 0xc1, 0xde, 0x43, 0xd9, 0x24, 0x34, 0xe9, 0xa6, 0x94, 0x4d, 0x42, 0xb3, 0x66, 0x46, 0x3b, + 0xe5, 0x33, 0x3a, 0x49, 0x26, 0x5a, 0xd4, 0xad, 0xac, 0xa3, 0xed, 0xb1, 0x98, 0x5a, 0xd8, 0xfc, + 0x33, 0xde, 0x73, 0x6f, 0x2b, 0xde, 0xb3, 0xb9, 0x15, 0x47, 0x8f, 0xb6, 0xe2, 0xe8, 0x8f, 0xad, + 0x38, 0xfa, 0xf0, 0x71, 0xbc, 0xe7, 0xd1, 0xe3, 0x78, 0xcf, 0xef, 0x8f, 0xe3, 0x3d, 0x6f, 0x8c, + 0x07, 0x06, 0xe9, 0x79, 0x8b, 0x97, 0xae, 0x7b, 0x56, 0xf3, 0xfa, 0x2d, 0xd7, 0xba, 0xfc, 0x3f, + 0x88, 0x6c, 0x58, 0xfe, 0xbd, 0xff, 0xe4, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x90, 0xe7, + 0x78, 0xea, 0x18, 0x00, 0x00, } func (this *QueryContractInfoResponse) Equal(that interface{}) bool { @@ -1566,6 +1659,9 @@ type QueryClient interface { Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) // ContractsByCreator gets the contracts by creator ContractsByCreator(ctx context.Context, in *QueryContractsByCreatorRequest, opts ...grpc.CallOption) (*QueryContractsByCreatorResponse, error) + // WasmLimitsConfig gets the configured limits for static validation of Wasm + // files, encoded in MsgPack. + WasmLimitsConfig(ctx context.Context, in *QueryWasmLimitsConfigRequest, opts ...grpc.CallOption) (*QueryWasmLimitsConfigResponse, error) // BuildAddress builds a contract address BuildAddress(ctx context.Context, in *QueryBuildAddressRequest, opts ...grpc.CallOption) (*QueryBuildAddressResponse, error) } @@ -1686,6 +1782,15 @@ func (c *queryClient) ContractsByCreator(ctx context.Context, in *QueryContracts return out, nil } +func (c *queryClient) WasmLimitsConfig(ctx context.Context, in *QueryWasmLimitsConfigRequest, opts ...grpc.CallOption) (*QueryWasmLimitsConfigResponse, error) { + out := new(QueryWasmLimitsConfigResponse) + err := c.cc.Invoke(ctx, "/cosmwasm.wasm.v1.Query/WasmLimitsConfig", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) BuildAddress(ctx context.Context, in *QueryBuildAddressRequest, opts ...grpc.CallOption) (*QueryBuildAddressResponse, error) { out := new(QueryBuildAddressResponse) err := c.cc.Invoke(ctx, "/cosmwasm.wasm.v1.Query/BuildAddress", in, out, opts...) @@ -1721,6 +1826,9 @@ type QueryServer interface { Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) // ContractsByCreator gets the contracts by creator ContractsByCreator(context.Context, *QueryContractsByCreatorRequest) (*QueryContractsByCreatorResponse, error) + // WasmLimitsConfig gets the configured limits for static validation of Wasm + // files, encoded in MsgPack. + WasmLimitsConfig(context.Context, *QueryWasmLimitsConfigRequest) (*QueryWasmLimitsConfigResponse, error) // BuildAddress builds a contract address BuildAddress(context.Context, *QueryBuildAddressRequest) (*QueryBuildAddressResponse, error) } @@ -1776,6 +1884,10 @@ func (*UnimplementedQueryServer) ContractsByCreator(ctx context.Context, req *Qu return nil, status.Errorf(codes.Unimplemented, "method ContractsByCreator not implemented") } +func (*UnimplementedQueryServer) WasmLimitsConfig(ctx context.Context, req *QueryWasmLimitsConfigRequest) (*QueryWasmLimitsConfigResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method WasmLimitsConfig not implemented") +} + func (*UnimplementedQueryServer) BuildAddress(ctx context.Context, req *QueryBuildAddressRequest) (*QueryBuildAddressResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method BuildAddress not implemented") } @@ -2000,6 +2112,24 @@ func _Query_ContractsByCreator_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Query_WasmLimitsConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryWasmLimitsConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).WasmLimitsConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmwasm.wasm.v1.Query/WasmLimitsConfig", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).WasmLimitsConfig(ctx, req.(*QueryWasmLimitsConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_BuildAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryBuildAddressRequest) if err := dec(in); err != nil { @@ -2070,6 +2200,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "ContractsByCreator", Handler: _Query_ContractsByCreator_Handler, }, + { + MethodName: "WasmLimitsConfig", + Handler: _Query_WasmLimitsConfig_Handler, + }, { MethodName: "BuildAddress", Handler: _Query_BuildAddress_Handler, @@ -3065,6 +3199,59 @@ func (m *QueryContractsByCreatorResponse) MarshalToSizedBuffer(dAtA []byte) (int return len(dAtA) - i, nil } +func (m *QueryWasmLimitsConfigRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryWasmLimitsConfigRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryWasmLimitsConfigRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryWasmLimitsConfigResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryWasmLimitsConfigResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryWasmLimitsConfigResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Config) > 0 { + i -= len(m.Config) + copy(dAtA[i:], m.Config) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Config))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *QueryBuildAddressRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3559,6 +3746,28 @@ func (m *QueryContractsByCreatorResponse) Size() (n int) { return n } +func (m *QueryWasmLimitsConfigRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryWasmLimitsConfigResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Config) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + func (m *QueryBuildAddressRequest) Size() (n int) { if m == nil { return 0 @@ -6343,6 +6552,142 @@ func (m *QueryContractsByCreatorResponse) Unmarshal(dAtA []byte) error { return nil } +func (m *QueryWasmLimitsConfigRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryWasmLimitsConfigRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryWasmLimitsConfigRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} + +func (m *QueryWasmLimitsConfigResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryWasmLimitsConfigResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryWasmLimitsConfigResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Config = append(m.Config[:0], dAtA[iNdEx:postIndex]...) + if m.Config == nil { + m.Config = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} + func (m *QueryBuildAddressRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/wasm/types/query.pb.gw.go b/x/wasm/types/query.pb.gw.go index 9a40fc2a87..19af858476 100644 --- a/x/wasm/types/query.pb.gw.go +++ b/x/wasm/types/query.pb.gw.go @@ -52,7 +52,6 @@ func request_Query_ContractInfo_0(ctx context.Context, marshaler runtime.Marshal } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -78,7 +77,6 @@ func local_request_Query_ContractInfo_0(ctx context.Context, marshaler runtime.M } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -106,7 +104,6 @@ func request_Query_ContractHistory_0(ctx context.Context, marshaler runtime.Mars } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -139,7 +136,6 @@ func local_request_Query_ContractHistory_0(ctx context.Context, marshaler runtim } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -174,7 +170,6 @@ func request_Query_ContractsByCode_0(ctx context.Context, marshaler runtime.Mars } protoReq.CodeId, err = runtime.Uint64(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -207,7 +202,6 @@ func local_request_Query_ContractsByCode_0(ctx context.Context, marshaler runtim } protoReq.CodeId, err = runtime.Uint64(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -242,7 +236,6 @@ func request_Query_AllContractState_0(ctx context.Context, marshaler runtime.Mar } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -275,7 +268,6 @@ func local_request_Query_AllContractState_0(ctx context.Context, marshaler runti } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -308,7 +300,6 @@ func request_Query_RawContractState_0(ctx context.Context, marshaler runtime.Mar } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -319,7 +310,6 @@ func request_Query_RawContractState_0(ctx context.Context, marshaler runtime.Mar } protoReq.QueryData, err = runtime.Bytes(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "query_data", err) } @@ -345,7 +335,6 @@ func local_request_Query_RawContractState_0(ctx context.Context, marshaler runti } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -356,7 +345,6 @@ func local_request_Query_RawContractState_0(ctx context.Context, marshaler runti } protoReq.QueryData, err = runtime.Bytes(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "query_data", err) } @@ -382,7 +370,6 @@ func request_Query_SmartContractState_0(ctx context.Context, marshaler runtime.M } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -393,7 +380,6 @@ func request_Query_SmartContractState_0(ctx context.Context, marshaler runtime.M } protoReq.QueryData, err = runtime.Bytes(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "query_data", err) } @@ -419,7 +405,6 @@ func local_request_Query_SmartContractState_0(ctx context.Context, marshaler run } protoReq.Address, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -430,7 +415,6 @@ func local_request_Query_SmartContractState_0(ctx context.Context, marshaler run } protoReq.QueryData, err = runtime.Bytes(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "query_data", err) } @@ -456,7 +440,6 @@ func request_Query_Code_0(ctx context.Context, marshaler runtime.Marshaler, clie } protoReq.CodeId, err = runtime.Uint64(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -482,7 +465,6 @@ func local_request_Query_Code_0(ctx context.Context, marshaler runtime.Marshaler } protoReq.CodeId, err = runtime.Uint64(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -540,7 +522,6 @@ func request_Query_CodeInfo_0(ctx context.Context, marshaler runtime.Marshaler, } protoReq.CodeId, err = runtime.Uint64(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -566,7 +547,6 @@ func local_request_Query_CodeInfo_0(ctx context.Context, marshaler runtime.Marsh } protoReq.CodeId, err = runtime.Uint64(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -642,7 +622,6 @@ func request_Query_ContractsByCreator_0(ctx context.Context, marshaler runtime.M } protoReq.CreatorAddress, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "creator_address", err) } @@ -675,7 +654,6 @@ func local_request_Query_ContractsByCreator_0(ctx context.Context, marshaler run } protoReq.CreatorAddress, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "creator_address", err) } @@ -691,6 +669,22 @@ func local_request_Query_ContractsByCreator_0(ctx context.Context, marshaler run return msg, metadata, err } +func request_Query_WasmLimitsConfig_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryWasmLimitsConfigRequest + var metadata runtime.ServerMetadata + + msg, err := client.WasmLimitsConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_Query_WasmLimitsConfig_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryWasmLimitsConfigRequest + var metadata runtime.ServerMetadata + + msg, err := server.WasmLimitsConfig(ctx, &protoReq) + return msg, metadata, err +} + var filter_Query_BuildAddress_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} func request_Query_BuildAddress_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -992,6 +986,28 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv forward_Query_ContractsByCreator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle("GET", pattern_Query_WasmLimitsConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_WasmLimitsConfig_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_WasmLimitsConfig_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle("GET", pattern_Query_BuildAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1282,6 +1298,25 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie forward_Query_ContractsByCreator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle("GET", pattern_Query_WasmLimitsConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_WasmLimitsConfig_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_WasmLimitsConfig_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle("GET", pattern_Query_BuildAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1329,6 +1364,8 @@ var ( pattern_Query_ContractsByCreator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmwasm", "wasm", "v1", "contracts", "creator", "creator_address"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_WasmLimitsConfig_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmwasm", "wasm", "v1", "wasm-limits-config"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_BuildAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmwasm", "wasm", "v1", "contract", "build_address"}, "", runtime.AssumeColonVerbOpt(false))) ) @@ -1357,5 +1394,7 @@ var ( forward_Query_ContractsByCreator_0 = runtime.ForwardResponseMessage + forward_Query_WasmLimitsConfig_0 = runtime.ForwardResponseMessage + forward_Query_BuildAddress_0 = runtime.ForwardResponseMessage ) From 6b0e3fef525ea8ffb5c3f41ddeb95813e00057fa Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Mon, 16 Sep 2024 00:10:12 +0200 Subject: [PATCH 12/40] Update protobuf --- docs/proto/proto-docs.md | 6 +- proto/cosmwasm/wasm/v1/query.proto | 6 +- x/wasm/keeper/querier.go | 2 +- x/wasm/types/query.pb.go | 96 +++++++++++++++--------------- 4 files changed, 54 insertions(+), 56 deletions(-) diff --git a/docs/proto/proto-docs.md b/docs/proto/proto-docs.md index d5c5cc62ae..f20eb1317e 100644 --- a/docs/proto/proto-docs.md +++ b/docs/proto/proto-docs.md @@ -1439,13 +1439,13 @@ Query/WasmLimitsConfig RPC method. ### QueryWasmLimitsConfigResponse QueryWasmLimitsConfigResponse is the response type for the -Query/WasmLimitsConfig RPC method. It contains the MsgPack encoded limits for +Query/WasmLimitsConfig RPC method. It contains the JSON encoded limits for static validation of Wasm files. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `config` | [bytes](#bytes) | | | +| `config` | [string](#string) | | | @@ -1477,7 +1477,7 @@ Query provides defines the gRPC querier service | `PinnedCodes` | [QueryPinnedCodesRequest](#cosmwasm.wasm.v1.QueryPinnedCodesRequest) | [QueryPinnedCodesResponse](#cosmwasm.wasm.v1.QueryPinnedCodesResponse) | PinnedCodes gets the pinned code ids | GET|/cosmwasm/wasm/v1/codes/pinned| | `Params` | [QueryParamsRequest](#cosmwasm.wasm.v1.QueryParamsRequest) | [QueryParamsResponse](#cosmwasm.wasm.v1.QueryParamsResponse) | Params gets the module params | GET|/cosmwasm/wasm/v1/codes/params| | `ContractsByCreator` | [QueryContractsByCreatorRequest](#cosmwasm.wasm.v1.QueryContractsByCreatorRequest) | [QueryContractsByCreatorResponse](#cosmwasm.wasm.v1.QueryContractsByCreatorResponse) | ContractsByCreator gets the contracts by creator | GET|/cosmwasm/wasm/v1/contracts/creator/{creator_address}| -| `WasmLimitsConfig` | [QueryWasmLimitsConfigRequest](#cosmwasm.wasm.v1.QueryWasmLimitsConfigRequest) | [QueryWasmLimitsConfigResponse](#cosmwasm.wasm.v1.QueryWasmLimitsConfigResponse) | WasmLimitsConfig gets the configured limits for static validation of Wasm files, encoded in MsgPack. | GET|/cosmwasm/wasm/v1/wasm-limits-config| +| `WasmLimitsConfig` | [QueryWasmLimitsConfigRequest](#cosmwasm.wasm.v1.QueryWasmLimitsConfigRequest) | [QueryWasmLimitsConfigResponse](#cosmwasm.wasm.v1.QueryWasmLimitsConfigResponse) | WasmLimitsConfig gets the configured limits for static validation of Wasm files, encoded in JSON. | GET|/cosmwasm/wasm/v1/wasm-limits-config| | `BuildAddress` | [QueryBuildAddressRequest](#cosmwasm.wasm.v1.QueryBuildAddressRequest) | [QueryBuildAddressResponse](#cosmwasm.wasm.v1.QueryBuildAddressResponse) | BuildAddress builds a contract address | GET|/cosmwasm/wasm/v1/contract/build_address| diff --git a/proto/cosmwasm/wasm/v1/query.proto b/proto/cosmwasm/wasm/v1/query.proto index a6e54347a0..e52b6b04a1 100644 --- a/proto/cosmwasm/wasm/v1/query.proto +++ b/proto/cosmwasm/wasm/v1/query.proto @@ -91,7 +91,7 @@ service Query { } // WasmLimitsConfig gets the configured limits for static validation of Wasm - // files, encoded in MsgPack. + // files, encoded in JSON. rpc WasmLimitsConfig(QueryWasmLimitsConfigRequest) returns (QueryWasmLimitsConfigResponse) { option (google.api.http).get = "/cosmwasm/wasm/v1/wasm-limits-config"; @@ -329,9 +329,9 @@ message QueryContractsByCreatorResponse { message QueryWasmLimitsConfigRequest {} // QueryWasmLimitsConfigResponse is the response type for the -// Query/WasmLimitsConfig RPC method. It contains the MsgPack encoded limits for +// Query/WasmLimitsConfig RPC method. It contains the JSON encoded limits for // static validation of Wasm files. -message QueryWasmLimitsConfigResponse { bytes config = 1; } +message QueryWasmLimitsConfigResponse { string config = 1; } // QueryBuildAddressRequest is the request type for the Query/BuildAddress RPC // method. diff --git a/x/wasm/keeper/querier.go b/x/wasm/keeper/querier.go index ef0e488d43..da71ad1a47 100644 --- a/x/wasm/keeper/querier.go +++ b/x/wasm/keeper/querier.go @@ -441,7 +441,7 @@ func ensurePaginationParams(req *query.PageRequest) (*query.PageRequest, error) func (q GrpcQuerier) WasmLimitsConfig(c context.Context, req *types.QueryWasmLimitsConfigRequest) (*types.QueryWasmLimitsConfigResponse, error) { return &types.QueryWasmLimitsConfigResponse{ - Config: []byte{}, // TODO: implement + Config: "{\"todo\": \"put serialized limits here\"}", // TODO: implement }, nil } diff --git a/x/wasm/types/query.pb.go b/x/wasm/types/query.pb.go index 37e08faf14..23ca1511aa 100644 --- a/x/wasm/types/query.pb.go +++ b/x/wasm/types/query.pb.go @@ -1214,10 +1214,10 @@ func (m *QueryWasmLimitsConfigRequest) XXX_DiscardUnknown() { var xxx_messageInfo_QueryWasmLimitsConfigRequest proto.InternalMessageInfo // QueryWasmLimitsConfigResponse is the response type for the -// Query/WasmLimitsConfig RPC method. It contains the MsgPack encoded limits for +// Query/WasmLimitsConfig RPC method. It contains the JSON encoded limits for // static validation of Wasm files. type QueryWasmLimitsConfigResponse struct { - Config []byte `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + Config string `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` } func (m *QueryWasmLimitsConfigResponse) Reset() { *m = QueryWasmLimitsConfigResponse{} } @@ -1458,43 +1458,43 @@ var fileDescriptor_9677c207036b9f2b = []byte{ 0x4e, 0x6f, 0xad, 0xff, 0x82, 0xc2, 0x5c, 0x97, 0x5b, 0x95, 0xef, 0x11, 0x5c, 0x5f, 0xcd, 0xd0, 0x02, 0x1d, 0xe7, 0x31, 0xa9, 0x8e, 0x10, 0x80, 0x97, 0xb5, 0xef, 0xfa, 0x86, 0x3d, 0x9d, 0x39, 0x4f, 0xa5, 0x7b, 0xde, 0x8c, 0x43, 0xe7, 0x72, 0x9d, 0xf2, 0xd2, 0x25, 0xa3, 0x64, 0x08, 0xa8, - 0x4d, 0x9e, 0x5f, 0x67, 0xa1, 0xcd, 0x68, 0x5c, 0x87, 0x23, 0xed, 0xc6, 0xe1, 0x9c, 0xfc, 0x02, - 0x8d, 0x06, 0xbc, 0x39, 0xce, 0x73, 0x83, 0x36, 0xb5, 0x62, 0x14, 0xf3, 0x80, 0xdc, 0x73, 0xdb, - 0x3e, 0x28, 0x57, 0xb2, 0x16, 0x4b, 0x87, 0xb9, 0x05, 0x48, 0x56, 0xd5, 0x26, 0x3e, 0xed, 0x7d, - 0x4e, 0x9f, 0x12, 0x1c, 0xe2, 0xb4, 0x28, 0x64, 0x99, 0x1f, 0x48, 0xcb, 0x67, 0x67, 0x4f, 0xc3, - 0x34, 0x44, 0x86, 0xda, 0x05, 0x2e, 0xaf, 0xb3, 0xa1, 0x74, 0xc4, 0xf9, 0x30, 0x67, 0x17, 0xb8, - 0x76, 0x05, 0x86, 0xc5, 0x5a, 0xb0, 0xdb, 0x1f, 0x16, 0x67, 0x7e, 0x19, 0xc6, 0x7d, 0xd2, 0x22, - 0xb9, 0x8b, 0xf0, 0x50, 0x70, 0x20, 0x24, 0x4d, 0x66, 0x23, 0xd5, 0xe4, 0x1b, 0x3b, 0xd6, 0x91, - 0xac, 0x8b, 0x53, 0x9b, 0x7e, 0xcf, 0x49, 0x9f, 0x3b, 0xbf, 0xfd, 0xf5, 0x71, 0xef, 0x38, 0x39, - 0xa4, 0x37, 0xfc, 0x0d, 0xc0, 0x0b, 0x23, 0x7d, 0x1d, 0x50, 0x6e, 0x90, 0xfb, 0x08, 0xef, 0xac, - 0x1b, 0xea, 0xc8, 0x54, 0x9b, 0x3d, 0x6b, 0x07, 0xd3, 0x58, 0xb2, 0x53, 0x71, 0x40, 0x79, 0xda, - 0x47, 0x99, 0x24, 0xc7, 0x3b, 0x41, 0xa9, 0x2f, 0x03, 0xb2, 0xaf, 0x03, 0x68, 0x61, 0x8e, 0x6a, - 0x8b, 0xb6, 0x76, 0xe0, 0x6b, 0x8b, 0xb6, 0x6e, 0x3c, 0xd3, 0x66, 0x7d, 0xb4, 0xc7, 0xc9, 0x64, - 0x33, 0xb4, 0x79, 0xa6, 0xaf, 0x43, 0x05, 0xde, 0xd0, 0xfd, 0xf9, 0xec, 0x5b, 0x84, 0xa3, 0xf5, - 0x43, 0x0b, 0x51, 0xed, 0xae, 0x18, 0xbd, 0x62, 0x7a, 0xc7, 0xf2, 0x1d, 0xc3, 0x6d, 0x20, 0x97, - 0x4b, 0x64, 0x3f, 0x22, 0x1c, 0xad, 0x1f, 0x25, 0x94, 0x70, 0x15, 0x63, 0x8e, 0x12, 0xae, 0x6a, - 0x46, 0xd1, 0x52, 0x3e, 0xdc, 0x59, 0x72, 0xaa, 0x23, 0xb8, 0x36, 0x5d, 0xd5, 0xd7, 0xfd, 0x69, - 0x63, 0x83, 0xfc, 0x84, 0x30, 0x69, 0x9c, 0x18, 0xc8, 0x09, 0x05, 0x16, 0xe5, 0xe4, 0x13, 0x9b, - 0x7e, 0x0e, 0x0d, 0xc0, 0xff, 0x8a, 0x84, 0x7e, 0x9a, 0xcc, 0x76, 0xc6, 0xb4, 0x63, 0xa8, 0x16, - 0xfc, 0x6d, 0x1c, 0x92, 0x51, 0xac, 0x29, 0xc3, 0xd2, 0x0f, 0xdd, 0x83, 0x2d, 0x65, 0x00, 0xd1, - 0x94, 0xcf, 0xa8, 0x46, 0xc6, 0xda, 0xc5, 0x2b, 0x59, 0xc5, 0x7d, 0xb2, 0x9d, 0x20, 0xad, 0x8c, - 0x7b, 0x65, 0x3b, 0x76, 0xa8, 0xb5, 0x10, 0x40, 0x38, 0xe8, 0x43, 0x18, 0x25, 0xbb, 0x9b, 0x43, - 0x20, 0x1f, 0x20, 0x1c, 0xf1, 0x5a, 0x35, 0x32, 0xde, 0xc2, 0x6e, 0xb0, 0x1a, 0x1e, 0x69, 0x2b, - 0x07, 0x10, 0x66, 0x7c, 0x08, 0x47, 0xc8, 0xe1, 0xe6, 0x10, 0xa6, 0x9c, 0x46, 0x32, 0x40, 0xc5, - 0x47, 0x08, 0x0f, 0x06, 0x1a, 0x2c, 0x72, 0x54, 0xb1, 0x59, 0x63, 0xa3, 0x17, 0x9b, 0xec, 0x44, - 0x14, 0xa0, 0x1d, 0xf3, 0xa1, 0x8d, 0x91, 0x78, 0x73, 0x68, 0x5c, 0x2f, 0x4b, 0x4d, 0x72, 0x07, - 0xe1, 0xb0, 0xdb, 0x1f, 0x11, 0x15, 0xf7, 0x35, 0x6d, 0x58, 0xec, 0x70, 0x1b, 0xa9, 0xe7, 0x03, - 0xe1, 0xee, 0xfc, 0x33, 0xc2, 0xa4, 0xb1, 0xa7, 0x51, 0x26, 0x98, 0xb2, 0x59, 0x53, 0x26, 0x98, - 0xba, 0x61, 0xea, 0xb8, 0x40, 0x70, 0x1d, 0x3a, 0x00, 0x7d, 0xbd, 0xae, 0x77, 0xd8, 0x20, 0x5f, - 0x22, 0x1c, 0xad, 0x6f, 0x5f, 0x94, 0xa5, 0x4d, 0xd1, 0x07, 0x29, 0x4b, 0x9b, 0xaa, 0x2f, 0xd2, - 0x8e, 0xab, 0xef, 0x61, 0xe7, 0xdf, 0xa9, 0xa2, 0x54, 0x9a, 0x72, 0xbb, 0x25, 0xf2, 0x19, 0xc2, - 0x43, 0xc1, 0xde, 0x43, 0xd9, 0x24, 0x34, 0xe9, 0xa6, 0x94, 0x4d, 0x42, 0xb3, 0x66, 0x46, 0x3b, - 0xe5, 0x33, 0x3a, 0x49, 0x26, 0x5a, 0xd4, 0xad, 0xac, 0xa3, 0xed, 0xb1, 0x98, 0x5a, 0xd8, 0xfc, - 0x33, 0xde, 0x73, 0x6f, 0x2b, 0xde, 0xb3, 0xb9, 0x15, 0x47, 0x8f, 0xb6, 0xe2, 0xe8, 0x8f, 0xad, - 0x38, 0xfa, 0xf0, 0x71, 0xbc, 0xe7, 0xd1, 0xe3, 0x78, 0xcf, 0xef, 0x8f, 0xe3, 0x3d, 0x6f, 0x8c, - 0x07, 0x06, 0xe9, 0x79, 0x8b, 0x97, 0xae, 0x7b, 0x56, 0xf3, 0xfa, 0x2d, 0xd7, 0xba, 0xfc, 0x3f, - 0x88, 0x6c, 0x58, 0xfe, 0xbd, 0xff, 0xe4, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x90, 0xe7, - 0x78, 0xea, 0x18, 0x00, 0x00, + 0x4d, 0x9e, 0x5f, 0x67, 0xa1, 0xcd, 0x68, 0x5c, 0x87, 0x23, 0xed, 0xc6, 0xe1, 0x9c, 0xfc, 0xe2, + 0x12, 0x9f, 0x86, 0x37, 0xc7, 0x79, 0x6e, 0xd0, 0xa6, 0x56, 0x8c, 0x62, 0x1e, 0x90, 0x7b, 0x6e, + 0xdb, 0x07, 0xe5, 0x4a, 0xd6, 0x62, 0x57, 0x4f, 0x46, 0xb1, 0xac, 0xaa, 0x4d, 0x7c, 0xda, 0xfb, + 0x9c, 0x3e, 0x25, 0x38, 0xc4, 0x69, 0x51, 0xc8, 0x32, 0x3f, 0x90, 0x96, 0xcf, 0xce, 0x9e, 0x86, + 0x69, 0x88, 0x0c, 0xb5, 0x0b, 0x5c, 0x5e, 0x67, 0x43, 0xe9, 0x88, 0xf3, 0x61, 0xce, 0x2e, 0x70, + 0xed, 0x0a, 0x0c, 0x8b, 0xb5, 0x60, 0xb7, 0x3f, 0x2c, 0xce, 0xfc, 0x32, 0x8c, 0xfb, 0xa4, 0x45, + 0x72, 0x17, 0xe1, 0xa1, 0xe0, 0x40, 0x48, 0x9a, 0xcc, 0x46, 0xaa, 0xc9, 0x37, 0x76, 0xac, 0x23, + 0x59, 0x17, 0xa7, 0x36, 0xfd, 0x9e, 0x93, 0x3e, 0x77, 0x7e, 0xfb, 0xeb, 0xe3, 0xde, 0x71, 0x72, + 0x48, 0x6f, 0xf8, 0x1b, 0x80, 0x17, 0x46, 0xfa, 0x3a, 0xa0, 0xdc, 0x20, 0xf7, 0x11, 0xde, 0x59, + 0x37, 0xd4, 0x91, 0xa9, 0x36, 0x7b, 0xd6, 0x0e, 0xa6, 0xb1, 0x64, 0xa7, 0xe2, 0x80, 0xf2, 0xb4, + 0x8f, 0x32, 0x49, 0x8e, 0x77, 0x82, 0x52, 0x5f, 0x06, 0x64, 0x5f, 0x07, 0xd0, 0xc2, 0x1c, 0xd5, + 0x16, 0x6d, 0xed, 0xc0, 0xd7, 0x16, 0x6d, 0xdd, 0x78, 0xa6, 0xcd, 0xfa, 0x68, 0x8f, 0x93, 0xc9, + 0x66, 0x68, 0xf3, 0x4c, 0x5f, 0x87, 0x0a, 0xbc, 0xa1, 0xfb, 0xf3, 0xd9, 0xb7, 0x08, 0x47, 0xeb, + 0x87, 0x16, 0xa2, 0xda, 0x5d, 0x31, 0x7a, 0xc5, 0xf4, 0x8e, 0xe5, 0x3b, 0x86, 0xdb, 0x40, 0x2e, + 0x97, 0xc8, 0x7e, 0x44, 0x38, 0x5a, 0x3f, 0x4a, 0x28, 0xe1, 0x2a, 0xc6, 0x1c, 0x25, 0x5c, 0xd5, + 0x8c, 0xa2, 0xa5, 0x7c, 0xb8, 0xb3, 0xe4, 0x54, 0x47, 0x70, 0x6d, 0xba, 0xaa, 0xaf, 0xfb, 0xd3, + 0xc6, 0x06, 0xf9, 0x09, 0x61, 0xd2, 0x38, 0x31, 0x90, 0x13, 0x0a, 0x2c, 0xca, 0xc9, 0x27, 0x36, + 0xfd, 0x1c, 0x1a, 0x80, 0xff, 0x15, 0x09, 0xfd, 0x34, 0x99, 0xed, 0x8c, 0x69, 0xc7, 0x50, 0x2d, + 0xf8, 0xdb, 0x38, 0x24, 0xa3, 0x58, 0x53, 0x86, 0xa5, 0x1f, 0xba, 0x07, 0x5b, 0xca, 0x00, 0xa2, + 0x29, 0x9f, 0x51, 0x8d, 0x8c, 0xb5, 0x8b, 0x57, 0xb2, 0x8a, 0xfb, 0x64, 0x3b, 0x41, 0x5a, 0x19, + 0xf7, 0xca, 0x76, 0xec, 0x50, 0x6b, 0x21, 0x80, 0x70, 0xd0, 0x87, 0x30, 0x4a, 0x76, 0x37, 0x87, + 0x40, 0x3e, 0x40, 0x38, 0xe2, 0xb5, 0x6a, 0x64, 0xbc, 0x85, 0xdd, 0x60, 0x35, 0x3c, 0xd2, 0x56, + 0x0e, 0x20, 0xcc, 0xf8, 0x10, 0x8e, 0x90, 0xc3, 0xcd, 0x21, 0x4c, 0x39, 0x8d, 0x64, 0x80, 0x8a, + 0x8f, 0x10, 0x1e, 0x0c, 0x34, 0x58, 0xe4, 0xa8, 0x62, 0xb3, 0xc6, 0x46, 0x2f, 0x36, 0xd9, 0x89, + 0x28, 0x40, 0x3b, 0xe6, 0x43, 0x1b, 0x23, 0xf1, 0xe6, 0xd0, 0xb8, 0x5e, 0x96, 0x9a, 0xe4, 0x0e, + 0xc2, 0x61, 0xb7, 0x3f, 0x22, 0x2a, 0xee, 0x6b, 0xda, 0xb0, 0xd8, 0xe1, 0x36, 0x52, 0xcf, 0x07, + 0xc2, 0xdd, 0xf9, 0x67, 0x84, 0x49, 0x63, 0x4f, 0xa3, 0x4c, 0x30, 0x65, 0xb3, 0xa6, 0x4c, 0x30, + 0x75, 0xc3, 0xd4, 0x71, 0x81, 0xe0, 0x3a, 0x74, 0x00, 0xfa, 0x7a, 0x5d, 0xef, 0xb0, 0x41, 0xbe, + 0x44, 0x38, 0x5a, 0xdf, 0xbe, 0x28, 0x4b, 0x9b, 0xa2, 0x0f, 0x52, 0x96, 0x36, 0x55, 0x5f, 0xa4, + 0x1d, 0x57, 0xdf, 0xc3, 0xce, 0xbf, 0x53, 0x45, 0xa9, 0x34, 0xe5, 0x76, 0x4b, 0xe4, 0x33, 0x84, + 0x87, 0x82, 0xbd, 0x87, 0xb2, 0x49, 0x68, 0xd2, 0x4d, 0x29, 0x9b, 0x84, 0x66, 0xcd, 0x8c, 0x76, + 0xca, 0x67, 0x74, 0x92, 0x4c, 0xb4, 0xa8, 0x5b, 0x59, 0x47, 0xdb, 0x63, 0x31, 0xb5, 0xb0, 0xf9, + 0x67, 0xbc, 0xe7, 0xde, 0x56, 0xbc, 0x67, 0x73, 0x2b, 0x8e, 0x1e, 0x6d, 0xc5, 0xd1, 0x1f, 0x5b, + 0x71, 0xf4, 0xe1, 0xe3, 0x78, 0xcf, 0xa3, 0xc7, 0xf1, 0x9e, 0xdf, 0x1f, 0xc7, 0x7b, 0xde, 0x18, + 0x0f, 0x0c, 0xd2, 0xf3, 0x16, 0x2f, 0x5d, 0xf7, 0xac, 0xe6, 0xf5, 0x5b, 0xae, 0x75, 0xf9, 0x7f, + 0x10, 0xd9, 0xb0, 0xfc, 0x7b, 0xff, 0xc9, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x3b, 0xe2, 0xae, + 0x71, 0xea, 0x18, 0x00, 0x00, } func (this *QueryContractInfoResponse) Equal(that interface{}) bool { @@ -1660,7 +1660,7 @@ type QueryClient interface { // ContractsByCreator gets the contracts by creator ContractsByCreator(ctx context.Context, in *QueryContractsByCreatorRequest, opts ...grpc.CallOption) (*QueryContractsByCreatorResponse, error) // WasmLimitsConfig gets the configured limits for static validation of Wasm - // files, encoded in MsgPack. + // files, encoded in JSON. WasmLimitsConfig(ctx context.Context, in *QueryWasmLimitsConfigRequest, opts ...grpc.CallOption) (*QueryWasmLimitsConfigResponse, error) // BuildAddress builds a contract address BuildAddress(ctx context.Context, in *QueryBuildAddressRequest, opts ...grpc.CallOption) (*QueryBuildAddressResponse, error) @@ -1827,7 +1827,7 @@ type QueryServer interface { // ContractsByCreator gets the contracts by creator ContractsByCreator(context.Context, *QueryContractsByCreatorRequest) (*QueryContractsByCreatorResponse, error) // WasmLimitsConfig gets the configured limits for static validation of Wasm - // files, encoded in MsgPack. + // files, encoded in JSON. WasmLimitsConfig(context.Context, *QueryWasmLimitsConfigRequest) (*QueryWasmLimitsConfigResponse, error) // BuildAddress builds a contract address BuildAddress(context.Context, *QueryBuildAddressRequest) (*QueryBuildAddressResponse, error) @@ -6636,7 +6636,7 @@ func (m *QueryWasmLimitsConfigResponse) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -6646,25 +6646,23 @@ func (m *QueryWasmLimitsConfigResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.Config = append(m.Config[:0], dAtA[iNdEx:postIndex]...) - if m.Config == nil { - m.Config = []byte{} - } + m.Config = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex From a1b5a160c08f32aa364e962e5257f737f37444e8 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Thu, 26 Sep 2024 23:15:02 +0700 Subject: [PATCH 13/40] Add WasmLimits to WasmConfig --- x/wasm/keeper/keeper.go | 7 +++++++ x/wasm/keeper/keeper_cgo.go | 14 ++++++++++++-- x/wasm/keeper/querier.go | 8 +++++++- x/wasm/types/exported_keepers.go | 1 + x/wasm/types/types.go | 2 ++ 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 27dc6074fd..13b756757e 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -109,6 +109,9 @@ type Keeper struct { // the address capable of executing a MsgUpdateParams message. Typically, this // should be the x/gov module account. authority string + + // wasmLimits contains the limits sent to wasmvm on init + wasmLimits wasmvmtypes.WasmLimits } func (k Keeper) getUploadAccessConfig(ctx context.Context) types.AccessConfig { @@ -119,6 +122,10 @@ func (k Keeper) getInstantiateAccessConfig(ctx context.Context) types.AccessType return k.GetParams(ctx).InstantiateDefaultPermission } +func (k Keeper) GetWasmLimits() wasmvmtypes.WasmLimits { + return k.wasmLimits +} + // GetParams returns the total set of wasm parameters. func (k Keeper) GetParams(ctx context.Context) types.Params { p, err := k.params.Get(ctx) diff --git a/x/wasm/keeper/keeper_cgo.go b/x/wasm/keeper/keeper_cgo.go index 06f95cfaa7..88b283b49d 100644 --- a/x/wasm/keeper/keeper_cgo.go +++ b/x/wasm/keeper/keeper_cgo.go @@ -6,6 +6,7 @@ import ( "path/filepath" wasmvm "github.com/CosmWasm/wasmvm/v2" + wasmvmtypes "github.com/CosmWasm/wasmvm/v2/types" "cosmossdk.io/collections" corestoretypes "cosmossdk.io/core/store" @@ -56,7 +57,8 @@ func NewKeeper( propagateGovAuthorization: map[types.AuthorizationPolicyAction]struct{}{ types.AuthZActionInstantiate: {}, }, - authority: authority, + authority: authority, + wasmLimits: wasmConfig.WasmLimits, } keeper.messenger = NewDefaultMessageHandler(keeper, router, ics4Wrapper, channelKeeper, capabilityKeeper, bankKeeper, cdc, portSource) keeper.wasmVMQueryHandler = DefaultQueryPlugins(bankKeeper, stakingKeeper, distrKeeper, channelKeeper, keeper) @@ -70,7 +72,15 @@ func NewKeeper( // NewVM does a lot, so better not to create it and silently drop it. if keeper.wasmVM == nil { var err error - keeper.wasmVM, err = wasmvm.NewVM(filepath.Join(homeDir, "wasm"), availableCapabilities, contractMemoryLimit, wasmConfig.ContractDebugMode, wasmConfig.MemoryCacheSize) + keeper.wasmVM, err = wasmvm.NewVMWithConfig(wasmvmtypes.VMConfig{ + Cache: wasmvmtypes.CacheOptions{ + BaseDir: filepath.Join(homeDir, "wasm"), + AvailableCapabilities: availableCapabilities, + MemoryCacheSize: wasmvmtypes.NewSizeMebi(contractMemoryLimit), + InstanceMemoryLimit: wasmvmtypes.NewSizeMebi(wasmConfig.MemoryCacheSize), + }, + WasmLimits: wasmConfig.WasmLimits, + }, wasmConfig.ContractDebugMode) if err != nil { panic(err) } diff --git a/x/wasm/keeper/querier.go b/x/wasm/keeper/querier.go index da71ad1a47..54429d04b5 100644 --- a/x/wasm/keeper/querier.go +++ b/x/wasm/keeper/querier.go @@ -4,6 +4,7 @@ import ( "context" "encoding/binary" "encoding/hex" + "encoding/json" "fmt" "runtime/debug" @@ -440,8 +441,13 @@ func ensurePaginationParams(req *query.PageRequest) (*query.PageRequest, error) } func (q GrpcQuerier) WasmLimitsConfig(c context.Context, req *types.QueryWasmLimitsConfigRequest) (*types.QueryWasmLimitsConfigResponse, error) { + json, err := json.Marshal(q.keeper.GetWasmLimits()) + if err != nil { + return nil, err + } + return &types.QueryWasmLimitsConfigResponse{ - Config: "{\"todo\": \"put serialized limits here\"}", // TODO: implement + Config: string(json), }, nil } diff --git a/x/wasm/types/exported_keepers.go b/x/wasm/types/exported_keepers.go index 0ece2c0207..b9d953baab 100644 --- a/x/wasm/types/exported_keepers.go +++ b/x/wasm/types/exported_keepers.go @@ -27,6 +27,7 @@ type ViewKeeper interface { GetByteCode(ctx context.Context, codeID uint64) ([]byte, error) IsPinnedCode(ctx context.Context, codeID uint64) bool GetParams(ctx context.Context) Params + GetWasmLimits() wasmvmtypes.WasmLimits } // ContractOpsKeeper contains mutable operations on a contract. diff --git a/x/wasm/types/types.go b/x/wasm/types/types.go index 1aea6ef149..e104337061 100644 --- a/x/wasm/types/types.go +++ b/x/wasm/types/types.go @@ -326,6 +326,8 @@ type WasmConfig struct { MemoryCacheSize uint32 `mapstructure:"memory_cache_size"` // ContractDebugMode log what contract print ContractDebugMode bool + // WasmLimits are the limits that are used for static validation of Wasm binaries. + WasmLimits wasmvmtypes.WasmLimits } // DefaultWasmConfig returns the default settings for WasmConfig From 1b4ebad326c5cfc7f58f6474310c13f5e57c86b4 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Fri, 27 Sep 2024 09:50:28 +0700 Subject: [PATCH 14/40] Add wasm limits query test --- x/wasm/keeper/querier_test.go | 49 +++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index 90436db419..5f325038af 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -20,6 +20,7 @@ import ( "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" + dbm "github.com/cosmos/cosmos-db" sdk "github.com/cosmos/cosmos-sdk/types" sdkErrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/query" @@ -686,6 +687,54 @@ func TestQueryContractInfo(t *testing.T) { } } +func ptr[T any](v T) *T { + return &v +} + +func TestQueryWasmLimitsConfig(t *testing.T) { + cfg := types.DefaultWasmConfig() + + specs := map[string]struct { + limits wasmvmtypes.WasmLimits + expJSON []byte + }{ + "all 15": { + limits: wasmvmtypes.WasmLimits{ + InitialMemoryLimit: ptr(uint32(15)), + TableSizeLimit: ptr(uint32(15)), + MaxImports: ptr(uint32(15)), + MaxFunctions: ptr(uint32(15)), + MaxFunctionParams: ptr(uint32(15)), + MaxTotalFunctionParams: ptr(uint32(15)), + MaxFunctionResults: ptr(uint32(15)), + }, + expJSON: []byte(`{"initial_memory_limit":15,"table_size_limit":15,"max_imports":15,"max_functions":15,"max_function_params":15,"max_total_function_params":15,"max_function_results":15}`), + }, + "empty": { + limits: wasmvmtypes.WasmLimits{}, + expJSON: []byte("{}"), + }, + } + + for name, spec := range specs { + t.Run(name, func(t *testing.T) { + cfg.WasmLimits = spec.limits + + ctx, keepers := createTestInput(t, false, AvailableCapabilities, cfg, dbm.NewMemDB()) + keeper := keepers.WasmKeeper + + q := Querier(keeper) + + response, err := q.WasmLimitsConfig(ctx, &types.QueryWasmLimitsConfigRequest{}) + require.NoError(t, err) + require.NotNil(t, response) + + assert.Equal(t, string(spec.expJSON), response.Config) + // assert.Equal(t, spec.expJSON, []byte(response.Config)) + }) + } +} + func TestQueryPinnedCodes(t *testing.T) { ctx, keepers := CreateTestInput(t, false, AvailableCapabilities) keeper := keepers.WasmKeeper From fce405c7a95344b008849306a0f4a4e62d162318 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Fri, 27 Sep 2024 10:51:35 +0700 Subject: [PATCH 15/40] Add test for wasm limits --- x/wasm/keeper/keeper_test.go | 16 ++++++++++++++++ x/wasm/keeper/querier_test.go | 4 ---- x/wasm/keeper/test_common.go | 5 +++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index dc0afc507e..104d8202e5 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -86,6 +86,22 @@ func TestCreateNilCreatorAddress(t *testing.T) { require.Error(t, err, "nil creator is not allowed") } +func TestWasmLimits(t *testing.T) { + cfg := types.DefaultWasmConfig() + cfg.WasmLimits = wasmvmtypes.WasmLimits{ + MaxImports: ptr(uint32(1)), // very low limit that every contract will fail + } + ctx, keepers := createTestInput(t, false, AvailableCapabilities, cfg, dbm.NewMemDB()) + keeper := keepers.ContractKeeper + + deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 1)) + creator := keepers.Faucet.NewFundedRandomAccount(ctx, deposit...) + + _, _, err := keeper.Create(ctx, creator, hackatomWasm, nil) + assert.Error(t, err) + assert.ErrorContains(t, err, "Import") +} + func TestCreateNilWasmCode(t *testing.T) { ctx, keepers := CreateTestInput(t, false, AvailableCapabilities) deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index 5f325038af..b4e7112d32 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -687,10 +687,6 @@ func TestQueryContractInfo(t *testing.T) { } } -func ptr[T any](v T) *T { - return &v -} - func TestQueryWasmLimitsConfig(t *testing.T) { cfg := types.DefaultWasmConfig() diff --git a/x/wasm/keeper/test_common.go b/x/wasm/keeper/test_common.go index 0314982612..e6f20abd8e 100644 --- a/x/wasm/keeper/test_common.go +++ b/x/wasm/keeper/test_common.go @@ -811,3 +811,8 @@ func keyPubAddr() (crypto.PrivKey, sdk.AccAddress) { addr := sdk.AccAddress(pub.Address()) return key, addr } + +// ptr returns a pointer to the value passed in +func ptr[T any](v T) *T { + return &v +} From 3f7e7d0d8f716910608a415960eb3120c913359d Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Fri, 27 Sep 2024 10:57:15 +0700 Subject: [PATCH 16/40] Fix formatting --- x/wasm/keeper/querier_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index b4e7112d32..6712e34650 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -11,6 +11,7 @@ import ( wasmvm "github.com/CosmWasm/wasmvm/v2" wasmvmtypes "github.com/CosmWasm/wasmvm/v2/types" + dbm "github.com/cosmos/cosmos-db" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc/codes" @@ -20,7 +21,6 @@ import ( "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" - dbm "github.com/cosmos/cosmos-db" sdk "github.com/cosmos/cosmos-sdk/types" sdkErrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/query" From 2815f22122a7d6531d384fb037ac46cd16b71117 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Mon, 30 Sep 2024 17:12:44 +0700 Subject: [PATCH 17/40] Remove ptr function --- x/wasm/keeper/keeper_test.go | 3 ++- x/wasm/keeper/querier_test.go | 16 +++++++++------- x/wasm/keeper/test_common.go | 5 ----- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 104d8202e5..a0ce0c20a6 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -87,9 +87,10 @@ func TestCreateNilCreatorAddress(t *testing.T) { } func TestWasmLimits(t *testing.T) { + one := uint32(1) cfg := types.DefaultWasmConfig() cfg.WasmLimits = wasmvmtypes.WasmLimits{ - MaxImports: ptr(uint32(1)), // very low limit that every contract will fail + MaxImports: &one, // very low limit that every contract will fail } ctx, keepers := createTestInput(t, false, AvailableCapabilities, cfg, dbm.NewMemDB()) keeper := keepers.ContractKeeper diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index 6712e34650..c25a9fafad 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -690,19 +690,21 @@ func TestQueryContractInfo(t *testing.T) { func TestQueryWasmLimitsConfig(t *testing.T) { cfg := types.DefaultWasmConfig() + fifteen := uint32(15) + specs := map[string]struct { limits wasmvmtypes.WasmLimits expJSON []byte }{ "all 15": { limits: wasmvmtypes.WasmLimits{ - InitialMemoryLimit: ptr(uint32(15)), - TableSizeLimit: ptr(uint32(15)), - MaxImports: ptr(uint32(15)), - MaxFunctions: ptr(uint32(15)), - MaxFunctionParams: ptr(uint32(15)), - MaxTotalFunctionParams: ptr(uint32(15)), - MaxFunctionResults: ptr(uint32(15)), + InitialMemoryLimit: &fifteen, + TableSizeLimit: &fifteen, + MaxImports: &fifteen, + MaxFunctions: &fifteen, + MaxFunctionParams: &fifteen, + MaxTotalFunctionParams: &fifteen, + MaxFunctionResults: &fifteen, }, expJSON: []byte(`{"initial_memory_limit":15,"table_size_limit":15,"max_imports":15,"max_functions":15,"max_function_params":15,"max_total_function_params":15,"max_function_results":15}`), }, diff --git a/x/wasm/keeper/test_common.go b/x/wasm/keeper/test_common.go index e6f20abd8e..0314982612 100644 --- a/x/wasm/keeper/test_common.go +++ b/x/wasm/keeper/test_common.go @@ -811,8 +811,3 @@ func keyPubAddr() (crypto.PrivKey, sdk.AccAddress) { addr := sdk.AccAddress(pub.Address()) return key, addr } - -// ptr returns a pointer to the value passed in -func ptr[T any](v T) *T { - return &v -} From 5da6acd3131034b724f5297a9f3ec81d1d36b703 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Mon, 7 Oct 2024 17:57:52 +0700 Subject: [PATCH 18/40] Rename WasmConfig to NodeConfig --- app/ante.go | 6 +++--- app/app.go | 10 +++++----- cmd/wasmd/commands.go | 4 ++-- tests/integration/module_test.go | 18 +++++++++--------- x/wasm/alias.go | 4 ++-- x/wasm/keeper/bench_test.go | 8 ++++---- x/wasm/keeper/genesis_test.go | 4 ++-- x/wasm/keeper/keeper_cgo.go | 12 ++++++------ x/wasm/keeper/keeper_no_cgo.go | 2 +- x/wasm/keeper/keeper_test.go | 2 +- x/wasm/keeper/options_test.go | 2 +- x/wasm/keeper/querier_test.go | 2 +- x/wasm/keeper/test_common.go | 6 +++--- x/wasm/module.go | 8 ++++---- x/wasm/types/types.go | 16 +++++++--------- 15 files changed, 51 insertions(+), 53 deletions(-) diff --git a/app/ante.go b/app/ante.go index aeb139360d..8f09c57097 100644 --- a/app/ante.go +++ b/app/ante.go @@ -23,7 +23,7 @@ type HandlerOptions struct { ante.HandlerOptions IBCKeeper *keeper.Keeper - WasmConfig *wasmTypes.WasmConfig + NodeConfig *wasmTypes.NodeConfig WasmKeeper *wasmkeeper.Keeper TXCounterStoreService corestoretypes.KVStoreService CircuitKeeper *circuitkeeper.Keeper @@ -40,7 +40,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { if options.SignModeHandler == nil { return nil, errors.New("sign mode handler is required for ante builder") } - if options.WasmConfig == nil { + if options.NodeConfig == nil { return nil, errors.New("wasm config is required for ante builder") } if options.TXCounterStoreService == nil { @@ -52,7 +52,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { anteDecorators := []sdk.AnteDecorator{ ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first - wasmkeeper.NewLimitSimulationGasDecorator(options.WasmConfig.SimulationGasLimit), // after setup context to enforce limits early + wasmkeeper.NewLimitSimulationGasDecorator(options.NodeConfig.SimulationGasLimit), // after setup context to enforce limits early wasmkeeper.NewCountTXDecorator(options.TXCounterStoreService), wasmkeeper.NewGasRegisterDecorator(options.WasmKeeper.GetGasRegister()), wasmkeeper.NewTxContractsDecorator(), diff --git a/app/app.go b/app/app.go index 85cd58d8bd..bae00edb30 100644 --- a/app/app.go +++ b/app/app.go @@ -623,7 +623,7 @@ func NewWasmApp( ) wasmDir := filepath.Join(homePath, "wasm") - wasmConfig, err := wasm.ReadWasmConfig(appOpts) + nodeConfig, err := wasm.ReadNodeConfig(appOpts) if err != nil { panic(fmt.Sprintf("error while reading wasm config: %s", err)) } @@ -645,7 +645,7 @@ func NewWasmApp( app.MsgServiceRouter(), app.GRPCQueryRouter(), wasmDir, - wasmConfig, + nodeConfig, wasmkeeper.BuiltInCapabilities(), authtypes.NewModuleAddress(govtypes.ModuleName).String(), wasmOpts..., @@ -871,7 +871,7 @@ func NewWasmApp( app.SetPreBlocker(app.PreBlocker) app.SetBeginBlocker(app.BeginBlocker) app.SetEndBlocker(app.EndBlocker) - app.setAnteHandler(txConfig, wasmConfig, keys[wasmtypes.StoreKey]) + app.setAnteHandler(txConfig, nodeConfig, keys[wasmtypes.StoreKey]) // must be before Loading version // requires the snapshot store to be created and registered as a BaseAppOption @@ -934,7 +934,7 @@ func NewWasmApp( return app } -func (app *WasmApp) setAnteHandler(txConfig client.TxConfig, wasmConfig wasmtypes.WasmConfig, txCounterStoreKey *storetypes.KVStoreKey) { +func (app *WasmApp) setAnteHandler(txConfig client.TxConfig, nodeConfig wasmtypes.NodeConfig, txCounterStoreKey *storetypes.KVStoreKey) { anteHandler, err := NewAnteHandler( HandlerOptions{ HandlerOptions: ante.HandlerOptions{ @@ -945,7 +945,7 @@ func (app *WasmApp) setAnteHandler(txConfig client.TxConfig, wasmConfig wasmtype SigGasConsumer: ante.DefaultSigVerificationGasConsumer, }, IBCKeeper: app.IBCKeeper, - WasmConfig: &wasmConfig, + NodeConfig: &nodeConfig, WasmKeeper: &app.WasmKeeper, TXCounterStoreService: runtime.NewKVStoreService(txCounterStoreKey), CircuitKeeper: &app.CircuitKeeper, diff --git a/cmd/wasmd/commands.go b/cmd/wasmd/commands.go index 29d696254d..cb9d006682 100644 --- a/cmd/wasmd/commands.go +++ b/cmd/wasmd/commands.go @@ -61,7 +61,7 @@ func initAppConfig() (string, interface{}) { type CustomAppConfig struct { serverconfig.Config - Wasm wasmtypes.WasmConfig `mapstructure:"wasm"` + Wasm wasmtypes.NodeConfig `mapstructure:"wasm"` } // Optionally allow the chain developer to overwrite the SDK's default @@ -84,7 +84,7 @@ func initAppConfig() (string, interface{}) { customAppConfig := CustomAppConfig{ Config: *srvCfg, - Wasm: wasmtypes.DefaultWasmConfig(), + Wasm: wasmtypes.DefaultNodeConfig(), } customAppTemplate := serverconfig.DefaultConfigTemplate + diff --git a/tests/integration/module_test.go b/tests/integration/module_test.go index 1155968585..2da621648f 100644 --- a/tests/integration/module_test.go +++ b/tests/integration/module_test.go @@ -446,7 +446,7 @@ func TestHandleExecuteEscrow(t *testing.T) { assert.Equal(t, sdk.Coins{}, data.bankKeeper.GetAllBalances(data.ctx, contractAcct.GetAddress())) } -func TestReadWasmConfig(t *testing.T) { +func TestReadNodeConfig(t *testing.T) { withViper := func(s string) *viper.Viper { v := viper.New() v.SetConfigType("toml") @@ -454,17 +454,17 @@ func TestReadWasmConfig(t *testing.T) { return v } var one uint64 = 1 - defaults := types.DefaultWasmConfig() + defaults := types.DefaultNodeConfig() specs := map[string]struct { src servertypes.AppOptions - exp types.WasmConfig + exp types.NodeConfig }{ "set query gas limit via opts": { src: AppOptionsMock{ "wasm.query_gas_limit": 1, }, - exp: types.WasmConfig{ + exp: types.NodeConfig{ SmartQueryGasLimit: 1, MemoryCacheSize: defaults.MemoryCacheSize, }, @@ -473,7 +473,7 @@ func TestReadWasmConfig(t *testing.T) { src: AppOptionsMock{ "wasm.memory_cache_size": 2, }, - exp: types.WasmConfig{ + exp: types.NodeConfig{ MemoryCacheSize: 2, SmartQueryGasLimit: defaults.SmartQueryGasLimit, }, @@ -482,7 +482,7 @@ func TestReadWasmConfig(t *testing.T) { src: AppOptionsMock{ "trace": true, }, - exp: types.WasmConfig{ + exp: types.NodeConfig{ SmartQueryGasLimit: defaults.SmartQueryGasLimit, MemoryCacheSize: defaults.MemoryCacheSize, ContractDebugMode: true, @@ -497,12 +497,12 @@ func TestReadWasmConfig(t *testing.T) { exp: defaults, }, "custom config template values": { - src: withViper(types.ConfigTemplate(types.WasmConfig{ + src: withViper(types.ConfigTemplate(types.NodeConfig{ SimulationGasLimit: &one, SmartQueryGasLimit: 2, MemoryCacheSize: 3, })), - exp: types.WasmConfig{ + exp: types.NodeConfig{ SimulationGasLimit: &one, SmartQueryGasLimit: 2, MemoryCacheSize: 3, @@ -512,7 +512,7 @@ func TestReadWasmConfig(t *testing.T) { } for msg, spec := range specs { t.Run(msg, func(t *testing.T) { - got, err := wasm.ReadWasmConfig(spec.src) + got, err := wasm.ReadNodeConfig(spec.src) require.NoError(t, err) assert.Equal(t, spec.exp, got) }) diff --git a/x/wasm/alias.go b/x/wasm/alias.go index f53463b993..fd4453e5ec 100644 --- a/x/wasm/alias.go +++ b/x/wasm/alias.go @@ -51,7 +51,7 @@ var ( // Deprecated: Do not use. NewWasmCoins = types.NewWasmCoins // Deprecated: Do not use. - DefaultWasmConfig = types.DefaultWasmConfig + DefaultNodeConfig = types.DefaultNodeConfig // Deprecated: Do not use. DefaultParams = types.DefaultParams // Deprecated: Do not use. @@ -174,7 +174,7 @@ type ( // Deprecated: Do not use. CreatedAt = types.AbsoluteTxPosition // Deprecated: Do not use. - Config = types.WasmConfig + Config = types.NodeConfig // Deprecated: Do not use. CodeInfoResponse = types.CodeInfoResponse // Deprecated: Do not use. diff --git a/x/wasm/keeper/bench_test.go b/x/wasm/keeper/bench_test.go index 19bb7de44d..aad678d96d 100644 --- a/x/wasm/keeper/bench_test.go +++ b/x/wasm/keeper/bench_test.go @@ -51,8 +51,8 @@ func BenchmarkInstantiationOverhead(b *testing.B) { } for name, spec := range specs { b.Run(name, func(b *testing.B) { - wasmConfig := types.WasmConfig{MemoryCacheSize: 0} - ctx, keepers := createTestInput(b, false, AvailableCapabilities, wasmConfig, spec.db()) + nodeConfig := types.NodeConfig{MemoryCacheSize: 0} + ctx, keepers := createTestInput(b, false, AvailableCapabilities, nodeConfig, spec.db()) example := InstantiateHackatomExampleContract(b, ctx, keepers) if spec.pinned { require.NoError(b, keepers.ContractKeeper.PinCode(ctx, example.CodeID)) @@ -85,9 +85,9 @@ func BenchmarkCompilation(b *testing.B) { for name, spec := range specs { b.Run(name, func(b *testing.B) { - wasmConfig := types.WasmConfig{MemoryCacheSize: 0} + nodeConfig := types.NodeConfig{MemoryCacheSize: 0} db := dbm.NewMemDB() - ctx, keepers := createTestInput(b, false, AvailableCapabilities, wasmConfig, db) + ctx, keepers := createTestInput(b, false, AvailableCapabilities, nodeConfig, db) // print out code size for comparisons code, err := os.ReadFile(spec.wasmFile) diff --git a/x/wasm/keeper/genesis_test.go b/x/wasm/keeper/genesis_test.go index f16b151a4b..cfba8aa27e 100644 --- a/x/wasm/keeper/genesis_test.go +++ b/x/wasm/keeper/genesis_test.go @@ -680,7 +680,7 @@ func setupKeeper(t *testing.T) (*Keeper, sdk.Context) { // also registering gov interfaces for nested Any type v1beta1.RegisterInterfaces(encodingConfig.InterfaceRegistry) - wasmConfig := types.DefaultWasmConfig() + nodeConfig := types.DefaultNodeConfig() srcKeeper := NewKeeper( encodingConfig.Codec, @@ -697,7 +697,7 @@ func setupKeeper(t *testing.T) (*Keeper, sdk.Context) { nil, nil, tempDir, - wasmConfig, + nodeConfig, AvailableCapabilities, authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) diff --git a/x/wasm/keeper/keeper_cgo.go b/x/wasm/keeper/keeper_cgo.go index 88b283b49d..a57dd64c9b 100644 --- a/x/wasm/keeper/keeper_cgo.go +++ b/x/wasm/keeper/keeper_cgo.go @@ -33,7 +33,7 @@ func NewKeeper( router MessageRouter, _ GRPCQueryRouter, homeDir string, - wasmConfig types.WasmConfig, + nodeConfig types.NodeConfig, availableCapabilities []string, authority string, opts ...Option, @@ -48,7 +48,7 @@ func NewKeeper( accountPruner: NewVestingCoinBurner(bankKeeper), portKeeper: portKeeper, capabilityKeeper: capabilityKeeper, - queryGasLimit: wasmConfig.SmartQueryGasLimit, + queryGasLimit: nodeConfig.SmartQueryGasLimit, gasRegister: types.NewDefaultWasmGasRegister(), maxQueryStackSize: types.DefaultMaxQueryStackSize, maxCallDepth: types.DefaultMaxCallDepth, @@ -58,7 +58,7 @@ func NewKeeper( types.AuthZActionInstantiate: {}, }, authority: authority, - wasmLimits: wasmConfig.WasmLimits, + wasmLimits: nodeConfig.WasmLimits, } keeper.messenger = NewDefaultMessageHandler(keeper, router, ics4Wrapper, channelKeeper, capabilityKeeper, bankKeeper, cdc, portSource) keeper.wasmVMQueryHandler = DefaultQueryPlugins(bankKeeper, stakingKeeper, distrKeeper, channelKeeper, keeper) @@ -77,10 +77,10 @@ func NewKeeper( BaseDir: filepath.Join(homeDir, "wasm"), AvailableCapabilities: availableCapabilities, MemoryCacheSize: wasmvmtypes.NewSizeMebi(contractMemoryLimit), - InstanceMemoryLimit: wasmvmtypes.NewSizeMebi(wasmConfig.MemoryCacheSize), + InstanceMemoryLimit: wasmvmtypes.NewSizeMebi(nodeConfig.MemoryCacheSize), }, - WasmLimits: wasmConfig.WasmLimits, - }, wasmConfig.ContractDebugMode) + WasmLimits: nodeConfig.WasmLimits, + }, nodeConfig.ContractDebugMode) if err != nil { panic(err) } diff --git a/x/wasm/keeper/keeper_no_cgo.go b/x/wasm/keeper/keeper_no_cgo.go index 261b2bad2a..2ad18ad17b 100644 --- a/x/wasm/keeper/keeper_no_cgo.go +++ b/x/wasm/keeper/keeper_no_cgo.go @@ -27,7 +27,7 @@ func NewKeeper( router MessageRouter, _ GRPCQueryRouter, homeDir string, - wasmConfig types.WasmConfig, + nodeConfig types.NodeConfig, availableCapabilities string, authority string, opts ...Option, diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index a0ce0c20a6..e3562d1454 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -88,7 +88,7 @@ func TestCreateNilCreatorAddress(t *testing.T) { func TestWasmLimits(t *testing.T) { one := uint32(1) - cfg := types.DefaultWasmConfig() + cfg := types.DefaultNodeConfig() cfg.WasmLimits = wasmvmtypes.WasmLimits{ MaxImports: &one, // very low limit that every contract will fail } diff --git a/x/wasm/keeper/options_test.go b/x/wasm/keeper/options_test.go index f6576ce3a2..541fcaaeb3 100644 --- a/x/wasm/keeper/options_test.go +++ b/x/wasm/keeper/options_test.go @@ -155,7 +155,7 @@ func TestConstructorOptions(t *testing.T) { opt := spec.srcOpt _, gotPostOptMarker := opt.(postOptsFn) require.Equal(t, spec.isPostOpt, gotPostOptMarker) - k := NewKeeper(codec, runtime.NewKVStoreService(storeKey), authkeeper.AccountKeeper{}, &bankkeeper.BaseKeeper{}, stakingkeeper.Keeper{}, nil, nil, nil, nil, nil, nil, nil, nil, tempDir, types.DefaultWasmConfig(), AvailableCapabilities, "", spec.srcOpt) + k := NewKeeper(codec, runtime.NewKVStoreService(storeKey), authkeeper.AccountKeeper{}, &bankkeeper.BaseKeeper{}, stakingkeeper.Keeper{}, nil, nil, nil, nil, nil, nil, nil, nil, tempDir, types.DefaultNodeConfig(), AvailableCapabilities, "", spec.srcOpt) spec.verify(t, k) }) } diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index c25a9fafad..32a4676f08 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -688,7 +688,7 @@ func TestQueryContractInfo(t *testing.T) { } func TestQueryWasmLimitsConfig(t *testing.T) { - cfg := types.DefaultWasmConfig() + cfg := types.DefaultNodeConfig() fifteen := uint32(15) diff --git a/x/wasm/keeper/test_common.go b/x/wasm/keeper/test_common.go index 0314982612..fe37906f36 100644 --- a/x/wasm/keeper/test_common.go +++ b/x/wasm/keeper/test_common.go @@ -212,7 +212,7 @@ func CreateDefaultTestInput(t testing.TB) (sdk.Context, TestKeepers) { // CreateTestInput encoders can be nil to accept the defaults, or set it to override some of the message handlers (like default) func CreateTestInput(t testing.TB, isCheckTx bool, availableCapabilities []string, opts ...Option) (sdk.Context, TestKeepers) { // Load default wasm config - return createTestInput(t, isCheckTx, availableCapabilities, types.DefaultWasmConfig(), dbm.NewMemDB(), opts...) + return createTestInput(t, isCheckTx, availableCapabilities, types.DefaultNodeConfig(), dbm.NewMemDB(), opts...) } // encoders can be nil to accept the defaults, or set it to override some of the message handlers (like default) @@ -220,7 +220,7 @@ func createTestInput( t testing.TB, isCheckTx bool, availableCapabilities []string, - wasmConfig types.WasmConfig, + nodeConfig types.NodeConfig, db dbm.DB, opts ...Option, ) (sdk.Context, TestKeepers) { @@ -405,7 +405,7 @@ func createTestInput( msgRouter, querier, tempDir, - wasmConfig, + nodeConfig, availableCapabilities, authtypes.NewModuleAddress(govtypes.ModuleName).String(), opts..., diff --git a/x/wasm/module.go b/x/wasm/module.go index 4fdf8f9dd4..c0a628e039 100644 --- a/x/wasm/module.go +++ b/x/wasm/module.go @@ -222,7 +222,7 @@ func (am AppModule) WeightedOperations(simState module.SimulationState) []simtyp // AddModuleInitFlags implements servertypes.ModuleInitFlags interface. func AddModuleInitFlags(startCmd *cobra.Command) { - defaults := types.DefaultWasmConfig() + defaults := types.DefaultNodeConfig() startCmd.Flags().Uint32(flagWasmMemoryCacheSize, defaults.MemoryCacheSize, "Sets the size in MiB (NOT bytes) of an in-memory cache for Wasm modules. Set to 0 to disable.") startCmd.Flags().Uint64(flagWasmQueryGasLimit, defaults.SmartQueryGasLimit, "Set the max gas that can be spent on executing a query with a Wasm contract") startCmd.Flags().String(flagWasmSimulationGasLimit, "", "Set the max gas that can be spent when executing a simulation TX") @@ -242,9 +242,9 @@ func AddModuleInitFlags(startCmd *cobra.Command) { startCmd.PreRunE = chainPreRuns(preCheck, startCmd.PreRunE) } -// ReadWasmConfig reads the wasm specifig configuration -func ReadWasmConfig(opts servertypes.AppOptions) (types.WasmConfig, error) { - cfg := types.DefaultWasmConfig() +// ReadNodeConfig reads the node specific configuration +func ReadNodeConfig(opts servertypes.AppOptions) (types.NodeConfig, error) { + cfg := types.DefaultNodeConfig() var err error if v := opts.Get(flagWasmMemoryCacheSize); v != nil { if cfg.MemoryCacheSize, err = cast.ToUint32E(v); err != nil { diff --git a/x/wasm/types/types.go b/x/wasm/types/types.go index e104337061..f7c0707b6a 100644 --- a/x/wasm/types/types.go +++ b/x/wasm/types/types.go @@ -315,8 +315,8 @@ func NewWasmCoins(cosmosCoins sdk.Coins) (wasmCoins []wasmvmtypes.Coin) { return wasmCoins } -// WasmConfig is the extra config required for wasm -type WasmConfig struct { +// NodeConfig is the extra config required for wasm +type NodeConfig struct { // SimulationGasLimit is the max gas to be used in a tx simulation call. // When not set the consensus max block gas is used instead SimulationGasLimit *uint64 `mapstructure:"simulation_gas_limit"` @@ -326,13 +326,11 @@ type WasmConfig struct { MemoryCacheSize uint32 `mapstructure:"memory_cache_size"` // ContractDebugMode log what contract print ContractDebugMode bool - // WasmLimits are the limits that are used for static validation of Wasm binaries. - WasmLimits wasmvmtypes.WasmLimits } -// DefaultWasmConfig returns the default settings for WasmConfig -func DefaultWasmConfig() WasmConfig { - return WasmConfig{ +// DefaultNodeConfig returns the default settings for NodeConfig +func DefaultNodeConfig() NodeConfig { + return NodeConfig{ SmartQueryGasLimit: defaultSmartQueryGasLimit, MemoryCacheSize: defaultMemoryCacheSize, ContractDebugMode: defaultContractDebugMode, @@ -341,11 +339,11 @@ func DefaultWasmConfig() WasmConfig { // DefaultConfigTemplate toml snippet with default values for app.toml func DefaultConfigTemplate() string { - return ConfigTemplate(DefaultWasmConfig()) + return ConfigTemplate(DefaultNodeConfig()) } // ConfigTemplate toml snippet for app.toml -func ConfigTemplate(c WasmConfig) string { +func ConfigTemplate(c NodeConfig) string { simGasLimit := `# simulation_gas_limit =` if c.SimulationGasLimit != nil { simGasLimit = fmt.Sprintf(`simulation_gas_limit = %d`, *c.SimulationGasLimit) From d9ac3b808bb114197a3c2c5ee9b901a6b99a703d Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Mon, 7 Oct 2024 18:00:01 +0700 Subject: [PATCH 19/40] Add VMConfig --- app/app.go | 1 + x/wasm/keeper/bench_test.go | 4 ++-- x/wasm/keeper/genesis_test.go | 2 ++ x/wasm/keeper/keeper_cgo.go | 5 +++-- x/wasm/keeper/keeper_no_cgo.go | 1 + x/wasm/keeper/keeper_test.go | 9 +++++---- x/wasm/keeper/options_test.go | 2 +- x/wasm/keeper/querier_test.go | 4 ++-- x/wasm/keeper/test_common.go | 6 ++++-- x/wasm/types/types.go | 6 ++++++ 10 files changed, 27 insertions(+), 13 deletions(-) diff --git a/app/app.go b/app/app.go index bae00edb30..984c5003d2 100644 --- a/app/app.go +++ b/app/app.go @@ -646,6 +646,7 @@ func NewWasmApp( app.GRPCQueryRouter(), wasmDir, nodeConfig, + wasmtypes.VMConfig{}, wasmkeeper.BuiltInCapabilities(), authtypes.NewModuleAddress(govtypes.ModuleName).String(), wasmOpts..., diff --git a/x/wasm/keeper/bench_test.go b/x/wasm/keeper/bench_test.go index aad678d96d..4876b093fb 100644 --- a/x/wasm/keeper/bench_test.go +++ b/x/wasm/keeper/bench_test.go @@ -52,7 +52,7 @@ func BenchmarkInstantiationOverhead(b *testing.B) { for name, spec := range specs { b.Run(name, func(b *testing.B) { nodeConfig := types.NodeConfig{MemoryCacheSize: 0} - ctx, keepers := createTestInput(b, false, AvailableCapabilities, nodeConfig, spec.db()) + ctx, keepers := createTestInput(b, false, AvailableCapabilities, nodeConfig, types.VMConfig{}, spec.db()) example := InstantiateHackatomExampleContract(b, ctx, keepers) if spec.pinned { require.NoError(b, keepers.ContractKeeper.PinCode(ctx, example.CodeID)) @@ -87,7 +87,7 @@ func BenchmarkCompilation(b *testing.B) { b.Run(name, func(b *testing.B) { nodeConfig := types.NodeConfig{MemoryCacheSize: 0} db := dbm.NewMemDB() - ctx, keepers := createTestInput(b, false, AvailableCapabilities, nodeConfig, db) + ctx, keepers := createTestInput(b, false, AvailableCapabilities, nodeConfig, types.VMConfig{}, db) // print out code size for comparisons code, err := os.ReadFile(spec.wasmFile) diff --git a/x/wasm/keeper/genesis_test.go b/x/wasm/keeper/genesis_test.go index cfba8aa27e..189e5e1b99 100644 --- a/x/wasm/keeper/genesis_test.go +++ b/x/wasm/keeper/genesis_test.go @@ -33,6 +33,7 @@ import ( stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/CosmWasm/wasmd/x/wasm/types" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" ) func TestGenesisExportImport(t *testing.T) { @@ -698,6 +699,7 @@ func setupKeeper(t *testing.T) (*Keeper, sdk.Context) { nil, tempDir, nodeConfig, + wasmtypes.VMConfig{}, AvailableCapabilities, authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) diff --git a/x/wasm/keeper/keeper_cgo.go b/x/wasm/keeper/keeper_cgo.go index a57dd64c9b..23542266be 100644 --- a/x/wasm/keeper/keeper_cgo.go +++ b/x/wasm/keeper/keeper_cgo.go @@ -34,6 +34,7 @@ func NewKeeper( _ GRPCQueryRouter, homeDir string, nodeConfig types.NodeConfig, + vmConfig types.VMConfig, availableCapabilities []string, authority string, opts ...Option, @@ -58,7 +59,7 @@ func NewKeeper( types.AuthZActionInstantiate: {}, }, authority: authority, - wasmLimits: nodeConfig.WasmLimits, + wasmLimits: vmConfig.WasmLimits, } keeper.messenger = NewDefaultMessageHandler(keeper, router, ics4Wrapper, channelKeeper, capabilityKeeper, bankKeeper, cdc, portSource) keeper.wasmVMQueryHandler = DefaultQueryPlugins(bankKeeper, stakingKeeper, distrKeeper, channelKeeper, keeper) @@ -79,7 +80,7 @@ func NewKeeper( MemoryCacheSize: wasmvmtypes.NewSizeMebi(contractMemoryLimit), InstanceMemoryLimit: wasmvmtypes.NewSizeMebi(nodeConfig.MemoryCacheSize), }, - WasmLimits: nodeConfig.WasmLimits, + WasmLimits: vmConfig.WasmLimits, }, nodeConfig.ContractDebugMode) if err != nil { panic(err) diff --git a/x/wasm/keeper/keeper_no_cgo.go b/x/wasm/keeper/keeper_no_cgo.go index 2ad18ad17b..f28c8615b4 100644 --- a/x/wasm/keeper/keeper_no_cgo.go +++ b/x/wasm/keeper/keeper_no_cgo.go @@ -28,6 +28,7 @@ func NewKeeper( _ GRPCQueryRouter, homeDir string, nodeConfig types.NodeConfig, + vmConfig types.VMConfig, availableCapabilities string, authority string, opts ...Option, diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index e3562d1454..f80cd89bec 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -89,10 +89,11 @@ func TestCreateNilCreatorAddress(t *testing.T) { func TestWasmLimits(t *testing.T) { one := uint32(1) cfg := types.DefaultNodeConfig() - cfg.WasmLimits = wasmvmtypes.WasmLimits{ - MaxImports: &one, // very low limit that every contract will fail - } - ctx, keepers := createTestInput(t, false, AvailableCapabilities, cfg, dbm.NewMemDB()) + ctx, keepers := createTestInput(t, false, AvailableCapabilities, cfg, types.VMConfig{ + WasmLimits: wasmvmtypes.WasmLimits{ + MaxImports: &one, // very low limit that every contract will fail + }, + }, dbm.NewMemDB()) keeper := keepers.ContractKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 1)) diff --git a/x/wasm/keeper/options_test.go b/x/wasm/keeper/options_test.go index 541fcaaeb3..bb368c1682 100644 --- a/x/wasm/keeper/options_test.go +++ b/x/wasm/keeper/options_test.go @@ -155,7 +155,7 @@ func TestConstructorOptions(t *testing.T) { opt := spec.srcOpt _, gotPostOptMarker := opt.(postOptsFn) require.Equal(t, spec.isPostOpt, gotPostOptMarker) - k := NewKeeper(codec, runtime.NewKVStoreService(storeKey), authkeeper.AccountKeeper{}, &bankkeeper.BaseKeeper{}, stakingkeeper.Keeper{}, nil, nil, nil, nil, nil, nil, nil, nil, tempDir, types.DefaultNodeConfig(), AvailableCapabilities, "", spec.srcOpt) + k := NewKeeper(codec, runtime.NewKVStoreService(storeKey), authkeeper.AccountKeeper{}, &bankkeeper.BaseKeeper{}, stakingkeeper.Keeper{}, nil, nil, nil, nil, nil, nil, nil, nil, tempDir, types.DefaultNodeConfig(), types.VMConfig{}, AvailableCapabilities, "", spec.srcOpt) spec.verify(t, k) }) } diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index 32a4676f08..933f316e2f 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -688,7 +688,7 @@ func TestQueryContractInfo(t *testing.T) { } func TestQueryWasmLimitsConfig(t *testing.T) { - cfg := types.DefaultNodeConfig() + cfg := types.VMConfig{} fifteen := uint32(15) @@ -718,7 +718,7 @@ func TestQueryWasmLimitsConfig(t *testing.T) { t.Run(name, func(t *testing.T) { cfg.WasmLimits = spec.limits - ctx, keepers := createTestInput(t, false, AvailableCapabilities, cfg, dbm.NewMemDB()) + ctx, keepers := createTestInput(t, false, AvailableCapabilities, types.DefaultNodeConfig(), cfg, dbm.NewMemDB()) keeper := keepers.WasmKeeper q := Querier(keeper) diff --git a/x/wasm/keeper/test_common.go b/x/wasm/keeper/test_common.go index fe37906f36..eb1285b759 100644 --- a/x/wasm/keeper/test_common.go +++ b/x/wasm/keeper/test_common.go @@ -212,7 +212,7 @@ func CreateDefaultTestInput(t testing.TB) (sdk.Context, TestKeepers) { // CreateTestInput encoders can be nil to accept the defaults, or set it to override some of the message handlers (like default) func CreateTestInput(t testing.TB, isCheckTx bool, availableCapabilities []string, opts ...Option) (sdk.Context, TestKeepers) { // Load default wasm config - return createTestInput(t, isCheckTx, availableCapabilities, types.DefaultNodeConfig(), dbm.NewMemDB(), opts...) + return createTestInput(t, isCheckTx, availableCapabilities, types.DefaultNodeConfig(), types.VMConfig{}, dbm.NewMemDB(), opts...) } // encoders can be nil to accept the defaults, or set it to override some of the message handlers (like default) @@ -221,6 +221,7 @@ func createTestInput( isCheckTx bool, availableCapabilities []string, nodeConfig types.NodeConfig, + vmConfig types.VMConfig, db dbm.DB, opts ...Option, ) (sdk.Context, TestKeepers) { @@ -359,7 +360,7 @@ func createTestInput( faucet := NewTestFaucet(t, ctx, bankKeeper, minttypes.ModuleName, sdk.NewCoin("stake", sdkmath.NewInt(100_000_000_000))) - // set some funds ot pay out validatores, based on code from: + // set some funds to pay out validators, based on code from: // https://github.com/cosmos/cosmos-sdk/blob/fea231556aee4d549d7551a6190389c4328194eb/x/distribution/keeper/keeper_test.go#L50-L57 distrAcc := distKeeper.GetDistributionAccount(ctx) faucet.Fund(ctx, distrAcc.GetAddress(), sdk.NewCoin("stake", sdkmath.NewInt(2000000))) @@ -406,6 +407,7 @@ func createTestInput( querier, tempDir, nodeConfig, + vmConfig, availableCapabilities, authtypes.NewModuleAddress(govtypes.ModuleName).String(), opts..., diff --git a/x/wasm/types/types.go b/x/wasm/types/types.go index f7c0707b6a..e0f74e72b4 100644 --- a/x/wasm/types/types.go +++ b/x/wasm/types/types.go @@ -315,6 +315,12 @@ func NewWasmCoins(cosmosCoins sdk.Coins) (wasmCoins []wasmvmtypes.Coin) { return wasmCoins } +// VMConfig contains configurations that are passed on to CosmWasm VM. +type VMConfig struct { + // WasmLimits are the limits that are used for static validation of Wasm binaries. + WasmLimits wasmvmtypes.WasmLimits +} + // NodeConfig is the extra config required for wasm type NodeConfig struct { // SimulationGasLimit is the max gas to be used in a tx simulation call. From 0c551b936526bfe7cd0887a39d133355286c7d7b Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Fri, 11 Oct 2024 20:24:45 +0700 Subject: [PATCH 20/40] Fix typo --- x/wasm/keeper/keeper_cgo.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/wasm/keeper/keeper_cgo.go b/x/wasm/keeper/keeper_cgo.go index 23542266be..40c84668ae 100644 --- a/x/wasm/keeper/keeper_cgo.go +++ b/x/wasm/keeper/keeper_cgo.go @@ -77,8 +77,8 @@ func NewKeeper( Cache: wasmvmtypes.CacheOptions{ BaseDir: filepath.Join(homeDir, "wasm"), AvailableCapabilities: availableCapabilities, - MemoryCacheSize: wasmvmtypes.NewSizeMebi(contractMemoryLimit), - InstanceMemoryLimit: wasmvmtypes.NewSizeMebi(nodeConfig.MemoryCacheSize), + MemoryCacheSize: wasmvmtypes.NewSizeMebi(nodeConfig.MemoryCacheSize), + InstanceMemoryLimit: wasmvmtypes.NewSizeMebi(contractMemoryLimit), }, WasmLimits: vmConfig.WasmLimits, }, nodeConfig.ContractDebugMode) From 930241d6093dfd5675b92c746089bb351c33582a Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Thu, 7 Nov 2024 21:47:12 +0700 Subject: [PATCH 21/40] Update to latest wasmvm code --- x/wasm/keeper/keeper_cgo.go | 8 ++++---- x/wasm/keeper/querier_test.go | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/x/wasm/keeper/keeper_cgo.go b/x/wasm/keeper/keeper_cgo.go index 40c84668ae..180eb7b3c5 100644 --- a/x/wasm/keeper/keeper_cgo.go +++ b/x/wasm/keeper/keeper_cgo.go @@ -75,10 +75,10 @@ func NewKeeper( var err error keeper.wasmVM, err = wasmvm.NewVMWithConfig(wasmvmtypes.VMConfig{ Cache: wasmvmtypes.CacheOptions{ - BaseDir: filepath.Join(homeDir, "wasm"), - AvailableCapabilities: availableCapabilities, - MemoryCacheSize: wasmvmtypes.NewSizeMebi(nodeConfig.MemoryCacheSize), - InstanceMemoryLimit: wasmvmtypes.NewSizeMebi(contractMemoryLimit), + BaseDir: filepath.Join(homeDir, "wasm"), + AvailableCapabilities: availableCapabilities, + MemoryCacheSizeBytes: wasmvmtypes.NewSizeMebi(nodeConfig.MemoryCacheSize), + InstanceMemoryLimitBytes: wasmvmtypes.NewSizeMebi(contractMemoryLimit), }, WasmLimits: vmConfig.WasmLimits, }, nodeConfig.ContractDebugMode) diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index 933f316e2f..f35267f38d 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -698,15 +698,15 @@ func TestQueryWasmLimitsConfig(t *testing.T) { }{ "all 15": { limits: wasmvmtypes.WasmLimits{ - InitialMemoryLimit: &fifteen, - TableSizeLimit: &fifteen, - MaxImports: &fifteen, - MaxFunctions: &fifteen, - MaxFunctionParams: &fifteen, - MaxTotalFunctionParams: &fifteen, - MaxFunctionResults: &fifteen, + InitialMemoryLimitPages: &fifteen, + TableSizeLimitElements: &fifteen, + MaxImports: &fifteen, + MaxFunctions: &fifteen, + MaxFunctionParams: &fifteen, + MaxTotalFunctionParams: &fifteen, + MaxFunctionResults: &fifteen, }, - expJSON: []byte(`{"initial_memory_limit":15,"table_size_limit":15,"max_imports":15,"max_functions":15,"max_function_params":15,"max_total_function_params":15,"max_function_results":15}`), + expJSON: []byte(`{"initial_memory_limit_pages":15,"table_size_limit_elements":15,"max_imports":15,"max_functions":15,"max_function_params":15,"max_total_function_params":15,"max_function_results":15}`), }, "empty": { limits: wasmvmtypes.WasmLimits{}, From 248baf8992ac13694478af6a38f0428dd8823167 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Thu, 7 Nov 2024 22:30:32 +0700 Subject: [PATCH 22/40] Add test --- x/wasm/keeper/handler_plugin_encoders_test.go | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/x/wasm/keeper/handler_plugin_encoders_test.go b/x/wasm/keeper/handler_plugin_encoders_test.go index f5536a3355..75faf72384 100644 --- a/x/wasm/keeper/handler_plugin_encoders_test.go +++ b/x/wasm/keeper/handler_plugin_encoders_test.go @@ -5,6 +5,7 @@ import ( wasmvmtypes "github.com/CosmWasm/wasmvm/v2/types" "github.com/cosmos/gogoproto/proto" + ibcfee "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/types" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" //nolint:staticcheck channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" @@ -613,6 +614,86 @@ func TestEncodeIbcMsg(t *testing.T) { }, }, }, + "IBC PayPacketFee": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + IBC: &wasmvmtypes.IBCMsg{ + PayPacketFee: &wasmvmtypes.PayPacketFeeMsg{ + ChannelID: "myChannelID", + Fee: wasmvmtypes.IBCFee{ + TimeoutFee: []wasmvmtypes.Coin{ + { + Denom: "ALX", + Amount: "1", + }, + }, + }, + PortID: "myIBCPort", + Relayers: []string{}, + }, + }, + }, + output: []sdk.Msg{ + &ibcfee.MsgPayPacketFee{ + Fee: ibcfee.Fee{ + TimeoutFee: []sdk.Coin{ + { + Denom: "ALX", + Amount: sdkmath.NewInt(1), + }, + }, + }, + SourcePortId: "myIBCPort", + SourceChannelId: "myChannelID", + Signer: addr1.String(), + Relayers: []string{}, + }, + }, + }, + "IBC PayPacketFeeAsync": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + IBC: &wasmvmtypes.IBCMsg{ + PayPacketFeeAsync: &wasmvmtypes.PayPacketFeeAsyncMsg{ + ChannelID: "myChannelID", + Fee: wasmvmtypes.IBCFee{ + TimeoutFee: []wasmvmtypes.Coin{ + { + Denom: "ALX", + Amount: "1", + }, + }, + }, + PortID: "myIBCPort", + Relayers: []string{}, + Sequence: 42, + }, + }, + }, + output: []sdk.Msg{ + &ibcfee.MsgPayPacketFeeAsync{ + PacketId: channeltypes.PacketId{ + PortId: "myIBCPort", + ChannelId: "myChannelID", + Sequence: 42, + }, + PacketFee: ibcfee.PacketFee{ + Fee: ibcfee.Fee{ + TimeoutFee: []sdk.Coin{ + { + Denom: "ALX", + Amount: sdkmath.NewInt(1), + }, + }, + }, + RefundAddress: addr1.String(), + Relayers: []string{}, + }, + }, + }, + }, } encodingConfig := MakeEncodingConfig(t) for name, tc := range cases { From dc00129f8104a619732be2539441f11e5951a168 Mon Sep 17 00:00:00 2001 From: Pino' Surace <95283998+pinosu@users.noreply.github.com> Date: Fri, 8 Nov 2024 09:38:37 +0100 Subject: [PATCH 23/40] Upgrade go version and bump cometbft to v0.38.15 (#2028) * Bump cometbft to v0.38.15 * Update go version in Dockerfile and circleci * Update Dockerfile * Update golangci-lint * Fix lint --- .circleci/config.yml | 5 +- Dockerfile | 4 +- app/upgrades.go | 2 +- go.mod | 54 ++++++----- go.sum | 139 ++++++++++++---------------- scripts/contrib/devtools/Makefile | 2 +- tests/system/go.mod | 54 +++++------ tests/system/go.sum | 149 +++++++++++++----------------- x/wasm/keeper/authz_policy.go | 2 +- x/wasm/keeper/genesis.go | 2 +- x/wasm/keeper/keeper.go | 2 +- 11 files changed, 182 insertions(+), 233 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 46c3252d10..9ec4537ae5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,7 +5,7 @@ orbs: executors: golang: docker: - - image: cimg/go:1.21 + - image: cimg/go:1.23 commands: make: @@ -80,13 +80,12 @@ jobs: lint: docker: - - image: golangci/golangci-lint:v1.54.2 + - image: golangci/golangci-lint:v1.60.3 steps: - checkout - run: name: Lint command: | - golangci-lint run --version golangci-lint run --tests=false --timeout=5m0s test-cover: diff --git a/Dockerfile b/Dockerfile index 9cfb61573e..3ac8cf51c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,7 @@ # docker build . -t cosmwasm/wasmd:latest # docker run --rm -it cosmwasm/wasmd:latest /bin/sh -# Using Alpine 3.19+ as the build system is currently broken, -# see https://github.com/CosmWasm/wasmvm/issues/523 -FROM golang:1.21-alpine3.18 AS go-builder +FROM golang:1.23-alpine3.19 AS go-builder # this comes from standard alpine nightly file # https://github.com/rust-lang/docker-rust-nightly/blob/master/alpine3.12/Dockerfile diff --git a/app/upgrades.go b/app/upgrades.go index 2ffaa17b70..18236ba9ca 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -70,7 +70,7 @@ func (app *WasmApp) RegisterUpgradeHandlers() { // register store loader for current upgrade for _, upgrade := range Upgrades { if upgradeInfo.Name == upgrade.UpgradeName { - app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &upgrade.StoreUpgrades)) // nolint:gosec + app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &upgrade.StoreUpgrades)) break } } diff --git a/go.mod b/go.mod index 8c7e3ce4be..076a81d997 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/CosmWasm/wasmd -go 1.21 +go 1.23.1 require ( github.com/CosmWasm/wasmvm/v2 v2.2.0-rc.2 @@ -23,7 +23,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/grpc v1.64.1 + google.golang.org/grpc v1.67.1 gopkg.in/yaml.v2 v2.4.0 ) @@ -43,7 +43,7 @@ require ( cosmossdk.io/x/nft v0.1.1 cosmossdk.io/x/tx v0.13.5 cosmossdk.io/x/upgrade v0.1.4 - github.com/cometbft/cometbft v0.38.12 + github.com/cometbft/cometbft v0.38.15 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/ibc-go/modules/apps/callbacks v0.2.1-0.20231113120333-342c00b0f8bd github.com/cosmos/ibc-go/modules/capability v1.0.1 @@ -51,12 +51,12 @@ require ( github.com/distribution/reference v0.5.0 github.com/rs/zerolog v1.33.0 github.com/spf13/viper v1.19.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 ) require ( cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.38.0 // indirect cosmossdk.io/depinject v1.0.0 // indirect @@ -70,9 +70,7 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/bits-and-blooms/bitset v1.8.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect - github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect @@ -82,7 +80,7 @@ require ( github.com/cockroachdb/pebble v1.1.1 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft-db v0.11.0 // indirect + github.com/cometbft/cometbft-db v0.14.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect @@ -90,18 +88,17 @@ require ( github.com/creachadair/tomledit v0.0.24 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/emicklei/dot v1.6.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/getsentry/sentry-go v0.27.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.1 // indirect @@ -111,11 +108,12 @@ require ( github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.2.0 // indirect + github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/btree v1.1.2 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect @@ -148,13 +146,13 @@ require ( github.com/klauspost/compress v1.17.9 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/lib/pq v1.10.7 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/minio/highwayhash v1.0.2 // indirect + github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -164,17 +162,17 @@ require ( github.com/oklog/run v1.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect - github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect + github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/cors v1.11.1 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shamaton/msgpack/v2 v2.2.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect @@ -184,7 +182,7 @@ require ( github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.10 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect @@ -192,18 +190,18 @@ require ( go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.26.0 // indirect + golang.org/x/crypto v0.28.0 // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/net v0.30.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/term v0.23.0 // indirect - golang.org/x/text v0.17.0 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/text v0.19.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/go.sum b/go.sum index 9241d8e47e..e4f1ec3ff6 100644 --- a/go.sum +++ b/go.sum @@ -68,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -234,14 +234,13 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= +github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -252,7 +251,6 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= @@ -278,8 +276,6 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurT github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= @@ -289,7 +285,6 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -335,14 +330,12 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.12 h1:OWsLZN2KcSSFe8bet9xCn07VwhBnavPea3VyPnNq1bg= -github.com/cometbft/cometbft v0.38.12/go.mod h1:GPHp3/pehPqgX1930HmK1BpBLZPxB75v/dZg8Viwy+o= -github.com/cometbft/cometbft-db v0.11.0 h1:M3Lscmpogx5NTbb1EGyGDaFRdsoLWrUWimFEyf7jej8= -github.com/cometbft/cometbft-db v0.11.0/go.mod h1:GDPJAC/iFHNjmZZPN8V8C1yr/eyityhi2W1hz2MGKSc= +github.com/cometbft/cometbft v0.38.15 h1:5veFd8k1uXM27PBg9sMO3hAfRJ3vbh4OmmLf6cVrqXg= +github.com/cometbft/cometbft v0.38.15/go.mod h1:+wh6ap6xctVG+JOHwbl8pPKZ0GeqdPYqISu7F4b43cQ= +github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= +github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -376,7 +369,6 @@ 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.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/atomicfile v0.3.1 h1:yQORkHjSYySh/tv5th1dkKcn02NEW5JleB84sjt+W4Q= @@ -393,13 +385,12 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= @@ -465,8 +456,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU= +github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= @@ -516,8 +507,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -560,8 +551,10 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -748,7 +741,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= @@ -768,14 +760,13 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= @@ -797,8 +788,8 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -861,8 +852,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= +github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -878,14 +869,12 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -922,8 +911,8 @@ 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.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= +github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= 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= @@ -949,7 +938,6 @@ github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -958,8 +946,8 @@ github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgY github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= +github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shamaton/msgpack/v2 v2.2.0 h1:IP1m01pHwCrMa6ZccP9B3bqxEMKMSmMVAVKk54g3L/Y= github.com/shamaton/msgpack/v2 v2.2.0/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI= @@ -968,8 +956,8 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -977,24 +965,16 @@ github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJ github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1031,7 +1011,6 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= 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.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= @@ -1041,7 +1020,6 @@ github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0o 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/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1053,8 +1031,8 @@ github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWp github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= -go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= 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= @@ -1096,7 +1074,6 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1106,8 +1083,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 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.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= -golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1208,8 +1185,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= 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= @@ -1235,8 +1212,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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= @@ -1261,8 +1238,6 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1271,7 +1246,6 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1350,13 +1324,14 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= 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= @@ -1367,8 +1342,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1616,10 +1591,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1661,8 +1636,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1679,8 +1654,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= 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= diff --git a/scripts/contrib/devtools/Makefile b/scripts/contrib/devtools/Makefile index 611f0c4d87..04cf14dc44 100644 --- a/scripts/contrib/devtools/Makefile +++ b/scripts/contrib/devtools/Makefile @@ -76,7 +76,7 @@ $(RUNSIM): golangci-lint: $(GOLANGCI_LINT) $(GOLANGCI_LINT): @echo "Installing golangci-lint..." - @(cd /tmp && go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.47.0) + @(cd /tmp && go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60.3) tools-clean: rm -f $(STATIK) $(GOLANGCI_LINT) $(RUNSIM) diff --git a/tests/system/go.mod b/tests/system/go.mod index 322b62372d..e38ee6d95a 100644 --- a/tests/system/go.mod +++ b/tests/system/go.mod @@ -1,6 +1,6 @@ module github.com/CosmWasm/wasmd/tests/system -go 1.21 +go 1.23.1 require ( github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect @@ -13,19 +13,19 @@ require ( github.com/gorilla/mux v1.8.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/testify v1.9.0 github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/grpc v1.64.1 // indirect + google.golang.org/grpc v1.67.1 // indirect ) require ( cosmossdk.io/math v1.3.0 - github.com/cometbft/cometbft v0.38.12 + github.com/cometbft/cometbft v0.38.15 github.com/tidwall/gjson v1.14.2 github.com/tidwall/sjson v1.2.5 golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 @@ -47,9 +47,7 @@ require ( github.com/DataDog/zstd v1.5.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect - github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect @@ -57,7 +55,7 @@ require ( github.com/cockroachdb/pebble v1.1.1 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft-db v0.11.0 // indirect + github.com/cometbft/cometbft-db v0.14.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect @@ -65,26 +63,27 @@ require ( github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/emicklei/dot v1.6.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/getsentry/sentry-go v0.27.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.2.0 // indirect + github.com/golang/glog v1.2.2 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/btree v1.1.2 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/gorilla/handlers v1.5.1 // indirect @@ -108,12 +107,12 @@ require ( github.com/klauspost/compress v1.17.9 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/lib/pq v1.10.7 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/minio/highwayhash v1.0.2 // indirect + github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -121,10 +120,10 @@ require ( github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect - github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect + github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect @@ -132,7 +131,7 @@ require ( github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/viper v1.19.0 // indirect @@ -143,17 +142,18 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.10 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect + go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.10.0 // indirect - golang.org/x/crypto v0.26.0 // indirect - golang.org/x/net v0.28.0 // indirect + golang.org/x/crypto v0.28.0 // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/term v0.23.0 // indirect - golang.org/x/text v0.17.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect - google.golang.org/protobuf v1.34.2 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/text v0.19.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/tests/system/go.sum b/tests/system/go.sum index c34119902a..9be1774ced 100644 --- a/tests/system/go.sum +++ b/tests/system/go.sum @@ -36,14 +36,12 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= +github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -54,7 +52,6 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= @@ -75,8 +72,6 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurT github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= @@ -86,8 +81,6 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -122,14 +115,12 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.12 h1:OWsLZN2KcSSFe8bet9xCn07VwhBnavPea3VyPnNq1bg= -github.com/cometbft/cometbft v0.38.12/go.mod h1:GPHp3/pehPqgX1930HmK1BpBLZPxB75v/dZg8Viwy+o= -github.com/cometbft/cometbft-db v0.11.0 h1:M3Lscmpogx5NTbb1EGyGDaFRdsoLWrUWimFEyf7jej8= -github.com/cometbft/cometbft-db v0.11.0/go.mod h1:GDPJAC/iFHNjmZZPN8V8C1yr/eyityhi2W1hz2MGKSc= +github.com/cometbft/cometbft v0.38.15 h1:5veFd8k1uXM27PBg9sMO3hAfRJ3vbh4OmmLf6cVrqXg= +github.com/cometbft/cometbft v0.38.15/go.mod h1:+wh6ap6xctVG+JOHwbl8pPKZ0GeqdPYqISu7F4b43cQ= +github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= +github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -157,7 +148,6 @@ 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.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= @@ -170,13 +160,12 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= @@ -236,8 +225,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU= +github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= @@ -280,10 +269,13 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= @@ -306,18 +298,20 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -432,7 +426,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -451,14 +444,13 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= @@ -479,11 +471,10 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= @@ -541,8 +532,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= +github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -558,14 +549,12 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -586,8 +575,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.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= -github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -602,8 +591,8 @@ 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.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= +github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= 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= @@ -629,7 +618,6 @@ github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -638,41 +626,32 @@ github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgY github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= +github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -693,6 +672,7 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -716,13 +696,11 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= 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.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/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= @@ -730,12 +708,14 @@ github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWp github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= -go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= 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= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -753,7 +733,6 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -761,8 +740,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= -golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= @@ -806,12 +785,13 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -832,14 +812,11 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -878,20 +855,21 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -936,10 +914,10 @@ google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -954,11 +932,12 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -974,8 +953,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= 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= diff --git a/x/wasm/keeper/authz_policy.go b/x/wasm/keeper/authz_policy.go index 74c029e969..9de6c7a162 100644 --- a/x/wasm/keeper/authz_policy.go +++ b/x/wasm/keeper/authz_policy.go @@ -74,7 +74,7 @@ func (p GovAuthorizationPolicy) CanModifyCodeAccessConfig(sdk.AccAddress, sdk.Ac // SubMessageAuthorizationPolicy returns new policy with fine-grained gov permission for given action only func (p GovAuthorizationPolicy) SubMessageAuthorizationPolicy(action types.AuthorizationPolicyAction) types.AuthorizationPolicy { defaultPolicy := DefaultAuthorizationPolicy{} - if p.propagate != nil && len(p.propagate) != 0 { + if len(p.propagate) != 0 { if _, ok := p.propagate[action]; ok { return NewPartialGovAuthorizationPolicy(defaultPolicy, action) } diff --git a/x/wasm/keeper/genesis.go b/x/wasm/keeper/genesis.go index bfee46927e..ede895c309 100644 --- a/x/wasm/keeper/genesis.go +++ b/x/wasm/keeper/genesis.go @@ -48,7 +48,7 @@ func InitGenesis(ctx sdk.Context, keeper *Keeper, data types.GenesisState) ([]ab if err != nil { return nil, errorsmod.Wrapf(err, "address in contract number %d", i) } - err = keeper.importContract(ctx, contractAddr, &contract.ContractInfo, contract.ContractState, contract.ContractCodeHistory) //nolint:gosec + err = keeper.importContract(ctx, contractAddr, &contract.ContractInfo, contract.ContractState, contract.ContractCodeHistory) if err != nil { return nil, errorsmod.Wrapf(err, "contract number %d", i) } diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 27dc6074fd..e8fdb2af3c 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -792,7 +792,7 @@ func (k Keeper) appendToContractHistory(ctx context.Context, contractAddr sdk.Ac for _, e := range newEntries { pos++ key := types.GetContractCodeHistoryElementKey(contractAddr, pos) - if err := store.Set(key, k.cdc.MustMarshal(&e)); err != nil { //nolint:gosec + if err := store.Set(key, k.cdc.MustMarshal(&e)); err != nil { return err } } From 149c9ae5db22ce2784cc938517f9b8ffe6c3543d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:38:24 +0100 Subject: [PATCH 24/40] Bump cosmossdk.io/log from 1.4.1 to 1.5.0 (#2034) Bumps [cosmossdk.io/log](https://github.com/cosmos/cosmos-sdk) from 1.4.1 to 1.5.0. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/log/v1.4.1...log/v1.5.0) --- updated-dependencies: - dependency-name: cosmossdk.io/log dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 9 ++++++++- go.sum | 21 +++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 076a81d997..579ac114cf 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( cosmossdk.io/collections v0.4.0 cosmossdk.io/core v0.11.1 cosmossdk.io/errors v1.0.1 - cosmossdk.io/log v1.4.1 + cosmossdk.io/log v1.5.0 cosmossdk.io/math v1.3.0 cosmossdk.io/store v1.1.1 cosmossdk.io/tools/confix v0.1.2 @@ -70,9 +70,13 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/bits-and-blooms/bitset v1.8.0 // indirect + github.com/bytedance/sonic v1.12.3 // indirect + github.com/bytedance/sonic/loader v0.2.0 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect @@ -144,6 +148,7 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/cpuid/v2 v2.0.9 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -179,6 +184,7 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.7.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect @@ -190,6 +196,7 @@ require ( go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect + golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect golang.org/x/crypto v0.28.0 // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect golang.org/x/net v0.30.0 // indirect diff --git a/go.sum b/go.sum index e4f1ec3ff6..9ac63fbc80 100644 --- a/go.sum +++ b/go.sum @@ -194,8 +194,8 @@ cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= -cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= +cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= +cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= @@ -278,6 +278,11 @@ github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/ github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= +github.com/bytedance/sonic v1.12.3 h1:W2MGa7RCU1QTeYRTPE3+88mVC0yXmsRQRChiyVocVjU= +github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= +github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -303,6 +308,10 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -744,6 +753,9 @@ github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -1009,6 +1021,8 @@ github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= 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 v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= @@ -1072,6 +1086,8 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -1700,6 +1716,7 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= From ed1c0e7eabb7cae5f569e93f9ddf9d0137c82a19 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:39:26 +0100 Subject: [PATCH 25/40] Bump github.com/cosmos/iavl from 1.2.0 to 1.2.1 (#2033) Bumps [github.com/cosmos/iavl](https://github.com/cosmos/iavl) from 1.2.0 to 1.2.1. - [Release notes](https://github.com/cosmos/iavl/releases) - [Changelog](https://github.com/cosmos/iavl/blob/master/CHANGELOG.md) - [Commits](https://github.com/cosmos/iavl/compare/v1.2.0...v1.2.1) --- updated-dependencies: - dependency-name: github.com/cosmos/iavl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 579ac114cf..559f769f86 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/cosmos/cosmos-sdk v0.50.10 github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/gogoproto v1.7.0 - github.com/cosmos/iavl v1.2.0 + github.com/cosmos/iavl v1.2.1 github.com/cosmos/ics23/go v0.11.0 // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect github.com/golang/protobuf v1.5.4 diff --git a/go.sum b/go.sum index 9ac63fbc80..c81999b2b7 100644 --- a/go.sum +++ b/go.sum @@ -364,8 +364,8 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= -github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= -github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= +github.com/cosmos/iavl v1.2.1 h1:68OrQEbUSfupX13SDRo+mYh7m1DPKq/uLalELH+qOzk= +github.com/cosmos/iavl v1.2.1/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= github.com/cosmos/ibc-go/modules/apps/callbacks v0.2.1-0.20231113120333-342c00b0f8bd h1:Lx+/5dZ/nN6qPXP2Ofog6u1fmlkCFA1ElcOconnofEM= github.com/cosmos/ibc-go/modules/apps/callbacks v0.2.1-0.20231113120333-342c00b0f8bd/go.mod h1:JWfpWVKJKiKtd53/KbRoKfxWl8FsT2GPcNezTOk0o5Q= github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= From 953695a40c604abecff703f0d8b884deac9feb6d Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Fri, 8 Nov 2024 10:54:54 +0700 Subject: [PATCH 26/40] Add autofix protobuf job --- .github/workflows/autofix.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/autofix.yml diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml new file mode 100644 index 0000000000..ce2bef00fe --- /dev/null +++ b/.github/workflows/autofix.yml @@ -0,0 +1,27 @@ +name: autofix.ci # needed to securely identify the workflow + +on: + pull_request: + +permissions: + contents: read + +jobs: + autofix-protobuf: + runs-on: ubuntu-latest + container: + image: ghcr.io/cosmos/proto-builder:0.14.0 + options: --user root + steps: + - uses: actions/checkout@v4 + - name: Fix permissions + run: git config --global --add safe.directory "$PWD" + - name: Format protobuf + run: find ./ -name "*.proto" -exec clang-format -i {} \; + - name: Generate protobuf + run: sh ./scripts/protocgen.sh + - name: Format + run: make format + + # Get latest version from https://autofix.ci/setup + - uses: autofix-ci/action@dd55f44df8f7cdb7a6bf74c78677eb8acd40cd0a From e7860b775c3e7ff9effc4dcff9846477930805aa Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 04:59:29 +0000 Subject: [PATCH 27/40] [autofix.ci] apply automated fixes --- x/wasm/keeper/keeper_test.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index f80cd89bec..dbebfa6e47 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -1615,12 +1615,14 @@ func TestIterateContractsByCode(t *testing.T) { func TestIterateContractsByCodeWithMigration(t *testing.T) { // mock migration so that it does not fail when migrate example1 to example2.codeID - mockWasmVM := wasmtesting.MockWasmEngine{MigrateFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { - return &wasmvmtypes.ContractResult{Ok: &wasmvmtypes.Response{}}, 1, nil - }, + mockWasmVM := wasmtesting.MockWasmEngine{ + MigrateFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { + return &wasmvmtypes.ContractResult{Ok: &wasmvmtypes.Response{}}, 1, nil + }, MigrateWithInfoFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, migrateInfo wasmvmtypes.MigrateInfo, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.ContractResult, uint64, error) { return &wasmvmtypes.ContractResult{Ok: &wasmvmtypes.Response{}}, 1, nil - }} + }, + } wasmtesting.MakeInstantiable(&mockWasmVM) ctx, keepers := CreateTestInput(t, false, AvailableCapabilities, WithWasmEngine(&mockWasmVM)) k, c := keepers.WasmKeeper, keepers.ContractKeeper From 76a6fd29d53dcbfdaf822029dbb3fbaed9a11751 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Fri, 8 Nov 2024 12:22:11 +0700 Subject: [PATCH 28/40] Add comments about workaround --- .github/workflows/autofix.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index ce2bef00fe..417f2c3ef7 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -11,10 +11,10 @@ jobs: runs-on: ubuntu-latest container: image: ghcr.io/cosmos/proto-builder:0.14.0 - options: --user root + options: --user root # workaround for a problem during actions/checkout, see https://github.com/actions/checkout/issues/1014 steps: - uses: actions/checkout@v4 - - name: Fix permissions + - name: Fix permissions # needed because of root user fix above run: git config --global --add safe.directory "$PWD" - name: Format protobuf run: find ./ -name "*.proto" -exec clang-format -i {} \; From daa8595604cfe70158474786276a2224ac7dbbd7 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Mon, 11 Nov 2024 17:23:19 +0700 Subject: [PATCH 29/40] Use protoImage for buf calls --- Makefile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 90814a3c65..481e47ce94 100644 --- a/Makefile +++ b/Makefile @@ -10,8 +10,6 @@ SIMAPP = ./app # for dockerized protobuf tools DOCKER := $(shell which docker) -BUF_IMAGE=bufbuild/buf@sha256:3cb1f8a4b48bd5ad8f09168f10f607ddc318af202f5c057d52a45216793d85e5 #v1.4.0 -DOCKER_BUF := $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(BUF_IMAGE) HTTPS_GIT := https://github.com/CosmWasm/wasmd.git export GO111MODULE = on @@ -187,10 +185,10 @@ proto-swagger-gen: @./scripts/protoc-swagger-gen.sh proto-lint: - @$(DOCKER_BUF) lint --error-format=json + @$(protoImage) buf lint --error-format=json proto-check-breaking: - @$(DOCKER_BUF) breaking --against $(HTTPS_GIT)#branch=main + @$(protoImage) buf breaking --against $(HTTPS_GIT)#branch=main .PHONY: all install install-debug \ go-mod-cache draw-deps clean build format \ From d6890bab1832925996bbd4c987f99e61cdbdce17 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Mon, 11 Nov 2024 18:18:39 +0700 Subject: [PATCH 30/40] Lint protobuf --- .github/workflows/proto-buf-linter.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/proto-buf-linter.yml diff --git a/.github/workflows/proto-buf-linter.yml b/.github/workflows/proto-buf-linter.yml new file mode 100644 index 0000000000..74e83fb5a7 --- /dev/null +++ b/.github/workflows/proto-buf-linter.yml @@ -0,0 +1,22 @@ +name: Protobuf Linting +# run buf lint (https://buf.build/) +# This workflow is only run when a .proto file has been changed +on: + pull_request: + paths: + - "proto/**" + +permissions: + contents: read + +jobs: + buf-lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: bufbuild/buf-setup-action@v1.46.0 + + # lint checks + - uses: bufbuild/buf-lint-action@v1 + with: + input: "proto" From 0a8c40d05aaa363b5f0aa73f1de572bead85f7f7 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:57:30 +0000 Subject: [PATCH 31/40] [autofix.ci] apply automated fixes --- tests/e2e/ibc_fees_test.go | 2 +- x/wasm/types/query.pb.gw.go | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/e2e/ibc_fees_test.go b/tests/e2e/ibc_fees_test.go index e3c28da3b0..cb867039f3 100644 --- a/tests/e2e/ibc_fees_test.go +++ b/tests/e2e/ibc_fees_test.go @@ -7,6 +7,7 @@ import ( "testing" "time" + wasmvmtypes "github.com/CosmWasm/wasmvm/v2/types" ibcfee "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/types" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" //nolint:staticcheck @@ -23,7 +24,6 @@ import ( "github.com/CosmWasm/wasmd/app" wasmibctesting "github.com/CosmWasm/wasmd/tests/ibctesting" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - wasmvmtypes "github.com/CosmWasm/wasmvm/v2/types" ) func TestIBCFeesTransfer(t *testing.T) { diff --git a/x/wasm/types/query.pb.gw.go b/x/wasm/types/query.pb.gw.go index 19af858476..6ee86b404b 100644 --- a/x/wasm/types/query.pb.gw.go +++ b/x/wasm/types/query.pb.gw.go @@ -52,6 +52,7 @@ func request_Query_ContractInfo_0(ctx context.Context, marshaler runtime.Marshal } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -77,6 +78,7 @@ func local_request_Query_ContractInfo_0(ctx context.Context, marshaler runtime.M } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -104,6 +106,7 @@ func request_Query_ContractHistory_0(ctx context.Context, marshaler runtime.Mars } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -136,6 +139,7 @@ func local_request_Query_ContractHistory_0(ctx context.Context, marshaler runtim } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -170,6 +174,7 @@ func request_Query_ContractsByCode_0(ctx context.Context, marshaler runtime.Mars } protoReq.CodeId, err = runtime.Uint64(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -202,6 +207,7 @@ func local_request_Query_ContractsByCode_0(ctx context.Context, marshaler runtim } protoReq.CodeId, err = runtime.Uint64(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -236,6 +242,7 @@ func request_Query_AllContractState_0(ctx context.Context, marshaler runtime.Mar } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -268,6 +275,7 @@ func local_request_Query_AllContractState_0(ctx context.Context, marshaler runti } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -300,6 +308,7 @@ func request_Query_RawContractState_0(ctx context.Context, marshaler runtime.Mar } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -310,6 +319,7 @@ func request_Query_RawContractState_0(ctx context.Context, marshaler runtime.Mar } protoReq.QueryData, err = runtime.Bytes(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "query_data", err) } @@ -335,6 +345,7 @@ func local_request_Query_RawContractState_0(ctx context.Context, marshaler runti } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -345,6 +356,7 @@ func local_request_Query_RawContractState_0(ctx context.Context, marshaler runti } protoReq.QueryData, err = runtime.Bytes(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "query_data", err) } @@ -370,6 +382,7 @@ func request_Query_SmartContractState_0(ctx context.Context, marshaler runtime.M } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -380,6 +393,7 @@ func request_Query_SmartContractState_0(ctx context.Context, marshaler runtime.M } protoReq.QueryData, err = runtime.Bytes(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "query_data", err) } @@ -405,6 +419,7 @@ func local_request_Query_SmartContractState_0(ctx context.Context, marshaler run } protoReq.Address, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) } @@ -415,6 +430,7 @@ func local_request_Query_SmartContractState_0(ctx context.Context, marshaler run } protoReq.QueryData, err = runtime.Bytes(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "query_data", err) } @@ -440,6 +456,7 @@ func request_Query_Code_0(ctx context.Context, marshaler runtime.Marshaler, clie } protoReq.CodeId, err = runtime.Uint64(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -465,6 +482,7 @@ func local_request_Query_Code_0(ctx context.Context, marshaler runtime.Marshaler } protoReq.CodeId, err = runtime.Uint64(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -522,6 +540,7 @@ func request_Query_CodeInfo_0(ctx context.Context, marshaler runtime.Marshaler, } protoReq.CodeId, err = runtime.Uint64(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -547,6 +566,7 @@ func local_request_Query_CodeInfo_0(ctx context.Context, marshaler runtime.Marsh } protoReq.CodeId, err = runtime.Uint64(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "code_id", err) } @@ -622,6 +642,7 @@ func request_Query_ContractsByCreator_0(ctx context.Context, marshaler runtime.M } protoReq.CreatorAddress, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "creator_address", err) } @@ -654,6 +675,7 @@ func local_request_Query_ContractsByCreator_0(ctx context.Context, marshaler run } protoReq.CreatorAddress, err = runtime.String(val) + if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "creator_address", err) } From 1a49630c9cd498d1ced71f43d49ebb8e9cda5a92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 23:30:39 +0100 Subject: [PATCH 32/40] Bump cosmossdk.io/api from 0.7.5 to 0.7.6 (#1998) Bumps [cosmossdk.io/api](https://github.com/cosmos/cosmos-sdk) from 0.7.5 to 0.7.6. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/api/v0.7.5...api/v0.7.6) --- updated-dependencies: - dependency-name: cosmossdk.io/api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 559f769f86..4a2cd15d93 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( ) require ( - cosmossdk.io/api v0.7.5 + cosmossdk.io/api v0.7.6 cosmossdk.io/client/v2 v2.0.0-beta.1 cosmossdk.io/collections v0.4.0 cosmossdk.io/core v0.11.1 diff --git a/go.sum b/go.sum index c81999b2b7..9dd86d95a6 100644 --- a/go.sum +++ b/go.sum @@ -182,8 +182,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= -cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY= +cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= From 904d0a69130cc187e022914c284698c434556848 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Fri, 8 Nov 2024 13:08:53 +0700 Subject: [PATCH 33/40] Add typos check to CI --- .github/workflows/typo-check.yml | 19 +++++++++++++++++++ _typos.toml | 8 ++++++++ 2 files changed, 27 insertions(+) create mode 100644 .github/workflows/typo-check.yml create mode 100644 _typos.toml diff --git a/.github/workflows/typo-check.yml b/.github/workflows/typo-check.yml new file mode 100644 index 0000000000..de612025bb --- /dev/null +++ b/.github/workflows/typo-check.yml @@ -0,0 +1,19 @@ +name: Check for typos + +on: + merge_group: + pull_request: + push: + branches: + - main + workflow_dispatch: + +jobs: + check-typos: + name: "Spell-check repository source" + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Run spell-check + uses: crate-ci/typos@master diff --git a/_typos.toml b/_typos.toml new file mode 100644 index 0000000000..c58a7cc09f --- /dev/null +++ b/_typos.toml @@ -0,0 +1,8 @@ +[default] +extend-ignore-re = ["(?Rm)^.*(#|//)\\s*spellchecker:disable-line$"] + +[default.extend-identifiers] +iNdEx = "iNdEx" + +[files] +extend-exclude = ["**/go.mod", "**/go.sum", "**/*.pb.go"] From d824a1166688973089365d153003b54d8eb26135 Mon Sep 17 00:00:00 2001 From: Christoph Otter Date: Fri, 8 Nov 2024 13:40:43 +0700 Subject: [PATCH 34/40] Fix typos --- CHANGELOG.md | 8 ++-- EVENTS.md | 8 ++-- UPGRADING.md | 6 +-- app/params/doc.go | 4 +- app/sim_test.go | 4 +- docs/proto/proto-docs.md | 10 ++--- proto/cosmwasm/wasm/v1/proposal_legacy.proto | 8 ++-- proto/cosmwasm/wasm/v1/tx.proto | 4 +- scripts/README.md | 2 +- scripts/contrib/devtools/Makefile | 2 +- tests/ibctesting/endpoint.go | 2 +- tests/system/system.go | 2 +- x/wasm/keeper/handler_plugin_encoders_test.go | 2 +- x/wasm/keeper/keeper_test.go | 26 ++++++------ x/wasm/keeper/msg_dispatcher_test.go | 4 +- x/wasm/keeper/querier.go | 4 +- x/wasm/keeper/querier_test.go | 12 +++--- x/wasm/keeper/staking_test.go | 42 +++++++++---------- x/wasm/migrations/v1/store.go | 2 +- x/wasm/migrations/v2/legacy_types.go | 2 +- x/wasm/migrations/v3/legacy_types.go | 2 +- x/wasm/simulation/proposals.go | 2 +- x/wasm/types/gas_register.go | 4 +- x/wasm/types/gas_register_test.go | 2 +- x/wasm/types/keys.go | 2 +- x/wasm/types/proposal_legacy.pb.go | 6 +-- x/wasm/types/tx.pb.go | 2 +- x/wasm/types/wasmer_engine.go | 2 +- 28 files changed, 88 insertions(+), 88 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b8e59440f..bcd3460175 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -162,7 +162,7 @@ - Log query error before redacting [\#1593](https://github.com/CosmWasm/wasmd/issues/1593) - Restrict pagination on all-state-query [\#1619](https://github.com/CosmWasm/wasmd/pull/1619) - Bug in IbcQuery::ListChannels implementation when port is unset [\#1597](https://github.com/CosmWasm/wasmd/issues/1597) -- Ensure some contraints and limits on pin/unpin code ids [\#1624](https://github.com/CosmWasm/wasmd/pull/1624) +- Ensure some constraints and limits on pin/unpin code ids [\#1624](https://github.com/CosmWasm/wasmd/pull/1624) - Ensure genesis import works with both address generators [\#1629](https://github.com/CosmWasm/wasmd/issues/1629) - Set default query limit and ensure constraints [\#1632](https://github.com/CosmWasm/wasmd/pull/1632) @@ -174,7 +174,7 @@ - If `port_id` is omitted, all channels bound to the contract's port will be listed. - Restrict pagination on all-state-query [\#1619](https://github.com/CosmWasm/wasmd/pull/1619) - Pagination limit is set to 100 for all-state-query. See also [\#1632](https://github.com/CosmWasm/wasmd/pull/1632) -- Ensure some contraints and limits on pin/unpin code ids [\#1624](https://github.com/CosmWasm/wasmd/pull/1624) +- Ensure some constraints and limits on pin/unpin code ids [\#1624](https://github.com/CosmWasm/wasmd/pull/1624) - Total number of code ids is limited to 50 for pin/unpin operations - Custom StoreCode Authorization for authz module [\#1584](https://github.com/CosmWasm/wasmd/issues/1584) @@ -413,7 +413,7 @@ below to learn more! [Full Changelog](https://github.com/CosmWasm/wasmd/compare/v0.28.0...v0.29.0) -- Add dependencies for protobuf and remove third_party forlder [/#1030](https://github.com/CosmWasm/wasmd/pull/1030) +- Add dependencies for protobuf and remove third_party folder [/#1030](https://github.com/CosmWasm/wasmd/pull/1030) - Check wasmvm version on startup [\#1029](https://github.com/CosmWasm/wasmd/pull/1029/) - Allow AccessConfig to use a list of addresses instead of just a single address [\#945](https://github.com/CosmWasm/wasmd/issues/945) - Make contract addresses predictable \("deterministic"\) [\#942](https://github.com/CosmWasm/wasmd/issues/942) @@ -455,7 +455,7 @@ No **Fixed Bugs** -- Fix: Make events in reply completely determinisitic by stripping out anything coming from Cosmos SDK (not CosmWasm codebase) [\#917](https://github.com/CosmWasm/wasmd/pull/917) ([assafmo](https://github.com/assafmo)) +- Fix: Make events in reply completely deterministic by stripping out anything coming from Cosmos SDK (not CosmWasm codebase) [\#917](https://github.com/CosmWasm/wasmd/pull/917) ([assafmo](https://github.com/assafmo)) Migration notes: diff --git a/EVENTS.md b/EVENTS.md index 371e1c405e..e2fc365c03 100644 --- a/EVENTS.md +++ b/EVENTS.md @@ -46,7 +46,7 @@ consistent order (and avoid dictionaries/hashes). Here is a simple Event in JSON "type": "wasm", "attributes": [ {"key": "_contract_address", "value": "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6"}, - {"key": "transfered", "value": "777000"} + {"key": "transferred", "value": "777000"} ] } ``` @@ -321,10 +321,10 @@ action emitting events, so we define a structure to flatten this event tree: * All events are returned in execution order as [defined by CosmWasm docs](https://github.com/CosmWasm/cosmwasm/blob/main/SEMANTICS.md#dispatching-messages) * `x/wasm` keeper emits a custom event for each call to a contract entry point. Not just `execute`, `instantiate`, and `migrate`, but also `reply`, `sudo` and all ibc entry points. -* This means all `wasm*` events are preceeded by the cosmwasm entry point that returned them. +* This means all `wasm*` events are preceded by the cosmwasm entry point that returned them. To make this more clear, I will provide an example of executing a contract, which returns two messages, one to instantiate a new -contract and the other to set the withdrawl address, while also using `ReplyOnSuccess` for the instantiation (to get the +contract and the other to set the withdrawal address, while also using `ReplyOnSuccess` for the instantiation (to get the address). It will emit a series of events that looks something like this: ```go @@ -335,7 +335,7 @@ sdk.NewEvent( sdk.NewAttribute("sender", msg.Sender), ), -// top-level exection call +// top-level execution call sdk.NewEvent( "execute", sdk.NewAttribute("_contract_address", contractAddr.String()), diff --git a/UPGRADING.md b/UPGRADING.md index a5e204f2b1..823497c68a 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -142,7 +142,7 @@ docker run --rm -it \ ## Take majority control of the chain -In genesis we have a valiator with 250 million `ustake` bonded. We want to be easily +In genesis we have a validator with 250 million `ustake` bonded. We want to be easily able to pass a proposal with our client. Let us bond 700 million `ustake` to ensure we have > 67% of the voting power and will pass with the validator not voting. @@ -167,7 +167,7 @@ docker run --rm -it \ ## Vote on the upgrade Now that we see the chain is running and producing blocks, and our client has -enough token to control the netwrok, let's create a governance +enough token to control the network, let's create a governance upgrade proposal for the new chain to move to `musselnet-v2` (this must be the same name as we use in the handler we created above, change this to match what you put in your handler): @@ -298,7 +298,7 @@ docker run --rm -it \ After this, we just let the chain run and open the terminal so you can see the log files. It should keep producing blocks until it hits height 500 (or whatever you set there), when the process will print a huge stacktrace and hang. Immediately before the stack trace, you -should see a line like this (burried under tons of tendermint logs): +should see a line like this (buried under tons of tendermint logs): `8:50PM ERR UPGRADE "musselnet-v2" NEEDED at height: 100:` diff --git a/app/params/doc.go b/app/params/doc.go index 7c6035cadc..49b5f6d1e7 100644 --- a/app/params/doc.go +++ b/app/params/doc.go @@ -3,9 +3,9 @@ Package params defines the simulation parameters in the gaia. It contains the default weights used for each transaction used on the module's simulation. These weights define the chance for a transaction to be simulated at -any gived operation. +any given operation. -You can repace the default values for the weights by providing a params.json +You can replace the default values for the weights by providing a params.json file with the weights defined for each of the transaction operations: { diff --git a/app/sim_test.go b/app/sim_test.go index e6e1ae041c..8f3eb4a6d7 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -179,7 +179,7 @@ func TestAppImportExport(t *testing.T) { failedKVAs, failedKVBs := simtestutil.DiffKVStores(storeA, storeB, skipPrefixes[keyName]) if !assert.Equal(t, len(failedKVAs), len(failedKVBs), "unequal sets of key-values to compare in %q", keyName) { for _, v := range failedKVBs { - t.Logf("store missmatch: %q\n", v) + t.Logf("store mismatch: %q\n", v) } t.FailNow() } @@ -187,7 +187,7 @@ func TestAppImportExport(t *testing.T) { t.Logf("compared %d different key/value pairs between %s and %s\n", len(failedKVAs), appKeyA, appKeyB) if !assert.Equal(t, 0, len(failedKVAs), simtestutil.GetSimulationLog(keyName, app.SimulationManager().StoreDecoders, failedKVAs, failedKVBs)) { for _, v := range failedKVAs { - t.Logf("store missmatch: %q\n", v) + t.Logf("store mismatch: %q\n", v) } t.FailNow() } diff --git a/docs/proto/proto-docs.md b/docs/proto/proto-docs.md index f20eb1317e..0cb320e960 100644 --- a/docs/proto/proto-docs.md +++ b/docs/proto/proto-docs.md @@ -746,10 +746,10 @@ a v1 governance proposal. | ----- | ---- | ----- | ----------- | | `title` | [string](#string) | | Title is a short summary | | `description` | [string](#string) | | Description is a human readable text | -| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's enviroment as sender | +| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | | `admin` | [string](#string) | | Admin is an optional address that can execute migrations | | `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | -| `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. | +| `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | | `msg` | [bytes](#bytes) | | Msg json encode message to be passed to the contract on instantiation | | `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation | | `salt` | [bytes](#bytes) | | Salt is an arbitrary value provided by the sender. Size can be 1 to 64. | @@ -776,7 +776,7 @@ a v1 governance proposal. | `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | | `admin` | [string](#string) | | Admin is an optional address that can execute migrations | | `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | -| `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. | +| `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | | `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation | | `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation | @@ -847,7 +847,7 @@ the x/gov module via a v1 governance proposal. | `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission to apply on contract creation, optional | | `unpin_code` | [bool](#bool) | | UnpinCode code on upload, optional | | `admin` | [string](#string) | | Admin is an optional address that can execute migrations | -| `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. | +| `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | | `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation | | `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation | | `source` | [string](#string) | | Source is the URL where the code is hosted | @@ -1762,7 +1762,7 @@ Since: 0.40 | `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission to apply on contract creation, optional | | `unpin_code` | [bool](#bool) | | UnpinCode code on upload, optional. As default the uploaded contract is pinned to cache. | | `admin` | [string](#string) | | Admin is an optional address that can execute migrations | -| `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. | +| `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | | `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation | | `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred from the authority account to the contract on instantiation | | `source` | [string](#string) | | Source is the URL where the code is hosted | diff --git a/proto/cosmwasm/wasm/v1/proposal_legacy.proto b/proto/cosmwasm/wasm/v1/proposal_legacy.proto index efefbeb435..d6d7a7d233 100644 --- a/proto/cosmwasm/wasm/v1/proposal_legacy.proto +++ b/proto/cosmwasm/wasm/v1/proposal_legacy.proto @@ -64,7 +64,7 @@ message InstantiateContractProposal { string admin = 4 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; // CodeID is the reference to the stored WASM code uint64 code_id = 5 [ (gogoproto.customname) = "CodeID" ]; - // Label is optional metadata to be stored with a constract instance. + // Label is optional metadata to be stored with a contract instance. string label = 6; // Msg json encoded message to be passed to the contract on instantiation bytes msg = 7 [ @@ -93,13 +93,13 @@ message InstantiateContract2Proposal { string title = 1; // Description is a human readable text string description = 2; - // RunAs is the address that is passed to the contract's enviroment as sender + // RunAs is the address that is passed to the contract's environment as sender string run_as = 3 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; // Admin is an optional address that can execute migrations string admin = 4 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; // CodeID is the reference to the stored WASM code uint64 code_id = 5 [ (gogoproto.customname) = "CodeID" ]; - // Label is optional metadata to be stored with a constract instance. + // Label is optional metadata to be stored with a contract instance. string label = 6; // Msg json encode message to be passed to the contract on instantiation bytes msg = 7 [ @@ -330,7 +330,7 @@ message StoreAndInstantiateContractProposal { bool unpin_code = 6; // Admin is an optional address that can execute migrations string admin = 7; - // Label is optional metadata to be stored with a constract instance. + // Label is optional metadata to be stored with a contract instance. string label = 8; // Msg json encoded message to be passed to the contract on instantiation bytes msg = 9 [ diff --git a/proto/cosmwasm/wasm/v1/tx.proto b/proto/cosmwasm/wasm/v1/tx.proto index 88a06f7a5a..4dfe7446ff 100644 --- a/proto/cosmwasm/wasm/v1/tx.proto +++ b/proto/cosmwasm/wasm/v1/tx.proto @@ -399,7 +399,7 @@ message MsgStoreAndInstantiateContract { bool unpin_code = 5; // Admin is an optional address that can execute migrations string admin = 6 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; - // Label is optional metadata to be stored with a constract instance. + // Label is optional metadata to be stored with a contract instance. string label = 7; // Msg json encoded message to be passed to the contract on instantiation bytes msg = 8 [ @@ -518,4 +518,4 @@ message MsgUpdateContractLabel { } // MsgUpdateContractLabelResponse returns empty data -message MsgUpdateContractLabelResponse {} \ No newline at end of file +message MsgUpdateContractLabelResponse {} diff --git a/scripts/README.md b/scripts/README.md index c0aba168f1..78f08b1919 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -1,6 +1,6 @@ # Scripts -These scripts are copied from the [Cosmos-SDK](https://github.com/cosmos/cosmos-sdk/tree/v0.42.1/scripts) respository +These scripts are copied from the [Cosmos-SDK](https://github.com/cosmos/cosmos-sdk/tree/v0.42.1/scripts) repository with minor modifications. All credits and big thanks go to the original authors. Please note that a custom [fork](github.com/regen-network/protobuf) by the Regen network team is used. diff --git a/scripts/contrib/devtools/Makefile b/scripts/contrib/devtools/Makefile index 04cf14dc44..e8f55b65bf 100644 --- a/scripts/contrib/devtools/Makefile +++ b/scripts/contrib/devtools/Makefile @@ -64,7 +64,7 @@ $(STATIK): @(cd /tmp && go install github.com/rakyll/statik@v0.1.6) # Install the runsim binary with a temporary workaround of entering an outside -# directory as the "go get" command ignores the -mod option and will polute the +# directory as the "go get" command ignores the -mod option and will pollute the # go.{mod, sum} files. # # ref: https://github.com/golang/go/issues/30515 diff --git a/tests/ibctesting/endpoint.go b/tests/ibctesting/endpoint.go index 54a20bd04e..ec6a5d6ca5 100644 --- a/tests/ibctesting/endpoint.go +++ b/tests/ibctesting/endpoint.go @@ -59,7 +59,7 @@ func NewDefaultEndpoint(chain *TestChain) *Endpoint { } } -// QueryProof queries proof associated with this endpoint using the lastest client state +// QueryProof queries proof associated with this endpoint using the latest client state // height on the counterparty chain. func (endpoint *Endpoint) QueryProof(key []byte) ([]byte, clienttypes.Height) { // obtain the counterparty client representing the chain associated with the endpoint diff --git a/tests/system/system.go b/tests/system/system.go index b408a952a3..6295c17a08 100644 --- a/tests/system/system.go +++ b/tests/system/system.go @@ -374,7 +374,7 @@ func (s *SystemUnderTest) BuildNewBinary() { } } -// AwaitBlockHeight blocks until te target height is reached. An optional timout parameter can be passed to abort early +// AwaitBlockHeight blocks until te target height is reached. An optional timeout parameter can be passed to abort early func (s *SystemUnderTest) AwaitBlockHeight(t *testing.T, targetHeight int64, timeout ...time.Duration) { t.Helper() require.Greater(t, targetHeight, s.currentHeight) diff --git a/x/wasm/keeper/handler_plugin_encoders_test.go b/x/wasm/keeper/handler_plugin_encoders_test.go index 75faf72384..d2a0a5b6b6 100644 --- a/x/wasm/keeper/handler_plugin_encoders_test.go +++ b/x/wasm/keeper/handler_plugin_encoders_test.go @@ -814,7 +814,7 @@ func TestEncodeGovMsg(t *testing.T) { }, }, }, - "Gov weighted vote: splitted": { + "Gov weighted vote: split": { sender: myAddr, srcMsg: wasmvmtypes.CosmosMsg{ Gov: &wasmvmtypes.GovMsg{ diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index dbebfa6e47..f48c9ba660 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -239,7 +239,7 @@ func TestEnforceValidPermissionsOnCreate(t *testing.T) { onlyOther := types.AccessTypeAnyOfAddresses.With(other) specs := map[string]struct { - defaultPermssion types.AccessType + defaultPermission types.AccessType requestedPermission *types.AccessConfig // grantedPermission is set iff no error grantedPermission types.AccessConfig @@ -247,42 +247,42 @@ func TestEnforceValidPermissionsOnCreate(t *testing.T) { expError *errorsmod.Error }{ "override everybody": { - defaultPermssion: types.AccessTypeEverybody, + defaultPermission: types.AccessTypeEverybody, requestedPermission: &onlyCreator, grantedPermission: onlyCreator, }, "default to everybody": { - defaultPermssion: types.AccessTypeEverybody, + defaultPermission: types.AccessTypeEverybody, requestedPermission: nil, grantedPermission: types.AccessConfig{Permission: types.AccessTypeEverybody}, }, "explicitly set everybody": { - defaultPermssion: types.AccessTypeEverybody, + defaultPermission: types.AccessTypeEverybody, requestedPermission: &types.AccessConfig{Permission: types.AccessTypeEverybody}, grantedPermission: types.AccessConfig{Permission: types.AccessTypeEverybody}, }, "cannot override nobody": { - defaultPermssion: types.AccessTypeNobody, + defaultPermission: types.AccessTypeNobody, requestedPermission: &onlyCreator, expError: sdkerrors.ErrUnauthorized, }, "default to nobody": { - defaultPermssion: types.AccessTypeNobody, + defaultPermission: types.AccessTypeNobody, requestedPermission: nil, grantedPermission: types.AccessConfig{Permission: types.AccessTypeNobody}, }, "only defaults to code creator": { - defaultPermssion: types.AccessTypeAnyOfAddresses, + defaultPermission: types.AccessTypeAnyOfAddresses, requestedPermission: nil, grantedPermission: onlyCreator, }, "can explicitly set to code creator": { - defaultPermssion: types.AccessTypeAnyOfAddresses, + defaultPermission: types.AccessTypeAnyOfAddresses, requestedPermission: &onlyCreator, grantedPermission: onlyCreator, }, "cannot override which address in only": { - defaultPermssion: types.AccessTypeAnyOfAddresses, + defaultPermission: types.AccessTypeAnyOfAddresses, requestedPermission: &onlyOther, expError: sdkerrors.ErrUnauthorized, }, @@ -290,7 +290,7 @@ func TestEnforceValidPermissionsOnCreate(t *testing.T) { for msg, spec := range specs { t.Run(msg, func(t *testing.T) { params := types.DefaultParams() - params.InstantiateDefaultPermission = spec.defaultPermssion + params.InstantiateDefaultPermission = spec.defaultPermission err := keeper.SetParams(ctx, params) require.NoError(t, err) codeID, _, err := contractKeeper.Create(ctx, creator, hackatomWasm, spec.requestedPermission) @@ -1647,7 +1647,7 @@ func TestIterateContractsByCodeWithMigration(t *testing.T) { type sudoMsg struct { // This is a tongue-in-check demo command. This is not the intended purpose of Sudo. - // Here we show that some priviledged Go module can make a call that should never be exposed + // Here we show that some privileged Go module can make a call that should never be exposed // to end users (via Tx/Execute). // // The contract developer can choose to expose anything to sudo. This functionality is not a true @@ -1693,7 +1693,7 @@ func TestSudo(t *testing.T) { // now the community wants to get paid via sudo msg := sudoMsg{ // This is a tongue-in-check demo command. This is not the intended purpose of Sudo. - // Here we show that some priviledged Go module can make a call that should never be exposed + // Here we show that some privileged Go module can make a call that should never be exposed // to end users (via Tx/Execute). StealFunds: stealFundsMsg{ Recipient: community.String(), @@ -2498,7 +2498,7 @@ func TestIteratorContractByCreator(t *testing.T) { creatorAddr: mockAddress2, contractsAddr: []string{gotAddr2.String(), gotAddr4.String(), gotAddr5.String()}, }, - "contractAdress": { + "contractAddress": { creatorAddr: gotAddr1, contractsAddr: []string{gotAddr3.String()}, }, diff --git a/x/wasm/keeper/msg_dispatcher_test.go b/x/wasm/keeper/msg_dispatcher_test.go index a17a73281d..f9a0b72673 100644 --- a/x/wasm/keeper/msg_dispatcher_test.go +++ b/x/wasm/keeper/msg_dispatcher_test.go @@ -402,7 +402,7 @@ func TestDispatchSubmessages(t *testing.T) { // this is filtered out sdk.NewEvent("message", sdk.NewAttribute("stargate", "something-something")), // we still emit this to the client, but not the contract - sdk.NewEvent("non-determinstic"), + sdk.NewEvent("non-deterministic"), } return events, [][]byte{[]byte("subData")}, [][]*codectypes.Any{}, nil }, @@ -410,7 +410,7 @@ func TestDispatchSubmessages(t *testing.T) { expData: []byte("subData"), expCommits: []bool{true}, expEvents: []sdk.Event{ - sdk.NewEvent("non-determinstic"), + sdk.NewEvent("non-deterministic"), // the event from reply is also exposed sdk.NewEvent("stargate-reply"), }, diff --git a/x/wasm/keeper/querier.go b/x/wasm/keeper/querier.go index 54429d04b5..d08b77b23a 100644 --- a/x/wasm/keeper/querier.go +++ b/x/wasm/keeper/querier.go @@ -403,8 +403,8 @@ func (q GrpcQuerier) ContractsByCreator(c context.Context, req *types.QueryContr prefixStore := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), types.GetContractsByCreatorPrefix(creatorAddress)) pageRes, err := query.FilteredPaginate(prefixStore, paginationParams, func(key, _ []byte, accumulate bool) (bool, error) { if accumulate { - accAddres := sdk.AccAddress(key[types.AbsoluteTxPositionLen:]) - contracts = append(contracts, accAddres.String()) + accAddress := sdk.AccAddress(key[types.AbsoluteTxPositionLen:]) + contracts = append(contracts, accAddress.String()) } return true, nil }) diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index f35267f38d..dfae47c00f 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -1024,13 +1024,13 @@ func TestQueryContractsByCreatorList(t *testing.T) { return ctx } - var allExpecedContracts []string + var allExpectedContracts []string // create 10 contracts with real block/gas setup for i := 0; i < 10; i++ { ctx = setBlock(ctx, h) h++ contract, _, err := keepers.ContractKeeper.Instantiate(ctx, codeID, creator, nil, initMsgBz, fmt.Sprintf("contract %d", i), topUp) - allExpecedContracts = append(allExpecedContracts, contract.String()) + allExpectedContracts = append(allExpectedContracts, contract.String()) require.NoError(t, err) } @@ -1043,7 +1043,7 @@ func TestQueryContractsByCreatorList(t *testing.T) { srcQuery: &types.QueryContractsByCreatorRequest{ CreatorAddress: creator.String(), }, - expContractAddr: allExpecedContracts, + expContractAddr: allExpectedContracts, expErr: nil, }, "with pagination offset": { @@ -1062,19 +1062,19 @@ func TestQueryContractsByCreatorList(t *testing.T) { Limit: 1, }, }, - expContractAddr: allExpecedContracts[0:1], + expContractAddr: allExpectedContracts[0:1], expErr: nil, }, "nil creator": { srcQuery: &types.QueryContractsByCreatorRequest{ Pagination: &query.PageRequest{}, }, - expContractAddr: allExpecedContracts, + expContractAddr: allExpectedContracts, expErr: errors.New("empty address string is not allowed"), }, "nil req": { srcQuery: nil, - expContractAddr: allExpecedContracts, + expContractAddr: allExpectedContracts, expErr: status.Error(codes.InvalidArgument, "empty request"), }, } diff --git a/x/wasm/keeper/staking_test.go b/x/wasm/keeper/staking_test.go index 292094a52e..fc577bcdd9 100644 --- a/x/wasm/keeper/staking_test.go +++ b/x/wasm/keeper/staking_test.go @@ -31,7 +31,7 @@ type StakingInitMsg struct { Validator sdk.ValAddress `json:"validator"` ExitTax sdkmath.LegacyDec `json:"exit_tax"` // MinWithdrawal is uint128 encoded as a string (use math.Int?) - MinWithdrawl string `json:"min_withdrawal"` + MinWithdrawal string `json:"min_withdrawal"` } // StakingHandleMsg is used to encode handle messages @@ -88,8 +88,8 @@ type InvestmentResponse struct { Owner sdk.AccAddress `json:"owner"` Validator sdk.ValAddress `json:"validator"` ExitTax sdkmath.LegacyDec `json:"exit_tax"` - // MinWithdrawl is uint128 encoded as a string (use math.Int?) - MinWithdrawl string `json:"min_withdrawal"` + // MinWithdrawal is uint128 encoded as a string (use math.Int?) + MinWithdrawal string `json:"min_withdrawal"` } func TestInitializeStaking(t *testing.T) { @@ -114,12 +114,12 @@ func TestInitializeStaking(t *testing.T) { // register to a valid address initMsg := StakingInitMsg{ - Name: "Staking Derivatives", - Symbol: "DRV", - Decimals: 0, - Validator: valAddr, - ExitTax: sdkmath.LegacyMustNewDecFromStr("0.10"), - MinWithdrawl: "100", + Name: "Staking Derivatives", + Symbol: "DRV", + Decimals: 0, + Validator: valAddr, + ExitTax: sdkmath.LegacyMustNewDecFromStr("0.10"), + MinWithdrawal: "100", } initBz, err := json.Marshal(&initMsg) require.NoError(t, err) @@ -134,12 +134,12 @@ func TestInitializeStaking(t *testing.T) { // try to register with a validator not on the list and it fails _, bob := keyPubAddr() badInitMsg := StakingInitMsg{ - Name: "Missing Validator", - Symbol: "MISS", - Decimals: 0, - Validator: sdk.ValAddress(bob), - ExitTax: sdkmath.LegacyMustNewDecFromStr("0.10"), - MinWithdrawl: "100", + Name: "Missing Validator", + Symbol: "MISS", + Decimals: 0, + Validator: sdk.ValAddress(bob), + ExitTax: sdkmath.LegacyMustNewDecFromStr("0.10"), + MinWithdrawal: "100", } badBz, err := json.Marshal(&badInitMsg) require.NoError(t, err) @@ -191,12 +191,12 @@ func initializeStaking(t *testing.T) initInfo { // register to a valid address initMsg := StakingInitMsg{ - Name: "Staking Derivatives", - Symbol: "DRV", - Decimals: 0, - Validator: valAddr, - ExitTax: sdkmath.LegacyMustNewDecFromStr("0.10"), - MinWithdrawl: "100", + Name: "Staking Derivatives", + Symbol: "DRV", + Decimals: 0, + Validator: valAddr, + ExitTax: sdkmath.LegacyMustNewDecFromStr("0.10"), + MinWithdrawal: "100", } initBz, err := json.Marshal(&initMsg) require.NoError(t, err) diff --git a/x/wasm/migrations/v1/store.go b/x/wasm/migrations/v1/store.go index ab245b0e2a..cdccb0a1ae 100644 --- a/x/wasm/migrations/v1/store.go +++ b/x/wasm/migrations/v1/store.go @@ -8,7 +8,7 @@ import ( "github.com/CosmWasm/wasmd/x/wasm/types" ) -// AddToSecondIndexFn creates a secondary index entry for the creator fo the contract +// AddToSecondIndexFn creates a secondary index entry for the creator of the contract type AddToSecondIndexFn func(ctx context.Context, creatorAddress sdk.AccAddress, position *types.AbsoluteTxPosition, contractAddress sdk.AccAddress) error // Keeper abstract keeper diff --git a/x/wasm/migrations/v2/legacy_types.go b/x/wasm/migrations/v2/legacy_types.go index 787c28b574..1221ef8c02 100644 --- a/x/wasm/migrations/v2/legacy_types.go +++ b/x/wasm/migrations/v2/legacy_types.go @@ -1213,7 +1213,7 @@ func skipTypes(dAtA []byte) (n int, err error) { } var ( - ErrInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshaling") + ErrInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshalling") ErrIntOverflowTypes = fmt.Errorf("proto: integer overflow") ErrUnexpectedEndOfGroupTypes = fmt.Errorf("proto: unexpected end of group") ) diff --git a/x/wasm/migrations/v3/legacy_types.go b/x/wasm/migrations/v3/legacy_types.go index 01ec4743ad..d6a393c9c1 100644 --- a/x/wasm/migrations/v3/legacy_types.go +++ b/x/wasm/migrations/v3/legacy_types.go @@ -1213,7 +1213,7 @@ func skipTypes(dAtA []byte) (n int, err error) { } var ( - ErrInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshaling") + ErrInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshalling") ErrIntOverflowTypes = fmt.Errorf("proto: integer overflow") ErrUnexpectedEndOfGroupTypes = fmt.Errorf("proto: unexpected end of group") ) diff --git a/x/wasm/simulation/proposals.go b/x/wasm/simulation/proposals.go index c98bec2053..24bd74b634 100644 --- a/x/wasm/simulation/proposals.go +++ b/x/wasm/simulation/proposals.go @@ -112,7 +112,7 @@ func ProposalMsgs(bk BankKeeper, wasmKeeper WasmKeeper) []simtypes.WeightedPropo } // simulate store code proposal (unused now) -// Current problem: out of gas (defaul gaswanted config of gov SimulateMsgSubmitProposal is 10_000_000) +// Current problem: out of gas (default gaswanted config of gov SimulateMsgSubmitProposal is 10_000_000) // but this proposal may need more than it func SimulateStoreCodeProposal(wasmKeeper WasmKeeper) simtypes.MsgSimulatorFn { return func(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg { diff --git a/x/wasm/types/gas_register.go b/x/wasm/types/gas_register.go index 37d12d4e32..5c7ef7e0db 100644 --- a/x/wasm/types/gas_register.go +++ b/x/wasm/types/gas_register.go @@ -174,7 +174,7 @@ func (g WasmGasRegister) UncompressCosts(byteLength int) storetypes.Gas { // SetupContractCost costs when interacting with a wasm contract. // Set discount to true in cases where you can reasonably assume the contract -// is loaded from an in-memory cache (e.g. pinned contracts or replys). +// is loaded from an in-memory cache (e.g. pinned contracts or replies). func (g WasmGasRegister) SetupContractCost(discount bool, msgLen int) storetypes.Gas { if msgLen < 0 { panic(errorsmod.Wrap(ErrInvalid, "negative length")) @@ -189,7 +189,7 @@ func (g WasmGasRegister) SetupContractCost(discount bool, msgLen int) storetypes // ReplyCosts costs to handle a message reply. // Set discount to true in cases where you can reasonably assume the contract -// is loaded from an in-memory cache (e.g. pinned contracts or replys). +// is loaded from an in-memory cache (e.g. pinned contracts or replies). func (g WasmGasRegister) ReplyCosts(discount bool, reply wasmvmtypes.Reply) storetypes.Gas { var eventGas storetypes.Gas msgLen := len(reply.Result.Err) diff --git a/x/wasm/types/gas_register_test.go b/x/wasm/types/gas_register_test.go index 45e9719cbf..a1444d7595 100644 --- a/x/wasm/types/gas_register_test.go +++ b/x/wasm/types/gas_register_test.go @@ -306,7 +306,7 @@ func TestFromWasmVMGasConversion(t *testing.T) { src: math.MaxUint64, exp: math.MaxUint64, }, - "missconfigured": { + "misconfigured": { srcConfig: WasmGasRegisterConfig{ GasMultiplier: 0, }, diff --git a/x/wasm/types/keys.go b/x/wasm/types/keys.go index 107b9de73a..2f86ca1697 100644 --- a/x/wasm/types/keys.go +++ b/x/wasm/types/keys.go @@ -41,7 +41,7 @@ var ( KeySequenceInstanceID = append(SequenceKeyPrefix, []byte("lastContractId")...) ) -// GetCodeKey constructs the key for retreiving the ID for the WASM code +// GetCodeKey constructs the key for retrieving the ID for the WASM code func GetCodeKey(codeID uint64) []byte { contractIDBz := sdk.Uint64ToBigEndian(codeID) return append(CodeKeyPrefix, contractIDBz...) diff --git a/x/wasm/types/proposal_legacy.pb.go b/x/wasm/types/proposal_legacy.pb.go index 79c8e2af1d..0d16411d14 100644 --- a/x/wasm/types/proposal_legacy.pb.go +++ b/x/wasm/types/proposal_legacy.pb.go @@ -114,7 +114,7 @@ type InstantiateContractProposal struct { Admin string `protobuf:"bytes,4,opt,name=admin,proto3" json:"admin,omitempty"` // CodeID is the reference to the stored WASM code CodeID uint64 `protobuf:"varint,5,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty"` - // Label is optional metadata to be stored with a constract instance. + // Label is optional metadata to be stored with a contract instance. Label string `protobuf:"bytes,6,opt,name=label,proto3" json:"label,omitempty"` // Msg json encoded message to be passed to the contract on instantiation Msg RawContractMessage `protobuf:"bytes,7,opt,name=msg,proto3,casttype=RawContractMessage" json:"msg,omitempty"` @@ -176,7 +176,7 @@ type InstantiateContract2Proposal struct { Admin string `protobuf:"bytes,4,opt,name=admin,proto3" json:"admin,omitempty"` // CodeID is the reference to the stored WASM code CodeID uint64 `protobuf:"varint,5,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty"` - // Label is optional metadata to be stored with a constract instance. + // Label is optional metadata to be stored with a contract instance. Label string `protobuf:"bytes,6,opt,name=label,proto3" json:"label,omitempty"` // Msg json encode message to be passed to the contract on instantiation Msg RawContractMessage `protobuf:"bytes,7,opt,name=msg,proto3,casttype=RawContractMessage" json:"msg,omitempty"` @@ -724,7 +724,7 @@ type StoreAndInstantiateContractProposal struct { UnpinCode bool `protobuf:"varint,6,opt,name=unpin_code,json=unpinCode,proto3" json:"unpin_code,omitempty"` // Admin is an optional address that can execute migrations Admin string `protobuf:"bytes,7,opt,name=admin,proto3" json:"admin,omitempty"` - // Label is optional metadata to be stored with a constract instance. + // Label is optional metadata to be stored with a contract instance. Label string `protobuf:"bytes,8,opt,name=label,proto3" json:"label,omitempty"` // Msg json encoded message to be passed to the contract on instantiation Msg RawContractMessage `protobuf:"bytes,9,opt,name=msg,proto3,casttype=RawContractMessage" json:"msg,omitempty"` diff --git a/x/wasm/types/tx.pb.go b/x/wasm/types/tx.pb.go index f0c58e7e1f..63309b09cb 100644 --- a/x/wasm/types/tx.pb.go +++ b/x/wasm/types/tx.pb.go @@ -1183,7 +1183,7 @@ type MsgStoreAndInstantiateContract struct { UnpinCode bool `protobuf:"varint,5,opt,name=unpin_code,json=unpinCode,proto3" json:"unpin_code,omitempty"` // Admin is an optional address that can execute migrations Admin string `protobuf:"bytes,6,opt,name=admin,proto3" json:"admin,omitempty"` - // Label is optional metadata to be stored with a constract instance. + // Label is optional metadata to be stored with a contract instance. Label string `protobuf:"bytes,7,opt,name=label,proto3" json:"label,omitempty"` // Msg json encoded message to be passed to the contract on instantiation Msg RawContractMessage `protobuf:"bytes,8,opt,name=msg,proto3,casttype=RawContractMessage" json:"msg,omitempty"` diff --git a/x/wasm/types/wasmer_engine.go b/x/wasm/types/wasmer_engine.go index d22543accd..4dab6957d5 100644 --- a/x/wasm/types/wasmer_engine.go +++ b/x/wasm/types/wasmer_engine.go @@ -132,7 +132,7 @@ type WasmEngine interface { // Sudo runs an existing contract in read/write mode (like Execute), but is never exposed to external callers // (either transactions or government proposals), but can only be called by other native Go modules directly. // - // This allows a contract to expose custom "super user" functions or priviledged operations that can be + // This allows a contract to expose custom "super user" functions or privileged operations that can be // deeply integrated with native modules. Sudo( checksum wasmvm.Checksum, From 2489ab0dcb9118494257f36b5e84cea00d29f414 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 11:28:11 +0100 Subject: [PATCH 35/40] Bump bufbuild/buf-setup-action from 1.46.0 to 1.47.0 (#2036) Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.46.0 to 1.47.0. - [Release notes](https://github.com/bufbuild/buf-setup-action/releases) - [Commits](https://github.com/bufbuild/buf-setup-action/compare/v1.46.0...v1.47.0) --- updated-dependencies: - dependency-name: bufbuild/buf-setup-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/proto-buf-linter.yml | 2 +- .github/workflows/proto-buf-publisher.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/proto-buf-linter.yml b/.github/workflows/proto-buf-linter.yml index 74e83fb5a7..b2a0c5d2f7 100644 --- a/.github/workflows/proto-buf-linter.yml +++ b/.github/workflows/proto-buf-linter.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: bufbuild/buf-setup-action@v1.46.0 + - uses: bufbuild/buf-setup-action@v1.47.0 # lint checks - uses: bufbuild/buf-lint-action@v1 diff --git a/.github/workflows/proto-buf-publisher.yml b/.github/workflows/proto-buf-publisher.yml index be18ddb6df..8b4b3ca87f 100644 --- a/.github/workflows/proto-buf-publisher.yml +++ b/.github/workflows/proto-buf-publisher.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: bufbuild/buf-setup-action@v1.46.0 + - uses: bufbuild/buf-setup-action@v1.47.0 # lint checks - uses: bufbuild/buf-lint-action@v1 From ca784cf8519c64260da468e217599b9d11a4d8fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 11:10:17 +0100 Subject: [PATCH 36/40] Bump bufbuild/buf-setup-action from 1.47.0 to 1.47.2 (#2037) Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.47.0 to 1.47.2. - [Release notes](https://github.com/bufbuild/buf-setup-action/releases) - [Commits](https://github.com/bufbuild/buf-setup-action/compare/v1.47.0...v1.47.2) --- updated-dependencies: - dependency-name: bufbuild/buf-setup-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/proto-buf-linter.yml | 2 +- .github/workflows/proto-buf-publisher.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/proto-buf-linter.yml b/.github/workflows/proto-buf-linter.yml index b2a0c5d2f7..1ae4d20c65 100644 --- a/.github/workflows/proto-buf-linter.yml +++ b/.github/workflows/proto-buf-linter.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: bufbuild/buf-setup-action@v1.47.0 + - uses: bufbuild/buf-setup-action@v1.47.2 # lint checks - uses: bufbuild/buf-lint-action@v1 diff --git a/.github/workflows/proto-buf-publisher.yml b/.github/workflows/proto-buf-publisher.yml index 8b4b3ca87f..7cdbe23466 100644 --- a/.github/workflows/proto-buf-publisher.yml +++ b/.github/workflows/proto-buf-publisher.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: bufbuild/buf-setup-action@v1.47.0 + - uses: bufbuild/buf-setup-action@v1.47.2 # lint checks - uses: bufbuild/buf-lint-action@v1 From 189cb60330a4d44b73ccddbc327f34f659b64064 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:20:17 +0100 Subject: [PATCH 37/40] Bump cosmossdk.io/math from 1.3.0 to 1.4.0 (#2039) Bumps [cosmossdk.io/math](https://github.com/cosmos/cosmos-sdk) from 1.3.0 to 1.4.0. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/log/v1.3.0...log/v1.4.0) --- updated-dependencies: - dependency-name: cosmossdk.io/math dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4a2cd15d93..64bc48320a 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( cosmossdk.io/core v0.11.1 cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.5.0 - cosmossdk.io/math v1.3.0 + cosmossdk.io/math v1.4.0 cosmossdk.io/store v1.1.1 cosmossdk.io/tools/confix v0.1.2 cosmossdk.io/x/circuit v0.1.1 diff --git a/go.sum b/go.sum index 9dd86d95a6..32f69aacbe 100644 --- a/go.sum +++ b/go.sum @@ -196,8 +196,8 @@ cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= -cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= -cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= +cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= From 91ee0f35a117b7de0be2e0ec81cdd018ad2183ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:20:36 +0100 Subject: [PATCH 38/40] Bump cosmossdk.io/math from 1.3.0 to 1.4.0 in /tests/system (#2038) Bumps [cosmossdk.io/math](https://github.com/cosmos/cosmos-sdk) from 1.3.0 to 1.4.0. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/log/v1.3.0...log/v1.4.0) --- updated-dependencies: - dependency-name: cosmossdk.io/math dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/system/go.mod | 2 +- tests/system/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/system/go.mod b/tests/system/go.mod index e38ee6d95a..b4dafa8d05 100644 --- a/tests/system/go.mod +++ b/tests/system/go.mod @@ -24,7 +24,7 @@ require ( ) require ( - cosmossdk.io/math v1.3.0 + cosmossdk.io/math v1.4.0 github.com/cometbft/cometbft v0.38.15 github.com/tidwall/gjson v1.14.2 github.com/tidwall/sjson v1.2.5 diff --git a/tests/system/go.sum b/tests/system/go.sum index 9be1774ced..3c0606d50c 100644 --- a/tests/system/go.sum +++ b/tests/system/go.sum @@ -12,8 +12,8 @@ cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= -cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= -cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= +cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= cosmossdk.io/x/tx v0.13.5 h1:FdnU+MdmFWn1pTsbfU0OCf2u6mJ8cqc1H4OMG418MLw= From f649110514571d916e70b2c7f763495666a05c0a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:52:32 +0100 Subject: [PATCH 39/40] Bump github.com/stretchr/testify from 1.9.0 to 1.10.0 (#2042) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.9.0 to 1.10.0. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 64bc48320a..53549672e4 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/spf13/cast v1.7.0 github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/grpc v1.67.1 diff --git a/go.sum b/go.sum index 32f69aacbe..abcf5537d3 100644 --- a/go.sum +++ b/go.sum @@ -1009,8 +1009,9 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= From b2b6abee8c9484a4bf668c1cc7119c994b2a7476 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:53:24 +0100 Subject: [PATCH 40/40] Bump github.com/cosmos/cosmos-db from 1.0.2 to 1.1.0 (#2041) Bumps [github.com/cosmos/cosmos-db](https://github.com/cosmos/cosmos-db) from 1.0.2 to 1.1.0. - [Changelog](https://github.com/cosmos/cosmos-db/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-db/compare/v1.0.2...v1.1.0) --- updated-dependencies: - dependency-name: github.com/cosmos/cosmos-db dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 53549672e4..1ee0e31e66 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( cosmossdk.io/x/tx v0.13.5 cosmossdk.io/x/upgrade v0.1.4 github.com/cometbft/cometbft v0.38.15 - github.com/cosmos/cosmos-db v1.0.2 + github.com/cosmos/cosmos-db v1.1.0 github.com/cosmos/ibc-go/modules/apps/callbacks v0.2.1-0.20231113120333-342c00b0f8bd github.com/cosmos/ibc-go/modules/capability v1.0.1 github.com/cosmos/ibc-go/v8 v8.4.0 @@ -81,7 +81,7 @@ require ( github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.1 // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cometbft/cometbft-db v0.14.1 // indirect diff --git a/go.sum b/go.sum index abcf5537d3..832141acf8 100644 --- a/go.sum +++ b/go.sum @@ -332,8 +332,8 @@ github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/e github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= -github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -351,8 +351,8 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= -github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-db v1.1.0 h1:KLHNVQ73h7vawXTpj9UJ7ZR2IXv51tsEHkQJJ9EBDzI= +github.com/cosmos/cosmos-db v1.1.0/go.mod h1:t7c4A6cfGdpUwwVxrQ0gQLeRQqGUBJu0yvE4F/26REg= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= github.com/cosmos/cosmos-sdk v0.50.10 h1:zXfeu/z653tWZARr/jESzAEiCUYjgJwwG4ytnYWMoDM=

4Optu0&C922`( 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 literal 395862 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�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