From e946c679746b056e14b2f548ab4578b104f13067 Mon Sep 17 00:00:00 2001 From: Sean McGary Date: Fri, 10 Jan 2025 14:12:22 -0600 Subject: [PATCH] fix: use root_index rather than snapshot when generating a claim --- .../eigenlayer/sidecar/v1/rewards.pb.ts | 29 +- gen/openapiv2/apidocs.swagger.json | 1346 +---------------- .../eigenlayer/sidecar/v1/rewards.pb.go | 1044 ++++++++----- .../eigenlayer/sidecar/v1/rewards.pb.gw.go | 69 + .../eigenlayer/sidecar/v1/rewards_grpc.pb.go | 38 + .../src/eigenlayer/sidecar/v1/rewards_pb2.py | 162 +- .../eigenlayer/sidecar/v1/rewards_pb2_grpc.py | 43 + protos/eigenlayer/sidecar/v1/rewards.proto | 32 +- 8 files changed, 921 insertions(+), 1842 deletions(-) diff --git a/gen/api-ts/eigenlayer/sidecar/v1/rewards.pb.ts b/gen/api-ts/eigenlayer/sidecar/v1/rewards.pb.ts index c0b7229..19912a3 100644 --- a/gen/api-ts/eigenlayer/sidecar/v1/rewards.pb.ts +++ b/gen/api-ts/eigenlayer/sidecar/v1/rewards.pb.ts @@ -5,6 +5,8 @@ */ import * as fm from "../../../fetch.pb" +import * as GoogleProtobufTimestamp from "../../../google/protobuf/timestamp.pb" +import * as GoogleProtobufWrappers from "../../../google/protobuf/wrappers.pb" type Absent = { [k in Exclude]?: undefined }; type OneOf = @@ -64,9 +66,15 @@ export type AttributableReward = { export type DistributionRoot = { root?: string + rootIndex?: string + rewardsCalculationEnd?: GoogleProtobufTimestamp.Timestamp + rewardsCalculationEndUnit?: string + activatedAt?: GoogleProtobufTimestamp.Timestamp + activatedAtUnit?: string + createdAtBlockNumber?: string + transactionHash?: string blockHeight?: string - calculationEndTimestamp?: string - activatedAt?: string + logIndex?: string disabled?: boolean } @@ -143,12 +151,15 @@ export type GetAttributableRewardsForDistributionRootResponse = { rewards?: AttributableReward[] } -export type GenerateClaimProofRequest = { + +type BaseGenerateClaimProofRequest = { earnerAddress?: string tokens?: string[] - snapshot?: string } +export type GenerateClaimProofRequest = BaseGenerateClaimProofRequest + & OneOf<{ rootIndex: GoogleProtobufWrappers.Int64Value }> + export type GenerateClaimProofResponse = { proof?: Proof } @@ -216,6 +227,13 @@ export type GetClaimedRewardsByBlockResponse = { rewards?: ClaimedReward[] } +export type ListDistributionRootsRequest = { +} + +export type ListDistributionRootsResponse = { + distributionRoots?: DistributionRoot[] +} + export class Rewards { static GetRewardsRoot(req: GetRewardsRootRequest, initReq?: fm.InitReq): Promise { return fm.fetchReq(`/rewards/v1/blocks/${req["blockHeight"]}/rewards-root?${fm.renderURLSearchParams(req, ["blockHeight"])}`, {...initReq, method: "GET"}) @@ -259,4 +277,7 @@ export class Rewards { static GetClaimedRewardsByBlock(req: GetClaimedRewardsByBlockRequest, initReq?: fm.InitReq): Promise { return fm.fetchReq(`/rewards/v1/blocks/${req["blockHeight"]}/claimed-rewards?${fm.renderURLSearchParams(req, ["blockHeight"])}`, {...initReq, method: "GET"}) } + static ListDistributionRoots(req: ListDistributionRootsRequest, initReq?: fm.InitReq): Promise { + return fm.fetchReq(`/rewards/v1/distribution-roots?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"}) + } } \ No newline at end of file diff --git a/gen/openapiv2/apidocs.swagger.json b/gen/openapiv2/apidocs.swagger.json index 5b50175..7f5351a 100644 --- a/gen/openapiv2/apidocs.swagger.json +++ b/gen/openapiv2/apidocs.swagger.json @@ -1,836 +1,17 @@ { "swagger": "2.0", "info": { - "title": "eigenlayer/sidecar/v1/api.proto", + "title": "eigenlayer/sidecar/v1/eventTypes/eigenState.proto", "version": "version not set" }, - "tags": [ - { - "name": "Rpc" - }, - { - "name": "Health" - }, - { - "name": "Protocol" - }, - { - "name": "Rewards" - } - ], "consumes": [ "application/json" ], "produces": [ "application/json" ], - "paths": { - "/protocol/v1/operators/{operatorAddress}/delegated-stakers": { - "get": { - "summary": "GetDelegatedStakersForOperator returns the list of stakers that have delegated to an operator.\nBlockHeight is optional, otherwise latest is used.", - "operationId": "Protocol_GetDelegatedStakersForOperator", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetDelegatedStakersForOperatorResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "operatorAddress", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "blockHeight", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - }, - { - "name": "pageNumber", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - }, - { - "name": "pageSize", - "in": "query", - "required": false, - "type": "integer", - "format": "int64" - } - ], - "tags": [ - "Protocol" - ] - } - }, - "/protocol/v1/operators/{operatorAddress}/delegated-strategies": { - "get": { - "summary": "GetDelegatedStrategiesForOperator returns strategies an Operator has delegated", - "operationId": "Protocol_GetDelegatedStrategiesForOperator", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetDelegatedStrategiesForOperatorResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "operatorAddress", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "blockHeight", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "Protocol" - ] - } - }, - "/protocol/v1/operators/{operatorAddress}/registered-avs": { - "get": { - "summary": "GetRegisteredAvsForOperator returns the list of registered AVs for a given operator\nBlockHeight is optional, otherwise latest is used.", - "operationId": "Protocol_GetRegisteredAvsForOperator", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetRegisteredAvsForOperatorResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "operatorAddress", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "blockHeight", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "Protocol" - ] - } - }, - "/protocol/v1/operators/{operatorAddress}/strategies/{strategyAddress}/delegated-stake": { - "get": { - "summary": "GetOperatorDelegatedStakeForStrategy returns the amount of delegated stake for a given strategy for an operator", - "operationId": "Protocol_GetOperatorDelegatedStakeForStrategy", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetOperatorDelegatedStakeForStrategyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "operatorAddress", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "strategyAddress", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "blockHeight", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "Protocol" - ] - } - }, - "/protocol/v1/stakers/{stakerAddress}/shares": { - "get": { - "summary": "GetStakerShares returns the shares of a staker, and optionally, the operator operator they've delegated to and\nthe AVS the operator has registered with.", - "operationId": "Protocol_GetStakerShares", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetStakerSharesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "stakerAddress", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "blockHeight", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "Protocol" - ] - } - }, - "/rewards/v1/attributable-rewards-by-root/{distributionRoot}": { - "get": { - "operationId": "Rewards_GetAttributableRewardsForDistributionRoot", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetAttributableRewardsForDistributionRootResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "distributionRoot", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/attributable-rewards/{snapshot}": { - "get": { - "summary": "GetAttributableRewardsForSnapshot returns the attributable rewards for the provided snapshot.\nThis takes the cumulative rewards amounts and breaks them down across operators, avss, strategies, etc", - "operationId": "Rewards_GetAttributableRewardsForSnapshot", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetAttributableRewardsForSnapshotResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "snapshot", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/backfill-staker-operators": { - "post": { - "operationId": "Rewards_BackfillStakerOperators", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1BackfillStakerOperatorsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1BackfillStakerOperatorsRequest" - } - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/blocks/{blockHeight}/claimed-rewards": { - "get": { - "summary": "GetClaimedRewardsByBlock returns the claimed rewards for the given block height", - "operationId": "Rewards_GetClaimedRewardsByBlock", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetClaimedRewardsByBlockResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "blockHeight", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/blocks/{blockHeight}/rewards-root": { - "get": { - "summary": "GetRewardsRoot returns the posted on-chain root for the give block height", - "operationId": "Rewards_GetRewardsRoot", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetRewardsRootResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "blockHeight", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/claim-proof": { - "post": { - "summary": "GenerateClaimProof generates a proof for the given earner address and tokens for claiming\ntokens against the RewardsCoordinator", - "operationId": "Rewards_GenerateClaimProof", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GenerateClaimProofResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1GenerateClaimProofRequest" - } - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/earners/{earnerAddress}/available-rewards": { - "get": { - "summary": "GetAvailableRewards returns the available rewards for the given earner address\nThis takes the amount earned from the current active root and subtracts total claimed.", - "operationId": "Rewards_GetAvailableRewards", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetAvailableRewardsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "earnerAddress", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/earners/{earnerAddress}/available-rewards-tokens": { - "get": { - "summary": "GetAvailableRewardsTokens returns the available rewards tokens for the given earner address", - "operationId": "Rewards_GetAvailableRewardsTokens", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetAvailableRewardsTokensResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "earnerAddress", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/earners/{earnerAddress}/summarized-rewards": { - "get": { - "summary": "GetSummarizedRewardsForEarner returns the summarized rewards for the given earner address, including how much\ntheyve earned, how much is currently claimable, and how much has been claimed.", - "operationId": "Rewards_GetSummarizedRewardsForEarner", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetSummarizedRewardsForEarnerResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "earnerAddress", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "blockHeight", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/earners/{earnerAddress}/total-claimed-rewards": { - "get": { - "summary": "GetTotalClaimedRewards returns the total claimed rewards for the given earner address\nBlockHeight is optional. If omitted, the latest block height is used.", - "operationId": "Rewards_GetTotalClaimedRewards", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetTotalClaimedRewardsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "earnerAddress", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "blockHeight", - "in": "query", - "required": false, - "type": "string", - "format": "uint64" - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/generate-rewards": { - "post": { - "summary": "GenerateRewards generates rewards for the given cutoff_date.\nIf respondWithRewardsData is true, the response will include the rewards data, otherwise\nthe sidecar will cache the data to be requested later.", - "operationId": "Rewards_GenerateRewards", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GenerateRewardsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1GenerateRewardsRequest" - } - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/generate-rewards-root": { - "post": { - "summary": "GenerateRewardsRoot generates a rewards root for the given snapshot.\nReturns an error if the rewards have not been generated for the snapshot.", - "operationId": "Rewards_GenerateRewardsRoot", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GenerateRewardsRootResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1GenerateRewardsRootRequest" - } - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/generate-staker-operators": { - "post": { - "operationId": "Rewards_GenerateStakerOperators", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GenerateStakerOperatorsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1GenerateStakerOperatorsRequest" - } - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rewards/v1/rewards/{snapshot}": { - "get": { - "summary": "GetRewardsForSnapshot returns the rewards for the provided snapshot.\nUseful if you generated the rewards and want to fetch them later.", - "operationId": "Rewards_GetRewardsForSnapshot", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetRewardsForSnapshotResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "snapshot", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "Rewards" - ] - } - }, - "/rpc/v1/latest-block": { - "post": { - "operationId": "Rpc_GetBlockHeight", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetBlockHeightResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1GetBlockHeightRequest" - } - } - ], - "tags": [ - "Rpc" - ] - } - }, - "/rpc/v1/state-roots/{blockNumber}": { - "post": { - "operationId": "Rpc_GetStateRoot", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetStateRootResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "blockNumber", - "in": "path", - "required": true, - "type": "string", - "format": "uint64" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/RpcGetStateRootBody" - } - } - ], - "tags": [ - "Rpc" - ] - } - }, - "/v1/health": { - "get": { - "operationId": "Health_HealthCheck", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1HealthCheckResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "service", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "Health" - ] - } - }, - "/v1/ready": { - "get": { - "operationId": "Health_ReadyCheck", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ReadyResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "tags": [ - "Health" - ] - } - } - }, + "paths": {}, "definitions": { - "HealthCheckResponseServingStatus": { - "type": "string", - "enum": [ - "UNKNOWN", - "SERVING", - "NOT_SERVING", - "SERVICE_UNKNOWN" - ], - "default": "UNKNOWN", - "description": " - SERVICE_UNKNOWN: Used only by the Watch method." - }, - "RpcGetStateRootBody": { - "type": "object" - }, "protobufAny": { "type": "object", "properties": { @@ -858,529 +39,6 @@ } } } - }, - "v1AttributableReward": { - "type": "object", - "properties": { - "earner": { - "type": "string" - }, - "operator": { - "type": "string" - }, - "avs": { - "type": "string" - }, - "token": { - "type": "string" - }, - "strategy": { - "type": "string" - }, - "multiplier": { - "type": "string" - }, - "amount": { - "type": "string" - }, - "shares": { - "type": "string" - }, - "rewardHash": { - "type": "string" - }, - "snapshot": { - "type": "string" - } - } - }, - "v1BackfillStakerOperatorsRequest": { - "type": "object", - "properties": { - "waitForComplete": { - "type": "boolean" - } - } - }, - "v1BackfillStakerOperatorsResponse": { - "type": "object", - "properties": { - "queued": { - "type": "boolean" - } - } - }, - "v1ClaimedReward": { - "type": "object", - "properties": { - "earner": { - "type": "string" - }, - "claimer": { - "type": "string" - }, - "token": { - "type": "string" - }, - "amount": { - "type": "string" - }, - "distributionRoot": { - "type": "string" - } - } - }, - "v1DistributionRoot": { - "type": "object", - "properties": { - "root": { - "type": "string" - }, - "blockHeight": { - "type": "string", - "format": "uint64" - }, - "calculationEndTimestamp": { - "type": "string", - "format": "uint64" - }, - "activatedAt": { - "type": "string", - "format": "uint64" - }, - "disabled": { - "type": "boolean" - } - } - }, - "v1EarnerLeaf": { - "type": "object", - "properties": { - "earner": { - "type": "string" - }, - "earnerTokenRoot": { - "type": "string" - } - } - }, - "v1GenerateClaimProofRequest": { - "type": "object", - "properties": { - "earnerAddress": { - "type": "string" - }, - "tokens": { - "type": "array", - "items": { - "type": "string" - } - }, - "snapshot": { - "type": "string" - } - } - }, - "v1GenerateClaimProofResponse": { - "type": "object", - "properties": { - "proof": { - "$ref": "#/definitions/v1Proof" - } - } - }, - "v1GenerateRewardsRequest": { - "type": "object", - "properties": { - "cutoffDate": { - "type": "string" - }, - "respondWithRewardsData": { - "type": "boolean" - }, - "waitForComplete": { - "type": "boolean" - } - } - }, - "v1GenerateRewardsResponse": { - "type": "object", - "properties": { - "cutoffDate": { - "type": "string" - }, - "rewards": { - "$ref": "#/definitions/v1Reward", - "title": "Returned if respondWithRewardsData is true in the request" - }, - "queued": { - "type": "boolean" - } - } - }, - "v1GenerateRewardsRootRequest": { - "type": "object", - "properties": { - "cutoffDate": { - "type": "string", - "title": "The date to calculate rewards up to, exclusive" - } - } - }, - "v1GenerateRewardsRootResponse": { - "type": "object", - "properties": { - "rewardsRoot": { - "type": "string" - }, - "rewardsCalcEndDate": { - "type": "string" - } - } - }, - "v1GenerateStakerOperatorsRequest": { - "type": "object", - "properties": { - "cutoffDate": { - "type": "string" - }, - "waitForComplete": { - "type": "boolean" - } - } - }, - "v1GenerateStakerOperatorsResponse": { - "type": "object", - "properties": { - "queued": { - "type": "boolean" - } - } - }, - "v1GetAttributableRewardsForDistributionRootResponse": { - "type": "object", - "properties": { - "rewards": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1AttributableReward" - } - } - } - }, - "v1GetAttributableRewardsForSnapshotResponse": { - "type": "object", - "properties": { - "rewards": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1AttributableReward" - } - } - } - }, - "v1GetAvailableRewardsResponse": { - "type": "object", - "properties": { - "rewards": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1Reward" - } - } - } - }, - "v1GetAvailableRewardsTokensResponse": { - "type": "object", - "properties": { - "tokens": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1GetBlockHeightRequest": { - "type": "object", - "properties": { - "verified": { - "type": "boolean" - } - } - }, - "v1GetBlockHeightResponse": { - "type": "object", - "properties": { - "blockNumber": { - "type": "string", - "format": "uint64" - }, - "blockHash": { - "type": "string" - } - } - }, - "v1GetClaimedRewardsByBlockResponse": { - "type": "object", - "properties": { - "rewards": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1ClaimedReward" - } - } - } - }, - "v1GetDelegatedStakersForOperatorResponse": { - "type": "object", - "properties": { - "stakerAddress": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1GetDelegatedStrategiesForOperatorResponse": { - "type": "object", - "properties": { - "strategyAddresses": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1GetOperatorDelegatedStakeForStrategyResponse": { - "type": "object", - "properties": { - "shares": { - "type": "string" - }, - "avsAddresses": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1GetRegisteredAvsForOperatorResponse": { - "type": "object", - "properties": { - "avsAddresses": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1GetRewardsForSnapshotResponse": { - "type": "object", - "properties": { - "rewards": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1Reward" - } - } - } - }, - "v1GetRewardsRootResponse": { - "type": "object", - "properties": { - "rewardsRoot": { - "$ref": "#/definitions/v1DistributionRoot" - } - } - }, - "v1GetStakerSharesResponse": { - "type": "object", - "properties": { - "shares": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1StakerShare" - } - } - } - }, - "v1GetStateRootResponse": { - "type": "object", - "properties": { - "ethBlockNumber": { - "type": "string", - "format": "uint64" - }, - "ethBlockHash": { - "type": "string" - }, - "stateRoot": { - "type": "string" - } - } - }, - "v1GetSummarizedRewardsForEarnerResponse": { - "type": "object", - "properties": { - "rewards": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1SummarizedEarnerReward" - } - } - } - }, - "v1GetTotalClaimedRewardsResponse": { - "type": "object", - "properties": { - "rewards": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1Reward" - } - } - } - }, - "v1HealthCheckResponse": { - "type": "object", - "properties": { - "status": { - "$ref": "#/definitions/HealthCheckResponseServingStatus" - } - } - }, - "v1Proof": { - "type": "object", - "properties": { - "root": { - "type": "string" - }, - "rootIndex": { - "type": "integer", - "format": "int64" - }, - "earnerIndex": { - "type": "integer", - "format": "int64" - }, - "earnerTreeProof": { - "type": "string" - }, - "earnerLeaf": { - "$ref": "#/definitions/v1EarnerLeaf" - }, - "leafIndices": { - "type": "array", - "items": { - "type": "integer", - "format": "int64" - } - }, - "tokenTreeProofs": { - "type": "array", - "items": { - "type": "string" - } - }, - "tokenLeaves": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1TokenLeaf" - } - } - } - }, - "v1ReadyResponse": { - "type": "object", - "properties": { - "ready": { - "type": "boolean" - } - } - }, - "v1Reward": { - "type": "object", - "properties": { - "earner": { - "type": "string" - }, - "token": { - "type": "string" - }, - "amount": { - "type": "string" - }, - "snapshot": { - "type": "string" - } - } - }, - "v1StakerShare": { - "type": "object", - "properties": { - "strategy": { - "type": "string" - }, - "shares": { - "type": "string" - }, - "operatorAddress": { - "type": "string", - "title": "Operator the staker has delegated to if present" - }, - "avsAddresses": { - "type": "array", - "items": { - "type": "string" - }, - "title": "The operator could be regietered with 0 or many AVSs" - } - } - }, - "v1SummarizedEarnerReward": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "earned": { - "type": "string", - "title": "Rewards that have been earned but not necessarily activated yet" - }, - "claimable": { - "type": "string", - "title": "total rewards that are claimable (does not account for claimed)" - }, - "claimed": { - "type": "string", - "title": "total rewards that have been claimed" - } - } - }, - "v1TokenLeaf": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "cumulativeEarnings": { - "type": "string" - } - } } } } diff --git a/gen/protos/eigenlayer/sidecar/v1/rewards.pb.go b/gen/protos/eigenlayer/sidecar/v1/rewards.pb.go index a0f0cd7..84047a3 100644 --- a/gen/protos/eigenlayer/sidecar/v1/rewards.pb.go +++ b/gen/protos/eigenlayer/sidecar/v1/rewards.pb.go @@ -10,6 +10,8 @@ import ( _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -478,11 +480,17 @@ type DistributionRoot struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Root string `protobuf:"bytes,1,opt,name=root,proto3" json:"root,omitempty"` - BlockHeight uint64 `protobuf:"varint,2,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` - CalculationEndTimestamp uint64 `protobuf:"varint,3,opt,name=calculation_end_timestamp,json=calculationEndTimestamp,proto3" json:"calculation_end_timestamp,omitempty"` - ActivatedAt uint64 `protobuf:"varint,4,opt,name=activated_at,json=activatedAt,proto3" json:"activated_at,omitempty"` - Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"` + Root string `protobuf:"bytes,1,opt,name=root,proto3" json:"root,omitempty"` + RootIndex uint64 `protobuf:"varint,2,opt,name=root_index,json=rootIndex,proto3" json:"root_index,omitempty"` + RewardsCalculationEnd *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=rewards_calculation_end,json=rewardsCalculationEnd,proto3" json:"rewards_calculation_end,omitempty"` + RewardsCalculationEndUnit string `protobuf:"bytes,4,opt,name=rewards_calculation_end_unit,json=rewardsCalculationEndUnit,proto3" json:"rewards_calculation_end_unit,omitempty"` + ActivatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=activated_at,json=activatedAt,proto3" json:"activated_at,omitempty"` + ActivatedAtUnit string `protobuf:"bytes,6,opt,name=activated_at_unit,json=activatedAtUnit,proto3" json:"activated_at_unit,omitempty"` + CreatedAtBlockNumber uint64 `protobuf:"varint,7,opt,name=created_at_block_number,json=createdAtBlockNumber,proto3" json:"created_at_block_number,omitempty"` + TransactionHash string `protobuf:"bytes,8,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"` + BlockHeight uint64 `protobuf:"varint,9,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + LogIndex uint64 `protobuf:"varint,10,opt,name=log_index,json=logIndex,proto3" json:"log_index,omitempty"` + Disabled bool `protobuf:"varint,11,opt,name=disabled,proto3" json:"disabled,omitempty"` } func (x *DistributionRoot) Reset() { @@ -524,24 +532,66 @@ func (x *DistributionRoot) GetRoot() string { return "" } -func (x *DistributionRoot) GetBlockHeight() uint64 { +func (x *DistributionRoot) GetRootIndex() uint64 { if x != nil { - return x.BlockHeight + return x.RootIndex } return 0 } -func (x *DistributionRoot) GetCalculationEndTimestamp() uint64 { +func (x *DistributionRoot) GetRewardsCalculationEnd() *timestamppb.Timestamp { if x != nil { - return x.CalculationEndTimestamp + return x.RewardsCalculationEnd } - return 0 + return nil +} + +func (x *DistributionRoot) GetRewardsCalculationEndUnit() string { + if x != nil { + return x.RewardsCalculationEndUnit + } + return "" } -func (x *DistributionRoot) GetActivatedAt() uint64 { +func (x *DistributionRoot) GetActivatedAt() *timestamppb.Timestamp { if x != nil { return x.ActivatedAt } + return nil +} + +func (x *DistributionRoot) GetActivatedAtUnit() string { + if x != nil { + return x.ActivatedAtUnit + } + return "" +} + +func (x *DistributionRoot) GetCreatedAtBlockNumber() uint64 { + if x != nil { + return x.CreatedAtBlockNumber + } + return 0 +} + +func (x *DistributionRoot) GetTransactionHash() string { + if x != nil { + return x.TransactionHash + } + return "" +} + +func (x *DistributionRoot) GetBlockHeight() uint64 { + if x != nil { + return x.BlockHeight + } + return 0 +} + +func (x *DistributionRoot) GetLogIndex() uint64 { + if x != nil { + return x.LogIndex + } return 0 } @@ -1361,7 +1411,8 @@ type GenerateClaimProofRequest struct { EarnerAddress string `protobuf:"bytes,1,opt,name=earner_address,json=earnerAddress,proto3" json:"earner_address,omitempty"` Tokens []string `protobuf:"bytes,2,rep,name=tokens,proto3" json:"tokens,omitempty"` - Snapshot string `protobuf:"bytes,3,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + // if root_index is omitted, the current active root will be used + RootIndex *wrapperspb.Int64Value `protobuf:"bytes,3,opt,name=root_index,json=rootIndex,proto3,oneof" json:"root_index,omitempty"` } func (x *GenerateClaimProofRequest) Reset() { @@ -1410,11 +1461,11 @@ func (x *GenerateClaimProofRequest) GetTokens() []string { return nil } -func (x *GenerateClaimProofRequest) GetSnapshot() string { +func (x *GenerateClaimProofRequest) GetRootIndex() *wrapperspb.Int64Value { if x != nil { - return x.Snapshot + return x.RootIndex } - return "" + return nil } type GenerateClaimProofResponse struct { @@ -2103,6 +2154,91 @@ func (x *GetClaimedRewardsByBlockResponse) GetRewards() []*ClaimedReward { return nil } +type ListDistributionRootsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListDistributionRootsRequest) Reset() { + *x = ListDistributionRootsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListDistributionRootsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListDistributionRootsRequest) ProtoMessage() {} + +func (x *ListDistributionRootsRequest) ProtoReflect() protoreflect.Message { + mi := &file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListDistributionRootsRequest.ProtoReflect.Descriptor instead. +func (*ListDistributionRootsRequest) Descriptor() ([]byte, []int) { + return file_eigenlayer_sidecar_v1_rewards_proto_rawDescGZIP(), []int{36} +} + +type ListDistributionRootsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DistributionRoots []*DistributionRoot `protobuf:"bytes,1,rep,name=distribution_roots,json=distributionRoots,proto3" json:"distribution_roots,omitempty"` +} + +func (x *ListDistributionRootsResponse) Reset() { + *x = ListDistributionRootsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListDistributionRootsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListDistributionRootsResponse) ProtoMessage() {} + +func (x *ListDistributionRootsResponse) ProtoReflect() protoreflect.Message { + mi := &file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListDistributionRootsResponse.ProtoReflect.Descriptor instead. +func (*ListDistributionRootsResponse) Descriptor() ([]byte, []int) { + return file_eigenlayer_sidecar_v1_rewards_proto_rawDescGZIP(), []int{37} +} + +func (x *ListDistributionRootsResponse) GetDistributionRoots() []*DistributionRoot { + if x != nil { + return x.DistributionRoots + } + return nil +} + var File_eigenlayer_sidecar_v1_rewards_proto protoreflect.FileDescriptor var file_eigenlayer_sidecar_v1_rewards_proto_rawDesc = []byte{ @@ -2112,82 +2248,106 @@ var file_eigenlayer_sidecar_v1_rewards_proto_rawDesc = []byte{ 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x50, 0x0a, 0x0a, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x66, + 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x50, 0x0a, 0x0a, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x4c, 0x65, 0x61, + 0x66, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x61, 0x72, + 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x52, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x65, + 0x61, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x75, 0x6d, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x45, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xf1, 0x02, 0x0a, 0x05, 0x50, 0x72, + 0x6f, 0x6f, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x6f, 0x6f, + 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x61, + 0x72, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x61, 0x72, + 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x54, 0x72, 0x65, 0x65, + 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x4a, 0x0a, 0x0b, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, + 0x6c, 0x65, 0x61, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x69, 0x67, + 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x61, 0x72, 0x6e, 0x65, + 0x72, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x0a, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x4c, 0x65, 0x61, + 0x66, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, + 0x69, 0x63, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x72, + 0x65, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x72, 0x65, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x73, + 0x12, 0x4b, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x65, 0x61, 0x66, + 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x22, 0x6a, 0x0a, + 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0xf7, 0x02, 0x0a, 0x12, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x61, 0x72, 0x6e, - 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x52, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x65, 0x61, - 0x66, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x75, 0x6d, 0x75, 0x6c, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x45, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xf1, 0x02, 0x0a, 0x05, 0x50, 0x72, 0x6f, - 0x6f, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x61, 0x72, - 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x61, 0x72, 0x6e, - 0x65, 0x72, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x54, 0x72, 0x65, 0x65, 0x50, - 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x4a, 0x0a, 0x0b, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x6c, - 0x65, 0x61, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x69, 0x67, 0x65, - 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, - 0x4c, 0x65, 0x61, 0x66, 0x52, 0x0a, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x66, - 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x69, - 0x63, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x72, 0x65, - 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x72, 0x65, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x73, 0x12, - 0x4b, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x65, 0x61, 0x66, 0x52, - 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x22, 0x6a, 0x0a, 0x06, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0xf7, 0x02, 0x0a, 0x12, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x61, 0x76, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x22, 0x5c, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x41, 0x56, 0x53, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x57, 0x41, - 0x52, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x41, 0x4c, 0x4c, 0x10, - 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x41, 0x52, 0x4e, 0x45, 0x52, 0x53, - 0x10, 0x02, 0x22, 0xc4, 0x01, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3a, - 0x0a, 0x19, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, - 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x17, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x52, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x61, 0x76, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x5c, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x41, 0x56, 0x53, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x57, + 0x41, 0x52, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x41, 0x4c, 0x4c, + 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x41, 0x52, 0x4e, 0x45, 0x52, + 0x53, 0x10, 0x02, 0x22, 0x83, 0x04, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, 0x17, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x12, + 0x3f, 0x0a, 0x1c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x43, 0x61, + 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x55, 0x6e, 0x69, 0x74, + 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x2a, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, + 0x75, 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x17, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, + 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, + 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x3a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, @@ -2286,302 +2446,327 @@ var file_eigenlayer_sidecar_v1_rewards_proto_rawDesc = []byte{ 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, - 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x76, 0x0a, 0x19, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, + 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x58, 0x0a, 0x1a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, + 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x22, + 0x43, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, + 0x0e, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x22, 0x5e, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x22, 0x7f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, - 0x61, 0x72, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x22, 0x58, 0x0a, 0x1a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, - 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, - 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x6f, 0x66, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x43, 0x0a, 0x1a, 0x47, 0x65, - 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x61, 0x72, 0x6e, - 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, - 0x5e, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, - 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, - 0x7f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, - 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x22, 0x61, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6c, 0x61, 0x69, - 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x22, 0x49, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x61, 0x72, 0x6e, 0x65, - 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3b, - 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x7e, 0x0a, 0x16, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x61, 0x72, - 0x6e, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x24, - 0x47, 0x65, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x61, - 0x72, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x22, 0x78, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x45, - 0x61, 0x72, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, - 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, - 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x9c, - 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x69, - 0x6d, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x44, 0x0a, - 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x42, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x22, 0x6a, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, - 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, + 0x61, 0x72, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0c, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x61, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x32, - 0x90, 0x17, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x34, - 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, - 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, + 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x49, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x41, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x22, 0x3b, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x22, 0x7e, 0x0a, 0x16, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x61, + 0x72, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, + 0x22, 0x86, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, + 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x61, 0x72, 0x6e, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x61, 0x72, + 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x26, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x78, 0x0a, 0x25, 0x47, 0x65, 0x74, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x46, 0x6f, 0x72, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x61, + 0x72, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, + 0x6f, 0x74, 0x22, 0x44, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x6a, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, 0x79, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x07, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, + 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x7f, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, + 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, + 0x6f, 0x74, 0x52, 0x11, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x32, 0xcd, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x34, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, - 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2d, 0x72, - 0x6f, 0x6f, 0x74, 0x12, 0xa9, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x35, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, - 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, - 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, - 0x2a, 0x22, 0x1c, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, - 0xca, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, - 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3d, 0x2e, 0x65, 0x69, - 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x65, 0x69, 0x67, + 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x6b, - 0x65, 0x72, 0x2d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0xca, 0x01, 0x0a, - 0x17, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3d, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, - 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, - 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, - 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x2d, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0xba, 0x01, 0x0a, 0x13, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x6f, 0x6f, - 0x74, 0x12, 0x39, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x2d, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0xa9, 0x01, 0x0a, 0x0f, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x35, 0x2e, + 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, + 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xca, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x12, 0x3d, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x65, - 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, - 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x6f, 0x6f, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, - 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x2d, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0xba, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x12, 0x3b, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x3e, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x2d, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x2d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x12, 0xca, 0x01, 0x0a, 0x17, 0x42, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x53, + 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3d, + 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, + 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, - 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x7d, 0x12, 0xeb, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, - 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x47, 0x2e, 0x65, 0x69, 0x67, 0x65, - 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x46, 0x6f, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x48, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, + 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x73, + 0x74, 0x61, 0x6b, 0x65, 0x72, 0x2d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, + 0xba, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x39, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, - 0x31, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2d, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x7d, 0x12, 0x94, 0x02, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x44, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x12, - 0x4f, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2d, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0xba, 0x01, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x3b, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x46, 0x6f, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, + 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x7b, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x7d, 0x12, 0xeb, 0x01, 0x0a, 0x21, 0x47, 0x65, + 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, + 0x47, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x50, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, - 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x72, 0x65, 0x77, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x48, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, + 0x6f, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2d, 0x62, 0x79, 0x2d, - 0x72, 0x6f, 0x6f, 0x74, 0x2f, 0x7b, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x7d, 0x12, 0xad, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, - 0x38, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, + 0x61, 0x62, 0x6c, 0x65, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x7d, 0x12, 0x94, 0x02, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x46, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x4f, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x44, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x50, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, + 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, + 0x12, 0x3c, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x2d, 0x62, 0x79, 0x2d, 0x72, 0x6f, 0x6f, 0x74, 0x2f, 0x7b, 0x64, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x7d, 0x12, 0xad, + 0x01, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x38, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x39, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x72, 0x6f, - 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x65, 0x69, 0x67, 0x65, - 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, - 0x17, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, - 0x69, 0x6d, 0x2d, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0xcc, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x12, 0x39, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, - 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x65, 0x69, - 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, - 0x36, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x61, 0x72, - 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2d, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xd9, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x12, 0x3c, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, - 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3d, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, - 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x61, - 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x2d, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x2d, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x12, 0x3f, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, + 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x2d, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0xcc, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x39, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3a, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, - 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x7d, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2d, 0x72, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0xeb, 0x01, 0x0a, 0x1d, - 0x47, 0x65, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x2e, - 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, - 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, - 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, - 0x12, 0x37, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x61, - 0x72, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, - 0x64, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xd6, 0x01, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, - 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3e, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, - 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x61, 0x72, 0x6e, + 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xd9, 0x01, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, + 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3c, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, - 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, - 0x31, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x7d, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x42, 0x95, 0x02, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, + 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x61, 0x72, 0x6e, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x7d, 0x2f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x2d, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, + 0x64, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x19, 0x47, 0x65, + 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x3f, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x12, 0xeb, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x61, 0x72, + 0x6e, 0x65, 0x72, 0x12, 0x43, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, + 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x61, 0x72, 0x6e, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x61, 0x79, 0x72, 0x2d, 0x4c, 0x61, 0x62, 0x73, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x67, 0x65, 0x6e, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x45, 0x53, 0x52, 0xaa, 0x02, 0x1d, 0x45, 0x69, - 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1d, 0x45, 0x69, - 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x5c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x29, 0x45, 0x69, - 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x5c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x20, 0x45, 0x69, 0x67, 0x65, 0x6e, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x3a, 0x3a, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x3a, 0x3a, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x6f, 0x72, + 0x45, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x61, 0x72, + 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x73, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, + 0xd6, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3e, 0x2e, 0x65, + 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, + 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, 0x79, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x65, + 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, + 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x42, 0x79, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, + 0x2d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0xba, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, + 0x74, 0x73, 0x12, 0x3b, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, + 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x3c, 0x2e, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, + 0x65, 0x63, 0x61, 0x72, 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, + 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x42, 0x95, 0x02, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x65, 0x69, + 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, + 0x2e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x61, 0x79, 0x72, 0x2d, 0x4c, 0x61, 0x62, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x69, 0x67, 0x65, 0x6e, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x2f, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x45, 0x53, 0x52, 0xaa, 0x02, + 0x1d, 0x45, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x64, 0x65, + 0x63, 0x61, 0x72, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, + 0x1d, 0x45, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x53, 0x69, 0x64, 0x65, + 0x63, 0x61, 0x72, 0x5c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5c, 0x56, 0x31, 0xe2, 0x02, + 0x29, 0x45, 0x69, 0x67, 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5c, 0x53, 0x69, 0x64, 0x65, + 0x63, 0x61, 0x72, 0x5c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x20, 0x45, 0x69, 0x67, + 0x65, 0x6e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x3a, 0x3a, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, + 0x3a, 0x3a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2597,7 +2782,7 @@ func file_eigenlayer_sidecar_v1_rewards_proto_rawDescGZIP() []byte { } var file_eigenlayer_sidecar_v1_rewards_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_eigenlayer_sidecar_v1_rewards_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_eigenlayer_sidecar_v1_rewards_proto_msgTypes = make([]protoimpl.MessageInfo, 38) var file_eigenlayer_sidecar_v1_rewards_proto_goTypes = []any{ (AttributableRewardRewardType)(0), // 0: eigenlayer.sidecar.rewards.v1.AttributableReward.reward_type (*EarnerLeaf)(nil), // 1: eigenlayer.sidecar.rewards.v1.EarnerLeaf @@ -2636,53 +2821,63 @@ var file_eigenlayer_sidecar_v1_rewards_proto_goTypes = []any{ (*ClaimedReward)(nil), // 34: eigenlayer.sidecar.rewards.v1.ClaimedReward (*GetClaimedRewardsByBlockRequest)(nil), // 35: eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockRequest (*GetClaimedRewardsByBlockResponse)(nil), // 36: eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockResponse + (*ListDistributionRootsRequest)(nil), // 37: eigenlayer.sidecar.rewards.v1.ListDistributionRootsRequest + (*ListDistributionRootsResponse)(nil), // 38: eigenlayer.sidecar.rewards.v1.ListDistributionRootsResponse + (*timestamppb.Timestamp)(nil), // 39: google.protobuf.Timestamp + (*wrapperspb.Int64Value)(nil), // 40: google.protobuf.Int64Value } var file_eigenlayer_sidecar_v1_rewards_proto_depIdxs = []int32{ 1, // 0: eigenlayer.sidecar.rewards.v1.Proof.earner_leaf:type_name -> eigenlayer.sidecar.rewards.v1.EarnerLeaf 2, // 1: eigenlayer.sidecar.rewards.v1.Proof.token_leaves:type_name -> eigenlayer.sidecar.rewards.v1.TokenLeaf - 6, // 2: eigenlayer.sidecar.rewards.v1.GetRewardsRootResponse.rewards_root:type_name -> eigenlayer.sidecar.rewards.v1.DistributionRoot - 4, // 3: eigenlayer.sidecar.rewards.v1.GenerateRewardsResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.Reward - 4, // 4: eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.Reward - 5, // 5: eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.AttributableReward - 5, // 6: eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.AttributableReward - 3, // 7: eigenlayer.sidecar.rewards.v1.GenerateClaimProofResponse.proof:type_name -> eigenlayer.sidecar.rewards.v1.Proof - 4, // 8: eigenlayer.sidecar.rewards.v1.GetAvailableRewardsResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.Reward - 4, // 9: eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.Reward - 31, // 10: eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.SummarizedEarnerReward - 34, // 11: eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.ClaimedReward - 7, // 12: eigenlayer.sidecar.rewards.v1.Rewards.GetRewardsRoot:input_type -> eigenlayer.sidecar.rewards.v1.GetRewardsRootRequest - 9, // 13: eigenlayer.sidecar.rewards.v1.Rewards.GenerateRewards:input_type -> eigenlayer.sidecar.rewards.v1.GenerateRewardsRequest - 11, // 14: eigenlayer.sidecar.rewards.v1.Rewards.GenerateStakerOperators:input_type -> eigenlayer.sidecar.rewards.v1.GenerateStakerOperatorsRequest - 13, // 15: eigenlayer.sidecar.rewards.v1.Rewards.BackfillStakerOperators:input_type -> eigenlayer.sidecar.rewards.v1.BackfillStakerOperatorsRequest - 15, // 16: eigenlayer.sidecar.rewards.v1.Rewards.GenerateRewardsRoot:input_type -> eigenlayer.sidecar.rewards.v1.GenerateRewardsRootRequest - 17, // 17: eigenlayer.sidecar.rewards.v1.Rewards.GetRewardsForSnapshot:input_type -> eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotRequest - 19, // 18: eigenlayer.sidecar.rewards.v1.Rewards.GetAttributableRewardsForSnapshot:input_type -> eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotRequest - 21, // 19: eigenlayer.sidecar.rewards.v1.Rewards.GetAttributableRewardsForDistributionRoot:input_type -> eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootRequest - 23, // 20: eigenlayer.sidecar.rewards.v1.Rewards.GenerateClaimProof:input_type -> eigenlayer.sidecar.rewards.v1.GenerateClaimProofRequest - 25, // 21: eigenlayer.sidecar.rewards.v1.Rewards.GetAvailableRewards:input_type -> eigenlayer.sidecar.rewards.v1.GetAvailableRewardsRequest - 27, // 22: eigenlayer.sidecar.rewards.v1.Rewards.GetTotalClaimedRewards:input_type -> eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsRequest - 29, // 23: eigenlayer.sidecar.rewards.v1.Rewards.GetAvailableRewardsTokens:input_type -> eigenlayer.sidecar.rewards.v1.GetAvailableRewardsTokensRequest - 32, // 24: eigenlayer.sidecar.rewards.v1.Rewards.GetSummarizedRewardsForEarner:input_type -> eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerRequest - 35, // 25: eigenlayer.sidecar.rewards.v1.Rewards.GetClaimedRewardsByBlock:input_type -> eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockRequest - 8, // 26: eigenlayer.sidecar.rewards.v1.Rewards.GetRewardsRoot:output_type -> eigenlayer.sidecar.rewards.v1.GetRewardsRootResponse - 10, // 27: eigenlayer.sidecar.rewards.v1.Rewards.GenerateRewards:output_type -> eigenlayer.sidecar.rewards.v1.GenerateRewardsResponse - 12, // 28: eigenlayer.sidecar.rewards.v1.Rewards.GenerateStakerOperators:output_type -> eigenlayer.sidecar.rewards.v1.GenerateStakerOperatorsResponse - 14, // 29: eigenlayer.sidecar.rewards.v1.Rewards.BackfillStakerOperators:output_type -> eigenlayer.sidecar.rewards.v1.BackfillStakerOperatorsResponse - 16, // 30: eigenlayer.sidecar.rewards.v1.Rewards.GenerateRewardsRoot:output_type -> eigenlayer.sidecar.rewards.v1.GenerateRewardsRootResponse - 18, // 31: eigenlayer.sidecar.rewards.v1.Rewards.GetRewardsForSnapshot:output_type -> eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotResponse - 20, // 32: eigenlayer.sidecar.rewards.v1.Rewards.GetAttributableRewardsForSnapshot:output_type -> eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotResponse - 22, // 33: eigenlayer.sidecar.rewards.v1.Rewards.GetAttributableRewardsForDistributionRoot:output_type -> eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootResponse - 24, // 34: eigenlayer.sidecar.rewards.v1.Rewards.GenerateClaimProof:output_type -> eigenlayer.sidecar.rewards.v1.GenerateClaimProofResponse - 26, // 35: eigenlayer.sidecar.rewards.v1.Rewards.GetAvailableRewards:output_type -> eigenlayer.sidecar.rewards.v1.GetAvailableRewardsResponse - 28, // 36: eigenlayer.sidecar.rewards.v1.Rewards.GetTotalClaimedRewards:output_type -> eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsResponse - 30, // 37: eigenlayer.sidecar.rewards.v1.Rewards.GetAvailableRewardsTokens:output_type -> eigenlayer.sidecar.rewards.v1.GetAvailableRewardsTokensResponse - 33, // 38: eigenlayer.sidecar.rewards.v1.Rewards.GetSummarizedRewardsForEarner:output_type -> eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerResponse - 36, // 39: eigenlayer.sidecar.rewards.v1.Rewards.GetClaimedRewardsByBlock:output_type -> eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockResponse - 26, // [26:40] is the sub-list for method output_type - 12, // [12:26] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 39, // 2: eigenlayer.sidecar.rewards.v1.DistributionRoot.rewards_calculation_end:type_name -> google.protobuf.Timestamp + 39, // 3: eigenlayer.sidecar.rewards.v1.DistributionRoot.activated_at:type_name -> google.protobuf.Timestamp + 6, // 4: eigenlayer.sidecar.rewards.v1.GetRewardsRootResponse.rewards_root:type_name -> eigenlayer.sidecar.rewards.v1.DistributionRoot + 4, // 5: eigenlayer.sidecar.rewards.v1.GenerateRewardsResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.Reward + 4, // 6: eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.Reward + 5, // 7: eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.AttributableReward + 5, // 8: eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.AttributableReward + 40, // 9: eigenlayer.sidecar.rewards.v1.GenerateClaimProofRequest.root_index:type_name -> google.protobuf.Int64Value + 3, // 10: eigenlayer.sidecar.rewards.v1.GenerateClaimProofResponse.proof:type_name -> eigenlayer.sidecar.rewards.v1.Proof + 4, // 11: eigenlayer.sidecar.rewards.v1.GetAvailableRewardsResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.Reward + 4, // 12: eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.Reward + 31, // 13: eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.SummarizedEarnerReward + 34, // 14: eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockResponse.rewards:type_name -> eigenlayer.sidecar.rewards.v1.ClaimedReward + 6, // 15: eigenlayer.sidecar.rewards.v1.ListDistributionRootsResponse.distribution_roots:type_name -> eigenlayer.sidecar.rewards.v1.DistributionRoot + 7, // 16: eigenlayer.sidecar.rewards.v1.Rewards.GetRewardsRoot:input_type -> eigenlayer.sidecar.rewards.v1.GetRewardsRootRequest + 9, // 17: eigenlayer.sidecar.rewards.v1.Rewards.GenerateRewards:input_type -> eigenlayer.sidecar.rewards.v1.GenerateRewardsRequest + 11, // 18: eigenlayer.sidecar.rewards.v1.Rewards.GenerateStakerOperators:input_type -> eigenlayer.sidecar.rewards.v1.GenerateStakerOperatorsRequest + 13, // 19: eigenlayer.sidecar.rewards.v1.Rewards.BackfillStakerOperators:input_type -> eigenlayer.sidecar.rewards.v1.BackfillStakerOperatorsRequest + 15, // 20: eigenlayer.sidecar.rewards.v1.Rewards.GenerateRewardsRoot:input_type -> eigenlayer.sidecar.rewards.v1.GenerateRewardsRootRequest + 17, // 21: eigenlayer.sidecar.rewards.v1.Rewards.GetRewardsForSnapshot:input_type -> eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotRequest + 19, // 22: eigenlayer.sidecar.rewards.v1.Rewards.GetAttributableRewardsForSnapshot:input_type -> eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotRequest + 21, // 23: eigenlayer.sidecar.rewards.v1.Rewards.GetAttributableRewardsForDistributionRoot:input_type -> eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootRequest + 23, // 24: eigenlayer.sidecar.rewards.v1.Rewards.GenerateClaimProof:input_type -> eigenlayer.sidecar.rewards.v1.GenerateClaimProofRequest + 25, // 25: eigenlayer.sidecar.rewards.v1.Rewards.GetAvailableRewards:input_type -> eigenlayer.sidecar.rewards.v1.GetAvailableRewardsRequest + 27, // 26: eigenlayer.sidecar.rewards.v1.Rewards.GetTotalClaimedRewards:input_type -> eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsRequest + 29, // 27: eigenlayer.sidecar.rewards.v1.Rewards.GetAvailableRewardsTokens:input_type -> eigenlayer.sidecar.rewards.v1.GetAvailableRewardsTokensRequest + 32, // 28: eigenlayer.sidecar.rewards.v1.Rewards.GetSummarizedRewardsForEarner:input_type -> eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerRequest + 35, // 29: eigenlayer.sidecar.rewards.v1.Rewards.GetClaimedRewardsByBlock:input_type -> eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockRequest + 37, // 30: eigenlayer.sidecar.rewards.v1.Rewards.ListDistributionRoots:input_type -> eigenlayer.sidecar.rewards.v1.ListDistributionRootsRequest + 8, // 31: eigenlayer.sidecar.rewards.v1.Rewards.GetRewardsRoot:output_type -> eigenlayer.sidecar.rewards.v1.GetRewardsRootResponse + 10, // 32: eigenlayer.sidecar.rewards.v1.Rewards.GenerateRewards:output_type -> eigenlayer.sidecar.rewards.v1.GenerateRewardsResponse + 12, // 33: eigenlayer.sidecar.rewards.v1.Rewards.GenerateStakerOperators:output_type -> eigenlayer.sidecar.rewards.v1.GenerateStakerOperatorsResponse + 14, // 34: eigenlayer.sidecar.rewards.v1.Rewards.BackfillStakerOperators:output_type -> eigenlayer.sidecar.rewards.v1.BackfillStakerOperatorsResponse + 16, // 35: eigenlayer.sidecar.rewards.v1.Rewards.GenerateRewardsRoot:output_type -> eigenlayer.sidecar.rewards.v1.GenerateRewardsRootResponse + 18, // 36: eigenlayer.sidecar.rewards.v1.Rewards.GetRewardsForSnapshot:output_type -> eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotResponse + 20, // 37: eigenlayer.sidecar.rewards.v1.Rewards.GetAttributableRewardsForSnapshot:output_type -> eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotResponse + 22, // 38: eigenlayer.sidecar.rewards.v1.Rewards.GetAttributableRewardsForDistributionRoot:output_type -> eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootResponse + 24, // 39: eigenlayer.sidecar.rewards.v1.Rewards.GenerateClaimProof:output_type -> eigenlayer.sidecar.rewards.v1.GenerateClaimProofResponse + 26, // 40: eigenlayer.sidecar.rewards.v1.Rewards.GetAvailableRewards:output_type -> eigenlayer.sidecar.rewards.v1.GetAvailableRewardsResponse + 28, // 41: eigenlayer.sidecar.rewards.v1.Rewards.GetTotalClaimedRewards:output_type -> eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsResponse + 30, // 42: eigenlayer.sidecar.rewards.v1.Rewards.GetAvailableRewardsTokens:output_type -> eigenlayer.sidecar.rewards.v1.GetAvailableRewardsTokensResponse + 33, // 43: eigenlayer.sidecar.rewards.v1.Rewards.GetSummarizedRewardsForEarner:output_type -> eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerResponse + 36, // 44: eigenlayer.sidecar.rewards.v1.Rewards.GetClaimedRewardsByBlock:output_type -> eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockResponse + 38, // 45: eigenlayer.sidecar.rewards.v1.Rewards.ListDistributionRoots:output_type -> eigenlayer.sidecar.rewards.v1.ListDistributionRootsResponse + 31, // [31:46] is the sub-list for method output_type + 16, // [16:31] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name } func init() { file_eigenlayer_sidecar_v1_rewards_proto_init() } @@ -3123,8 +3318,33 @@ func file_eigenlayer_sidecar_v1_rewards_proto_init() { return nil } } + file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[36].Exporter = func(v any, i int) any { + switch v := v.(*ListDistributionRootsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*ListDistributionRootsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[9].OneofWrappers = []any{} + file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[22].OneofWrappers = []any{} file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[26].OneofWrappers = []any{} file_eigenlayer_sidecar_v1_rewards_proto_msgTypes[31].OneofWrappers = []any{} type x struct{} @@ -3133,7 +3353,7 @@ func file_eigenlayer_sidecar_v1_rewards_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_eigenlayer_sidecar_v1_rewards_proto_rawDesc, NumEnums: 1, - NumMessages: 36, + NumMessages: 38, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/protos/eigenlayer/sidecar/v1/rewards.pb.gw.go b/gen/protos/eigenlayer/sidecar/v1/rewards.pb.gw.go index afa1d55..9a22058 100644 --- a/gen/protos/eigenlayer/sidecar/v1/rewards.pb.gw.go +++ b/gen/protos/eigenlayer/sidecar/v1/rewards.pb.gw.go @@ -665,6 +665,24 @@ func local_request_Rewards_GetClaimedRewardsByBlock_0(ctx context.Context, marsh } +func request_Rewards_ListDistributionRoots_0(ctx context.Context, marshaler runtime.Marshaler, client RewardsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListDistributionRootsRequest + var metadata runtime.ServerMetadata + + msg, err := client.ListDistributionRoots(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Rewards_ListDistributionRoots_0(ctx context.Context, marshaler runtime.Marshaler, server RewardsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListDistributionRootsRequest + var metadata runtime.ServerMetadata + + msg, err := server.ListDistributionRoots(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterRewardsHandlerServer registers the http handlers for service Rewards to "mux". // UnaryRPC :call RewardsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1022,6 +1040,31 @@ func RegisterRewardsHandlerServer(ctx context.Context, mux *runtime.ServeMux, se }) + mux.Handle("GET", pattern_Rewards_ListDistributionRoots_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/eigenlayer.sidecar.rewards.v1.Rewards/ListDistributionRoots", runtime.WithHTTPPathPattern("/rewards/v1/distribution-roots")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Rewards_ListDistributionRoots_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Rewards_ListDistributionRoots_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1371,6 +1414,28 @@ func RegisterRewardsHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl }) + mux.Handle("GET", pattern_Rewards_ListDistributionRoots_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) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/eigenlayer.sidecar.rewards.v1.Rewards/ListDistributionRoots", runtime.WithHTTPPathPattern("/rewards/v1/distribution-roots")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Rewards_ListDistributionRoots_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Rewards_ListDistributionRoots_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1402,6 +1467,8 @@ var ( pattern_Rewards_GetSummarizedRewardsForEarner_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"rewards", "v1", "earners", "earner_address", "summarized-rewards"}, "")) pattern_Rewards_GetClaimedRewardsByBlock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"rewards", "v1", "blocks", "block_height", "claimed-rewards"}, "")) + + pattern_Rewards_ListDistributionRoots_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"rewards", "v1", "distribution-roots"}, "")) ) var ( @@ -1432,4 +1499,6 @@ var ( forward_Rewards_GetSummarizedRewardsForEarner_0 = runtime.ForwardResponseMessage forward_Rewards_GetClaimedRewardsByBlock_0 = runtime.ForwardResponseMessage + + forward_Rewards_ListDistributionRoots_0 = runtime.ForwardResponseMessage ) diff --git a/gen/protos/eigenlayer/sidecar/v1/rewards_grpc.pb.go b/gen/protos/eigenlayer/sidecar/v1/rewards_grpc.pb.go index b9fc46d..0d6314d 100644 --- a/gen/protos/eigenlayer/sidecar/v1/rewards_grpc.pb.go +++ b/gen/protos/eigenlayer/sidecar/v1/rewards_grpc.pb.go @@ -33,6 +33,7 @@ const ( Rewards_GetAvailableRewardsTokens_FullMethodName = "/eigenlayer.sidecar.rewards.v1.Rewards/GetAvailableRewardsTokens" Rewards_GetSummarizedRewardsForEarner_FullMethodName = "/eigenlayer.sidecar.rewards.v1.Rewards/GetSummarizedRewardsForEarner" Rewards_GetClaimedRewardsByBlock_FullMethodName = "/eigenlayer.sidecar.rewards.v1.Rewards/GetClaimedRewardsByBlock" + Rewards_ListDistributionRoots_FullMethodName = "/eigenlayer.sidecar.rewards.v1.Rewards/ListDistributionRoots" ) // RewardsClient is the client API for Rewards service. @@ -73,6 +74,7 @@ type RewardsClient interface { GetSummarizedRewardsForEarner(ctx context.Context, in *GetSummarizedRewardsForEarnerRequest, opts ...grpc.CallOption) (*GetSummarizedRewardsForEarnerResponse, error) // GetClaimedRewardsByBlock returns the claimed rewards for the given block height GetClaimedRewardsByBlock(ctx context.Context, in *GetClaimedRewardsByBlockRequest, opts ...grpc.CallOption) (*GetClaimedRewardsByBlockResponse, error) + ListDistributionRoots(ctx context.Context, in *ListDistributionRootsRequest, opts ...grpc.CallOption) (*ListDistributionRootsResponse, error) } type rewardsClient struct { @@ -223,6 +225,16 @@ func (c *rewardsClient) GetClaimedRewardsByBlock(ctx context.Context, in *GetCla return out, nil } +func (c *rewardsClient) ListDistributionRoots(ctx context.Context, in *ListDistributionRootsRequest, opts ...grpc.CallOption) (*ListDistributionRootsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListDistributionRootsResponse) + err := c.cc.Invoke(ctx, Rewards_ListDistributionRoots_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // RewardsServer is the server API for Rewards service. // All implementations should embed UnimplementedRewardsServer // for forward compatibility. @@ -261,6 +273,7 @@ type RewardsServer interface { GetSummarizedRewardsForEarner(context.Context, *GetSummarizedRewardsForEarnerRequest) (*GetSummarizedRewardsForEarnerResponse, error) // GetClaimedRewardsByBlock returns the claimed rewards for the given block height GetClaimedRewardsByBlock(context.Context, *GetClaimedRewardsByBlockRequest) (*GetClaimedRewardsByBlockResponse, error) + ListDistributionRoots(context.Context, *ListDistributionRootsRequest) (*ListDistributionRootsResponse, error) } // UnimplementedRewardsServer should be embedded to have @@ -312,6 +325,9 @@ func (UnimplementedRewardsServer) GetSummarizedRewardsForEarner(context.Context, func (UnimplementedRewardsServer) GetClaimedRewardsByBlock(context.Context, *GetClaimedRewardsByBlockRequest) (*GetClaimedRewardsByBlockResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClaimedRewardsByBlock not implemented") } +func (UnimplementedRewardsServer) ListDistributionRoots(context.Context, *ListDistributionRootsRequest) (*ListDistributionRootsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListDistributionRoots not implemented") +} func (UnimplementedRewardsServer) testEmbeddedByValue() {} // UnsafeRewardsServer may be embedded to opt out of forward compatibility for this service. @@ -584,6 +600,24 @@ func _Rewards_GetClaimedRewardsByBlock_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } +func _Rewards_ListDistributionRoots_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListDistributionRootsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RewardsServer).ListDistributionRoots(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Rewards_ListDistributionRoots_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RewardsServer).ListDistributionRoots(ctx, req.(*ListDistributionRootsRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Rewards_ServiceDesc is the grpc.ServiceDesc for Rewards service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -647,6 +681,10 @@ var Rewards_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetClaimedRewardsByBlock", Handler: _Rewards_GetClaimedRewardsByBlock_Handler, }, + { + MethodName: "ListDistributionRoots", + Handler: _Rewards_ListDistributionRoots_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "eigenlayer/sidecar/v1/rewards.proto", diff --git a/gen/python/eigenlabs-protocol-apis/src/eigenlayer/sidecar/v1/rewards_pb2.py b/gen/python/eigenlabs-protocol-apis/src/eigenlayer/sidecar/v1/rewards_pb2.py index e77b172..3c69022 100644 --- a/gen/python/eigenlabs-protocol-apis/src/eigenlayer/sidecar/v1/rewards_pb2.py +++ b/gen/python/eigenlabs-protocol-apis/src/eigenlayer/sidecar/v1/rewards_pb2.py @@ -23,9 +23,11 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#eigenlayer/sidecar/v1/rewards.proto\x12\x1d\x65igenlayer.sidecar.rewards.v1\x1a\x1cgoogle/api/annotations.proto\"P\n\nEarnerLeaf\x12\x16\n\x06\x65\x61rner\x18\x01 \x01(\tR\x06\x65\x61rner\x12*\n\x11\x65\x61rner_token_root\x18\x02 \x01(\tR\x0f\x65\x61rnerTokenRoot\"R\n\tTokenLeaf\x12\x14\n\x05token\x18\x01 \x01(\tR\x05token\x12/\n\x13\x63umulative_earnings\x18\x02 \x01(\tR\x12\x63umulativeEarnings\"\xf1\x02\n\x05Proof\x12\x12\n\x04root\x18\x01 \x01(\tR\x04root\x12\x1d\n\nroot_index\x18\x02 \x01(\rR\trootIndex\x12!\n\x0c\x65\x61rner_index\x18\x03 \x01(\rR\x0b\x65\x61rnerIndex\x12*\n\x11\x65\x61rner_tree_proof\x18\x04 \x01(\tR\x0f\x65\x61rnerTreeProof\x12J\n\x0b\x65\x61rner_leaf\x18\x05 \x01(\x0b\x32).eigenlayer.sidecar.rewards.v1.EarnerLeafR\nearnerLeaf\x12!\n\x0cleaf_indices\x18\x06 \x03(\rR\x0bleafIndices\x12*\n\x11token_tree_proofs\x18\x07 \x03(\tR\x0ftokenTreeProofs\x12K\n\x0ctoken_leaves\x18\x08 \x03(\x0b\x32(.eigenlayer.sidecar.rewards.v1.TokenLeafR\x0btokenLeaves\"j\n\x06Reward\x12\x16\n\x06\x65\x61rner\x18\x01 \x01(\tR\x06\x65\x61rner\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1a\n\x08snapshot\x18\x04 \x01(\tR\x08snapshot\"\xf7\x02\n\x12\x41ttributableReward\x12\x16\n\x06\x65\x61rner\x18\x01 \x01(\tR\x06\x65\x61rner\x12\x1a\n\x08operator\x18\x02 \x01(\tR\x08operator\x12\x10\n\x03\x61vs\x18\x03 \x01(\tR\x03\x61vs\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12\x1a\n\x08strategy\x18\x05 \x01(\tR\x08strategy\x12\x1e\n\nmultiplier\x18\x06 \x01(\tR\nmultiplier\x12\x16\n\x06\x61mount\x18\x07 \x01(\tR\x06\x61mount\x12\x16\n\x06shares\x18\x08 \x01(\tR\x06shares\x12\x1f\n\x0breward_hash\x18\t \x01(\tR\nrewardHash\x12\x1a\n\x08snapshot\x18\n \x01(\tR\x08snapshot\"\\\n\x0breward_type\x12\x13\n\x0fREWARD_TYPE_AVS\x10\x00\x12\x17\n\x13REWARD_TYPE_FOR_ALL\x10\x01\x12\x1f\n\x1bREWARD_TYPE_FOR_ALL_EARNERS\x10\x02\"\xc4\x01\n\x10\x44istributionRoot\x12\x12\n\x04root\x18\x01 \x01(\tR\x04root\x12!\n\x0c\x62lock_height\x18\x02 \x01(\x04R\x0b\x62lockHeight\x12:\n\x19\x63\x61lculation_end_timestamp\x18\x03 \x01(\x04R\x17\x63\x61lculationEndTimestamp\x12!\n\x0c\x61\x63tivated_at\x18\x04 \x01(\x04R\x0b\x61\x63tivatedAt\x12\x1a\n\x08\x64isabled\x18\x05 \x01(\x08R\x08\x64isabled\":\n\x15GetRewardsRootRequest\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\"l\n\x16GetRewardsRootResponse\x12R\n\x0crewards_root\x18\x01 \x01(\x0b\x32/.eigenlayer.sidecar.rewards.v1.DistributionRootR\x0brewardsRoot\"\xa0\x01\n\x16GenerateRewardsRequest\x12\x1f\n\x0b\x63utoff_date\x18\x01 \x01(\tR\ncutoffDate\x12\x39\n\x19respond_with_rewards_data\x18\x02 \x01(\x08R\x16respondWithRewardsData\x12*\n\x11wait_for_complete\x18\x03 \x01(\x08R\x0fwaitForComplete\"\xa4\x01\n\x17GenerateRewardsResponse\x12\x1f\n\x0b\x63utoff_date\x18\x01 \x01(\tR\ncutoffDate\x12\x44\n\x07rewards\x18\x02 \x01(\x0b\x32%.eigenlayer.sidecar.rewards.v1.RewardH\x00R\x07rewards\x88\x01\x01\x12\x16\n\x06queued\x18\x03 \x01(\x08R\x06queuedB\n\n\x08_rewards\"m\n\x1eGenerateStakerOperatorsRequest\x12\x1f\n\x0b\x63utoff_date\x18\x01 \x01(\tR\ncutoffDate\x12*\n\x11wait_for_complete\x18\x02 \x01(\x08R\x0fwaitForComplete\"9\n\x1fGenerateStakerOperatorsResponse\x12\x16\n\x06queued\x18\x01 \x01(\x08R\x06queued\"L\n\x1e\x42\x61\x63kfillStakerOperatorsRequest\x12*\n\x11wait_for_complete\x18\x01 \x01(\x08R\x0fwaitForComplete\"9\n\x1f\x42\x61\x63kfillStakerOperatorsResponse\x12\x16\n\x06queued\x18\x01 \x01(\x08R\x06queued\"=\n\x1aGenerateRewardsRootRequest\x12\x1f\n\x0b\x63utoff_date\x18\x01 \x01(\tR\ncutoffDate\"s\n\x1bGenerateRewardsRootResponse\x12!\n\x0crewards_root\x18\x01 \x01(\tR\x0brewardsRoot\x12\x31\n\x15rewards_calc_end_date\x18\x02 \x01(\tR\x12rewardsCalcEndDate\":\n\x1cGetRewardsForSnapshotRequest\x12\x1a\n\x08snapshot\x18\x01 \x01(\tR\x08snapshot\"`\n\x1dGetRewardsForSnapshotResponse\x12?\n\x07rewards\x18\x01 \x03(\x0b\x32%.eigenlayer.sidecar.rewards.v1.RewardR\x07rewards\"F\n(GetAttributableRewardsForSnapshotRequest\x12\x1a\n\x08snapshot\x18\x01 \x01(\tR\x08snapshot\"x\n)GetAttributableRewardsForSnapshotResponse\x12K\n\x07rewards\x18\x01 \x03(\x0b\x32\x31.eigenlayer.sidecar.rewards.v1.AttributableRewardR\x07rewards\"_\n0GetAttributableRewardsForDistributionRootRequest\x12+\n\x11\x64istribution_root\x18\x01 \x01(\tR\x10\x64istributionRoot\"\x80\x01\n1GetAttributableRewardsForDistributionRootResponse\x12K\n\x07rewards\x18\x01 \x03(\x0b\x32\x31.eigenlayer.sidecar.rewards.v1.AttributableRewardR\x07rewards\"v\n\x19GenerateClaimProofRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\x12\x16\n\x06tokens\x18\x02 \x03(\tR\x06tokens\x12\x1a\n\x08snapshot\x18\x03 \x01(\tR\x08snapshot\"X\n\x1aGenerateClaimProofResponse\x12:\n\x05proof\x18\x01 \x01(\x0b\x32$.eigenlayer.sidecar.rewards.v1.ProofR\x05proof\"C\n\x1aGetAvailableRewardsRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\"^\n\x1bGetAvailableRewardsResponse\x12?\n\x07rewards\x18\x01 \x03(\x0b\x32%.eigenlayer.sidecar.rewards.v1.RewardR\x07rewards\"\x7f\n\x1dGetTotalClaimedRewardsRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\x12&\n\x0c\x62lock_height\x18\x02 \x01(\x04H\x00R\x0b\x62lockHeight\x88\x01\x01\x42\x0f\n\r_block_height\"a\n\x1eGetTotalClaimedRewardsResponse\x12?\n\x07rewards\x18\x01 \x03(\x0b\x32%.eigenlayer.sidecar.rewards.v1.RewardR\x07rewards\"I\n GetAvailableRewardsTokensRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\";\n!GetAvailableRewardsTokensResponse\x12\x16\n\x06tokens\x18\x01 \x03(\tR\x06tokens\"~\n\x16SummarizedEarnerReward\x12\x14\n\x05token\x18\x01 \x01(\tR\x05token\x12\x16\n\x06\x65\x61rned\x18\x02 \x01(\tR\x06\x65\x61rned\x12\x1c\n\tclaimable\x18\x03 \x01(\tR\tclaimable\x12\x18\n\x07\x63laimed\x18\x04 \x01(\tR\x07\x63laimed\"\x86\x01\n$GetSummarizedRewardsForEarnerRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\x12&\n\x0c\x62lock_height\x18\x02 \x01(\x04H\x00R\x0b\x62lockHeight\x88\x01\x01\x42\x0f\n\r_block_height\"x\n%GetSummarizedRewardsForEarnerResponse\x12O\n\x07rewards\x18\x01 \x03(\x0b\x32\x35.eigenlayer.sidecar.rewards.v1.SummarizedEarnerRewardR\x07rewards\"\x9c\x01\n\rClaimedReward\x12\x16\n\x06\x65\x61rner\x18\x01 \x01(\tR\x06\x65\x61rner\x12\x18\n\x07\x63laimer\x18\x02 \x01(\tR\x07\x63laimer\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x16\n\x06\x61mount\x18\x04 \x01(\tR\x06\x61mount\x12+\n\x11\x64istribution_root\x18\x05 \x01(\tR\x10\x64istributionRoot\"D\n\x1fGetClaimedRewardsByBlockRequest\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\"j\n GetClaimedRewardsByBlockResponse\x12\x46\n\x07rewards\x18\x01 \x03(\x0b\x32,.eigenlayer.sidecar.rewards.v1.ClaimedRewardR\x07rewards2\x90\x17\n\x07Rewards\x12\xb5\x01\n\x0eGetRewardsRoot\x12\x34.eigenlayer.sidecar.rewards.v1.GetRewardsRootRequest\x1a\x35.eigenlayer.sidecar.rewards.v1.GetRewardsRootResponse\"6\x82\xd3\xe4\x93\x02\x30\x12./rewards/v1/blocks/{block_height}/rewards-root\x12\xa9\x01\n\x0fGenerateRewards\x12\x35.eigenlayer.sidecar.rewards.v1.GenerateRewardsRequest\x1a\x36.eigenlayer.sidecar.rewards.v1.GenerateRewardsResponse\"\'\x82\xd3\xe4\x93\x02!\"\x1c/rewards/v1/generate-rewards:\x01*\x12\xca\x01\n\x17GenerateStakerOperators\x12=.eigenlayer.sidecar.rewards.v1.GenerateStakerOperatorsRequest\x1a>.eigenlayer.sidecar.rewards.v1.GenerateStakerOperatorsResponse\"0\x82\xd3\xe4\x93\x02*\"%/rewards/v1/generate-staker-operators:\x01*\x12\xca\x01\n\x17\x42\x61\x63kfillStakerOperators\x12=.eigenlayer.sidecar.rewards.v1.BackfillStakerOperatorsRequest\x1a>.eigenlayer.sidecar.rewards.v1.BackfillStakerOperatorsResponse\"0\x82\xd3\xe4\x93\x02*\"%/rewards/v1/backfill-staker-operators:\x01*\x12\xba\x01\n\x13GenerateRewardsRoot\x12\x39.eigenlayer.sidecar.rewards.v1.GenerateRewardsRootRequest\x1a:.eigenlayer.sidecar.rewards.v1.GenerateRewardsRootResponse\",\x82\xd3\xe4\x93\x02&\"!/rewards/v1/generate-rewards-root:\x01*\x12\xba\x01\n\x15GetRewardsForSnapshot\x12;.eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotRequest\x1a<.eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/rewards/v1/rewards/{snapshot}\x12\xeb\x01\n!GetAttributableRewardsForSnapshot\x12G.eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotRequest\x1aH.eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotResponse\"3\x82\xd3\xe4\x93\x02-\x12+/rewards/v1/attributable-rewards/{snapshot}\x12\x94\x02\n)GetAttributableRewardsForDistributionRoot\x12O.eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootRequest\x1aP.eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootResponse\"D\x82\xd3\xe4\x93\x02>\x12\x82\xd3\xe4\x93\x02\x38\x12\x36/rewards/v1/earners/{earner_address}/available-rewards\x12\xd9\x01\n\x16GetTotalClaimedRewards\x12<.eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsRequest\x1a=.eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsResponse\"B\x82\xd3\xe4\x93\x02<\x12:/rewards/v1/earners/{earner_address}/total-claimed-rewards\x12\xe5\x01\n\x19GetAvailableRewardsTokens\x12?.eigenlayer.sidecar.rewards.v1.GetAvailableRewardsTokensRequest\x1a@.eigenlayer.sidecar.rewards.v1.GetAvailableRewardsTokensResponse\"E\x82\xd3\xe4\x93\x02?\x12=/rewards/v1/earners/{earner_address}/available-rewards-tokens\x12\xeb\x01\n\x1dGetSummarizedRewardsForEarner\x12\x43.eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerRequest\x1a\x44.eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/rewards/v1/earners/{earner_address}/summarized-rewards\x12\xd6\x01\n\x18GetClaimedRewardsByBlock\x12>.eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockRequest\x1a?.eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockResponse\"9\x82\xd3\xe4\x93\x02\x33\x12\x31/rewards/v1/blocks/{block_height}/claimed-rewardsB\x95\x02\n!com.eigenlayer.sidecar.rewards.v1B\x0cRewardsProtoP\x01ZKgithub.com/Layr-Labs/protocol-apis/gen/protos/eigenlayer/sidecar/rewards/v1\xa2\x02\x03\x45SR\xaa\x02\x1d\x45igenlayer.Sidecar.Rewards.V1\xca\x02\x1d\x45igenlayer\\Sidecar\\Rewards\\V1\xe2\x02)Eigenlayer\\Sidecar\\Rewards\\V1\\GPBMetadata\xea\x02 Eigenlayer::Sidecar::Rewards::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#eigenlayer/sidecar/v1/rewards.proto\x12\x1d\x65igenlayer.sidecar.rewards.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"P\n\nEarnerLeaf\x12\x16\n\x06\x65\x61rner\x18\x01 \x01(\tR\x06\x65\x61rner\x12*\n\x11\x65\x61rner_token_root\x18\x02 \x01(\tR\x0f\x65\x61rnerTokenRoot\"R\n\tTokenLeaf\x12\x14\n\x05token\x18\x01 \x01(\tR\x05token\x12/\n\x13\x63umulative_earnings\x18\x02 \x01(\tR\x12\x63umulativeEarnings\"\xf1\x02\n\x05Proof\x12\x12\n\x04root\x18\x01 \x01(\tR\x04root\x12\x1d\n\nroot_index\x18\x02 \x01(\rR\trootIndex\x12!\n\x0c\x65\x61rner_index\x18\x03 \x01(\rR\x0b\x65\x61rnerIndex\x12*\n\x11\x65\x61rner_tree_proof\x18\x04 \x01(\tR\x0f\x65\x61rnerTreeProof\x12J\n\x0b\x65\x61rner_leaf\x18\x05 \x01(\x0b\x32).eigenlayer.sidecar.rewards.v1.EarnerLeafR\nearnerLeaf\x12!\n\x0cleaf_indices\x18\x06 \x03(\rR\x0bleafIndices\x12*\n\x11token_tree_proofs\x18\x07 \x03(\tR\x0ftokenTreeProofs\x12K\n\x0ctoken_leaves\x18\x08 \x03(\x0b\x32(.eigenlayer.sidecar.rewards.v1.TokenLeafR\x0btokenLeaves\"j\n\x06Reward\x12\x16\n\x06\x65\x61rner\x18\x01 \x01(\tR\x06\x65\x61rner\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1a\n\x08snapshot\x18\x04 \x01(\tR\x08snapshot\"\xf7\x02\n\x12\x41ttributableReward\x12\x16\n\x06\x65\x61rner\x18\x01 \x01(\tR\x06\x65\x61rner\x12\x1a\n\x08operator\x18\x02 \x01(\tR\x08operator\x12\x10\n\x03\x61vs\x18\x03 \x01(\tR\x03\x61vs\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12\x1a\n\x08strategy\x18\x05 \x01(\tR\x08strategy\x12\x1e\n\nmultiplier\x18\x06 \x01(\tR\nmultiplier\x12\x16\n\x06\x61mount\x18\x07 \x01(\tR\x06\x61mount\x12\x16\n\x06shares\x18\x08 \x01(\tR\x06shares\x12\x1f\n\x0breward_hash\x18\t \x01(\tR\nrewardHash\x12\x1a\n\x08snapshot\x18\n \x01(\tR\x08snapshot\"\\\n\x0breward_type\x12\x13\n\x0fREWARD_TYPE_AVS\x10\x00\x12\x17\n\x13REWARD_TYPE_FOR_ALL\x10\x01\x12\x1f\n\x1bREWARD_TYPE_FOR_ALL_EARNERS\x10\x02\"\x83\x04\n\x10\x44istributionRoot\x12\x12\n\x04root\x18\x01 \x01(\tR\x04root\x12\x1d\n\nroot_index\x18\x02 \x01(\x04R\trootIndex\x12R\n\x17rewards_calculation_end\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x15rewardsCalculationEnd\x12?\n\x1crewards_calculation_end_unit\x18\x04 \x01(\tR\x19rewardsCalculationEndUnit\x12=\n\x0c\x61\x63tivated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x61\x63tivatedAt\x12*\n\x11\x61\x63tivated_at_unit\x18\x06 \x01(\tR\x0f\x61\x63tivatedAtUnit\x12\x35\n\x17\x63reated_at_block_number\x18\x07 \x01(\x04R\x14\x63reatedAtBlockNumber\x12)\n\x10transaction_hash\x18\x08 \x01(\tR\x0ftransactionHash\x12!\n\x0c\x62lock_height\x18\t \x01(\x04R\x0b\x62lockHeight\x12\x1b\n\tlog_index\x18\n \x01(\x04R\x08logIndex\x12\x1a\n\x08\x64isabled\x18\x0b \x01(\x08R\x08\x64isabled\":\n\x15GetRewardsRootRequest\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\"l\n\x16GetRewardsRootResponse\x12R\n\x0crewards_root\x18\x01 \x01(\x0b\x32/.eigenlayer.sidecar.rewards.v1.DistributionRootR\x0brewardsRoot\"\xa0\x01\n\x16GenerateRewardsRequest\x12\x1f\n\x0b\x63utoff_date\x18\x01 \x01(\tR\ncutoffDate\x12\x39\n\x19respond_with_rewards_data\x18\x02 \x01(\x08R\x16respondWithRewardsData\x12*\n\x11wait_for_complete\x18\x03 \x01(\x08R\x0fwaitForComplete\"\xa4\x01\n\x17GenerateRewardsResponse\x12\x1f\n\x0b\x63utoff_date\x18\x01 \x01(\tR\ncutoffDate\x12\x44\n\x07rewards\x18\x02 \x01(\x0b\x32%.eigenlayer.sidecar.rewards.v1.RewardH\x00R\x07rewards\x88\x01\x01\x12\x16\n\x06queued\x18\x03 \x01(\x08R\x06queuedB\n\n\x08_rewards\"m\n\x1eGenerateStakerOperatorsRequest\x12\x1f\n\x0b\x63utoff_date\x18\x01 \x01(\tR\ncutoffDate\x12*\n\x11wait_for_complete\x18\x02 \x01(\x08R\x0fwaitForComplete\"9\n\x1fGenerateStakerOperatorsResponse\x12\x16\n\x06queued\x18\x01 \x01(\x08R\x06queued\"L\n\x1e\x42\x61\x63kfillStakerOperatorsRequest\x12*\n\x11wait_for_complete\x18\x01 \x01(\x08R\x0fwaitForComplete\"9\n\x1f\x42\x61\x63kfillStakerOperatorsResponse\x12\x16\n\x06queued\x18\x01 \x01(\x08R\x06queued\"=\n\x1aGenerateRewardsRootRequest\x12\x1f\n\x0b\x63utoff_date\x18\x01 \x01(\tR\ncutoffDate\"s\n\x1bGenerateRewardsRootResponse\x12!\n\x0crewards_root\x18\x01 \x01(\tR\x0brewardsRoot\x12\x31\n\x15rewards_calc_end_date\x18\x02 \x01(\tR\x12rewardsCalcEndDate\":\n\x1cGetRewardsForSnapshotRequest\x12\x1a\n\x08snapshot\x18\x01 \x01(\tR\x08snapshot\"`\n\x1dGetRewardsForSnapshotResponse\x12?\n\x07rewards\x18\x01 \x03(\x0b\x32%.eigenlayer.sidecar.rewards.v1.RewardR\x07rewards\"F\n(GetAttributableRewardsForSnapshotRequest\x12\x1a\n\x08snapshot\x18\x01 \x01(\tR\x08snapshot\"x\n)GetAttributableRewardsForSnapshotResponse\x12K\n\x07rewards\x18\x01 \x03(\x0b\x32\x31.eigenlayer.sidecar.rewards.v1.AttributableRewardR\x07rewards\"_\n0GetAttributableRewardsForDistributionRootRequest\x12+\n\x11\x64istribution_root\x18\x01 \x01(\tR\x10\x64istributionRoot\"\x80\x01\n1GetAttributableRewardsForDistributionRootResponse\x12K\n\x07rewards\x18\x01 \x03(\x0b\x32\x31.eigenlayer.sidecar.rewards.v1.AttributableRewardR\x07rewards\"\xaa\x01\n\x19GenerateClaimProofRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\x12\x16\n\x06tokens\x18\x02 \x03(\tR\x06tokens\x12?\n\nroot_index\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.Int64ValueH\x00R\trootIndex\x88\x01\x01\x42\r\n\x0b_root_index\"X\n\x1aGenerateClaimProofResponse\x12:\n\x05proof\x18\x01 \x01(\x0b\x32$.eigenlayer.sidecar.rewards.v1.ProofR\x05proof\"C\n\x1aGetAvailableRewardsRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\"^\n\x1bGetAvailableRewardsResponse\x12?\n\x07rewards\x18\x01 \x03(\x0b\x32%.eigenlayer.sidecar.rewards.v1.RewardR\x07rewards\"\x7f\n\x1dGetTotalClaimedRewardsRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\x12&\n\x0c\x62lock_height\x18\x02 \x01(\x04H\x00R\x0b\x62lockHeight\x88\x01\x01\x42\x0f\n\r_block_height\"a\n\x1eGetTotalClaimedRewardsResponse\x12?\n\x07rewards\x18\x01 \x03(\x0b\x32%.eigenlayer.sidecar.rewards.v1.RewardR\x07rewards\"I\n GetAvailableRewardsTokensRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\";\n!GetAvailableRewardsTokensResponse\x12\x16\n\x06tokens\x18\x01 \x03(\tR\x06tokens\"~\n\x16SummarizedEarnerReward\x12\x14\n\x05token\x18\x01 \x01(\tR\x05token\x12\x16\n\x06\x65\x61rned\x18\x02 \x01(\tR\x06\x65\x61rned\x12\x1c\n\tclaimable\x18\x03 \x01(\tR\tclaimable\x12\x18\n\x07\x63laimed\x18\x04 \x01(\tR\x07\x63laimed\"\x86\x01\n$GetSummarizedRewardsForEarnerRequest\x12%\n\x0e\x65\x61rner_address\x18\x01 \x01(\tR\rearnerAddress\x12&\n\x0c\x62lock_height\x18\x02 \x01(\x04H\x00R\x0b\x62lockHeight\x88\x01\x01\x42\x0f\n\r_block_height\"x\n%GetSummarizedRewardsForEarnerResponse\x12O\n\x07rewards\x18\x01 \x03(\x0b\x32\x35.eigenlayer.sidecar.rewards.v1.SummarizedEarnerRewardR\x07rewards\"\x9c\x01\n\rClaimedReward\x12\x16\n\x06\x65\x61rner\x18\x01 \x01(\tR\x06\x65\x61rner\x12\x18\n\x07\x63laimer\x18\x02 \x01(\tR\x07\x63laimer\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x16\n\x06\x61mount\x18\x04 \x01(\tR\x06\x61mount\x12+\n\x11\x64istribution_root\x18\x05 \x01(\tR\x10\x64istributionRoot\"D\n\x1fGetClaimedRewardsByBlockRequest\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\"j\n GetClaimedRewardsByBlockResponse\x12\x46\n\x07rewards\x18\x01 \x03(\x0b\x32,.eigenlayer.sidecar.rewards.v1.ClaimedRewardR\x07rewards\"\x1e\n\x1cListDistributionRootsRequest\"\x7f\n\x1dListDistributionRootsResponse\x12^\n\x12\x64istribution_roots\x18\x01 \x03(\x0b\x32/.eigenlayer.sidecar.rewards.v1.DistributionRootR\x11\x64istributionRoots2\xcd\x18\n\x07Rewards\x12\xb5\x01\n\x0eGetRewardsRoot\x12\x34.eigenlayer.sidecar.rewards.v1.GetRewardsRootRequest\x1a\x35.eigenlayer.sidecar.rewards.v1.GetRewardsRootResponse\"6\x82\xd3\xe4\x93\x02\x30\x12./rewards/v1/blocks/{block_height}/rewards-root\x12\xa9\x01\n\x0fGenerateRewards\x12\x35.eigenlayer.sidecar.rewards.v1.GenerateRewardsRequest\x1a\x36.eigenlayer.sidecar.rewards.v1.GenerateRewardsResponse\"\'\x82\xd3\xe4\x93\x02!\"\x1c/rewards/v1/generate-rewards:\x01*\x12\xca\x01\n\x17GenerateStakerOperators\x12=.eigenlayer.sidecar.rewards.v1.GenerateStakerOperatorsRequest\x1a>.eigenlayer.sidecar.rewards.v1.GenerateStakerOperatorsResponse\"0\x82\xd3\xe4\x93\x02*\"%/rewards/v1/generate-staker-operators:\x01*\x12\xca\x01\n\x17\x42\x61\x63kfillStakerOperators\x12=.eigenlayer.sidecar.rewards.v1.BackfillStakerOperatorsRequest\x1a>.eigenlayer.sidecar.rewards.v1.BackfillStakerOperatorsResponse\"0\x82\xd3\xe4\x93\x02*\"%/rewards/v1/backfill-staker-operators:\x01*\x12\xba\x01\n\x13GenerateRewardsRoot\x12\x39.eigenlayer.sidecar.rewards.v1.GenerateRewardsRootRequest\x1a:.eigenlayer.sidecar.rewards.v1.GenerateRewardsRootResponse\",\x82\xd3\xe4\x93\x02&\"!/rewards/v1/generate-rewards-root:\x01*\x12\xba\x01\n\x15GetRewardsForSnapshot\x12;.eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotRequest\x1a<.eigenlayer.sidecar.rewards.v1.GetRewardsForSnapshotResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/rewards/v1/rewards/{snapshot}\x12\xeb\x01\n!GetAttributableRewardsForSnapshot\x12G.eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotRequest\x1aH.eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForSnapshotResponse\"3\x82\xd3\xe4\x93\x02-\x12+/rewards/v1/attributable-rewards/{snapshot}\x12\x94\x02\n)GetAttributableRewardsForDistributionRoot\x12O.eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootRequest\x1aP.eigenlayer.sidecar.rewards.v1.GetAttributableRewardsForDistributionRootResponse\"D\x82\xd3\xe4\x93\x02>\x12\x82\xd3\xe4\x93\x02\x38\x12\x36/rewards/v1/earners/{earner_address}/available-rewards\x12\xd9\x01\n\x16GetTotalClaimedRewards\x12<.eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsRequest\x1a=.eigenlayer.sidecar.rewards.v1.GetTotalClaimedRewardsResponse\"B\x82\xd3\xe4\x93\x02<\x12:/rewards/v1/earners/{earner_address}/total-claimed-rewards\x12\xe5\x01\n\x19GetAvailableRewardsTokens\x12?.eigenlayer.sidecar.rewards.v1.GetAvailableRewardsTokensRequest\x1a@.eigenlayer.sidecar.rewards.v1.GetAvailableRewardsTokensResponse\"E\x82\xd3\xe4\x93\x02?\x12=/rewards/v1/earners/{earner_address}/available-rewards-tokens\x12\xeb\x01\n\x1dGetSummarizedRewardsForEarner\x12\x43.eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerRequest\x1a\x44.eigenlayer.sidecar.rewards.v1.GetSummarizedRewardsForEarnerResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/rewards/v1/earners/{earner_address}/summarized-rewards\x12\xd6\x01\n\x18GetClaimedRewardsByBlock\x12>.eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockRequest\x1a?.eigenlayer.sidecar.rewards.v1.GetClaimedRewardsByBlockResponse\"9\x82\xd3\xe4\x93\x02\x33\x12\x31/rewards/v1/blocks/{block_height}/claimed-rewards\x12\xba\x01\n\x15ListDistributionRoots\x12;.eigenlayer.sidecar.rewards.v1.ListDistributionRootsRequest\x1a<.eigenlayer.sidecar.rewards.v1.ListDistributionRootsResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/rewards/v1/distribution-rootsB\x95\x02\n!com.eigenlayer.sidecar.rewards.v1B\x0cRewardsProtoP\x01ZKgithub.com/Layr-Labs/protocol-apis/gen/protos/eigenlayer/sidecar/rewards/v1\xa2\x02\x03\x45SR\xaa\x02\x1d\x45igenlayer.Sidecar.Rewards.V1\xca\x02\x1d\x45igenlayer\\Sidecar\\Rewards\\V1\xe2\x02)Eigenlayer\\Sidecar\\Rewards\\V1\\GPBMetadata\xea\x02 Eigenlayer::Sidecar::Rewards::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -61,80 +63,86 @@ _globals['_REWARDS'].methods_by_name['GetSummarizedRewardsForEarner']._serialized_options = b'\202\323\344\223\0029\0227/rewards/v1/earners/{earner_address}/summarized-rewards' _globals['_REWARDS'].methods_by_name['GetClaimedRewardsByBlock']._loaded_options = None _globals['_REWARDS'].methods_by_name['GetClaimedRewardsByBlock']._serialized_options = b'\202\323\344\223\0023\0221/rewards/v1/blocks/{block_height}/claimed-rewards' - _globals['_EARNERLEAF']._serialized_start=100 - _globals['_EARNERLEAF']._serialized_end=180 - _globals['_TOKENLEAF']._serialized_start=182 - _globals['_TOKENLEAF']._serialized_end=264 - _globals['_PROOF']._serialized_start=267 - _globals['_PROOF']._serialized_end=636 - _globals['_REWARD']._serialized_start=638 - _globals['_REWARD']._serialized_end=744 - _globals['_ATTRIBUTABLEREWARD']._serialized_start=747 - _globals['_ATTRIBUTABLEREWARD']._serialized_end=1122 - _globals['_ATTRIBUTABLEREWARD_REWARD_TYPE']._serialized_start=1030 - _globals['_ATTRIBUTABLEREWARD_REWARD_TYPE']._serialized_end=1122 - _globals['_DISTRIBUTIONROOT']._serialized_start=1125 - _globals['_DISTRIBUTIONROOT']._serialized_end=1321 - _globals['_GETREWARDSROOTREQUEST']._serialized_start=1323 - _globals['_GETREWARDSROOTREQUEST']._serialized_end=1381 - _globals['_GETREWARDSROOTRESPONSE']._serialized_start=1383 - _globals['_GETREWARDSROOTRESPONSE']._serialized_end=1491 - _globals['_GENERATEREWARDSREQUEST']._serialized_start=1494 - _globals['_GENERATEREWARDSREQUEST']._serialized_end=1654 - _globals['_GENERATEREWARDSRESPONSE']._serialized_start=1657 - _globals['_GENERATEREWARDSRESPONSE']._serialized_end=1821 - _globals['_GENERATESTAKEROPERATORSREQUEST']._serialized_start=1823 - _globals['_GENERATESTAKEROPERATORSREQUEST']._serialized_end=1932 - _globals['_GENERATESTAKEROPERATORSRESPONSE']._serialized_start=1934 - _globals['_GENERATESTAKEROPERATORSRESPONSE']._serialized_end=1991 - _globals['_BACKFILLSTAKEROPERATORSREQUEST']._serialized_start=1993 - _globals['_BACKFILLSTAKEROPERATORSREQUEST']._serialized_end=2069 - _globals['_BACKFILLSTAKEROPERATORSRESPONSE']._serialized_start=2071 - _globals['_BACKFILLSTAKEROPERATORSRESPONSE']._serialized_end=2128 - _globals['_GENERATEREWARDSROOTREQUEST']._serialized_start=2130 - _globals['_GENERATEREWARDSROOTREQUEST']._serialized_end=2191 - _globals['_GENERATEREWARDSROOTRESPONSE']._serialized_start=2193 - _globals['_GENERATEREWARDSROOTRESPONSE']._serialized_end=2308 - _globals['_GETREWARDSFORSNAPSHOTREQUEST']._serialized_start=2310 - _globals['_GETREWARDSFORSNAPSHOTREQUEST']._serialized_end=2368 - _globals['_GETREWARDSFORSNAPSHOTRESPONSE']._serialized_start=2370 - _globals['_GETREWARDSFORSNAPSHOTRESPONSE']._serialized_end=2466 - _globals['_GETATTRIBUTABLEREWARDSFORSNAPSHOTREQUEST']._serialized_start=2468 - _globals['_GETATTRIBUTABLEREWARDSFORSNAPSHOTREQUEST']._serialized_end=2538 - _globals['_GETATTRIBUTABLEREWARDSFORSNAPSHOTRESPONSE']._serialized_start=2540 - _globals['_GETATTRIBUTABLEREWARDSFORSNAPSHOTRESPONSE']._serialized_end=2660 - _globals['_GETATTRIBUTABLEREWARDSFORDISTRIBUTIONROOTREQUEST']._serialized_start=2662 - _globals['_GETATTRIBUTABLEREWARDSFORDISTRIBUTIONROOTREQUEST']._serialized_end=2757 - _globals['_GETATTRIBUTABLEREWARDSFORDISTRIBUTIONROOTRESPONSE']._serialized_start=2760 - _globals['_GETATTRIBUTABLEREWARDSFORDISTRIBUTIONROOTRESPONSE']._serialized_end=2888 - _globals['_GENERATECLAIMPROOFREQUEST']._serialized_start=2890 - _globals['_GENERATECLAIMPROOFREQUEST']._serialized_end=3008 - _globals['_GENERATECLAIMPROOFRESPONSE']._serialized_start=3010 - _globals['_GENERATECLAIMPROOFRESPONSE']._serialized_end=3098 - _globals['_GETAVAILABLEREWARDSREQUEST']._serialized_start=3100 - _globals['_GETAVAILABLEREWARDSREQUEST']._serialized_end=3167 - _globals['_GETAVAILABLEREWARDSRESPONSE']._serialized_start=3169 - _globals['_GETAVAILABLEREWARDSRESPONSE']._serialized_end=3263 - _globals['_GETTOTALCLAIMEDREWARDSREQUEST']._serialized_start=3265 - _globals['_GETTOTALCLAIMEDREWARDSREQUEST']._serialized_end=3392 - _globals['_GETTOTALCLAIMEDREWARDSRESPONSE']._serialized_start=3394 - _globals['_GETTOTALCLAIMEDREWARDSRESPONSE']._serialized_end=3491 - _globals['_GETAVAILABLEREWARDSTOKENSREQUEST']._serialized_start=3493 - _globals['_GETAVAILABLEREWARDSTOKENSREQUEST']._serialized_end=3566 - _globals['_GETAVAILABLEREWARDSTOKENSRESPONSE']._serialized_start=3568 - _globals['_GETAVAILABLEREWARDSTOKENSRESPONSE']._serialized_end=3627 - _globals['_SUMMARIZEDEARNERREWARD']._serialized_start=3629 - _globals['_SUMMARIZEDEARNERREWARD']._serialized_end=3755 - _globals['_GETSUMMARIZEDREWARDSFOREARNERREQUEST']._serialized_start=3758 - _globals['_GETSUMMARIZEDREWARDSFOREARNERREQUEST']._serialized_end=3892 - _globals['_GETSUMMARIZEDREWARDSFOREARNERRESPONSE']._serialized_start=3894 - _globals['_GETSUMMARIZEDREWARDSFOREARNERRESPONSE']._serialized_end=4014 - _globals['_CLAIMEDREWARD']._serialized_start=4017 - _globals['_CLAIMEDREWARD']._serialized_end=4173 - _globals['_GETCLAIMEDREWARDSBYBLOCKREQUEST']._serialized_start=4175 - _globals['_GETCLAIMEDREWARDSBYBLOCKREQUEST']._serialized_end=4243 - _globals['_GETCLAIMEDREWARDSBYBLOCKRESPONSE']._serialized_start=4245 - _globals['_GETCLAIMEDREWARDSBYBLOCKRESPONSE']._serialized_end=4351 - _globals['_REWARDS']._serialized_start=4354 - _globals['_REWARDS']._serialized_end=7314 + _globals['_REWARDS'].methods_by_name['ListDistributionRoots']._loaded_options = None + _globals['_REWARDS'].methods_by_name['ListDistributionRoots']._serialized_options = b'\202\323\344\223\002 \022\036/rewards/v1/distribution-roots' + _globals['_EARNERLEAF']._serialized_start=165 + _globals['_EARNERLEAF']._serialized_end=245 + _globals['_TOKENLEAF']._serialized_start=247 + _globals['_TOKENLEAF']._serialized_end=329 + _globals['_PROOF']._serialized_start=332 + _globals['_PROOF']._serialized_end=701 + _globals['_REWARD']._serialized_start=703 + _globals['_REWARD']._serialized_end=809 + _globals['_ATTRIBUTABLEREWARD']._serialized_start=812 + _globals['_ATTRIBUTABLEREWARD']._serialized_end=1187 + _globals['_ATTRIBUTABLEREWARD_REWARD_TYPE']._serialized_start=1095 + _globals['_ATTRIBUTABLEREWARD_REWARD_TYPE']._serialized_end=1187 + _globals['_DISTRIBUTIONROOT']._serialized_start=1190 + _globals['_DISTRIBUTIONROOT']._serialized_end=1705 + _globals['_GETREWARDSROOTREQUEST']._serialized_start=1707 + _globals['_GETREWARDSROOTREQUEST']._serialized_end=1765 + _globals['_GETREWARDSROOTRESPONSE']._serialized_start=1767 + _globals['_GETREWARDSROOTRESPONSE']._serialized_end=1875 + _globals['_GENERATEREWARDSREQUEST']._serialized_start=1878 + _globals['_GENERATEREWARDSREQUEST']._serialized_end=2038 + _globals['_GENERATEREWARDSRESPONSE']._serialized_start=2041 + _globals['_GENERATEREWARDSRESPONSE']._serialized_end=2205 + _globals['_GENERATESTAKEROPERATORSREQUEST']._serialized_start=2207 + _globals['_GENERATESTAKEROPERATORSREQUEST']._serialized_end=2316 + _globals['_GENERATESTAKEROPERATORSRESPONSE']._serialized_start=2318 + _globals['_GENERATESTAKEROPERATORSRESPONSE']._serialized_end=2375 + _globals['_BACKFILLSTAKEROPERATORSREQUEST']._serialized_start=2377 + _globals['_BACKFILLSTAKEROPERATORSREQUEST']._serialized_end=2453 + _globals['_BACKFILLSTAKEROPERATORSRESPONSE']._serialized_start=2455 + _globals['_BACKFILLSTAKEROPERATORSRESPONSE']._serialized_end=2512 + _globals['_GENERATEREWARDSROOTREQUEST']._serialized_start=2514 + _globals['_GENERATEREWARDSROOTREQUEST']._serialized_end=2575 + _globals['_GENERATEREWARDSROOTRESPONSE']._serialized_start=2577 + _globals['_GENERATEREWARDSROOTRESPONSE']._serialized_end=2692 + _globals['_GETREWARDSFORSNAPSHOTREQUEST']._serialized_start=2694 + _globals['_GETREWARDSFORSNAPSHOTREQUEST']._serialized_end=2752 + _globals['_GETREWARDSFORSNAPSHOTRESPONSE']._serialized_start=2754 + _globals['_GETREWARDSFORSNAPSHOTRESPONSE']._serialized_end=2850 + _globals['_GETATTRIBUTABLEREWARDSFORSNAPSHOTREQUEST']._serialized_start=2852 + _globals['_GETATTRIBUTABLEREWARDSFORSNAPSHOTREQUEST']._serialized_end=2922 + _globals['_GETATTRIBUTABLEREWARDSFORSNAPSHOTRESPONSE']._serialized_start=2924 + _globals['_GETATTRIBUTABLEREWARDSFORSNAPSHOTRESPONSE']._serialized_end=3044 + _globals['_GETATTRIBUTABLEREWARDSFORDISTRIBUTIONROOTREQUEST']._serialized_start=3046 + _globals['_GETATTRIBUTABLEREWARDSFORDISTRIBUTIONROOTREQUEST']._serialized_end=3141 + _globals['_GETATTRIBUTABLEREWARDSFORDISTRIBUTIONROOTRESPONSE']._serialized_start=3144 + _globals['_GETATTRIBUTABLEREWARDSFORDISTRIBUTIONROOTRESPONSE']._serialized_end=3272 + _globals['_GENERATECLAIMPROOFREQUEST']._serialized_start=3275 + _globals['_GENERATECLAIMPROOFREQUEST']._serialized_end=3445 + _globals['_GENERATECLAIMPROOFRESPONSE']._serialized_start=3447 + _globals['_GENERATECLAIMPROOFRESPONSE']._serialized_end=3535 + _globals['_GETAVAILABLEREWARDSREQUEST']._serialized_start=3537 + _globals['_GETAVAILABLEREWARDSREQUEST']._serialized_end=3604 + _globals['_GETAVAILABLEREWARDSRESPONSE']._serialized_start=3606 + _globals['_GETAVAILABLEREWARDSRESPONSE']._serialized_end=3700 + _globals['_GETTOTALCLAIMEDREWARDSREQUEST']._serialized_start=3702 + _globals['_GETTOTALCLAIMEDREWARDSREQUEST']._serialized_end=3829 + _globals['_GETTOTALCLAIMEDREWARDSRESPONSE']._serialized_start=3831 + _globals['_GETTOTALCLAIMEDREWARDSRESPONSE']._serialized_end=3928 + _globals['_GETAVAILABLEREWARDSTOKENSREQUEST']._serialized_start=3930 + _globals['_GETAVAILABLEREWARDSTOKENSREQUEST']._serialized_end=4003 + _globals['_GETAVAILABLEREWARDSTOKENSRESPONSE']._serialized_start=4005 + _globals['_GETAVAILABLEREWARDSTOKENSRESPONSE']._serialized_end=4064 + _globals['_SUMMARIZEDEARNERREWARD']._serialized_start=4066 + _globals['_SUMMARIZEDEARNERREWARD']._serialized_end=4192 + _globals['_GETSUMMARIZEDREWARDSFOREARNERREQUEST']._serialized_start=4195 + _globals['_GETSUMMARIZEDREWARDSFOREARNERREQUEST']._serialized_end=4329 + _globals['_GETSUMMARIZEDREWARDSFOREARNERRESPONSE']._serialized_start=4331 + _globals['_GETSUMMARIZEDREWARDSFOREARNERRESPONSE']._serialized_end=4451 + _globals['_CLAIMEDREWARD']._serialized_start=4454 + _globals['_CLAIMEDREWARD']._serialized_end=4610 + _globals['_GETCLAIMEDREWARDSBYBLOCKREQUEST']._serialized_start=4612 + _globals['_GETCLAIMEDREWARDSBYBLOCKREQUEST']._serialized_end=4680 + _globals['_GETCLAIMEDREWARDSBYBLOCKRESPONSE']._serialized_start=4682 + _globals['_GETCLAIMEDREWARDSBYBLOCKRESPONSE']._serialized_end=4788 + _globals['_LISTDISTRIBUTIONROOTSREQUEST']._serialized_start=4790 + _globals['_LISTDISTRIBUTIONROOTSREQUEST']._serialized_end=4820 + _globals['_LISTDISTRIBUTIONROOTSRESPONSE']._serialized_start=4822 + _globals['_LISTDISTRIBUTIONROOTSRESPONSE']._serialized_end=4949 + _globals['_REWARDS']._serialized_start=4952 + _globals['_REWARDS']._serialized_end=8101 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/eigenlabs-protocol-apis/src/eigenlayer/sidecar/v1/rewards_pb2_grpc.py b/gen/python/eigenlabs-protocol-apis/src/eigenlayer/sidecar/v1/rewards_pb2_grpc.py index e45aa9c..c7fd363 100644 --- a/gen/python/eigenlabs-protocol-apis/src/eigenlayer/sidecar/v1/rewards_pb2_grpc.py +++ b/gen/python/eigenlabs-protocol-apis/src/eigenlayer/sidecar/v1/rewards_pb2_grpc.py @@ -84,6 +84,11 @@ def __init__(self, channel): request_serializer=eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.GetClaimedRewardsByBlockRequest.SerializeToString, response_deserializer=eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.GetClaimedRewardsByBlockResponse.FromString, _registered_method=True) + self.ListDistributionRoots = channel.unary_unary( + '/eigenlayer.sidecar.rewards.v1.Rewards/ListDistributionRoots', + request_serializer=eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.ListDistributionRootsRequest.SerializeToString, + response_deserializer=eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.ListDistributionRootsResponse.FromString, + _registered_method=True) class RewardsServicer(object): @@ -193,6 +198,12 @@ def GetClaimedRewardsByBlock(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def ListDistributionRoots(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_RewardsServicer_to_server(servicer, server): rpc_method_handlers = { @@ -266,6 +277,11 @@ def add_RewardsServicer_to_server(servicer, server): request_deserializer=eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.GetClaimedRewardsByBlockRequest.FromString, response_serializer=eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.GetClaimedRewardsByBlockResponse.SerializeToString, ), + 'ListDistributionRoots': grpc.unary_unary_rpc_method_handler( + servicer.ListDistributionRoots, + request_deserializer=eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.ListDistributionRootsRequest.FromString, + response_serializer=eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.ListDistributionRootsResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'eigenlayer.sidecar.rewards.v1.Rewards', rpc_method_handlers) @@ -654,3 +670,30 @@ def GetClaimedRewardsByBlock(request, timeout, metadata, _registered_method=True) + + @staticmethod + def ListDistributionRoots(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/eigenlayer.sidecar.rewards.v1.Rewards/ListDistributionRoots', + eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.ListDistributionRootsRequest.SerializeToString, + eigenlayer_dot_sidecar_dot_v1_dot_rewards__pb2.ListDistributionRootsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/protos/eigenlayer/sidecar/v1/rewards.proto b/protos/eigenlayer/sidecar/v1/rewards.proto index 3f6d923..888159a 100644 --- a/protos/eigenlayer/sidecar/v1/rewards.proto +++ b/protos/eigenlayer/sidecar/v1/rewards.proto @@ -5,6 +5,9 @@ package eigenlayer.sidecar.rewards.v1; option go_package = "github.com/Layr-Labs/protocol-apis/gen/protos/eigenlayer/sidecar/rewards/v1"; import "google/api/annotations.proto"; +import "google/protobuf/wrappers.proto"; +import "google/protobuf/timestamp.proto"; + message EarnerLeaf { string earner = 1; @@ -54,10 +57,16 @@ message AttributableReward { message DistributionRoot { string root = 1; - uint64 block_height = 2; - uint64 calculation_end_timestamp = 3; - uint64 activated_at = 4; - bool disabled = 5; + uint64 root_index = 2; + google.protobuf.Timestamp rewards_calculation_end = 3; + string rewards_calculation_end_unit = 4; + google.protobuf.Timestamp activated_at = 5; + string activated_at_unit = 6; + uint64 created_at_block_number = 7; + string transaction_hash = 8; + uint64 block_height = 9; + uint64 log_index = 10; + bool disabled = 11; } message GetRewardsRootRequest { @@ -135,7 +144,8 @@ message GetAttributableRewardsForDistributionRootResponse { message GenerateClaimProofRequest { string earner_address = 1; repeated string tokens = 2; - string snapshot = 3; + // if root_index is omitted, the current active root will be used + optional google.protobuf.Int64Value root_index = 3; } message GenerateClaimProofResponse { Proof proof = 1; @@ -201,6 +211,12 @@ message GetClaimedRewardsByBlockResponse { repeated ClaimedReward rewards = 1; } +message ListDistributionRootsRequest {} + +message ListDistributionRootsResponse { + repeated DistributionRoot distribution_roots = 1; +} + service Rewards { // GetRewardsRoot returns the posted on-chain root for the give block height @@ -311,4 +327,10 @@ service Rewards { get: "/rewards/v1/blocks/{block_height}/claimed-rewards" }; } + + rpc ListDistributionRoots(ListDistributionRootsRequest) returns (ListDistributionRootsResponse) { + option (google.api.http) = { + get: "/rewards/v1/distribution-roots" + }; + } }