diff --git a/README.md b/README.md index b37beba4..5ec93cdd 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,8 @@ is a network protocol for remote management of large fleets of data collection Agents. OpAMP allows Agents to report their status to and receive configuration from a -Server and to receive addons and agent installation package updates from the -server. The protocol is vendor-agnostic, so the Server can remotely monitor and +Server and to receive agent package updates from the server. +The protocol is vendor-agnostic, so the Server can remotely monitor and manage a fleet of different Agents that implement OpAMP, including a fleet of mixed agents from different vendors. diff --git a/client/client.go b/client/client.go index 2a51938c..c5f57363 100644 --- a/client/client.go +++ b/client/client.go @@ -45,9 +45,9 @@ type StartSettings struct { LastConnectionSettingsHash []byte - // The hash of the last locally-saved server-provided addons. If nil is passed - // it will force the server to send addons list back. - LastServerProvidedAllAddonsHash []byte + // The hash of the last locally-saved server-provided packages. If nil is passed + // it will force the server to send packages list back. + LastServerProvidedAllPackagesHash []byte } type OpAMPClient interface { diff --git a/client/httpclient.go b/client/httpclient.go index 1d17e981..c3622d6f 100644 --- a/client/httpclient.go +++ b/client/httpclient.go @@ -92,10 +92,10 @@ func (w *httpClient) Start(settings StartSettings) error { msg.StatusReport = &protobufs.StatusReport{} } msg.StatusReport.AgentDescription = w.settings.AgentDescription - if msg.AddonStatuses == nil { - msg.AddonStatuses = &protobufs.AgentAddonStatuses{} + if msg.PackageStatuses == nil { + msg.PackageStatuses = &protobufs.PackageStatuses{} } - msg.AddonStatuses.ServerProvidedAllAddonsHash = w.settings.LastServerProvidedAllAddonsHash + msg.PackageStatuses.ServerProvidedAllPackagesHash = w.settings.LastServerProvidedAllPackagesHash }, ) w.looper.ScheduleSend() diff --git a/client/internal/receivedprocessor.go b/client/internal/receivedprocessor.go index 010d3f07..787e8e62 100644 --- a/client/internal/receivedprocessor.go +++ b/client/internal/receivedprocessor.go @@ -44,7 +44,7 @@ func (r *receivedProcessor) ProcessReceivedMessage(ctx context.Context, msg *pro reportStatus := r.rcvRemoteConfig(ctx, msg.RemoteConfig, msg.Flags) r.rcvConnectionSettings(ctx, msg.ConnectionSettings) - r.rcvAddonsAvailable(msg.AddonsAvailable) + r.rcvPackagesAvailable(msg.PackagesAvailable) r.rcvAgentIdentification(ctx, msg.AgentIdentification) if reportStatus { @@ -154,7 +154,7 @@ func (r *receivedProcessor) processErrorResponse(body *protobufs.ServerErrorResp r.logger.Errorf("received an error from server: %s", body.ErrorMessage) } -func (r *receivedProcessor) rcvAddonsAvailable(addons *protobufs.AddonsAvailable) { +func (r *receivedProcessor) rcvPackagesAvailable(packages *protobufs.PackagesAvailable) { // TODO: implement this. } diff --git a/client/types/addonssyncer.go b/client/types/addonssyncer.go deleted file mode 100644 index 276e1748..00000000 --- a/client/types/addonssyncer.go +++ /dev/null @@ -1,56 +0,0 @@ -package types - -import ( - "context" - "io" -) - -// AddonSyncer can be used by the agent to initiate syncing an addon from the server. -// The AddonSyncer instance knows the right context: the particular OpAMPClient and -// the particular AddonAvailable message the OnAddonAvailable callback was called for. -type AddonSyncer interface { - // Sync the available addon from the server to the agent. - // The agent must supply an AddonStateProvider to let the Sync function - // know what is available locally, what data needs to be sync and how the - // data can be stored locally. - Sync(ctx context.Context, localState AddonStateProvider) error -} - -type AddonStateProvider interface { - AllAddonsHash() ([]byte, error) - - // Addons returns the names of all addons that exist in the agent's local storage. - Addons() ([]string, error) - - // AddonHash returns the hash of a local addon. addonName is one of the names - // that were returned by GetAddons(). - AddonHash(addonName string) ([]byte, error) - - // CreateAddon creates the addon locally. If the addon existed must return an error. - // If the addon did not exist its hash should be set to nil. - CreateAddon(addonName string) error - - // FileContentHash returns the content hash of the addon file that exists locally. - FileContentHash(addonName string) ([]byte, error) - - // UpdateContent must create or update the addon content file. The entire content - // of the file must be replaced by the data. The data must be read until - // it returns an EOF. If reading from data fails UpdateContent must abort and return - // an error. - // Content hash must be updated if the data is updated without failure. - // The function must cancel and return an error if the context is cancelled. - UpdateContent(ctx context.Context, addonName string, data io.Reader, contentHash []byte) error - - // SetAddonHash must remember the hash for the specified addon. Must be returned - // later when GetAddonHash is called. SetAddonHash is called after all UpsertFile - // and DeleteFile calls complete successfully. - SetAddonHash(addonName string, hash []byte) error - - // DeleteAddon deletes the addon from the agent's local storage. - DeleteAddon(addonName string) error - - // SetAllAddonsHash must remember the AllAddonHash. Must be returned - // later when AllAddonsHash is called. SetAllAddonsHash is called after all - // addon updates complete successfully. - SetAllAddonsHash(hash []byte) error -} diff --git a/client/types/agentpackagesyncer.go b/client/types/agentpackagesyncer.go deleted file mode 100644 index 1cc17791..00000000 --- a/client/types/agentpackagesyncer.go +++ /dev/null @@ -1,37 +0,0 @@ -package types - -import ( - "context" - "io" -) - -// AgentPackageSyncer can be used by the agent to initiate syncing an agent package from the server. -// The AgentPackageSyncer instance knows the right context: the particular OpAMPClient and -// the particular AgentPackageAvailable message the OnAgentPackageAvailable callback was called for. -type AgentPackageSyncer interface { - // Sync the available package from the server to the agent. - // The agent must supply an AgentPackageStateProvider to let the Sync function - // know what is available locally, what data needs to be sync and how the - // data can be stored locally. - Sync(localAddonState *AgentPackageStateProvider) error -} - -// AgentPackageStateProvider allows AgentPackageSyncer to assess the local state -// of an agent package, and perform the syncing process to ensure the local state -// matches exactly the package that is available on the server. -// It is assumed the agent can store only a single package locally. -type AgentPackageStateProvider interface { - // PackageInfo returns the version of the locally available package and the hash - // of the file content, previously set via UpdateContent. - PackageInfo() (version string, contentHash []byte, err error) - - // UpdateContent must create or update the local content file. The entire content - // of the file must be replaced by the data. The data must be read until - // it returns an EOF. If reading from data fails UpdateContent must abort and return - // an error. - // Version and content hash must be updated if the data is updated without failure. - // Version and content hash must be returned later when PackageInfo is called when - // the next AgentPackageAvailable message arrives. - // The function must cancel and return an error if the context is cancelled. - UpdateContent(ctx context.Context, data io.Reader, contentHash []byte, version string) error -} diff --git a/client/types/callbacks.go b/client/types/callbacks.go index 72e0bed9..49f34d0d 100644 --- a/client/types/callbacks.go +++ b/client/types/callbacks.go @@ -118,16 +118,11 @@ type Callbacks interface { certificate *protobufs.ConnectionSettings, ) error - // OnAddonsAvailable is called when the server has addons available which are + // OnPackagesAvailable is called when the server has packages available which are // different from what the agent indicated it has via - // LastServerProvidedAllAddonsHash. - // syncer can be used to initiate syncing the addons from the server. - OnAddonsAvailable(ctx context.Context, addons *protobufs.AddonsAvailable, syncer AddonSyncer) error - - // OnAgentPackageAvailable is called when the server has an agent package available - // for the agent. - // syncer can be used to initiate syncing the package from the server. - OnAgentPackageAvailable(addons *protobufs.AgentPackageAvailable, syncer AgentPackageSyncer) error + // LastServerProvidedAllPackagesHash. + // syncer can be used to initiate syncing the packages from the server. + OnPackagesAvailable(ctx context.Context, packages *protobufs.PackagesAvailable, syncer PackagesSyncer) error // OnAgentIdentification is called when the server requests changing identification of the agent. // Agent should be updated with new id and use it for all further communication. @@ -172,9 +167,8 @@ type CallbacksStruct struct { settings *protobufs.ConnectionSettings, ) error - OnAddonsAvailableFunc func(ctx context.Context, addons *protobufs.AddonsAvailable, syncer AddonSyncer) error - OnAgentPackageAvailableFunc func(addons *protobufs.AgentPackageAvailable, syncer AgentPackageSyncer) error - OnAgentIdentificationFunc func(ctx context.Context, agentId *protobufs.AgentIdentification) error + OnPackagesAvailableFunc func(ctx context.Context, packages *protobufs.PackagesAvailable, syncer PackagesSyncer) error + OnAgentIdentificationFunc func(ctx context.Context, agentId *protobufs.AgentIdentification) error OnCommandFunc func(command *protobufs.ServerToAgentCommand) error } @@ -243,22 +237,13 @@ func (c CallbacksStruct) OnOtherConnectionSettings( return nil } -func (c CallbacksStruct) OnAddonsAvailable( +func (c CallbacksStruct) OnPackagesAvailable( ctx context.Context, - addons *protobufs.AddonsAvailable, - syncer AddonSyncer, -) error { - if c.OnAddonsAvailableFunc != nil { - return c.OnAddonsAvailableFunc(ctx, addons, syncer) - } - return nil -} - -func (c CallbacksStruct) OnAgentPackageAvailable( - addons *protobufs.AgentPackageAvailable, syncer AgentPackageSyncer, + packages *protobufs.PackagesAvailable, + syncer PackagesSyncer, ) error { - if c.OnAgentPackageAvailableFunc != nil { - return c.OnAgentPackageAvailableFunc(addons, syncer) + if c.OnPackagesAvailableFunc != nil { + return c.OnPackagesAvailableFunc(ctx, packages, syncer) } return nil } diff --git a/client/types/packagessyncer.go b/client/types/packagessyncer.go new file mode 100644 index 00000000..d8095d6f --- /dev/null +++ b/client/types/packagessyncer.go @@ -0,0 +1,56 @@ +package types + +import ( + "context" + "io" +) + +// PackagesSyncer can be used by the agent to initiate syncing a package from the server. +// The PackagesSyncer instance knows the right context: the particular OpAMPClient and +// the particular PackageAvailable message the OnPackageAvailable callback was called for. +type PackagesSyncer interface { + // Sync the available package from the server to the agent. + // The agent must supply an PackagesStateProvider to let the Sync function + // know what is available locally, what data needs to be sync and how the + // data can be stored locally. + Sync(ctx context.Context, localState PackagesStateProvider) error +} + +type PackagesStateProvider interface { + AllPackagesHash() ([]byte, error) + + // Packages returns the names of all packages that exist in the agent's local storage. + Packages() ([]string, error) + + // PackageHash returns the hash of a local package. packageName is one of the names + // that were returned by Packages(). + PackageHash(packageName string) ([]byte, error) + + // CreatePackage creates the package locally. If the package existed must return an error. + // If the package did not exist its hash should be set to nil. + CreatePackage(packageName string) error + + // FileContentHash returns the content hash of the package file that exists locally. + FileContentHash(packageName string) ([]byte, error) + + // UpdateContent must create or update the package content file. The entire content + // of the file must be replaced by the data. The data must be read until + // it returns an EOF. If reading from data fails UpdateContent must abort and return + // an error. + // Content hash must be updated if the data is updated without failure. + // The function must cancel and return an error if the context is cancelled. + UpdateContent(ctx context.Context, packageName string, data io.Reader, contentHash []byte) error + + // SetPackageHash must remember the hash for the specified package. Must be returned + // later when PackageHash is called. SetPackageHash is called after UpdateContent + // call completes successfully. + SetPackageHash(packageName string, hash []byte) error + + // DeletePackage deletes the package from the agent's local storage. + DeletePackage(packageName string) error + + // SetAllPackagesHash must remember the AllPackagesHash. Must be returned + // later when AllPackagesHash is called. SetAllPackagesHash is called after all + // package updates complete successfully. + SetAllPackagesHash(hash []byte) error +} diff --git a/client/wsclient.go b/client/wsclient.go index 12da213d..9a2bc3f6 100644 --- a/client/wsclient.go +++ b/client/wsclient.go @@ -292,10 +292,10 @@ func (w *wsClient) runOneCycle(ctx context.Context) { w.sender.NextMessage().Update( func(msg *protobufs.AgentToServer) { - if msg.AddonStatuses == nil { - msg.AddonStatuses = &protobufs.AgentAddonStatuses{} + if msg.PackageStatuses == nil { + msg.PackageStatuses = &protobufs.PackageStatuses{} } - msg.AddonStatuses.ServerProvidedAllAddonsHash = w.settings.LastServerProvidedAllAddonsHash + msg.PackageStatuses.ServerProvidedAllPackagesHash = w.settings.LastServerProvidedAllPackagesHash }, ) diff --git a/internal/proto/opamp.proto b/internal/proto/opamp.proto index 311f5a11..4fc8882a 100644 --- a/internal/proto/opamp.proto +++ b/internal/proto/opamp.proto @@ -34,19 +34,14 @@ message AgentToServer { // AgentToServer message for this agent was sent in the stream. StatusReport status_report = 2; - // The list of the agent addons, including addon statuses. - // This field SHOULD be unset if this information is unchanged since the last - // AgentToServer message for this agent was sent in the stream. - AgentAddonStatuses addon_statuses = 3; - - // The status of the installation operation that was previously offered by the server. - // This field SHOULD be unset if the installation status is unchanged since the - // last AgentToServer message. - AgentInstallStatus agent_install_status = 4; + // The list of the agent packages, including package statuses. This field SHOULD be + // unset if this information is unchanged since the last AgentToServer message for + // this agent was sent in the stream. + PackageStatuses package_statuses = 3; // AgentDisconnect MUST be set in the last AgentToServer message sent from the // agent to the server. - AgentDisconnect agent_disconnect = 5; + AgentDisconnect agent_disconnect = 4; enum AgentToServerFlags { FlagsUnspecified = 0; @@ -57,7 +52,7 @@ message AgentToServer { RequestInstanceUid = 0x00000001; } // Bit flags as defined by AgentToServerFlags bit masks. - AgentToServerFlags flags = 6; + AgentToServerFlags flags = 5; } // AgentDisconnect is the last message sent from the agent to the server. The server @@ -88,12 +83,8 @@ message ServerToAgent { // of its client connection settings (destination, headers, certificate, etc). ConnectionSettingsOffers connection_settings = 4; - // addons_available field is set when the server has addons to offer to the agent. - AddonsAvailable addons_available = 5; - - // agent_package_available field is set when the server has a different version - // of an agent package available for download. - AgentPackageAvailable agent_package_available = 6; + // This field is set when the Server has packages to offer to the Agent. + PackagesAvailable packages_available = 5; enum Flags { FlagsUnspecified = 0; @@ -104,14 +95,18 @@ message ServerToAgent { // particular bit of information in the last status report (which is an allowed // optimization) but the server does not have it (e.g. was restarted and lost state). - // The server asks the agent to report effective config. + // The server asks the agent to report effective config. This bit MUST NOT be + // set if the Agent indicated it cannot report effective config by setting + // the ReportsEffectiveConfig bit to 0 in StatusReport.capabilities field. ReportEffectiveConfig = 0x00000001; - // The server asks the agent to report addon statuses. - ReportAddonStatus = 0x00000002; + // The server asks the agent to report package statuses. This bit MUST NOT be + // set if the Agent indicated it cannot report package status by setting + // the ReportsPackagesStatus bit to 0 in StatusReport.capabilities field. + ReportPackagesStatus = 0x00000002; } // Bit flags as defined by Flags bit masks. - Flags flags = 7; + Flags flags = 6; // Bitmask of flags defined by ServerCapabilities enum. // All bits that are not defined in ServerCapabilities enum MUST be set to 0 @@ -121,16 +116,16 @@ message ServerToAgent { // This field MUST be set in the first ServerToAgent sent by the Server and MAY // be omitted in subsequent ServerToAgent messages by setting it to // UnspecifiedServerCapability value. - ServerCapabilities capabilities = 8; + ServerCapabilities capabilities = 7; // Properties related to identification of the agent, which can be overridden // by the server if needed. - AgentIdentification agent_identification = 9; + AgentIdentification agent_identification = 8; // Allows the Server to instruct the agent to perform a command, e.g. RESTART. This field should not be specified // with fields other than instance_uid and capabilities. If specified, other fields will be ignored and the command // will be performed. - ServerToAgentCommand command = 10; + ServerToAgentCommand command = 9; } enum ServerCapabilities { @@ -143,16 +138,12 @@ enum ServerCapabilities { OffersRemoteConfig = 0x00000002; // The Server can accept EffectiveConfig in StatusReport. AcceptsEffectiveConfig = 0x00000004; - // The Server can offer Addons. - OffersAddons = 0x00000008; - // The Server can accept Addon status. - AcceptsAddonsStatus = 0x00000010; - // The Server can offer packages to install. - OffersAgentPackage = 0x00000020; - // The Server can accept the installation status of the package. - AcceptsAgentPackageStatus = 0x00000040; + // The Server can offer Packages. + OffersPackages = 0x00000008; + // The Server can accept Packages status. + AcceptsPackagesStatus = 0x00000010; // The Server can offer connection settings. - OffersConnectionSettings = 0x00000080; + OffersConnectionSettings = 0x00000020; // Add new capabilities here, continuing with the least significant unused bit. } @@ -325,46 +316,59 @@ message ConnectionSettingsOffers { map other_connections = 6; } -// List of addons that the server offers to the agent. -message AddonsAvailable { - // Map of addons. Keys are addon names, values are the addons available for download. - map addons = 1; +// List of packages that the server offers to the agent. +message PackagesAvailable { + // Map of packages. Keys are package names, values are the packages available for download. + map packages = 1; - // Aggregate hash of all remotely installed addons. The agent SHOULD include this + // Aggregate hash of all remotely installed packages. The agent SHOULD include this // value in subsequent StatusReport messages. This in turn allows the management - // server to identify that a different set of addons is available for the agent - // and specify the available addons in the next DataToAgent message. + // server to identify that a different set of packages is available for the agent + // and specify the available packages in the next DataToAgent message. // - // This field MUST be always set if the management server supports addons + // This field MUST be always set if the management server supports packages // of agents. // - // The hash is calculated as an aggregate of all addon names and content. - bytes all_addons_hash = 2; + // The hash is calculated as an aggregate of all packages names and content. + bytes all_packages_hash = 2; } -// An Addon is a collection of named files. The content of the files, functionality -// provided by the addons, how they are stored and used by the Agent side is agent +// Each Agent is composed of one or more packages. A package has a name and +// content stored in a file. The content of the files, functionality +// provided by the packages, how they are stored and used by the Agent side is agent // type-specific and is outside the concerns of the OpAMP protocol. // -// If the agent does not have an installed addon with the specified name then +// If the agent does not have an installed package with the specified name then // it SHOULD download it from the specified URL and install it. // -// If the agent already has an installed addon with the specified name +// If the agent already has an installed package with the specified name // but with a different hash then the agent SHOULD download and -// install the addon again, since it is a different version of the same addon. +// install the package again, since it is a different version of the same package. // -// If the agent has an installed addon with the specified name and the same +// If the agent has an installed package with the specified name and the same // hash then the agent does not need to do anything, it already -// has the right version of the addon. -message AddonAvailable { - // The downloadable file of the addon. - DownloadableFile file = 1; +// has the right version of the package. +message PackageAvailable { + // The type of the package, either an addon or a top-level package. + enum PackageType { + TopLevelPackage = 0; + AddonPackage = 1; + } + PackageType type = 1; + + // The package version that is available on the server side. The agent may for + // example use this information to avoid downloading a package that was previously + // already downloaded and failed to install. + string version = 2; - // The hash of the addon. SHOULD be calculated based on addon name and - // content of the file of the addon. - bytes hash = 2; + // The downloadable file of the package. + DownloadableFile file = 3; - // TODO: do we need other fields, e.g. addon version or description? + // The hash of the package. SHOULD be calculated based on all other fields of the + // PackageAvailable message and content of the file of the package. The hash is + // used by the Agent to determine if the package it has is different from the + // package the Server is offering. + bytes hash = 4; } message DownloadableFile { @@ -417,21 +421,6 @@ message RetryInfo { uint64 retry_after_nanoseconds = 1; } -// AgentPackageAvailable message is sent from the server to the agent to indicate that there -// is an agent package available for the agent to download and self-update. Can be -// used by the server to initiate an agent upgrade or downgrade. -message AgentPackageAvailable { - // The agent version that is available on the server side. The agent may for - // example use this information to avoid downloading a package that was previously - // already downloaded and failed to install. - string version = 1; - - // The downloadable file of the package. - // Executable files SHOULD be code-signed and the signature SHOULD be verified - // by the agent after downloading and before installing. - DownloadableFile file = 2; -} - // ServerToAgentCommand is sent from the server to the agent to request that the agent // perform a command. message ServerToAgentCommand { @@ -524,31 +513,27 @@ enum AgentCapabilities { AcceptsRemoteConfig = 0x00000002; // The Agent will report EffectiveConfig in StatusReport. ReportsEffectiveConfig = 0x00000004; - // The Agent can accept Addon offers. - AcceptsAddons = 0x00000008; - // The Agent can report Addon status. - ReportsAddonsStatus = 0x00000010; - // The Agent can accept packages to install. - AcceptsAgentPackage = 0x00000020; - // The Agent can report the installation status of the package. - ReportsAgentPackageStatus = 0x00000040; - // The Agent can report own traces to the destination specified by + // The Agent can accept package offers. + AcceptsPackages = 0x00000008; + // The Agent can report package status. + ReportsPackagesStatus = 0x00000010; + // The Agent can report own trace to the destination specified by // the Server via ConnectionSettingsOffers.own_traces field. - ReportsOwnTraces = 0x00000080; + ReportsOwnTraces = 0x00000020; // The Agent can report own metrics to the destination specified by // the Server via ConnectionSettingsOffers.own_metrics field. - ReportsOwnMetrics = 0x00000100; + ReportsOwnMetrics = 0x00000040; // The Agent can report own logs to the destination specified by // the Server via ConnectionSettingsOffers.own_logs field. - ReportsOwnLogs = 0x00000200; - // The Agent can accept connections settings for OpAMP via + ReportsOwnLogs = 0x00000080; + // The can accept connections settings for OpAMP via // ConnectionSettingsOffers.opamp field. - AcceptsOpAMPConnectionSettings = 0x00000400; - // The Agent can accept connections settings for other destinations via + AcceptsOpAMPConnectionSettings = 0x00000100; + // The can accept connections settings for other destinations via // ConnectionSettingsOffers.other_connections field. - AcceptsOtherConnectionSettings = 0x00000800; + AcceptsOtherConnectionSettings = 0x00000200; // The Agent can accept restart requests. - AcceptsRestartCommand = 0x00001000; + AcceptsRestartCommand = 0x00000400; // Add new capabilities here, continuing with the least significant unused bit. } @@ -594,106 +579,92 @@ message RemoteConfigStatus { string error_message = 3; } -// The status of all addons that the agent has or was offered. -message AgentAddonStatuses { - // Map of addons. Keys are addon names, and MUST match the name field of AgentAddonStatus. - map addons = 1; +// The PackageStatuses message describes the status of all packages that the agent +// has or was offered. +message PackageStatuses { + // A map of PackageStatus messages, where the keys are package names. + // The key MUST match the name field of PackageStatus message. + map packages = 1; - // The aggregate hash of all addons that this Agent previously received from - // the server via AddonsAvailable message. - // The server SHOULD compare this hash to the aggregate hash of all addons that + // The aggregate hash of all packages that this Agent previously received from the + // server via PackagesAvailable message. + // + // The server SHOULD compare this hash to the aggregate hash of all packages that // it has for this Agent and if the hashes are different the server SHOULD send - // an AddonsAvailable message to the agent. - bytes server_provided_all_addons_hash = 2; + // an PackagesAvailable message to the agent. + bytes server_provided_all_packages_hash = 2; } -// The status of a single addon. -message AgentAddonStatus { - // Addon name. MUST be always set. +// The status of a single package. +message PackageStatus { + // Package name. MUST be always set and MUST match the key in the packages field + // of PackageStatuses message. string name = 1; - // The hash of the addon that the agent has. - // MUST be set if the agent has this addon. - // MUST be empty if the agent does not have this addon. This may be the case for - // example if the addon was offered by server but failed to install and the agent - // did not have this addon previously. - bytes agent_has_hash = 2; - - // The hash of the addon that the server offered to the agent. - // MUST be set if the installation is initiated by an - // earlier offer from the server to install this addon. + // The version of the package that the Agent has. + // MUST be set if the Agent has this package. + // MUST be empty if the Agent does not have this package. This may be the case + // for example if the package was offered by the Server but failed to install + // and the agent did not have this package previously. + string agent_has_version = 2; + + // The hash of the package that the Agent has. + // MUST be set if the Agent has this package. + // MUST be empty if the Agent does not have this package. This may be the case for + // example if the package was offered by the Server but failed to install and the + // agent did not have this package previously. + bytes agent_has_hash = 3; + + // The version of the package that the server offered to the agent. + // MUST be set if the installation of the package is initiated by an earlier offer + // from the server to install this package. // - // MUST be empty if the Agent has this addon but it was installed locally and + // MUST be empty if the Agent has this package but it was installed locally and // was not offered by the server. // - // Note that it is possible for both has_hash and - // server_offered_hash fields to be set and to have different values. - // This is for example possible if the agent already has a version of the addon - // successfully installed, the server offers a different version, but the agent - // fails to install that version. - bytes server_offered_hash = 3; + // Note that it is possible for both agent_has_version and server_offered_version + // fields to be set and to have different values. This is for example possible if + // the agent already has a version of the package successfully installed, the server + // offers a different version, but the agent fails to install that version. + string server_offered_version = 4; + + // The hash of the package that the server offered to the agent. + // MUST be set if the installation of the package is initiated by an earlier + // offer from the server to install this package. + // + // MUST be empty if the Agent has this package but it was installed locally and + // was not offered by the server. + // + // Note that it is possible for both agent_has_hash and server_offered_hash + // fields to be set and to have different values. This is for example possible if + // the agent already has a version of the package successfully installed, the + // server offers a different version, but the agent fails to install that version. + bytes server_offered_hash = 5; + // The status of this package. enum Status { - // Addon is successfully installed by the Agent. error_message MUST NOT be set. + // Package is successfully installed by the Agent. + // The error_message field MUST NOT be set. Installed = 0; - // Installation of this addon has not yet started. + // Installation of this package has not yet started. InstallPending = 1; - // Agent is currently downloading and installing the addon. - // server_offered_hash MUST be set to indicate the version - // that the agent is installing. error_message MUST NOT be set. + // Agent is currently downloading and installing the package. + // server_offered_hash field MUST be set to indicate the version that the + // agent is installing. The error_message field MUST NOT be set. Installing = 2; - // Agent tried to install the addon but installation failed. - // server_offered_hash MUST be set to indicate the version - // that the agent tried to install. error_message may also contain more - // details about the failure. + // Agent tried to install the package but installation failed. + // server_offered_hash field MUST be set to indicate the version that the agent + // tried to install. The error_message may also contain more details about + // the failure. InstallFailed = 3; } - Status status = 4; + Status status = 6; // Error message if the status is erroneous. - string error_message = 5; -} - -// The status of the last install status performed by the agent. -message AgentInstallStatus { - // The version field from the AgentPackageAvailable that the server offered - // to the agent. MUST be set if the agent previously received an offer from - // the server to install this agent. - string server_offered_version = 1; - - // The hash of the DownloadableFileList of agent package that the server - // offered to the agent. - bytes server_offered_hash = 2; - - enum Status { - // Agent package was successfully installed. error_message MUST NOT be set. - Installed = 0; - - // Agent is currently downloading and installing the package. - // server_offered_hash MUST be set to indicate the version - // that the agent is installing. error_message MUST NOT be set. - Installing = 1; - - // Agent tried to install the package but installation failed. - // server_offered_hash MUST be set to indicate the package - // that the agent tried to install. error_message may also contain more - // details about the failure. - InstallFailed = 2; - - // Agent did not install the package because it is not permitted to. - // This may be for example the case when operating system permissions - // prevent the agent from self-updating or when self-updating is disabled - // by the user. error_message may also contain more details about - // what exactly is not permitted. - InstallNoPermission = 3; - } - Status status = 3; - - // Optional human readable error message if the status is erroneous. - string error_message = 4; + string error_message = 7; } // Properties related to identification of the agent, which can be overridden diff --git a/protobufs/opamp.pb.go b/protobufs/opamp.pb.go index edaccaf3..08984096 100644 --- a/protobufs/opamp.pb.go +++ b/protobufs/opamp.pb.go @@ -48,41 +48,33 @@ const ( ServerCapabilities_OffersRemoteConfig ServerCapabilities = 2 // The Server can accept EffectiveConfig in StatusReport. ServerCapabilities_AcceptsEffectiveConfig ServerCapabilities = 4 - // The Server can offer Addons. - ServerCapabilities_OffersAddons ServerCapabilities = 8 - // The Server can accept Addon status. - ServerCapabilities_AcceptsAddonsStatus ServerCapabilities = 16 - // The Server can offer packages to install. - ServerCapabilities_OffersAgentPackage ServerCapabilities = 32 - // The Server can accept the installation status of the package. - ServerCapabilities_AcceptsAgentPackageStatus ServerCapabilities = 64 + // The Server can offer Packages. + ServerCapabilities_OffersPackages ServerCapabilities = 8 + // The Server can accept Packages status. + ServerCapabilities_AcceptsPackagesStatus ServerCapabilities = 16 // The Server can offer connection settings. - ServerCapabilities_OffersConnectionSettings ServerCapabilities = 128 + ServerCapabilities_OffersConnectionSettings ServerCapabilities = 32 ) // Enum value maps for ServerCapabilities. var ( ServerCapabilities_name = map[int32]string{ - 0: "UnspecifiedServerCapability", - 1: "AcceptsStatus", - 2: "OffersRemoteConfig", - 4: "AcceptsEffectiveConfig", - 8: "OffersAddons", - 16: "AcceptsAddonsStatus", - 32: "OffersAgentPackage", - 64: "AcceptsAgentPackageStatus", - 128: "OffersConnectionSettings", + 0: "UnspecifiedServerCapability", + 1: "AcceptsStatus", + 2: "OffersRemoteConfig", + 4: "AcceptsEffectiveConfig", + 8: "OffersPackages", + 16: "AcceptsPackagesStatus", + 32: "OffersConnectionSettings", } ServerCapabilities_value = map[string]int32{ "UnspecifiedServerCapability": 0, "AcceptsStatus": 1, "OffersRemoteConfig": 2, "AcceptsEffectiveConfig": 4, - "OffersAddons": 8, - "AcceptsAddonsStatus": 16, - "OffersAgentPackage": 32, - "AcceptsAgentPackageStatus": 64, - "OffersConnectionSettings": 128, + "OffersPackages": 8, + "AcceptsPackagesStatus": 16, + "OffersConnectionSettings": 32, } ) @@ -125,31 +117,27 @@ const ( AgentCapabilities_AcceptsRemoteConfig AgentCapabilities = 2 // The Agent will report EffectiveConfig in StatusReport. AgentCapabilities_ReportsEffectiveConfig AgentCapabilities = 4 - // The Agent can accept Addon offers. - AgentCapabilities_AcceptsAddons AgentCapabilities = 8 - // The Agent can report Addon status. - AgentCapabilities_ReportsAddonsStatus AgentCapabilities = 16 - // The Agent can accept packages to install. - AgentCapabilities_AcceptsAgentPackage AgentCapabilities = 32 - // The Agent can report the installation status of the package. - AgentCapabilities_ReportsAgentPackageStatus AgentCapabilities = 64 - // The Agent can report own traces to the destination specified by + // The Agent can accept package offers. + AgentCapabilities_AcceptsPackages AgentCapabilities = 8 + // The Agent can report package status. + AgentCapabilities_ReportsPackagesStatus AgentCapabilities = 16 + // The Agent can report own trace to the destination specified by // the Server via ConnectionSettingsOffers.own_traces field. - AgentCapabilities_ReportsOwnTraces AgentCapabilities = 128 + AgentCapabilities_ReportsOwnTraces AgentCapabilities = 32 // The Agent can report own metrics to the destination specified by // the Server via ConnectionSettingsOffers.own_metrics field. - AgentCapabilities_ReportsOwnMetrics AgentCapabilities = 256 + AgentCapabilities_ReportsOwnMetrics AgentCapabilities = 64 // The Agent can report own logs to the destination specified by // the Server via ConnectionSettingsOffers.own_logs field. - AgentCapabilities_ReportsOwnLogs AgentCapabilities = 512 - // The Agent can accept connections settings for OpAMP via + AgentCapabilities_ReportsOwnLogs AgentCapabilities = 128 + // The can accept connections settings for OpAMP via // ConnectionSettingsOffers.opamp field. - AgentCapabilities_AcceptsOpAMPConnectionSettings AgentCapabilities = 1024 - // The Agent can accept connections settings for other destinations via + AgentCapabilities_AcceptsOpAMPConnectionSettings AgentCapabilities = 256 + // The can accept connections settings for other destinations via // ConnectionSettingsOffers.other_connections field. - AgentCapabilities_AcceptsOtherConnectionSettings AgentCapabilities = 2048 + AgentCapabilities_AcceptsOtherConnectionSettings AgentCapabilities = 512 // The Agent can accept restart requests. - AgentCapabilities_AcceptsRestartCommand AgentCapabilities = 4096 + AgentCapabilities_AcceptsRestartCommand AgentCapabilities = 1024 ) // Enum value maps for AgentCapabilities. @@ -159,32 +147,28 @@ var ( 1: "ReportsStatus", 2: "AcceptsRemoteConfig", 4: "ReportsEffectiveConfig", - 8: "AcceptsAddons", - 16: "ReportsAddonsStatus", - 32: "AcceptsAgentPackage", - 64: "ReportsAgentPackageStatus", - 128: "ReportsOwnTraces", - 256: "ReportsOwnMetrics", - 512: "ReportsOwnLogs", - 1024: "AcceptsOpAMPConnectionSettings", - 2048: "AcceptsOtherConnectionSettings", - 4096: "AcceptsRestartCommand", + 8: "AcceptsPackages", + 16: "ReportsPackagesStatus", + 32: "ReportsOwnTraces", + 64: "ReportsOwnMetrics", + 128: "ReportsOwnLogs", + 256: "AcceptsOpAMPConnectionSettings", + 512: "AcceptsOtherConnectionSettings", + 1024: "AcceptsRestartCommand", } AgentCapabilities_value = map[string]int32{ "UnspecifiedAgentCapability": 0, "ReportsStatus": 1, "AcceptsRemoteConfig": 2, "ReportsEffectiveConfig": 4, - "AcceptsAddons": 8, - "ReportsAddonsStatus": 16, - "AcceptsAgentPackage": 32, - "ReportsAgentPackageStatus": 64, - "ReportsOwnTraces": 128, - "ReportsOwnMetrics": 256, - "ReportsOwnLogs": 512, - "AcceptsOpAMPConnectionSettings": 1024, - "AcceptsOtherConnectionSettings": 2048, - "AcceptsRestartCommand": 4096, + "AcceptsPackages": 8, + "ReportsPackagesStatus": 16, + "ReportsOwnTraces": 32, + "ReportsOwnMetrics": 64, + "ReportsOwnLogs": 128, + "AcceptsOpAMPConnectionSettings": 256, + "AcceptsOtherConnectionSettings": 512, + "AcceptsRestartCommand": 1024, } ) @@ -267,10 +251,14 @@ type ServerToAgent_Flags int32 const ( ServerToAgent_FlagsUnspecified ServerToAgent_Flags = 0 - // The server asks the agent to report effective config. + // The server asks the agent to report effective config. This bit MUST NOT be + // set if the Agent indicated it cannot report effective config by setting + // the ReportsEffectiveConfig bit to 0 in StatusReport.capabilities field. ServerToAgent_ReportEffectiveConfig ServerToAgent_Flags = 1 - // The server asks the agent to report addon statuses. - ServerToAgent_ReportAddonStatus ServerToAgent_Flags = 2 + // The server asks the agent to report package statuses. This bit MUST NOT be + // set if the Agent indicated it cannot report package status by setting + // the ReportsPackagesStatus bit to 0 in StatusReport.capabilities field. + ServerToAgent_ReportPackagesStatus ServerToAgent_Flags = 2 ) // Enum value maps for ServerToAgent_Flags. @@ -278,12 +266,12 @@ var ( ServerToAgent_Flags_name = map[int32]string{ 0: "FlagsUnspecified", 1: "ReportEffectiveConfig", - 2: "ReportAddonStatus", + 2: "ReportPackagesStatus", } ServerToAgent_Flags_value = map[string]int32{ "FlagsUnspecified": 0, "ReportEffectiveConfig": 1, - "ReportAddonStatus": 2, + "ReportPackagesStatus": 2, } ) @@ -363,6 +351,53 @@ func (ConnectionSettings_Flags) EnumDescriptor() ([]byte, []int) { return file_opamp_proto_rawDescGZIP(), []int{3, 0} } +// The type of the package, either an addon or a top-level package. +type PackageAvailable_PackageType int32 + +const ( + PackageAvailable_TopLevelPackage PackageAvailable_PackageType = 0 + PackageAvailable_AddonPackage PackageAvailable_PackageType = 1 +) + +// Enum value maps for PackageAvailable_PackageType. +var ( + PackageAvailable_PackageType_name = map[int32]string{ + 0: "TopLevelPackage", + 1: "AddonPackage", + } + PackageAvailable_PackageType_value = map[string]int32{ + "TopLevelPackage": 0, + "AddonPackage": 1, + } +) + +func (x PackageAvailable_PackageType) Enum() *PackageAvailable_PackageType { + p := new(PackageAvailable_PackageType) + *p = x + return p +} + +func (x PackageAvailable_PackageType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PackageAvailable_PackageType) Descriptor() protoreflect.EnumDescriptor { + return file_opamp_proto_enumTypes[5].Descriptor() +} + +func (PackageAvailable_PackageType) Type() protoreflect.EnumType { + return &file_opamp_proto_enumTypes[5] +} + +func (x PackageAvailable_PackageType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PackageAvailable_PackageType.Descriptor instead. +func (PackageAvailable_PackageType) EnumDescriptor() ([]byte, []int) { + return file_opamp_proto_rawDescGZIP(), []int{9, 0} +} + type ServerErrorResponse_Type int32 const ( @@ -404,11 +439,11 @@ func (x ServerErrorResponse_Type) String() string { } func (ServerErrorResponse_Type) Descriptor() protoreflect.EnumDescriptor { - return file_opamp_proto_enumTypes[5].Descriptor() + return file_opamp_proto_enumTypes[6].Descriptor() } func (ServerErrorResponse_Type) Type() protoreflect.EnumType { - return &file_opamp_proto_enumTypes[5] + return &file_opamp_proto_enumTypes[6] } func (x ServerErrorResponse_Type) Number() protoreflect.EnumNumber { @@ -449,11 +484,11 @@ func (x ServerToAgentCommand_CommandType) String() string { } func (ServerToAgentCommand_CommandType) Descriptor() protoreflect.EnumDescriptor { - return file_opamp_proto_enumTypes[6].Descriptor() + return file_opamp_proto_enumTypes[7].Descriptor() } func (ServerToAgentCommand_CommandType) Type() protoreflect.EnumType { - return &file_opamp_proto_enumTypes[6] + return &file_opamp_proto_enumTypes[7] } func (x ServerToAgentCommand_CommandType) Number() protoreflect.EnumNumber { @@ -462,7 +497,7 @@ func (x ServerToAgentCommand_CommandType) Number() protoreflect.EnumNumber { // Deprecated: Use ServerToAgentCommand_CommandType.Descriptor instead. func (ServerToAgentCommand_CommandType) EnumDescriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{14, 0} + return file_opamp_proto_rawDescGZIP(), []int{13, 0} } type RemoteConfigStatus_Status int32 @@ -502,11 +537,11 @@ func (x RemoteConfigStatus_Status) String() string { } func (RemoteConfigStatus_Status) Descriptor() protoreflect.EnumDescriptor { - return file_opamp_proto_enumTypes[7].Descriptor() + return file_opamp_proto_enumTypes[8].Descriptor() } func (RemoteConfigStatus_Status) Type() protoreflect.EnumType { - return &file_opamp_proto_enumTypes[7] + return &file_opamp_proto_enumTypes[8] } func (x RemoteConfigStatus_Status) Number() protoreflect.EnumNumber { @@ -515,36 +550,38 @@ func (x RemoteConfigStatus_Status) Number() protoreflect.EnumNumber { // Deprecated: Use RemoteConfigStatus_Status.Descriptor instead. func (RemoteConfigStatus_Status) EnumDescriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{18, 0} + return file_opamp_proto_rawDescGZIP(), []int{17, 0} } -type AgentAddonStatus_Status int32 +// The status of this package. +type PackageStatus_Status int32 const ( - // Addon is successfully installed by the Agent. error_message MUST NOT be set. - AgentAddonStatus_Installed AgentAddonStatus_Status = 0 - // Installation of this addon has not yet started. - AgentAddonStatus_InstallPending AgentAddonStatus_Status = 1 - // Agent is currently downloading and installing the addon. - // server_offered_hash MUST be set to indicate the version - // that the agent is installing. error_message MUST NOT be set. - AgentAddonStatus_Installing AgentAddonStatus_Status = 2 - // Agent tried to install the addon but installation failed. - // server_offered_hash MUST be set to indicate the version - // that the agent tried to install. error_message may also contain more - // details about the failure. - AgentAddonStatus_InstallFailed AgentAddonStatus_Status = 3 + // Package is successfully installed by the Agent. + // The error_message field MUST NOT be set. + PackageStatus_Installed PackageStatus_Status = 0 + // Installation of this package has not yet started. + PackageStatus_InstallPending PackageStatus_Status = 1 + // Agent is currently downloading and installing the package. + // server_offered_hash field MUST be set to indicate the version that the + // agent is installing. The error_message field MUST NOT be set. + PackageStatus_Installing PackageStatus_Status = 2 + // Agent tried to install the package but installation failed. + // server_offered_hash field MUST be set to indicate the version that the agent + // tried to install. The error_message may also contain more details about + // the failure. + PackageStatus_InstallFailed PackageStatus_Status = 3 ) -// Enum value maps for AgentAddonStatus_Status. +// Enum value maps for PackageStatus_Status. var ( - AgentAddonStatus_Status_name = map[int32]string{ + PackageStatus_Status_name = map[int32]string{ 0: "Installed", 1: "InstallPending", 2: "Installing", 3: "InstallFailed", } - AgentAddonStatus_Status_value = map[string]int32{ + PackageStatus_Status_value = map[string]int32{ "Installed": 0, "InstallPending": 1, "Installing": 2, @@ -552,96 +589,31 @@ var ( } ) -func (x AgentAddonStatus_Status) Enum() *AgentAddonStatus_Status { - p := new(AgentAddonStatus_Status) - *p = x - return p -} - -func (x AgentAddonStatus_Status) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AgentAddonStatus_Status) Descriptor() protoreflect.EnumDescriptor { - return file_opamp_proto_enumTypes[8].Descriptor() -} - -func (AgentAddonStatus_Status) Type() protoreflect.EnumType { - return &file_opamp_proto_enumTypes[8] -} - -func (x AgentAddonStatus_Status) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AgentAddonStatus_Status.Descriptor instead. -func (AgentAddonStatus_Status) EnumDescriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{20, 0} -} - -type AgentInstallStatus_Status int32 - -const ( - // Agent package was successfully installed. error_message MUST NOT be set. - AgentInstallStatus_Installed AgentInstallStatus_Status = 0 - // Agent is currently downloading and installing the package. - // server_offered_hash MUST be set to indicate the version - // that the agent is installing. error_message MUST NOT be set. - AgentInstallStatus_Installing AgentInstallStatus_Status = 1 - // Agent tried to install the package but installation failed. - // server_offered_hash MUST be set to indicate the package - // that the agent tried to install. error_message may also contain more - // details about the failure. - AgentInstallStatus_InstallFailed AgentInstallStatus_Status = 2 - // Agent did not install the package because it is not permitted to. - // This may be for example the case when operating system permissions - // prevent the agent from self-updating or when self-updating is disabled - // by the user. error_message may also contain more details about - // what exactly is not permitted. - AgentInstallStatus_InstallNoPermission AgentInstallStatus_Status = 3 -) - -// Enum value maps for AgentInstallStatus_Status. -var ( - AgentInstallStatus_Status_name = map[int32]string{ - 0: "Installed", - 1: "Installing", - 2: "InstallFailed", - 3: "InstallNoPermission", - } - AgentInstallStatus_Status_value = map[string]int32{ - "Installed": 0, - "Installing": 1, - "InstallFailed": 2, - "InstallNoPermission": 3, - } -) - -func (x AgentInstallStatus_Status) Enum() *AgentInstallStatus_Status { - p := new(AgentInstallStatus_Status) +func (x PackageStatus_Status) Enum() *PackageStatus_Status { + p := new(PackageStatus_Status) *p = x return p } -func (x AgentInstallStatus_Status) String() string { +func (x PackageStatus_Status) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (AgentInstallStatus_Status) Descriptor() protoreflect.EnumDescriptor { +func (PackageStatus_Status) Descriptor() protoreflect.EnumDescriptor { return file_opamp_proto_enumTypes[9].Descriptor() } -func (AgentInstallStatus_Status) Type() protoreflect.EnumType { +func (PackageStatus_Status) Type() protoreflect.EnumType { return &file_opamp_proto_enumTypes[9] } -func (x AgentInstallStatus_Status) Number() protoreflect.EnumNumber { +func (x PackageStatus_Status) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use AgentInstallStatus_Status.Descriptor instead. -func (AgentInstallStatus_Status) EnumDescriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{21, 0} +// Deprecated: Use PackageStatus_Status.Descriptor instead. +func (PackageStatus_Status) EnumDescriptor() ([]byte, []int) { + return file_opamp_proto_rawDescGZIP(), []int{19, 0} } type AgentToServer struct { @@ -658,19 +630,15 @@ type AgentToServer struct { // This field SHOULD be unset if this information is unchanged since the last // AgentToServer message for this agent was sent in the stream. StatusReport *StatusReport `protobuf:"bytes,2,opt,name=status_report,json=statusReport,proto3" json:"status_report,omitempty"` - // The list of the agent addons, including addon statuses. - // This field SHOULD be unset if this information is unchanged since the last - // AgentToServer message for this agent was sent in the stream. - AddonStatuses *AgentAddonStatuses `protobuf:"bytes,3,opt,name=addon_statuses,json=addonStatuses,proto3" json:"addon_statuses,omitempty"` - // The status of the installation operation that was previously offered by the server. - // This field SHOULD be unset if the installation status is unchanged since the - // last AgentToServer message. - AgentInstallStatus *AgentInstallStatus `protobuf:"bytes,4,opt,name=agent_install_status,json=agentInstallStatus,proto3" json:"agent_install_status,omitempty"` + // The list of the agent packages, including package statuses. This field SHOULD be + // unset if this information is unchanged since the last AgentToServer message for + // this agent was sent in the stream. + PackageStatuses *PackageStatuses `protobuf:"bytes,3,opt,name=package_statuses,json=packageStatuses,proto3" json:"package_statuses,omitempty"` // AgentDisconnect MUST be set in the last AgentToServer message sent from the // agent to the server. - AgentDisconnect *AgentDisconnect `protobuf:"bytes,5,opt,name=agent_disconnect,json=agentDisconnect,proto3" json:"agent_disconnect,omitempty"` + AgentDisconnect *AgentDisconnect `protobuf:"bytes,4,opt,name=agent_disconnect,json=agentDisconnect,proto3" json:"agent_disconnect,omitempty"` // Bit flags as defined by AgentToServerFlags bit masks. - Flags AgentToServer_AgentToServerFlags `protobuf:"varint,6,opt,name=flags,proto3,enum=opamp.proto.AgentToServer_AgentToServerFlags" json:"flags,omitempty"` + Flags AgentToServer_AgentToServerFlags `protobuf:"varint,5,opt,name=flags,proto3,enum=opamp.proto.AgentToServer_AgentToServerFlags" json:"flags,omitempty"` } func (x *AgentToServer) Reset() { @@ -719,16 +687,9 @@ func (x *AgentToServer) GetStatusReport() *StatusReport { return nil } -func (x *AgentToServer) GetAddonStatuses() *AgentAddonStatuses { - if x != nil { - return x.AddonStatuses - } - return nil -} - -func (x *AgentToServer) GetAgentInstallStatus() *AgentInstallStatus { +func (x *AgentToServer) GetPackageStatuses() *PackageStatuses { if x != nil { - return x.AgentInstallStatus + return x.PackageStatuses } return nil } @@ -810,13 +771,10 @@ type ServerToAgent struct { // This field is set when the Server wants the Agent to change one or more // of its client connection settings (destination, headers, certificate, etc). ConnectionSettings *ConnectionSettingsOffers `protobuf:"bytes,4,opt,name=connection_settings,json=connectionSettings,proto3" json:"connection_settings,omitempty"` - // addons_available field is set when the server has addons to offer to the agent. - AddonsAvailable *AddonsAvailable `protobuf:"bytes,5,opt,name=addons_available,json=addonsAvailable,proto3" json:"addons_available,omitempty"` - // agent_package_available field is set when the server has a different version - // of an agent package available for download. - AgentPackageAvailable *AgentPackageAvailable `protobuf:"bytes,6,opt,name=agent_package_available,json=agentPackageAvailable,proto3" json:"agent_package_available,omitempty"` + // This field is set when the Server has packages to offer to the Agent. + PackagesAvailable *PackagesAvailable `protobuf:"bytes,5,opt,name=packages_available,json=packagesAvailable,proto3" json:"packages_available,omitempty"` // Bit flags as defined by Flags bit masks. - Flags ServerToAgent_Flags `protobuf:"varint,7,opt,name=flags,proto3,enum=opamp.proto.ServerToAgent_Flags" json:"flags,omitempty"` + Flags ServerToAgent_Flags `protobuf:"varint,6,opt,name=flags,proto3,enum=opamp.proto.ServerToAgent_Flags" json:"flags,omitempty"` // Bitmask of flags defined by ServerCapabilities enum. // All bits that are not defined in ServerCapabilities enum MUST be set to 0 // by the Server. This allows extending the protocol and the ServerCapabilities @@ -825,14 +783,14 @@ type ServerToAgent struct { // This field MUST be set in the first ServerToAgent sent by the Server and MAY // be omitted in subsequent ServerToAgent messages by setting it to // UnspecifiedServerCapability value. - Capabilities ServerCapabilities `protobuf:"varint,8,opt,name=capabilities,proto3,enum=opamp.proto.ServerCapabilities" json:"capabilities,omitempty"` + Capabilities ServerCapabilities `protobuf:"varint,7,opt,name=capabilities,proto3,enum=opamp.proto.ServerCapabilities" json:"capabilities,omitempty"` // Properties related to identification of the agent, which can be overridden // by the server if needed. - AgentIdentification *AgentIdentification `protobuf:"bytes,9,opt,name=agent_identification,json=agentIdentification,proto3" json:"agent_identification,omitempty"` + AgentIdentification *AgentIdentification `protobuf:"bytes,8,opt,name=agent_identification,json=agentIdentification,proto3" json:"agent_identification,omitempty"` // Allows the Server to instruct the agent to perform a command, e.g. RESTART. This field should not be specified // with fields other than instance_uid and capabilities. If specified, other fields will be ignored and the command // will be performed. - Command *ServerToAgentCommand `protobuf:"bytes,10,opt,name=command,proto3" json:"command,omitempty"` + Command *ServerToAgentCommand `protobuf:"bytes,9,opt,name=command,proto3" json:"command,omitempty"` } func (x *ServerToAgent) Reset() { @@ -895,16 +853,9 @@ func (x *ServerToAgent) GetConnectionSettings() *ConnectionSettingsOffers { return nil } -func (x *ServerToAgent) GetAddonsAvailable() *AddonsAvailable { - if x != nil { - return x.AddonsAvailable - } - return nil -} - -func (x *ServerToAgent) GetAgentPackageAvailable() *AgentPackageAvailable { +func (x *ServerToAgent) GetPackagesAvailable() *PackagesAvailable { if x != nil { - return x.AgentPackageAvailable + return x.PackagesAvailable } return nil } @@ -1381,28 +1332,28 @@ func (x *ConnectionSettingsOffers) GetOtherConnections() map[string]*ConnectionS return nil } -// List of addons that the server offers to the agent. -type AddonsAvailable struct { +// List of packages that the server offers to the agent. +type PackagesAvailable struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Map of addons. Keys are addon names, values are the addons available for download. - Addons map[string]*AddonAvailable `protobuf:"bytes,1,rep,name=addons,proto3" json:"addons,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Aggregate hash of all remotely installed addons. The agent SHOULD include this + // Map of packages. Keys are package names, values are the packages available for download. + Packages map[string]*PackageAvailable `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Aggregate hash of all remotely installed packages. The agent SHOULD include this // value in subsequent StatusReport messages. This in turn allows the management - // server to identify that a different set of addons is available for the agent - // and specify the available addons in the next DataToAgent message. + // server to identify that a different set of packages is available for the agent + // and specify the available packages in the next DataToAgent message. // - // This field MUST be always set if the management server supports addons + // This field MUST be always set if the management server supports packages // of agents. // - // The hash is calculated as an aggregate of all addon names and content. - AllAddonsHash []byte `protobuf:"bytes,2,opt,name=all_addons_hash,json=allAddonsHash,proto3" json:"all_addons_hash,omitempty"` + // The hash is calculated as an aggregate of all packages names and content. + AllPackagesHash []byte `protobuf:"bytes,2,opt,name=all_packages_hash,json=allPackagesHash,proto3" json:"all_packages_hash,omitempty"` } -func (x *AddonsAvailable) Reset() { - *x = AddonsAvailable{} +func (x *PackagesAvailable) Reset() { + *x = PackagesAvailable{} if protoimpl.UnsafeEnabled { mi := &file_opamp_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1410,13 +1361,13 @@ func (x *AddonsAvailable) Reset() { } } -func (x *AddonsAvailable) String() string { +func (x *PackagesAvailable) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AddonsAvailable) ProtoMessage() {} +func (*PackagesAvailable) ProtoMessage() {} -func (x *AddonsAvailable) ProtoReflect() protoreflect.Message { +func (x *PackagesAvailable) ProtoReflect() protoreflect.Message { mi := &file_opamp_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1428,53 +1379,61 @@ func (x *AddonsAvailable) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AddonsAvailable.ProtoReflect.Descriptor instead. -func (*AddonsAvailable) Descriptor() ([]byte, []int) { +// Deprecated: Use PackagesAvailable.ProtoReflect.Descriptor instead. +func (*PackagesAvailable) Descriptor() ([]byte, []int) { return file_opamp_proto_rawDescGZIP(), []int{8} } -func (x *AddonsAvailable) GetAddons() map[string]*AddonAvailable { +func (x *PackagesAvailable) GetPackages() map[string]*PackageAvailable { if x != nil { - return x.Addons + return x.Packages } return nil } -func (x *AddonsAvailable) GetAllAddonsHash() []byte { +func (x *PackagesAvailable) GetAllPackagesHash() []byte { if x != nil { - return x.AllAddonsHash + return x.AllPackagesHash } return nil } -// An Addon is a collection of named files. The content of the files, functionality -// provided by the addons, how they are stored and used by the Agent side is agent +// Each Agent is composed of one or more packages. A package has a name and +// content stored in a file. The content of the files, functionality +// provided by the packages, how they are stored and used by the Agent side is agent // type-specific and is outside the concerns of the OpAMP protocol. // -// If the agent does not have an installed addon with the specified name then +// If the agent does not have an installed package with the specified name then // it SHOULD download it from the specified URL and install it. // -// If the agent already has an installed addon with the specified name +// If the agent already has an installed package with the specified name // but with a different hash then the agent SHOULD download and -// install the addon again, since it is a different version of the same addon. +// install the package again, since it is a different version of the same package. // -// If the agent has an installed addon with the specified name and the same +// If the agent has an installed package with the specified name and the same // hash then the agent does not need to do anything, it already -// has the right version of the addon. -type AddonAvailable struct { +// has the right version of the package. +type PackageAvailable struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The downloadable file of the addon. - File *DownloadableFile `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"` - // The hash of the addon. SHOULD be calculated based on addon name and - // content of the file of the addon. - Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` + Type PackageAvailable_PackageType `protobuf:"varint,1,opt,name=type,proto3,enum=opamp.proto.PackageAvailable_PackageType" json:"type,omitempty"` + // The package version that is available on the server side. The agent may for + // example use this information to avoid downloading a package that was previously + // already downloaded and failed to install. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + // The downloadable file of the package. + File *DownloadableFile `protobuf:"bytes,3,opt,name=file,proto3" json:"file,omitempty"` + // The hash of the package. SHOULD be calculated based on all other fields of the + // PackageAvailable message and content of the file of the package. The hash is + // used by the Agent to determine if the package it has is different from the + // package the Server is offering. + Hash []byte `protobuf:"bytes,4,opt,name=hash,proto3" json:"hash,omitempty"` } -func (x *AddonAvailable) Reset() { - *x = AddonAvailable{} +func (x *PackageAvailable) Reset() { + *x = PackageAvailable{} if protoimpl.UnsafeEnabled { mi := &file_opamp_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1482,13 +1441,13 @@ func (x *AddonAvailable) Reset() { } } -func (x *AddonAvailable) String() string { +func (x *PackageAvailable) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AddonAvailable) ProtoMessage() {} +func (*PackageAvailable) ProtoMessage() {} -func (x *AddonAvailable) ProtoReflect() protoreflect.Message { +func (x *PackageAvailable) ProtoReflect() protoreflect.Message { mi := &file_opamp_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1500,19 +1459,33 @@ func (x *AddonAvailable) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AddonAvailable.ProtoReflect.Descriptor instead. -func (*AddonAvailable) Descriptor() ([]byte, []int) { +// Deprecated: Use PackageAvailable.ProtoReflect.Descriptor instead. +func (*PackageAvailable) Descriptor() ([]byte, []int) { return file_opamp_proto_rawDescGZIP(), []int{9} } -func (x *AddonAvailable) GetFile() *DownloadableFile { +func (x *PackageAvailable) GetType() PackageAvailable_PackageType { + if x != nil { + return x.Type + } + return PackageAvailable_TopLevelPackage +} + +func (x *PackageAvailable) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *PackageAvailable) GetFile() *DownloadableFile { if x != nil { return x.File } return nil } -func (x *AddonAvailable) GetHash() []byte { +func (x *PackageAvailable) GetHash() []byte { if x != nil { return x.Hash } @@ -1724,70 +1697,6 @@ func (x *RetryInfo) GetRetryAfterNanoseconds() uint64 { return 0 } -// AgentPackageAvailable message is sent from the server to the agent to indicate that there -// is an agent package available for the agent to download and self-update. Can be -// used by the server to initiate an agent upgrade or downgrade. -type AgentPackageAvailable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The agent version that is available on the server side. The agent may for - // example use this information to avoid downloading a package that was previously - // already downloaded and failed to install. - Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // The downloadable file of the package. - // Executable files SHOULD be code-signed and the signature SHOULD be verified - // by the agent after downloading and before installing. - File *DownloadableFile `protobuf:"bytes,2,opt,name=file,proto3" json:"file,omitempty"` -} - -func (x *AgentPackageAvailable) Reset() { - *x = AgentPackageAvailable{} - if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AgentPackageAvailable) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AgentPackageAvailable) ProtoMessage() {} - -func (x *AgentPackageAvailable) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[13] - 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 AgentPackageAvailable.ProtoReflect.Descriptor instead. -func (*AgentPackageAvailable) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{13} -} - -func (x *AgentPackageAvailable) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *AgentPackageAvailable) GetFile() *DownloadableFile { - if x != nil { - return x.File - } - return nil -} - // ServerToAgentCommand is sent from the server to the agent to request that the agent // perform a command. type ServerToAgentCommand struct { @@ -1801,7 +1710,7 @@ type ServerToAgentCommand struct { func (x *ServerToAgentCommand) Reset() { *x = ServerToAgentCommand{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[14] + mi := &file_opamp_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1814,7 +1723,7 @@ func (x *ServerToAgentCommand) String() string { func (*ServerToAgentCommand) ProtoMessage() {} func (x *ServerToAgentCommand) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[14] + mi := &file_opamp_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1827,7 +1736,7 @@ func (x *ServerToAgentCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerToAgentCommand.ProtoReflect.Descriptor instead. func (*ServerToAgentCommand) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{14} + return file_opamp_proto_rawDescGZIP(), []int{13} } func (x *ServerToAgentCommand) GetType() ServerToAgentCommand_CommandType { @@ -1879,7 +1788,7 @@ type AgentDescription struct { func (x *AgentDescription) Reset() { *x = AgentDescription{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[15] + mi := &file_opamp_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1892,7 +1801,7 @@ func (x *AgentDescription) String() string { func (*AgentDescription) ProtoMessage() {} func (x *AgentDescription) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[15] + mi := &file_opamp_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1905,7 +1814,7 @@ func (x *AgentDescription) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentDescription.ProtoReflect.Descriptor instead. func (*AgentDescription) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{15} + return file_opamp_proto_rawDescGZIP(), []int{14} } func (x *AgentDescription) GetIdentifyingAttributes() []*KeyValue { @@ -1955,7 +1864,7 @@ type StatusReport struct { func (x *StatusReport) Reset() { *x = StatusReport{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[16] + mi := &file_opamp_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1968,7 +1877,7 @@ func (x *StatusReport) String() string { func (*StatusReport) ProtoMessage() {} func (x *StatusReport) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[16] + mi := &file_opamp_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1981,7 +1890,7 @@ func (x *StatusReport) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusReport.ProtoReflect.Descriptor instead. func (*StatusReport) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{16} + return file_opamp_proto_rawDescGZIP(), []int{15} } func (x *StatusReport) GetAgentDescription() *AgentDescription { @@ -2036,7 +1945,7 @@ type EffectiveConfig struct { func (x *EffectiveConfig) Reset() { *x = EffectiveConfig{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[17] + mi := &file_opamp_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2049,7 +1958,7 @@ func (x *EffectiveConfig) String() string { func (*EffectiveConfig) ProtoMessage() {} func (x *EffectiveConfig) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[17] + mi := &file_opamp_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2062,7 +1971,7 @@ func (x *EffectiveConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EffectiveConfig.ProtoReflect.Descriptor instead. func (*EffectiveConfig) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{17} + return file_opamp_proto_rawDescGZIP(), []int{16} } func (x *EffectiveConfig) GetHash() []byte { @@ -2096,7 +2005,7 @@ type RemoteConfigStatus struct { func (x *RemoteConfigStatus) Reset() { *x = RemoteConfigStatus{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[18] + mi := &file_opamp_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2109,7 +2018,7 @@ func (x *RemoteConfigStatus) String() string { func (*RemoteConfigStatus) ProtoMessage() {} func (x *RemoteConfigStatus) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[18] + mi := &file_opamp_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2122,7 +2031,7 @@ func (x *RemoteConfigStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteConfigStatus.ProtoReflect.Descriptor instead. func (*RemoteConfigStatus) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{18} + return file_opamp_proto_rawDescGZIP(), []int{17} } func (x *RemoteConfigStatus) GetLastRemoteConfigHash() []byte { @@ -2146,39 +2055,42 @@ func (x *RemoteConfigStatus) GetErrorMessage() string { return "" } -// The status of all addons that the agent has or was offered. -type AgentAddonStatuses struct { +// The PackageStatuses message describes the status of all packages that the agent +// has or was offered. +type PackageStatuses struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Map of addons. Keys are addon names, and MUST match the name field of AgentAddonStatus. - Addons map[string]*AgentAddonStatus `protobuf:"bytes,1,rep,name=addons,proto3" json:"addons,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // The aggregate hash of all addons that this Agent previously received from - // the server via AddonsAvailable message. - // The server SHOULD compare this hash to the aggregate hash of all addons that + // A map of PackageStatus messages, where the keys are package names. + // The key MUST match the name field of PackageStatus message. + Packages map[string]*PackageStatus `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // The aggregate hash of all packages that this Agent previously received from the + // server via PackagesAvailable message. + // + // The server SHOULD compare this hash to the aggregate hash of all packages that // it has for this Agent and if the hashes are different the server SHOULD send - // an AddonsAvailable message to the agent. - ServerProvidedAllAddonsHash []byte `protobuf:"bytes,2,opt,name=server_provided_all_addons_hash,json=serverProvidedAllAddonsHash,proto3" json:"server_provided_all_addons_hash,omitempty"` + // an PackagesAvailable message to the agent. + ServerProvidedAllPackagesHash []byte `protobuf:"bytes,2,opt,name=server_provided_all_packages_hash,json=serverProvidedAllPackagesHash,proto3" json:"server_provided_all_packages_hash,omitempty"` } -func (x *AgentAddonStatuses) Reset() { - *x = AgentAddonStatuses{} +func (x *PackageStatuses) Reset() { + *x = PackageStatuses{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[19] + mi := &file_opamp_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AgentAddonStatuses) String() string { +func (x *PackageStatuses) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AgentAddonStatuses) ProtoMessage() {} +func (*PackageStatuses) ProtoMessage() {} -func (x *AgentAddonStatuses) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[19] +func (x *PackageStatuses) ProtoReflect() protoreflect.Message { + mi := &file_opamp_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2189,74 +2101,92 @@ func (x *AgentAddonStatuses) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AgentAddonStatuses.ProtoReflect.Descriptor instead. -func (*AgentAddonStatuses) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{19} +// Deprecated: Use PackageStatuses.ProtoReflect.Descriptor instead. +func (*PackageStatuses) Descriptor() ([]byte, []int) { + return file_opamp_proto_rawDescGZIP(), []int{18} } -func (x *AgentAddonStatuses) GetAddons() map[string]*AgentAddonStatus { +func (x *PackageStatuses) GetPackages() map[string]*PackageStatus { if x != nil { - return x.Addons + return x.Packages } return nil } -func (x *AgentAddonStatuses) GetServerProvidedAllAddonsHash() []byte { +func (x *PackageStatuses) GetServerProvidedAllPackagesHash() []byte { if x != nil { - return x.ServerProvidedAllAddonsHash + return x.ServerProvidedAllPackagesHash } return nil } -// The status of a single addon. -type AgentAddonStatus struct { +// The status of a single package. +type PackageStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Addon name. MUST be always set. + // Package name. MUST be always set and MUST match the key in the packages field + // of PackageStatuses message. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The hash of the addon that the agent has. - // MUST be set if the agent has this addon. - // MUST be empty if the agent does not have this addon. This may be the case for - // example if the addon was offered by server but failed to install and the agent - // did not have this addon previously. - AgentHasHash []byte `protobuf:"bytes,2,opt,name=agent_has_hash,json=agentHasHash,proto3" json:"agent_has_hash,omitempty"` - // The hash of the addon that the server offered to the agent. - // MUST be set if the installation is initiated by an - // earlier offer from the server to install this addon. + // The version of the package that the Agent has. + // MUST be set if the Agent has this package. + // MUST be empty if the Agent does not have this package. This may be the case + // for example if the package was offered by the Server but failed to install + // and the agent did not have this package previously. + AgentHasVersion string `protobuf:"bytes,2,opt,name=agent_has_version,json=agentHasVersion,proto3" json:"agent_has_version,omitempty"` + // The hash of the package that the Agent has. + // MUST be set if the Agent has this package. + // MUST be empty if the Agent does not have this package. This may be the case for + // example if the package was offered by the Server but failed to install and the + // agent did not have this package previously. + AgentHasHash []byte `protobuf:"bytes,3,opt,name=agent_has_hash,json=agentHasHash,proto3" json:"agent_has_hash,omitempty"` + // The version of the package that the server offered to the agent. + // MUST be set if the installation of the package is initiated by an earlier offer + // from the server to install this package. // - // MUST be empty if the Agent has this addon but it was installed locally and + // MUST be empty if the Agent has this package but it was installed locally and // was not offered by the server. // - // Note that it is possible for both has_hash and - // server_offered_hash fields to be set and to have different values. - // This is for example possible if the agent already has a version of the addon - // successfully installed, the server offers a different version, but the agent - // fails to install that version. - ServerOfferedHash []byte `protobuf:"bytes,3,opt,name=server_offered_hash,json=serverOfferedHash,proto3" json:"server_offered_hash,omitempty"` - Status AgentAddonStatus_Status `protobuf:"varint,4,opt,name=status,proto3,enum=opamp.proto.AgentAddonStatus_Status" json:"status,omitempty"` + // Note that it is possible for both agent_has_version and server_offered_version + // fields to be set and to have different values. This is for example possible if + // the agent already has a version of the package successfully installed, the server + // offers a different version, but the agent fails to install that version. + ServerOfferedVersion string `protobuf:"bytes,4,opt,name=server_offered_version,json=serverOfferedVersion,proto3" json:"server_offered_version,omitempty"` + // The hash of the package that the server offered to the agent. + // MUST be set if the installation of the package is initiated by an earlier + // offer from the server to install this package. + // + // MUST be empty if the Agent has this package but it was installed locally and + // was not offered by the server. + // + // Note that it is possible for both agent_has_hash and server_offered_hash + // fields to be set and to have different values. This is for example possible if + // the agent already has a version of the package successfully installed, the + // server offers a different version, but the agent fails to install that version. + ServerOfferedHash []byte `protobuf:"bytes,5,opt,name=server_offered_hash,json=serverOfferedHash,proto3" json:"server_offered_hash,omitempty"` + Status PackageStatus_Status `protobuf:"varint,6,opt,name=status,proto3,enum=opamp.proto.PackageStatus_Status" json:"status,omitempty"` // Error message if the status is erroneous. - ErrorMessage string `protobuf:"bytes,5,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + ErrorMessage string `protobuf:"bytes,7,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` } -func (x *AgentAddonStatus) Reset() { - *x = AgentAddonStatus{} +func (x *PackageStatus) Reset() { + *x = PackageStatus{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[20] + mi := &file_opamp_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AgentAddonStatus) String() string { +func (x *PackageStatus) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AgentAddonStatus) ProtoMessage() {} +func (*PackageStatus) ProtoMessage() {} -func (x *AgentAddonStatus) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[20] +func (x *PackageStatus) ProtoReflect() protoreflect.Message { + mi := &file_opamp_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2267,118 +2197,54 @@ func (x *AgentAddonStatus) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AgentAddonStatus.ProtoReflect.Descriptor instead. -func (*AgentAddonStatus) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{20} +// Deprecated: Use PackageStatus.ProtoReflect.Descriptor instead. +func (*PackageStatus) Descriptor() ([]byte, []int) { + return file_opamp_proto_rawDescGZIP(), []int{19} } -func (x *AgentAddonStatus) GetName() string { +func (x *PackageStatus) GetName() string { if x != nil { return x.Name } return "" } -func (x *AgentAddonStatus) GetAgentHasHash() []byte { +func (x *PackageStatus) GetAgentHasVersion() string { if x != nil { - return x.AgentHasHash + return x.AgentHasVersion } - return nil + return "" } -func (x *AgentAddonStatus) GetServerOfferedHash() []byte { +func (x *PackageStatus) GetAgentHasHash() []byte { if x != nil { - return x.ServerOfferedHash + return x.AgentHasHash } return nil } -func (x *AgentAddonStatus) GetStatus() AgentAddonStatus_Status { - if x != nil { - return x.Status - } - return AgentAddonStatus_Installed -} - -func (x *AgentAddonStatus) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -// The status of the last install status performed by the agent. -type AgentInstallStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The version field from the AgentPackageAvailable that the server offered - // to the agent. MUST be set if the agent previously received an offer from - // the server to install this agent. - ServerOfferedVersion string `protobuf:"bytes,1,opt,name=server_offered_version,json=serverOfferedVersion,proto3" json:"server_offered_version,omitempty"` - // The hash of the DownloadableFileList of agent package that the server - // offered to the agent. - ServerOfferedHash []byte `protobuf:"bytes,2,opt,name=server_offered_hash,json=serverOfferedHash,proto3" json:"server_offered_hash,omitempty"` - Status AgentInstallStatus_Status `protobuf:"varint,3,opt,name=status,proto3,enum=opamp.proto.AgentInstallStatus_Status" json:"status,omitempty"` - // Optional human readable error message if the status is erroneous. - ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` -} - -func (x *AgentInstallStatus) Reset() { - *x = AgentInstallStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AgentInstallStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AgentInstallStatus) ProtoMessage() {} - -func (x *AgentInstallStatus) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[21] - 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 AgentInstallStatus.ProtoReflect.Descriptor instead. -func (*AgentInstallStatus) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{21} -} - -func (x *AgentInstallStatus) GetServerOfferedVersion() string { +func (x *PackageStatus) GetServerOfferedVersion() string { if x != nil { return x.ServerOfferedVersion } return "" } -func (x *AgentInstallStatus) GetServerOfferedHash() []byte { +func (x *PackageStatus) GetServerOfferedHash() []byte { if x != nil { return x.ServerOfferedHash } return nil } -func (x *AgentInstallStatus) GetStatus() AgentInstallStatus_Status { +func (x *PackageStatus) GetStatus() PackageStatus_Status { if x != nil { return x.Status } - return AgentInstallStatus_Installed + return PackageStatus_Installed } -func (x *AgentInstallStatus) GetErrorMessage() string { +func (x *PackageStatus) GetErrorMessage() string { if x != nil { return x.ErrorMessage } @@ -2400,7 +2266,7 @@ type AgentIdentification struct { func (x *AgentIdentification) Reset() { *x = AgentIdentification{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[22] + mi := &file_opamp_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2413,7 +2279,7 @@ func (x *AgentIdentification) String() string { func (*AgentIdentification) ProtoMessage() {} func (x *AgentIdentification) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[22] + mi := &file_opamp_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2426,7 +2292,7 @@ func (x *AgentIdentification) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentIdentification.ProtoReflect.Descriptor instead. func (*AgentIdentification) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{22} + return file_opamp_proto_rawDescGZIP(), []int{20} } func (x *AgentIdentification) GetNewInstanceUid() string { @@ -2461,7 +2327,7 @@ type AgentRemoteConfig struct { func (x *AgentRemoteConfig) Reset() { *x = AgentRemoteConfig{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[23] + mi := &file_opamp_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2474,7 +2340,7 @@ func (x *AgentRemoteConfig) String() string { func (*AgentRemoteConfig) ProtoMessage() {} func (x *AgentRemoteConfig) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[23] + mi := &file_opamp_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2487,7 +2353,7 @@ func (x *AgentRemoteConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentRemoteConfig.ProtoReflect.Descriptor instead. func (*AgentRemoteConfig) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{23} + return file_opamp_proto_rawDescGZIP(), []int{21} } func (x *AgentRemoteConfig) GetConfig() *AgentConfigMap { @@ -2520,7 +2386,7 @@ type AgentConfigMap struct { func (x *AgentConfigMap) Reset() { *x = AgentConfigMap{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[24] + mi := &file_opamp_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2533,7 +2399,7 @@ func (x *AgentConfigMap) String() string { func (*AgentConfigMap) ProtoMessage() {} func (x *AgentConfigMap) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[24] + mi := &file_opamp_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2546,7 +2412,7 @@ func (x *AgentConfigMap) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentConfigMap.ProtoReflect.Descriptor instead. func (*AgentConfigMap) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{24} + return file_opamp_proto_rawDescGZIP(), []int{22} } func (x *AgentConfigMap) GetConfigMap() map[string]*AgentConfigFile { @@ -2572,7 +2438,7 @@ type AgentConfigFile struct { func (x *AgentConfigFile) Reset() { *x = AgentConfigFile{} if protoimpl.UnsafeEnabled { - mi := &file_opamp_proto_msgTypes[25] + mi := &file_opamp_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2585,7 +2451,7 @@ func (x *AgentConfigFile) String() string { func (*AgentConfigFile) ProtoMessage() {} func (x *AgentConfigFile) ProtoReflect() protoreflect.Message { - mi := &file_opamp_proto_msgTypes[25] + mi := &file_opamp_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2598,7 +2464,7 @@ func (x *AgentConfigFile) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentConfigFile.ProtoReflect.Descriptor instead. func (*AgentConfigFile) Descriptor() ([]byte, []int) { - return file_opamp_proto_rawDescGZIP(), []int{25} + return file_opamp_proto_rawDescGZIP(), []int{23} } func (x *AgentConfigFile) GetBody() []byte { @@ -2620,7 +2486,7 @@ var File_opamp_proto protoreflect.FileDescriptor var file_opamp_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x61, 0x6e, 0x79, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdf, 0x03, 0x0a, 0x0d, 0x41, + 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x03, 0x0a, 0x0d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x69, 0x64, 0x12, @@ -2628,389 +2494,362 @@ var file_opamp_proto_rawDesc = []byte{ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, - 0x46, 0x0a, 0x0e, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x14, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x12, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x52, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x12, 0x43, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, - 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x42, 0x0a, 0x12, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x14, - 0x0a, 0x10, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x69, 0x64, 0x10, 0x01, 0x22, 0x11, 0x0a, 0x0f, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x22, - 0x9d, 0x06, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x55, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x0e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, - 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0d, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, - 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, + 0x47, 0x0a, 0x10, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x52, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x12, 0x43, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, + 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x42, 0x0a, 0x12, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, + 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x10, + 0x46, 0x6c, 0x61, 0x67, 0x73, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x69, 0x64, 0x10, 0x01, 0x22, 0x11, 0x0a, 0x0f, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x22, 0xca, 0x05, + 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, + 0x69, 0x64, 0x12, 0x47, 0x0a, 0x0e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x61, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0d, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x56, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x4f, 0x66, + 0x66, 0x65, 0x72, 0x73, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x70, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x73, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x56, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x61, 0x64, - 0x64, 0x6f, 0x6e, 0x73, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x5a, 0x0a, 0x17, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x15, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, - 0x36, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, - 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x73, - 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, - 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0c, - 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x14, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x61, - 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x4f, - 0x0a, 0x05, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x6c, 0x61, 0x67, 0x73, - 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x19, 0x0a, - 0x15, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x02, 0x22, - 0x97, 0x03, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x61, - 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x12, 0x39, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x63, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, - 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x63, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x6d, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x73, - 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x40, 0x0a, 0x05, 0x46, 0x6c, 0x61, 0x67, 0x73, - 0x12, 0x05, 0x0a, 0x01, 0x5f, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, - 0x74, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x10, 0x02, 0x22, 0x38, 0x0a, 0x07, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x22, 0x30, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x74, 0x0a, 0x0e, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x61, 0x5f, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, - 0x63, 0x61, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0xf3, 0x03, 0x0a, 0x18, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x35, 0x0a, 0x05, - 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, - 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x05, 0x6f, 0x70, - 0x61, 0x6d, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x5f, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x4c, 0x6f, 0x67, - 0x73, 0x12, 0x68, 0x0a, 0x11, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, - 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x11, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x41, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, + 0x43, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x14, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x61, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, + 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x52, 0x0a, 0x05, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, + 0x14, 0x0a, 0x10, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x02, 0x22, 0x97, 0x03, 0x0a, 0x12, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0x31, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x22, 0x40, 0x0a, 0x05, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x05, 0x0a, 0x01, 0x5f, + 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x10, 0x01, 0x12, 0x14, + 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, + 0x65, 0x74, 0x10, 0x02, 0x22, 0x38, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x2d, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x30, + 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x74, 0x0a, 0x0e, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, + 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x61, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x61, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0xf3, 0x03, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x4f, 0x66, 0x66, - 0x65, 0x72, 0x73, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x64, 0x0a, 0x15, 0x4f, + 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x35, 0x0a, 0x05, 0x6f, 0x70, 0x61, 0x6d, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x05, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x12, 0x40, + 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x12, 0x3e, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, + 0x12, 0x3a, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x68, 0x0a, 0x11, + 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0xd3, 0x01, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x41, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x5f, 0x61, - 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x48, 0x61, 0x73, 0x68, 0x1a, - 0x56, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, - 0x64, 0x6f, 0x6e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x6f, 0x6e, - 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x66, 0x69, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x61, 0x62, - 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, - 0x22, 0x76, 0x0a, 0x10, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xef, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, - 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x09, - 0x72, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x34, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0e, - 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10, 0x01, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10, 0x02, 0x42, - 0x09, 0x0a, 0x07, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x43, 0x0a, 0x09, 0x52, 0x65, - 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x74, 0x72, 0x79, - 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x72, 0x65, 0x74, 0x72, 0x79, 0x41, - 0x66, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, - 0x64, 0x0a, 0x15, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x64, 0x0a, 0x15, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe5, 0x01, 0x0a, + 0x11, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x11, + 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x73, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x5a, 0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x61, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe8, 0x01, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, - 0x04, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x75, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, - 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x41, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x70, - 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x1a, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0b, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x00, 0x22, 0xb5, 0x01, 0x0a, - 0x10, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x4c, 0x0a, 0x16, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, - 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x79, 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, - 0x53, 0x0a, 0x1a, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, - 0x6e, 0x67, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x6e, 0x6f, 0x6e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x22, 0xba, 0x02, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4a, 0x0a, 0x11, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x10, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, - 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x65, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x14, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, - 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x22, 0x61, 0x0a, 0x0f, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, + 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x34, 0x0a, 0x0b, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x6f, 0x70, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x01, 0x22, + 0x76, 0x0a, 0x10, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x46, + 0x69, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xef, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, + 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x34, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0e, 0x0a, + 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10, 0x01, 0x12, 0x0f, 0x0a, + 0x0b, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10, 0x02, 0x42, 0x09, + 0x0a, 0x07, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x43, 0x0a, 0x09, 0x52, 0x65, 0x74, + 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, + 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x72, 0x65, 0x74, 0x72, 0x79, 0x41, 0x66, + 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x75, + 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x1a, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x10, 0x00, 0x22, 0xb5, 0x01, 0x0a, 0x10, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x16, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x61, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x15, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x1a, 0x6e, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, + 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x18, 0x6e, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, + 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0xba, 0x02, + 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4a, + 0x0a, 0x11, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x65, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x0f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x22, 0xe1, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x6c, 0x61, - 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, - 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x2f, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, - 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, - 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x02, 0x22, 0xf9, 0x01, 0x0a, 0x12, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, - 0x43, 0x0a, 0x06, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, - 0x2e, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x61, 0x64, - 0x64, 0x6f, 0x6e, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x6f, - 0x6e, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1b, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x41, 0x6c, 0x6c, - 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x58, 0x0a, 0x0b, 0x41, 0x64, - 0x64, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x61, - 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x64, - 0x64, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaf, 0x02, 0x0a, 0x10, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x64, - 0x64, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, - 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x66, - 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x6e, - 0x67, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x10, 0x03, 0x22, 0xb4, 0x02, 0x0a, 0x12, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, - 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x66, - 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x53, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x10, - 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x10, - 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4e, - 0x6f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x22, 0x3f, 0x0a, - 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x69, 0x64, 0x22, 0x69, - 0x0a, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x22, 0xb7, 0x01, 0x0a, 0x0e, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x49, 0x0a, 0x0a, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x1a, 0x5a, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x61, - 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x48, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2a, 0xfd, 0x01, - 0x0a, 0x12, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x66, 0x66, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x02, - 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x45, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, - 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x10, 0x08, 0x12, 0x17, - 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x10, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x66, 0x66, 0x65, 0x72, - 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x20, 0x12, - 0x1d, 0x0a, 0x19, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x40, 0x12, 0x1d, - 0x0a, 0x18, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x10, 0x80, 0x01, 0x2a, 0x89, 0x03, - 0x0a, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x02, 0x12, - 0x1a, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x41, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x10, 0x08, 0x12, 0x17, - 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x20, - 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x40, 0x12, - 0x15, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4f, 0x77, 0x6e, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x73, 0x10, 0x80, 0x01, 0x12, 0x16, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x4f, 0x77, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x80, 0x02, 0x12, 0x13, - 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4f, 0x77, 0x6e, 0x4c, 0x6f, 0x67, 0x73, - 0x10, 0x80, 0x04, 0x12, 0x23, 0x0a, 0x1e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x4f, 0x70, - 0x41, 0x4d, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x10, 0x80, 0x08, 0x12, 0x23, 0x0a, 0x1e, 0x41, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x73, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x10, 0x80, 0x10, 0x12, 0x1a, 0x0a, - 0x15, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x10, 0x80, 0x20, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x2d, 0x74, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2f, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2d, 0x67, 0x6f, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0c, 0x63, 0x61, + 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x0f, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, + 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, + 0x68, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0xe1, 0x01, + 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x70, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x22, 0x2f, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, + 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, + 0x02, 0x22, 0xfc, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x48, 0x0a, + 0x21, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, + 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x73, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x57, 0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x8b, 0x03, 0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, + 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x48, 0x61, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x4f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, + 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x39, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, + 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4e, + 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x03, 0x22, 0x3f, + 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x69, 0x64, 0x22, + 0x69, 0x0a, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x22, 0xb7, 0x01, 0x0a, 0x0e, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x49, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x1a, 0x5a, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x48, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2a, 0xc9, + 0x01, 0x0a, 0x12, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x66, 0x66, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, + 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x45, 0x66, 0x66, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x04, 0x12, 0x12, 0x0a, + 0x0e, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x10, + 0x08, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x10, 0x12, 0x1c, 0x0a, 0x18, + 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x10, 0x20, 0x2a, 0xd3, 0x02, 0x0a, 0x11, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x10, 0x08, 0x12, 0x19, 0x0a, + 0x15, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x4f, 0x77, 0x6e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x10, 0x20, 0x12, 0x15, + 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4f, 0x77, 0x6e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x10, 0x40, 0x12, 0x13, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x4f, 0x77, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x10, 0x80, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x41, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x73, 0x4f, 0x70, 0x41, 0x4d, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x10, 0x80, 0x02, 0x12, + 0x23, 0x0a, 0x1e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x10, 0x80, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x10, 0x80, 0x08, + 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, + 0x70, 0x65, 0x6e, 0x2d, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2f, 0x6f, 0x70, + 0x61, 0x6d, 0x70, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3026,18 +2865,18 @@ func file_opamp_proto_rawDescGZIP() []byte { } var file_opamp_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -var file_opamp_proto_msgTypes = make([]protoimpl.MessageInfo, 30) +var file_opamp_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_opamp_proto_goTypes = []interface{}{ (ServerCapabilities)(0), // 0: opamp.proto.ServerCapabilities (AgentCapabilities)(0), // 1: opamp.proto.AgentCapabilities (AgentToServer_AgentToServerFlags)(0), // 2: opamp.proto.AgentToServer.AgentToServerFlags (ServerToAgent_Flags)(0), // 3: opamp.proto.ServerToAgent.Flags (ConnectionSettings_Flags)(0), // 4: opamp.proto.ConnectionSettings.Flags - (ServerErrorResponse_Type)(0), // 5: opamp.proto.ServerErrorResponse.Type - (ServerToAgentCommand_CommandType)(0), // 6: opamp.proto.ServerToAgentCommand.CommandType - (RemoteConfigStatus_Status)(0), // 7: opamp.proto.RemoteConfigStatus.Status - (AgentAddonStatus_Status)(0), // 8: opamp.proto.AgentAddonStatus.Status - (AgentInstallStatus_Status)(0), // 9: opamp.proto.AgentInstallStatus.Status + (PackageAvailable_PackageType)(0), // 5: opamp.proto.PackageAvailable.PackageType + (ServerErrorResponse_Type)(0), // 6: opamp.proto.ServerErrorResponse.Type + (ServerToAgentCommand_CommandType)(0), // 7: opamp.proto.ServerToAgentCommand.CommandType + (RemoteConfigStatus_Status)(0), // 8: opamp.proto.RemoteConfigStatus.Status + (PackageStatus_Status)(0), // 9: opamp.proto.PackageStatus.Status (*AgentToServer)(nil), // 10: opamp.proto.AgentToServer (*AgentDisconnect)(nil), // 11: opamp.proto.AgentDisconnect (*ServerToAgent)(nil), // 12: opamp.proto.ServerToAgent @@ -3046,83 +2885,78 @@ var file_opamp_proto_goTypes = []interface{}{ (*Header)(nil), // 15: opamp.proto.Header (*TLSCertificate)(nil), // 16: opamp.proto.TLSCertificate (*ConnectionSettingsOffers)(nil), // 17: opamp.proto.ConnectionSettingsOffers - (*AddonsAvailable)(nil), // 18: opamp.proto.AddonsAvailable - (*AddonAvailable)(nil), // 19: opamp.proto.AddonAvailable + (*PackagesAvailable)(nil), // 18: opamp.proto.PackagesAvailable + (*PackageAvailable)(nil), // 19: opamp.proto.PackageAvailable (*DownloadableFile)(nil), // 20: opamp.proto.DownloadableFile (*ServerErrorResponse)(nil), // 21: opamp.proto.ServerErrorResponse (*RetryInfo)(nil), // 22: opamp.proto.RetryInfo - (*AgentPackageAvailable)(nil), // 23: opamp.proto.AgentPackageAvailable - (*ServerToAgentCommand)(nil), // 24: opamp.proto.ServerToAgentCommand - (*AgentDescription)(nil), // 25: opamp.proto.AgentDescription - (*StatusReport)(nil), // 26: opamp.proto.StatusReport - (*EffectiveConfig)(nil), // 27: opamp.proto.EffectiveConfig - (*RemoteConfigStatus)(nil), // 28: opamp.proto.RemoteConfigStatus - (*AgentAddonStatuses)(nil), // 29: opamp.proto.AgentAddonStatuses - (*AgentAddonStatus)(nil), // 30: opamp.proto.AgentAddonStatus - (*AgentInstallStatus)(nil), // 31: opamp.proto.AgentInstallStatus - (*AgentIdentification)(nil), // 32: opamp.proto.AgentIdentification - (*AgentRemoteConfig)(nil), // 33: opamp.proto.AgentRemoteConfig - (*AgentConfigMap)(nil), // 34: opamp.proto.AgentConfigMap - (*AgentConfigFile)(nil), // 35: opamp.proto.AgentConfigFile - nil, // 36: opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry - nil, // 37: opamp.proto.AddonsAvailable.AddonsEntry - nil, // 38: opamp.proto.AgentAddonStatuses.AddonsEntry - nil, // 39: opamp.proto.AgentConfigMap.ConfigMapEntry - (*KeyValue)(nil), // 40: opamp.proto.KeyValue + (*ServerToAgentCommand)(nil), // 23: opamp.proto.ServerToAgentCommand + (*AgentDescription)(nil), // 24: opamp.proto.AgentDescription + (*StatusReport)(nil), // 25: opamp.proto.StatusReport + (*EffectiveConfig)(nil), // 26: opamp.proto.EffectiveConfig + (*RemoteConfigStatus)(nil), // 27: opamp.proto.RemoteConfigStatus + (*PackageStatuses)(nil), // 28: opamp.proto.PackageStatuses + (*PackageStatus)(nil), // 29: opamp.proto.PackageStatus + (*AgentIdentification)(nil), // 30: opamp.proto.AgentIdentification + (*AgentRemoteConfig)(nil), // 31: opamp.proto.AgentRemoteConfig + (*AgentConfigMap)(nil), // 32: opamp.proto.AgentConfigMap + (*AgentConfigFile)(nil), // 33: opamp.proto.AgentConfigFile + nil, // 34: opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry + nil, // 35: opamp.proto.PackagesAvailable.PackagesEntry + nil, // 36: opamp.proto.PackageStatuses.PackagesEntry + nil, // 37: opamp.proto.AgentConfigMap.ConfigMapEntry + (*KeyValue)(nil), // 38: opamp.proto.KeyValue } var file_opamp_proto_depIdxs = []int32{ - 26, // 0: opamp.proto.AgentToServer.status_report:type_name -> opamp.proto.StatusReport - 29, // 1: opamp.proto.AgentToServer.addon_statuses:type_name -> opamp.proto.AgentAddonStatuses - 31, // 2: opamp.proto.AgentToServer.agent_install_status:type_name -> opamp.proto.AgentInstallStatus - 11, // 3: opamp.proto.AgentToServer.agent_disconnect:type_name -> opamp.proto.AgentDisconnect - 2, // 4: opamp.proto.AgentToServer.flags:type_name -> opamp.proto.AgentToServer.AgentToServerFlags - 21, // 5: opamp.proto.ServerToAgent.error_response:type_name -> opamp.proto.ServerErrorResponse - 33, // 6: opamp.proto.ServerToAgent.remote_config:type_name -> opamp.proto.AgentRemoteConfig - 17, // 7: opamp.proto.ServerToAgent.connection_settings:type_name -> opamp.proto.ConnectionSettingsOffers - 18, // 8: opamp.proto.ServerToAgent.addons_available:type_name -> opamp.proto.AddonsAvailable - 23, // 9: opamp.proto.ServerToAgent.agent_package_available:type_name -> opamp.proto.AgentPackageAvailable - 3, // 10: opamp.proto.ServerToAgent.flags:type_name -> opamp.proto.ServerToAgent.Flags - 0, // 11: opamp.proto.ServerToAgent.capabilities:type_name -> opamp.proto.ServerCapabilities - 32, // 12: opamp.proto.ServerToAgent.agent_identification:type_name -> opamp.proto.AgentIdentification - 24, // 13: opamp.proto.ServerToAgent.command:type_name -> opamp.proto.ServerToAgentCommand - 14, // 14: opamp.proto.ConnectionSettings.headers:type_name -> opamp.proto.Headers - 14, // 15: opamp.proto.ConnectionSettings.proxy_headers:type_name -> opamp.proto.Headers - 16, // 16: opamp.proto.ConnectionSettings.certificate:type_name -> opamp.proto.TLSCertificate - 4, // 17: opamp.proto.ConnectionSettings.flags:type_name -> opamp.proto.ConnectionSettings.Flags - 15, // 18: opamp.proto.Headers.headers:type_name -> opamp.proto.Header - 13, // 19: opamp.proto.ConnectionSettingsOffers.opamp:type_name -> opamp.proto.ConnectionSettings - 13, // 20: opamp.proto.ConnectionSettingsOffers.own_metrics:type_name -> opamp.proto.ConnectionSettings - 13, // 21: opamp.proto.ConnectionSettingsOffers.own_traces:type_name -> opamp.proto.ConnectionSettings - 13, // 22: opamp.proto.ConnectionSettingsOffers.own_logs:type_name -> opamp.proto.ConnectionSettings - 36, // 23: opamp.proto.ConnectionSettingsOffers.other_connections:type_name -> opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry - 37, // 24: opamp.proto.AddonsAvailable.addons:type_name -> opamp.proto.AddonsAvailable.AddonsEntry - 20, // 25: opamp.proto.AddonAvailable.file:type_name -> opamp.proto.DownloadableFile - 5, // 26: opamp.proto.ServerErrorResponse.type:type_name -> opamp.proto.ServerErrorResponse.Type - 22, // 27: opamp.proto.ServerErrorResponse.retry_info:type_name -> opamp.proto.RetryInfo - 20, // 28: opamp.proto.AgentPackageAvailable.file:type_name -> opamp.proto.DownloadableFile - 6, // 29: opamp.proto.ServerToAgentCommand.type:type_name -> opamp.proto.ServerToAgentCommand.CommandType - 40, // 30: opamp.proto.AgentDescription.identifying_attributes:type_name -> opamp.proto.KeyValue - 40, // 31: opamp.proto.AgentDescription.non_identifying_attributes:type_name -> opamp.proto.KeyValue - 25, // 32: opamp.proto.StatusReport.agent_description:type_name -> opamp.proto.AgentDescription - 27, // 33: opamp.proto.StatusReport.effective_config:type_name -> opamp.proto.EffectiveConfig - 28, // 34: opamp.proto.StatusReport.remote_config_status:type_name -> opamp.proto.RemoteConfigStatus - 1, // 35: opamp.proto.StatusReport.capabilities:type_name -> opamp.proto.AgentCapabilities - 34, // 36: opamp.proto.EffectiveConfig.config_map:type_name -> opamp.proto.AgentConfigMap - 7, // 37: opamp.proto.RemoteConfigStatus.status:type_name -> opamp.proto.RemoteConfigStatus.Status - 38, // 38: opamp.proto.AgentAddonStatuses.addons:type_name -> opamp.proto.AgentAddonStatuses.AddonsEntry - 8, // 39: opamp.proto.AgentAddonStatus.status:type_name -> opamp.proto.AgentAddonStatus.Status - 9, // 40: opamp.proto.AgentInstallStatus.status:type_name -> opamp.proto.AgentInstallStatus.Status - 34, // 41: opamp.proto.AgentRemoteConfig.config:type_name -> opamp.proto.AgentConfigMap - 39, // 42: opamp.proto.AgentConfigMap.config_map:type_name -> opamp.proto.AgentConfigMap.ConfigMapEntry - 13, // 43: opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry.value:type_name -> opamp.proto.ConnectionSettings - 19, // 44: opamp.proto.AddonsAvailable.AddonsEntry.value:type_name -> opamp.proto.AddonAvailable - 30, // 45: opamp.proto.AgentAddonStatuses.AddonsEntry.value:type_name -> opamp.proto.AgentAddonStatus - 35, // 46: opamp.proto.AgentConfigMap.ConfigMapEntry.value:type_name -> opamp.proto.AgentConfigFile - 47, // [47:47] is the sub-list for method output_type - 47, // [47:47] is the sub-list for method input_type - 47, // [47:47] is the sub-list for extension type_name - 47, // [47:47] is the sub-list for extension extendee - 0, // [0:47] is the sub-list for field type_name + 25, // 0: opamp.proto.AgentToServer.status_report:type_name -> opamp.proto.StatusReport + 28, // 1: opamp.proto.AgentToServer.package_statuses:type_name -> opamp.proto.PackageStatuses + 11, // 2: opamp.proto.AgentToServer.agent_disconnect:type_name -> opamp.proto.AgentDisconnect + 2, // 3: opamp.proto.AgentToServer.flags:type_name -> opamp.proto.AgentToServer.AgentToServerFlags + 21, // 4: opamp.proto.ServerToAgent.error_response:type_name -> opamp.proto.ServerErrorResponse + 31, // 5: opamp.proto.ServerToAgent.remote_config:type_name -> opamp.proto.AgentRemoteConfig + 17, // 6: opamp.proto.ServerToAgent.connection_settings:type_name -> opamp.proto.ConnectionSettingsOffers + 18, // 7: opamp.proto.ServerToAgent.packages_available:type_name -> opamp.proto.PackagesAvailable + 3, // 8: opamp.proto.ServerToAgent.flags:type_name -> opamp.proto.ServerToAgent.Flags + 0, // 9: opamp.proto.ServerToAgent.capabilities:type_name -> opamp.proto.ServerCapabilities + 30, // 10: opamp.proto.ServerToAgent.agent_identification:type_name -> opamp.proto.AgentIdentification + 23, // 11: opamp.proto.ServerToAgent.command:type_name -> opamp.proto.ServerToAgentCommand + 14, // 12: opamp.proto.ConnectionSettings.headers:type_name -> opamp.proto.Headers + 14, // 13: opamp.proto.ConnectionSettings.proxy_headers:type_name -> opamp.proto.Headers + 16, // 14: opamp.proto.ConnectionSettings.certificate:type_name -> opamp.proto.TLSCertificate + 4, // 15: opamp.proto.ConnectionSettings.flags:type_name -> opamp.proto.ConnectionSettings.Flags + 15, // 16: opamp.proto.Headers.headers:type_name -> opamp.proto.Header + 13, // 17: opamp.proto.ConnectionSettingsOffers.opamp:type_name -> opamp.proto.ConnectionSettings + 13, // 18: opamp.proto.ConnectionSettingsOffers.own_metrics:type_name -> opamp.proto.ConnectionSettings + 13, // 19: opamp.proto.ConnectionSettingsOffers.own_traces:type_name -> opamp.proto.ConnectionSettings + 13, // 20: opamp.proto.ConnectionSettingsOffers.own_logs:type_name -> opamp.proto.ConnectionSettings + 34, // 21: opamp.proto.ConnectionSettingsOffers.other_connections:type_name -> opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry + 35, // 22: opamp.proto.PackagesAvailable.packages:type_name -> opamp.proto.PackagesAvailable.PackagesEntry + 5, // 23: opamp.proto.PackageAvailable.type:type_name -> opamp.proto.PackageAvailable.PackageType + 20, // 24: opamp.proto.PackageAvailable.file:type_name -> opamp.proto.DownloadableFile + 6, // 25: opamp.proto.ServerErrorResponse.type:type_name -> opamp.proto.ServerErrorResponse.Type + 22, // 26: opamp.proto.ServerErrorResponse.retry_info:type_name -> opamp.proto.RetryInfo + 7, // 27: opamp.proto.ServerToAgentCommand.type:type_name -> opamp.proto.ServerToAgentCommand.CommandType + 38, // 28: opamp.proto.AgentDescription.identifying_attributes:type_name -> opamp.proto.KeyValue + 38, // 29: opamp.proto.AgentDescription.non_identifying_attributes:type_name -> opamp.proto.KeyValue + 24, // 30: opamp.proto.StatusReport.agent_description:type_name -> opamp.proto.AgentDescription + 26, // 31: opamp.proto.StatusReport.effective_config:type_name -> opamp.proto.EffectiveConfig + 27, // 32: opamp.proto.StatusReport.remote_config_status:type_name -> opamp.proto.RemoteConfigStatus + 1, // 33: opamp.proto.StatusReport.capabilities:type_name -> opamp.proto.AgentCapabilities + 32, // 34: opamp.proto.EffectiveConfig.config_map:type_name -> opamp.proto.AgentConfigMap + 8, // 35: opamp.proto.RemoteConfigStatus.status:type_name -> opamp.proto.RemoteConfigStatus.Status + 36, // 36: opamp.proto.PackageStatuses.packages:type_name -> opamp.proto.PackageStatuses.PackagesEntry + 9, // 37: opamp.proto.PackageStatus.status:type_name -> opamp.proto.PackageStatus.Status + 32, // 38: opamp.proto.AgentRemoteConfig.config:type_name -> opamp.proto.AgentConfigMap + 37, // 39: opamp.proto.AgentConfigMap.config_map:type_name -> opamp.proto.AgentConfigMap.ConfigMapEntry + 13, // 40: opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry.value:type_name -> opamp.proto.ConnectionSettings + 19, // 41: opamp.proto.PackagesAvailable.PackagesEntry.value:type_name -> opamp.proto.PackageAvailable + 29, // 42: opamp.proto.PackageStatuses.PackagesEntry.value:type_name -> opamp.proto.PackageStatus + 33, // 43: opamp.proto.AgentConfigMap.ConfigMapEntry.value:type_name -> opamp.proto.AgentConfigFile + 44, // [44:44] is the sub-list for method output_type + 44, // [44:44] is the sub-list for method input_type + 44, // [44:44] is the sub-list for extension type_name + 44, // [44:44] is the sub-list for extension extendee + 0, // [0:44] is the sub-list for field type_name } func init() { file_opamp_proto_init() } @@ -3229,7 +3063,7 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddonsAvailable); i { + switch v := v.(*PackagesAvailable); i { case 0: return &v.state case 1: @@ -3241,7 +3075,7 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddonAvailable); i { + switch v := v.(*PackageAvailable); i { case 0: return &v.state case 1: @@ -3289,7 +3123,7 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentPackageAvailable); i { + switch v := v.(*ServerToAgentCommand); i { case 0: return &v.state case 1: @@ -3301,7 +3135,7 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerToAgentCommand); i { + switch v := v.(*AgentDescription); i { case 0: return &v.state case 1: @@ -3313,7 +3147,7 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentDescription); i { + switch v := v.(*StatusReport); i { case 0: return &v.state case 1: @@ -3325,7 +3159,7 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusReport); i { + switch v := v.(*EffectiveConfig); i { case 0: return &v.state case 1: @@ -3337,7 +3171,7 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EffectiveConfig); i { + switch v := v.(*RemoteConfigStatus); i { case 0: return &v.state case 1: @@ -3349,7 +3183,7 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoteConfigStatus); i { + switch v := v.(*PackageStatuses); i { case 0: return &v.state case 1: @@ -3361,7 +3195,7 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentAddonStatuses); i { + switch v := v.(*PackageStatus); i { case 0: return &v.state case 1: @@ -3373,30 +3207,6 @@ func file_opamp_proto_init() { } } file_opamp_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentAddonStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_opamp_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentInstallStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_opamp_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentIdentification); i { case 0: return &v.state @@ -3408,7 +3218,7 @@ func file_opamp_proto_init() { return nil } } - file_opamp_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_opamp_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentRemoteConfig); i { case 0: return &v.state @@ -3420,7 +3230,7 @@ func file_opamp_proto_init() { return nil } } - file_opamp_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_opamp_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentConfigMap); i { case 0: return &v.state @@ -3432,7 +3242,7 @@ func file_opamp_proto_init() { return nil } } - file_opamp_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_opamp_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentConfigFile); i { case 0: return &v.state @@ -3454,7 +3264,7 @@ func file_opamp_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_opamp_proto_rawDesc, NumEnums: 10, - NumMessages: 30, + NumMessages: 28, NumExtensions: 0, NumServices: 0, },