diff --git a/client/grpc/reflection/reflection.pb.gw.go b/client/grpc/reflection/reflection.pb.gw.go index 7bb8a5e12836..ab486750e860 100644 --- a/client/grpc/reflection/reflection.pb.gw.go +++ b/client/grpc/reflection/reflection.pb.gw.go @@ -234,9 +234,9 @@ func RegisterReflectionServiceHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_ReflectionService_ListAllInterfaces_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_ListAllInterfaces_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ReflectionService_ListImplementations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces", "interface_name", "implementations"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_ListImplementations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces", "interface_name", "implementations"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/client/grpc/tmservice/block.go b/client/grpc/tmservice/block.go index 554156982dda..8663195f53c9 100644 --- a/client/grpc/tmservice/block.go +++ b/client/grpc/tmservice/block.go @@ -3,6 +3,7 @@ package tmservice import ( "context" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" ctypes "github.com/tendermint/tendermint/rpc/core/types" "github.com/cosmos/cosmos-sdk/client" @@ -17,3 +18,17 @@ func getBlock(ctx context.Context, clientCtx client.Context, height *int64) (*ct return node.Block(ctx, height) } + +func GetProtoBlock(ctx context.Context, clientCtx client.Context, height *int64) (tmproto.BlockID, *tmproto.Block, error) { + block, err := getBlock(ctx, clientCtx, height) + if err != nil { + return tmproto.BlockID{}, nil, err + } + protoBlock, err := block.Block.ToProto() + if err != nil { + return tmproto.BlockID{}, nil, err + } + protoBlockId := block.BlockID.ToProto() + + return protoBlockId, protoBlock, nil +} diff --git a/client/grpc/tmservice/query.pb.gw.go b/client/grpc/tmservice/query.pb.gw.go index a53a31fccfc0..90135d79b937 100644 --- a/client/grpc/tmservice/query.pb.gw.go +++ b/client/grpc/tmservice/query.pb.gw.go @@ -538,17 +538,17 @@ func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl } var ( - pattern_Service_GetNodeInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "tendermint", "v1beta1", "node_info"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_GetNodeInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "tendermint", "v1beta1", "node_info"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Service_GetSyncing_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "tendermint", "v1beta1", "syncing"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_GetSyncing_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "tendermint", "v1beta1", "syncing"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Service_GetLatestBlock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "blocks", "latest"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_GetLatestBlock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "blocks", "latest"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Service_GetBlockByHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "blocks", "height"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_GetBlockByHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "blocks", "height"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Service_GetLatestValidatorSet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "validatorsets", "latest"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_GetLatestValidatorSet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "validatorsets", "latest"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Service_GetValidatorSetByHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "validatorsets", "height"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_GetValidatorSetByHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "validatorsets", "height"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/client/grpc/tmservice/service.go b/client/grpc/tmservice/service.go index cd6e7e5313ef..47a2003bb565 100644 --- a/client/grpc/tmservice/service.go +++ b/client/grpc/tmservice/service.go @@ -74,12 +74,7 @@ func (s queryServer) GetBlockByHeight(ctx context.Context, req *GetBlockByHeight return nil, status.Error(codes.InvalidArgument, "requested block height is bigger then the chain length") } - res, err := getBlock(ctx, s.clientCtx, &req.Height) - if err != nil { - return nil, err - } - protoBlockID := res.BlockID.ToProto() - protoBlock, err := res.Block.ToProto() + protoBlockID, protoBlock, err := GetProtoBlock(ctx, s.clientCtx, &req.Height) if err != nil { return nil, err } diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 3ea030940de5..b446a8eeda82 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -12,9 +12,15 @@ - [cosmos/auth/v1beta1/genesis.proto](#cosmos/auth/v1beta1/genesis.proto) - [GenesisState](#cosmos.auth.v1beta1.GenesisState) +- [cosmos/base/query/v1beta1/pagination.proto](#cosmos/base/query/v1beta1/pagination.proto) + - [PageRequest](#cosmos.base.query.v1beta1.PageRequest) + - [PageResponse](#cosmos.base.query.v1beta1.PageResponse) + - [cosmos/auth/v1beta1/query.proto](#cosmos/auth/v1beta1/query.proto) - [QueryAccountRequest](#cosmos.auth.v1beta1.QueryAccountRequest) - [QueryAccountResponse](#cosmos.auth.v1beta1.QueryAccountResponse) + - [QueryAccountsRequest](#cosmos.auth.v1beta1.QueryAccountsRequest) + - [QueryAccountsResponse](#cosmos.auth.v1beta1.QueryAccountsResponse) - [QueryParamsRequest](#cosmos.auth.v1beta1.QueryParamsRequest) - [QueryParamsResponse](#cosmos.auth.v1beta1.QueryParamsResponse) @@ -39,10 +45,6 @@ - [Balance](#cosmos.bank.v1beta1.Balance) - [GenesisState](#cosmos.bank.v1beta1.GenesisState) -- [cosmos/base/query/v1beta1/pagination.proto](#cosmos/base/query/v1beta1/pagination.proto) - - [PageRequest](#cosmos.base.query.v1beta1.PageRequest) - - [PageResponse](#cosmos.base.query.v1beta1.PageResponse) - - [cosmos/bank/v1beta1/query.proto](#cosmos/bank/v1beta1/query.proto) - [QueryAllBalancesRequest](#cosmos.bank.v1beta1.QueryAllBalancesRequest) - [QueryAllBalancesResponse](#cosmos.bank.v1beta1.QueryAllBalancesResponse) @@ -93,6 +95,36 @@ - [ReflectionService](#cosmos.base.reflection.v1beta1.ReflectionService) +- [cosmos/base/reflection/v2alpha1/reflection.proto](#cosmos/base/reflection/v2alpha1/reflection.proto) + - [AppDescriptor](#cosmos.base.reflection.v2alpha1.AppDescriptor) + - [AuthnDescriptor](#cosmos.base.reflection.v2alpha1.AuthnDescriptor) + - [ChainDescriptor](#cosmos.base.reflection.v2alpha1.ChainDescriptor) + - [CodecDescriptor](#cosmos.base.reflection.v2alpha1.CodecDescriptor) + - [ConfigurationDescriptor](#cosmos.base.reflection.v2alpha1.ConfigurationDescriptor) + - [GetAuthnDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetAuthnDescriptorRequest) + - [GetAuthnDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse) + - [GetChainDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetChainDescriptorRequest) + - [GetChainDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse) + - [GetCodecDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetCodecDescriptorRequest) + - [GetCodecDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse) + - [GetConfigurationDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorRequest) + - [GetConfigurationDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse) + - [GetQueryServicesDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorRequest) + - [GetQueryServicesDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse) + - [GetTxDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetTxDescriptorRequest) + - [GetTxDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse) + - [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor) + - [InterfaceDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceDescriptor) + - [InterfaceImplementerDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor) + - [MsgDescriptor](#cosmos.base.reflection.v2alpha1.MsgDescriptor) + - [QueryMethodDescriptor](#cosmos.base.reflection.v2alpha1.QueryMethodDescriptor) + - [QueryServiceDescriptor](#cosmos.base.reflection.v2alpha1.QueryServiceDescriptor) + - [QueryServicesDescriptor](#cosmos.base.reflection.v2alpha1.QueryServicesDescriptor) + - [SigningModeDescriptor](#cosmos.base.reflection.v2alpha1.SigningModeDescriptor) + - [TxDescriptor](#cosmos.base.reflection.v2alpha1.TxDescriptor) + + - [ReflectionService](#cosmos.base.reflection.v2alpha1.ReflectionService) + - [cosmos/base/snapshots/v1beta1/snapshot.proto](#cosmos/base/snapshots/v1beta1/snapshot.proto) - [Metadata](#cosmos.base.snapshots.v1beta1.Metadata) - [Snapshot](#cosmos.base.snapshots.v1beta1.Snapshot) @@ -437,6 +469,8 @@ - [cosmos/tx/v1beta1/service.proto](#cosmos/tx/v1beta1/service.proto) - [BroadcastTxRequest](#cosmos.tx.v1beta1.BroadcastTxRequest) - [BroadcastTxResponse](#cosmos.tx.v1beta1.BroadcastTxResponse) + - [GetBlockWithTxsRequest](#cosmos.tx.v1beta1.GetBlockWithTxsRequest) + - [GetBlockWithTxsResponse](#cosmos.tx.v1beta1.GetBlockWithTxsResponse) - [GetTxRequest](#cosmos.tx.v1beta1.GetTxRequest) - [GetTxResponse](#cosmos.tx.v1beta1.GetTxResponse) - [GetTxsEventRequest](#cosmos.tx.v1beta1.GetTxsEventRequest) @@ -785,6 +819,69 @@ GenesisState defines the auth module's genesis state. + + + + + + + + + + + +

Top

+ +## cosmos/base/query/v1beta1/pagination.proto + + + + + +### PageRequest +PageRequest is to be embedded in gRPC request messages for efficient +pagination. Ex: + + message SomeRequest { + Foo some_parameter = 1; + PageRequest pagination = 2; + } + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `key` | [bytes](#bytes) | | key is a value returned in PageResponse.next_key to begin querying the next page most efficiently. Only one of offset or key should be set. | +| `offset` | [uint64](#uint64) | | offset is a numeric offset that can be used when key is unavailable. It is less efficient than using key. Only one of offset or key should be set. | +| `limit` | [uint64](#uint64) | | limit is the total number of results to be returned in the result page. If left empty it will default to a value to be set by each app. | +| `count_total` | [bool](#bool) | | count_total is set to true to indicate that the result set should include a count of the total number of items available for pagination in UIs. count_total is only respected when offset is used. It is ignored when key is set. | +| `reverse` | [bool](#bool) | | reverse is set to true if results are to be returned in the descending order. | + + + + + + + + +### PageResponse +PageResponse is to be embedded in gRPC response messages where the +corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `next_key` | [bytes](#bytes) | | next_key is the key to be passed to PageRequest.key to query the next page most efficiently | +| `total` | [uint64](#uint64) | | total is total number of results available if PageRequest.count_total was set, its value is undefined otherwise | + + + + + @@ -832,6 +929,37 @@ QueryAccountResponse is the response type for the Query/Account RPC method. + + +### QueryAccountsRequest +QueryAccountsRequest is the request type for the Query/Accounts RPC method. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | + + + + + + + + +### QueryAccountsResponse +QueryAccountsResponse is the response type for the Query/Accounts RPC method. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `accounts` | [google.protobuf.Any](#google.protobuf.Any) | repeated | accounts are the existing accounts | +| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | + + + + + + ### QueryParamsRequest @@ -870,6 +998,7 @@ Query defines the gRPC querier service. | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | +| `Accounts` | [QueryAccountsRequest](#cosmos.auth.v1beta1.QueryAccountsRequest) | [QueryAccountsResponse](#cosmos.auth.v1beta1.QueryAccountsResponse) | Accounts returns all the existing accounts | GET|/cosmos/auth/v1beta1/accounts| | `Account` | [QueryAccountRequest](#cosmos.auth.v1beta1.QueryAccountRequest) | [QueryAccountResponse](#cosmos.auth.v1beta1.QueryAccountResponse) | Account returns account details based on address. | GET|/cosmos/auth/v1beta1/accounts/{address}| | `Params` | [QueryParamsRequest](#cosmos.auth.v1beta1.QueryParamsRequest) | [QueryParamsResponse](#cosmos.auth.v1beta1.QueryParamsResponse) | Params queries all parameters. | GET|/cosmos/auth/v1beta1/params| @@ -1129,75 +1258,13 @@ GenesisState defines the bank module's genesis state. | ----- | ---- | ----- | ----------- | | `params` | [Params](#cosmos.bank.v1beta1.Params) | | params defines all the paramaters of the module. | | `balances` | [Balance](#cosmos.bank.v1beta1.Balance) | repeated | balances is an array containing the balances of all the accounts. | -| `supply` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | supply represents the total supply. | +| `supply` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | supply represents the total supply. If it is left empty, then supply will be calculated based on the provided balances. Otherwise, it will be used to validate that the sum of the balances equals this amount. | | `denom_metadata` | [Metadata](#cosmos.bank.v1beta1.Metadata) | repeated | denom_metadata defines the metadata of the differents coins. | - - - - - - - - - - - -

Top

- -## cosmos/base/query/v1beta1/pagination.proto - - - - - -### PageRequest -PageRequest is to be embedded in gRPC request messages for efficient -pagination. Ex: - - message SomeRequest { - Foo some_parameter = 1; - PageRequest pagination = 2; - } - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `key` | [bytes](#bytes) | | key is a value returned in PageResponse.next_key to begin querying the next page most efficiently. Only one of offset or key should be set. | -| `offset` | [uint64](#uint64) | | offset is a numeric offset that can be used when key is unavailable. It is less efficient than using key. Only one of offset or key should be set. | -| `limit` | [uint64](#uint64) | | limit is the total number of results to be returned in the result page. If left empty it will default to a value to be set by each app. | -| `count_total` | [bool](#bool) | | count_total is set to true to indicate that the result set should include a count of the total number of items available for pagination in UIs. count_total is only respected when offset is used. It is ignored when key is set. | - - - - - - - - -### PageResponse -PageResponse is to be embedded in gRPC response messages where the -corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `next_key` | [bytes](#bytes) | | next_key is the key to be passed to PageRequest.key to query the next page most efficiently | -| `total` | [uint64](#uint64) | | total is total number of results available if PageRequest.count_total was set, its value is undefined otherwise | - - - - - @@ -1437,7 +1504,7 @@ Query defines the gRPC querier service. | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | -| `Balance` | [QueryBalanceRequest](#cosmos.bank.v1beta1.QueryBalanceRequest) | [QueryBalanceResponse](#cosmos.bank.v1beta1.QueryBalanceResponse) | Balance queries the balance of a single coin for a single account. | GET|/cosmos/bank/v1beta1/balances/{address}/{denom}| +| `Balance` | [QueryBalanceRequest](#cosmos.bank.v1beta1.QueryBalanceRequest) | [QueryBalanceResponse](#cosmos.bank.v1beta1.QueryBalanceResponse) | Balance queries the balance of a single coin for a single account. | GET|/cosmos/bank/v1beta1/balances/{address}/by_denom| | `AllBalances` | [QueryAllBalancesRequest](#cosmos.bank.v1beta1.QueryAllBalancesRequest) | [QueryAllBalancesResponse](#cosmos.bank.v1beta1.QueryAllBalancesResponse) | AllBalances queries the balance of all coins for a single account. | GET|/cosmos/bank/v1beta1/balances/{address}| | `TotalSupply` | [QueryTotalSupplyRequest](#cosmos.bank.v1beta1.QueryTotalSupplyRequest) | [QueryTotalSupplyResponse](#cosmos.bank.v1beta1.QueryTotalSupplyResponse) | TotalSupply queries the total supply of all coins. | GET|/cosmos/bank/v1beta1/supply| | `SupplyOf` | [QuerySupplyOfRequest](#cosmos.bank.v1beta1.QuerySupplyOfRequest) | [QuerySupplyOfResponse](#cosmos.bank.v1beta1.QuerySupplyOfResponse) | SupplyOf queries the supply of a single coin. | GET|/cosmos/bank/v1beta1/supply/{denom}| @@ -1711,6 +1778,9 @@ tags are stringified and the log is JSON decoded. | `gas_used` | [int64](#int64) | | Amount of gas consumed by transaction. | | `tx` | [google.protobuf.Any](#google.protobuf.Any) | | The request transaction bytes. | | `timestamp` | [string](#string) | | Time of the previous block. For heights > 1, it's the weighted median of the timestamps of the valid votes in the block.LastCommit. For height == 1, it's genesis time. | +| `events` | [tendermint.abci.Event](#tendermint.abci.Event) | repeated | Events defines all the events emitted by processing a transaction. Note, these events include those emitted by processing all the messages and those emitted from the ante handler. Whereas Logs contains the events, with additional metadata, emitted only by processing the messages. + +Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 | @@ -1857,6 +1927,419 @@ ReflectionService defines a service for interface reflection. + +

Top

+ +## cosmos/base/reflection/v2alpha1/reflection.proto +Since: cosmos-sdk 0.43 + + + + +### AppDescriptor +AppDescriptor describes a cosmos-sdk based application + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v2alpha1.AuthnDescriptor) | | AuthnDescriptor provides information on how to authenticate transactions on the application NOTE: experimental and subject to change in future releases. | +| `chain` | [ChainDescriptor](#cosmos.base.reflection.v2alpha1.ChainDescriptor) | | chain provides the chain descriptor | +| `codec` | [CodecDescriptor](#cosmos.base.reflection.v2alpha1.CodecDescriptor) | | codec provides metadata information regarding codec related types | +| `configuration` | [ConfigurationDescriptor](#cosmos.base.reflection.v2alpha1.ConfigurationDescriptor) | | configuration provides metadata information regarding the sdk.Config type | +| `query_services` | [QueryServicesDescriptor](#cosmos.base.reflection.v2alpha1.QueryServicesDescriptor) | | query_services provides metadata information regarding the available queriable endpoints | +| `tx` | [TxDescriptor](#cosmos.base.reflection.v2alpha1.TxDescriptor) | | tx provides metadata information regarding how to send transactions to the given application | + + + + + + + + +### AuthnDescriptor +AuthnDescriptor provides information on how to sign transactions without relying +on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `sign_modes` | [SigningModeDescriptor](#cosmos.base.reflection.v2alpha1.SigningModeDescriptor) | repeated | sign_modes defines the supported signature algorithm | + + + + + + + + +### ChainDescriptor +ChainDescriptor describes chain information of the application + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `id` | [string](#string) | | id is the chain id | + + + + + + + + +### CodecDescriptor +CodecDescriptor describes the registered interfaces and provides metadata information on the types + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `interfaces` | [InterfaceDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceDescriptor) | repeated | interfaces is a list of the registerted interfaces descriptors | + + + + + + + + +### ConfigurationDescriptor +ConfigurationDescriptor contains metadata information on the sdk.Config + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `bech32_account_address_prefix` | [string](#string) | | bech32_account_address_prefix is the account address prefix | + + + + + + + + +### GetAuthnDescriptorRequest +GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC + + + + + + + + +### GetAuthnDescriptorResponse +GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v2alpha1.AuthnDescriptor) | | authn describes how to authenticate to the application when sending transactions | + + + + + + + + +### GetChainDescriptorRequest +GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC + + + + + + + + +### GetChainDescriptorResponse +GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `chain` | [ChainDescriptor](#cosmos.base.reflection.v2alpha1.ChainDescriptor) | | chain describes application chain information | + + + + + + + + +### GetCodecDescriptorRequest +GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC + + + + + + + + +### GetCodecDescriptorResponse +GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `codec` | [CodecDescriptor](#cosmos.base.reflection.v2alpha1.CodecDescriptor) | | codec describes the application codec such as registered interfaces and implementations | + + + + + + + + +### GetConfigurationDescriptorRequest +GetConfigurationDescriptorRequest is the request used for the GetConfigurationDescriptor RPC + + + + + + + + +### GetConfigurationDescriptorResponse +GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `config` | [ConfigurationDescriptor](#cosmos.base.reflection.v2alpha1.ConfigurationDescriptor) | | config describes the application's sdk.Config | + + + + + + + + +### GetQueryServicesDescriptorRequest +GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDescriptor RPC + + + + + + + + +### GetQueryServicesDescriptorResponse +GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `queries` | [QueryServicesDescriptor](#cosmos.base.reflection.v2alpha1.QueryServicesDescriptor) | | queries provides information on the available queryable services | + + + + + + + + +### GetTxDescriptorRequest +GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC + + + + + + + + +### GetTxDescriptorResponse +GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `tx` | [TxDescriptor](#cosmos.base.reflection.v2alpha1.TxDescriptor) | | tx provides information on msgs that can be forwarded to the application alongside the accepted transaction protobuf type | + + + + + + + + +### InterfaceAcceptingMessageDescriptor +InterfaceAcceptingMessageDescriptor describes a protobuf message which contains +an interface represented as a google.protobuf.Any + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf fullname of the type containing the interface | +| `field_descriptor_names` | [string](#string) | repeated | field_descriptor_names is a list of the protobuf name (not fullname) of the field which contains the interface as google.protobuf.Any (the interface is the same, but it can be in multiple fields of the same proto message) | + + + + + + + + +### InterfaceDescriptor +InterfaceDescriptor describes the implementation of an interface + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the name of the interface | +| `interface_accepting_messages` | [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor) | repeated | interface_accepting_messages contains information regarding the proto messages which contain the interface as google.protobuf.Any field | +| `interface_implementers` | [InterfaceImplementerDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor) | repeated | interface_implementers is a list of the descriptors of the interface implementers | + + + + + + + + +### InterfaceImplementerDescriptor +InterfaceImplementerDescriptor describes an interface implementer + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf queryable name of the interface implementer | +| `type_url` | [string](#string) | | type_url defines the type URL used when marshalling the type as any this is required so we can provide type safe google.protobuf.Any marshalling and unmarshalling, making sure that we don't accept just 'any' type in our interface fields | + + + + + + + + +### MsgDescriptor +MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `msg_type_url` | [string](#string) | | msg_type_url contains the TypeURL of a sdk.Msg. | + + + + + + + + +### QueryMethodDescriptor +QueryMethodDescriptor describes a queryable method of a query service +no other info is provided beside method name and tendermint queryable path +because it would be redundant with the grpc reflection service + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `name` | [string](#string) | | name is the protobuf name (not fullname) of the method | +| `full_query_path` | [string](#string) | | full_query_path is the path that can be used to query this method via tendermint abci.Query | + + + + + + + + +### QueryServiceDescriptor +QueryServiceDescriptor describes a cosmos-sdk queryable service + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf fullname of the service descriptor | +| `is_module` | [bool](#bool) | | is_module describes if this service is actually exposed by an application's module | +| `methods` | [QueryMethodDescriptor](#cosmos.base.reflection.v2alpha1.QueryMethodDescriptor) | repeated | methods provides a list of query service methods | + + + + + + + + +### QueryServicesDescriptor +QueryServicesDescriptor contains the list of cosmos-sdk queriable services + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `query_services` | [QueryServiceDescriptor](#cosmos.base.reflection.v2alpha1.QueryServiceDescriptor) | repeated | query_services is a list of cosmos-sdk QueryServiceDescriptor | + + + + + + + + +### SigningModeDescriptor +SigningModeDescriptor provides information on a signing flow of the application +NOTE(fdymylja): here we could go as far as providing an entire flow on how +to sign a message given a SigningModeDescriptor, but it's better to think about +this another time + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `name` | [string](#string) | | name defines the unique name of the signing mode | +| `number` | [int32](#int32) | | number is the unique int32 identifier for the sign_mode enum | +| `authn_info_provider_method_fullname` | [string](#string) | | authn_info_provider_method_fullname defines the fullname of the method to call to get the metadata required to authenticate using the provided sign_modes | + + + + + + + + +### TxDescriptor +TxDescriptor describes the accepted transaction type + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) it is not meant to support polymorphism of transaction types, it is supposed to be used by reflection clients to understand if they can handle a specific transaction type in an application. | +| `msgs` | [MsgDescriptor](#cosmos.base.reflection.v2alpha1.MsgDescriptor) | repeated | msgs lists the accepted application messages (sdk.Msg) | + + + + + + + + + + + + + + +### ReflectionService +ReflectionService defines a service for application reflection. + +| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | +| ----------- | ------------ | ------------- | ------------| ------- | -------- | +| `GetAuthnDescriptor` | [GetAuthnDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetAuthnDescriptorRequest) | [GetAuthnDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse) | GetAuthnDescriptor returns information on how to authenticate transactions in the application NOTE: this RPC is still experimental and might be subject to breaking changes or removal in future releases of the cosmos-sdk. | GET|/cosmos/base/reflection/v1beta1/app_descriptor/authn| +| `GetChainDescriptor` | [GetChainDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetChainDescriptorRequest) | [GetChainDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse) | GetChainDescriptor returns the description of the chain | GET|/cosmos/base/reflection/v1beta1/app_descriptor/chain| +| `GetCodecDescriptor` | [GetCodecDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetCodecDescriptorRequest) | [GetCodecDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse) | GetCodecDescriptor returns the descriptor of the codec of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/codec| +| `GetConfigurationDescriptor` | [GetConfigurationDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorRequest) | [GetConfigurationDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse) | GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/configuration| +| `GetQueryServicesDescriptor` | [GetQueryServicesDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorRequest) | [GetQueryServicesDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse) | GetQueryServicesDescriptor returns the available gRPC queryable services of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/query_services| +| `GetTxDescriptor` | [GetTxDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetTxDescriptorRequest) | [GetTxDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse) | GetTxDescriptor returns information on the used transaction object and available msgs that can be used | GET|/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor| + + + + +

Top

@@ -2269,7 +2752,7 @@ VersionInfo is the type for the GetNodeInfoResponse message. | `build_tags` | [string](#string) | | | | `go_version` | [string](#string) | | | | `build_deps` | [Module](#cosmos.base.tendermint.v1beta1.Module) | repeated | | -| `cosmos_sdk_version` | [string](#string) | | | +| `cosmos_sdk_version` | [string](#string) | | Since: cosmos-sdk 0.43 | @@ -4740,11 +5223,11 @@ liveness activity. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `address` | [string](#string) | | | -| `start_height` | [int64](#int64) | | height at which validator was first a candidate OR was unjailed | -| `index_offset` | [int64](#int64) | | index offset into signed block bit array | -| `jailed_until` | [google.protobuf.Timestamp](#google.protobuf.Timestamp) | | timestamp validator cannot be unjailed until | -| `tombstoned` | [bool](#bool) | | whether or not a validator has been tombstoned (killed out of validator set) | -| `missed_blocks_counter` | [int64](#int64) | | missed blocks counter (to avoid scanning the array every time) | +| `start_height` | [int64](#int64) | | Height at which validator was first a candidate OR was unjailed | +| `index_offset` | [int64](#int64) | | Index which is incremented each time the validator was a bonded in a block and may have signed a precommit or not. This in conjunction with the `SignedBlocksWindow` param determines the index in the `MissedBlocksBitArray`. | +| `jailed_until` | [google.protobuf.Timestamp](#google.protobuf.Timestamp) | | Timestamp until which the validator is jailed due to liveness downtime. | +| `tombstoned` | [bool](#bool) | | Whether or not a validator has been tombstoned (killed out of validator set). It is set once the validator commits an equivocation or for any other configured misbehiavor. | +| `missed_blocks_counter` | [int64](#int64) | | A counter kept to avoid unnecessary array reads. Note that `Sum(MissedBlocksBitArray)` always equals `MissedBlocksCounter`. | @@ -4777,7 +5260,7 @@ GenesisState defines the slashing module's genesis state. | ----- | ---- | ----- | ----------- | | `params` | [Params](#cosmos.slashing.v1beta1.Params) | | params defines all the paramaters of related to deposit. | | `signing_infos` | [SigningInfo](#cosmos.slashing.v1beta1.SigningInfo) | repeated | signing_infos represents a map between validator addresses and their signing infos. | -| `missed_blocks` | [ValidatorMissedBlocks](#cosmos.slashing.v1beta1.ValidatorMissedBlocks) | repeated | signing_infos represents a map between validator addresses and their missed blocks. | +| `missed_blocks` | [ValidatorMissedBlocks](#cosmos.slashing.v1beta1.ValidatorMissedBlocks) | repeated | missed_blocks represents a map between validator addresses and their missed blocks. | @@ -6485,6 +6968,45 @@ Service.BroadcastTx method. + + +### GetBlockWithTxsRequest +GetBlockWithTxsRequest is the request type for the Service.GetBlockWithTxs +RPC method. + +Since: cosmos-sdk 0.45.2 + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `height` | [int64](#int64) | | height is the height of the block to query. | +| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines a pagination for the request. | + + + + + + + + +### GetBlockWithTxsResponse +GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs method. + +Since: cosmos-sdk 0.45.2 + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `txs` | [Tx](#cosmos.tx.v1beta1.Tx) | repeated | txs are the transactions in the block. | +| `block_id` | [tendermint.types.BlockID](#tendermint.types.BlockID) | | | +| `block` | [tendermint.types.Block](#tendermint.types.Block) | | | +| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines a pagination for the response. | + + + + + + ### GetTxRequest @@ -6527,7 +7049,7 @@ RPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `events` | [string](#string) | repeated | events is the list of transaction event type. | -| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an pagination for the request. | +| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines a pagination for the request. | | `order_by` | [OrderBy](#cosmos.tx.v1beta1.OrderBy) | | | @@ -6546,7 +7068,7 @@ RPC method. | ----- | ---- | ----- | ----------- | | `txs` | [Tx](#cosmos.tx.v1beta1.Tx) | repeated | txs is the list of queried transactions. | | `tx_responses` | [cosmos.base.abci.v1beta1.TxResponse](#cosmos.base.abci.v1beta1.TxResponse) | repeated | tx_responses is the list of queried TxResponses. | -| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines an pagination for the response. | +| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines a pagination for the response. | @@ -6562,7 +7084,10 @@ RPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `tx` | [Tx](#cosmos.tx.v1beta1.Tx) | | tx is the transaction to simulate. | +| `tx` | [Tx](#cosmos.tx.v1beta1.Tx) | | **Deprecated.** tx is the transaction to simulate. Deprecated. Send raw tx bytes instead. | +| `tx_bytes` | [bytes](#bytes) | | tx_bytes is the raw transaction. + +Since: cosmos-sdk 0.43 | @@ -6630,6 +7155,9 @@ Service defines a gRPC service for interacting with transactions. | `GetTx` | [GetTxRequest](#cosmos.tx.v1beta1.GetTxRequest) | [GetTxResponse](#cosmos.tx.v1beta1.GetTxResponse) | GetTx fetches a tx by hash. | GET|/cosmos/tx/v1beta1/txs/{hash}| | `BroadcastTx` | [BroadcastTxRequest](#cosmos.tx.v1beta1.BroadcastTxRequest) | [BroadcastTxResponse](#cosmos.tx.v1beta1.BroadcastTxResponse) | BroadcastTx broadcast transaction. | POST|/cosmos/tx/v1beta1/txs| | `GetTxsEvent` | [GetTxsEventRequest](#cosmos.tx.v1beta1.GetTxsEventRequest) | [GetTxsEventResponse](#cosmos.tx.v1beta1.GetTxsEventResponse) | GetTxsEvent fetches txs by event. | GET|/cosmos/tx/v1beta1/txs| +| `GetBlockWithTxs` | [GetBlockWithTxsRequest](#cosmos.tx.v1beta1.GetBlockWithTxsRequest) | [GetBlockWithTxsResponse](#cosmos.tx.v1beta1.GetBlockWithTxsResponse) | GetBlockWithTxs fetches a block with decoded txs. + +Since: cosmos-sdk 0.45.2 | GET|/cosmos/tx/v1beta1/txs/block/{height}| @@ -9999,3 +10527,4 @@ that implements Misbehaviour interface expected by ICS-02 | bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | | string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | | bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/proto/cosmos/base/query/v1beta1/pagination.proto b/proto/cosmos/base/query/v1beta1/pagination.proto index 7ee60f18d517..784c479562a9 100644 --- a/proto/cosmos/base/query/v1beta1/pagination.proto +++ b/proto/cosmos/base/query/v1beta1/pagination.proto @@ -31,7 +31,7 @@ message PageRequest { // is set. bool count_total = 4; - // reverse is set to true indicates that, results to be returned in the descending order. + // reverse is set to true if results are to be returned in the descending order. bool reverse = 5; } diff --git a/proto/cosmos/slashing/v1beta1/genesis.proto b/proto/cosmos/slashing/v1beta1/genesis.proto index c81356134337..a7aebcfbad6c 100644 --- a/proto/cosmos/slashing/v1beta1/genesis.proto +++ b/proto/cosmos/slashing/v1beta1/genesis.proto @@ -16,7 +16,7 @@ message GenesisState { repeated SigningInfo signing_infos = 2 [(gogoproto.moretags) = "yaml:\"signing_infos\"", (gogoproto.nullable) = false]; - // signing_infos represents a map between validator addresses and their + // missed_blocks represents a map between validator addresses and their // missed blocks. repeated ValidatorMissedBlocks missed_blocks = 3 [(gogoproto.moretags) = "yaml:\"missed_blocks\"", (gogoproto.nullable) = false]; diff --git a/proto/cosmos/slashing/v1beta1/slashing.proto b/proto/cosmos/slashing/v1beta1/slashing.proto index 657a90f1bd05..882a0fb60cb5 100644 --- a/proto/cosmos/slashing/v1beta1/slashing.proto +++ b/proto/cosmos/slashing/v1beta1/slashing.proto @@ -15,17 +15,20 @@ message ValidatorSigningInfo { option (gogoproto.goproto_stringer) = false; string address = 1; - // height at which validator was first a candidate OR was unjailed + // Height at which validator was first a candidate OR was unjailed int64 start_height = 2 [(gogoproto.moretags) = "yaml:\"start_height\""]; - // index offset into signed block bit array + // Index which is incremented each time the validator was a bonded + // in a block and may have signed a precommit or not. This in conjunction with the + // `SignedBlocksWindow` param determines the index in the `MissedBlocksBitArray`. int64 index_offset = 3 [(gogoproto.moretags) = "yaml:\"index_offset\""]; - // timestamp validator cannot be unjailed until + // Timestamp until which the validator is jailed due to liveness downtime. google.protobuf.Timestamp jailed_until = 4 [(gogoproto.moretags) = "yaml:\"jailed_until\"", (gogoproto.stdtime) = true, (gogoproto.nullable) = false]; - // whether or not a validator has been tombstoned (killed out of validator - // set) + // Whether or not a validator has been tombstoned (killed out of validator set). It is set + // once the validator commits an equivocation or for any other configured misbehiavor. bool tombstoned = 5; - // missed blocks counter (to avoid scanning the array every time) + // A counter kept to avoid unnecessary array reads. + // Note that `Sum(MissedBlocksBitArray)` always equals `MissedBlocksCounter`. int64 missed_blocks_counter = 6 [(gogoproto.moretags) = "yaml:\"missed_blocks_counter\""]; } diff --git a/proto/cosmos/tx/v1beta1/service.proto b/proto/cosmos/tx/v1beta1/service.proto index acfbf15b3689..7a014f4b9f7d 100644 --- a/proto/cosmos/tx/v1beta1/service.proto +++ b/proto/cosmos/tx/v1beta1/service.proto @@ -6,6 +6,8 @@ import "cosmos/base/abci/v1beta1/abci.proto"; import "cosmos/tx/v1beta1/tx.proto"; import "gogoproto/gogo.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; +import "tendermint/types/block.proto"; +import "tendermint/types/types.proto"; option (gogoproto.goproto_registration) = true; option go_package = "github.com/cosmos/cosmos-sdk/types/tx"; @@ -34,6 +36,12 @@ service Service { rpc GetTxsEvent(GetTxsEventRequest) returns (GetTxsEventResponse) { option (google.api.http).get = "/cosmos/tx/v1beta1/txs"; } + // GetBlockWithTxs fetches a block with decoded txs. + // + // Since: cosmos-sdk 0.45.2 + rpc GetBlockWithTxs(GetBlockWithTxsRequest) returns (GetBlockWithTxsResponse) { + option (google.api.http).get = "/cosmos/tx/v1beta1/txs/block/{height}"; + } } // GetTxsEventRequest is the request type for the Service.TxsByEvents @@ -41,7 +49,7 @@ service Service { message GetTxsEventRequest { // events is the list of transaction event type. repeated string events = 1; - // pagination defines an pagination for the request. + // pagination defines a pagination for the request. cosmos.base.query.v1beta1.PageRequest pagination = 2; OrderBy order_by = 3; } @@ -63,7 +71,7 @@ message GetTxsEventResponse { repeated cosmos.tx.v1beta1.Tx txs = 1; // tx_responses is the list of queried TxResponses. repeated cosmos.base.abci.v1beta1.TxResponse tx_responses = 2; - // pagination defines an pagination for the response. + // pagination defines a pagination for the response. cosmos.base.query.v1beta1.PageResponse pagination = 3; } @@ -131,4 +139,27 @@ message GetTxResponse { cosmos.tx.v1beta1.Tx tx = 1; // tx_response is the queried TxResponses. cosmos.base.abci.v1beta1.TxResponse tx_response = 2; +} + +// GetBlockWithTxsRequest is the request type for the Service.GetBlockWithTxs +// RPC method. +// +// Since: cosmos-sdk 0.45.2 +message GetBlockWithTxsRequest { + // height is the height of the block to query. + int64 height = 1; + // pagination defines a pagination for the request. + cosmos.base.query.v1beta1.PageRequest pagination = 2; +} + +// GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs method. +// +// Since: cosmos-sdk 0.45.2 +message GetBlockWithTxsResponse { + // txs are the transactions in the block. + repeated cosmos.tx.v1beta1.Tx txs = 1; + .tendermint.types.BlockID block_id = 2; + .tendermint.types.Block block = 3; + // pagination defines a pagination for the response. + cosmos.base.query.v1beta1.PageResponse pagination = 4; } \ No newline at end of file diff --git a/server/grpc/gogoreflection/fix_registration.go b/server/grpc/gogoreflection/fix_registration.go index 6575f782d3aa..ab7750574845 100644 --- a/server/grpc/gogoreflection/fix_registration.go +++ b/server/grpc/gogoreflection/fix_registration.go @@ -9,6 +9,7 @@ import ( _ "github.com/gogo/protobuf/gogoproto" // required so it does register the gogoproto file descriptor gogoproto "github.com/gogo/protobuf/proto" + // nolint: staticcheck "github.com/golang/protobuf/proto" dpb "github.com/golang/protobuf/protoc-gen-go/descriptor" _ "github.com/regen-network/cosmos-proto" // look above @@ -85,7 +86,7 @@ func getFileDescriptor(filePath string) []byte { if len(fd) != 0 { return fd } - + // nolint: staticcheck return proto.FileDescriptor(filePath) } @@ -94,7 +95,7 @@ func getMessageType(name string) reflect.Type { if typ != nil { return typ } - + // nolint: staticcheck return proto.MessageType(name) } @@ -106,7 +107,7 @@ func getExtension(extID int32, m proto.Message) *gogoproto.ExtensionDesc { } } // check into proto registry - + // nolint: staticcheck for id, desc := range proto.RegisteredExtensions(m) { if id == extID { return &gogoproto.ExtensionDesc{ @@ -132,7 +133,7 @@ func getExtensionsNumbers(m proto.Message) []int32 { if len(out) != 0 { return out } - + // nolint: staticcheck protoExts := proto.RegisteredExtensions(m) out = make([]int32, 0, len(protoExts)) for id := range protoExts { diff --git a/server/grpc/gogoreflection/serverreflection.go b/server/grpc/gogoreflection/serverreflection.go index 102a8d2aaeff..c2a0828e3bc2 100644 --- a/server/grpc/gogoreflection/serverreflection.go +++ b/server/grpc/gogoreflection/serverreflection.go @@ -47,6 +47,7 @@ import ( "sort" "sync" + // nolint: staticcheck "github.com/golang/protobuf/proto" dpb "github.com/golang/protobuf/protoc-gen-go/descriptor" "google.golang.org/grpc" diff --git a/server/grpc/reflection/v2alpha1/reflection.pb.gw.go b/server/grpc/reflection/v2alpha1/reflection.pb.gw.go index 02cd59b35dbc..86f75f2ec15c 100644 --- a/server/grpc/reflection/v2alpha1/reflection.pb.gw.go +++ b/server/grpc/reflection/v2alpha1/reflection.pb.gw.go @@ -430,17 +430,17 @@ func RegisterReflectionServiceHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_ReflectionService_GetAuthnDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "authn"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_GetAuthnDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "authn"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ReflectionService_GetChainDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "chain"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_GetChainDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "chain"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ReflectionService_GetCodecDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "codec"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_GetCodecDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "codec"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ReflectionService_GetConfigurationDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "configuration"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_GetConfigurationDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "configuration"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ReflectionService_GetQueryServicesDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "query_services"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_GetQueryServicesDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "query_services"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ReflectionService_GetTxDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "tx_descriptor"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_GetTxDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "tx_descriptor"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/server/grpc/server.go b/server/grpc/server.go index d95b35ecf00e..0b41a57cd323 100644 --- a/server/grpc/server.go +++ b/server/grpc/server.go @@ -18,7 +18,6 @@ import ( func StartGRPCServer(clientCtx client.Context, app types.Application, address string) (*grpc.Server, error) { grpcSrv := grpc.NewServer() app.RegisterGRPCServer(grpcSrv) - // reflection allows consumers to build dynamic clients that can write // to any cosmos-sdk application without relying on application packages at compile time err := reflection.Register(grpcSrv, reflection.Config{ diff --git a/types/query/pagination.pb.go b/types/query/pagination.pb.go index cf1be5b980a8..3b1455d6f299 100644 --- a/types/query/pagination.pb.go +++ b/types/query/pagination.pb.go @@ -46,7 +46,7 @@ type PageRequest struct { // count_total is only respected when offset is used. It is ignored when key // is set. CountTotal bool `protobuf:"varint,4,opt,name=count_total,json=countTotal,proto3" json:"count_total,omitempty"` - // reverse is set to true indicates that, results to be returned in the descending order. + // reverse is set to true if results are to be returned in the descending order. Reverse bool `protobuf:"varint,5,opt,name=reverse,proto3" json:"reverse,omitempty"` } diff --git a/types/tx/service.pb.go b/types/tx/service.pb.go index 13c068cae088..f951d37e279f 100644 --- a/types/tx/service.pb.go +++ b/types/tx/service.pb.go @@ -12,6 +12,7 @@ import ( grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" golang_proto "github.com/golang/protobuf/proto" + types1 "github.com/tendermint/tendermint/proto/tendermint/types" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -109,7 +110,7 @@ func (BroadcastMode) EnumDescriptor() ([]byte, []int) { type GetTxsEventRequest struct { // events is the list of transaction event type. Events []string `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` - // pagination defines an pagination for the request. + // pagination defines a pagination for the request. Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` OrderBy OrderBy `protobuf:"varint,3,opt,name=order_by,json=orderBy,proto3,enum=cosmos.tx.v1beta1.OrderBy" json:"order_by,omitempty"` } @@ -175,7 +176,7 @@ type GetTxsEventResponse struct { Txs []*Tx `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"` // tx_responses is the list of queried TxResponses. TxResponses []*types.TxResponse `protobuf:"bytes,2,rep,name=tx_responses,json=txResponses,proto3" json:"tx_responses,omitempty"` - // pagination defines an pagination for the response. + // pagination defines a pagination for the response. Pagination *query.PageResponse `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` } @@ -553,6 +554,137 @@ func (m *GetTxResponse) GetTxResponse() *types.TxResponse { return nil } +// GetBlockWithTxsRequest is the request type for the Service.GetBlockWithTxs +// RPC method. +// +// Since: cosmos-sdk 0.45.2 +type GetBlockWithTxsRequest struct { + // height is the height of the block to query. + Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` + // pagination defines a pagination for the request. + Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *GetBlockWithTxsRequest) Reset() { *m = GetBlockWithTxsRequest{} } +func (m *GetBlockWithTxsRequest) String() string { return proto.CompactTextString(m) } +func (*GetBlockWithTxsRequest) ProtoMessage() {} +func (*GetBlockWithTxsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0b00a618705eca7, []int{8} +} +func (m *GetBlockWithTxsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetBlockWithTxsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetBlockWithTxsRequest.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 *GetBlockWithTxsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBlockWithTxsRequest.Merge(m, src) +} +func (m *GetBlockWithTxsRequest) XXX_Size() int { + return m.Size() +} +func (m *GetBlockWithTxsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetBlockWithTxsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetBlockWithTxsRequest proto.InternalMessageInfo + +func (m *GetBlockWithTxsRequest) GetHeight() int64 { + if m != nil { + return m.Height + } + return 0 +} + +func (m *GetBlockWithTxsRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs method. +// +// Since: cosmos-sdk 0.45.2 +type GetBlockWithTxsResponse struct { + // txs are the transactions in the block. + Txs []*Tx `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"` + BlockId *types1.BlockID `protobuf:"bytes,2,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` + Block *types1.Block `protobuf:"bytes,3,opt,name=block,proto3" json:"block,omitempty"` + // pagination defines a pagination for the response. + Pagination *query.PageResponse `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *GetBlockWithTxsResponse) Reset() { *m = GetBlockWithTxsResponse{} } +func (m *GetBlockWithTxsResponse) String() string { return proto.CompactTextString(m) } +func (*GetBlockWithTxsResponse) ProtoMessage() {} +func (*GetBlockWithTxsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0b00a618705eca7, []int{9} +} +func (m *GetBlockWithTxsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetBlockWithTxsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetBlockWithTxsResponse.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 *GetBlockWithTxsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBlockWithTxsResponse.Merge(m, src) +} +func (m *GetBlockWithTxsResponse) XXX_Size() int { + return m.Size() +} +func (m *GetBlockWithTxsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetBlockWithTxsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetBlockWithTxsResponse proto.InternalMessageInfo + +func (m *GetBlockWithTxsResponse) GetTxs() []*Tx { + if m != nil { + return m.Txs + } + return nil +} + +func (m *GetBlockWithTxsResponse) GetBlockId() *types1.BlockID { + if m != nil { + return m.BlockId + } + return nil +} + +func (m *GetBlockWithTxsResponse) GetBlock() *types1.Block { + if m != nil { + return m.Block + } + return nil +} + +func (m *GetBlockWithTxsResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + func init() { proto.RegisterEnum("cosmos.tx.v1beta1.OrderBy", OrderBy_name, OrderBy_value) golang_proto.RegisterEnum("cosmos.tx.v1beta1.OrderBy", OrderBy_name, OrderBy_value) @@ -574,6 +706,10 @@ func init() { golang_proto.RegisterType((*GetTxRequest)(nil), "cosmos.tx.v1beta1.GetTxRequest") proto.RegisterType((*GetTxResponse)(nil), "cosmos.tx.v1beta1.GetTxResponse") golang_proto.RegisterType((*GetTxResponse)(nil), "cosmos.tx.v1beta1.GetTxResponse") + proto.RegisterType((*GetBlockWithTxsRequest)(nil), "cosmos.tx.v1beta1.GetBlockWithTxsRequest") + golang_proto.RegisterType((*GetBlockWithTxsRequest)(nil), "cosmos.tx.v1beta1.GetBlockWithTxsRequest") + proto.RegisterType((*GetBlockWithTxsResponse)(nil), "cosmos.tx.v1beta1.GetBlockWithTxsResponse") + golang_proto.RegisterType((*GetBlockWithTxsResponse)(nil), "cosmos.tx.v1beta1.GetBlockWithTxsResponse") } func init() { proto.RegisterFile("cosmos/tx/v1beta1/service.proto", fileDescriptor_e0b00a618705eca7) } @@ -582,59 +718,68 @@ func init() { } var fileDescriptor_e0b00a618705eca7 = []byte{ - // 831 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x41, 0x8f, 0xdb, 0x44, - 0x14, 0x5e, 0x3b, 0x65, 0x93, 0xbe, 0x64, 0x4b, 0x3a, 0xbb, 0x14, 0x93, 0x82, 0x37, 0x75, 0xc9, - 0x36, 0x44, 0xc2, 0x56, 0x03, 0x48, 0x08, 0x71, 0x89, 0x93, 0x74, 0x59, 0x41, 0x9b, 0x6a, 0xb2, - 0x08, 0x15, 0x21, 0x45, 0x4e, 0x32, 0xf5, 0x5a, 0x6c, 0x3c, 0x59, 0xcf, 0x64, 0xe5, 0xa8, 0xad, - 0x90, 0x38, 0x72, 0x42, 0xe2, 0x67, 0xf0, 0x27, 0x38, 0x72, 0x5c, 0x89, 0x0b, 0x47, 0xb4, 0xe1, - 0x47, 0x70, 0x44, 0x1e, 0x4f, 0x12, 0x27, 0xeb, 0x74, 0x11, 0xa7, 0xbc, 0xc9, 0x7c, 0xef, 0x7b, - 0xdf, 0xfb, 0xe6, 0xcd, 0x18, 0xf6, 0x07, 0x94, 0x8d, 0x28, 0xb3, 0x78, 0x68, 0x9d, 0x3f, 0xec, - 0x13, 0xee, 0x3c, 0xb4, 0x18, 0x09, 0xce, 0xbd, 0x01, 0x31, 0xc7, 0x01, 0xe5, 0x14, 0xdd, 0x8e, - 0x01, 0x26, 0x0f, 0x4d, 0x09, 0x28, 0xbd, 0xeb, 0x52, 0xea, 0x9e, 0x12, 0xcb, 0x19, 0x7b, 0x96, - 0xe3, 0xfb, 0x94, 0x3b, 0xdc, 0xa3, 0x3e, 0x8b, 0x13, 0x4a, 0xf7, 0x25, 0x63, 0xdf, 0x61, 0xc4, - 0x72, 0xfa, 0x03, 0x6f, 0x41, 0x1c, 0x2d, 0x24, 0xa8, 0x74, 0xb5, 0x2c, 0x0f, 0xe5, 0xde, 0x9e, - 0x4b, 0x5d, 0x2a, 0x42, 0x2b, 0x8a, 0xe4, 0xbf, 0xb5, 0x24, 0xed, 0xd9, 0x84, 0x04, 0xd3, 0x45, - 0xe6, 0xd8, 0x71, 0x3d, 0x5f, 0x68, 0x88, 0xb1, 0xc6, 0xaf, 0x0a, 0xa0, 0x43, 0xc2, 0x8f, 0x43, - 0xd6, 0x3e, 0x27, 0x3e, 0xc7, 0xe4, 0x6c, 0x42, 0x18, 0x47, 0x77, 0x60, 0x9b, 0x44, 0x6b, 0xa6, - 0x29, 0xe5, 0x4c, 0xf5, 0x26, 0x96, 0x2b, 0xf4, 0x08, 0x60, 0x49, 0xa1, 0xa9, 0x65, 0xa5, 0x9a, - 0xaf, 0x1f, 0x98, 0xb2, 0xef, 0xa8, 0x9e, 0x29, 0xea, 0xcd, 0xfb, 0x37, 0x9f, 0x3a, 0x2e, 0x91, - 0x9c, 0x38, 0x91, 0x89, 0x3e, 0x81, 0x1c, 0x0d, 0x86, 0x24, 0xe8, 0xf5, 0xa7, 0x5a, 0xa6, 0xac, - 0x54, 0x6f, 0xd5, 0x4b, 0xe6, 0x15, 0xf7, 0xcc, 0x4e, 0x04, 0xb1, 0xa7, 0x38, 0x4b, 0xe3, 0xc0, - 0xb8, 0x50, 0x60, 0x77, 0x45, 0x2d, 0x1b, 0x53, 0x9f, 0x11, 0xf4, 0x00, 0x32, 0x3c, 0x8c, 0xb5, - 0xe6, 0xeb, 0x6f, 0xa5, 0x30, 0x1d, 0x87, 0x38, 0x42, 0xa0, 0x43, 0x28, 0xf0, 0xb0, 0x17, 0xc8, - 0x3c, 0xa6, 0xa9, 0x22, 0xe3, 0xfd, 0x95, 0x0e, 0x84, 0xf7, 0x89, 0x44, 0x09, 0xc6, 0x79, 0xbe, - 0x88, 0x23, 0xa2, 0xa4, 0x11, 0x19, 0x61, 0xc4, 0x83, 0x6b, 0x8d, 0x90, 0x4c, 0x89, 0x54, 0x83, - 0x00, 0xb2, 0x03, 0xea, 0x0c, 0x07, 0x0e, 0xe3, 0x51, 0xb1, 0xd8, 0xff, 0x77, 0x20, 0xc7, 0xc3, - 0x5e, 0x7f, 0xca, 0x49, 0xd4, 0x95, 0x52, 0x2d, 0xe0, 0x2c, 0x0f, 0xed, 0x68, 0x89, 0x3e, 0x86, - 0x1b, 0x23, 0x3a, 0x24, 0xc2, 0xfc, 0x5b, 0xf5, 0x72, 0x4a, 0xb3, 0x0b, 0xbe, 0xc7, 0x74, 0x48, - 0xb0, 0x40, 0x1b, 0xdf, 0xc1, 0xee, 0x4a, 0x19, 0x69, 0x5c, 0x1b, 0xf2, 0x09, 0x3f, 0x44, 0xa9, - 0xff, 0x6a, 0x07, 0x2c, 0xed, 0x30, 0xbe, 0x81, 0x37, 0xbb, 0xde, 0x68, 0x72, 0xea, 0xf0, 0xf9, - 0x69, 0xa3, 0x0f, 0x40, 0xe5, 0xa1, 0x24, 0x4c, 0x3f, 0x11, 0x5b, 0xd5, 0x14, 0xac, 0xf2, 0x70, - 0xa5, 0x59, 0x75, 0xa5, 0x59, 0xe3, 0x27, 0x05, 0x8a, 0x4b, 0x66, 0x29, 0xfa, 0x73, 0xc8, 0xb9, - 0x0e, 0xeb, 0x79, 0xfe, 0x73, 0x2a, 0x0b, 0xdc, 0xdb, 0xac, 0xf8, 0xd0, 0x61, 0x47, 0xfe, 0x73, - 0x8a, 0xb3, 0x6e, 0x1c, 0xa0, 0x4f, 0x61, 0x3b, 0x20, 0x6c, 0x72, 0xca, 0xe5, 0xf8, 0x96, 0x37, - 0xe7, 0x62, 0x81, 0xc3, 0x12, 0x6f, 0x18, 0x50, 0x10, 0xc3, 0x37, 0x6f, 0x11, 0xc1, 0x8d, 0x13, - 0x87, 0x9d, 0x08, 0x0d, 0x37, 0xb1, 0x88, 0x8d, 0x57, 0xb0, 0x23, 0x31, 0x52, 0x6c, 0xe5, 0x5a, - 0x1f, 0x84, 0x07, 0x6b, 0x07, 0xa1, 0xfe, 0xbf, 0x83, 0xa8, 0x7d, 0x01, 0x59, 0x79, 0x69, 0x90, - 0x06, 0x7b, 0x1d, 0xdc, 0x6a, 0xe3, 0x9e, 0xfd, 0xac, 0xf7, 0xf5, 0x93, 0xee, 0xd3, 0x76, 0xf3, - 0xe8, 0xd1, 0x51, 0xbb, 0x55, 0xdc, 0x42, 0x45, 0x28, 0x2c, 0x76, 0x1a, 0xdd, 0x66, 0x51, 0x41, - 0xb7, 0x61, 0x67, 0xf1, 0x4f, 0xab, 0xdd, 0x6d, 0x16, 0xd5, 0xda, 0x4b, 0xd8, 0x59, 0x99, 0x23, - 0xa4, 0x43, 0xc9, 0xc6, 0x9d, 0x46, 0xab, 0xd9, 0xe8, 0x1e, 0xf7, 0x1e, 0x77, 0x5a, 0xed, 0x35, - 0x56, 0x0d, 0xf6, 0xd6, 0xf6, 0xed, 0xaf, 0x3a, 0xcd, 0x2f, 0x8b, 0x0a, 0x7a, 0x1b, 0x76, 0xd7, - 0x76, 0xba, 0xcf, 0x9e, 0x34, 0x8b, 0x6a, 0x4a, 0x4a, 0x43, 0xec, 0x64, 0xea, 0xff, 0x64, 0x20, - 0xdb, 0x8d, 0x1f, 0x57, 0xf4, 0x02, 0x72, 0xf3, 0x11, 0x40, 0x46, 0x8a, 0x83, 0x6b, 0x93, 0x57, - 0xba, 0xff, 0x5a, 0x8c, 0x9c, 0xd8, 0x83, 0x1f, 0xff, 0xf8, 0xfb, 0x17, 0xb5, 0x6c, 0xdc, 0xb5, - 0x52, 0x5e, 0x75, 0x09, 0xfe, 0x4c, 0xa9, 0xa1, 0x33, 0x78, 0x43, 0x9c, 0x27, 0xda, 0x4f, 0x61, - 0x4d, 0x4e, 0x43, 0xa9, 0xbc, 0x19, 0x20, 0x6b, 0x56, 0x44, 0xcd, 0x7d, 0xf4, 0x9e, 0x95, 0xf6, - 0xa4, 0x33, 0xeb, 0x45, 0x34, 0x41, 0xaf, 0xd0, 0x0f, 0x90, 0x4f, 0x5c, 0x55, 0x54, 0x79, 0xdd, - 0x0d, 0x5f, 0x96, 0x3f, 0xb8, 0x0e, 0x26, 0x45, 0xdc, 0x13, 0x22, 0xee, 0x1a, 0x77, 0xd2, 0x45, - 0x44, 0x3d, 0xbf, 0x84, 0x7c, 0xe2, 0x91, 0x4d, 0x15, 0x70, 0xf5, 0x93, 0x91, 0x2a, 0x20, 0xe5, - 0xad, 0x36, 0x74, 0x21, 0x40, 0x43, 0x1b, 0x04, 0xd8, 0xcd, 0xdf, 0x2f, 0x75, 0xe5, 0xe2, 0x52, - 0x57, 0xfe, 0xba, 0xd4, 0x95, 0x9f, 0x67, 0xfa, 0xd6, 0x6f, 0x33, 0x5d, 0xb9, 0x98, 0xe9, 0x5b, - 0x7f, 0xce, 0xf4, 0xad, 0x6f, 0x2b, 0xae, 0xc7, 0x4f, 0x26, 0x7d, 0x73, 0x40, 0x47, 0xf3, 0xfc, - 0xf8, 0xe7, 0x43, 0x36, 0xfc, 0xde, 0xe2, 0xd3, 0x31, 0x89, 0x08, 0xfb, 0xdb, 0xe2, 0xeb, 0xf6, - 0xd1, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe4, 0x86, 0xcd, 0x5c, 0xb4, 0x07, 0x00, 0x00, + // 976 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x6f, 0x1a, 0x47, + 0x14, 0xf7, 0x2e, 0xb6, 0x21, 0x0f, 0x3b, 0x21, 0x63, 0xd7, 0x26, 0x24, 0xc5, 0x64, 0x53, 0x6c, + 0x07, 0xc9, 0xbb, 0x0a, 0x4d, 0xa5, 0xaa, 0xea, 0xc5, 0xfc, 0x89, 0x8b, 0xda, 0x84, 0x68, 0x70, + 0x15, 0xa5, 0xaa, 0x84, 0x16, 0x98, 0x2c, 0xab, 0x98, 0x1d, 0xbc, 0x33, 0x58, 0x8b, 0x1c, 0xab, + 0x52, 0x8f, 0x3d, 0x55, 0xed, 0xa1, 0x1f, 0xa2, 0x5f, 0xa2, 0xc7, 0x1e, 0x2d, 0xf5, 0xd2, 0x63, + 0x65, 0xf7, 0x03, 0xf4, 0x23, 0x54, 0x3b, 0x3b, 0xc0, 0x82, 0x97, 0x38, 0x8d, 0x7a, 0x81, 0x99, + 0x9d, 0xdf, 0x7b, 0xef, 0x37, 0xbf, 0xd9, 0xdf, 0x9b, 0x85, 0xad, 0x36, 0x65, 0x3d, 0xca, 0x0c, + 0xee, 0x19, 0x27, 0x8f, 0x5a, 0x84, 0x9b, 0x8f, 0x0c, 0x46, 0xdc, 0x13, 0xbb, 0x4d, 0xf4, 0xbe, + 0x4b, 0x39, 0x45, 0xb7, 0x03, 0x80, 0xce, 0x3d, 0x5d, 0x02, 0x32, 0xf7, 0x2c, 0x4a, 0xad, 0x23, + 0x62, 0x98, 0x7d, 0xdb, 0x30, 0x1d, 0x87, 0x72, 0x93, 0xdb, 0xd4, 0x61, 0x41, 0x40, 0xe6, 0x81, + 0xcc, 0xd8, 0x32, 0x19, 0x31, 0xcc, 0x56, 0xdb, 0x1e, 0x27, 0xf6, 0x27, 0x12, 0x94, 0xb9, 0x5a, + 0x96, 0x7b, 0x72, 0x6d, 0xdd, 0xa2, 0x16, 0x15, 0x43, 0xc3, 0x1f, 0xc9, 0xa7, 0x85, 0x70, 0xda, + 0xe3, 0x01, 0x71, 0x87, 0xe3, 0xc8, 0xbe, 0x69, 0xd9, 0x8e, 0xe0, 0x20, 0xb1, 0xf7, 0x38, 0x71, + 0x3a, 0xc4, 0xed, 0xd9, 0x0e, 0x37, 0xf8, 0xb0, 0x4f, 0x98, 0xd1, 0x3a, 0xa2, 0xed, 0xd7, 0x73, + 0x57, 0xc5, 0x6f, 0xb0, 0xaa, 0xfd, 0xaa, 0x00, 0x3a, 0x20, 0xfc, 0xd0, 0x63, 0xd5, 0x13, 0xe2, + 0x70, 0x4c, 0x8e, 0x07, 0x84, 0x71, 0xb4, 0x01, 0xcb, 0xc4, 0x9f, 0xb3, 0xb4, 0x92, 0x8b, 0xed, + 0xde, 0xc0, 0x72, 0x86, 0x9e, 0x00, 0x4c, 0xca, 0xa7, 0xd5, 0x9c, 0xb2, 0x9b, 0x2c, 0x6e, 0xeb, + 0x52, 0x33, 0x9f, 0xab, 0x2e, 0xb8, 0x8e, 0xb4, 0xd3, 0x9f, 0x9b, 0x16, 0x91, 0x39, 0x71, 0x28, + 0x12, 0x7d, 0x02, 0x09, 0xea, 0x76, 0x88, 0xdb, 0x6c, 0x0d, 0xd3, 0xb1, 0x9c, 0xb2, 0x7b, 0xb3, + 0x98, 0xd1, 0xaf, 0x28, 0xaf, 0xd7, 0x7d, 0x48, 0x69, 0x88, 0xe3, 0x34, 0x18, 0x68, 0xe7, 0x0a, + 0xac, 0x4d, 0xb1, 0x65, 0x7d, 0xea, 0x30, 0x82, 0x76, 0x20, 0xc6, 0xbd, 0x80, 0x6b, 0xb2, 0xf8, + 0x41, 0x44, 0xa6, 0x43, 0x0f, 0xfb, 0x08, 0x74, 0x00, 0x2b, 0xdc, 0x6b, 0xba, 0x32, 0x8e, 0xa5, + 0x55, 0x11, 0xf1, 0xd1, 0xd4, 0x0e, 0xc4, 0xb9, 0x85, 0x02, 0x25, 0x18, 0x27, 0xf9, 0x78, 0xec, + 0x27, 0x0a, 0x0b, 0x11, 0x13, 0x42, 0xec, 0x5c, 0x2b, 0x84, 0xcc, 0x14, 0x0a, 0xd5, 0x08, 0xa0, + 0x92, 0x4b, 0xcd, 0x4e, 0xdb, 0x64, 0xdc, 0x2f, 0x16, 0xe8, 0x7f, 0x07, 0x12, 0xdc, 0x6b, 0xb6, + 0x86, 0x9c, 0xf8, 0xbb, 0x52, 0x76, 0x57, 0x70, 0x9c, 0x7b, 0x25, 0x7f, 0x8a, 0x1e, 0xc3, 0x62, + 0x8f, 0x76, 0x88, 0x10, 0xff, 0x66, 0x31, 0x17, 0xb1, 0xd9, 0x71, 0xbe, 0xa7, 0xb4, 0x43, 0xb0, + 0x40, 0x6b, 0xdf, 0xc2, 0xda, 0x54, 0x19, 0x29, 0x5c, 0x15, 0x92, 0x21, 0x3d, 0x44, 0xa9, 0x77, + 0x95, 0x03, 0x26, 0x72, 0x68, 0x2f, 0xe0, 0x56, 0xc3, 0xee, 0x0d, 0x8e, 0x4c, 0x3e, 0x3a, 0x6d, + 0xf4, 0x10, 0x54, 0xee, 0xc9, 0x84, 0xd1, 0x27, 0x52, 0x52, 0xd3, 0x0a, 0x56, 0xb9, 0x37, 0xb5, + 0x59, 0x75, 0x6a, 0xb3, 0xda, 0x0f, 0x0a, 0xa4, 0x26, 0x99, 0x25, 0xe9, 0xcf, 0x21, 0x61, 0x99, + 0xac, 0x69, 0x3b, 0xaf, 0xa8, 0x2c, 0x70, 0x7f, 0x3e, 0xe3, 0x03, 0x93, 0xd5, 0x9c, 0x57, 0x14, + 0xc7, 0xad, 0x60, 0x80, 0x3e, 0x85, 0x65, 0x97, 0xb0, 0xc1, 0x11, 0x97, 0xaf, 0x6f, 0x6e, 0x7e, + 0x2c, 0x16, 0x38, 0x2c, 0xf1, 0x9a, 0x06, 0x2b, 0xe2, 0xe5, 0x1b, 0x6d, 0x11, 0xc1, 0x62, 0xd7, + 0x64, 0x5d, 0xc1, 0xe1, 0x06, 0x16, 0x63, 0xed, 0x0c, 0x56, 0x25, 0x46, 0x92, 0xcd, 0x5f, 0xab, + 0x83, 0xd0, 0x60, 0xe6, 0x20, 0xd4, 0xf7, 0x3c, 0x08, 0x0f, 0x36, 0x0e, 0x08, 0x2f, 0xf9, 0xf6, + 0x7f, 0x61, 0xf3, 0xee, 0xa1, 0xc7, 0x42, 0x8e, 0xee, 0x12, 0xdb, 0xea, 0x72, 0xc1, 0x25, 0x86, + 0xe5, 0xec, 0xff, 0x72, 0xb4, 0xf6, 0x8f, 0x02, 0x9b, 0x57, 0x4a, 0xff, 0x57, 0x7b, 0x3e, 0x86, + 0x84, 0x68, 0x5d, 0x4d, 0xbb, 0x23, 0xa9, 0xdc, 0xd1, 0x27, 0xed, 0x4b, 0x0f, 0x1a, 0x97, 0x28, + 0x51, 0xab, 0xe0, 0xb8, 0x80, 0xd6, 0x3a, 0x68, 0x0f, 0x96, 0xc4, 0x50, 0xda, 0x70, 0x73, 0x4e, + 0x08, 0x0e, 0x50, 0x33, 0xd6, 0x5d, 0x7c, 0x6f, 0xeb, 0x16, 0xbe, 0x80, 0xb8, 0xec, 0x50, 0x28, + 0x0d, 0xeb, 0x75, 0x5c, 0xa9, 0xe2, 0x66, 0xe9, 0x65, 0xf3, 0xeb, 0x67, 0x8d, 0xe7, 0xd5, 0x72, + 0xed, 0x49, 0xad, 0x5a, 0x49, 0x2d, 0xa0, 0x14, 0xac, 0x8c, 0x57, 0xf6, 0x1b, 0xe5, 0x94, 0x82, + 0x6e, 0xc3, 0xea, 0xf8, 0x49, 0xa5, 0xda, 0x28, 0xa7, 0xd4, 0xc2, 0x1b, 0x58, 0x9d, 0x32, 0x2d, + 0xca, 0x42, 0xa6, 0x84, 0xeb, 0xfb, 0x95, 0xf2, 0x7e, 0xe3, 0xb0, 0xf9, 0xb4, 0x5e, 0xa9, 0xce, + 0x64, 0x4d, 0xc3, 0xfa, 0xcc, 0x7a, 0xe9, 0xab, 0x7a, 0xf9, 0xcb, 0x94, 0x82, 0x36, 0x61, 0x6d, + 0x66, 0xa5, 0xf1, 0xf2, 0x59, 0x39, 0xa5, 0x46, 0x84, 0xec, 0x8b, 0x95, 0x58, 0xf1, 0xa7, 0x25, + 0x88, 0x37, 0x82, 0x5b, 0x10, 0x9d, 0x42, 0x62, 0xe4, 0x37, 0xa4, 0x45, 0x9c, 0xd4, 0x8c, 0xcd, + 0x33, 0x0f, 0xde, 0x8a, 0x91, 0x6f, 0xe5, 0xf6, 0xf7, 0x7f, 0xfc, 0xfd, 0xb3, 0x9a, 0xd3, 0xee, + 0x1a, 0x11, 0xd7, 0xaf, 0x04, 0x7f, 0xa6, 0x14, 0xd0, 0x31, 0x2c, 0x09, 0xf3, 0xa0, 0xad, 0x88, + 0xac, 0x61, 0xeb, 0x65, 0x72, 0xf3, 0x01, 0xb2, 0x66, 0x5e, 0xd4, 0xdc, 0x42, 0x1f, 0x1a, 0x51, + 0x77, 0x2f, 0x33, 0x4e, 0x7d, 0xbb, 0x9e, 0xa1, 0xef, 0x20, 0x19, 0xea, 0x8b, 0x28, 0xff, 0xb6, + 0x76, 0x3a, 0x29, 0xbf, 0x7d, 0x1d, 0x4c, 0x92, 0xb8, 0x2f, 0x48, 0xdc, 0xd5, 0x36, 0xa2, 0x49, + 0xf8, 0x7b, 0x7e, 0x03, 0xc9, 0xd0, 0x8d, 0x16, 0x49, 0xe0, 0xea, 0xfd, 0x1c, 0x49, 0x20, 0xe2, + 0x62, 0xd4, 0xb2, 0x82, 0x40, 0x1a, 0xcd, 0x21, 0x80, 0x7e, 0x51, 0xe0, 0xd6, 0x8c, 0x6b, 0xd1, + 0xc3, 0xe8, 0xdc, 0x11, 0x4d, 0x25, 0x53, 0x78, 0x17, 0xa8, 0xa4, 0xb2, 0x27, 0xa8, 0xec, 0xa0, + 0xfc, 0x9c, 0x03, 0x11, 0xe6, 0x34, 0x4e, 0x83, 0xb6, 0x74, 0x56, 0x2a, 0xff, 0x7e, 0x91, 0x55, + 0xce, 0x2f, 0xb2, 0xca, 0x5f, 0x17, 0x59, 0xe5, 0xc7, 0xcb, 0xec, 0xc2, 0x6f, 0x97, 0x59, 0xe5, + 0xfc, 0x32, 0xbb, 0xf0, 0xe7, 0x65, 0x76, 0xe1, 0x9b, 0xbc, 0x65, 0xf3, 0xee, 0xa0, 0xa5, 0xb7, + 0x69, 0x6f, 0x94, 0x2e, 0xf8, 0xdb, 0x63, 0x9d, 0xd7, 0xa3, 0xcf, 0x1c, 0xaf, 0xb5, 0x2c, 0x3e, + 0x72, 0x3e, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0xb5, 0xaa, 0xba, 0x0d, 0xf7, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -657,6 +802,10 @@ type ServiceClient interface { BroadcastTx(ctx context.Context, in *BroadcastTxRequest, opts ...grpc.CallOption) (*BroadcastTxResponse, error) // GetTxsEvent fetches txs by event. GetTxsEvent(ctx context.Context, in *GetTxsEventRequest, opts ...grpc.CallOption) (*GetTxsEventResponse, error) + // GetBlockWithTxs fetches a block with decoded txs. + // + // Since: cosmos-sdk 0.45.2 + GetBlockWithTxs(ctx context.Context, in *GetBlockWithTxsRequest, opts ...grpc.CallOption) (*GetBlockWithTxsResponse, error) } type serviceClient struct { @@ -703,6 +852,15 @@ func (c *serviceClient) GetTxsEvent(ctx context.Context, in *GetTxsEventRequest, return out, nil } +func (c *serviceClient) GetBlockWithTxs(ctx context.Context, in *GetBlockWithTxsRequest, opts ...grpc.CallOption) (*GetBlockWithTxsResponse, error) { + out := new(GetBlockWithTxsResponse) + err := c.cc.Invoke(ctx, "/cosmos.tx.v1beta1.Service/GetBlockWithTxs", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ServiceServer is the server API for Service service. type ServiceServer interface { // Simulate simulates executing a transaction for estimating gas usage. @@ -713,6 +871,10 @@ type ServiceServer interface { BroadcastTx(context.Context, *BroadcastTxRequest) (*BroadcastTxResponse, error) // GetTxsEvent fetches txs by event. GetTxsEvent(context.Context, *GetTxsEventRequest) (*GetTxsEventResponse, error) + // GetBlockWithTxs fetches a block with decoded txs. + // + // Since: cosmos-sdk 0.45.2 + GetBlockWithTxs(context.Context, *GetBlockWithTxsRequest) (*GetBlockWithTxsResponse, error) } // UnimplementedServiceServer can be embedded to have forward compatible implementations. @@ -731,6 +893,9 @@ func (*UnimplementedServiceServer) BroadcastTx(ctx context.Context, req *Broadca func (*UnimplementedServiceServer) GetTxsEvent(ctx context.Context, req *GetTxsEventRequest) (*GetTxsEventResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTxsEvent not implemented") } +func (*UnimplementedServiceServer) GetBlockWithTxs(ctx context.Context, req *GetBlockWithTxsRequest) (*GetBlockWithTxsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBlockWithTxs not implemented") +} func RegisterServiceServer(s grpc1.Server, srv ServiceServer) { s.RegisterService(&_Service_serviceDesc, srv) @@ -808,6 +973,24 @@ func _Service_GetTxsEvent_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Service_GetBlockWithTxs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetBlockWithTxsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).GetBlockWithTxs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.tx.v1beta1.Service/GetBlockWithTxs", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).GetBlockWithTxs(ctx, req.(*GetBlockWithTxsRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Service_serviceDesc = grpc.ServiceDesc{ ServiceName: "cosmos.tx.v1beta1.Service", HandlerType: (*ServiceServer)(nil), @@ -828,6 +1011,10 @@ var _Service_serviceDesc = grpc.ServiceDesc{ MethodName: "GetTxsEvent", Handler: _Service_GetTxsEvent_Handler, }, + { + MethodName: "GetBlockWithTxs", + Handler: _Service_GetBlockWithTxs_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cosmos/tx/v1beta1/service.proto", @@ -1181,6 +1368,119 @@ func (m *GetTxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *GetBlockWithTxsRequest) 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 *GetBlockWithTxsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetBlockWithTxsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintService(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Height != 0 { + i = encodeVarintService(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *GetBlockWithTxsResponse) 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 *GetBlockWithTxsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetBlockWithTxsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintService(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.Block != nil { + { + size, err := m.Block.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintService(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.BlockId != nil { + { + size, err := m.BlockId.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintService(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Txs) > 0 { + for iNdEx := len(m.Txs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Txs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintService(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintService(dAtA []byte, offset int, v uint64) int { offset -= sovService(v) base := offset @@ -1332,6 +1632,49 @@ func (m *GetTxResponse) Size() (n int) { return n } +func (m *GetBlockWithTxsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Height != 0 { + n += 1 + sovService(uint64(m.Height)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovService(uint64(l)) + } + return n +} + +func (m *GetBlockWithTxsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Txs) > 0 { + for _, e := range m.Txs { + l = e.Size() + n += 1 + l + sovService(uint64(l)) + } + } + if m.BlockId != nil { + l = m.BlockId.Size() + n += 1 + l + sovService(uint64(l)) + } + if m.Block != nil { + l = m.Block.Size() + n += 1 + l + sovService(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovService(uint64(l)) + } + return n +} + func sovService(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -2264,6 +2607,303 @@ func (m *GetTxResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *GetBlockWithTxsRequest) 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 ErrIntOverflowService + } + 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: GetBlockWithTxsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetBlockWithTxsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthService + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthService + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipService(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthService + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetBlockWithTxsResponse) 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 ErrIntOverflowService + } + 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: GetBlockWithTxsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetBlockWithTxsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Txs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthService + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthService + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Txs = append(m.Txs, &Tx{}) + if err := m.Txs[len(m.Txs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockId", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthService + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthService + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.BlockId == nil { + m.BlockId = &types1.BlockID{} + } + if err := m.BlockId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Block", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthService + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthService + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Block == nil { + m.Block = &types1.Block{} + } + if err := m.Block.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthService + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthService + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipService(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthService + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipService(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/types/tx/service.pb.gw.go b/types/tx/service.pb.gw.go index 25560e1cdfb2..0ed8e8bb91f5 100644 --- a/types/tx/service.pb.gw.go +++ b/types/tx/service.pb.gw.go @@ -189,6 +189,78 @@ func local_request_Service_GetTxsEvent_0(ctx context.Context, marshaler runtime. } +var ( + filter_Service_GetBlockWithTxs_0 = &utilities.DoubleArray{Encoding: map[string]int{"height": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Service_GetBlockWithTxs_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetBlockWithTxsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["height"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "height") + } + + protoReq.Height, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "height", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Service_GetBlockWithTxs_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetBlockWithTxs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Service_GetBlockWithTxs_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetBlockWithTxsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["height"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "height") + } + + protoReq.Height, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "height", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Service_GetBlockWithTxs_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetBlockWithTxs(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterServiceHandlerServer registers the http handlers for service Service to "mux". // UnaryRPC :call ServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -275,6 +347,26 @@ func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, se }) + mux.Handle("GET", pattern_Service_GetBlockWithTxs_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.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Service_GetBlockWithTxs_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetBlockWithTxs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -396,17 +488,39 @@ func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl }) + mux.Handle("GET", pattern_Service_GetBlockWithTxs_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_Service_GetBlockWithTxs_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetBlockWithTxs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } var ( - pattern_Service_Simulate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "tx", "v1beta1", "simulate"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_Simulate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "tx", "v1beta1", "simulate"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Service_GetTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "tx", "v1beta1", "txs", "hash"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_GetTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "tx", "v1beta1", "txs", "hash"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Service_BroadcastTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "tx", "v1beta1", "txs"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_BroadcastTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "tx", "v1beta1", "txs"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Service_GetTxsEvent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "tx", "v1beta1", "txs"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Service_GetTxsEvent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "tx", "v1beta1", "txs"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Service_GetBlockWithTxs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmos", "tx", "v1beta1", "txs", "block", "height"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( @@ -417,4 +531,6 @@ var ( forward_Service_BroadcastTx_0 = runtime.ForwardResponseMessage forward_Service_GetTxsEvent_0 = runtime.ForwardResponseMessage + + forward_Service_GetBlockWithTxs_0 = runtime.ForwardResponseMessage ) diff --git a/x/auth/tx/service.go b/x/auth/tx/service.go index f88087c7d32c..bf9a445d5a87 100644 --- a/x/auth/tx/service.go +++ b/x/auth/tx/service.go @@ -3,6 +3,8 @@ package tx import ( "context" "fmt" + "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "strings" gogogrpc "github.com/gogo/protobuf/grpc" @@ -157,6 +159,85 @@ func (s txServer) GetTx(ctx context.Context, req *txtypes.GetTxRequest) (*txtype }, nil } +// protoTxProvider is a type which can provide a proto transaction. It is a +// workaround to get access to the wrapper TxBuilder's method GetProtoTx(). +// ref: https://github.com/cosmos/cosmos-sdk/issues/10347 +type protoTxProvider interface { + GetProtoTx() *txtypes.Tx +} + +// GetBlockWithTxs returns a block with decoded txs. +func (s txServer) GetBlockWithTxs(ctx context.Context, req *txtypes.GetBlockWithTxsRequest) (*txtypes.GetBlockWithTxsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be nil") + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + currentHeight := sdkCtx.BlockHeight() + + if req.Height < 1 || req.Height > currentHeight { + return nil, sdkerrors.ErrInvalidHeight.Wrapf("requested height %d but height must not be less than 1 "+ + "or greater than the current height %d", req.Height, currentHeight) + } + + blockId, block, err := tmservice.GetProtoBlock(ctx, s.clientCtx, &req.Height) + if err != nil { + return nil, err + } + + var offset, limit uint64 + if req.Pagination != nil { + offset = req.Pagination.Offset + limit = req.Pagination.Limit + } else { + offset = 0 + limit = pagination.DefaultLimit + } + + blockTxs := block.Data.Txs + blockTxsLn := uint64(len(blockTxs)) + txs := make([]*txtypes.Tx, 0, limit) + if offset >= blockTxsLn { + return nil, sdkerrors.ErrInvalidRequest.Wrapf("out of range: cannot paginate %d txs with offset %d and limit %d", blockTxsLn, offset, limit) + } + decodeTxAt := func(i uint64) error { + tx := blockTxs[i] + txb, err := s.clientCtx.TxConfig.TxDecoder()(tx) + if err != nil { + return err + } + p, ok := txb.(protoTxProvider) + if !ok { + return sdkerrors.ErrTxDecode.Wrapf("could not cast %T to %T", txb, txtypes.Tx{}) + } + txs = append(txs, p.GetProtoTx()) + return nil + } + if req.Pagination != nil && req.Pagination.Reverse { + for i, count := offset, uint64(0); i > 0 && count != limit; i, count = i-1, count+1 { + if err = decodeTxAt(i); err != nil { + return nil, err + } + } + } else { + for i, count := offset, uint64(0); i < blockTxsLn && count != limit; i, count = i+1, count+1 { + if err = decodeTxAt(i); err != nil { + return nil, err + } + } + } + + return &txtypes.GetBlockWithTxsResponse{ + Txs: txs, + BlockId: &blockId, + Block: block, + Pagination: &pagination.PageResponse{ + Total: blockTxsLn, + }, + }, nil + +} + func (s txServer) BroadcastTx(ctx context.Context, req *txtypes.BroadcastTxRequest) (*txtypes.BroadcastTxResponse, error) { return client.TxServiceBroadcast(ctx, s.clientCtx, req) } diff --git a/x/auth/tx/service_test.go b/x/auth/tx/service_test.go index e82baca41534..c6e347979b7b 100644 --- a/x/auth/tx/service_test.go +++ b/x/auth/tx/service_test.go @@ -37,6 +37,7 @@ type IntegrationTestSuite struct { cfg network.Config network *network.Network + txHeight int64 queryClient tx.ServiceClient txRes sdk.TxResponse } @@ -76,7 +77,29 @@ func (s *IntegrationTestSuite) SetupSuite() { s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &s.txRes)) s.Require().Equal(uint32(0), s.txRes.Code) + out, err = bankcli.MsgSendExec( + val.ClientCtx, + val.Address, + val.Address, + sdk.NewCoins( + sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(1)), + ), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=2", flags.FlagSequence), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--gas=%d", flags.DefaultGasLimit), + fmt.Sprintf("--%s=foobar", flags.FlagMemo), + ) + s.Require().NoError(err) + var tr sdk.TxResponse + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &tr)) + s.Require().Equal(uint32(0), tr.Code) + s.Require().NoError(s.network.WaitForNextBlock()) + height, err := s.network.LatestHeight() + s.Require().NoError(err) + s.txHeight = height } func (s *IntegrationTestSuite) TearDownSuite() { @@ -562,6 +585,81 @@ func (s *IntegrationTestSuite) TestSimMultiSigTx() { s.Require().Greater(res.GasInfo.GasUsed, uint64(0)) } +func (s IntegrationTestSuite) TestGetBlockWithTxs_GRPC() { + testCases := []struct { + name string + req *tx.GetBlockWithTxsRequest + expErr bool + expErrMsg string + }{ + {"nil request", nil, true, "request cannot be nil"}, + {"empty request", &tx.GetBlockWithTxsRequest{}, true, "height must not be less than 1 or greater than the current height"}, + {"bad height", &tx.GetBlockWithTxsRequest{Height: 99999999}, true, "height must not be less than 1 or greater than the current height"}, + {"bad pagination", &tx.GetBlockWithTxsRequest{Height: s.txHeight, Pagination: &query.PageRequest{Offset: 1000, Limit: 100}}, true, "out of range"}, + {"good request", &tx.GetBlockWithTxsRequest{Height: s.txHeight}, false, ""}, + {"with pagination request", &tx.GetBlockWithTxsRequest{Height: s.txHeight, Pagination: &query.PageRequest{Offset: 0, Limit: 1}}, false, ""}, + {"page all request", &tx.GetBlockWithTxsRequest{Height: s.txHeight, Pagination: &query.PageRequest{Offset: 0, Limit: 100}}, false, ""}, + } + for _, tc := range testCases { + s.Run(tc.name, func() { + // Query the tx via gRPC. + grpcRes, err := s.queryClient.GetBlockWithTxs(context.Background(), tc.req) + if tc.expErr { + s.Require().Error(err) + s.Require().Contains(err.Error(), tc.expErrMsg) + } else { + s.Require().NoError(err) + s.Require().Equal("foobar", grpcRes.Txs[0].Body.Memo) + s.Require().Equal(grpcRes.Block.Header.Height, tc.req.Height) + if tc.req.Pagination != nil { + s.Require().LessOrEqual(len(grpcRes.Txs), int(tc.req.Pagination.Limit)) + } + } + }) + } +} + +func (s IntegrationTestSuite) TestGetBlockWithTxs_GRPCGateway() { + val := s.network.Validators[0] + testCases := []struct { + name string + url string + expErr bool + expErrMsg string + }{ + { + "empty params", + fmt.Sprintf("%s/cosmos/tx/v1beta1/txs/block/0", val.APIAddress), + true, "height must not be less than 1 or greater than the current height", + }, + { + "bad height", + fmt.Sprintf("%s/cosmos/tx/v1beta1/txs/block/%d", val.APIAddress, 9999999), + true, "height must not be less than 1 or greater than the current height", + }, + { + "good request", + fmt.Sprintf("%s/cosmos/tx/v1beta1/txs/block/%d", val.APIAddress, s.txHeight), + false, "", + }, + } + for _, tc := range testCases { + s.Run(tc.name, func() { + res, err := rest.GetRequest(tc.url) + s.Require().NoError(err) + if tc.expErr { + s.Require().Contains(string(res), tc.expErrMsg) + } else { + var result tx.GetBlockWithTxsResponse + err = val.ClientCtx.Codec.UnmarshalJSON(res, &result) + s.Require().NoError(err) + s.Require().Equal("foobar", result.Txs[0].Body.Memo) + s.Require().Equal(result.Block.Header.Height, s.txHeight) + } + }) + } +} + func TestIntegrationTestSuite(t *testing.T) { suite.Run(t, new(IntegrationTestSuite)) } diff --git a/x/auth/types/query.pb.gw.go b/x/auth/types/query.pb.gw.go index f6d93f2924f2..d46e21a895c9 100644 --- a/x/auth/types/query.pb.gw.go +++ b/x/auth/types/query.pb.gw.go @@ -310,11 +310,11 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_Query_Accounts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "auth", "v1beta1", "accounts"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Accounts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "auth", "v1beta1", "accounts"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_Account_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "auth", "v1beta1", "accounts", "address"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Account_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "auth", "v1beta1", "accounts", "address"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "auth", "v1beta1", "params"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "auth", "v1beta1", "params"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/x/bank/types/query.pb.gw.go b/x/bank/types/query.pb.gw.go index 13e9b90aa99d..ebbeae3d93b0 100644 --- a/x/bank/types/query.pb.gw.go +++ b/x/bank/types/query.pb.gw.go @@ -686,19 +686,19 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_Query_Balance_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"cosmos", "bank", "v1beta1", "balances", "address", "by_denom"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Balance_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"cosmos", "bank", "v1beta1", "balances", "address", "by_denom"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_AllBalances_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "bank", "v1beta1", "balances", "address"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_AllBalances_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "bank", "v1beta1", "balances", "address"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_TotalSupply_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "supply"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_TotalSupply_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "supply"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_SupplyOf_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "bank", "v1beta1", "supply", "denom"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_SupplyOf_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "bank", "v1beta1", "supply", "denom"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "params"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "params"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_DenomMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "bank", "v1beta1", "denoms_metadata", "denom"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_DenomMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "bank", "v1beta1", "denoms_metadata", "denom"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_DenomsMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "denoms_metadata"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_DenomsMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "denoms_metadata"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/x/evidence/types/evidence.pb.go b/x/evidence/types/evidence.pb.go index 284f33a5ba0e..116d6362d5c7 100644 --- a/x/evidence/types/evidence.pb.go +++ b/x/evidence/types/evidence.pb.go @@ -8,7 +8,7 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" - _ "github.com/golang/protobuf/ptypes/timestamp" + _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" math_bits "math/bits" diff --git a/x/gov/types/gov.pb.go b/x/gov/types/gov.pb.go index 57730bcb9087..6f2b7dc697a2 100644 --- a/x/gov/types/gov.pb.go +++ b/x/gov/types/gov.pb.go @@ -11,9 +11,9 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" - _ "github.com/golang/protobuf/ptypes/duration" - _ "github.com/golang/protobuf/ptypes/timestamp" _ "github.com/regen-network/cosmos-proto" + _ "google.golang.org/protobuf/types/known/durationpb" + _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" math_bits "math/bits" diff --git a/x/ibc/light-clients/07-tendermint/types/tendermint.pb.go b/x/ibc/light-clients/07-tendermint/types/tendermint.pb.go index 510a643c256b..547a88318eb7 100644 --- a/x/ibc/light-clients/07-tendermint/types/tendermint.pb.go +++ b/x/ibc/light-clients/07-tendermint/types/tendermint.pb.go @@ -11,10 +11,10 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" - _ "github.com/golang/protobuf/ptypes/duration" - _ "github.com/golang/protobuf/ptypes/timestamp" github_com_tendermint_tendermint_libs_bytes "github.com/tendermint/tendermint/libs/bytes" types2 "github.com/tendermint/tendermint/proto/tendermint/types" + _ "google.golang.org/protobuf/types/known/durationpb" + _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" math_bits "math/bits" diff --git a/x/slashing/types/genesis.pb.go b/x/slashing/types/genesis.pb.go index 9819899d095e..7235626bd762 100644 --- a/x/slashing/types/genesis.pb.go +++ b/x/slashing/types/genesis.pb.go @@ -30,7 +30,7 @@ type GenesisState struct { // signing_infos represents a map between validator addresses and their // signing infos. SigningInfos []SigningInfo `protobuf:"bytes,2,rep,name=signing_infos,json=signingInfos,proto3" json:"signing_infos" yaml:"signing_infos"` - // signing_infos represents a map between validator addresses and their + // missed_blocks represents a map between validator addresses and their // missed blocks. MissedBlocks []ValidatorMissedBlocks `protobuf:"bytes,3,rep,name=missed_blocks,json=missedBlocks,proto3" json:"missed_blocks" yaml:"missed_blocks"` } diff --git a/x/slashing/types/slashing.pb.go b/x/slashing/types/slashing.pb.go index 2f48e117ebc9..633b4c5bb944 100644 --- a/x/slashing/types/slashing.pb.go +++ b/x/slashing/types/slashing.pb.go @@ -9,8 +9,8 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" - _ "github.com/golang/protobuf/ptypes/duration" - _ "github.com/golang/protobuf/ptypes/timestamp" + _ "google.golang.org/protobuf/types/known/durationpb" + _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" math_bits "math/bits" diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 45b30b7a0e5e..63a302ec47eb 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -15,10 +15,10 @@ import ( proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_protoc_gen_gogo_descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" - _ "github.com/golang/protobuf/ptypes/duration" - _ "github.com/golang/protobuf/ptypes/timestamp" _ "github.com/regen-network/cosmos-proto" types "github.com/tendermint/tendermint/proto/tendermint/types" + _ "google.golang.org/protobuf/types/known/durationpb" + _ "google.golang.org/protobuf/types/known/timestamppb" io "io" io_ioutil "io/ioutil" math "math" @@ -1260,608 +1260,608 @@ func (this *Pool) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 9603 bytes of a gzipped FileDescriptorSet + // 9604 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x24, 0xd7, - 0x71, 0xd8, 0xcd, 0xee, 0x02, 0xd8, 0x6d, 0x2c, 0x80, 0xc5, 0x03, 0xee, 0x6e, 0x6f, 0x79, 0x04, - 0xc0, 0xe1, 0xd7, 0xf1, 0x48, 0x02, 0xe4, 0x91, 0x77, 0x24, 0xf7, 0x24, 0xd2, 0x58, 0x60, 0x0f, + 0x71, 0x18, 0x66, 0x77, 0x01, 0xec, 0x36, 0x16, 0xc0, 0xe2, 0x01, 0x77, 0xb7, 0xb7, 0x3c, 0x02, + 0xe0, 0xf0, 0xeb, 0x78, 0x24, 0x71, 0xe4, 0x91, 0x77, 0x24, 0xf7, 0x24, 0x51, 0x58, 0x60, 0x0f, 0x07, 0x1e, 0xbe, 0x38, 0x00, 0x8e, 0xd4, 0x87, 0xb3, 0x35, 0x98, 0x7d, 0x58, 0x0c, 0xb1, 0x3b, - 0x33, 0x9c, 0x99, 0xbd, 0x3b, 0x50, 0x52, 0x15, 0x2d, 0x29, 0x8a, 0x44, 0xc7, 0x91, 0x14, 0xb9, - 0x1c, 0x89, 0xd6, 0x29, 0x92, 0xe5, 0x44, 0x8e, 0xac, 0xc4, 0x1f, 0x52, 0x94, 0x38, 0x49, 0x55, - 0xa4, 0x24, 0x8e, 0x25, 0xa5, 0xe2, 0x92, 0x2a, 0xae, 0xc4, 0x71, 0x25, 0x67, 0x87, 0x52, 0x39, - 0x8c, 0xa2, 0xc4, 0xf2, 0x59, 0x4e, 0x9c, 0x52, 0xa5, 0x92, 0x7a, 0x5f, 0xf3, 0xb5, 0x1f, 0xb3, - 0x0b, 0xdd, 0x49, 0x72, 0x9c, 0x5f, 0xd8, 0xd7, 0xaf, 0xbb, 0x5f, 0xbf, 0x7e, 0xfd, 0xba, 0xfb, - 0x7d, 0x0d, 0xe0, 0x9f, 0x9f, 0x87, 0x99, 0x9a, 0x69, 0xd6, 0xea, 0x78, 0xce, 0xb2, 0x4d, 0xd7, - 0xdc, 0x69, 0xee, 0xce, 0x55, 0xb1, 0xa3, 0xd9, 0xba, 0xe5, 0x9a, 0xf6, 0x2c, 0x85, 0xa1, 0x31, - 0x86, 0x31, 0x2b, 0x30, 0xe4, 0x55, 0x18, 0xbf, 0xa0, 0xd7, 0xf1, 0xa2, 0x87, 0xb8, 0x89, 0x5d, - 0xf4, 0x24, 0xa4, 0x76, 0xf5, 0x3a, 0xce, 0x4b, 0x33, 0xc9, 0x53, 0xc3, 0x67, 0xee, 0x99, 0x8d, - 0x10, 0xcd, 0x86, 0x29, 0x36, 0x08, 0x58, 0xa1, 0x14, 0xf2, 0xb7, 0x52, 0x30, 0xd1, 0xa6, 0x16, - 0x21, 0x48, 0x19, 0x6a, 0x83, 0x70, 0x94, 0x4e, 0x65, 0x14, 0xfa, 0x1b, 0xe5, 0x61, 0xc8, 0x52, - 0xb5, 0x7d, 0xb5, 0x86, 0xf3, 0x09, 0x0a, 0x16, 0x45, 0x34, 0x05, 0x50, 0xc5, 0x16, 0x36, 0xaa, - 0xd8, 0xd0, 0x0e, 0xf2, 0xc9, 0x99, 0xe4, 0xa9, 0x8c, 0x12, 0x80, 0xa0, 0x07, 0x61, 0xdc, 0x6a, - 0xee, 0xd4, 0x75, 0xad, 0x12, 0x40, 0x83, 0x99, 0xe4, 0xa9, 0x01, 0x25, 0xc7, 0x2a, 0x16, 0x7d, - 0xe4, 0xfb, 0x61, 0xec, 0x2a, 0x56, 0xf7, 0x83, 0xa8, 0xc3, 0x14, 0x75, 0x94, 0x80, 0x03, 0x88, - 0x0b, 0x90, 0x6d, 0x60, 0xc7, 0x51, 0x6b, 0xb8, 0xe2, 0x1e, 0x58, 0x38, 0x9f, 0xa2, 0xbd, 0x9f, - 0x69, 0xe9, 0x7d, 0xb4, 0xe7, 0xc3, 0x9c, 0x6a, 0xeb, 0xc0, 0xc2, 0x68, 0x1e, 0x32, 0xd8, 0x68, - 0x36, 0x18, 0x87, 0x81, 0x0e, 0xfa, 0x2b, 0x1b, 0xcd, 0x46, 0x94, 0x4b, 0x9a, 0x90, 0x71, 0x16, - 0x43, 0x0e, 0xb6, 0xaf, 0xe8, 0x1a, 0xce, 0x0f, 0x52, 0x06, 0xf7, 0xb7, 0x30, 0xd8, 0x64, 0xf5, - 0x51, 0x1e, 0x82, 0x0e, 0x2d, 0x40, 0x06, 0x5f, 0x73, 0xb1, 0xe1, 0xe8, 0xa6, 0x91, 0x1f, 0xa2, - 0x4c, 0xee, 0x6d, 0x33, 0x8a, 0xb8, 0x5e, 0x8d, 0xb2, 0xf0, 0xe9, 0xd0, 0x39, 0x18, 0x32, 0x2d, - 0x57, 0x37, 0x0d, 0x27, 0x9f, 0x9e, 0x91, 0x4e, 0x0d, 0x9f, 0x39, 0xd9, 0xd6, 0x10, 0xd6, 0x19, - 0x8e, 0x22, 0x90, 0xd1, 0x32, 0xe4, 0x1c, 0xb3, 0x69, 0x6b, 0xb8, 0xa2, 0x99, 0x55, 0x5c, 0xd1, - 0x8d, 0x5d, 0x33, 0x9f, 0xa1, 0x0c, 0xa6, 0x5b, 0x3b, 0x42, 0x11, 0x17, 0xcc, 0x2a, 0x5e, 0x36, - 0x76, 0x4d, 0x65, 0xd4, 0x09, 0x95, 0xd1, 0x31, 0x18, 0x74, 0x0e, 0x0c, 0x57, 0xbd, 0x96, 0xcf, - 0x52, 0x0b, 0xe1, 0x25, 0xf9, 0x37, 0x06, 0x61, 0xac, 0x17, 0x13, 0x3b, 0x0f, 0x03, 0xbb, 0xa4, - 0x97, 0xf9, 0x44, 0x3f, 0x3a, 0x60, 0x34, 0x61, 0x25, 0x0e, 0x1e, 0x52, 0x89, 0xf3, 0x30, 0x6c, - 0x60, 0xc7, 0xc5, 0x55, 0x66, 0x11, 0xc9, 0x1e, 0x6d, 0x0a, 0x18, 0x51, 0xab, 0x49, 0xa5, 0x0e, - 0x65, 0x52, 0x2f, 0xc0, 0x98, 0x27, 0x52, 0xc5, 0x56, 0x8d, 0x9a, 0xb0, 0xcd, 0xb9, 0x38, 0x49, - 0x66, 0xcb, 0x82, 0x4e, 0x21, 0x64, 0xca, 0x28, 0x0e, 0x95, 0xd1, 0x22, 0x80, 0x69, 0x60, 0x73, - 0xb7, 0x52, 0xc5, 0x5a, 0x3d, 0x9f, 0xee, 0xa0, 0xa5, 0x75, 0x82, 0xd2, 0xa2, 0x25, 0x93, 0x41, - 0xb5, 0x3a, 0x7a, 0xca, 0x37, 0xb5, 0xa1, 0x0e, 0x96, 0xb2, 0xca, 0x26, 0x59, 0x8b, 0xb5, 0x6d, - 0xc3, 0xa8, 0x8d, 0x89, 0xdd, 0xe3, 0x2a, 0xef, 0x59, 0x86, 0x0a, 0x31, 0x1b, 0xdb, 0x33, 0x85, - 0x93, 0xb1, 0x8e, 0x8d, 0xd8, 0xc1, 0x22, 0xba, 0x1b, 0x3c, 0x40, 0x85, 0x9a, 0x15, 0x50, 0x2f, - 0x94, 0x15, 0xc0, 0x35, 0xb5, 0x81, 0x0b, 0x2f, 0xc3, 0x68, 0x58, 0x3d, 0x68, 0x12, 0x06, 0x1c, - 0x57, 0xb5, 0x5d, 0x6a, 0x85, 0x03, 0x0a, 0x2b, 0xa0, 0x1c, 0x24, 0xb1, 0x51, 0xa5, 0x5e, 0x6e, - 0x40, 0x21, 0x3f, 0xd1, 0x4f, 0xf8, 0x1d, 0x4e, 0xd2, 0x0e, 0xdf, 0xd7, 0x3a, 0xa2, 0x21, 0xce, - 0xd1, 0x7e, 0x17, 0x9e, 0x80, 0x91, 0x50, 0x07, 0x7a, 0x6d, 0x5a, 0x7e, 0x27, 0x1c, 0x6d, 0xcb, - 0x1a, 0xbd, 0x00, 0x93, 0x4d, 0x43, 0x37, 0x5c, 0x6c, 0x5b, 0x36, 0x26, 0x16, 0xcb, 0x9a, 0xca, - 0xff, 0xe7, 0xa1, 0x0e, 0x36, 0xb7, 0x1d, 0xc4, 0x66, 0x5c, 0x94, 0x89, 0x66, 0x2b, 0xf0, 0x74, - 0x26, 0xfd, 0xc6, 0x50, 0xee, 0x95, 0x57, 0x5e, 0x79, 0x25, 0x21, 0x7f, 0x79, 0x10, 0x26, 0xdb, - 0xcd, 0x99, 0xb6, 0xd3, 0xf7, 0x18, 0x0c, 0x1a, 0xcd, 0xc6, 0x0e, 0xb6, 0xa9, 0x92, 0x06, 0x14, - 0x5e, 0x42, 0xf3, 0x30, 0x50, 0x57, 0x77, 0x70, 0x3d, 0x9f, 0x9a, 0x91, 0x4e, 0x8d, 0x9e, 0x79, - 0xb0, 0xa7, 0x59, 0x39, 0xbb, 0x42, 0x48, 0x14, 0x46, 0x89, 0x9e, 0x86, 0x14, 0x77, 0xd1, 0x84, - 0xc3, 0xe9, 0xde, 0x38, 0x90, 0xb9, 0xa4, 0x50, 0x3a, 0x74, 0x07, 0x64, 0xc8, 0x5f, 0x66, 0x1b, - 0x83, 0x54, 0xe6, 0x34, 0x01, 0x10, 0xbb, 0x40, 0x05, 0x48, 0xd3, 0x69, 0x52, 0xc5, 0x22, 0xb4, - 0x79, 0x65, 0x62, 0x58, 0x55, 0xbc, 0xab, 0x36, 0xeb, 0x6e, 0xe5, 0x8a, 0x5a, 0x6f, 0x62, 0x6a, - 0xf0, 0x19, 0x25, 0xcb, 0x81, 0x97, 0x09, 0x0c, 0x4d, 0xc3, 0x30, 0x9b, 0x55, 0xba, 0x51, 0xc5, - 0xd7, 0xa8, 0xf7, 0x1c, 0x50, 0xd8, 0x44, 0x5b, 0x26, 0x10, 0xd2, 0xfc, 0x8b, 0x8e, 0x69, 0x08, - 0xd3, 0xa4, 0x4d, 0x10, 0x00, 0x6d, 0xfe, 0x89, 0xa8, 0xe3, 0xbe, 0xb3, 0x7d, 0xf7, 0x5a, 0xe6, - 0xd2, 0xfd, 0x30, 0x46, 0x31, 0x1e, 0xe3, 0x43, 0xaf, 0xd6, 0xf3, 0xe3, 0x33, 0xd2, 0xa9, 0xb4, - 0x32, 0xca, 0xc0, 0xeb, 0x1c, 0x2a, 0x7f, 0x31, 0x01, 0x29, 0xea, 0x58, 0xc6, 0x60, 0x78, 0xeb, - 0x2d, 0x1b, 0xe5, 0xca, 0xe2, 0xfa, 0x76, 0x69, 0xa5, 0x9c, 0x93, 0xd0, 0x28, 0x00, 0x05, 0x5c, - 0x58, 0x59, 0x9f, 0xdf, 0xca, 0x25, 0xbc, 0xf2, 0xf2, 0xda, 0xd6, 0xb9, 0xc7, 0x73, 0x49, 0x8f, - 0x60, 0x9b, 0x01, 0x52, 0x41, 0x84, 0xc7, 0xce, 0xe4, 0x06, 0x50, 0x0e, 0xb2, 0x8c, 0xc1, 0xf2, - 0x0b, 0xe5, 0xc5, 0x73, 0x8f, 0xe7, 0x06, 0xc3, 0x90, 0xc7, 0xce, 0xe4, 0x86, 0xd0, 0x08, 0x64, - 0x28, 0xa4, 0xb4, 0xbe, 0xbe, 0x92, 0x4b, 0x7b, 0x3c, 0x37, 0xb7, 0x94, 0xe5, 0xb5, 0xa5, 0x5c, - 0xc6, 0xe3, 0xb9, 0xa4, 0xac, 0x6f, 0x6f, 0xe4, 0xc0, 0xe3, 0xb0, 0x5a, 0xde, 0xdc, 0x9c, 0x5f, - 0x2a, 0xe7, 0x86, 0x3d, 0x8c, 0xd2, 0x5b, 0xb6, 0xca, 0x9b, 0xb9, 0x6c, 0x48, 0xac, 0xc7, 0xce, - 0xe4, 0x46, 0xbc, 0x26, 0xca, 0x6b, 0xdb, 0xab, 0xb9, 0x51, 0x34, 0x0e, 0x23, 0xac, 0x09, 0x21, - 0xc4, 0x58, 0x04, 0x74, 0xee, 0xf1, 0x5c, 0xce, 0x17, 0x84, 0x71, 0x19, 0x0f, 0x01, 0xce, 0x3d, - 0x9e, 0x43, 0xf2, 0x02, 0x0c, 0x50, 0x33, 0x44, 0x08, 0x46, 0x57, 0xe6, 0x4b, 0xe5, 0x95, 0xca, - 0xfa, 0xc6, 0xd6, 0xf2, 0xfa, 0xda, 0xfc, 0x4a, 0x4e, 0xf2, 0x61, 0x4a, 0xf9, 0xb9, 0xed, 0x65, - 0xa5, 0xbc, 0x98, 0x4b, 0x04, 0x61, 0x1b, 0xe5, 0xf9, 0xad, 0xf2, 0x62, 0x2e, 0x29, 0x6b, 0x30, - 0xd9, 0xce, 0xa1, 0xb6, 0x9d, 0x42, 0x01, 0x5b, 0x48, 0x74, 0xb0, 0x05, 0xca, 0x2b, 0x6a, 0x0b, - 0xf2, 0x37, 0x13, 0x30, 0xd1, 0x26, 0xa8, 0xb4, 0x6d, 0xe4, 0x19, 0x18, 0x60, 0xb6, 0xcc, 0xc2, - 0xec, 0x03, 0x6d, 0xa3, 0x13, 0xb5, 0xec, 0x96, 0x50, 0x4b, 0xe9, 0x82, 0xa9, 0x46, 0xb2, 0x43, - 0xaa, 0x41, 0x58, 0xb4, 0x18, 0xec, 0x4f, 0xb6, 0x38, 0x7f, 0x16, 0x1f, 0xcf, 0xf5, 0x12, 0x1f, - 0x29, 0xac, 0xbf, 0x20, 0x30, 0xd0, 0x26, 0x08, 0x9c, 0x87, 0xf1, 0x16, 0x46, 0x3d, 0x3b, 0xe3, - 0xf7, 0x48, 0x90, 0xef, 0xa4, 0x9c, 0x18, 0x97, 0x98, 0x08, 0xb9, 0xc4, 0xf3, 0x51, 0x0d, 0xde, - 0xd5, 0x79, 0x10, 0x5a, 0xc6, 0xfa, 0x33, 0x12, 0x1c, 0x6b, 0x9f, 0x52, 0xb6, 0x95, 0xe1, 0x69, - 0x18, 0x6c, 0x60, 0x77, 0xcf, 0x14, 0x69, 0xd5, 0x7d, 0x6d, 0x82, 0x35, 0xa9, 0x8e, 0x0e, 0x36, - 0xa7, 0x0a, 0x46, 0xfb, 0x64, 0xa7, 0xbc, 0x90, 0x49, 0xd3, 0x22, 0xe9, 0x07, 0x12, 0x70, 0xb4, - 0x2d, 0xf3, 0xb6, 0x82, 0xde, 0x09, 0xa0, 0x1b, 0x56, 0xd3, 0x65, 0xa9, 0x13, 0xf3, 0xc4, 0x19, - 0x0a, 0xa1, 0xce, 0x8b, 0x78, 0xd9, 0xa6, 0xeb, 0xd5, 0x27, 0x69, 0x3d, 0x30, 0x10, 0x45, 0x78, - 0xd2, 0x17, 0x34, 0x45, 0x05, 0x9d, 0xea, 0xd0, 0xd3, 0x16, 0xc3, 0x7c, 0x04, 0x72, 0x5a, 0x5d, - 0xc7, 0x86, 0x5b, 0x71, 0x5c, 0x1b, 0xab, 0x0d, 0xdd, 0xa8, 0xd1, 0x50, 0x93, 0x2e, 0x0e, 0xec, - 0xaa, 0x75, 0x07, 0x2b, 0x63, 0xac, 0x7a, 0x53, 0xd4, 0x12, 0x0a, 0x6a, 0x40, 0x76, 0x80, 0x62, - 0x30, 0x44, 0xc1, 0xaa, 0x3d, 0x0a, 0xf9, 0xc3, 0x19, 0x18, 0x0e, 0x24, 0xe0, 0xe8, 0x2e, 0xc8, - 0xbe, 0xa8, 0x5e, 0x51, 0x2b, 0x62, 0x51, 0xc5, 0x34, 0x31, 0x4c, 0x60, 0x1b, 0x7c, 0x61, 0xf5, - 0x08, 0x4c, 0x52, 0x14, 0xb3, 0xe9, 0x62, 0xbb, 0xa2, 0xd5, 0x55, 0xc7, 0xa1, 0x4a, 0x4b, 0x53, - 0x54, 0x44, 0xea, 0xd6, 0x49, 0xd5, 0x82, 0xa8, 0x41, 0x67, 0x61, 0x82, 0x52, 0x34, 0x9a, 0x75, - 0x57, 0xb7, 0xea, 0xb8, 0x42, 0x96, 0x79, 0x0e, 0x0d, 0x39, 0x9e, 0x64, 0xe3, 0x04, 0x63, 0x95, - 0x23, 0x10, 0x89, 0x1c, 0xb4, 0x08, 0x77, 0x52, 0xb2, 0x1a, 0x36, 0xb0, 0xad, 0xba, 0xb8, 0x82, - 0x5f, 0x6a, 0xaa, 0x75, 0xa7, 0xa2, 0x1a, 0xd5, 0xca, 0x9e, 0xea, 0xec, 0xe5, 0x27, 0x09, 0x83, - 0x52, 0x22, 0x2f, 0x29, 0x27, 0x08, 0xe2, 0x12, 0xc7, 0x2b, 0x53, 0xb4, 0x79, 0xa3, 0x7a, 0x51, - 0x75, 0xf6, 0x50, 0x11, 0x8e, 0x51, 0x2e, 0x8e, 0x6b, 0xeb, 0x46, 0xad, 0xa2, 0xed, 0x61, 0x6d, - 0xbf, 0xd2, 0x74, 0x77, 0x9f, 0xcc, 0xdf, 0x11, 0x6c, 0x9f, 0x4a, 0xb8, 0x49, 0x71, 0x16, 0x08, - 0xca, 0xb6, 0xbb, 0xfb, 0x24, 0xda, 0x84, 0x2c, 0x19, 0x8c, 0x86, 0xfe, 0x32, 0xae, 0xec, 0x9a, - 0x36, 0x8d, 0xa1, 0xa3, 0x6d, 0x5c, 0x53, 0x40, 0x83, 0xb3, 0xeb, 0x9c, 0x60, 0xd5, 0xac, 0xe2, - 0xe2, 0xc0, 0xe6, 0x46, 0xb9, 0xbc, 0xa8, 0x0c, 0x0b, 0x2e, 0x17, 0x4c, 0x9b, 0x18, 0x54, 0xcd, - 0xf4, 0x14, 0x3c, 0xcc, 0x0c, 0xaa, 0x66, 0x0a, 0xf5, 0x9e, 0x85, 0x09, 0x4d, 0x63, 0x7d, 0xd6, - 0xb5, 0x0a, 0x5f, 0x8c, 0x39, 0xf9, 0x5c, 0x48, 0x59, 0x9a, 0xb6, 0xc4, 0x10, 0xb8, 0x8d, 0x3b, - 0xe8, 0x29, 0x38, 0xea, 0x2b, 0x2b, 0x48, 0x38, 0xde, 0xd2, 0xcb, 0x28, 0xe9, 0x59, 0x98, 0xb0, - 0x0e, 0x5a, 0x09, 0x51, 0xa8, 0x45, 0xeb, 0x20, 0x4a, 0xf6, 0x04, 0x4c, 0x5a, 0x7b, 0x56, 0x2b, - 0xdd, 0xe9, 0x20, 0x1d, 0xb2, 0xf6, 0xac, 0x28, 0xe1, 0xbd, 0x74, 0x65, 0x6e, 0x63, 0x4d, 0x75, - 0x71, 0x35, 0x7f, 0x3c, 0x88, 0x1e, 0xa8, 0x40, 0xb3, 0x90, 0xd3, 0xb4, 0x0a, 0x36, 0xd4, 0x9d, - 0x3a, 0xae, 0xa8, 0x36, 0x36, 0x54, 0x27, 0x3f, 0x4d, 0x91, 0x53, 0xae, 0xdd, 0xc4, 0xca, 0xa8, - 0xa6, 0x95, 0x69, 0xe5, 0x3c, 0xad, 0x43, 0xa7, 0x61, 0xdc, 0xdc, 0x79, 0x51, 0x63, 0x16, 0x59, - 0xb1, 0x6c, 0xbc, 0xab, 0x5f, 0xcb, 0xdf, 0x43, 0xd5, 0x3b, 0x46, 0x2a, 0xa8, 0x3d, 0x6e, 0x50, - 0x30, 0x7a, 0x00, 0x72, 0x9a, 0xb3, 0xa7, 0xda, 0x16, 0x75, 0xc9, 0x8e, 0xa5, 0x6a, 0x38, 0x7f, - 0x2f, 0x43, 0x65, 0xf0, 0x35, 0x01, 0x26, 0x33, 0xc2, 0xb9, 0xaa, 0xef, 0xba, 0x82, 0xe3, 0xfd, - 0x6c, 0x46, 0x50, 0x18, 0xe7, 0x76, 0x0a, 0x72, 0x44, 0x13, 0xa1, 0x86, 0x4f, 0x51, 0xb4, 0x51, - 0x6b, 0xcf, 0x0a, 0xb6, 0x7b, 0x37, 0x8c, 0x10, 0x4c, 0xbf, 0xd1, 0x07, 0x58, 0xe2, 0x66, 0xed, - 0x05, 0x5a, 0x7c, 0x1c, 0x8e, 0x11, 0xa4, 0x06, 0x76, 0xd5, 0xaa, 0xea, 0xaa, 0x01, 0xec, 0x87, - 0x28, 0x36, 0x51, 0xfb, 0x2a, 0xaf, 0x0c, 0xc9, 0x69, 0x37, 0x77, 0x0e, 0x3c, 0xc3, 0x7a, 0x98, - 0xc9, 0x49, 0x60, 0xc2, 0xb4, 0x6e, 0x5b, 0x72, 0x2e, 0x17, 0x21, 0x1b, 0xb4, 0x7b, 0x94, 0x01, - 0x66, 0xf9, 0x39, 0x89, 0x24, 0x41, 0x0b, 0xeb, 0x8b, 0x24, 0x7d, 0x79, 0x6b, 0x39, 0x97, 0x20, - 0x69, 0xd4, 0xca, 0xf2, 0x56, 0xb9, 0xa2, 0x6c, 0xaf, 0x6d, 0x2d, 0xaf, 0x96, 0x73, 0xc9, 0x40, - 0x62, 0xff, 0x6c, 0x2a, 0x7d, 0x5f, 0xee, 0x7e, 0xf9, 0x1b, 0x09, 0x18, 0x0d, 0xaf, 0xd4, 0xd0, - 0x9b, 0xe0, 0xb8, 0xd8, 0x56, 0x71, 0xb0, 0x5b, 0xb9, 0xaa, 0xdb, 0x74, 0x42, 0x36, 0x54, 0x16, - 0x1c, 0x3d, 0xfb, 0x99, 0xe4, 0x58, 0x9b, 0xd8, 0x7d, 0x5e, 0xb7, 0xc9, 0x74, 0x6b, 0xa8, 0x2e, - 0x5a, 0x81, 0x69, 0xc3, 0xac, 0x38, 0xae, 0x6a, 0x54, 0x55, 0xbb, 0x5a, 0xf1, 0x37, 0xb4, 0x2a, - 0xaa, 0xa6, 0x61, 0xc7, 0x31, 0x59, 0x20, 0xf4, 0xb8, 0x9c, 0x34, 0xcc, 0x4d, 0x8e, 0xec, 0x47, - 0x88, 0x79, 0x8e, 0x1a, 0x31, 0xdf, 0x64, 0x27, 0xf3, 0xbd, 0x03, 0x32, 0x0d, 0xd5, 0xaa, 0x60, - 0xc3, 0xb5, 0x0f, 0x68, 0x7e, 0x9e, 0x56, 0xd2, 0x0d, 0xd5, 0x2a, 0x93, 0xf2, 0x0f, 0x65, 0x99, - 0xf4, 0x6c, 0x2a, 0x9d, 0xce, 0x65, 0x9e, 0x4d, 0xa5, 0x33, 0x39, 0x90, 0x5f, 0x4f, 0x42, 0x36, - 0x98, 0xaf, 0x93, 0xe5, 0x8f, 0x46, 0x23, 0x96, 0x44, 0x7d, 0xda, 0xdd, 0x5d, 0xb3, 0xfb, 0xd9, - 0x05, 0x12, 0xca, 0x8a, 0x83, 0x2c, 0x39, 0x56, 0x18, 0x25, 0x49, 0x23, 0x88, 0xb1, 0x61, 0x96, - 0x8c, 0xa4, 0x15, 0x5e, 0x42, 0x4b, 0x30, 0xf8, 0xa2, 0x43, 0x79, 0x0f, 0x52, 0xde, 0xf7, 0x74, - 0xe7, 0xfd, 0xec, 0x26, 0x65, 0x9e, 0x79, 0x76, 0xb3, 0xb2, 0xb6, 0xae, 0xac, 0xce, 0xaf, 0x28, - 0x9c, 0x1c, 0x9d, 0x80, 0x54, 0x5d, 0x7d, 0xf9, 0x20, 0x1c, 0xf4, 0x28, 0xa8, 0xd7, 0x41, 0x38, - 0x01, 0xa9, 0xab, 0x58, 0xdd, 0x0f, 0x87, 0x1a, 0x0a, 0xba, 0x8d, 0x93, 0x61, 0x0e, 0x06, 0xa8, - 0xbe, 0x10, 0x00, 0xd7, 0x58, 0xee, 0x08, 0x4a, 0x43, 0x6a, 0x61, 0x5d, 0x21, 0x13, 0x22, 0x07, - 0x59, 0x06, 0xad, 0x6c, 0x2c, 0x97, 0x17, 0xca, 0xb9, 0x84, 0x7c, 0x16, 0x06, 0x99, 0x12, 0xc8, - 0x64, 0xf1, 0xd4, 0x90, 0x3b, 0xc2, 0x8b, 0x9c, 0x87, 0x24, 0x6a, 0xb7, 0x57, 0x4b, 0x65, 0x25, - 0x97, 0x08, 0x0f, 0x75, 0x2a, 0x37, 0x20, 0x3b, 0x90, 0x0d, 0xe6, 0xe1, 0x3f, 0x9c, 0xc5, 0xf8, - 0x97, 0x24, 0x18, 0x0e, 0xe4, 0xd5, 0x24, 0x21, 0x52, 0xeb, 0x75, 0xf3, 0x6a, 0x45, 0xad, 0xeb, - 0xaa, 0xc3, 0x4d, 0x03, 0x28, 0x68, 0x9e, 0x40, 0x7a, 0x1d, 0xba, 0x1f, 0xd2, 0x14, 0x19, 0xc8, - 0x0d, 0xca, 0x9f, 0x90, 0x20, 0x17, 0x4d, 0x6c, 0x23, 0x62, 0x4a, 0x3f, 0x4a, 0x31, 0xe5, 0x8f, - 0x4b, 0x30, 0x1a, 0xce, 0x66, 0x23, 0xe2, 0xdd, 0xf5, 0x23, 0x15, 0xef, 0x0f, 0x12, 0x30, 0x12, - 0xca, 0x61, 0x7b, 0x95, 0xee, 0x25, 0x18, 0xd7, 0xab, 0xb8, 0x61, 0x99, 0x2e, 0x36, 0xb4, 0x83, - 0x4a, 0x1d, 0x5f, 0xc1, 0xf5, 0xbc, 0x4c, 0x9d, 0xc6, 0x5c, 0xf7, 0x2c, 0x79, 0x76, 0xd9, 0xa7, - 0x5b, 0x21, 0x64, 0xc5, 0x89, 0xe5, 0xc5, 0xf2, 0xea, 0xc6, 0xfa, 0x56, 0x79, 0x6d, 0xe1, 0x2d, - 0x95, 0xed, 0xb5, 0x4b, 0x6b, 0xeb, 0xcf, 0xaf, 0x29, 0x39, 0x3d, 0x82, 0x76, 0x1b, 0xa7, 0xfd, - 0x06, 0xe4, 0xa2, 0x42, 0xa1, 0xe3, 0xd0, 0x4e, 0xac, 0xdc, 0x11, 0x34, 0x01, 0x63, 0x6b, 0xeb, - 0x95, 0xcd, 0xe5, 0xc5, 0x72, 0xa5, 0x7c, 0xe1, 0x42, 0x79, 0x61, 0x6b, 0x93, 0xed, 0x7b, 0x78, - 0xd8, 0x5b, 0xa1, 0x09, 0x2e, 0xbf, 0x96, 0x84, 0x89, 0x36, 0x92, 0xa0, 0x79, 0xbe, 0x62, 0x61, - 0x8b, 0xa8, 0x87, 0x7b, 0x91, 0x7e, 0x96, 0xe4, 0x0c, 0x1b, 0xaa, 0xed, 0xf2, 0x05, 0xce, 0x03, - 0x40, 0xb4, 0x64, 0xb8, 0xfa, 0xae, 0x8e, 0x6d, 0xbe, 0x9f, 0xc4, 0x96, 0x31, 0x63, 0x3e, 0x9c, - 0x6d, 0x29, 0x3d, 0x04, 0xc8, 0x32, 0x1d, 0xdd, 0xd5, 0xaf, 0xe0, 0x8a, 0x6e, 0x88, 0xcd, 0x27, - 0xb2, 0xac, 0x49, 0x29, 0x39, 0x51, 0xb3, 0x6c, 0xb8, 0x1e, 0xb6, 0x81, 0x6b, 0x6a, 0x04, 0x9b, - 0x38, 0xf3, 0xa4, 0x92, 0x13, 0x35, 0x1e, 0xf6, 0x5d, 0x90, 0xad, 0x9a, 0x4d, 0x92, 0xeb, 0x31, - 0x3c, 0x12, 0x3b, 0x24, 0x65, 0x98, 0xc1, 0x3c, 0x14, 0x9e, 0xc5, 0xfb, 0xbb, 0x5e, 0x59, 0x65, - 0x98, 0xc1, 0x18, 0xca, 0xfd, 0x30, 0xa6, 0xd6, 0x6a, 0x36, 0x61, 0x2e, 0x18, 0xb1, 0x75, 0xc9, - 0xa8, 0x07, 0xa6, 0x88, 0x85, 0x67, 0x21, 0x2d, 0xf4, 0x40, 0x42, 0x35, 0xd1, 0x44, 0xc5, 0x62, - 0x8b, 0xed, 0xc4, 0xa9, 0x8c, 0x92, 0x36, 0x44, 0xe5, 0x5d, 0x90, 0xd5, 0x9d, 0x8a, 0xbf, 0x89, - 0x9f, 0x98, 0x49, 0x9c, 0x4a, 0x2b, 0xc3, 0xba, 0xe3, 0x6d, 0x80, 0xca, 0x9f, 0x49, 0xc0, 0x68, - 0xf8, 0x10, 0x02, 0x2d, 0x42, 0xba, 0x6e, 0x6a, 0x2a, 0x35, 0x2d, 0x76, 0x02, 0x76, 0x2a, 0xe6, - 0xdc, 0x62, 0x76, 0x85, 0xe3, 0x2b, 0x1e, 0x65, 0xe1, 0xb7, 0x25, 0x48, 0x0b, 0x30, 0x3a, 0x06, - 0x29, 0x4b, 0x75, 0xf7, 0x28, 0xbb, 0x81, 0x52, 0x22, 0x27, 0x29, 0xb4, 0x4c, 0xe0, 0x8e, 0xa5, - 0x1a, 0xd4, 0x04, 0x38, 0x9c, 0x94, 0xc9, 0xb8, 0xd6, 0xb1, 0x5a, 0xa5, 0x8b, 0x1e, 0xb3, 0xd1, - 0xc0, 0x86, 0xeb, 0x88, 0x71, 0xe5, 0xf0, 0x05, 0x0e, 0x46, 0x0f, 0xc2, 0xb8, 0x6b, 0xab, 0x7a, - 0x3d, 0x84, 0x9b, 0xa2, 0xb8, 0x39, 0x51, 0xe1, 0x21, 0x17, 0xe1, 0x84, 0xe0, 0x5b, 0xc5, 0xae, - 0xaa, 0xed, 0xe1, 0xaa, 0x4f, 0x34, 0x48, 0x37, 0x37, 0x8e, 0x73, 0x84, 0x45, 0x5e, 0x2f, 0x68, - 0xe5, 0x6f, 0x48, 0x30, 0x2e, 0x96, 0x69, 0x55, 0x4f, 0x59, 0xab, 0x00, 0xaa, 0x61, 0x98, 0x6e, - 0x50, 0x5d, 0xad, 0xa6, 0xdc, 0x42, 0x37, 0x3b, 0xef, 0x11, 0x29, 0x01, 0x06, 0x85, 0x06, 0x80, - 0x5f, 0xd3, 0x51, 0x6d, 0xd3, 0x30, 0xcc, 0x4f, 0x98, 0xe8, 0x31, 0x25, 0x5b, 0xd8, 0x03, 0x03, - 0x91, 0xf5, 0x1c, 0x9a, 0x84, 0x81, 0x1d, 0x5c, 0xd3, 0x0d, 0xbe, 0x6f, 0xcc, 0x0a, 0x62, 0xfb, - 0x25, 0xe5, 0x6d, 0xbf, 0x94, 0x3e, 0x28, 0xc1, 0x84, 0x66, 0x36, 0xa2, 0xf2, 0x96, 0x72, 0x91, - 0xdd, 0x05, 0xe7, 0xa2, 0xf4, 0xd6, 0xa7, 0x6b, 0xba, 0xbb, 0xd7, 0xdc, 0x99, 0xd5, 0xcc, 0xc6, - 0x5c, 0xcd, 0xac, 0xab, 0x46, 0xcd, 0x3f, 0x67, 0xa5, 0x3f, 0xb4, 0x87, 0x6b, 0xd8, 0x78, 0xb8, - 0x66, 0x06, 0x4e, 0x5d, 0xcf, 0xfb, 0x3f, 0xff, 0x4c, 0x92, 0x7e, 0x21, 0x91, 0x5c, 0xda, 0x28, - 0x7d, 0x36, 0x51, 0x58, 0x62, 0xcd, 0x6d, 0x08, 0xf5, 0x28, 0x78, 0xb7, 0x8e, 0x35, 0xd2, 0x65, - 0xf8, 0xf6, 0x83, 0x30, 0x59, 0x33, 0x6b, 0x26, 0xe5, 0x38, 0x47, 0x7e, 0xf1, 0x93, 0xdb, 0x8c, - 0x07, 0x2d, 0xc4, 0x1e, 0xf3, 0x16, 0xd7, 0x60, 0x82, 0x23, 0x57, 0xe8, 0xd1, 0x11, 0x5b, 0xd8, - 0xa0, 0xae, 0xbb, 0x6a, 0xf9, 0x5f, 0xfb, 0x16, 0x0d, 0xe8, 0xca, 0x38, 0x27, 0x25, 0x75, 0x6c, - 0xed, 0x53, 0x54, 0xe0, 0x68, 0x88, 0x1f, 0x9b, 0xb6, 0xd8, 0x8e, 0xe1, 0xf8, 0x9b, 0x9c, 0xe3, - 0x44, 0x80, 0xe3, 0x26, 0x27, 0x2d, 0x2e, 0xc0, 0x48, 0x3f, 0xbc, 0xfe, 0x25, 0xe7, 0x95, 0xc5, - 0x41, 0x26, 0x4b, 0x30, 0x46, 0x99, 0x68, 0x4d, 0xc7, 0x35, 0x1b, 0xd4, 0x27, 0x76, 0x67, 0xf3, - 0x5b, 0xdf, 0x62, 0xf3, 0x68, 0x94, 0x90, 0x2d, 0x78, 0x54, 0xc5, 0x22, 0xd0, 0xd3, 0xb2, 0x2a, - 0xd6, 0xea, 0x31, 0x1c, 0xbe, 0xc2, 0x05, 0xf1, 0xf0, 0x8b, 0x97, 0x61, 0x92, 0xfc, 0xa6, 0x2e, - 0x2b, 0x28, 0x49, 0xfc, 0x16, 0x5c, 0xfe, 0x1b, 0xef, 0x61, 0x53, 0x75, 0xc2, 0x63, 0x10, 0x90, - 0x29, 0x30, 0x8a, 0x35, 0xec, 0xba, 0xd8, 0x76, 0x2a, 0x6a, 0xbd, 0x9d, 0x78, 0x81, 0x3d, 0x8c, - 0xfc, 0xc7, 0xbe, 0x13, 0x1e, 0xc5, 0x25, 0x46, 0x39, 0x5f, 0xaf, 0x17, 0xb7, 0xe1, 0x78, 0x1b, - 0xab, 0xe8, 0x81, 0xe7, 0x6b, 0x9c, 0xe7, 0x64, 0x8b, 0x65, 0x10, 0xb6, 0x1b, 0x20, 0xe0, 0xde, - 0x58, 0xf6, 0xc0, 0xf3, 0xe7, 0x39, 0x4f, 0xc4, 0x69, 0xc5, 0x90, 0x12, 0x8e, 0xcf, 0xc2, 0xf8, - 0x15, 0x6c, 0xef, 0x98, 0x0e, 0xdf, 0x37, 0xea, 0x81, 0xdd, 0xc7, 0x39, 0xbb, 0x31, 0x4e, 0x48, - 0x37, 0x92, 0x08, 0xaf, 0xa7, 0x20, 0xbd, 0xab, 0x6a, 0xb8, 0x07, 0x16, 0xd7, 0x39, 0x8b, 0x21, - 0x82, 0x4f, 0x48, 0xe7, 0x21, 0x5b, 0x33, 0x79, 0xd4, 0x8a, 0x27, 0xff, 0x04, 0x27, 0x1f, 0x16, - 0x34, 0x9c, 0x85, 0x65, 0x5a, 0xcd, 0x3a, 0x09, 0x69, 0xf1, 0x2c, 0xfe, 0xa6, 0x60, 0x21, 0x68, - 0x38, 0x8b, 0x3e, 0xd4, 0xfa, 0x49, 0xc1, 0xc2, 0x09, 0xe8, 0xf3, 0x19, 0x18, 0x36, 0x8d, 0xfa, - 0x81, 0x69, 0xf4, 0x22, 0xc4, 0xa7, 0x38, 0x07, 0xe0, 0x24, 0x84, 0xc1, 0x79, 0xc8, 0xf4, 0x3a, - 0x10, 0x7f, 0xeb, 0x3b, 0x62, 0x7a, 0x88, 0x11, 0x58, 0x82, 0x31, 0xe1, 0xa0, 0x74, 0xd3, 0xe8, - 0x81, 0xc5, 0xdf, 0xe6, 0x2c, 0x46, 0x03, 0x64, 0xbc, 0x1b, 0x2e, 0x76, 0xdc, 0x1a, 0xee, 0x85, - 0xc9, 0x67, 0x44, 0x37, 0x38, 0x09, 0x57, 0xe5, 0x0e, 0x36, 0xb4, 0xbd, 0xde, 0x38, 0xfc, 0x92, - 0x50, 0xa5, 0xa0, 0x21, 0x2c, 0x16, 0x60, 0xa4, 0xa1, 0xda, 0xce, 0x9e, 0x5a, 0xef, 0x69, 0x38, - 0xfe, 0x0e, 0xe7, 0x91, 0xf5, 0x88, 0xb8, 0x46, 0x9a, 0x46, 0x3f, 0x6c, 0x3e, 0x2b, 0x34, 0x12, - 0x20, 0xe3, 0x53, 0xcf, 0x71, 0xe9, 0x26, 0x5b, 0x3f, 0xdc, 0x7e, 0x59, 0x4c, 0x3d, 0x46, 0xbb, - 0x1a, 0xe4, 0x78, 0x1e, 0x32, 0x8e, 0xfe, 0x72, 0x4f, 0x6c, 0x3e, 0x27, 0x46, 0x9a, 0x12, 0x10, - 0xe2, 0xb7, 0xc0, 0x89, 0xb6, 0x61, 0xa2, 0x07, 0x66, 0x7f, 0x97, 0x33, 0x3b, 0xd6, 0x26, 0x54, - 0x70, 0x97, 0xd0, 0x2f, 0xcb, 0xbf, 0x27, 0x5c, 0x02, 0x8e, 0xf0, 0xda, 0x20, 0xeb, 0x08, 0x47, - 0xdd, 0xed, 0x4f, 0x6b, 0xbf, 0x22, 0xb4, 0xc6, 0x68, 0x43, 0x5a, 0xdb, 0x82, 0x63, 0x9c, 0x63, - 0x7f, 0xe3, 0xfa, 0xab, 0xc2, 0xb1, 0x32, 0xea, 0xed, 0xf0, 0xe8, 0xbe, 0x0d, 0x0a, 0x9e, 0x3a, - 0x45, 0xc2, 0xea, 0x54, 0x1a, 0xaa, 0xd5, 0x03, 0xe7, 0x5f, 0xe3, 0x9c, 0x85, 0xc7, 0xf7, 0x32, - 0x5e, 0x67, 0x55, 0xb5, 0x08, 0xf3, 0x17, 0x20, 0x2f, 0x98, 0x37, 0x0d, 0x1b, 0x6b, 0x66, 0xcd, - 0xd0, 0x5f, 0xc6, 0xd5, 0x1e, 0x58, 0xff, 0x7a, 0x64, 0xa8, 0xb6, 0x03, 0xe4, 0x84, 0xf3, 0x32, - 0xe4, 0xbc, 0x5c, 0xa5, 0xa2, 0x37, 0x2c, 0xd3, 0x76, 0x63, 0x38, 0x7e, 0x5e, 0x8c, 0x94, 0x47, - 0xb7, 0x4c, 0xc9, 0x8a, 0x65, 0x60, 0x27, 0xcf, 0xbd, 0x9a, 0xe4, 0x17, 0x38, 0xa3, 0x11, 0x9f, - 0x8a, 0x3b, 0x0e, 0xcd, 0x6c, 0x58, 0xaa, 0xdd, 0x8b, 0xff, 0xfb, 0xfb, 0xc2, 0x71, 0x70, 0x12, - 0xee, 0x38, 0xdc, 0x03, 0x0b, 0x93, 0x68, 0xdf, 0x03, 0x87, 0x2f, 0x0a, 0xc7, 0x21, 0x68, 0x38, - 0x0b, 0x91, 0x30, 0xf4, 0xc0, 0xe2, 0x1f, 0x08, 0x16, 0x82, 0x86, 0xb0, 0x78, 0xce, 0x0f, 0xb4, - 0x36, 0xae, 0xe9, 0x8e, 0x6b, 0xb3, 0x34, 0xb9, 0x3b, 0xab, 0x7f, 0xf8, 0x9d, 0x70, 0x12, 0xa6, - 0x04, 0x48, 0x89, 0x27, 0xe2, 0xdb, 0xae, 0x74, 0x15, 0x15, 0x2f, 0xd8, 0x6f, 0x08, 0x4f, 0x14, - 0x20, 0x23, 0xb2, 0x05, 0x32, 0x44, 0xa2, 0x76, 0x8d, 0xac, 0x1d, 0x7a, 0x60, 0xf7, 0x8f, 0x22, - 0xc2, 0x6d, 0x0a, 0x5a, 0xc2, 0x33, 0x90, 0xff, 0x34, 0x8d, 0x7d, 0x7c, 0xd0, 0x93, 0x75, 0xfe, - 0xe3, 0x48, 0xfe, 0xb3, 0xcd, 0x28, 0x99, 0x0f, 0x19, 0x8b, 0xe4, 0x53, 0x28, 0xee, 0x9e, 0x51, - 0xfe, 0xa7, 0xbe, 0xc7, 0xfb, 0x1b, 0x4e, 0xa7, 0x8a, 0x2b, 0xc4, 0xc8, 0xc3, 0x49, 0x4f, 0x3c, - 0xb3, 0xf7, 0x7c, 0xcf, 0xb3, 0xf3, 0x50, 0xce, 0x53, 0xbc, 0x00, 0x23, 0xa1, 0x84, 0x27, 0x9e, - 0xd5, 0x7b, 0x39, 0xab, 0x6c, 0x30, 0xdf, 0x29, 0x9e, 0x85, 0x14, 0x49, 0x5e, 0xe2, 0xc9, 0xff, - 0x32, 0x27, 0xa7, 0xe8, 0xc5, 0x37, 0x43, 0x5a, 0x24, 0x2d, 0xf1, 0xa4, 0xef, 0xe3, 0xa4, 0x1e, - 0x09, 0x21, 0x17, 0x09, 0x4b, 0x3c, 0xf9, 0x5f, 0x11, 0xe4, 0x82, 0x84, 0x90, 0xf7, 0xae, 0xc2, - 0x2f, 0xfd, 0x74, 0x8a, 0x07, 0x1d, 0xa1, 0xbb, 0xf3, 0x30, 0xc4, 0x33, 0x95, 0x78, 0xea, 0x0f, - 0xf0, 0xc6, 0x05, 0x45, 0xf1, 0x09, 0x18, 0xe8, 0x51, 0xe1, 0x3f, 0xc3, 0x49, 0x19, 0x7e, 0x71, - 0x01, 0x86, 0x03, 0xd9, 0x49, 0x3c, 0xf9, 0x5f, 0xe3, 0xe4, 0x41, 0x2a, 0x22, 0x3a, 0xcf, 0x4e, - 0xe2, 0x19, 0x7c, 0x50, 0x88, 0xce, 0x29, 0x88, 0xda, 0x44, 0x62, 0x12, 0x4f, 0xfd, 0x21, 0xa1, - 0x75, 0x41, 0x52, 0x7c, 0x06, 0x32, 0x5e, 0xb0, 0x89, 0xa7, 0xff, 0x30, 0xa7, 0xf7, 0x69, 0x88, - 0x06, 0x02, 0xc1, 0x2e, 0x9e, 0xc5, 0x5f, 0x17, 0x1a, 0x08, 0x50, 0x91, 0x69, 0x14, 0x4d, 0x60, - 0xe2, 0x39, 0x7d, 0x44, 0x4c, 0xa3, 0x48, 0xfe, 0x42, 0x46, 0x93, 0xfa, 0xfc, 0x78, 0x16, 0x3f, - 0x2b, 0x46, 0x93, 0xe2, 0x13, 0x31, 0xa2, 0x19, 0x41, 0x3c, 0x8f, 0xbf, 0x21, 0xc4, 0x88, 0x24, - 0x04, 0xc5, 0x0d, 0x40, 0xad, 0xd9, 0x40, 0x3c, 0xbf, 0x8f, 0x72, 0x7e, 0xe3, 0x2d, 0xc9, 0x40, - 0xf1, 0x79, 0x38, 0xd6, 0x3e, 0x13, 0x88, 0xe7, 0xfa, 0xb1, 0xef, 0x45, 0xd6, 0x6e, 0xc1, 0x44, - 0xa0, 0xb8, 0xe5, 0x87, 0x94, 0x60, 0x16, 0x10, 0xcf, 0xf6, 0xb5, 0xef, 0x85, 0x1d, 0x77, 0x30, - 0x09, 0x28, 0xce, 0x03, 0xf8, 0x01, 0x38, 0x9e, 0xd7, 0xc7, 0x39, 0xaf, 0x00, 0x11, 0x99, 0x1a, - 0x3c, 0xfe, 0xc6, 0xd3, 0x5f, 0x17, 0x53, 0x83, 0x53, 0x90, 0xa9, 0x21, 0x42, 0x6f, 0x3c, 0xf5, - 0x27, 0xc4, 0xd4, 0x10, 0x24, 0xc4, 0xb2, 0x03, 0xd1, 0x2d, 0x9e, 0xc3, 0xa7, 0x84, 0x65, 0x07, - 0xa8, 0x8a, 0x6b, 0x30, 0xde, 0x12, 0x10, 0xe3, 0x59, 0xfd, 0x02, 0x67, 0x95, 0x8b, 0xc6, 0xc3, - 0x60, 0xf0, 0xe2, 0xc1, 0x30, 0x9e, 0xdb, 0xa7, 0x23, 0xc1, 0x8b, 0xc7, 0xc2, 0xe2, 0x79, 0x48, - 0x1b, 0xcd, 0x7a, 0x9d, 0x4c, 0x1e, 0xd4, 0xfd, 0x6e, 0x60, 0xfe, 0xbf, 0x7c, 0x9f, 0x6b, 0x47, - 0x10, 0x14, 0xcf, 0xc2, 0x00, 0x6e, 0xec, 0xe0, 0x6a, 0x1c, 0xe5, 0xb7, 0xbf, 0x2f, 0x1c, 0x26, - 0xc1, 0x2e, 0x3e, 0x03, 0xc0, 0xb6, 0x46, 0xe8, 0xf1, 0x60, 0x0c, 0xed, 0x7f, 0xfd, 0x3e, 0xbf, - 0x8c, 0xe3, 0x93, 0xf8, 0x0c, 0xd8, 0xd5, 0x9e, 0xee, 0x0c, 0xbe, 0x13, 0x66, 0x40, 0x47, 0xe4, - 0x29, 0x18, 0x7a, 0xd1, 0x31, 0x0d, 0x57, 0xad, 0xc5, 0x51, 0xff, 0x37, 0x4e, 0x2d, 0xf0, 0x89, - 0xc2, 0x1a, 0xa6, 0x8d, 0x5d, 0xb5, 0xe6, 0xc4, 0xd1, 0xfe, 0x77, 0x4e, 0xeb, 0x11, 0x10, 0x62, - 0x4d, 0x75, 0xdc, 0x5e, 0xfa, 0xfd, 0x47, 0x82, 0x58, 0x10, 0x10, 0xa1, 0xc9, 0xef, 0x7d, 0x7c, - 0x10, 0x47, 0xfb, 0x5d, 0x21, 0x34, 0xc7, 0x2f, 0xbe, 0x19, 0x32, 0xe4, 0x27, 0xbb, 0x61, 0x17, - 0x43, 0xfc, 0xc7, 0x9c, 0xd8, 0xa7, 0x20, 0x2d, 0x3b, 0x6e, 0xd5, 0xd5, 0xe3, 0x95, 0x7d, 0x93, - 0x8f, 0xb4, 0xc0, 0x2f, 0xce, 0xc3, 0xb0, 0xe3, 0x56, 0xab, 0x4d, 0x9e, 0x9f, 0xc6, 0x90, 0xff, - 0xc9, 0xf7, 0xbd, 0x2d, 0x0b, 0x8f, 0x86, 0x8c, 0xf6, 0xd5, 0x7d, 0xd7, 0x32, 0xe9, 0x11, 0x48, - 0x1c, 0x87, 0xef, 0x71, 0x0e, 0x01, 0x92, 0xe2, 0x02, 0x64, 0x49, 0x5f, 0x6c, 0x6c, 0x61, 0x7a, - 0x5e, 0x15, 0xc3, 0xe2, 0x4f, 0xb9, 0x02, 0x42, 0x44, 0xa5, 0x9f, 0xfc, 0xca, 0xeb, 0x53, 0xd2, - 0xd7, 0x5f, 0x9f, 0x92, 0xfe, 0xe0, 0xf5, 0x29, 0xe9, 0x43, 0xdf, 0x9c, 0x3a, 0xf2, 0xf5, 0x6f, - 0x4e, 0x1d, 0xf9, 0xdd, 0x6f, 0x4e, 0x1d, 0x69, 0xbf, 0x6d, 0x0c, 0x4b, 0xe6, 0x92, 0xc9, 0x36, - 0x8c, 0xdf, 0x2a, 0x87, 0xb6, 0x8b, 0x6b, 0xa6, 0xbf, 0x5b, 0xeb, 0x2d, 0x72, 0xe0, 0x4f, 0x25, - 0xb2, 0x60, 0x0e, 0xef, 0xe5, 0xaa, 0xc6, 0x41, 0x87, 0xb7, 0x3a, 0x85, 0xb6, 0x1b, 0xc3, 0xf2, - 0x9b, 0x20, 0x39, 0x6f, 0x1c, 0xa0, 0x13, 0xcc, 0xe7, 0x55, 0x9a, 0x76, 0x9d, 0xdf, 0xfc, 0x1a, - 0x22, 0xe5, 0x6d, 0xbb, 0x8e, 0x26, 0xfd, 0xeb, 0x99, 0xd2, 0xa9, 0x2c, 0xbf, 0x73, 0x59, 0x4c, - 0x7d, 0xf7, 0x53, 0xd3, 0x47, 0x4a, 0xfb, 0xd1, 0x1e, 0x7e, 0x29, 0xb6, 0x97, 0xe9, 0x79, 0xe3, - 0x80, 0x76, 0x72, 0x43, 0x7a, 0xeb, 0x00, 0x69, 0xc3, 0x11, 0x1b, 0xdb, 0x53, 0xd1, 0x8d, 0xed, - 0xe7, 0x71, 0xbd, 0x7e, 0xc9, 0x30, 0xaf, 0x1a, 0x5b, 0x04, 0x6d, 0x67, 0x90, 0x5d, 0x23, 0x86, - 0xbf, 0x9a, 0x80, 0xa9, 0x96, 0x3d, 0x6c, 0x3e, 0xf2, 0x9d, 0x1e, 0x2a, 0x15, 0x21, 0xbd, 0x28, - 0x0c, 0x2a, 0x0f, 0x43, 0x0e, 0xd6, 0x4c, 0xa3, 0xea, 0xd0, 0xae, 0x26, 0x15, 0x51, 0x24, 0x5d, - 0x35, 0x54, 0xc3, 0x74, 0xf8, 0xed, 0x48, 0x56, 0x28, 0xfd, 0xac, 0xd4, 0xdf, 0x38, 0x8e, 0x88, - 0x96, 0x44, 0x37, 0x4f, 0x77, 0xdb, 0xfb, 0xa7, 0x2a, 0xf0, 0xe4, 0x0f, 0xec, 0xf3, 0xf7, 0xaa, - 0x8e, 0x0f, 0x25, 0x60, 0x3a, 0xaa, 0x0e, 0x32, 0x8f, 0x1c, 0x57, 0x6d, 0x58, 0x9d, 0xf4, 0x71, - 0x1e, 0x32, 0x5b, 0x02, 0xa7, 0x6f, 0x85, 0xfc, 0x5c, 0x9f, 0x0a, 0x19, 0xf5, 0x9a, 0x12, 0x1a, - 0x79, 0x30, 0x5e, 0x23, 0x5e, 0x17, 0x0e, 0xa1, 0x92, 0x77, 0x27, 0xe1, 0x84, 0x66, 0x3a, 0x0d, - 0xd3, 0xa9, 0x30, 0x83, 0x67, 0x05, 0xae, 0x8c, 0x6c, 0xb0, 0xaa, 0x87, 0xe3, 0x90, 0x8b, 0x30, - 0x4a, 0x9d, 0x02, 0xdd, 0x08, 0xa6, 0x7e, 0x38, 0x36, 0x74, 0x7e, 0xf5, 0xdf, 0x0e, 0xd0, 0x49, - 0x34, 0xe2, 0x11, 0xd2, 0x9b, 0x2e, 0x5b, 0x30, 0xa9, 0x37, 0xac, 0x3a, 0xa6, 0x47, 0x62, 0x15, - 0xaf, 0x2e, 0x9e, 0xdf, 0xd7, 0x38, 0xbf, 0x09, 0x9f, 0x7c, 0x59, 0x50, 0x17, 0x57, 0x60, 0x5c, - 0xd5, 0x34, 0x6c, 0x85, 0x58, 0xc6, 0x38, 0x2c, 0x21, 0x60, 0x8e, 0x53, 0x7a, 0xdc, 0x4a, 0xcf, - 0x74, 0x1a, 0xdb, 0xb7, 0xde, 0x1b, 0x18, 0x34, 0x1b, 0xd7, 0xb0, 0xf1, 0xb0, 0x81, 0xdd, 0xab, - 0xa6, 0xbd, 0xcf, 0xd5, 0xfb, 0x30, 0x6b, 0x4a, 0x0c, 0xc2, 0x7b, 0x93, 0x30, 0xc5, 0x2a, 0xe6, - 0x76, 0x54, 0x07, 0xcf, 0x5d, 0x79, 0x74, 0x07, 0xbb, 0xea, 0xa3, 0x73, 0x9a, 0xa9, 0x8b, 0x69, - 0x3a, 0xc1, 0xc7, 0x85, 0xd4, 0xcf, 0xf2, 0xfa, 0x0e, 0x7e, 0x6a, 0x09, 0x52, 0x0b, 0xa6, 0x6e, - 0x10, 0x8b, 0xac, 0x62, 0xc3, 0x6c, 0x70, 0x2f, 0xc5, 0x0a, 0xe8, 0x6e, 0x18, 0x54, 0x1b, 0x66, - 0xd3, 0x70, 0xd9, 0x69, 0x5e, 0x69, 0xf8, 0x2b, 0x37, 0xa6, 0x8f, 0xfc, 0xde, 0x8d, 0xe9, 0xe4, - 0xb2, 0xe1, 0x2a, 0xbc, 0xaa, 0x98, 0x7a, 0xe3, 0x93, 0xd3, 0x92, 0xfc, 0x2c, 0x0c, 0x2d, 0x62, - 0xed, 0x30, 0xbc, 0x16, 0xb1, 0x16, 0xe1, 0xf5, 0x00, 0xa4, 0x97, 0x0d, 0x97, 0xdd, 0x20, 0xbe, - 0x13, 0x92, 0xba, 0xc1, 0x2e, 0xa5, 0x45, 0xda, 0x27, 0x70, 0x82, 0xba, 0x88, 0x35, 0x0f, 0xb5, - 0x8a, 0xb5, 0x28, 0x2a, 0x61, 0x4f, 0xe0, 0xa5, 0xc5, 0xdf, 0xfd, 0x4f, 0x53, 0x47, 0x5e, 0x79, - 0x7d, 0xea, 0x48, 0xc7, 0x91, 0x08, 0x46, 0x07, 0xae, 0x62, 0x3e, 0x04, 0x4e, 0x75, 0x7f, 0xce, - 0x0d, 0xcd, 0x85, 0xcf, 0xa6, 0xe0, 0x4e, 0xfa, 0x78, 0xc4, 0x6e, 0xe8, 0x86, 0x3b, 0xa7, 0xd9, - 0x07, 0x96, 0x4b, 0xc3, 0x89, 0xb9, 0xcb, 0x47, 0x61, 0xdc, 0xaf, 0x9e, 0x65, 0xd5, 0x1d, 0xc6, - 0x60, 0x17, 0x06, 0x36, 0x08, 0x1d, 0x51, 0x9c, 0x6b, 0xba, 0x6a, 0x9d, 0xbb, 0x0b, 0x56, 0x20, - 0x50, 0xf6, 0xe0, 0x24, 0xc1, 0xa0, 0xba, 0x78, 0x6b, 0x52, 0xc7, 0xea, 0x2e, 0xbb, 0xb7, 0x9b, - 0xa4, 0x21, 0x24, 0x4d, 0x00, 0xf4, 0x8a, 0xee, 0x24, 0x0c, 0xa8, 0x4d, 0x76, 0xe4, 0x9c, 0x24, - 0xb1, 0x85, 0x16, 0xe4, 0x4b, 0x30, 0xc4, 0x8f, 0xb9, 0x50, 0x0e, 0x92, 0xfb, 0xf8, 0x80, 0xb6, - 0x93, 0x55, 0xc8, 0x4f, 0x34, 0x0b, 0x03, 0x54, 0x78, 0xfe, 0x20, 0x21, 0x3f, 0xdb, 0x22, 0xfd, - 0x2c, 0x15, 0x52, 0x61, 0x68, 0xf2, 0xb3, 0x90, 0x5e, 0x34, 0x1b, 0xba, 0x61, 0x86, 0xb9, 0x65, - 0x18, 0x37, 0x2a, 0xb3, 0xd5, 0xe4, 0x63, 0xad, 0xb0, 0x02, 0x3a, 0x06, 0x83, 0xec, 0x1e, 0x37, - 0x3f, 0x36, 0xe7, 0x25, 0x79, 0x01, 0x86, 0x28, 0xef, 0x75, 0x0b, 0x21, 0xfe, 0x02, 0x88, 0x5f, - 0x18, 0xa7, 0x6e, 0x81, 0xb3, 0x4f, 0xf8, 0xc2, 0x22, 0x48, 0x55, 0x55, 0x57, 0xe5, 0xfd, 0xa6, - 0xbf, 0xe5, 0xa7, 0x21, 0xcd, 0x99, 0x38, 0xe8, 0x0c, 0x24, 0x4d, 0xcb, 0xe1, 0x07, 0xdf, 0x85, - 0x4e, 0x5d, 0x59, 0xb7, 0x4a, 0x29, 0x62, 0x25, 0x0a, 0x41, 0x2e, 0x29, 0x1d, 0xcd, 0xe2, 0xc9, - 0x80, 0x59, 0x04, 0x86, 0x3c, 0xf0, 0x93, 0x0d, 0x69, 0x8b, 0x39, 0x78, 0xc6, 0xf2, 0xa9, 0x04, - 0x4c, 0x05, 0x6a, 0xaf, 0x60, 0x9b, 0xac, 0xf5, 0x98, 0x45, 0x71, 0x6b, 0x41, 0x01, 0x21, 0x79, - 0x7d, 0x07, 0x73, 0x79, 0x33, 0x24, 0xe7, 0x2d, 0x0b, 0x15, 0x20, 0xcd, 0x0e, 0xb8, 0x4d, 0x66, - 0x2f, 0x29, 0xc5, 0x2b, 0x93, 0x3a, 0xc7, 0xdc, 0x75, 0xaf, 0xaa, 0xb6, 0xf7, 0xd4, 0x49, 0x94, - 0xe5, 0xa7, 0x20, 0xb3, 0x60, 0x1a, 0x0e, 0x36, 0x9c, 0x26, 0x0d, 0x44, 0x3b, 0x75, 0x53, 0xdb, - 0xe7, 0x1c, 0x58, 0x81, 0x28, 0x5c, 0xb5, 0x2c, 0x4a, 0x99, 0x52, 0xc8, 0x4f, 0x36, 0x2f, 0x4b, - 0x9b, 0x1d, 0x55, 0xf4, 0x54, 0xff, 0x2a, 0xe2, 0x9d, 0xf4, 0x74, 0xf4, 0xbf, 0x25, 0x38, 0xd9, - 0x3a, 0xa1, 0xf6, 0xf1, 0x81, 0xd3, 0xef, 0x7c, 0x7a, 0x01, 0x32, 0x1b, 0xf4, 0xbd, 0xf1, 0x25, - 0x7c, 0x80, 0x0a, 0x30, 0x84, 0xab, 0x67, 0xce, 0x9e, 0x7d, 0xf4, 0x29, 0x66, 0xed, 0x17, 0x8f, - 0x28, 0x02, 0x80, 0xa6, 0x20, 0xe3, 0x60, 0xcd, 0x3a, 0x73, 0xf6, 0xdc, 0xfe, 0xa3, 0xcc, 0xbc, - 0x2e, 0x1e, 0x51, 0x7c, 0x50, 0x31, 0x4d, 0x7a, 0xfd, 0xc6, 0xa7, 0xa6, 0xa5, 0xd2, 0x00, 0x24, - 0x9d, 0x66, 0xe3, 0xb6, 0xda, 0xc8, 0x6b, 0x03, 0x30, 0x13, 0xa4, 0xa4, 0xd1, 0xfa, 0x8a, 0x5a, - 0xd7, 0xab, 0xaa, 0xff, 0x52, 0x3c, 0x17, 0xd0, 0x01, 0xc5, 0x68, 0xaf, 0x82, 0x42, 0x57, 0x4d, - 0xca, 0xbf, 0x2e, 0x41, 0xf6, 0xb2, 0xe0, 0xbc, 0x89, 0x5d, 0x74, 0x1e, 0xc0, 0x6b, 0x49, 0x4c, - 0x9b, 0x3b, 0x66, 0xa3, 0x6d, 0xcd, 0x7a, 0x34, 0x4a, 0x00, 0x1d, 0x3d, 0x41, 0x0d, 0xd1, 0x32, - 0x1d, 0xfe, 0xfc, 0x25, 0x86, 0xd4, 0x43, 0x46, 0x0f, 0x01, 0xa2, 0x1e, 0xae, 0x72, 0xc5, 0x74, - 0x75, 0xa3, 0x56, 0xb1, 0xcc, 0xab, 0xfc, 0x51, 0x61, 0x52, 0xc9, 0xd1, 0x9a, 0xcb, 0xb4, 0x62, - 0x83, 0xc0, 0x89, 0xd0, 0x19, 0x8f, 0x0b, 0xc9, 0xad, 0xd4, 0x6a, 0xd5, 0xc6, 0x8e, 0xc3, 0x9d, - 0x98, 0x28, 0xa2, 0xf3, 0x30, 0x64, 0x35, 0x77, 0x2a, 0xc2, 0x63, 0x0c, 0x9f, 0x39, 0xd9, 0x6e, - 0xfe, 0x0b, 0xfb, 0xe0, 0x1e, 0x60, 0xd0, 0x6a, 0xee, 0x10, 0x6b, 0xb9, 0x0b, 0xb2, 0x6d, 0x84, - 0x19, 0xbe, 0xe2, 0xcb, 0x41, 0x9f, 0xb9, 0xf3, 0x1e, 0x54, 0x2c, 0x5b, 0x37, 0x6d, 0xdd, 0x3d, - 0xa0, 0xb7, 0x57, 0x92, 0x4a, 0x4e, 0x54, 0x6c, 0x70, 0xb8, 0xbc, 0x0f, 0x63, 0x9b, 0x34, 0xb7, - 0xf0, 0x25, 0x3f, 0xeb, 0xcb, 0x27, 0xc5, 0xcb, 0xd7, 0x51, 0xb2, 0x44, 0x8b, 0x64, 0xa5, 0xe7, - 0x3a, 0x5a, 0xe7, 0x13, 0xfd, 0x5b, 0x67, 0x38, 0xda, 0xfd, 0xd1, 0x89, 0xd0, 0xe4, 0xe4, 0xa9, - 0x64, 0xc0, 0x7d, 0xf5, 0x6a, 0x98, 0x71, 0x29, 0x75, 0xa1, 0x7b, 0x50, 0x2d, 0xc4, 0xb8, 0xd1, - 0x42, 0xec, 0x14, 0x92, 0x9f, 0x82, 0x91, 0x0d, 0xd5, 0x76, 0x37, 0xb1, 0x7b, 0x11, 0xab, 0x55, - 0x6c, 0x87, 0xa3, 0xee, 0x88, 0x88, 0xba, 0x08, 0x52, 0x34, 0xb4, 0xb2, 0xa8, 0x43, 0x7f, 0xcb, - 0x7b, 0x90, 0xa2, 0x37, 0xd8, 0xbc, 0x88, 0xcc, 0x29, 0x58, 0x44, 0x26, 0xbe, 0xf4, 0xc0, 0xc5, - 0x8e, 0x58, 0xd0, 0xd1, 0x02, 0x7a, 0x5c, 0xc4, 0xd5, 0x64, 0xf7, 0xb8, 0xca, 0x0d, 0x91, 0x47, - 0xd7, 0x3a, 0x0c, 0x95, 0x88, 0x2b, 0x5e, 0x5e, 0xf4, 0x04, 0x91, 0x7c, 0x41, 0xd0, 0x2a, 0x8c, - 0x59, 0xaa, 0xed, 0xd2, 0xab, 0xfb, 0x7b, 0xb4, 0x17, 0xdc, 0xd6, 0xa7, 0x5b, 0x67, 0x5e, 0xa8, - 0xb3, 0xbc, 0x95, 0x11, 0x2b, 0x08, 0x94, 0xff, 0x30, 0x05, 0x83, 0x5c, 0x19, 0x6f, 0x86, 0x21, - 0xae, 0x56, 0x6e, 0x9d, 0x77, 0xce, 0xb6, 0x06, 0xa6, 0x59, 0x2f, 0x80, 0x70, 0x7e, 0x82, 0x06, - 0xdd, 0x07, 0x69, 0x6d, 0x4f, 0xd5, 0x8d, 0x8a, 0x5e, 0x15, 0x69, 0xde, 0xeb, 0x37, 0xa6, 0x87, - 0x16, 0x08, 0x6c, 0x79, 0x51, 0x19, 0xa2, 0x95, 0xcb, 0x55, 0x92, 0x09, 0xec, 0x61, 0xbd, 0xb6, - 0xe7, 0xf2, 0x19, 0xc6, 0x4b, 0xe8, 0x49, 0x48, 0x11, 0x83, 0xe0, 0x0f, 0xbb, 0x0a, 0x2d, 0xc9, - 0xb6, 0xb7, 0xe2, 0x29, 0xa5, 0x49, 0xc3, 0x1f, 0xfa, 0xfd, 0x69, 0x49, 0xa1, 0x14, 0x68, 0x01, - 0x46, 0xea, 0xaa, 0xe3, 0x56, 0x68, 0x04, 0x23, 0xcd, 0x0f, 0x50, 0x16, 0x27, 0x5a, 0x15, 0xc2, - 0x15, 0xcb, 0x45, 0x1f, 0x26, 0x54, 0x0c, 0x54, 0x45, 0xa7, 0x20, 0x47, 0x99, 0x68, 0x66, 0xa3, - 0xa1, 0xbb, 0x2c, 0xb7, 0x1a, 0xa4, 0x7a, 0x1f, 0x25, 0xf0, 0x05, 0x0a, 0xa6, 0x19, 0xd6, 0x1d, - 0x90, 0xa1, 0x4f, 0x49, 0x28, 0x0a, 0xbb, 0x36, 0x99, 0x26, 0x00, 0x5a, 0x79, 0x3f, 0x8c, 0xf9, - 0xfe, 0x91, 0xa1, 0xa4, 0x19, 0x17, 0x1f, 0x4c, 0x11, 0x1f, 0x81, 0x49, 0x03, 0x5f, 0xa3, 0x17, - 0x39, 0x43, 0xd8, 0x19, 0x8a, 0x8d, 0x48, 0xdd, 0xe5, 0x30, 0xc5, 0xbd, 0x30, 0xaa, 0x09, 0xe5, - 0x33, 0x5c, 0xa0, 0xb8, 0x23, 0x1e, 0x94, 0xa2, 0x9d, 0x80, 0xb4, 0x6a, 0x59, 0x0c, 0x61, 0x98, - 0xfb, 0x47, 0xcb, 0xa2, 0x55, 0xa7, 0x61, 0x9c, 0xf6, 0xd1, 0xc6, 0x4e, 0xb3, 0xee, 0x72, 0x26, - 0x59, 0x8a, 0x33, 0x46, 0x2a, 0x14, 0x06, 0xa7, 0xb8, 0x77, 0xc3, 0x08, 0xbe, 0xa2, 0x57, 0xb1, - 0xa1, 0x61, 0x86, 0x37, 0x42, 0xf1, 0xb2, 0x02, 0x48, 0x91, 0x1e, 0x00, 0xcf, 0xef, 0x55, 0x84, - 0x4f, 0x1e, 0x65, 0xfc, 0x04, 0x7c, 0x9e, 0x81, 0xe5, 0x3c, 0xa4, 0x16, 0x55, 0x57, 0x25, 0x09, - 0x86, 0x7b, 0x8d, 0x05, 0x9a, 0xac, 0x42, 0x7e, 0xca, 0x6f, 0x24, 0x20, 0x75, 0xd9, 0x74, 0x31, - 0x7a, 0x2c, 0x90, 0x00, 0x8e, 0xb6, 0xb3, 0xe7, 0x4d, 0xbd, 0x66, 0xe0, 0xea, 0xaa, 0x53, 0x0b, - 0xbc, 0xfb, 0xf6, 0xcd, 0x29, 0x11, 0x32, 0xa7, 0x49, 0x18, 0xb0, 0xcd, 0xa6, 0x51, 0x15, 0x37, - 0x0e, 0x69, 0x01, 0x95, 0x21, 0xed, 0x59, 0x49, 0x2a, 0xce, 0x4a, 0xc6, 0x88, 0x95, 0x10, 0x1b, - 0xe6, 0x00, 0x65, 0x68, 0x87, 0x1b, 0x4b, 0x09, 0x32, 0x9e, 0xf3, 0xe2, 0xd6, 0xd6, 0x9b, 0xc1, - 0xfa, 0x64, 0x24, 0x98, 0x78, 0x63, 0xef, 0x29, 0x8f, 0x59, 0x5c, 0xce, 0xab, 0xe0, 0xda, 0x0b, - 0x99, 0x15, 0x7f, 0x83, 0x3e, 0x44, 0xfb, 0xe5, 0x9b, 0x15, 0x7b, 0x87, 0x7e, 0x12, 0x32, 0x8e, - 0x5e, 0x33, 0x54, 0xb7, 0x69, 0x63, 0x6e, 0x79, 0x3e, 0x40, 0xfe, 0x92, 0x04, 0x83, 0xcc, 0x92, - 0x03, 0x7a, 0x93, 0xda, 0xeb, 0x2d, 0xd1, 0x49, 0x6f, 0xc9, 0xc3, 0xeb, 0x6d, 0x1e, 0xc0, 0x13, - 0xc6, 0xe1, 0x4f, 0x83, 0xdb, 0x64, 0x0c, 0x4c, 0xc4, 0x4d, 0xbd, 0xc6, 0x27, 0x6a, 0x80, 0x48, - 0xfe, 0x8f, 0x12, 0x49, 0x62, 0x79, 0x3d, 0x9a, 0x87, 0x11, 0x21, 0x57, 0x65, 0xb7, 0xae, 0xd6, - 0xb8, 0xed, 0xdc, 0xd9, 0x51, 0xb8, 0x0b, 0x75, 0xb5, 0xa6, 0x0c, 0x73, 0x79, 0x48, 0xa1, 0xfd, - 0x38, 0x24, 0x3a, 0x8c, 0x43, 0x68, 0xe0, 0x93, 0x87, 0x1b, 0xf8, 0xd0, 0x10, 0xa5, 0xa2, 0x43, - 0xf4, 0xf9, 0x04, 0x5d, 0xcc, 0x58, 0xa6, 0xa3, 0xd6, 0x7f, 0x18, 0x33, 0xe2, 0x0e, 0xc8, 0x58, - 0x66, 0xbd, 0xc2, 0x6a, 0xd8, 0x4d, 0xdc, 0xb4, 0x65, 0xd6, 0x95, 0x96, 0x61, 0x1f, 0xb8, 0x45, - 0xd3, 0x65, 0xf0, 0x16, 0x68, 0x6d, 0x28, 0xaa, 0x35, 0x1b, 0xb2, 0x4c, 0x15, 0x3c, 0x96, 0x3d, - 0x42, 0x74, 0x40, 0x83, 0xa3, 0xd4, 0x1a, 0x7b, 0x99, 0xd8, 0x0c, 0x53, 0xe1, 0x78, 0x84, 0x82, - 0xb9, 0xfe, 0x76, 0xab, 0xe0, 0xa0, 0x59, 0x2a, 0x1c, 0x4f, 0xfe, 0x39, 0x09, 0x60, 0x85, 0x68, - 0x96, 0xf6, 0x97, 0x44, 0x21, 0x87, 0x8a, 0x50, 0x09, 0xb5, 0x3c, 0xd5, 0x69, 0xd0, 0x78, 0xfb, - 0x59, 0x27, 0x28, 0xf7, 0x02, 0x8c, 0xf8, 0xc6, 0xe8, 0x60, 0x21, 0xcc, 0x54, 0x97, 0xac, 0x7a, - 0x13, 0xbb, 0x4a, 0xf6, 0x4a, 0xa0, 0x24, 0xff, 0x33, 0x09, 0x32, 0x54, 0xa6, 0x55, 0xec, 0xaa, - 0xa1, 0x31, 0x94, 0x0e, 0x3f, 0x86, 0x77, 0x02, 0x30, 0x36, 0x8e, 0xfe, 0x32, 0xe6, 0x96, 0x95, - 0xa1, 0x90, 0x4d, 0xfd, 0x65, 0x8c, 0xce, 0x79, 0x0a, 0x4f, 0x76, 0x57, 0xb8, 0xc8, 0xba, 0xb9, - 0xda, 0x8f, 0xc3, 0x10, 0xfd, 0x94, 0xce, 0x35, 0x87, 0x27, 0xd2, 0x83, 0x46, 0xb3, 0xb1, 0x75, - 0xcd, 0x91, 0x5f, 0x84, 0xa1, 0xad, 0x6b, 0x6c, 0x6f, 0xe4, 0x0e, 0xc8, 0xd8, 0xa6, 0xc9, 0x63, - 0x32, 0xcb, 0x85, 0xd2, 0x04, 0x40, 0x43, 0x90, 0xd8, 0x0f, 0x48, 0xf8, 0xfb, 0x01, 0xfe, 0x86, - 0x46, 0xb2, 0xa7, 0x0d, 0x8d, 0xd3, 0xff, 0x4e, 0x82, 0xe1, 0x80, 0x7f, 0x40, 0x8f, 0xc2, 0xd1, - 0xd2, 0xca, 0xfa, 0xc2, 0xa5, 0xca, 0xf2, 0x62, 0xe5, 0xc2, 0xca, 0xfc, 0x92, 0xff, 0xd6, 0xa4, - 0x70, 0xec, 0xd5, 0xeb, 0x33, 0x28, 0x80, 0xbb, 0x6d, 0xec, 0x1b, 0xe6, 0x55, 0x03, 0xcd, 0xc1, - 0x64, 0x98, 0x64, 0xbe, 0xb4, 0x59, 0x5e, 0xdb, 0xca, 0x49, 0x85, 0xa3, 0xaf, 0x5e, 0x9f, 0x19, - 0x0f, 0x50, 0xcc, 0xef, 0x38, 0xd8, 0x70, 0x5b, 0x09, 0x16, 0xd6, 0x57, 0x57, 0x97, 0xb7, 0x72, - 0x89, 0x16, 0x02, 0xee, 0xb0, 0x1f, 0x80, 0xf1, 0x30, 0xc1, 0xda, 0xf2, 0x4a, 0x2e, 0x59, 0x40, - 0xaf, 0x5e, 0x9f, 0x19, 0x0d, 0x60, 0xaf, 0xe9, 0xf5, 0x42, 0xfa, 0xfd, 0x9f, 0x9e, 0x3a, 0xf2, - 0x4b, 0xbf, 0x38, 0x25, 0x91, 0x9e, 0x8d, 0x84, 0x7c, 0x04, 0x7a, 0x08, 0x8e, 0x6f, 0x2e, 0x2f, - 0xad, 0x95, 0x17, 0x2b, 0xab, 0x9b, 0x4b, 0x15, 0xf6, 0x8d, 0x0d, 0xaf, 0x77, 0x63, 0xaf, 0x5e, - 0x9f, 0x19, 0xe6, 0x5d, 0xea, 0x84, 0xbd, 0xa1, 0x94, 0x2f, 0xaf, 0x6f, 0x95, 0x73, 0x12, 0xc3, - 0xde, 0xb0, 0xf1, 0x15, 0xd3, 0x65, 0xdf, 0xda, 0x7a, 0x04, 0x4e, 0xb4, 0xc1, 0xf6, 0x3a, 0x36, - 0xfe, 0xea, 0xf5, 0x99, 0x91, 0x0d, 0x1b, 0xb3, 0xf9, 0x43, 0x29, 0x66, 0x21, 0xdf, 0x4a, 0xb1, - 0xbe, 0xb1, 0xbe, 0x39, 0xbf, 0x92, 0x9b, 0x29, 0xe4, 0x5e, 0xbd, 0x3e, 0x93, 0x15, 0xce, 0x90, - 0xe0, 0xfb, 0x3d, 0xbb, 0x9d, 0x2b, 0x9e, 0x3f, 0x79, 0x18, 0xee, 0xe1, 0x7b, 0x80, 0x8e, 0xab, - 0xee, 0xeb, 0x46, 0xcd, 0xdb, 0x69, 0xe5, 0x65, 0xbe, 0xf2, 0x39, 0xc6, 0x37, 0x5b, 0x05, 0xb4, - 0xeb, 0x7e, 0x6b, 0xa1, 0xf3, 0xc9, 0x52, 0x21, 0xe6, 0xf0, 0x25, 0x7e, 0xe9, 0xd4, 0x79, 0x6f, - 0xbe, 0x10, 0xb3, 0x63, 0x5c, 0xe8, 0xba, 0xb8, 0x93, 0x3f, 0x20, 0xc1, 0xe8, 0x45, 0xdd, 0x71, - 0x4d, 0x5b, 0xd7, 0xd4, 0x3a, 0x7d, 0x61, 0x72, 0xae, 0x57, 0xdf, 0x1a, 0x99, 0xea, 0xcf, 0xc0, - 0xe0, 0x15, 0xb5, 0xce, 0x9c, 0x5a, 0x92, 0x7e, 0x10, 0xa3, 0xbd, 0xfa, 0x7c, 0xd7, 0x26, 0x18, - 0x30, 0x32, 0xf9, 0x57, 0x12, 0x30, 0x46, 0x27, 0x83, 0xc3, 0x3e, 0x95, 0x44, 0xd6, 0x58, 0x25, - 0x48, 0xd9, 0xaa, 0xcb, 0x37, 0x0d, 0x4b, 0xb3, 0x7c, 0xe7, 0xf7, 0xbe, 0xf8, 0xdd, 0xdc, 0xd9, - 0x45, 0xac, 0x29, 0x94, 0x16, 0xbd, 0x1d, 0xd2, 0x0d, 0xf5, 0x5a, 0x85, 0xf2, 0x61, 0x2b, 0x97, - 0xf9, 0xfe, 0xf8, 0xdc, 0xbc, 0x31, 0x3d, 0x76, 0xa0, 0x36, 0xea, 0x45, 0x59, 0xf0, 0x91, 0x95, - 0xa1, 0x86, 0x7a, 0x8d, 0x88, 0x88, 0x2c, 0x18, 0x23, 0x50, 0x6d, 0x4f, 0x35, 0x6a, 0x98, 0x35, - 0x42, 0xb7, 0x40, 0x4b, 0x17, 0xfb, 0x6e, 0xe4, 0x98, 0xdf, 0x48, 0x80, 0x9d, 0xac, 0x8c, 0x34, - 0xd4, 0x6b, 0x0b, 0x14, 0x40, 0x5a, 0x2c, 0xa6, 0x3f, 0xfa, 0xc9, 0xe9, 0x23, 0x74, 0x37, 0xfd, - 0x1b, 0x12, 0x80, 0xaf, 0x31, 0xf4, 0x76, 0xc8, 0x69, 0x5e, 0x89, 0xd2, 0x3a, 0x7c, 0x0c, 0xef, - 0xef, 0x34, 0x16, 0x11, 0x7d, 0xb3, 0xd8, 0xfc, 0xf5, 0x1b, 0xd3, 0x92, 0x32, 0xa6, 0x45, 0x86, - 0xe2, 0x6d, 0x30, 0xdc, 0xb4, 0xaa, 0xaa, 0x8b, 0x2b, 0x74, 0x1d, 0x97, 0x88, 0x8d, 0xf3, 0x53, - 0x84, 0xd7, 0xcd, 0x1b, 0xd3, 0x88, 0x75, 0x2b, 0x40, 0x2c, 0xd3, 0xe8, 0x0f, 0x0c, 0x42, 0x08, - 0x02, 0x7d, 0xfa, 0xaa, 0x04, 0xc3, 0x8b, 0x81, 0x9b, 0x5e, 0x79, 0x18, 0x6a, 0x98, 0x86, 0xbe, - 0xcf, 0xed, 0x31, 0xa3, 0x88, 0x22, 0x2a, 0x40, 0x9a, 0x3d, 0xba, 0x73, 0x0f, 0xc4, 0x56, 0xa8, - 0x28, 0x13, 0xaa, 0xab, 0x78, 0xc7, 0xd1, 0xc5, 0x68, 0x28, 0xa2, 0x88, 0x2e, 0x40, 0xce, 0xc1, - 0x5a, 0xd3, 0xd6, 0xdd, 0x83, 0x8a, 0x66, 0x1a, 0xae, 0xaa, 0xb9, 0xec, 0xf9, 0x56, 0xe9, 0x8e, - 0x9b, 0x37, 0xa6, 0x8f, 0x33, 0x59, 0xa3, 0x18, 0xb2, 0x32, 0x26, 0x40, 0x0b, 0x0c, 0x42, 0x5a, - 0xa8, 0x62, 0x57, 0xd5, 0xeb, 0x4e, 0x9e, 0x1d, 0x0c, 0x89, 0x62, 0xa0, 0x2f, 0x9f, 0x1b, 0x0a, - 0x6e, 0x6c, 0x5d, 0x80, 0x9c, 0x69, 0x61, 0x3b, 0x94, 0x88, 0x4a, 0xd1, 0x96, 0xa3, 0x18, 0xb2, - 0x32, 0x26, 0x40, 0x22, 0x49, 0x75, 0xc9, 0x30, 0x8b, 0x85, 0xa2, 0xd5, 0xdc, 0xf1, 0xf7, 0xc3, - 0x26, 0x5b, 0x46, 0x63, 0xde, 0x38, 0x28, 0x3d, 0xe6, 0x73, 0x8f, 0xd2, 0xc9, 0x5f, 0xfb, 0xc2, - 0xc3, 0x93, 0xdc, 0x34, 0xfc, 0xfd, 0xa9, 0x4b, 0xf8, 0x80, 0x0c, 0x3f, 0x47, 0xdd, 0xa0, 0x98, - 0x24, 0xed, 0x7c, 0x51, 0xd5, 0xeb, 0xe2, 0x19, 0xb2, 0xc2, 0x4b, 0xa8, 0x08, 0x83, 0x8e, 0xab, - 0xba, 0x4d, 0x87, 0x7f, 0x1c, 0x4c, 0xee, 0x64, 0x6a, 0x25, 0xd3, 0xa8, 0x6e, 0x52, 0x4c, 0x85, - 0x53, 0xa0, 0x0b, 0x30, 0xe8, 0x9a, 0xfb, 0xd8, 0xe0, 0x2a, 0xec, 0x6b, 0x7e, 0xd3, 0x73, 0x2a, - 0x46, 0x4d, 0x34, 0x52, 0xc5, 0x75, 0x5c, 0x63, 0x69, 0xd5, 0x9e, 0x4a, 0x56, 0x1f, 0xf4, 0x1b, - 0x61, 0xa5, 0xe5, 0xbe, 0x27, 0x21, 0xd7, 0x54, 0x94, 0x9f, 0xac, 0x8c, 0x79, 0xa0, 0x4d, 0x0a, - 0x41, 0x97, 0x42, 0x57, 0x12, 0xf9, 0x87, 0xf4, 0xee, 0xee, 0xd4, 0xfd, 0x80, 0x4d, 0x8b, 0xfd, - 0x89, 0xe0, 0x85, 0xc6, 0x0b, 0x90, 0x6b, 0x1a, 0x3b, 0xa6, 0x41, 0xdf, 0x0a, 0xf2, 0xfc, 0x9e, - 0xac, 0xef, 0x92, 0x41, 0xe3, 0x88, 0x62, 0xc8, 0xca, 0x98, 0x07, 0xba, 0xc8, 0x56, 0x01, 0x55, - 0x18, 0xf5, 0xb1, 0xe8, 0x44, 0xcd, 0xc4, 0x4e, 0xd4, 0xbb, 0xf8, 0x44, 0x3d, 0x1a, 0x6d, 0xc5, - 0x9f, 0xab, 0x23, 0x1e, 0x90, 0x90, 0xa1, 0x8b, 0x00, 0xbe, 0x7b, 0xa0, 0xfb, 0x14, 0xc3, 0x9d, - 0x07, 0xde, 0xf7, 0x31, 0x62, 0xbd, 0xe7, 0xd3, 0xa2, 0x77, 0xc2, 0x44, 0x43, 0x37, 0x2a, 0x0e, - 0xae, 0xef, 0x56, 0xb8, 0x82, 0x09, 0x4b, 0xfa, 0xa9, 0x97, 0xd2, 0x4a, 0x7f, 0xf6, 0x70, 0xf3, - 0xc6, 0x74, 0x81, 0xbb, 0xd0, 0x56, 0x96, 0xb2, 0x32, 0xde, 0xd0, 0x8d, 0x4d, 0x5c, 0xdf, 0x5d, - 0xf4, 0x60, 0xc5, 0xec, 0xfb, 0x3f, 0x39, 0x7d, 0x84, 0x4f, 0xd7, 0x23, 0xf2, 0x39, 0xba, 0x77, - 0xce, 0xa7, 0x19, 0x76, 0xc8, 0x9a, 0x44, 0x15, 0x05, 0xba, 0xa3, 0x91, 0x51, 0x7c, 0x00, 0x9b, - 0xe6, 0xaf, 0xfc, 0x87, 0x19, 0x49, 0xfe, 0x9c, 0x04, 0x83, 0x8b, 0x97, 0x37, 0x54, 0xdd, 0x46, - 0xcb, 0x30, 0xee, 0x5b, 0x4e, 0x78, 0x92, 0x9f, 0xbc, 0x79, 0x63, 0x3a, 0x1f, 0x35, 0x2e, 0x6f, - 0x96, 0xfb, 0x06, 0x2c, 0xa6, 0xf9, 0x72, 0xa7, 0x85, 0x6b, 0x88, 0x55, 0x0b, 0x8a, 0xdc, 0xba, - 0xac, 0x8d, 0x74, 0xb3, 0x0c, 0x43, 0x4c, 0x5a, 0x07, 0x15, 0x61, 0xc0, 0x22, 0x3f, 0xf8, 0xc1, - 0xc0, 0x54, 0x47, 0xe3, 0xa5, 0xf8, 0xde, 0x46, 0x26, 0x21, 0x91, 0x3f, 0x9c, 0x00, 0x58, 0xbc, - 0x7c, 0x79, 0xcb, 0xd6, 0xad, 0x3a, 0x76, 0x6f, 0x65, 0xcf, 0xb7, 0xe0, 0x68, 0x60, 0x95, 0x64, - 0x6b, 0x91, 0xde, 0xcf, 0xdc, 0xbc, 0x31, 0x7d, 0x32, 0xda, 0xfb, 0x00, 0x9a, 0xac, 0x4c, 0xf8, - 0xeb, 0x25, 0x5b, 0x6b, 0xcb, 0xb5, 0xea, 0xb8, 0x1e, 0xd7, 0x64, 0x67, 0xae, 0x01, 0xb4, 0x20, - 0xd7, 0x45, 0xc7, 0x6d, 0xaf, 0xda, 0x4d, 0x18, 0xf6, 0x55, 0xe2, 0xa0, 0x45, 0x48, 0xbb, 0xfc, - 0x37, 0xd7, 0xb0, 0xdc, 0x59, 0xc3, 0x82, 0x8c, 0x6b, 0xd9, 0xa3, 0x94, 0xff, 0x4c, 0x02, 0xf0, - 0x6d, 0xf6, 0xc7, 0xd3, 0xc4, 0x88, 0x2b, 0xe7, 0x8e, 0x37, 0x79, 0xa8, 0x54, 0x8d, 0x53, 0x47, - 0xf4, 0xf9, 0xd3, 0x09, 0x98, 0xd8, 0x16, 0x9e, 0xe7, 0xc7, 0x5e, 0x07, 0x1b, 0x30, 0x84, 0x0d, - 0xd7, 0xd6, 0xa9, 0x12, 0xc8, 0x68, 0x3f, 0xd2, 0x69, 0xb4, 0xdb, 0xf4, 0x89, 0x7e, 0xec, 0x46, - 0x6c, 0xba, 0x73, 0x36, 0x11, 0x6d, 0x7c, 0x30, 0x09, 0xf9, 0x4e, 0x94, 0x68, 0x01, 0xc6, 0x34, - 0x1b, 0x53, 0x40, 0x25, 0xb8, 0xf3, 0x57, 0x2a, 0xf8, 0x99, 0x65, 0x04, 0x41, 0x56, 0x46, 0x05, - 0x84, 0x47, 0x8f, 0x1a, 0x90, 0xb4, 0x8f, 0x98, 0x1d, 0xc1, 0xea, 0x31, 0xcf, 0x93, 0x79, 0xf8, - 0x10, 0x8d, 0x84, 0x19, 0xb0, 0xf8, 0x31, 0xea, 0x43, 0x69, 0x00, 0x79, 0x09, 0xc6, 0x74, 0x43, - 0x77, 0x75, 0xb5, 0x5e, 0xd9, 0x51, 0xeb, 0xaa, 0xa1, 0x1d, 0x26, 0x6b, 0x66, 0x2e, 0x9f, 0x37, - 0x1b, 0x61, 0x27, 0x2b, 0xa3, 0x1c, 0x52, 0x62, 0x00, 0x74, 0x11, 0x86, 0x44, 0x53, 0xa9, 0x43, - 0x65, 0x1b, 0x82, 0x3c, 0x90, 0xe0, 0xfd, 0x4c, 0x12, 0xc6, 0x15, 0x5c, 0xfd, 0xff, 0x43, 0xd1, - 0xdf, 0x50, 0xac, 0x02, 0xb0, 0xe9, 0x4e, 0x1c, 0xec, 0x21, 0x46, 0x83, 0x38, 0x8c, 0x0c, 0xe3, - 0xb0, 0xe8, 0xb8, 0x81, 0xf1, 0xb8, 0x91, 0x80, 0x6c, 0x70, 0x3c, 0xfe, 0x82, 0x46, 0x25, 0xb4, - 0xec, 0x7b, 0xa2, 0x14, 0xff, 0x44, 0x68, 0x07, 0x4f, 0xd4, 0x62, 0xbd, 0xdd, 0x5d, 0xd0, 0xff, - 0x48, 0xc0, 0xe0, 0x86, 0x6a, 0xab, 0x0d, 0x07, 0x69, 0x2d, 0x99, 0xa6, 0xd8, 0x7e, 0x6c, 0xf9, - 0x10, 0x34, 0xdf, 0xed, 0x88, 0x49, 0x34, 0x3f, 0xda, 0x26, 0xd1, 0xfc, 0x09, 0x18, 0x25, 0xcb, - 0xe1, 0xc0, 0x15, 0x06, 0xa2, 0xed, 0x91, 0xd2, 0x09, 0x9f, 0x4b, 0xb8, 0x9e, 0xad, 0x96, 0x2f, - 0x07, 0xef, 0x30, 0x0c, 0x13, 0x0c, 0xdf, 0x31, 0x13, 0xf2, 0x63, 0xfe, 0xb2, 0x34, 0x50, 0x29, - 0x2b, 0xd0, 0x50, 0xaf, 0x95, 0x59, 0x01, 0xad, 0x00, 0xda, 0xf3, 0x76, 0x46, 0x2a, 0xbe, 0x3a, - 0x09, 0xfd, 0x9d, 0x37, 0x6f, 0x4c, 0x9f, 0x60, 0xf4, 0xad, 0x38, 0xb2, 0x32, 0xee, 0x03, 0x05, - 0xb7, 0xc7, 0x01, 0x48, 0xbf, 0x2a, 0xec, 0xfa, 0x1c, 0x5b, 0xee, 0x1c, 0xbd, 0x79, 0x63, 0x7a, - 0x9c, 0x71, 0xf1, 0xeb, 0x64, 0x25, 0x43, 0x0a, 0x8b, 0xe4, 0x77, 0xc0, 0xb2, 0x3f, 0x2d, 0x01, - 0xf2, 0x5d, 0xbe, 0x82, 0x1d, 0x8b, 0xac, 0xcf, 0x48, 0x22, 0x1e, 0xc8, 0x9a, 0xa5, 0xee, 0x89, - 0xb8, 0x4f, 0x2f, 0x12, 0xf1, 0xc0, 0x4c, 0x79, 0xca, 0x77, 0x8f, 0x09, 0x3e, 0x8e, 0x6d, 0xee, - 0x1a, 0xce, 0x2e, 0x98, 0xba, 0xa0, 0x6e, 0xf1, 0x87, 0x47, 0xe4, 0x7f, 0x25, 0xc1, 0x89, 0x16, - 0x8b, 0xf2, 0x84, 0xfd, 0x4b, 0x80, 0xec, 0x40, 0x25, 0xff, 0xde, 0x1b, 0x13, 0xba, 0x6f, 0x03, - 0x1d, 0xb7, 0x5b, 0xfc, 0xee, 0xad, 0xf3, 0xf0, 0xec, 0xb2, 0xe2, 0x3f, 0x95, 0x60, 0x32, 0xd8, - 0xbc, 0xd7, 0x91, 0x35, 0xc8, 0x06, 0x5b, 0xe7, 0x5d, 0xb8, 0xa7, 0x97, 0x2e, 0x70, 0xe9, 0x43, - 0xf4, 0xe8, 0x39, 0x7f, 0xba, 0xb2, 0xbd, 0xb3, 0x47, 0x7b, 0xd6, 0x86, 0x90, 0x29, 0x3a, 0x6d, - 0x53, 0x74, 0x3c, 0xfe, 0x8f, 0x04, 0xa9, 0x0d, 0xd3, 0xac, 0x23, 0x13, 0xc6, 0x0d, 0xd3, 0xad, - 0x10, 0xcb, 0xc2, 0xd5, 0x0a, 0x5f, 0x74, 0x33, 0x3f, 0xb8, 0xd0, 0x9f, 0x92, 0xbe, 0x7d, 0x63, - 0xba, 0x95, 0x95, 0x32, 0x66, 0x98, 0x6e, 0x89, 0x42, 0xb6, 0xd8, 0x92, 0xfc, 0x9d, 0x30, 0x12, - 0x6e, 0x8c, 0x79, 0xc9, 0xe7, 0xfb, 0x6e, 0x2c, 0xcc, 0xe6, 0xe6, 0x8d, 0xe9, 0x49, 0x7f, 0xc6, - 0x78, 0x60, 0x59, 0xc9, 0xee, 0x04, 0x5a, 0x67, 0xd7, 0xbb, 0xbe, 0xfb, 0xc9, 0x69, 0xe9, 0xf4, - 0x17, 0x25, 0x00, 0x7f, 0xe7, 0x01, 0x3d, 0x04, 0xc7, 0x4b, 0xeb, 0x6b, 0x8b, 0x95, 0xcd, 0xad, - 0xf9, 0xad, 0xed, 0xcd, 0xca, 0xf6, 0xda, 0xe6, 0x46, 0x79, 0x61, 0xf9, 0xc2, 0x72, 0x79, 0xd1, - 0xdf, 0x1e, 0x77, 0x2c, 0xac, 0xe9, 0xbb, 0x3a, 0xae, 0xa2, 0xfb, 0x60, 0x32, 0x8c, 0x4d, 0x4a, - 0xe5, 0xc5, 0x9c, 0x54, 0xc8, 0xbe, 0x7a, 0x7d, 0x26, 0xcd, 0x72, 0x31, 0x5c, 0x45, 0xa7, 0xe0, - 0x68, 0x2b, 0xde, 0xf2, 0xda, 0x52, 0x2e, 0x51, 0x18, 0x79, 0xf5, 0xfa, 0x4c, 0xc6, 0x4b, 0xda, - 0x90, 0x0c, 0x28, 0x88, 0xc9, 0xf9, 0x25, 0x0b, 0xf0, 0xea, 0xf5, 0x99, 0x41, 0xa6, 0xc0, 0x42, - 0xea, 0xfd, 0x9f, 0x9e, 0x3a, 0x52, 0xba, 0xd0, 0x71, 0x03, 0xfc, 0xa1, 0xae, 0xba, 0xbb, 0xe6, - 0x6d, 0x6a, 0x87, 0x77, 0xbd, 0xff, 0x78, 0xa8, 0xe3, 0xae, 0x77, 0x0d, 0x1b, 0xd8, 0xd1, 0x9d, - 0x43, 0xed, 0x7a, 0xf7, 0xb4, 0x93, 0x2e, 0xff, 0xce, 0x00, 0x64, 0x97, 0x58, 0x2b, 0x64, 0x20, - 0x30, 0x7a, 0x13, 0x0c, 0x5a, 0x34, 0x8c, 0x78, 0xc7, 0x68, 0x1d, 0x0c, 0x9e, 0x05, 0x1b, 0xef, - 0x2e, 0x17, 0x0b, 0x3d, 0x0e, 0xbf, 0xcc, 0xc1, 0xee, 0x98, 0xf9, 0xb7, 0xa6, 0xb2, 0x7d, 0xed, - 0xf7, 0xb0, 0x9c, 0x85, 0x6f, 0xad, 0x44, 0xf9, 0xc9, 0xec, 0x5e, 0xc8, 0x16, 0x81, 0xb0, 0xdb, - 0x61, 0xef, 0x95, 0xe0, 0x28, 0xc5, 0xf2, 0x03, 0x31, 0xc5, 0x14, 0xc9, 0xfe, 0xe9, 0x4e, 0x5d, - 0x58, 0x51, 0x1d, 0xff, 0xae, 0x07, 0xbb, 0xcf, 0x75, 0x0f, 0x0f, 0x84, 0x27, 0x03, 0x8d, 0x47, - 0xd9, 0xca, 0xca, 0x44, 0xbd, 0x85, 0xd2, 0x41, 0x4b, 0xa1, 0x0b, 0x7d, 0xa9, 0xfe, 0xb6, 0xda, - 0x83, 0x97, 0xfb, 0x9e, 0x85, 0x61, 0xdf, 0x97, 0x38, 0xfc, 0xff, 0x53, 0xf4, 0x1e, 0x3b, 0x82, - 0xc4, 0xe8, 0x7d, 0x12, 0x1c, 0xf5, 0xa3, 0x79, 0x90, 0x2d, 0xfb, 0x3f, 0x1e, 0x0f, 0xf6, 0xb1, - 0x10, 0x8a, 0x2a, 0xa7, 0x2d, 0x5f, 0x59, 0x99, 0x6c, 0xb6, 0x92, 0x92, 0x25, 0xd8, 0x48, 0xd0, - 0xb3, 0x3a, 0x79, 0xf1, 0xa9, 0xba, 0xde, 0x5d, 0x73, 0x98, 0x01, 0xfb, 0xdf, 0x02, 0x96, 0x69, - 0xbb, 0xb8, 0x4a, 0x37, 0xe4, 0xd2, 0x8a, 0x57, 0x96, 0xd7, 0x00, 0xb5, 0x0e, 0x6e, 0xf4, 0x02, - 0x63, 0xc6, 0xbf, 0xc0, 0x38, 0x09, 0x03, 0xc1, 0x2b, 0x7e, 0xac, 0x50, 0x4c, 0xbf, 0x9f, 0x87, - 0xcf, 0x5b, 0x3e, 0xe7, 0xff, 0x45, 0x02, 0x4e, 0x07, 0x8f, 0x87, 0x5e, 0x6a, 0x62, 0xfb, 0xc0, - 0x9b, 0xa2, 0x96, 0x5a, 0xd3, 0x8d, 0xe0, 0x1b, 0xa0, 0x13, 0xc1, 0x80, 0x4f, 0x71, 0x85, 0x9e, - 0x64, 0x03, 0x86, 0x37, 0xd4, 0x1a, 0x56, 0xf0, 0x4b, 0x4d, 0xec, 0xb8, 0x6d, 0x2e, 0x99, 0x1f, - 0x83, 0x41, 0x73, 0x77, 0x57, 0x1c, 0x69, 0xa7, 0x14, 0x5e, 0x22, 0x5d, 0xae, 0xeb, 0x0d, 0x9d, - 0xdd, 0x06, 0x4b, 0x29, 0xac, 0x80, 0xa6, 0x61, 0x58, 0x33, 0x9b, 0x06, 0x9f, 0x71, 0xf9, 0x94, - 0xf8, 0x00, 0x44, 0xd3, 0x60, 0x33, 0x4e, 0x7e, 0x06, 0xb2, 0xac, 0x3d, 0x1e, 0x71, 0x4f, 0x40, - 0x9a, 0x5e, 0xa7, 0xf2, 0x5b, 0x1d, 0x22, 0xe5, 0x4b, 0xec, 0x42, 0x3a, 0xe3, 0xc2, 0x1a, 0x66, - 0x85, 0x52, 0xa9, 0xa3, 0x2a, 0x4f, 0xc5, 0xbb, 0x06, 0xa6, 0x28, 0x4f, 0x8d, 0xbf, 0x39, 0x00, - 0x47, 0xf9, 0x09, 0x9d, 0x6a, 0xe9, 0x73, 0x7b, 0xae, 0x2b, 0x5e, 0x09, 0x01, 0x4f, 0x75, 0x55, - 0x4b, 0x97, 0x0f, 0x20, 0x75, 0xd1, 0x75, 0x2d, 0x74, 0x1a, 0x06, 0xec, 0x66, 0x1d, 0x8b, 0x1d, - 0x1f, 0x6f, 0x4f, 0x5e, 0xb5, 0xf4, 0x59, 0x82, 0xa0, 0x34, 0xeb, 0x58, 0x61, 0x28, 0xa8, 0x0c, - 0xd3, 0xbb, 0xcd, 0x7a, 0xfd, 0xa0, 0x52, 0xc5, 0xf4, 0x7f, 0xf7, 0x78, 0x5f, 0xbf, 0xc7, 0xd7, - 0x2c, 0x55, 0x7c, 0x43, 0x8f, 0xe8, 0xe6, 0x24, 0x45, 0x5b, 0xa4, 0x58, 0xe2, 0xcb, 0xf7, 0x65, - 0x81, 0x23, 0xff, 0x5e, 0x02, 0xd2, 0x82, 0x35, 0xbd, 0x21, 0x8e, 0xeb, 0x58, 0x73, 0x4d, 0x71, - 0x62, 0xe2, 0x95, 0x11, 0x82, 0x64, 0x8d, 0x0f, 0x51, 0xe6, 0xe2, 0x11, 0x85, 0x14, 0x08, 0xcc, - 0xbb, 0xb7, 0x4f, 0x60, 0x56, 0x93, 0x8c, 0x5a, 0xca, 0x32, 0xc5, 0xd2, 0xec, 0xe2, 0x11, 0x85, - 0x96, 0x50, 0x1e, 0x06, 0xc9, 0xcc, 0x70, 0xd9, 0x87, 0x09, 0x09, 0x9c, 0x97, 0xd1, 0x31, 0x18, - 0xb0, 0x54, 0x57, 0x63, 0x57, 0xea, 0x48, 0x05, 0x2b, 0xa2, 0x27, 0x60, 0x90, 0x3d, 0x08, 0x8d, - 0xfe, 0x63, 0x0c, 0xa2, 0x0c, 0xf6, 0xe5, 0x2d, 0x22, 0xf7, 0x86, 0xea, 0xba, 0xd8, 0x36, 0x08, - 0x43, 0x86, 0x8e, 0x10, 0xa4, 0x76, 0xcc, 0xea, 0x01, 0xff, 0x67, 0x1d, 0xf4, 0x37, 0xff, 0xef, - 0x00, 0xd4, 0x1e, 0x2a, 0xb4, 0x92, 0xfd, 0x8f, 0xa2, 0xac, 0x00, 0x96, 0x08, 0x52, 0x19, 0x26, - 0xd4, 0x6a, 0x55, 0x67, 0xff, 0x37, 0xa3, 0xb2, 0xa3, 0x53, 0x0f, 0xe1, 0xd0, 0xff, 0x40, 0xd5, - 0x69, 0x2c, 0x90, 0x4f, 0x50, 0xe2, 0xf8, 0xa5, 0x0c, 0x0c, 0x59, 0x4c, 0x28, 0xf9, 0x3c, 0x8c, - 0xb7, 0x48, 0x4a, 0xe4, 0xdb, 0xd7, 0x8d, 0xaa, 0x78, 0xcc, 0x40, 0x7e, 0x13, 0x18, 0xfd, 0x7a, - 0x1e, 0x3b, 0x8b, 0xa2, 0xbf, 0x4b, 0xef, 0xee, 0xfc, 0xf0, 0x6b, 0x34, 0xf0, 0xf0, 0x4b, 0xb5, - 0xf4, 0x52, 0x86, 0xf2, 0xe7, 0xcf, 0xbd, 0xe6, 0x79, 0x05, 0x7b, 0xea, 0x35, 0x6b, 0xda, 0x35, - 0x12, 0xa5, 0x45, 0xf4, 0x25, 0x55, 0xaa, 0xa5, 0x3b, 0xd4, 0x1c, 0xfd, 0xaf, 0xf9, 0x39, 0xe7, - 0x03, 0xbf, 0xe9, 0x23, 0xb0, 0xd4, 0xd2, 0xfc, 0xc6, 0xb2, 0x67, 0xc7, 0x5f, 0x4e, 0xc0, 0xc9, - 0x80, 0x1d, 0x07, 0x90, 0x5b, 0xcd, 0xb9, 0xd0, 0xde, 0xe2, 0x7b, 0x78, 0xfc, 0x75, 0x09, 0x52, - 0x04, 0x1f, 0xc5, 0x7c, 0xbb, 0x3f, 0xff, 0xab, 0x5f, 0xfb, 0x27, 0x72, 0xf8, 0xd4, 0x2a, 0x34, - 0x2a, 0x94, 0x49, 0xe9, 0x7d, 0xbd, 0xeb, 0x2f, 0xe7, 0x7f, 0xc8, 0xd0, 0xb9, 0x75, 0x6a, 0x8c, - 0xea, 0xf0, 0x5b, 0x67, 0x41, 0xee, 0x90, 0xf2, 0x30, 0x8f, 0xd9, 0x3d, 0x89, 0xea, 0xc3, 0x1d, - 0x77, 0xba, 0xff, 0xdf, 0x6d, 0x04, 0x7b, 0x4c, 0xc7, 0xae, 0xc1, 0xb1, 0xe7, 0x48, 0xdb, 0xfe, - 0x32, 0x59, 0x38, 0xf6, 0x63, 0xde, 0x69, 0x9e, 0xc4, 0xff, 0x01, 0x98, 0x38, 0xa9, 0x03, 0x5f, - 0x3e, 0xbe, 0x40, 0xbc, 0x6f, 0xb6, 0x63, 0xbc, 0x98, 0x0d, 0x04, 0x0b, 0x25, 0x40, 0x29, 0xff, - 0xb2, 0x04, 0xc7, 0x5b, 0x9a, 0xe6, 0x3e, 0x7e, 0xa9, 0xcd, 0x53, 0x85, 0x43, 0x65, 0x36, 0x4b, - 0x6d, 0x84, 0xbd, 0x3f, 0x56, 0x58, 0x26, 0x45, 0x48, 0xda, 0xa7, 0xe1, 0x68, 0x58, 0x58, 0xa1, - 0xa6, 0x7b, 0x61, 0x34, 0xbc, 0x23, 0xcc, 0xd5, 0x35, 0x12, 0xda, 0x13, 0x96, 0x2b, 0x51, 0x3d, - 0x7b, 0x7d, 0x2d, 0x43, 0xc6, 0x43, 0xe5, 0x29, 0x70, 0xcf, 0x5d, 0xf5, 0x29, 0xe5, 0x0f, 0x4b, - 0x30, 0x13, 0x6e, 0x21, 0x90, 0x0c, 0xf5, 0x27, 0xec, 0x2d, 0x1b, 0xe2, 0x37, 0x24, 0xb8, 0xab, - 0x8b, 0x4c, 0x5c, 0x01, 0x2f, 0xc3, 0x64, 0x60, 0x27, 0x40, 0xb8, 0x70, 0x31, 0xec, 0xa7, 0xe3, - 0xd3, 0x50, 0x6f, 0xe1, 0x7b, 0x07, 0x51, 0xca, 0x67, 0x7f, 0x7f, 0x7a, 0xa2, 0xb5, 0xce, 0x51, - 0x26, 0x5a, 0x57, 0xef, 0xb7, 0xd0, 0x3e, 0x5e, 0x93, 0xe0, 0x81, 0x70, 0x57, 0xdb, 0xe4, 0xb3, - 0x3f, 0xaa, 0x71, 0xf8, 0xf7, 0x12, 0x9c, 0xee, 0x45, 0x38, 0x3e, 0x20, 0x3b, 0x30, 0xe1, 0x67, - 0xda, 0xd1, 0xf1, 0xe8, 0x2b, 0x7f, 0x67, 0x56, 0x8a, 0x3c, 0x6e, 0xb7, 0x41, 0xf1, 0x16, 0x9f, - 0x58, 0xc1, 0x21, 0xf7, 0x94, 0x1c, 0xde, 0xcd, 0x15, 0x4a, 0x0e, 0xed, 0xe7, 0xb6, 0x19, 0x8b, - 0x44, 0x9b, 0xb1, 0xf0, 0x53, 0x73, 0xf9, 0x0a, 0xf7, 0x5b, 0x6d, 0xf6, 0xe0, 0xde, 0x06, 0x13, - 0x6d, 0x4c, 0x99, 0xcf, 0xea, 0x3e, 0x2c, 0x59, 0x41, 0xad, 0xc6, 0x2a, 0x1f, 0xc0, 0x34, 0x6d, - 0xb7, 0x8d, 0xa2, 0x6f, 0x77, 0x97, 0x1b, 0xdc, 0xb7, 0xb4, 0x6d, 0x9a, 0xf7, 0x7d, 0x19, 0x06, - 0xd9, 0x38, 0xf3, 0xee, 0x1e, 0xc2, 0x50, 0x38, 0x03, 0xf9, 0xe7, 0x85, 0x2f, 0x5b, 0x14, 0x62, - 0xb7, 0x9f, 0x43, 0xbd, 0xf4, 0xf5, 0x16, 0xcd, 0xa1, 0x80, 0x32, 0xbe, 0x21, 0xbc, 0x5a, 0x7b, - 0xe9, 0xb8, 0x3a, 0xb4, 0x5b, 0xe6, 0xd5, 0x98, 0x6e, 0x6e, 0xaf, 0xfb, 0xfa, 0x45, 0xe1, 0xbe, - 0xbc, 0x3e, 0xc5, 0xb8, 0xaf, 0x1f, 0x8d, 0xea, 0x3d, 0x47, 0x16, 0x23, 0xe6, 0x9f, 0x47, 0x47, - 0xf6, 0x5d, 0x09, 0x4e, 0xd0, 0xbe, 0x05, 0x37, 0x22, 0xfa, 0x55, 0xf9, 0x43, 0x80, 0x1c, 0x5b, - 0xab, 0xb4, 0x9d, 0xdd, 0x39, 0xc7, 0xd6, 0x2e, 0x87, 0xe2, 0xcb, 0x43, 0x80, 0xaa, 0xa1, 0xed, - 0x26, 0x8a, 0xcd, 0x6e, 0xc9, 0xe5, 0xaa, 0x81, 0xdd, 0x8c, 0x36, 0xc3, 0x99, 0xba, 0x05, 0xc3, - 0xf9, 0x75, 0x09, 0x0a, 0xed, 0xba, 0xcc, 0x87, 0x4f, 0x87, 0x63, 0xa1, 0x43, 0x82, 0xe8, 0x08, - 0x3e, 0xd4, 0xcb, 0x56, 0x4e, 0x64, 0x1a, 0x1d, 0xb5, 0xf1, 0xed, 0xce, 0x03, 0xa6, 0xc3, 0x16, - 0xda, 0x9a, 0x59, 0xff, 0xc8, 0xa6, 0xcf, 0x17, 0x5a, 0xfc, 0xea, 0x9f, 0x8b, 0xdc, 0xfb, 0x1a, - 0x4c, 0x75, 0x90, 0xfa, 0x76, 0xc7, 0xbd, 0xbd, 0x8e, 0x83, 0x79, 0xab, 0xd3, 0xf7, 0xc7, 0xf9, - 0x4c, 0x08, 0xdf, 0xc0, 0x0e, 0xac, 0xc5, 0xda, 0x3d, 0xe1, 0x92, 0xdf, 0x02, 0x77, 0xb4, 0xa5, - 0xe2, 0xb2, 0x15, 0x21, 0xb5, 0xa7, 0x3b, 0x2e, 0x17, 0xeb, 0xbe, 0x4e, 0x62, 0x45, 0xa8, 0x29, - 0x8d, 0x8c, 0x20, 0x47, 0x59, 0x6f, 0x98, 0x66, 0x9d, 0x8b, 0x21, 0x5f, 0x82, 0xf1, 0x00, 0x8c, - 0x37, 0x72, 0x0e, 0x52, 0x96, 0xc9, 0x3f, 0x4f, 0x30, 0x7c, 0xe6, 0x64, 0xc7, 0xdd, 0x7b, 0xd3, - 0xac, 0xf3, 0x6e, 0x53, 0x7c, 0x79, 0x12, 0x10, 0x63, 0x46, 0x37, 0xf2, 0x45, 0x13, 0x9b, 0x30, - 0x11, 0x82, 0xf2, 0x46, 0x7e, 0xa0, 0x43, 0x82, 0x33, 0xdf, 0x3e, 0x0a, 0x03, 0x94, 0x2b, 0xfa, - 0x98, 0x04, 0x10, 0x38, 0x11, 0x9e, 0xed, 0xc4, 0xa6, 0xfd, 0x9a, 0xb8, 0x30, 0xd7, 0x33, 0x3e, - 0xcf, 0xd9, 0x4e, 0xbf, 0xfb, 0xdf, 0x7c, 0xeb, 0x23, 0x89, 0x7b, 0x90, 0x3c, 0xd7, 0x61, 0x35, - 0x1e, 0x98, 0x2f, 0x9f, 0x09, 0xbd, 0x7d, 0x7f, 0xb8, 0xb7, 0xa6, 0x84, 0x64, 0xb3, 0xbd, 0xa2, - 0x73, 0xc1, 0xce, 0x53, 0xc1, 0xce, 0xa2, 0xc7, 0xe2, 0x05, 0x9b, 0x7b, 0x47, 0x78, 0xd2, 0xbc, - 0x0b, 0xfd, 0x8e, 0x04, 0x93, 0xed, 0x96, 0x74, 0xe8, 0xc9, 0xde, 0xa4, 0x68, 0x4d, 0x29, 0x0a, - 0x4f, 0x1d, 0x82, 0x92, 0x77, 0x65, 0x89, 0x76, 0x65, 0x1e, 0x3d, 0x73, 0x88, 0xae, 0xcc, 0x05, - 0xf7, 0xf7, 0xff, 0x97, 0x04, 0x77, 0x76, 0x5d, 0x21, 0xa1, 0xf9, 0xde, 0xa4, 0xec, 0x92, 0x3b, - 0x15, 0x4a, 0x3f, 0x08, 0x0b, 0xde, 0xe3, 0xe7, 0x68, 0x8f, 0x2f, 0xa1, 0xe5, 0xc3, 0xf4, 0xb8, - 0xed, 0x21, 0x0a, 0xfa, 0xad, 0xf0, 0xcd, 0xc2, 0xee, 0xe6, 0xd4, 0xb2, 0xf0, 0x88, 0x99, 0x18, - 0xad, 0x49, 0xad, 0xfc, 0x02, 0xed, 0x82, 0x82, 0x36, 0x7e, 0xc0, 0x41, 0x9b, 0x7b, 0x47, 0xd8, - 0xf1, 0xbf, 0x0b, 0xfd, 0x4f, 0xa9, 0xfd, 0x45, 0xc1, 0x27, 0xba, 0x8a, 0xd8, 0x79, 0x51, 0x55, - 0x78, 0xb2, 0x7f, 0x42, 0xde, 0xc9, 0x06, 0xed, 0x64, 0x0d, 0xe1, 0x5b, 0xdd, 0xc9, 0xb6, 0x83, - 0x88, 0xbe, 0x2a, 0xc1, 0x64, 0xbb, 0x35, 0x49, 0xcc, 0xb4, 0xec, 0xb2, 0xc8, 0x8a, 0x99, 0x96, - 0xdd, 0x16, 0x40, 0xf2, 0x9b, 0x68, 0xe7, 0xcf, 0xa1, 0xc7, 0x3b, 0x75, 0xbe, 0xeb, 0x28, 0x92, - 0xb9, 0xd8, 0x35, 0xc9, 0x8f, 0x99, 0x8b, 0xbd, 0xac, 0x63, 0x62, 0xe6, 0x62, 0x4f, 0x6b, 0x8c, - 0xf8, 0xb9, 0xe8, 0xf5, 0xac, 0xc7, 0x61, 0x74, 0xd0, 0x97, 0x25, 0x18, 0x09, 0x65, 0xc4, 0xe8, - 0xd1, 0xae, 0x82, 0xb6, 0x5b, 0x30, 0x14, 0xce, 0xf4, 0x43, 0xc2, 0xfb, 0xb2, 0x4c, 0xfb, 0xb2, - 0x80, 0xe6, 0x0f, 0xd3, 0x97, 0xf0, 0x59, 0xe9, 0xd7, 0x25, 0x98, 0x68, 0x93, 0x65, 0xc6, 0xcc, - 0xc2, 0xce, 0x49, 0x73, 0xe1, 0xc9, 0xfe, 0x09, 0x79, 0xaf, 0x2e, 0xd0, 0x5e, 0xfd, 0x04, 0x7a, - 0xfa, 0x30, 0xbd, 0x0a, 0xc4, 0xe7, 0x1b, 0xfe, 0xbd, 0xab, 0x40, 0x3b, 0xe8, 0x5c, 0x9f, 0x82, - 0x89, 0x0e, 0x3d, 0xd1, 0x37, 0x1d, 0xef, 0xcf, 0xf3, 0xb4, 0x3f, 0xcf, 0xa1, 0xf5, 0x1f, 0xac, - 0x3f, 0xad, 0x61, 0xfd, 0xf3, 0xad, 0x2f, 0x00, 0xbb, 0x5b, 0x51, 0xdb, 0x64, 0xb5, 0xf0, 0x58, - 0x5f, 0x34, 0xbc, 0x53, 0x4f, 0xd2, 0x4e, 0x9d, 0x41, 0x8f, 0x74, 0xea, 0x54, 0xe0, 0x72, 0x9d, - 0x6e, 0xec, 0x9a, 0x73, 0xef, 0x60, 0x29, 0xf0, 0xbb, 0xd0, 0x4f, 0x89, 0x8b, 0x4d, 0xa7, 0xba, - 0xb6, 0x1b, 0xc8, 0x63, 0x0b, 0x0f, 0xf4, 0x80, 0xc9, 0xe5, 0xba, 0x87, 0xca, 0x35, 0x85, 0x4e, - 0x76, 0x92, 0x8b, 0xe4, 0xb2, 0xe8, 0x03, 0x92, 0x77, 0x17, 0xf2, 0x74, 0x77, 0xde, 0xc1, 0x64, - 0xb7, 0xf0, 0x60, 0x4f, 0xb8, 0x5c, 0x92, 0xfb, 0xa8, 0x24, 0x33, 0x68, 0xaa, 0xa3, 0x24, 0x2c, - 0xf5, 0xbd, 0xd5, 0x37, 0x07, 0x5e, 0x3d, 0x0e, 0xd3, 0x1d, 0x5a, 0x74, 0xaf, 0xc5, 0x9c, 0x71, - 0x75, 0x79, 0x08, 0x1b, 0xfb, 0xd0, 0xb5, 0xc3, 0xd3, 0xda, 0xc3, 0x3f, 0x7f, 0xed, 0xed, 0x40, - 0xec, 0x5f, 0xa7, 0x00, 0xad, 0x3a, 0xb5, 0x05, 0x1b, 0xb3, 0x7f, 0x7a, 0xc7, 0x67, 0x79, 0xe4, - 0x85, 0x97, 0xf4, 0x03, 0xbd, 0xf0, 0x5a, 0x0d, 0xbd, 0x99, 0x4a, 0xf4, 0xf7, 0x2e, 0xb3, 0xe7, - 0x87, 0x53, 0xc9, 0x1f, 0xca, 0xc3, 0xa9, 0xf6, 0xf7, 0xaa, 0x53, 0xb7, 0xee, 0x01, 0xc6, 0xc0, - 0x61, 0x1f, 0xa1, 0xf0, 0xf7, 0x90, 0x83, 0x5d, 0xde, 0x43, 0xe6, 0x3b, 0x3e, 0x7a, 0xe4, 0xd4, - 0xe8, 0xac, 0xf8, 0x80, 0xef, 0x50, 0x6f, 0x37, 0x61, 0xf9, 0x17, 0x7e, 0xfd, 0x2d, 0x84, 0x93, - 0x50, 0x68, 0x35, 0x27, 0x6f, 0x52, 0x7f, 0x24, 0x09, 0xb9, 0x55, 0xa7, 0x56, 0xae, 0xea, 0xee, - 0x6d, 0xb2, 0xb5, 0x67, 0x3a, 0x3f, 0x6a, 0x41, 0x37, 0x6f, 0x4c, 0x8f, 0x32, 0x9d, 0x76, 0xd1, - 0x64, 0x03, 0xc6, 0x22, 0x4f, 0x89, 0xb9, 0x65, 0x2d, 0x1e, 0xe6, 0x45, 0x73, 0x84, 0x95, 0x4c, - 0xdf, 0x20, 0x04, 0xec, 0x1b, 0x5d, 0x6b, 0x6f, 0xcc, 0xcc, 0xa0, 0x2e, 0xde, 0xce, 0x17, 0x80, - 0xfe, 0x98, 0x15, 0x20, 0x1f, 0x1d, 0x14, 0x6f, 0xc4, 0xfe, 0x50, 0x82, 0xe1, 0x55, 0x47, 0xa4, - 0x82, 0xf8, 0xc7, 0xf4, 0xfd, 0xd1, 0x13, 0xde, 0x77, 0x58, 0x93, 0xbd, 0xd9, 0xad, 0xf8, 0x36, - 0xab, 0xaf, 0x84, 0xa3, 0x30, 0x11, 0xe8, 0xa7, 0xd7, 0xff, 0xdf, 0x4e, 0x50, 0xff, 0x58, 0xc2, - 0x35, 0xdd, 0xf0, 0xb2, 0x48, 0xfc, 0x17, 0xf5, 0x75, 0x85, 0xaf, 0xe7, 0xd4, 0x61, 0xf5, 0xbc, - 0x4f, 0x1d, 0x44, 0x44, 0x9f, 0xde, 0xc6, 0xd7, 0x6a, 0xeb, 0xdb, 0x1f, 0xa9, 0x8f, 0xcf, 0xea, - 0x44, 0x5e, 0xf8, 0xc8, 0x6f, 0x48, 0x30, 0xb2, 0xea, 0xd4, 0xb6, 0x8d, 0xea, 0xff, 0xf3, 0xf6, - 0xbb, 0x0b, 0x47, 0x43, 0x3d, 0xbd, 0x4d, 0x2a, 0x3d, 0xf3, 0x5a, 0x0a, 0x92, 0xab, 0x4e, 0x0d, - 0xbd, 0x04, 0x63, 0xd1, 0xa4, 0xa1, 0x63, 0x2e, 0xd8, 0x1a, 0x11, 0x3a, 0xaf, 0xd7, 0x3a, 0x47, - 0x0f, 0xb4, 0x0f, 0x23, 0xe1, 0xc8, 0x71, 0xaa, 0x0b, 0x93, 0x10, 0x66, 0xe1, 0x91, 0x5e, 0x31, - 0xbd, 0xc6, 0xde, 0x0e, 0x69, 0xcf, 0xe9, 0xdd, 0xdd, 0x85, 0x5a, 0x20, 0x75, 0xce, 0x6e, 0xdb, - 0xb8, 0x15, 0xa2, 0xbd, 0xa8, 0x4b, 0xe9, 0xa6, 0xbd, 0x08, 0x6e, 0x57, 0xed, 0x75, 0x9a, 0x5a, - 0x3b, 0x00, 0x81, 0x79, 0x70, 0x6f, 0x17, 0x0e, 0x3e, 0x5a, 0xe1, 0xe1, 0x9e, 0xd0, 0xbc, 0x43, - 0xa7, 0x5b, 0x9c, 0x8c, 0xff, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd5, 0xca, 0x34, 0x9e, 0x6a, - 0x94, 0x00, 0x00, + 0x33, 0x9c, 0x99, 0xbd, 0x3b, 0x50, 0x52, 0x8a, 0x96, 0x14, 0x45, 0xa2, 0xcb, 0xb1, 0x14, 0xa5, + 0x62, 0x89, 0xd2, 0x29, 0x92, 0xe5, 0x44, 0x8e, 0xac, 0xc4, 0x96, 0xa5, 0x28, 0x71, 0x92, 0xaa, + 0x48, 0xa9, 0x72, 0x2c, 0x29, 0x15, 0x97, 0x54, 0x71, 0x25, 0x8e, 0x2b, 0x39, 0x39, 0x94, 0xca, + 0x61, 0x14, 0x25, 0x96, 0xcf, 0x72, 0xe2, 0x94, 0x2a, 0x95, 0xd4, 0xfb, 0x9a, 0xaf, 0xfd, 0x98, + 0x5d, 0xe8, 0x4e, 0x92, 0x63, 0xff, 0xc2, 0xbe, 0x9e, 0xee, 0x7e, 0xdd, 0xfd, 0xfa, 0x75, 0xf7, + 0x7b, 0xf3, 0xde, 0x00, 0x3e, 0x7f, 0x1e, 0x66, 0x6b, 0xa6, 0x59, 0xab, 0xe3, 0xd3, 0x96, 0x6d, + 0xba, 0xe6, 0x4e, 0x73, 0xf7, 0x74, 0x15, 0x3b, 0x9a, 0xad, 0x5b, 0xae, 0x69, 0xcf, 0x51, 0x18, + 0x1a, 0x67, 0x18, 0x73, 0x02, 0x43, 0x5e, 0x85, 0x89, 0x0b, 0x7a, 0x1d, 0x2f, 0x7a, 0x88, 0x9b, + 0xd8, 0x45, 0x4f, 0x42, 0x6a, 0x57, 0xaf, 0xe3, 0xbc, 0x34, 0x9b, 0x3c, 0x39, 0x72, 0xe6, 0x9e, + 0xb9, 0x08, 0xd1, 0x5c, 0x98, 0x62, 0x83, 0x80, 0x15, 0x4a, 0x21, 0x7f, 0x27, 0x05, 0x93, 0x6d, + 0x9e, 0x22, 0x04, 0x29, 0x43, 0x6d, 0x10, 0x8e, 0xd2, 0xc9, 0x8c, 0x42, 0x7f, 0xa3, 0x3c, 0x0c, + 0x5b, 0xaa, 0xb6, 0xaf, 0xd6, 0x70, 0x3e, 0x41, 0xc1, 0xa2, 0x89, 0xa6, 0x01, 0xaa, 0xd8, 0xc2, + 0x46, 0x15, 0x1b, 0xda, 0x41, 0x3e, 0x39, 0x9b, 0x3c, 0x99, 0x51, 0x02, 0x10, 0xf4, 0x20, 0x4c, + 0x58, 0xcd, 0x9d, 0xba, 0xae, 0x55, 0x02, 0x68, 0x30, 0x9b, 0x3c, 0x39, 0xa8, 0xe4, 0xd8, 0x83, + 0x45, 0x1f, 0xf9, 0x7e, 0x18, 0xbf, 0x8a, 0xd5, 0xfd, 0x20, 0xea, 0x08, 0x45, 0x1d, 0x23, 0xe0, + 0x00, 0xe2, 0x02, 0x64, 0x1b, 0xd8, 0x71, 0xd4, 0x1a, 0xae, 0xb8, 0x07, 0x16, 0xce, 0xa7, 0xa8, + 0xf6, 0xb3, 0x2d, 0xda, 0x47, 0x35, 0x1f, 0xe1, 0x54, 0x5b, 0x07, 0x16, 0x46, 0xf3, 0x90, 0xc1, + 0x46, 0xb3, 0xc1, 0x38, 0x0c, 0x76, 0xb0, 0x5f, 0xd9, 0x68, 0x36, 0xa2, 0x5c, 0xd2, 0x84, 0x8c, + 0xb3, 0x18, 0x76, 0xb0, 0x7d, 0x45, 0xd7, 0x70, 0x7e, 0x88, 0x32, 0xb8, 0xbf, 0x85, 0xc1, 0x26, + 0x7b, 0x1e, 0xe5, 0x21, 0xe8, 0xd0, 0x02, 0x64, 0xf0, 0x35, 0x17, 0x1b, 0x8e, 0x6e, 0x1a, 0xf9, + 0x61, 0xca, 0xe4, 0xde, 0x36, 0xa3, 0x88, 0xeb, 0xd5, 0x28, 0x0b, 0x9f, 0x0e, 0x9d, 0x83, 0x61, + 0xd3, 0x72, 0x75, 0xd3, 0x70, 0xf2, 0xe9, 0x59, 0xe9, 0xe4, 0xc8, 0x99, 0x13, 0x6d, 0x1d, 0x61, + 0x9d, 0xe1, 0x28, 0x02, 0x19, 0x2d, 0x43, 0xce, 0x31, 0x9b, 0xb6, 0x86, 0x2b, 0x9a, 0x59, 0xc5, + 0x15, 0xdd, 0xd8, 0x35, 0xf3, 0x19, 0xca, 0x60, 0xa6, 0x55, 0x11, 0x8a, 0xb8, 0x60, 0x56, 0xf1, + 0xb2, 0xb1, 0x6b, 0x2a, 0x63, 0x4e, 0xa8, 0x8d, 0x8e, 0xc2, 0x90, 0x73, 0x60, 0xb8, 0xea, 0xb5, + 0x7c, 0x96, 0x7a, 0x08, 0x6f, 0xc9, 0xbf, 0x39, 0x04, 0xe3, 0xbd, 0xb8, 0xd8, 0x79, 0x18, 0xdc, + 0x25, 0x5a, 0xe6, 0x13, 0xfd, 0xd8, 0x80, 0xd1, 0x84, 0x8d, 0x38, 0x74, 0x48, 0x23, 0xce, 0xc3, + 0x88, 0x81, 0x1d, 0x17, 0x57, 0x99, 0x47, 0x24, 0x7b, 0xf4, 0x29, 0x60, 0x44, 0xad, 0x2e, 0x95, + 0x3a, 0x94, 0x4b, 0x3d, 0x0f, 0xe3, 0x9e, 0x48, 0x15, 0x5b, 0x35, 0x6a, 0xc2, 0x37, 0x4f, 0xc7, + 0x49, 0x32, 0x57, 0x16, 0x74, 0x0a, 0x21, 0x53, 0xc6, 0x70, 0xa8, 0x8d, 0x16, 0x01, 0x4c, 0x03, + 0x9b, 0xbb, 0x95, 0x2a, 0xd6, 0xea, 0xf9, 0x74, 0x07, 0x2b, 0xad, 0x13, 0x94, 0x16, 0x2b, 0x99, + 0x0c, 0xaa, 0xd5, 0xd1, 0x53, 0xbe, 0xab, 0x0d, 0x77, 0xf0, 0x94, 0x55, 0x36, 0xc9, 0x5a, 0xbc, + 0x6d, 0x1b, 0xc6, 0x6c, 0x4c, 0xfc, 0x1e, 0x57, 0xb9, 0x66, 0x19, 0x2a, 0xc4, 0x5c, 0xac, 0x66, + 0x0a, 0x27, 0x63, 0x8a, 0x8d, 0xda, 0xc1, 0x26, 0xba, 0x1b, 0x3c, 0x40, 0x85, 0xba, 0x15, 0xd0, + 0x28, 0x94, 0x15, 0xc0, 0x35, 0xb5, 0x81, 0x0b, 0x2f, 0xc1, 0x58, 0xd8, 0x3c, 0x68, 0x0a, 0x06, + 0x1d, 0x57, 0xb5, 0x5d, 0xea, 0x85, 0x83, 0x0a, 0x6b, 0xa0, 0x1c, 0x24, 0xb1, 0x51, 0xa5, 0x51, + 0x6e, 0x50, 0x21, 0x3f, 0xd1, 0x9b, 0x7d, 0x85, 0x93, 0x54, 0xe1, 0xfb, 0x5a, 0x47, 0x34, 0xc4, + 0x39, 0xaa, 0x77, 0xe1, 0x09, 0x18, 0x0d, 0x29, 0xd0, 0x6b, 0xd7, 0xf2, 0x3b, 0xe1, 0x48, 0x5b, + 0xd6, 0xe8, 0x79, 0x98, 0x6a, 0x1a, 0xba, 0xe1, 0x62, 0xdb, 0xb2, 0x31, 0xf1, 0x58, 0xd6, 0x55, + 0xfe, 0xbf, 0x0c, 0x77, 0xf0, 0xb9, 0xed, 0x20, 0x36, 0xe3, 0xa2, 0x4c, 0x36, 0x5b, 0x81, 0xa7, + 0x32, 0xe9, 0xd7, 0x87, 0x73, 0x2f, 0xbf, 0xfc, 0xf2, 0xcb, 0x09, 0xf9, 0x2b, 0x43, 0x30, 0xd5, + 0x6e, 0xce, 0xb4, 0x9d, 0xbe, 0x47, 0x61, 0xc8, 0x68, 0x36, 0x76, 0xb0, 0x4d, 0x8d, 0x34, 0xa8, + 0xf0, 0x16, 0x9a, 0x87, 0xc1, 0xba, 0xba, 0x83, 0xeb, 0xf9, 0xd4, 0xac, 0x74, 0x72, 0xec, 0xcc, + 0x83, 0x3d, 0xcd, 0xca, 0xb9, 0x15, 0x42, 0xa2, 0x30, 0x4a, 0xf4, 0x26, 0x48, 0xf1, 0x10, 0x4d, + 0x38, 0x9c, 0xea, 0x8d, 0x03, 0x99, 0x4b, 0x0a, 0xa5, 0x43, 0x77, 0x40, 0x86, 0xfc, 0x65, 0xbe, + 0x31, 0x44, 0x65, 0x4e, 0x13, 0x00, 0xf1, 0x0b, 0x54, 0x80, 0x34, 0x9d, 0x26, 0x55, 0x2c, 0x52, + 0x9b, 0xd7, 0x26, 0x8e, 0x55, 0xc5, 0xbb, 0x6a, 0xb3, 0xee, 0x56, 0xae, 0xa8, 0xf5, 0x26, 0xa6, + 0x0e, 0x9f, 0x51, 0xb2, 0x1c, 0x78, 0x99, 0xc0, 0xd0, 0x0c, 0x8c, 0xb0, 0x59, 0xa5, 0x1b, 0x55, + 0x7c, 0x8d, 0x46, 0xcf, 0x41, 0x85, 0x4d, 0xb4, 0x65, 0x02, 0x21, 0xdd, 0xbf, 0xe0, 0x98, 0x86, + 0x70, 0x4d, 0xda, 0x05, 0x01, 0xd0, 0xee, 0x9f, 0x88, 0x06, 0xee, 0x3b, 0xdb, 0xab, 0xd7, 0x32, + 0x97, 0xee, 0x87, 0x71, 0x8a, 0xf1, 0x18, 0x1f, 0x7a, 0xb5, 0x9e, 0x9f, 0x98, 0x95, 0x4e, 0xa6, + 0x95, 0x31, 0x06, 0x5e, 0xe7, 0x50, 0xf9, 0x4b, 0x09, 0x48, 0xd1, 0xc0, 0x32, 0x0e, 0x23, 0x5b, + 0x6f, 0xd9, 0x28, 0x57, 0x16, 0xd7, 0xb7, 0x4b, 0x2b, 0xe5, 0x9c, 0x84, 0xc6, 0x00, 0x28, 0xe0, + 0xc2, 0xca, 0xfa, 0xfc, 0x56, 0x2e, 0xe1, 0xb5, 0x97, 0xd7, 0xb6, 0xce, 0x3d, 0x9e, 0x4b, 0x7a, + 0x04, 0xdb, 0x0c, 0x90, 0x0a, 0x22, 0x3c, 0x76, 0x26, 0x37, 0x88, 0x72, 0x90, 0x65, 0x0c, 0x96, + 0x9f, 0x2f, 0x2f, 0x9e, 0x7b, 0x3c, 0x37, 0x14, 0x86, 0x3c, 0x76, 0x26, 0x37, 0x8c, 0x46, 0x21, + 0x43, 0x21, 0xa5, 0xf5, 0xf5, 0x95, 0x5c, 0xda, 0xe3, 0xb9, 0xb9, 0xa5, 0x2c, 0xaf, 0x2d, 0xe5, + 0x32, 0x1e, 0xcf, 0x25, 0x65, 0x7d, 0x7b, 0x23, 0x07, 0x1e, 0x87, 0xd5, 0xf2, 0xe6, 0xe6, 0xfc, + 0x52, 0x39, 0x37, 0xe2, 0x61, 0x94, 0xde, 0xb2, 0x55, 0xde, 0xcc, 0x65, 0x43, 0x62, 0x3d, 0x76, + 0x26, 0x37, 0xea, 0x75, 0x51, 0x5e, 0xdb, 0x5e, 0xcd, 0x8d, 0xa1, 0x09, 0x18, 0x65, 0x5d, 0x08, + 0x21, 0xc6, 0x23, 0xa0, 0x73, 0x8f, 0xe7, 0x72, 0xbe, 0x20, 0x8c, 0xcb, 0x44, 0x08, 0x70, 0xee, + 0xf1, 0x1c, 0x92, 0x17, 0x60, 0x90, 0xba, 0x21, 0x42, 0x30, 0xb6, 0x32, 0x5f, 0x2a, 0xaf, 0x54, + 0xd6, 0x37, 0xb6, 0x96, 0xd7, 0xd7, 0xe6, 0x57, 0x72, 0x92, 0x0f, 0x53, 0xca, 0xcf, 0x6e, 0x2f, + 0x2b, 0xe5, 0xc5, 0x5c, 0x22, 0x08, 0xdb, 0x28, 0xcf, 0x6f, 0x95, 0x17, 0x73, 0x49, 0x59, 0x83, + 0xa9, 0x76, 0x01, 0xb5, 0xed, 0x14, 0x0a, 0xf8, 0x42, 0xa2, 0x83, 0x2f, 0x50, 0x5e, 0x51, 0x5f, + 0x90, 0xbf, 0x9d, 0x80, 0xc9, 0x36, 0x49, 0xa5, 0x6d, 0x27, 0x4f, 0xc3, 0x20, 0xf3, 0x65, 0x96, + 0x66, 0x1f, 0x68, 0x9b, 0x9d, 0xa8, 0x67, 0xb7, 0xa4, 0x5a, 0x4a, 0x17, 0x2c, 0x35, 0x92, 0x1d, + 0x4a, 0x0d, 0xc2, 0xa2, 0xc5, 0x61, 0x7f, 0xa6, 0x25, 0xf8, 0xb3, 0xfc, 0x78, 0xae, 0x97, 0xfc, + 0x48, 0x61, 0xfd, 0x25, 0x81, 0xc1, 0x36, 0x49, 0xe0, 0x3c, 0x4c, 0xb4, 0x30, 0xea, 0x39, 0x18, + 0xbf, 0x47, 0x82, 0x7c, 0x27, 0xe3, 0xc4, 0x84, 0xc4, 0x44, 0x28, 0x24, 0x9e, 0x8f, 0x5a, 0xf0, + 0xae, 0xce, 0x83, 0xd0, 0x32, 0xd6, 0x9f, 0x91, 0xe0, 0x68, 0xfb, 0x92, 0xb2, 0xad, 0x0c, 0x6f, + 0x82, 0xa1, 0x06, 0x76, 0xf7, 0x4c, 0x51, 0x56, 0xdd, 0xd7, 0x26, 0x59, 0x93, 0xc7, 0xd1, 0xc1, + 0xe6, 0x54, 0xc1, 0x6c, 0x9f, 0xec, 0x54, 0x17, 0x32, 0x69, 0x5a, 0x24, 0xfd, 0x40, 0x02, 0x8e, + 0xb4, 0x65, 0xde, 0x56, 0xd0, 0x3b, 0x01, 0x74, 0xc3, 0x6a, 0xba, 0xac, 0x74, 0x62, 0x91, 0x38, + 0x43, 0x21, 0x34, 0x78, 0x91, 0x28, 0xdb, 0x74, 0xbd, 0xe7, 0x49, 0xfa, 0x1c, 0x18, 0x88, 0x22, + 0x3c, 0xe9, 0x0b, 0x9a, 0xa2, 0x82, 0x4e, 0x77, 0xd0, 0xb4, 0xc5, 0x31, 0x1f, 0x81, 0x9c, 0x56, + 0xd7, 0xb1, 0xe1, 0x56, 0x1c, 0xd7, 0xc6, 0x6a, 0x43, 0x37, 0x6a, 0x34, 0xd5, 0xa4, 0x8b, 0x83, + 0xbb, 0x6a, 0xdd, 0xc1, 0xca, 0x38, 0x7b, 0xbc, 0x29, 0x9e, 0x12, 0x0a, 0xea, 0x40, 0x76, 0x80, + 0x62, 0x28, 0x44, 0xc1, 0x1e, 0x7b, 0x14, 0xf2, 0x87, 0x32, 0x30, 0x12, 0x28, 0xc0, 0xd1, 0x5d, + 0x90, 0x7d, 0x41, 0xbd, 0xa2, 0x56, 0xc4, 0xa2, 0x8a, 0x59, 0x62, 0x84, 0xc0, 0x36, 0xf8, 0xc2, + 0xea, 0x11, 0x98, 0xa2, 0x28, 0x66, 0xd3, 0xc5, 0x76, 0x45, 0xab, 0xab, 0x8e, 0x43, 0x8d, 0x96, + 0xa6, 0xa8, 0x88, 0x3c, 0x5b, 0x27, 0x8f, 0x16, 0xc4, 0x13, 0x74, 0x16, 0x26, 0x29, 0x45, 0xa3, + 0x59, 0x77, 0x75, 0xab, 0x8e, 0x2b, 0x64, 0x99, 0xe7, 0xd0, 0x94, 0xe3, 0x49, 0x36, 0x41, 0x30, + 0x56, 0x39, 0x02, 0x91, 0xc8, 0x41, 0x8b, 0x70, 0x27, 0x25, 0xab, 0x61, 0x03, 0xdb, 0xaa, 0x8b, + 0x2b, 0xf8, 0xc5, 0xa6, 0x5a, 0x77, 0x2a, 0xaa, 0x51, 0xad, 0xec, 0xa9, 0xce, 0x5e, 0x7e, 0x8a, + 0x30, 0x28, 0x25, 0xf2, 0x92, 0x72, 0x9c, 0x20, 0x2e, 0x71, 0xbc, 0x32, 0x45, 0x9b, 0x37, 0xaa, + 0x17, 0x55, 0x67, 0x0f, 0x15, 0xe1, 0x28, 0xe5, 0xe2, 0xb8, 0xb6, 0x6e, 0xd4, 0x2a, 0xda, 0x1e, + 0xd6, 0xf6, 0x2b, 0x4d, 0x77, 0xf7, 0xc9, 0xfc, 0x1d, 0xc1, 0xfe, 0xa9, 0x84, 0x9b, 0x14, 0x67, + 0x81, 0xa0, 0x6c, 0xbb, 0xbb, 0x4f, 0xa2, 0x4d, 0xc8, 0x92, 0xc1, 0x68, 0xe8, 0x2f, 0xe1, 0xca, + 0xae, 0x69, 0xd3, 0x1c, 0x3a, 0xd6, 0x26, 0x34, 0x05, 0x2c, 0x38, 0xb7, 0xce, 0x09, 0x56, 0xcd, + 0x2a, 0x2e, 0x0e, 0x6e, 0x6e, 0x94, 0xcb, 0x8b, 0xca, 0x88, 0xe0, 0x72, 0xc1, 0xb4, 0x89, 0x43, + 0xd5, 0x4c, 0xcf, 0xc0, 0x23, 0xcc, 0xa1, 0x6a, 0xa6, 0x30, 0xef, 0x59, 0x98, 0xd4, 0x34, 0xa6, + 0xb3, 0xae, 0x55, 0xf8, 0x62, 0xcc, 0xc9, 0xe7, 0x42, 0xc6, 0xd2, 0xb4, 0x25, 0x86, 0xc0, 0x7d, + 0xdc, 0x41, 0x4f, 0xc1, 0x11, 0xdf, 0x58, 0x41, 0xc2, 0x89, 0x16, 0x2d, 0xa3, 0xa4, 0x67, 0x61, + 0xd2, 0x3a, 0x68, 0x25, 0x44, 0xa1, 0x1e, 0xad, 0x83, 0x28, 0xd9, 0x13, 0x30, 0x65, 0xed, 0x59, + 0xad, 0x74, 0xa7, 0x82, 0x74, 0xc8, 0xda, 0xb3, 0xa2, 0x84, 0xf7, 0xd2, 0x95, 0xb9, 0x8d, 0x35, + 0xd5, 0xc5, 0xd5, 0xfc, 0xb1, 0x20, 0x7a, 0xe0, 0x01, 0x9a, 0x83, 0x9c, 0xa6, 0x55, 0xb0, 0xa1, + 0xee, 0xd4, 0x71, 0x45, 0xb5, 0xb1, 0xa1, 0x3a, 0xf9, 0x19, 0x8a, 0x9c, 0x72, 0xed, 0x26, 0x56, + 0xc6, 0x34, 0xad, 0x4c, 0x1f, 0xce, 0xd3, 0x67, 0xe8, 0x14, 0x4c, 0x98, 0x3b, 0x2f, 0x68, 0xcc, + 0x23, 0x2b, 0x96, 0x8d, 0x77, 0xf5, 0x6b, 0xf9, 0x7b, 0xa8, 0x79, 0xc7, 0xc9, 0x03, 0xea, 0x8f, + 0x1b, 0x14, 0x8c, 0x1e, 0x80, 0x9c, 0xe6, 0xec, 0xa9, 0xb6, 0x45, 0x43, 0xb2, 0x63, 0xa9, 0x1a, + 0xce, 0xdf, 0xcb, 0x50, 0x19, 0x7c, 0x4d, 0x80, 0xc9, 0x8c, 0x70, 0xae, 0xea, 0xbb, 0xae, 0xe0, + 0x78, 0x3f, 0x9b, 0x11, 0x14, 0xc6, 0xb9, 0x9d, 0x84, 0x1c, 0xb1, 0x44, 0xa8, 0xe3, 0x93, 0x14, + 0x6d, 0xcc, 0xda, 0xb3, 0x82, 0xfd, 0xde, 0x0d, 0xa3, 0x04, 0xd3, 0xef, 0xf4, 0x01, 0x56, 0xb8, + 0x59, 0x7b, 0x81, 0x1e, 0x1f, 0x87, 0xa3, 0x04, 0xa9, 0x81, 0x5d, 0xb5, 0xaa, 0xba, 0x6a, 0x00, + 0xfb, 0x21, 0x8a, 0x4d, 0xcc, 0xbe, 0xca, 0x1f, 0x86, 0xe4, 0xb4, 0x9b, 0x3b, 0x07, 0x9e, 0x63, + 0x3d, 0xcc, 0xe4, 0x24, 0x30, 0xe1, 0x5a, 0xb7, 0xad, 0x38, 0x97, 0x8b, 0x90, 0x0d, 0xfa, 0x3d, + 0xca, 0x00, 0xf3, 0xfc, 0x9c, 0x44, 0x8a, 0xa0, 0x85, 0xf5, 0x45, 0x52, 0xbe, 0xbc, 0xb5, 0x9c, + 0x4b, 0x90, 0x32, 0x6a, 0x65, 0x79, 0xab, 0x5c, 0x51, 0xb6, 0xd7, 0xb6, 0x96, 0x57, 0xcb, 0xb9, + 0x64, 0xa0, 0xb0, 0x7f, 0x26, 0x95, 0xbe, 0x2f, 0x77, 0xbf, 0xfc, 0xcd, 0x04, 0x8c, 0x85, 0x57, + 0x6a, 0xe8, 0x0d, 0x70, 0x4c, 0x6c, 0xab, 0x38, 0xd8, 0xad, 0x5c, 0xd5, 0x6d, 0x3a, 0x21, 0x1b, + 0x2a, 0x4b, 0x8e, 0x9e, 0xff, 0x4c, 0x71, 0xac, 0x4d, 0xec, 0x3e, 0xa7, 0xdb, 0x64, 0xba, 0x35, + 0x54, 0x17, 0xad, 0xc0, 0x8c, 0x61, 0x56, 0x1c, 0x57, 0x35, 0xaa, 0xaa, 0x5d, 0xad, 0xf8, 0x1b, + 0x5a, 0x15, 0x55, 0xd3, 0xb0, 0xe3, 0x98, 0x2c, 0x11, 0x7a, 0x5c, 0x4e, 0x18, 0xe6, 0x26, 0x47, + 0xf6, 0x33, 0xc4, 0x3c, 0x47, 0x8d, 0xb8, 0x6f, 0xb2, 0x93, 0xfb, 0xde, 0x01, 0x99, 0x86, 0x6a, + 0x55, 0xb0, 0xe1, 0xda, 0x07, 0xb4, 0x3e, 0x4f, 0x2b, 0xe9, 0x86, 0x6a, 0x95, 0x49, 0xfb, 0xc7, + 0xb2, 0x4c, 0x7a, 0x26, 0x95, 0x4e, 0xe7, 0x32, 0xcf, 0xa4, 0xd2, 0x99, 0x1c, 0xc8, 0xaf, 0x25, + 0x21, 0x1b, 0xac, 0xd7, 0xc9, 0xf2, 0x47, 0xa3, 0x19, 0x4b, 0xa2, 0x31, 0xed, 0xee, 0xae, 0xd5, + 0xfd, 0xdc, 0x02, 0x49, 0x65, 0xc5, 0x21, 0x56, 0x1c, 0x2b, 0x8c, 0x92, 0x94, 0x11, 0xc4, 0xd9, + 0x30, 0x2b, 0x46, 0xd2, 0x0a, 0x6f, 0xa1, 0x25, 0x18, 0x7a, 0xc1, 0xa1, 0xbc, 0x87, 0x28, 0xef, + 0x7b, 0xba, 0xf3, 0x7e, 0x66, 0x93, 0x32, 0xcf, 0x3c, 0xb3, 0x59, 0x59, 0x5b, 0x57, 0x56, 0xe7, + 0x57, 0x14, 0x4e, 0x8e, 0x8e, 0x43, 0xaa, 0xae, 0xbe, 0x74, 0x10, 0x4e, 0x7a, 0x14, 0xd4, 0xeb, + 0x20, 0x1c, 0x87, 0xd4, 0x55, 0xac, 0xee, 0x87, 0x53, 0x0d, 0x05, 0xdd, 0xc6, 0xc9, 0x70, 0x1a, + 0x06, 0xa9, 0xbd, 0x10, 0x00, 0xb7, 0x58, 0x6e, 0x00, 0xa5, 0x21, 0xb5, 0xb0, 0xae, 0x90, 0x09, + 0x91, 0x83, 0x2c, 0x83, 0x56, 0x36, 0x96, 0xcb, 0x0b, 0xe5, 0x5c, 0x42, 0x3e, 0x0b, 0x43, 0xcc, + 0x08, 0x64, 0xb2, 0x78, 0x66, 0xc8, 0x0d, 0xf0, 0x26, 0xe7, 0x21, 0x89, 0xa7, 0xdb, 0xab, 0xa5, + 0xb2, 0x92, 0x4b, 0x84, 0x87, 0x3a, 0x95, 0x1b, 0x94, 0x1d, 0xc8, 0x06, 0xeb, 0xf0, 0x1f, 0xcf, + 0x62, 0xfc, 0xcb, 0x12, 0x8c, 0x04, 0xea, 0x6a, 0x52, 0x10, 0xa9, 0xf5, 0xba, 0x79, 0xb5, 0xa2, + 0xd6, 0x75, 0xd5, 0xe1, 0xae, 0x01, 0x14, 0x34, 0x4f, 0x20, 0xbd, 0x0e, 0xdd, 0x8f, 0x69, 0x8a, + 0x0c, 0xe6, 0x86, 0xe4, 0x4f, 0x48, 0x90, 0x8b, 0x16, 0xb6, 0x11, 0x31, 0xa5, 0x9f, 0xa4, 0x98, + 0xf2, 0xc7, 0x25, 0x18, 0x0b, 0x57, 0xb3, 0x11, 0xf1, 0xee, 0xfa, 0x89, 0x8a, 0xf7, 0x07, 0x09, + 0x18, 0x0d, 0xd5, 0xb0, 0xbd, 0x4a, 0xf7, 0x22, 0x4c, 0xe8, 0x55, 0xdc, 0xb0, 0x4c, 0x17, 0x1b, + 0xda, 0x41, 0xa5, 0x8e, 0xaf, 0xe0, 0x7a, 0x5e, 0xa6, 0x41, 0xe3, 0x74, 0xf7, 0x2a, 0x79, 0x6e, + 0xd9, 0xa7, 0x5b, 0x21, 0x64, 0xc5, 0xc9, 0xe5, 0xc5, 0xf2, 0xea, 0xc6, 0xfa, 0x56, 0x79, 0x6d, + 0xe1, 0x2d, 0x95, 0xed, 0xb5, 0x4b, 0x6b, 0xeb, 0xcf, 0xad, 0x29, 0x39, 0x3d, 0x82, 0x76, 0x1b, + 0xa7, 0xfd, 0x06, 0xe4, 0xa2, 0x42, 0xa1, 0x63, 0xd0, 0x4e, 0xac, 0xdc, 0x00, 0x9a, 0x84, 0xf1, + 0xb5, 0xf5, 0xca, 0xe6, 0xf2, 0x62, 0xb9, 0x52, 0xbe, 0x70, 0xa1, 0xbc, 0xb0, 0xb5, 0xc9, 0xf6, + 0x3d, 0x3c, 0xec, 0xad, 0xd0, 0x04, 0x97, 0x5f, 0x4d, 0xc2, 0x64, 0x1b, 0x49, 0xd0, 0x3c, 0x5f, + 0xb1, 0xb0, 0x45, 0xd4, 0xc3, 0xbd, 0x48, 0x3f, 0x47, 0x6a, 0x86, 0x0d, 0xd5, 0x76, 0xf9, 0x02, + 0xe7, 0x01, 0x20, 0x56, 0x32, 0x5c, 0x7d, 0x57, 0xc7, 0x36, 0xdf, 0x4f, 0x62, 0xcb, 0x98, 0x71, + 0x1f, 0xce, 0xb6, 0x94, 0x1e, 0x02, 0x64, 0x99, 0x8e, 0xee, 0xea, 0x57, 0x70, 0x45, 0x37, 0xc4, + 0xe6, 0x13, 0x59, 0xd6, 0xa4, 0x94, 0x9c, 0x78, 0xb2, 0x6c, 0xb8, 0x1e, 0xb6, 0x81, 0x6b, 0x6a, + 0x04, 0x9b, 0x04, 0xf3, 0xa4, 0x92, 0x13, 0x4f, 0x3c, 0xec, 0xbb, 0x20, 0x5b, 0x35, 0x9b, 0xa4, + 0xd6, 0x63, 0x78, 0x24, 0x77, 0x48, 0xca, 0x08, 0x83, 0x79, 0x28, 0xbc, 0x8a, 0xf7, 0x77, 0xbd, + 0xb2, 0xca, 0x08, 0x83, 0x31, 0x94, 0xfb, 0x61, 0x5c, 0xad, 0xd5, 0x6c, 0xc2, 0x5c, 0x30, 0x62, + 0xeb, 0x92, 0x31, 0x0f, 0x4c, 0x11, 0x0b, 0xcf, 0x40, 0x5a, 0xd8, 0x81, 0xa4, 0x6a, 0x62, 0x89, + 0x8a, 0xc5, 0x16, 0xdb, 0x89, 0x93, 0x19, 0x25, 0x6d, 0x88, 0x87, 0x77, 0x41, 0x56, 0x77, 0x2a, + 0xfe, 0x26, 0x7e, 0x62, 0x36, 0x71, 0x32, 0xad, 0x8c, 0xe8, 0x8e, 0xb7, 0x01, 0x2a, 0x7f, 0x26, + 0x01, 0x63, 0xe1, 0x97, 0x10, 0x68, 0x11, 0xd2, 0x75, 0x53, 0x53, 0xa9, 0x6b, 0xb1, 0x37, 0x60, + 0x27, 0x63, 0xde, 0x5b, 0xcc, 0xad, 0x70, 0x7c, 0xc5, 0xa3, 0x2c, 0xfc, 0x8e, 0x04, 0x69, 0x01, + 0x46, 0x47, 0x21, 0x65, 0xa9, 0xee, 0x1e, 0x65, 0x37, 0x58, 0x4a, 0xe4, 0x24, 0x85, 0xb6, 0x09, + 0xdc, 0xb1, 0x54, 0x83, 0xba, 0x00, 0x87, 0x93, 0x36, 0x19, 0xd7, 0x3a, 0x56, 0xab, 0x74, 0xd1, + 0x63, 0x36, 0x1a, 0xd8, 0x70, 0x1d, 0x31, 0xae, 0x1c, 0xbe, 0xc0, 0xc1, 0xe8, 0x41, 0x98, 0x70, + 0x6d, 0x55, 0xaf, 0x87, 0x70, 0x53, 0x14, 0x37, 0x27, 0x1e, 0x78, 0xc8, 0x45, 0x38, 0x2e, 0xf8, + 0x56, 0xb1, 0xab, 0x6a, 0x7b, 0xb8, 0xea, 0x13, 0x0d, 0xd1, 0xcd, 0x8d, 0x63, 0x1c, 0x61, 0x91, + 0x3f, 0x17, 0xb4, 0xf2, 0x37, 0x25, 0x98, 0x10, 0xcb, 0xb4, 0xaa, 0x67, 0xac, 0x55, 0x00, 0xd5, + 0x30, 0x4c, 0x37, 0x68, 0xae, 0x56, 0x57, 0x6e, 0xa1, 0x9b, 0x9b, 0xf7, 0x88, 0x94, 0x00, 0x83, + 0x42, 0x03, 0xc0, 0x7f, 0xd2, 0xd1, 0x6c, 0x33, 0x30, 0xc2, 0xdf, 0x30, 0xd1, 0xd7, 0x94, 0x6c, + 0x61, 0x0f, 0x0c, 0x44, 0xd6, 0x73, 0x68, 0x0a, 0x06, 0x77, 0x70, 0x4d, 0x37, 0xf8, 0xbe, 0x31, + 0x6b, 0x88, 0xed, 0x97, 0x94, 0xb7, 0xfd, 0x52, 0xfa, 0xab, 0x30, 0xa9, 0x99, 0x8d, 0xa8, 0xb8, + 0xa5, 0x5c, 0x64, 0x73, 0xc1, 0xb9, 0x28, 0xbd, 0xf5, 0x61, 0x8e, 0x54, 0x33, 0xeb, 0xaa, 0x51, + 0x9b, 0x33, 0xed, 0x9a, 0xff, 0x9a, 0x95, 0x54, 0x3c, 0x4e, 0xe0, 0x65, 0xab, 0xb5, 0xf3, 0x67, + 0x92, 0xf4, 0x4b, 0x89, 0xe4, 0xd2, 0x46, 0xe9, 0xb3, 0x89, 0xc2, 0x12, 0x23, 0xdc, 0x10, 0xc6, + 0x50, 0xf0, 0x6e, 0x1d, 0x6b, 0x44, 0x41, 0xf8, 0xee, 0x83, 0x30, 0x55, 0x33, 0x6b, 0x26, 0xe5, + 0x74, 0x9a, 0xfc, 0xe2, 0xef, 0x69, 0x33, 0x1e, 0xb4, 0x10, 0xfb, 0x52, 0xb7, 0xb8, 0x06, 0x93, + 0x1c, 0xb9, 0x42, 0x5f, 0x14, 0xb1, 0x65, 0x0c, 0xea, 0xba, 0x87, 0x96, 0xff, 0xfc, 0x77, 0x68, + 0xfa, 0x56, 0x26, 0x38, 0x29, 0x79, 0xc6, 0x56, 0x3a, 0x45, 0x05, 0x8e, 0x84, 0xf8, 0xb1, 0x49, + 0x8a, 0xed, 0x18, 0x8e, 0xbf, 0xc5, 0x39, 0x4e, 0x06, 0x38, 0x6e, 0x72, 0xd2, 0xe2, 0x02, 0x8c, + 0xf6, 0xc3, 0xeb, 0x5f, 0x71, 0x5e, 0x59, 0x1c, 0x64, 0xb2, 0x04, 0xe3, 0x94, 0x89, 0xd6, 0x74, + 0x5c, 0xb3, 0x41, 0x23, 0x60, 0x77, 0x36, 0xbf, 0xfd, 0x1d, 0x36, 0x6b, 0xc6, 0x08, 0xd9, 0x82, + 0x47, 0x55, 0x2c, 0x02, 0x7d, 0x37, 0x56, 0xc5, 0x5a, 0x3d, 0x86, 0xc3, 0x57, 0xb9, 0x20, 0x1e, + 0x7e, 0xf1, 0x32, 0x4c, 0x91, 0xdf, 0x34, 0x40, 0x05, 0x25, 0x89, 0xdf, 0x70, 0xcb, 0x7f, 0xf3, + 0x3d, 0x6c, 0x62, 0x4e, 0x7a, 0x0c, 0x02, 0x32, 0x05, 0x46, 0xb1, 0x86, 0x5d, 0x17, 0xdb, 0x4e, + 0x45, 0xad, 0xb7, 0x13, 0x2f, 0xb0, 0x63, 0x91, 0xff, 0xe8, 0xf7, 0xc2, 0xa3, 0xb8, 0xc4, 0x28, + 0xe7, 0xeb, 0xf5, 0xe2, 0x36, 0x1c, 0x6b, 0xe3, 0x15, 0x3d, 0xf0, 0x7c, 0x95, 0xf3, 0x9c, 0x6a, + 0xf1, 0x0c, 0xc2, 0x76, 0x03, 0x04, 0xdc, 0x1b, 0xcb, 0x1e, 0x78, 0x7e, 0x8c, 0xf3, 0x44, 0x9c, + 0x56, 0x0c, 0x29, 0xe1, 0xf8, 0x0c, 0x4c, 0x5c, 0xc1, 0xf6, 0x8e, 0xe9, 0xf0, 0x5d, 0xa2, 0x1e, + 0xd8, 0x7d, 0x9c, 0xb3, 0x1b, 0xe7, 0x84, 0x74, 0xdb, 0x88, 0xf0, 0x7a, 0x0a, 0xd2, 0xbb, 0xaa, + 0x86, 0x7b, 0x60, 0x71, 0x9d, 0xb3, 0x18, 0x26, 0xf8, 0x84, 0x74, 0x1e, 0xb2, 0x35, 0x93, 0xe7, + 0xa8, 0x78, 0xf2, 0x4f, 0x70, 0xf2, 0x11, 0x41, 0xc3, 0x59, 0x58, 0xa6, 0xd5, 0xac, 0x93, 0x04, + 0x16, 0xcf, 0xe2, 0xef, 0x08, 0x16, 0x82, 0x86, 0xb3, 0xe8, 0xc3, 0xac, 0x9f, 0x14, 0x2c, 0x9c, + 0x80, 0x3d, 0x9f, 0x86, 0x11, 0xd3, 0xa8, 0x1f, 0x98, 0x46, 0x2f, 0x42, 0x7c, 0x8a, 0x73, 0x00, + 0x4e, 0x42, 0x18, 0x9c, 0x87, 0x4c, 0xaf, 0x03, 0xf1, 0x77, 0xbf, 0x27, 0xa6, 0x87, 0x18, 0x81, + 0x25, 0x18, 0x17, 0x01, 0x4a, 0x37, 0x8d, 0x1e, 0x58, 0xfc, 0x3d, 0xce, 0x62, 0x2c, 0x40, 0xc6, + 0xd5, 0x70, 0xb1, 0xe3, 0xd6, 0x70, 0x2f, 0x4c, 0x3e, 0x23, 0xd4, 0xe0, 0x24, 0xdc, 0x94, 0x3b, + 0xd8, 0xd0, 0xf6, 0x7a, 0xe3, 0xf0, 0x2b, 0xc2, 0x94, 0x82, 0x86, 0xb0, 0x58, 0x80, 0xd1, 0x86, + 0x6a, 0x3b, 0x7b, 0x6a, 0xbd, 0xa7, 0xe1, 0xf8, 0xfb, 0x9c, 0x47, 0xd6, 0x23, 0xe2, 0x16, 0x69, + 0x1a, 0xfd, 0xb0, 0xf9, 0xac, 0xb0, 0x48, 0x80, 0x8c, 0x4f, 0x3d, 0xc7, 0xa5, 0x5b, 0x6a, 0xfd, + 0x70, 0xfb, 0x55, 0x31, 0xf5, 0x18, 0xed, 0x6a, 0x90, 0xe3, 0x79, 0xc8, 0x38, 0xfa, 0x4b, 0x3d, + 0xb1, 0xf9, 0x9c, 0x18, 0x69, 0x4a, 0x40, 0x88, 0xdf, 0x02, 0xc7, 0xdb, 0xa6, 0x89, 0x1e, 0x98, + 0xfd, 0x03, 0xce, 0xec, 0x68, 0x9b, 0x54, 0xc1, 0x43, 0x42, 0xbf, 0x2c, 0xff, 0xa1, 0x08, 0x09, + 0x38, 0xc2, 0x6b, 0x83, 0xac, 0x1a, 0x1c, 0x75, 0xb7, 0x3f, 0xab, 0xfd, 0x9a, 0xb0, 0x1a, 0xa3, + 0x0d, 0x59, 0x6d, 0x0b, 0x8e, 0x72, 0x8e, 0xfd, 0x8d, 0xeb, 0xaf, 0x8b, 0xc0, 0xca, 0xa8, 0xb7, + 0xc3, 0xa3, 0xfb, 0x36, 0x28, 0x78, 0xe6, 0x14, 0xe5, 0xa9, 0x53, 0x69, 0xa8, 0x56, 0x0f, 0x9c, + 0x3f, 0xcf, 0x39, 0x8b, 0x88, 0xef, 0xd5, 0xb7, 0xce, 0xaa, 0x6a, 0x11, 0xe6, 0xcf, 0x43, 0x5e, + 0x30, 0x6f, 0x1a, 0x36, 0xd6, 0xcc, 0x9a, 0xa1, 0xbf, 0x84, 0xab, 0x3d, 0xb0, 0xfe, 0x8d, 0xc8, + 0x50, 0x6d, 0x07, 0xc8, 0x09, 0xe7, 0x65, 0xc8, 0x79, 0xb5, 0x4a, 0x45, 0x6f, 0x58, 0xa6, 0xed, + 0xc6, 0x70, 0xfc, 0x82, 0x18, 0x29, 0x8f, 0x6e, 0x99, 0x92, 0x15, 0xcb, 0xc0, 0xde, 0x33, 0xf7, + 0xea, 0x92, 0x5f, 0xe4, 0x8c, 0x46, 0x7d, 0x2a, 0x1e, 0x38, 0x34, 0xb3, 0x61, 0xa9, 0x76, 0x2f, + 0xf1, 0xef, 0x1f, 0x89, 0xc0, 0xc1, 0x49, 0x78, 0xe0, 0x20, 0x15, 0x1d, 0xc9, 0xf6, 0x3d, 0x70, + 0xf8, 0x92, 0x08, 0x1c, 0x82, 0x86, 0xb3, 0x10, 0x05, 0x43, 0x0f, 0x2c, 0xfe, 0xb1, 0x60, 0x21, + 0x68, 0x08, 0x8b, 0x67, 0xfd, 0x44, 0x6b, 0xe3, 0x9a, 0xee, 0xb8, 0x36, 0x2b, 0x8a, 0xbb, 0xb3, + 0xfa, 0x27, 0xdf, 0x0b, 0x17, 0x61, 0x4a, 0x80, 0x94, 0x44, 0x22, 0xbe, 0xc9, 0x4a, 0xd7, 0x4c, + 0xf1, 0x82, 0xfd, 0xa6, 0x88, 0x44, 0x01, 0x32, 0x22, 0x5b, 0xa0, 0x42, 0x24, 0x66, 0xd7, 0xc8, + 0x4a, 0xa1, 0x07, 0x76, 0xff, 0x34, 0x22, 0xdc, 0xa6, 0xa0, 0x25, 0x3c, 0x03, 0xf5, 0x4f, 0xd3, + 0xd8, 0xc7, 0x07, 0x3d, 0x79, 0xe7, 0x3f, 0x8b, 0xd4, 0x3f, 0xdb, 0x8c, 0x92, 0xc5, 0x90, 0xf1, + 0x48, 0x3d, 0x85, 0xe2, 0x4e, 0x15, 0xe5, 0x7f, 0xf6, 0x07, 0x5c, 0xdf, 0x70, 0x39, 0x55, 0x5c, + 0x21, 0x4e, 0x1e, 0x2e, 0x7a, 0xe2, 0x99, 0xbd, 0xe7, 0x07, 0x9e, 0x9f, 0x87, 0x6a, 0x9e, 0xe2, + 0x05, 0x18, 0x0d, 0x15, 0x3c, 0xf1, 0xac, 0xde, 0xcb, 0x59, 0x65, 0x83, 0xf5, 0x4e, 0xf1, 0x2c, + 0xa4, 0x48, 0xf1, 0x12, 0x4f, 0xfe, 0xd7, 0x38, 0x39, 0x45, 0x2f, 0xbe, 0x11, 0xd2, 0xa2, 0x68, + 0x89, 0x27, 0x7d, 0x1f, 0x27, 0xf5, 0x48, 0x08, 0xb9, 0x28, 0x58, 0xe2, 0xc9, 0xff, 0xba, 0x20, + 0x17, 0x24, 0x84, 0xbc, 0x77, 0x13, 0x7e, 0xf9, 0xe7, 0x52, 0x3c, 0xe9, 0x08, 0xdb, 0x9d, 0x87, + 0x61, 0x5e, 0xa9, 0xc4, 0x53, 0x7f, 0x80, 0x77, 0x2e, 0x28, 0x8a, 0x4f, 0xc0, 0x60, 0x8f, 0x06, + 0xff, 0x79, 0x4e, 0xca, 0xf0, 0x8b, 0x0b, 0x30, 0x12, 0xa8, 0x4e, 0xe2, 0xc9, 0xff, 0x06, 0x27, + 0x0f, 0x52, 0x11, 0xd1, 0x79, 0x75, 0x12, 0xcf, 0xe0, 0x17, 0x84, 0xe8, 0x9c, 0x82, 0x98, 0x4d, + 0x14, 0x26, 0xf1, 0xd4, 0x1f, 0x14, 0x56, 0x17, 0x24, 0xc5, 0xa7, 0x21, 0xe3, 0x25, 0x9b, 0x78, + 0xfa, 0x0f, 0x71, 0x7a, 0x9f, 0x86, 0x58, 0x20, 0x90, 0xec, 0xe2, 0x59, 0xfc, 0x4d, 0x61, 0x81, + 0x00, 0x15, 0x99, 0x46, 0xd1, 0x02, 0x26, 0x9e, 0xd3, 0x87, 0xc5, 0x34, 0x8a, 0xd4, 0x2f, 0x64, + 0x34, 0x69, 0xcc, 0x8f, 0x67, 0xf1, 0xb7, 0xc4, 0x68, 0x52, 0x7c, 0x22, 0x46, 0xb4, 0x22, 0x88, + 0xe7, 0xf1, 0x8b, 0x42, 0x8c, 0x48, 0x41, 0x50, 0xdc, 0x00, 0xd4, 0x5a, 0x0d, 0xc4, 0xf3, 0xfb, + 0x08, 0xe7, 0x37, 0xd1, 0x52, 0x0c, 0x14, 0x9f, 0x83, 0xa3, 0xed, 0x2b, 0x81, 0x78, 0xae, 0x1f, + 0xfd, 0x41, 0x64, 0xed, 0x16, 0x2c, 0x04, 0x8a, 0x5b, 0x7e, 0x4a, 0x09, 0x56, 0x01, 0xf1, 0x6c, + 0x5f, 0xfd, 0x41, 0x38, 0x70, 0x07, 0x8b, 0x80, 0xe2, 0x3c, 0x80, 0x9f, 0x80, 0xe3, 0x79, 0x7d, + 0x9c, 0xf3, 0x0a, 0x10, 0x91, 0xa9, 0xc1, 0xf3, 0x6f, 0x3c, 0xfd, 0x75, 0x31, 0x35, 0x38, 0x05, + 0x99, 0x1a, 0x22, 0xf5, 0xc6, 0x53, 0x7f, 0x42, 0x4c, 0x0d, 0x41, 0x42, 0x3c, 0x3b, 0x90, 0xdd, + 0xe2, 0x39, 0x7c, 0x4a, 0x78, 0x76, 0x80, 0xaa, 0xb8, 0x06, 0x13, 0x2d, 0x09, 0x31, 0x9e, 0xd5, + 0x2f, 0x71, 0x56, 0xb9, 0x68, 0x3e, 0x0c, 0x26, 0x2f, 0x9e, 0x0c, 0xe3, 0xb9, 0x7d, 0x3a, 0x92, + 0xbc, 0x78, 0x2e, 0x2c, 0x9e, 0x87, 0xb4, 0xd1, 0xac, 0xd7, 0xc9, 0xe4, 0x41, 0xdd, 0x4f, 0x02, + 0xe6, 0xff, 0xeb, 0x0f, 0xb9, 0x75, 0x04, 0x41, 0xf1, 0x2c, 0x0c, 0xe2, 0xc6, 0x0e, 0xae, 0xc6, + 0x51, 0x7e, 0xf7, 0x87, 0x22, 0x60, 0x12, 0xec, 0xe2, 0xd3, 0x00, 0x6c, 0x6b, 0x84, 0xbe, 0x0c, + 0x8c, 0xa1, 0xfd, 0x6f, 0x3f, 0xe4, 0x47, 0x6f, 0x7c, 0x12, 0x9f, 0x01, 0x3b, 0xc8, 0xd3, 0x9d, + 0xc1, 0xf7, 0xc2, 0x0c, 0xe8, 0x88, 0x3c, 0x05, 0xc3, 0x2f, 0x38, 0xa6, 0xe1, 0xaa, 0xb5, 0x38, + 0xea, 0xff, 0xce, 0xa9, 0x05, 0x3e, 0x31, 0x58, 0xc3, 0xb4, 0xb1, 0xab, 0xd6, 0x9c, 0x38, 0xda, + 0xff, 0xc1, 0x69, 0x3d, 0x02, 0x42, 0xac, 0xa9, 0x8e, 0xdb, 0x8b, 0xde, 0x7f, 0x24, 0x88, 0x05, + 0x01, 0x11, 0x9a, 0xfc, 0xde, 0xc7, 0x07, 0x71, 0xb4, 0xdf, 0x17, 0x42, 0x73, 0xfc, 0xe2, 0x1b, + 0x21, 0x43, 0x7e, 0xb2, 0xf3, 0x74, 0x31, 0xc4, 0x7f, 0xcc, 0x89, 0x7d, 0x0a, 0xd2, 0xb3, 0xe3, + 0x56, 0x5d, 0x3d, 0xde, 0xd8, 0x37, 0xf9, 0x48, 0x0b, 0xfc, 0xe2, 0x3c, 0x8c, 0x38, 0x6e, 0xb5, + 0xda, 0xe4, 0xf5, 0x69, 0x0c, 0xf9, 0x9f, 0xfc, 0xd0, 0xdb, 0xb2, 0xf0, 0x68, 0xc8, 0x68, 0x5f, + 0xdd, 0x77, 0x2d, 0x93, 0xbe, 0xf0, 0x88, 0xe3, 0xf0, 0x03, 0xce, 0x21, 0x40, 0x52, 0x5c, 0x80, + 0x2c, 0xd1, 0xc5, 0xc6, 0x16, 0xa6, 0x6f, 0xa7, 0x62, 0x58, 0xfc, 0x29, 0x37, 0x40, 0x88, 0xa8, + 0xf4, 0x33, 0x5f, 0x7d, 0x6d, 0x5a, 0xfa, 0xc6, 0x6b, 0xd3, 0xd2, 0x1f, 0xbc, 0x36, 0x2d, 0x7d, + 0xf0, 0xdb, 0xd3, 0x03, 0xdf, 0xf8, 0xf6, 0xf4, 0xc0, 0xef, 0x7d, 0x7b, 0x7a, 0xa0, 0xfd, 0x2e, + 0x31, 0x2c, 0x99, 0x4b, 0x26, 0xdb, 0x1f, 0x7e, 0xab, 0x5c, 0xd3, 0xdd, 0xbd, 0xe6, 0xce, 0x9c, + 0x66, 0x36, 0xe8, 0x36, 0xae, 0xbf, 0x5b, 0xeb, 0x2d, 0x72, 0xe0, 0x4f, 0x25, 0xb2, 0x60, 0x0e, + 0xef, 0xe5, 0xaa, 0xc6, 0x41, 0x87, 0x9b, 0x39, 0x85, 0xb6, 0x1b, 0xc3, 0xf2, 0x1b, 0x20, 0x39, + 0x6f, 0x1c, 0xa0, 0xe3, 0x2c, 0xe6, 0x55, 0x9a, 0x76, 0x9d, 0x9f, 0xf3, 0x1a, 0x26, 0xed, 0x6d, + 0xbb, 0x8e, 0xa6, 0xfc, 0xc3, 0x98, 0xd2, 0xc9, 0x2c, 0x3f, 0x61, 0x59, 0x4c, 0x7d, 0xff, 0x53, + 0x33, 0x03, 0xa5, 0xfd, 0xa8, 0x86, 0x5f, 0x8e, 0xd5, 0x32, 0x3d, 0x6f, 0x1c, 0x50, 0x25, 0x37, + 0xa4, 0xb7, 0x0e, 0xd2, 0x8d, 0x6e, 0xb1, 0xb1, 0x3d, 0x1d, 0xdd, 0xd8, 0x7e, 0x0e, 0xd7, 0xeb, + 0x97, 0x0c, 0xf3, 0xaa, 0xb1, 0x45, 0xd0, 0x76, 0x86, 0xd8, 0xa1, 0x61, 0xf8, 0x70, 0x02, 0xa6, + 0x5b, 0xf6, 0xb0, 0xf9, 0xc8, 0x77, 0xba, 0x96, 0x54, 0x84, 0xf4, 0xa2, 0x70, 0xa8, 0x3c, 0x0c, + 0x3b, 0x58, 0x33, 0x8d, 0xaa, 0x43, 0x55, 0x4d, 0x2a, 0xa2, 0x49, 0x54, 0x35, 0x54, 0xc3, 0x74, + 0xf8, 0x59, 0x48, 0xd6, 0x28, 0x7d, 0x4c, 0xea, 0x6f, 0x1c, 0x47, 0x45, 0x4f, 0x42, 0xcd, 0x47, + 0x63, 0xb7, 0xfa, 0xf7, 0x89, 0x96, 0x9e, 0x12, 0xa1, 0xed, 0xfe, 0x5e, 0xad, 0xf2, 0x8b, 0x09, + 0x98, 0x89, 0x5a, 0x85, 0x4c, 0x27, 0xc7, 0x55, 0x1b, 0x56, 0x27, 0xb3, 0x9c, 0x87, 0xcc, 0x96, + 0xc0, 0xe9, 0xdb, 0x2e, 0xd7, 0xfb, 0xb4, 0xcb, 0x98, 0xd7, 0x95, 0x30, 0xcc, 0x99, 0x1e, 0x0d, + 0xe3, 0xe9, 0x71, 0x28, 0xcb, 0xbc, 0x3b, 0x09, 0xc7, 0x35, 0xd3, 0x69, 0x98, 0x4e, 0x85, 0xb9, + 0x3f, 0x6b, 0x70, 0x9b, 0x64, 0x83, 0x8f, 0x7a, 0x78, 0x39, 0x72, 0x11, 0xc6, 0x68, 0x88, 0xa0, + 0xdb, 0xc2, 0x34, 0x2a, 0xc7, 0x26, 0xd2, 0xaf, 0xfd, 0xbb, 0x41, 0x3a, 0xa5, 0x46, 0x3d, 0x42, + 0x7a, 0xca, 0x65, 0x0b, 0xa6, 0xf4, 0x86, 0x55, 0xc7, 0xf4, 0x75, 0x58, 0xc5, 0x7b, 0x16, 0xcf, + 0xef, 0xeb, 0x9c, 0xdf, 0xa4, 0x4f, 0xbe, 0x2c, 0xa8, 0x8b, 0x2b, 0x30, 0xa1, 0x6a, 0x1a, 0xb6, + 0x42, 0x2c, 0x63, 0xc2, 0x97, 0x10, 0x30, 0xc7, 0x29, 0x3d, 0x6e, 0xa5, 0xa7, 0x3b, 0x0d, 0xf1, + 0x5b, 0xef, 0x0d, 0x44, 0x28, 0x1b, 0xd7, 0xb0, 0xf1, 0xb0, 0x81, 0xdd, 0xab, 0xa6, 0xbd, 0xcf, + 0xcd, 0xfb, 0x30, 0xeb, 0x4a, 0x0c, 0xc2, 0x7b, 0x93, 0x30, 0xcd, 0x1e, 0x9c, 0xde, 0x51, 0x1d, + 0x7c, 0xfa, 0xca, 0xa3, 0x3b, 0xd8, 0x55, 0x1f, 0x3d, 0xad, 0x99, 0xba, 0x98, 0xb4, 0x93, 0x7c, + 0x5c, 0xc8, 0xf3, 0x39, 0xfe, 0xbc, 0x43, 0xd4, 0x5a, 0x82, 0xd4, 0x82, 0xa9, 0x1b, 0xc4, 0x31, + 0xab, 0xd8, 0x30, 0x1b, 0x3c, 0x66, 0xb1, 0x06, 0xba, 0x1b, 0x86, 0xd4, 0x86, 0xd9, 0x34, 0x5c, + 0xf6, 0x26, 0xaf, 0x34, 0xf2, 0xd5, 0x1b, 0x33, 0x03, 0xbf, 0x7f, 0x63, 0x26, 0xb9, 0x6c, 0xb8, + 0x0a, 0x7f, 0x54, 0x4c, 0xbd, 0xfe, 0xc9, 0x19, 0x49, 0x7e, 0x06, 0x86, 0x17, 0xb1, 0x76, 0x18, + 0x5e, 0x8b, 0x58, 0x8b, 0xf0, 0x7a, 0x00, 0xd2, 0xcb, 0x86, 0xcb, 0x4e, 0x0f, 0xdf, 0x09, 0x49, + 0xdd, 0x60, 0x07, 0xd2, 0x22, 0xfd, 0x13, 0x38, 0x41, 0x5d, 0xc4, 0x9a, 0x87, 0x5a, 0xc5, 0x5a, + 0x14, 0x95, 0xb0, 0x27, 0xf0, 0xd2, 0xe2, 0xef, 0xfd, 0xe7, 0xe9, 0x81, 0x97, 0x5f, 0x9b, 0x1e, + 0xe8, 0x38, 0x12, 0xc1, 0x5c, 0xc1, 0x4d, 0xcc, 0x87, 0xc0, 0xa9, 0xee, 0xb3, 0x79, 0xe4, 0x0d, + 0xc3, 0x67, 0x53, 0x70, 0x27, 0xbd, 0x38, 0x62, 0x37, 0x74, 0xc3, 0x3d, 0xad, 0xd9, 0x07, 0x96, + 0x4b, 0x93, 0x8b, 0xb9, 0xcb, 0x47, 0x61, 0xc2, 0x7f, 0x3c, 0xc7, 0x1e, 0x77, 0x18, 0x83, 0x5d, + 0x18, 0xdc, 0x20, 0x74, 0xc4, 0x70, 0xae, 0xe9, 0xaa, 0x75, 0x1e, 0x35, 0x58, 0x83, 0x40, 0xd9, + 0x65, 0x93, 0x04, 0x83, 0xea, 0xe2, 0x9e, 0x49, 0x1d, 0xab, 0xbb, 0xec, 0xcc, 0x6e, 0x92, 0x26, + 0x94, 0x34, 0x01, 0xd0, 0xe3, 0xb9, 0x53, 0x30, 0xa8, 0x36, 0xd9, 0xeb, 0xe6, 0x24, 0xc9, 0x34, + 0xb4, 0x21, 0x5f, 0x82, 0x61, 0xfe, 0xd2, 0x0b, 0xe5, 0x20, 0xb9, 0x8f, 0x0f, 0x68, 0x3f, 0x59, + 0x85, 0xfc, 0x44, 0x73, 0x30, 0x48, 0x85, 0xe7, 0x97, 0x11, 0xf2, 0x73, 0x2d, 0xd2, 0xcf, 0x51, + 0x21, 0x15, 0x86, 0x26, 0x3f, 0x03, 0xe9, 0x45, 0xb3, 0xa1, 0x1b, 0x66, 0x98, 0x5b, 0x86, 0x71, + 0xa3, 0x32, 0x5b, 0x4d, 0x3e, 0xd6, 0x0a, 0x6b, 0xa0, 0xa3, 0x30, 0xc4, 0xce, 0x70, 0xf3, 0x57, + 0xe6, 0xbc, 0x25, 0x2f, 0xc0, 0x30, 0xe5, 0xbd, 0x6e, 0x21, 0xc4, 0x6f, 0xff, 0xf0, 0xc3, 0xe2, + 0x34, 0x2c, 0x70, 0xf6, 0x09, 0x5f, 0x58, 0x04, 0xa9, 0xaa, 0xea, 0xaa, 0x5c, 0x6f, 0xfa, 0x5b, + 0x7e, 0x13, 0xa4, 0x39, 0x13, 0x07, 0x9d, 0x81, 0xa4, 0x69, 0x39, 0xfc, 0xa5, 0x77, 0xa1, 0x93, + 0x2a, 0xeb, 0x56, 0x29, 0x45, 0xbc, 0x44, 0x21, 0xc8, 0x25, 0xa5, 0xa3, 0x5b, 0x3c, 0x19, 0x70, + 0x8b, 0xc0, 0x90, 0x07, 0x7e, 0xb2, 0x21, 0x6d, 0x71, 0x07, 0xcf, 0x59, 0x3e, 0x95, 0x80, 0xe9, + 0xc0, 0xd3, 0x2b, 0xd8, 0x26, 0x2b, 0x3f, 0xe6, 0x51, 0xdc, 0x5b, 0x50, 0x40, 0x48, 0xfe, 0xbc, + 0x83, 0xbb, 0xbc, 0x11, 0x92, 0xf3, 0x96, 0x85, 0x0a, 0x90, 0xa6, 0x6d, 0xcd, 0x64, 0xfe, 0x92, + 0x52, 0xbc, 0x36, 0x79, 0xe6, 0x98, 0xbb, 0xee, 0x55, 0xd5, 0xf6, 0xae, 0x39, 0x89, 0xb6, 0xfc, + 0x14, 0x64, 0x16, 0x4c, 0xc3, 0xc1, 0x86, 0xd3, 0xa4, 0xf9, 0x68, 0xa7, 0x6e, 0x6a, 0xfb, 0x9c, + 0x03, 0x6b, 0x10, 0x83, 0xab, 0x96, 0x45, 0x29, 0x53, 0x0a, 0xf9, 0xc9, 0xe6, 0x65, 0x69, 0xb3, + 0xa3, 0x89, 0x9e, 0xea, 0xdf, 0x44, 0x5c, 0x49, 0xcf, 0x46, 0xff, 0x47, 0x82, 0x13, 0xad, 0x13, + 0x6a, 0x1f, 0x1f, 0x38, 0xfd, 0xce, 0xa7, 0xe7, 0x21, 0xb3, 0x41, 0xef, 0x1a, 0x5f, 0xc2, 0x07, + 0xa8, 0x00, 0xc3, 0xb8, 0x7a, 0xe6, 0xec, 0xd9, 0x47, 0x9f, 0x62, 0xde, 0x7e, 0x71, 0x40, 0x11, + 0x00, 0x34, 0x0d, 0x19, 0x07, 0x6b, 0xd6, 0x99, 0xb3, 0xe7, 0xf6, 0x1f, 0x65, 0xee, 0x75, 0x71, + 0x40, 0xf1, 0x41, 0xc5, 0x34, 0xd1, 0xfa, 0xf5, 0x4f, 0xcd, 0x48, 0xa5, 0x41, 0x48, 0x3a, 0xcd, + 0xc6, 0x6d, 0xf5, 0x91, 0x57, 0x07, 0x61, 0x36, 0x48, 0x49, 0xb3, 0xf6, 0x15, 0xb5, 0xae, 0x57, + 0x55, 0xff, 0x96, 0x78, 0x2e, 0x60, 0x03, 0x8a, 0xd1, 0xde, 0x04, 0x85, 0xae, 0x96, 0x94, 0x7f, + 0x43, 0x82, 0xec, 0x65, 0xc1, 0x79, 0x13, 0xbb, 0xe8, 0x3c, 0x80, 0xd7, 0x93, 0x98, 0x36, 0x77, + 0xcc, 0x45, 0xfb, 0x9a, 0xf3, 0x68, 0x94, 0x00, 0x3a, 0x7a, 0x82, 0x3a, 0xa2, 0x65, 0x3a, 0xfc, + 0xea, 0x4b, 0x0c, 0xa9, 0x87, 0x8c, 0x1e, 0x02, 0x44, 0x23, 0x5c, 0xe5, 0x8a, 0xe9, 0xea, 0x46, + 0xad, 0x62, 0x99, 0x57, 0xf9, 0x85, 0xc2, 0xa4, 0x92, 0xa3, 0x4f, 0x2e, 0xd3, 0x07, 0x1b, 0x04, + 0x4e, 0x84, 0xce, 0x78, 0x5c, 0x48, 0x89, 0xa5, 0x56, 0xab, 0x36, 0x76, 0x1c, 0x1e, 0xc4, 0x44, + 0x13, 0x9d, 0x87, 0x61, 0xab, 0xb9, 0x53, 0x11, 0x11, 0x63, 0xe4, 0xcc, 0x89, 0x76, 0xf3, 0x5f, + 0xf8, 0x07, 0x8f, 0x00, 0x43, 0x56, 0x73, 0x87, 0x78, 0xcb, 0x5d, 0x90, 0x6d, 0x23, 0xcc, 0xc8, + 0x15, 0x5f, 0x0e, 0x7a, 0xc5, 0x9d, 0x6b, 0x50, 0xb1, 0x6c, 0xdd, 0xb4, 0x75, 0xf7, 0x80, 0x9e, + 0x5c, 0x49, 0x2a, 0x39, 0xf1, 0x60, 0x83, 0xc3, 0xe5, 0x7d, 0x18, 0xdf, 0xa4, 0xb5, 0x85, 0x2f, + 0xf9, 0x59, 0x5f, 0x3e, 0x29, 0x5e, 0xbe, 0x8e, 0x92, 0x25, 0x5a, 0x24, 0x2b, 0x3d, 0xdb, 0xd1, + 0x3b, 0x9f, 0xe8, 0xdf, 0x3b, 0xc3, 0xd9, 0xee, 0x8f, 0x8e, 0x87, 0x26, 0x27, 0x73, 0xce, 0x60, + 0xf8, 0xea, 0xd5, 0x31, 0xe3, 0x2a, 0xeb, 0x42, 0xf7, 0xa4, 0x5a, 0x88, 0x09, 0xa3, 0x85, 0xd8, + 0x29, 0x24, 0x3f, 0x05, 0xa3, 0x1b, 0xaa, 0xed, 0x6e, 0x62, 0xf7, 0x22, 0x56, 0xab, 0xd8, 0x0e, + 0x67, 0xdd, 0x51, 0x91, 0x75, 0x11, 0xa4, 0x68, 0x6a, 0x65, 0x59, 0x87, 0xfe, 0x96, 0xf7, 0x20, + 0x45, 0x4f, 0xaf, 0x79, 0x19, 0x99, 0x53, 0xb0, 0x8c, 0x4c, 0x62, 0xe9, 0x81, 0x8b, 0x1d, 0xb1, + 0xbc, 0xa3, 0x0d, 0xf4, 0xb8, 0xc8, 0xab, 0xc9, 0xee, 0x79, 0x95, 0x3b, 0x22, 0xcf, 0xae, 0x75, + 0x18, 0x2e, 0x91, 0x50, 0xbc, 0xbc, 0xe8, 0x09, 0x22, 0xf9, 0x82, 0xa0, 0x55, 0x18, 0xb7, 0x54, + 0xdb, 0xa5, 0xc7, 0xf6, 0xf7, 0xa8, 0x16, 0xdc, 0xd7, 0x67, 0x5a, 0x67, 0x5e, 0x48, 0x59, 0xde, + 0xcb, 0xa8, 0x15, 0x04, 0xca, 0x7f, 0x98, 0x82, 0x21, 0x6e, 0x8c, 0x37, 0xc2, 0x30, 0x37, 0x2b, + 0xf7, 0xce, 0x3b, 0xe7, 0x5a, 0x13, 0xd3, 0x9c, 0x97, 0x40, 0x38, 0x3f, 0x41, 0x83, 0xee, 0x83, + 0xb4, 0xb6, 0xa7, 0xea, 0x46, 0x45, 0xaf, 0x8a, 0x32, 0xef, 0xb5, 0x1b, 0x33, 0xc3, 0x0b, 0x04, + 0xb6, 0xbc, 0xa8, 0x0c, 0xd3, 0x87, 0xcb, 0x55, 0x52, 0x09, 0xec, 0x61, 0xbd, 0xb6, 0xe7, 0xf2, + 0x19, 0xc6, 0x5b, 0xe8, 0x49, 0x48, 0x11, 0x87, 0xe0, 0x97, 0xba, 0x0a, 0x2d, 0xc5, 0xb6, 0xb7, + 0xf0, 0x29, 0xa5, 0x49, 0xc7, 0x1f, 0xfc, 0xd6, 0x8c, 0xa4, 0x50, 0x0a, 0xb4, 0x00, 0xa3, 0x75, + 0xd5, 0x71, 0x2b, 0x34, 0x83, 0x91, 0xee, 0x07, 0x29, 0x8b, 0xe3, 0xad, 0x06, 0xe1, 0x86, 0xe5, + 0xa2, 0x8f, 0x10, 0x2a, 0x06, 0xaa, 0xa2, 0x93, 0x90, 0xa3, 0x4c, 0x34, 0xb3, 0xd1, 0xd0, 0x5d, + 0x56, 0x5b, 0x0d, 0x51, 0xbb, 0x8f, 0x11, 0xf8, 0x02, 0x05, 0xd3, 0x0a, 0xeb, 0x0e, 0xc8, 0xd0, + 0x6b, 0x24, 0x14, 0x85, 0x1d, 0x99, 0x4c, 0x13, 0x00, 0x7d, 0x78, 0x3f, 0x8c, 0xfb, 0xf1, 0x91, + 0xa1, 0xa4, 0x19, 0x17, 0x1f, 0x4c, 0x11, 0x1f, 0x81, 0x29, 0x03, 0x5f, 0xa3, 0x87, 0x38, 0x43, + 0xd8, 0x19, 0x8a, 0x8d, 0xc8, 0xb3, 0xcb, 0x61, 0x8a, 0x7b, 0x61, 0x4c, 0x13, 0xc6, 0x67, 0xb8, + 0x40, 0x71, 0x47, 0x3d, 0x28, 0x45, 0x3b, 0x0e, 0x69, 0xd5, 0xb2, 0x18, 0xc2, 0x08, 0x8f, 0x8f, + 0x96, 0x45, 0x1f, 0x9d, 0x82, 0x09, 0xaa, 0xa3, 0x8d, 0x9d, 0x66, 0xdd, 0xe5, 0x4c, 0xb2, 0x14, + 0x67, 0x9c, 0x3c, 0x50, 0x18, 0x9c, 0xe2, 0xde, 0x0d, 0xa3, 0xf8, 0x8a, 0x5e, 0xc5, 0x86, 0x86, + 0x19, 0xde, 0x28, 0xc5, 0xcb, 0x0a, 0x20, 0x45, 0x7a, 0x00, 0xbc, 0xb8, 0x57, 0x11, 0x31, 0x79, + 0x8c, 0xf1, 0x13, 0xf0, 0x79, 0x06, 0x96, 0xf3, 0x90, 0x5a, 0x54, 0x5d, 0x95, 0x14, 0x18, 0xee, + 0x35, 0x96, 0x68, 0xb2, 0x0a, 0xf9, 0x29, 0xbf, 0x9e, 0x80, 0xd4, 0x65, 0xd3, 0xc5, 0xe8, 0xb1, + 0x40, 0x01, 0x38, 0xd6, 0xce, 0x9f, 0x37, 0xf5, 0x9a, 0x81, 0xab, 0xab, 0x4e, 0x2d, 0x70, 0xe7, + 0xdb, 0x77, 0xa7, 0x44, 0xc8, 0x9d, 0xa6, 0x60, 0xd0, 0x36, 0x9b, 0x46, 0x55, 0x9c, 0x36, 0xa4, + 0x0d, 0x54, 0x86, 0xb4, 0xe7, 0x25, 0xa9, 0x38, 0x2f, 0x19, 0x27, 0x5e, 0x42, 0x7c, 0x98, 0x03, + 0x94, 0xe1, 0x1d, 0xee, 0x2c, 0x25, 0xc8, 0x78, 0xc1, 0x8b, 0x7b, 0x5b, 0x6f, 0x0e, 0xeb, 0x93, + 0x91, 0x64, 0xe2, 0x8d, 0xbd, 0x67, 0x3c, 0xe6, 0x71, 0x39, 0xef, 0x01, 0xb7, 0x5e, 0xc8, 0xad, + 0xf8, 0xfd, 0xf3, 0x61, 0xaa, 0x97, 0xef, 0x56, 0xec, 0x0e, 0xfa, 0x09, 0xc8, 0x38, 0x7a, 0xcd, + 0x50, 0xdd, 0xa6, 0x8d, 0xb9, 0xe7, 0xf9, 0x00, 0xf9, 0xcb, 0x12, 0x0c, 0x31, 0x4f, 0x0e, 0xd8, + 0x4d, 0x6a, 0x6f, 0xb7, 0x44, 0x27, 0xbb, 0x25, 0x0f, 0x6f, 0xb7, 0x79, 0x00, 0x4f, 0x18, 0x87, + 0x5f, 0x0b, 0x6e, 0x53, 0x31, 0x30, 0x11, 0x37, 0xf5, 0x1a, 0x9f, 0xa8, 0x01, 0x22, 0xf9, 0x3f, + 0x49, 0xa4, 0x88, 0xe5, 0xcf, 0xd1, 0x3c, 0x8c, 0x0a, 0xb9, 0x2a, 0xbb, 0x75, 0xb5, 0xc6, 0x7d, + 0xe7, 0xce, 0x8e, 0xc2, 0x5d, 0xa8, 0xab, 0x35, 0x65, 0x84, 0xcb, 0x43, 0x1a, 0xed, 0xc7, 0x21, + 0xd1, 0x61, 0x1c, 0x42, 0x03, 0x9f, 0x3c, 0xdc, 0xc0, 0x87, 0x86, 0x28, 0x15, 0x1d, 0xa2, 0x2f, + 0x24, 0xe8, 0x62, 0xc6, 0x32, 0x1d, 0xb5, 0xfe, 0xe3, 0x98, 0x11, 0x77, 0x40, 0xc6, 0x32, 0xeb, + 0x15, 0xf6, 0x84, 0x9d, 0xc2, 0x4d, 0x5b, 0x66, 0x5d, 0x69, 0x19, 0xf6, 0xc1, 0x5b, 0x34, 0x5d, + 0x86, 0x6e, 0x81, 0xd5, 0x86, 0xa3, 0x56, 0xb3, 0x21, 0xcb, 0x4c, 0xc1, 0x73, 0xd9, 0x23, 0xc4, + 0x06, 0x34, 0x39, 0x4a, 0xad, 0xb9, 0x97, 0x89, 0xcd, 0x30, 0x15, 0x8e, 0x47, 0x28, 0x58, 0xe8, + 0x6f, 0xb7, 0x0a, 0x0e, 0xba, 0xa5, 0xc2, 0xf1, 0xe4, 0xbf, 0x2d, 0x01, 0xac, 0x10, 0xcb, 0x52, + 0x7d, 0x49, 0x16, 0x72, 0xa8, 0x08, 0x95, 0x50, 0xcf, 0xd3, 0x9d, 0x06, 0x8d, 0xf7, 0x9f, 0x75, + 0x82, 0x72, 0x2f, 0xc0, 0xa8, 0xef, 0x8c, 0x0e, 0x16, 0xc2, 0x4c, 0x77, 0xa9, 0xaa, 0x37, 0xb1, + 0xab, 0x64, 0xaf, 0x04, 0x5a, 0xf2, 0xbf, 0x94, 0x20, 0x43, 0x65, 0x5a, 0xc5, 0xae, 0x1a, 0x1a, + 0x43, 0xe9, 0xf0, 0x63, 0x78, 0x27, 0x00, 0x63, 0xe3, 0xe8, 0x2f, 0x61, 0xee, 0x59, 0x19, 0x0a, + 0xd9, 0xd4, 0x5f, 0xc2, 0xe8, 0x9c, 0x67, 0xf0, 0x64, 0x77, 0x83, 0x8b, 0xaa, 0x9b, 0x9b, 0xfd, + 0x18, 0x0c, 0xd3, 0xcf, 0xe8, 0x5c, 0x73, 0x78, 0x21, 0x3d, 0x64, 0x34, 0x1b, 0x5b, 0xd7, 0x1c, + 0xf9, 0x05, 0x18, 0xde, 0xba, 0xc6, 0xf6, 0x46, 0xee, 0x80, 0x8c, 0x6d, 0x9a, 0x3c, 0x27, 0xb3, + 0x5a, 0x28, 0x4d, 0x00, 0x34, 0x05, 0x89, 0xfd, 0x80, 0x84, 0xbf, 0x1f, 0xe0, 0x6f, 0x68, 0x24, + 0x7b, 0xda, 0xd0, 0x38, 0xf5, 0xef, 0x25, 0x18, 0x09, 0xc4, 0x07, 0xf4, 0x28, 0x1c, 0x29, 0xad, + 0xac, 0x2f, 0x5c, 0xaa, 0x2c, 0x2f, 0x56, 0x2e, 0xac, 0xcc, 0x2f, 0xf9, 0xf7, 0x4c, 0x0a, 0x47, + 0x5f, 0xb9, 0x3e, 0x8b, 0x02, 0xb8, 0xdb, 0x06, 0xdd, 0x5d, 0x45, 0xa7, 0x61, 0x2a, 0x4c, 0x32, + 0x5f, 0xda, 0x2c, 0xaf, 0x6d, 0xe5, 0xa4, 0xc2, 0x91, 0x57, 0xae, 0xcf, 0x4e, 0x04, 0x28, 0xe6, + 0x77, 0x1c, 0x6c, 0xb8, 0xad, 0x04, 0x0b, 0xeb, 0xab, 0xab, 0xcb, 0x5b, 0xb9, 0x44, 0x0b, 0x01, + 0x0f, 0xd8, 0x0f, 0xc0, 0x44, 0x98, 0x60, 0x6d, 0x79, 0x25, 0x97, 0x2c, 0xa0, 0x57, 0xae, 0xcf, + 0x8e, 0x05, 0xb0, 0xd7, 0xf4, 0x7a, 0x21, 0xfd, 0xfe, 0x4f, 0x4f, 0x0f, 0xfc, 0xca, 0x2f, 0x4f, + 0x4b, 0x44, 0xb3, 0xd1, 0x50, 0x8c, 0x40, 0x0f, 0xc1, 0xb1, 0xcd, 0xe5, 0xa5, 0xb5, 0xf2, 0x62, + 0x65, 0x75, 0x73, 0xa9, 0xc2, 0xbe, 0xaf, 0xe1, 0x69, 0x37, 0xfe, 0xca, 0xf5, 0xd9, 0x11, 0xae, + 0x52, 0x27, 0xec, 0x0d, 0xa5, 0x7c, 0x79, 0x7d, 0xab, 0x9c, 0x93, 0x18, 0xf6, 0x86, 0x8d, 0xaf, + 0x98, 0x2e, 0xfb, 0xce, 0xd6, 0x23, 0x70, 0xbc, 0x0d, 0xb6, 0xa7, 0xd8, 0xc4, 0x2b, 0xd7, 0x67, + 0x47, 0x37, 0x6c, 0xcc, 0xe6, 0x0f, 0xa5, 0x98, 0x83, 0x7c, 0x2b, 0xc5, 0xfa, 0xc6, 0xfa, 0xe6, + 0xfc, 0x4a, 0x6e, 0xb6, 0x90, 0x7b, 0xe5, 0xfa, 0x6c, 0x56, 0x04, 0x43, 0x82, 0xef, 0x6b, 0x76, + 0x3b, 0x57, 0x3c, 0x7f, 0xf2, 0x30, 0xdc, 0xc3, 0xf7, 0x00, 0x1d, 0x57, 0xdd, 0xd7, 0x8d, 0x9a, + 0xb7, 0xd3, 0xca, 0xdb, 0x7c, 0xe5, 0x73, 0x94, 0x6f, 0xb6, 0x0a, 0x68, 0xd7, 0xfd, 0xd6, 0x42, + 0xe7, 0xf7, 0x4c, 0x85, 0x98, 0x57, 0x31, 0xf1, 0x4b, 0xa7, 0xce, 0x7b, 0xf3, 0x85, 0x98, 0x1d, + 0xe3, 0x42, 0xd7, 0xc5, 0x9d, 0xfc, 0x01, 0x09, 0xc6, 0x2e, 0xea, 0x8e, 0x6b, 0xda, 0xba, 0xa6, + 0xd6, 0xe9, 0xed, 0x92, 0x73, 0xbd, 0xc6, 0xd6, 0xc8, 0x54, 0x7f, 0x1a, 0x86, 0xae, 0xa8, 0x75, + 0x16, 0xd4, 0x92, 0xf4, 0x63, 0x18, 0xed, 0xcd, 0xe7, 0x87, 0x36, 0xc1, 0x80, 0x91, 0xc9, 0xbf, + 0x96, 0x80, 0x71, 0x3a, 0x19, 0x1c, 0xf6, 0x99, 0x24, 0xb2, 0xc6, 0x2a, 0x41, 0xca, 0x56, 0x5d, + 0xbe, 0x69, 0x58, 0x9a, 0xe3, 0x3b, 0xbf, 0xf7, 0xc5, 0xef, 0xe6, 0xce, 0x2d, 0x62, 0x4d, 0xa1, + 0xb4, 0xe8, 0xed, 0x90, 0x6e, 0xa8, 0xd7, 0x2a, 0x94, 0x0f, 0x5b, 0xb9, 0xcc, 0xf7, 0xc7, 0xe7, + 0xe6, 0x8d, 0x99, 0xf1, 0x03, 0xb5, 0x51, 0x2f, 0xca, 0x82, 0x8f, 0xac, 0x0c, 0x37, 0xd4, 0x6b, + 0x44, 0x44, 0x64, 0xc1, 0x38, 0x81, 0x6a, 0x7b, 0xaa, 0x51, 0xc3, 0xac, 0x13, 0xba, 0x05, 0x5a, + 0xba, 0xd8, 0x77, 0x27, 0x47, 0xfd, 0x4e, 0x02, 0xec, 0x64, 0x65, 0xb4, 0xa1, 0x5e, 0x5b, 0xa0, + 0x00, 0xd2, 0x63, 0x31, 0xfd, 0x91, 0x4f, 0xce, 0x0c, 0xd0, 0xdd, 0xf4, 0x6f, 0x4a, 0x00, 0xbe, + 0xc5, 0xd0, 0xdb, 0x21, 0xa7, 0x79, 0x2d, 0x4a, 0xeb, 0xf0, 0x31, 0xbc, 0xbf, 0xd3, 0x58, 0x44, + 0xec, 0xcd, 0x72, 0xf3, 0x37, 0x6e, 0xcc, 0x48, 0xca, 0xb8, 0x16, 0x19, 0x8a, 0xb7, 0xc1, 0x48, + 0xd3, 0xaa, 0xaa, 0x2e, 0xae, 0xd0, 0x75, 0x5c, 0x22, 0x36, 0xcf, 0x4f, 0x13, 0x5e, 0x37, 0x6f, + 0xcc, 0x20, 0xa6, 0x56, 0x80, 0x58, 0xa6, 0xd9, 0x1f, 0x18, 0x84, 0x10, 0x04, 0x74, 0xfa, 0x9a, + 0x04, 0x23, 0x8b, 0x81, 0x73, 0x5f, 0x79, 0x18, 0x6e, 0x98, 0x86, 0xbe, 0xcf, 0xfd, 0x31, 0xa3, + 0x88, 0x26, 0x2a, 0x40, 0x9a, 0x5d, 0xb8, 0x73, 0x0f, 0xc4, 0x56, 0xa8, 0x68, 0x13, 0xaa, 0xab, + 0x78, 0xc7, 0xd1, 0xc5, 0x68, 0x28, 0xa2, 0x89, 0x2e, 0x40, 0xce, 0xc1, 0x5a, 0xd3, 0xd6, 0xdd, + 0x83, 0x8a, 0x66, 0x1a, 0xae, 0xaa, 0xb9, 0xec, 0xea, 0x56, 0xe9, 0x8e, 0x9b, 0x37, 0x66, 0x8e, + 0x31, 0x59, 0xa3, 0x18, 0xb2, 0x32, 0x2e, 0x40, 0x0b, 0x0c, 0x42, 0x7a, 0xa8, 0x62, 0x57, 0xd5, + 0xeb, 0x4e, 0x9e, 0xbd, 0x18, 0x12, 0xcd, 0x80, 0x2e, 0x9f, 0x1b, 0x0e, 0x6e, 0x6c, 0x5d, 0x80, + 0x9c, 0x69, 0x61, 0x3b, 0x54, 0x88, 0x4a, 0xd1, 0x9e, 0xa3, 0x18, 0xb2, 0x32, 0x2e, 0x40, 0xa2, + 0x48, 0x75, 0xc9, 0x30, 0x8b, 0x85, 0xa2, 0xd5, 0xdc, 0xf1, 0xf7, 0xc3, 0xa6, 0x5a, 0x46, 0x63, + 0xde, 0x38, 0x28, 0x3d, 0xe6, 0x73, 0x8f, 0xd2, 0xc9, 0x5f, 0xff, 0xe2, 0xc3, 0x53, 0xdc, 0x35, + 0xfc, 0xfd, 0xa9, 0x4b, 0xf8, 0x80, 0x0c, 0x3f, 0x47, 0xdd, 0xa0, 0x98, 0xa4, 0xec, 0x7c, 0x41, + 0xd5, 0xeb, 0xe2, 0x0a, 0xb2, 0xc2, 0x5b, 0xa8, 0x08, 0x43, 0x8e, 0xab, 0xba, 0x4d, 0x87, 0x7f, + 0x18, 0x4c, 0xee, 0xe4, 0x6a, 0x25, 0xd3, 0xa8, 0x6e, 0x52, 0x4c, 0x85, 0x53, 0xa0, 0x0b, 0x30, + 0xe4, 0x9a, 0xfb, 0xd8, 0xe0, 0x26, 0xec, 0x6b, 0x7e, 0xd3, 0xf7, 0x54, 0x8c, 0x9a, 0x58, 0xa4, + 0x8a, 0xeb, 0xb8, 0xc6, 0xca, 0xaa, 0x3d, 0x95, 0xac, 0x3e, 0xe8, 0xf7, 0xc1, 0x4a, 0xcb, 0x7d, + 0x4f, 0x42, 0x6e, 0xa9, 0x28, 0x3f, 0x59, 0x19, 0xf7, 0x40, 0x9b, 0x14, 0x82, 0x2e, 0x85, 0x0e, + 0x28, 0xf2, 0x8f, 0xe8, 0xdd, 0xdd, 0x49, 0xfd, 0x80, 0x4f, 0x8b, 0xfd, 0x89, 0xe0, 0xf1, 0xc6, + 0x0b, 0x90, 0x6b, 0x1a, 0x3b, 0xa6, 0x41, 0xef, 0x09, 0xf2, 0xfa, 0x9e, 0xac, 0xef, 0x92, 0x41, + 0xe7, 0x88, 0x62, 0xc8, 0xca, 0xb8, 0x07, 0xba, 0xc8, 0x56, 0x01, 0x55, 0x18, 0xf3, 0xb1, 0xe8, + 0x44, 0xcd, 0xc4, 0x4e, 0xd4, 0xbb, 0xf8, 0x44, 0x3d, 0x12, 0xed, 0xc5, 0x9f, 0xab, 0xa3, 0x1e, + 0x90, 0x90, 0xa1, 0x8b, 0x00, 0x7e, 0x78, 0xa0, 0xfb, 0x14, 0x23, 0x9d, 0x07, 0xde, 0x8f, 0x31, + 0x62, 0xbd, 0xe7, 0xd3, 0xa2, 0x77, 0xc2, 0x64, 0x43, 0x37, 0x2a, 0x0e, 0xae, 0xef, 0x56, 0xb8, + 0x81, 0x09, 0x4b, 0xfa, 0x99, 0x97, 0xd2, 0x4a, 0x7f, 0xfe, 0x70, 0xf3, 0xc6, 0x4c, 0x81, 0x87, + 0xd0, 0x56, 0x96, 0xb2, 0x32, 0xd1, 0xd0, 0x8d, 0x4d, 0x5c, 0xdf, 0x5d, 0xf4, 0x60, 0xc5, 0xec, + 0xfb, 0x3f, 0x39, 0x33, 0xc0, 0xa7, 0xeb, 0x80, 0x7c, 0x8e, 0xee, 0x9d, 0xf3, 0x69, 0x86, 0x1d, + 0xb2, 0x26, 0x51, 0x45, 0x83, 0xee, 0x68, 0x64, 0x14, 0x1f, 0xc0, 0xa6, 0xf9, 0xcb, 0xff, 0x71, + 0x56, 0x92, 0x3f, 0x27, 0xc1, 0xd0, 0xe2, 0xe5, 0x0d, 0x55, 0xb7, 0xd1, 0x32, 0x4c, 0xf8, 0x9e, + 0x13, 0x9e, 0xe4, 0x27, 0x6e, 0xde, 0x98, 0xc9, 0x47, 0x9d, 0xcb, 0x9b, 0xe5, 0xbe, 0x03, 0x8b, + 0x69, 0xbe, 0xdc, 0x69, 0xe1, 0x1a, 0x62, 0xd5, 0x82, 0x22, 0xb7, 0x2e, 0x6b, 0x23, 0x6a, 0x96, + 0x61, 0x98, 0x49, 0xeb, 0xa0, 0x22, 0x0c, 0x5a, 0xe4, 0x07, 0x7f, 0x31, 0x30, 0xdd, 0xd1, 0x79, + 0x29, 0xbe, 0xb7, 0x91, 0x49, 0x48, 0xe4, 0x0f, 0x25, 0x00, 0x16, 0x2f, 0x5f, 0xde, 0xb2, 0x75, + 0xab, 0x8e, 0xdd, 0x5b, 0xa9, 0xf9, 0x16, 0x1c, 0x09, 0xac, 0x92, 0x6c, 0x2d, 0xa2, 0xfd, 0xec, + 0xcd, 0x1b, 0x33, 0x27, 0xa2, 0xda, 0x07, 0xd0, 0x64, 0x65, 0xd2, 0x5f, 0x2f, 0xd9, 0x5a, 0x5b, + 0xae, 0x55, 0xc7, 0xf5, 0xb8, 0x26, 0x3b, 0x73, 0x0d, 0xa0, 0x05, 0xb9, 0x2e, 0x3a, 0x6e, 0x7b, + 0xd3, 0x6e, 0xc2, 0x88, 0x6f, 0x12, 0x07, 0x2d, 0x42, 0xda, 0xe5, 0xbf, 0xb9, 0x85, 0xe5, 0xce, + 0x16, 0x16, 0x64, 0xdc, 0xca, 0x1e, 0xa5, 0xfc, 0x67, 0x12, 0x80, 0xef, 0xb3, 0x3f, 0x9d, 0x2e, + 0x46, 0x42, 0x39, 0x0f, 0xbc, 0xc9, 0x43, 0x95, 0x6a, 0x9c, 0x3a, 0x62, 0xcf, 0x9f, 0x4b, 0xc0, + 0xe4, 0xb6, 0x88, 0x3c, 0x3f, 0xf5, 0x36, 0xd8, 0x80, 0x61, 0x6c, 0xb8, 0xb6, 0x4e, 0x8d, 0x40, + 0x46, 0xfb, 0x91, 0x4e, 0xa3, 0xdd, 0x46, 0x27, 0xfa, 0xa1, 0x1b, 0xb1, 0xe9, 0xce, 0xd9, 0x44, + 0xac, 0xf1, 0x0b, 0x49, 0xc8, 0x77, 0xa2, 0x44, 0x0b, 0x30, 0xae, 0xd9, 0x98, 0x02, 0x2a, 0xc1, + 0x9d, 0xbf, 0x52, 0xc1, 0xaf, 0x2c, 0x23, 0x08, 0xb2, 0x32, 0x26, 0x20, 0x3c, 0x7b, 0xd4, 0x80, + 0x94, 0x7d, 0xc4, 0xed, 0x08, 0x56, 0x8f, 0x75, 0x9e, 0xcc, 0xd3, 0x87, 0xe8, 0x24, 0xcc, 0x80, + 0xe5, 0x8f, 0x31, 0x1f, 0x4a, 0x13, 0xc8, 0x8b, 0x30, 0xae, 0x1b, 0xba, 0xab, 0xab, 0xf5, 0xca, + 0x8e, 0x5a, 0x57, 0x0d, 0xed, 0x30, 0x55, 0x33, 0x0b, 0xf9, 0xbc, 0xdb, 0x08, 0x3b, 0x59, 0x19, + 0xe3, 0x90, 0x12, 0x03, 0xa0, 0x8b, 0x30, 0x2c, 0xba, 0x4a, 0x1d, 0xaa, 0xda, 0x10, 0xe4, 0x81, + 0x02, 0xef, 0xe7, 0x93, 0x30, 0xa1, 0xe0, 0xea, 0x5f, 0x0e, 0x45, 0x7f, 0x43, 0xb1, 0x0a, 0xc0, + 0xa6, 0x3b, 0x09, 0xb0, 0x87, 0x18, 0x0d, 0x12, 0x30, 0x32, 0x8c, 0xc3, 0xa2, 0xe3, 0x06, 0xc6, + 0xe3, 0x46, 0x02, 0xb2, 0xc1, 0xf1, 0xf8, 0x0b, 0x9a, 0x95, 0xd0, 0xb2, 0x1f, 0x89, 0x52, 0xfc, + 0xf3, 0xa0, 0x1d, 0x22, 0x51, 0x8b, 0xf7, 0x76, 0x0f, 0x41, 0xff, 0x33, 0x01, 0x43, 0x1b, 0xaa, + 0xad, 0x36, 0x1c, 0xa4, 0xb5, 0x54, 0x9a, 0x62, 0xfb, 0xb1, 0xe5, 0x23, 0xd0, 0x7c, 0xb7, 0x23, + 0xa6, 0xd0, 0xfc, 0x48, 0x9b, 0x42, 0xf3, 0xcd, 0x30, 0x46, 0x96, 0xc3, 0x81, 0x23, 0x0c, 0xc4, + 0xda, 0xa3, 0xa5, 0xe3, 0x3e, 0x97, 0xf0, 0x73, 0xb6, 0x5a, 0xbe, 0x1c, 0x3c, 0xc3, 0x30, 0x42, + 0x30, 0xfc, 0xc0, 0x4c, 0xc8, 0x8f, 0xfa, 0xcb, 0xd2, 0xc0, 0x43, 0x59, 0x81, 0x86, 0x7a, 0xad, + 0xcc, 0x1a, 0x68, 0x05, 0xd0, 0x9e, 0xb7, 0x33, 0x52, 0xf1, 0xcd, 0x49, 0xe8, 0xef, 0xbc, 0x79, + 0x63, 0xe6, 0x38, 0xa3, 0x6f, 0xc5, 0x91, 0x95, 0x09, 0x1f, 0x28, 0xb8, 0x3d, 0x0e, 0x40, 0xf4, + 0xaa, 0xb0, 0xe3, 0x73, 0x6c, 0xb9, 0x73, 0xe4, 0xe6, 0x8d, 0x99, 0x09, 0xc6, 0xc5, 0x7f, 0x26, + 0x2b, 0x19, 0xd2, 0x58, 0x24, 0xbf, 0x03, 0x9e, 0xfd, 0x69, 0x09, 0x90, 0x1f, 0xf2, 0x15, 0xec, + 0x58, 0x64, 0x7d, 0x46, 0x0a, 0xf1, 0x40, 0xd5, 0x2c, 0x75, 0x2f, 0xc4, 0x7d, 0x7a, 0x51, 0x88, + 0x07, 0x66, 0xca, 0x53, 0x7e, 0x78, 0x4c, 0xf0, 0x71, 0x6c, 0x73, 0xd6, 0x70, 0x6e, 0xc1, 0xd4, + 0x05, 0x75, 0x4b, 0x3c, 0x1c, 0x90, 0xff, 0xb5, 0x04, 0xc7, 0x5b, 0x3c, 0xca, 0x13, 0xf6, 0xaf, + 0x00, 0xb2, 0x03, 0x0f, 0xf9, 0xb7, 0xde, 0x98, 0xd0, 0x7d, 0x3b, 0xe8, 0x84, 0xdd, 0x12, 0x77, + 0x6f, 0x5d, 0x84, 0x67, 0x87, 0x15, 0xff, 0x85, 0x04, 0x53, 0xc1, 0xee, 0x3d, 0x45, 0xd6, 0x20, + 0x1b, 0xec, 0x9d, 0xab, 0x70, 0x4f, 0x2f, 0x2a, 0x70, 0xe9, 0x43, 0xf4, 0xe8, 0x59, 0x7f, 0xba, + 0xb2, 0xbd, 0xb3, 0x47, 0x7b, 0xb6, 0x86, 0x90, 0x29, 0x3a, 0x6d, 0x53, 0x74, 0x3c, 0xfe, 0xaf, + 0x04, 0xa9, 0x0d, 0xd3, 0xac, 0x23, 0x13, 0x26, 0x0c, 0xd3, 0xad, 0x10, 0xcf, 0xc2, 0xd5, 0x0a, + 0x5f, 0x74, 0xb3, 0x38, 0xb8, 0xd0, 0x9f, 0x91, 0xbe, 0x7b, 0x63, 0xa6, 0x95, 0x95, 0x32, 0x6e, + 0x98, 0x6e, 0x89, 0x42, 0xb6, 0xd8, 0x92, 0xfc, 0x9d, 0x30, 0x1a, 0xee, 0x8c, 0x45, 0xc9, 0xe7, + 0xfa, 0xee, 0x2c, 0xcc, 0xe6, 0xe6, 0x8d, 0x99, 0x29, 0x7f, 0xc6, 0x78, 0x60, 0x59, 0xc9, 0xee, + 0x04, 0x7a, 0x67, 0xc7, 0xbb, 0xbe, 0xff, 0xc9, 0x19, 0xe9, 0xd4, 0x97, 0x24, 0x00, 0x7f, 0xe7, + 0x01, 0x3d, 0x04, 0xc7, 0x4a, 0xeb, 0x6b, 0x8b, 0x95, 0xcd, 0xad, 0xf9, 0xad, 0xed, 0xcd, 0xca, + 0xf6, 0xda, 0xe6, 0x46, 0x79, 0x61, 0xf9, 0xc2, 0x72, 0x79, 0xd1, 0xdf, 0x1e, 0x77, 0x2c, 0xac, + 0xe9, 0xbb, 0x3a, 0xae, 0xa2, 0xfb, 0x60, 0x2a, 0x8c, 0x4d, 0x5a, 0xe5, 0xc5, 0x9c, 0x54, 0xc8, + 0xbe, 0x72, 0x7d, 0x36, 0xcd, 0x6a, 0x31, 0x5c, 0x45, 0x27, 0xe1, 0x48, 0x2b, 0xde, 0xf2, 0xda, + 0x52, 0x2e, 0x51, 0x18, 0x7d, 0xe5, 0xfa, 0x6c, 0xc6, 0x2b, 0xda, 0x90, 0x0c, 0x28, 0x88, 0xc9, + 0xf9, 0x25, 0x0b, 0xf0, 0xca, 0xf5, 0xd9, 0x21, 0x66, 0xc0, 0x42, 0xea, 0xfd, 0x9f, 0x9e, 0x1e, + 0x28, 0x5d, 0xe8, 0xb8, 0x01, 0xfe, 0x50, 0x57, 0xdb, 0x5d, 0xf3, 0x36, 0xb5, 0xc3, 0xbb, 0xde, + 0x7f, 0x3c, 0xdc, 0x71, 0xd7, 0xbb, 0x86, 0x0d, 0xec, 0xe8, 0xce, 0xa1, 0x76, 0xbd, 0x7b, 0xda, + 0x49, 0x97, 0x7f, 0x77, 0x10, 0xb2, 0x4b, 0xac, 0x17, 0x32, 0x10, 0x18, 0xbd, 0x01, 0x86, 0x2c, + 0x9a, 0x46, 0xbc, 0xd7, 0x68, 0x1d, 0x1c, 0x9e, 0x25, 0x1b, 0xef, 0x2c, 0x17, 0x4b, 0x3d, 0x0e, + 0x3f, 0xcc, 0xc1, 0xce, 0x98, 0xf9, 0xa7, 0xa6, 0xb2, 0x7d, 0xed, 0xf7, 0xb0, 0x9a, 0x85, 0x6f, + 0xad, 0x44, 0xf9, 0xc9, 0xec, 0x5c, 0xc8, 0x16, 0x81, 0xb0, 0xd3, 0x61, 0xef, 0x95, 0xe0, 0x08, + 0xc5, 0xf2, 0x13, 0x31, 0xc5, 0x14, 0xc5, 0xfe, 0xa9, 0x4e, 0x2a, 0xac, 0xa8, 0x8e, 0x7f, 0xd6, + 0x83, 0x9d, 0xe7, 0xba, 0x87, 0x27, 0xc2, 0x13, 0x81, 0xce, 0xa3, 0x6c, 0x65, 0x65, 0xb2, 0xde, + 0x42, 0xe9, 0xa0, 0xa5, 0xd0, 0x81, 0xbe, 0x54, 0x7f, 0x5b, 0xed, 0xc1, 0xc3, 0x7d, 0xcf, 0xc0, + 0x88, 0x1f, 0x4b, 0x1c, 0xfe, 0xbf, 0x29, 0x7a, 0xcf, 0x1d, 0x41, 0x62, 0xf4, 0x3e, 0x09, 0x8e, + 0xf8, 0xd9, 0x3c, 0xc8, 0x96, 0xfd, 0x0f, 0x8f, 0x07, 0xfb, 0x58, 0x08, 0x45, 0x8d, 0xd3, 0x96, + 0xaf, 0xac, 0x4c, 0x35, 0x5b, 0x49, 0xc9, 0x12, 0x6c, 0x34, 0x18, 0x59, 0x9d, 0xbc, 0xf8, 0x4c, + 0x5d, 0xef, 0xa1, 0x39, 0xcc, 0x80, 0xfd, 0x5f, 0x01, 0xcb, 0xb4, 0x5d, 0x5c, 0xa5, 0x1b, 0x72, + 0x69, 0xc5, 0x6b, 0xcb, 0x6b, 0x80, 0x5a, 0x07, 0x37, 0x7a, 0x80, 0x31, 0xe3, 0x1f, 0x60, 0x9c, + 0x82, 0xc1, 0xe0, 0x11, 0x3f, 0xd6, 0x28, 0xa6, 0xdf, 0xcf, 0xd3, 0xe7, 0x2d, 0x9f, 0xf3, 0xdf, + 0x4a, 0xc0, 0xa9, 0xe0, 0xeb, 0xa1, 0x17, 0x9b, 0xd8, 0x3e, 0xf0, 0xa6, 0xa8, 0xa5, 0xd6, 0x74, + 0x23, 0x78, 0x23, 0xe8, 0x78, 0x30, 0xe1, 0x53, 0x5c, 0x61, 0x27, 0xf9, 0xfd, 0x12, 0x8c, 0x6c, + 0xa8, 0x35, 0xac, 0xe0, 0x17, 0x9b, 0xd8, 0x71, 0xdb, 0x9c, 0x32, 0x3f, 0x0a, 0x43, 0xe6, 0xee, + 0xae, 0x78, 0xa7, 0x9d, 0x52, 0x78, 0x8b, 0xe8, 0x5c, 0xd7, 0x1b, 0x3a, 0x3b, 0x0e, 0x96, 0x52, + 0x58, 0x03, 0xcd, 0xc0, 0x88, 0x66, 0x36, 0x0d, 0x3e, 0xe5, 0xf2, 0x29, 0xf1, 0x3d, 0x88, 0xa6, + 0xc1, 0xa6, 0x1c, 0x31, 0xa2, 0x8d, 0xaf, 0x60, 0xdb, 0x61, 0x5f, 0xc0, 0x4b, 0x2b, 0xa2, 0x29, + 0x3f, 0x0d, 0x59, 0x26, 0x09, 0x4f, 0xc6, 0xc7, 0x21, 0x4d, 0x4f, 0x5a, 0xf9, 0xf2, 0x0c, 0x93, + 0xf6, 0x25, 0x76, 0x56, 0x9d, 0xf1, 0x67, 0x22, 0xb1, 0x46, 0xa9, 0xd4, 0xd1, 0xca, 0x27, 0xe3, + 0xa3, 0x06, 0xb3, 0xa1, 0x67, 0xe1, 0xdf, 0x1a, 0x84, 0x23, 0xfc, 0xe5, 0x9d, 0x6a, 0xe9, 0xa7, + 0xf7, 0x5c, 0x57, 0xdc, 0x23, 0x02, 0x5e, 0x05, 0xab, 0x96, 0x2e, 0x1f, 0x40, 0xea, 0xa2, 0xeb, + 0x5a, 0xe8, 0x14, 0x0c, 0xda, 0xcd, 0x3a, 0x16, 0x9b, 0x41, 0xde, 0x76, 0xbd, 0x6a, 0xe9, 0x73, + 0x04, 0x41, 0x69, 0xd6, 0xb1, 0xc2, 0x50, 0x50, 0x19, 0x66, 0x76, 0x9b, 0xf5, 0xfa, 0x41, 0xa5, + 0x8a, 0xe9, 0xbf, 0xf4, 0xf1, 0x3e, 0x8a, 0x8f, 0xaf, 0x59, 0xaa, 0xf8, 0xb4, 0x1e, 0x31, 0xcc, + 0x09, 0x8a, 0xb6, 0x48, 0xb1, 0xc4, 0x07, 0xf1, 0xcb, 0x02, 0x47, 0xfe, 0xfd, 0x04, 0xa4, 0x05, + 0x6b, 0x7a, 0x78, 0x1c, 0xd7, 0xb1, 0xe6, 0x9a, 0xe2, 0x65, 0x8a, 0xd7, 0x46, 0x08, 0x92, 0x35, + 0x3e, 0x78, 0x99, 0x8b, 0x03, 0x0a, 0x69, 0x10, 0x98, 0x77, 0xa4, 0x9f, 0xc0, 0xac, 0x26, 0x19, + 0xcf, 0x94, 0x65, 0x8a, 0x55, 0xdb, 0xc5, 0x01, 0x85, 0xb6, 0x50, 0x1e, 0x86, 0xc8, 0xa4, 0x71, + 0xd9, 0x68, 0x11, 0x38, 0x6f, 0xa3, 0xa3, 0x30, 0x68, 0xa9, 0xae, 0xc6, 0x4e, 0xdb, 0x91, 0x07, + 0xac, 0x89, 0x9e, 0x80, 0x21, 0x76, 0x73, 0x34, 0xfa, 0xff, 0x32, 0x88, 0x31, 0xd8, 0x27, 0xba, + 0x88, 0xdc, 0x1b, 0xaa, 0xeb, 0x62, 0xdb, 0x20, 0x0c, 0x19, 0x3a, 0x42, 0x90, 0xda, 0x31, 0xab, + 0x07, 0xfc, 0x7f, 0x78, 0xd0, 0xdf, 0xfc, 0x9f, 0x06, 0x50, 0x7f, 0xa8, 0xd0, 0x87, 0xec, 0x5f, + 0x17, 0x65, 0x05, 0xb0, 0x44, 0x90, 0xca, 0x30, 0xa9, 0x56, 0xab, 0x3a, 0xfb, 0x77, 0x1a, 0x95, + 0x1d, 0x9d, 0x06, 0x0f, 0x87, 0xfe, 0x63, 0xaa, 0x4e, 0x63, 0x81, 0x7c, 0x82, 0x12, 0xc7, 0x2f, + 0x65, 0x60, 0xd8, 0x62, 0x42, 0xc9, 0xe7, 0x61, 0xa2, 0x45, 0x52, 0x22, 0xdf, 0xbe, 0x6e, 0x54, + 0xc5, 0x3d, 0x07, 0xf2, 0x9b, 0xc0, 0xe8, 0x47, 0xf5, 0xd8, 0x6b, 0x2a, 0xfa, 0xbb, 0xf4, 0xee, + 0xce, 0x57, 0xc3, 0xc6, 0x02, 0x57, 0xc3, 0x54, 0x4b, 0x2f, 0x65, 0x28, 0x7f, 0x7e, 0x21, 0x6c, + 0xbe, 0xf5, 0x42, 0x58, 0x0d, 0x1b, 0x22, 0x31, 0x93, 0x47, 0xaa, 0xa5, 0x3b, 0xd4, 0x1d, 0xfd, + 0x8f, 0xfc, 0x39, 0xe7, 0x03, 0xbf, 0xe9, 0xfd, 0xb0, 0xd4, 0xd2, 0xfc, 0xc6, 0xb2, 0xe7, 0xc7, + 0x5f, 0x49, 0xc0, 0x89, 0x80, 0x1f, 0x07, 0x90, 0x5b, 0xdd, 0xb9, 0xd0, 0xde, 0xe3, 0x7b, 0xb8, + 0x17, 0x76, 0x09, 0x52, 0x04, 0x1f, 0xc5, 0x7c, 0xd2, 0x3f, 0xff, 0xeb, 0x5f, 0xff, 0xe7, 0x72, + 0xf8, 0x85, 0x56, 0x68, 0x54, 0x28, 0x93, 0xd2, 0xfb, 0x7a, 0xb7, 0x5f, 0xce, 0xff, 0xbe, 0xa1, + 0x73, 0xeb, 0xcc, 0x18, 0xb5, 0xe1, 0x77, 0xce, 0x82, 0xdc, 0xa1, 0x1a, 0x62, 0xc1, 0xb4, 0x7b, + 0x7d, 0xd5, 0x47, 0xa4, 0xee, 0x74, 0x35, 0xa0, 0xdb, 0x08, 0xf6, 0x58, 0xa9, 0x5d, 0x83, 0xa3, + 0xcf, 0x92, 0xbe, 0xfd, 0x15, 0xb4, 0x08, 0xf9, 0x47, 0xbd, 0x17, 0x7d, 0x12, 0xff, 0xbf, 0x60, + 0xe2, 0x25, 0x1e, 0xf8, 0xf2, 0xf1, 0xb5, 0xe3, 0x7d, 0x73, 0x1d, 0x53, 0xc9, 0x5c, 0x20, 0x8d, + 0x28, 0x01, 0x4a, 0xf9, 0x57, 0x25, 0x38, 0xd6, 0xd2, 0x35, 0x8f, 0xf1, 0x4b, 0x6d, 0x6e, 0x31, + 0x1c, 0xaa, 0xe8, 0x59, 0x6a, 0x23, 0xec, 0xfd, 0xb1, 0xc2, 0x32, 0x29, 0x42, 0xd2, 0xbe, 0x09, + 0x8e, 0x84, 0x85, 0x15, 0x66, 0xba, 0x17, 0xc6, 0xc2, 0x9b, 0xc5, 0xdc, 0x5c, 0xa3, 0xa1, 0xed, + 0x62, 0xb9, 0x12, 0xb5, 0xb3, 0xa7, 0x6b, 0x19, 0x32, 0x1e, 0x2a, 0xaf, 0x8e, 0x7b, 0x56, 0xd5, + 0xa7, 0x94, 0x3f, 0x24, 0xc1, 0x6c, 0xb8, 0x87, 0x40, 0x9d, 0xd4, 0x9f, 0xb0, 0xb7, 0x6c, 0x88, + 0x5f, 0x97, 0xe0, 0xae, 0x2e, 0x32, 0x71, 0x03, 0xbc, 0x04, 0x53, 0x81, 0x4d, 0x02, 0x11, 0xc2, + 0xc5, 0xb0, 0x9f, 0x8a, 0xaf, 0x50, 0xbd, 0x35, 0xf1, 0x1d, 0xc4, 0x28, 0x9f, 0xfd, 0xd6, 0xcc, + 0x64, 0xeb, 0x33, 0x47, 0x99, 0x6c, 0x5d, 0xd8, 0xdf, 0x42, 0xff, 0x78, 0x55, 0x82, 0x07, 0xc2, + 0xaa, 0xb6, 0x29, 0x75, 0x7f, 0x52, 0xe3, 0xf0, 0x1f, 0x24, 0x38, 0xd5, 0x8b, 0x70, 0x7c, 0x40, + 0x76, 0x60, 0xd2, 0x2f, 0xc2, 0xa3, 0xe3, 0xd1, 0x57, 0x69, 0xcf, 0xbc, 0x14, 0x79, 0xdc, 0x6e, + 0x83, 0xe1, 0x2d, 0x3e, 0xb1, 0x82, 0x43, 0xee, 0x19, 0x39, 0xbc, 0xd1, 0x2b, 0x8c, 0x1c, 0xda, + 0xea, 0x6d, 0x33, 0x16, 0x89, 0x36, 0x63, 0xe1, 0x57, 0xed, 0xf2, 0x15, 0x1e, 0xb7, 0xda, 0x6c, + 0xcf, 0xbd, 0x0d, 0x26, 0xdb, 0xb8, 0x32, 0x9f, 0xd5, 0x7d, 0x78, 0xb2, 0x82, 0x5a, 0x9d, 0x55, + 0x3e, 0x80, 0x19, 0xda, 0x6f, 0x1b, 0x43, 0xdf, 0x6e, 0x95, 0x1b, 0x3c, 0xb6, 0xb4, 0xed, 0x9a, + 0xeb, 0xbe, 0x0c, 0x43, 0x6c, 0x9c, 0xb9, 0xba, 0x87, 0x70, 0x14, 0xce, 0x40, 0xfe, 0x98, 0x88, + 0x65, 0x8b, 0x42, 0xec, 0xf6, 0x73, 0xa8, 0x17, 0x5d, 0x6f, 0xd1, 0x1c, 0x0a, 0x18, 0xe3, 0x9b, + 0x22, 0xaa, 0xb5, 0x97, 0x8e, 0x9b, 0x43, 0xbb, 0x65, 0x51, 0x8d, 0xd9, 0xe6, 0xf6, 0x86, 0xaf, + 0x5f, 0x16, 0xe1, 0xcb, 0xd3, 0x29, 0x26, 0x7c, 0xfd, 0x64, 0x4c, 0xef, 0x05, 0xb2, 0x18, 0x31, + 0xff, 0x3c, 0x06, 0xb2, 0xef, 0x4b, 0x70, 0x9c, 0xea, 0x16, 0xdc, 0xa3, 0xe8, 0xd7, 0xe4, 0x0f, + 0x01, 0x72, 0x6c, 0xad, 0xd2, 0x76, 0x76, 0xe7, 0x1c, 0x5b, 0xbb, 0x1c, 0xca, 0x2f, 0x0f, 0x01, + 0xaa, 0x86, 0x76, 0xa2, 0x28, 0x36, 0x3b, 0x40, 0x97, 0xab, 0x06, 0x36, 0x3a, 0xda, 0x0c, 0x67, + 0xea, 0x16, 0x0c, 0xe7, 0x37, 0x24, 0x28, 0xb4, 0x53, 0x99, 0x0f, 0x9f, 0x0e, 0x47, 0x43, 0xef, + 0x0f, 0xa2, 0x23, 0xf8, 0x50, 0x2f, 0xbb, 0x3c, 0x91, 0x69, 0x74, 0xc4, 0xc6, 0xb7, 0xbb, 0x0e, + 0x98, 0x09, 0x7b, 0x68, 0x6b, 0x65, 0xfd, 0x13, 0x9b, 0x3e, 0x5f, 0x6c, 0x89, 0xab, 0x7f, 0x2e, + 0x6a, 0xef, 0x6b, 0x30, 0xdd, 0x41, 0xea, 0xdb, 0x9d, 0xf7, 0xf6, 0x3a, 0x0e, 0xe6, 0xad, 0x2e, + 0xdf, 0x1f, 0xe7, 0x33, 0x21, 0x7c, 0x38, 0x3b, 0xb0, 0x16, 0x6b, 0x77, 0xbb, 0x4b, 0x7e, 0x0b, + 0xdc, 0xd1, 0x96, 0x8a, 0xcb, 0x56, 0x84, 0xd4, 0x9e, 0xee, 0xb8, 0x5c, 0xac, 0xfb, 0x3a, 0x89, + 0x15, 0xa1, 0xa6, 0x34, 0x32, 0x82, 0x1c, 0x65, 0xbd, 0x61, 0x9a, 0x75, 0x2e, 0x86, 0x7c, 0x09, + 0x26, 0x02, 0x30, 0xde, 0xc9, 0x39, 0x48, 0x59, 0x26, 0xff, 0x72, 0xc1, 0xc8, 0x99, 0x13, 0x1d, + 0x37, 0xf6, 0x4d, 0xb3, 0xce, 0xd5, 0xa6, 0xf8, 0xf2, 0x14, 0x20, 0xc6, 0x8c, 0xee, 0xf1, 0x8b, + 0x2e, 0x36, 0x61, 0x32, 0x04, 0xe5, 0x9d, 0xfc, 0x48, 0xef, 0x0f, 0xce, 0x7c, 0xf7, 0x08, 0x0c, + 0x52, 0xae, 0xe8, 0xa3, 0x12, 0x40, 0xe0, 0x65, 0xf1, 0x5c, 0x27, 0x36, 0xed, 0xd7, 0xc4, 0x85, + 0xd3, 0x3d, 0xe3, 0xf3, 0x9a, 0xed, 0xd4, 0xbb, 0xff, 0xed, 0x77, 0x3e, 0x9c, 0xb8, 0x07, 0xc9, + 0xa7, 0x3b, 0xac, 0xc6, 0x03, 0xf3, 0xe5, 0x33, 0xa1, 0x6b, 0xf1, 0x0f, 0xf7, 0xd6, 0x95, 0x90, + 0x6c, 0xae, 0x57, 0x74, 0x2e, 0xd8, 0x79, 0x2a, 0xd8, 0x59, 0xf4, 0x58, 0xbc, 0x60, 0xa7, 0xdf, + 0x11, 0x9e, 0x34, 0xef, 0x42, 0xbf, 0x2b, 0xc1, 0x54, 0xbb, 0x25, 0x1d, 0x7a, 0xb2, 0x37, 0x29, + 0x5a, 0x4b, 0x8a, 0xc2, 0x53, 0x87, 0xa0, 0xe4, 0xaa, 0x2c, 0x51, 0x55, 0xe6, 0xd1, 0xd3, 0x87, + 0x50, 0xe5, 0x74, 0x70, 0xeb, 0xff, 0x7f, 0x4b, 0x70, 0x67, 0xd7, 0x15, 0x12, 0x9a, 0xef, 0x4d, + 0xca, 0x2e, 0xb5, 0x53, 0xa1, 0xf4, 0xa3, 0xb0, 0xe0, 0x1a, 0x3f, 0x4b, 0x35, 0xbe, 0x84, 0x96, + 0x0f, 0xa3, 0x71, 0xdb, 0xf7, 0x2b, 0xe8, 0xb7, 0xc3, 0x87, 0x0e, 0xbb, 0xbb, 0x53, 0xcb, 0xc2, + 0x23, 0x66, 0x62, 0xb4, 0x16, 0xb5, 0xf2, 0xf3, 0x54, 0x05, 0x05, 0x6d, 0xfc, 0x88, 0x83, 0x76, + 0xfa, 0x1d, 0xe1, 0xc0, 0xff, 0x2e, 0xf4, 0xbf, 0xa4, 0xf6, 0x67, 0x08, 0x9f, 0xe8, 0x2a, 0x62, + 0xe7, 0x45, 0x55, 0xe1, 0xc9, 0xfe, 0x09, 0xb9, 0x92, 0x0d, 0xaa, 0x64, 0x0d, 0xe1, 0x5b, 0xad, + 0x64, 0xdb, 0x41, 0x44, 0x5f, 0x93, 0x60, 0xaa, 0xdd, 0x9a, 0x24, 0x66, 0x5a, 0x76, 0x59, 0x64, + 0xc5, 0x4c, 0xcb, 0x6e, 0x0b, 0x20, 0xf9, 0x0d, 0x54, 0xf9, 0x73, 0xe8, 0xf1, 0x4e, 0xca, 0x77, + 0x1d, 0x45, 0x32, 0x17, 0xbb, 0x16, 0xf9, 0x31, 0x73, 0xb1, 0x97, 0x75, 0x4c, 0xcc, 0x5c, 0xec, + 0x69, 0x8d, 0x11, 0x3f, 0x17, 0x3d, 0xcd, 0x7a, 0x1c, 0x46, 0x07, 0x7d, 0x45, 0x82, 0xd1, 0x50, + 0x45, 0x8c, 0x1e, 0xed, 0x2a, 0x68, 0xbb, 0x05, 0x43, 0xe1, 0x4c, 0x3f, 0x24, 0x5c, 0x97, 0x65, + 0xaa, 0xcb, 0x02, 0x9a, 0x3f, 0x8c, 0x2e, 0xe1, 0xd7, 0xa8, 0xdf, 0x90, 0x60, 0xb2, 0x4d, 0x95, + 0x19, 0x33, 0x0b, 0x3b, 0x17, 0xcd, 0x85, 0x27, 0xfb, 0x27, 0xe4, 0x5a, 0x5d, 0xa0, 0x5a, 0xbd, + 0x19, 0xbd, 0xe9, 0x30, 0x5a, 0x05, 0xf2, 0xf3, 0x0d, 0xff, 0x48, 0x56, 0xa0, 0x1f, 0x74, 0xae, + 0x4f, 0xc1, 0x84, 0x42, 0x4f, 0xf4, 0x4d, 0xc7, 0xf5, 0x79, 0x8e, 0xea, 0xf3, 0x2c, 0x5a, 0xff, + 0xd1, 0xf4, 0x69, 0x4d, 0xeb, 0x5f, 0x68, 0xbd, 0x1c, 0xd8, 0xdd, 0x8b, 0xda, 0x16, 0xab, 0x85, + 0xc7, 0xfa, 0xa2, 0xe1, 0x4a, 0x3d, 0x49, 0x95, 0x3a, 0x83, 0x1e, 0xe9, 0xa4, 0x54, 0xe0, 0xdc, + 0x9d, 0x6e, 0xec, 0x9a, 0xa7, 0xdf, 0xc1, 0x4a, 0xe0, 0x77, 0xa1, 0x9f, 0x15, 0x67, 0x9e, 0x4e, + 0x76, 0xed, 0x37, 0x50, 0xc7, 0x16, 0x1e, 0xe8, 0x01, 0x93, 0xcb, 0x75, 0x0f, 0x95, 0x6b, 0x1a, + 0x9d, 0xe8, 0x24, 0x17, 0xa9, 0x65, 0xd1, 0x07, 0x24, 0xef, 0x98, 0xe4, 0xa9, 0xee, 0xbc, 0x83, + 0xc5, 0x6e, 0xe1, 0xc1, 0x9e, 0x70, 0xb9, 0x24, 0xf7, 0x51, 0x49, 0x66, 0xd1, 0x74, 0x47, 0x49, + 0x58, 0xe9, 0x7b, 0xab, 0x0f, 0x15, 0xbc, 0x72, 0x0c, 0x66, 0x3a, 0xf4, 0xe8, 0x5e, 0x8b, 0x79, + 0xc7, 0xd5, 0xe5, 0x8e, 0x6c, 0xec, 0x1d, 0xd8, 0x0e, 0xb7, 0x6e, 0x0f, 0x7f, 0x33, 0xb6, 0xb7, + 0x17, 0x62, 0xff, 0x26, 0x05, 0x68, 0xd5, 0xa9, 0x2d, 0xd8, 0x98, 0xfd, 0x2f, 0x3c, 0x3e, 0xcb, + 0x23, 0x97, 0xbf, 0xa4, 0x1f, 0xe9, 0xf2, 0xd7, 0x6a, 0xe8, 0x3a, 0x55, 0xa2, 0xbf, 0x2b, 0x9b, + 0x3d, 0xdf, 0xa9, 0x4a, 0xfe, 0x58, 0xee, 0x54, 0xb5, 0x3f, 0x72, 0x9d, 0xba, 0x75, 0x77, 0x33, + 0x06, 0x0f, 0x7b, 0x3f, 0x85, 0x5f, 0x95, 0x1c, 0xea, 0x72, 0x55, 0x32, 0xdf, 0xf1, 0x3e, 0x24, + 0xa7, 0x46, 0x67, 0xc5, 0x97, 0x7e, 0x87, 0x7b, 0x3b, 0x24, 0xcb, 0x3f, 0x05, 0xec, 0x6f, 0x21, + 0x9c, 0x80, 0x42, 0xab, 0x3b, 0x79, 0x93, 0xfa, 0xc3, 0x49, 0xc8, 0xad, 0x3a, 0xb5, 0x72, 0x55, + 0x77, 0x6f, 0x93, 0xaf, 0x3d, 0xdd, 0xf9, 0xbe, 0x0b, 0xba, 0x79, 0x63, 0x66, 0x8c, 0xd9, 0xb4, + 0x8b, 0x25, 0x1b, 0x30, 0x1e, 0xb9, 0x65, 0xcc, 0x3d, 0x6b, 0xf1, 0x30, 0x97, 0x9d, 0x23, 0xac, + 0x64, 0x7a, 0x3d, 0x21, 0xe0, 0xdf, 0xe8, 0x5a, 0x7b, 0x67, 0x66, 0x0e, 0x75, 0xf1, 0x76, 0x5e, + 0x0e, 0xf4, 0xc7, 0xac, 0x00, 0xf9, 0xe8, 0xa0, 0x78, 0x23, 0xf6, 0x87, 0x12, 0x8c, 0xac, 0x3a, + 0xa2, 0x14, 0xc4, 0x3f, 0xa5, 0x57, 0x93, 0x9e, 0xf0, 0x3e, 0xd1, 0x9a, 0xec, 0xcd, 0x6f, 0xc5, + 0x67, 0x5b, 0x7d, 0x23, 0x1c, 0x81, 0xc9, 0x80, 0x9e, 0x9e, 0xfe, 0xbf, 0x93, 0xa0, 0xf1, 0xb1, + 0x84, 0x6b, 0xba, 0xe1, 0x55, 0x91, 0xf8, 0x2f, 0xea, 0xc5, 0x0b, 0xdf, 0xce, 0xa9, 0xc3, 0xda, + 0x79, 0x9f, 0x06, 0x88, 0x88, 0x3d, 0xbd, 0x8d, 0xaf, 0xd5, 0xd6, 0x6b, 0x41, 0x52, 0x1f, 0x5f, + 0xdc, 0x89, 0x5c, 0xfe, 0x91, 0x5f, 0x97, 0x60, 0x74, 0xd5, 0xa9, 0x6d, 0x1b, 0xd5, 0xff, 0xef, + 0xfd, 0x77, 0x17, 0x8e, 0x84, 0x34, 0xbd, 0x4d, 0x26, 0x3d, 0xf3, 0x6a, 0x0a, 0x92, 0xab, 0x4e, + 0x0d, 0xbd, 0x08, 0xe3, 0xd1, 0xa2, 0xa1, 0x63, 0x2d, 0xd8, 0x9a, 0x11, 0x3a, 0xaf, 0xd7, 0x3a, + 0x67, 0x0f, 0xb4, 0x0f, 0xa3, 0xe1, 0xcc, 0x71, 0xb2, 0x0b, 0x93, 0x10, 0x66, 0xe1, 0x91, 0x5e, + 0x31, 0xbd, 0xce, 0xde, 0x0e, 0x69, 0x2f, 0xe8, 0xdd, 0xdd, 0x85, 0x5a, 0x20, 0x75, 0xae, 0x6e, + 0xdb, 0x84, 0x15, 0x62, 0xbd, 0x68, 0x48, 0xe9, 0x66, 0xbd, 0x08, 0x6e, 0x57, 0xeb, 0x75, 0x9a, + 0x5a, 0x3b, 0x00, 0x81, 0x79, 0x70, 0x6f, 0x17, 0x0e, 0x3e, 0x5a, 0xe1, 0xe1, 0x9e, 0xd0, 0xbc, + 0x97, 0x4e, 0xb7, 0xb8, 0x18, 0xff, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb7, 0x35, 0x8c, 0x98, + 0x81, 0x94, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/x/staking/types/tx.pb.go b/x/staking/types/tx.pb.go index 50e1765ff6c0..c3a1bf706599 100644 --- a/x/staking/types/tx.pb.go +++ b/x/staking/types/tx.pb.go @@ -13,11 +13,11 @@ import ( grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" - _ "github.com/golang/protobuf/ptypes/timestamp" _ "github.com/regen-network/cosmos-proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" + _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" math_bits "math/bits" diff --git a/x/upgrade/types/upgrade.pb.go b/x/upgrade/types/upgrade.pb.go index 642f4446fe28..9fd476986f79 100644 --- a/x/upgrade/types/upgrade.pb.go +++ b/x/upgrade/types/upgrade.pb.go @@ -9,7 +9,7 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" - _ "github.com/golang/protobuf/ptypes/timestamp" + _ "google.golang.org/protobuf/types/known/timestamppb" io "io" math "math" math_bits "math/bits"