diff --git a/go.mod b/go.mod index 06393d87..e01a6075 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/Masterminds/semver/v3 v3.1.1 github.com/ProtonMail/gluon v0.14.2-0.20230130104154-2c64e59b8f54 github.com/ProtonMail/go-autostart v0.0.0-20210130080809-00ed301c8e9a - github.com/ProtonMail/go-proton-api v0.3.1-0.20230130093944-dd1190680368 + github.com/ProtonMail/go-proton-api v0.3.1-0.20230130144605-4b05f1e5c427 github.com/ProtonMail/go-rfc5322 v0.11.0 github.com/ProtonMail/gopenpgp/v2 v2.4.10 github.com/PuerkitoBio/goquery v1.8.0 diff --git a/go.sum b/go.sum index 7ed408bd..3e164c8b 100644 --- a/go.sum +++ b/go.sum @@ -41,8 +41,8 @@ github.com/ProtonMail/go-message v0.0.0-20210611055058-fabeff2ec753/go.mod h1:NB github.com/ProtonMail/go-mime v0.0.0-20220302105931-303f85f7fe0f/go.mod h1:NYt+V3/4rEeDuaev/zw1zCq8uqVEuPHzDPo3OZrlGJ4= github.com/ProtonMail/go-mime v0.0.0-20220429130430-2192574d760f h1:4IWzKjHzZxdrW9k4zl/qCwenOVHDbVDADPPHFLjs0Oc= github.com/ProtonMail/go-mime v0.0.0-20220429130430-2192574d760f/go.mod h1:qRZgbeASl2a9OwmsV85aWwRqic0NHPh+9ewGAzb4cgM= -github.com/ProtonMail/go-proton-api v0.3.1-0.20230130093944-dd1190680368 h1:XWPaCK8ctgpvI+ZAYcsFiYWbuvkv3T4+WZq0o6Gnt2s= -github.com/ProtonMail/go-proton-api v0.3.1-0.20230130093944-dd1190680368/go.mod h1:JUo5IQG0hNuPRuDpOUsCOvtee6UjTEHHF1QN2i8RSos= +github.com/ProtonMail/go-proton-api v0.3.1-0.20230130144605-4b05f1e5c427 h1:M/sTrpruuxBtkeVFPoMd9WM2Kg36XlCTvYuv4q0urkg= +github.com/ProtonMail/go-proton-api v0.3.1-0.20230130144605-4b05f1e5c427/go.mod h1:JUo5IQG0hNuPRuDpOUsCOvtee6UjTEHHF1QN2i8RSos= github.com/ProtonMail/go-rfc5322 v0.11.0 h1:o5Obrm4DpmQEffvgsVqG6S4BKwC1Wat+hYwjIp2YcCY= github.com/ProtonMail/go-rfc5322 v0.11.0/go.mod h1:6oOKr0jXvpoE6pwTx/HukigQpX2J9WUf6h0auplrFTw= github.com/ProtonMail/go-srp v0.0.5 h1:xhUioxZgDbCnpo9JehyFhwwsn9JLWkUGfB0oiKXgiGg= diff --git a/internal/events/user.go b/internal/events/user.go index 216069f6..cbcf5a72 100644 --- a/internal/events/user.go +++ b/internal/events/user.go @@ -156,3 +156,16 @@ type AddressModeChanged struct { func (event AddressModeChanged) String() string { return fmt.Sprintf("AddressModeChanged: UserID: %s, AddressMode: %s", event.UserID, event.AddressMode) } + +// UsedSpaceChanged is emitted when the storage space used by the user has changed. +type UsedSpaceChanged struct { + eventBase + + UserID string + + UsedSpace int +} + +func (event UsedSpaceChanged) String() string { + return fmt.Sprintf("UsedSpaceChanged: UserID: %s, UsedSpace: %v", event.UserID, event.UsedSpace) +} diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.cpp b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.cpp index 6bce0797..e970e90e 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.cpp +++ b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.cpp @@ -52,6 +52,7 @@ UsersTab::UsersTab(QWidget *parent) connect(ui_.tableUserList, &QTableView::doubleClicked, this, &UsersTab::onEditUserButton); connect(ui_.buttonRemoveUser, &QPushButton::clicked, this, &UsersTab::onRemoveUserButton); connect(ui_.buttonUserBadEvent, &QPushButton::clicked, this, &UsersTab::onSendUserBadEvent); + connect(ui_.buttonUsedBytesChanged, &QPushButton::clicked, this, &UsersTab::onSendUsedBytesChangedEvent); connect(ui_.checkUsernamePasswordError, &QCheckBox::toggled, this, &UsersTab::updateGUIState); users_.append(randomUser()); @@ -158,16 +159,50 @@ void UsersTab::onSendUserBadEvent() { } +//**************************************************************************************************************************************************** +// +//**************************************************************************************************************************************************** +void UsersTab::onSendUsedBytesChangedEvent() { + SPUser const user = selectedUser(); + int const index = this->selectedIndex(); + + if (!user) { + app().log().error(QString("%1 failed. Unkown user.").arg(__FUNCTION__)); + return; + } + + if (UserState::Connected != user->state()) { + app().log().error(QString("%1 failed. User is not connected").arg(__FUNCTION__)); + } + + qint64 const usedBytes = qint64(ui_.spinUsedBytes->value()); + user->setUsedBytes(usedBytes); + users_.touch(index); + + GRPCService &grpc = app().grpc(); + if (grpc.isStreaming()) { + QString const userID = user->id(); + grpc.sendEvent(newUsedBytesChangedEvent(userID, usedBytes)); + } + + this->updateGUIState(); +} + + //**************************************************************************************************************************************************** // //**************************************************************************************************************************************************** void UsersTab::updateGUIState() { SPUser const user = selectedUser(); bool const hasSelectedUser = user.get(); + UserState const state = user ? user->state() : UserState::SignedOut; + ui_.buttonEditUser->setEnabled(hasSelectedUser); ui_.buttonRemoveUser->setEnabled(hasSelectedUser); - ui_.groupBoxBadEvent->setEnabled(hasSelectedUser && (UserState::SignedOut != user->state())); + ui_.groupBoxBadEvent->setEnabled(hasSelectedUser && (UserState::SignedOut != state)); + ui_.groupBoxUsedSpace->setEnabled(hasSelectedUser && (UserState::Connected == state)); ui_.editUsernamePasswordError->setEnabled(ui_.checkUsernamePasswordError->isChecked()); + ui_.spinUsedBytes->setValue(user ? user->usedBytes() : 0.0); } diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.h b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.h index 94258b86..0f43a418 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.h +++ b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.h @@ -61,6 +61,7 @@ private slots: void onRemoveUserButton(); ///< Remove the currently selected user. void onSelectionChanged(QItemSelection, QItemSelection); ///< Slot for the change of the selection. void onSendUserBadEvent(); ///< Slot for the 'Send Bad Event Error' button. + void onSendUsedBytesChangedEvent(); ///< Slot for the 'Send Used Bytes Changed Event' button. void updateGUIState(); ///< Update the GUI state. private: // member functions. diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.ui b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.ui index 052e2546..34d79ad7 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.ui +++ b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/UsersTab.ui @@ -66,6 +66,52 @@ + + + + + 0 + 0 + + + + Used Bytes Changed + + + + + + + + Used Bytes + + + + + + + QAbstractSpinBox::NoButtons + + + 0 + + + 1000000000000000.000000000000000 + + + + + + + + + Send Used Bytes Changed + + + + + + diff --git a/internal/frontend/bridge-gui/bridge-gui/UserList.cpp b/internal/frontend/bridge-gui/bridge-gui/UserList.cpp index 908dbd1c..8d09a408 100644 --- a/internal/frontend/bridge-gui/bridge-gui/UserList.cpp +++ b/internal/frontend/bridge-gui/bridge-gui/UserList.cpp @@ -38,6 +38,7 @@ void UserList::connectGRPCEvents() const { GRPCClient &client = app().grpc(); connect(&client, &GRPCClient::userChanged, this, &UserList::onUserChanged); connect(&client, &GRPCClient::toggleSplitModeFinished, this, &UserList::onToggleSplitModeFinished); + connect(&client, &GRPCClient::usedBytesChanged, this, &UserList::onUsedBytesChanged); } @@ -223,3 +224,17 @@ void UserList::onToggleSplitModeFinished(QString const &userID) { int UserList::count() const { return users_.size(); } + + +//**************************************************************************************************************************************************** +/// \param[in] userID The userID. +/// \param[in] usedBytes The used space, in bytes. +//**************************************************************************************************************************************************** +void UserList::onUsedBytesChanged(QString const &userID, qint64 usedBytes) { + int const index = this->rowOfUserID(userID); + if (index < 0) { + app().log().error(QString("Received usedBytesChanged event for unknown userID %1").arg(userID)); + return; + } + users_[index]->setUsedBytes(usedBytes); +} diff --git a/internal/frontend/bridge-gui/bridge-gui/UserList.h b/internal/frontend/bridge-gui/bridge-gui/UserList.h index 60d06c44..84c06480 100644 --- a/internal/frontend/bridge-gui/bridge-gui/UserList.h +++ b/internal/frontend/bridge-gui/bridge-gui/UserList.h @@ -59,6 +59,7 @@ public: public slots: ///< handler for signals coming from the gRPC service void onUserChanged(QString const &userID); void onToggleSplitModeFinished(QString const &userID); + void onUsedBytesChanged(QString const &userID, qint64 usedBytes); ///< Slot for usedBytesChanged events. private: // data members QList users_; ///< The user list. diff --git a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/EventFactory.cpp b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/EventFactory.cpp index 231a5c8e..c833f91c 100644 --- a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/EventFactory.cpp +++ b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/EventFactory.cpp @@ -574,6 +574,20 @@ SPStreamEvent newUserBadEvent(QString const &userID, QString const &errorMessage } +//**************************************************************************************************************************************************** +/// \param[in] userID The userID. +/// \param[in] usedBytes The number of used bytes. +//**************************************************************************************************************************************************** +SPStreamEvent newUsedBytesChangedEvent(QString const &userID, qint64 usedBytes) { + auto event = new grpc::UsedBytesChangedEvent; + event->set_userid(userID.toStdString()); + event->set_usedbytes(usedBytes); + auto userEvent = new grpc::UserEvent; + userEvent->set_allocated_usedbyteschangedevent(event); + return wrapUserEvent(userEvent); +} + + //**************************************************************************************************************************************************** /// \param[in] errorCode The error errorCode. /// \return The event. diff --git a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/EventFactory.h b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/EventFactory.h index ed35e712..151e17c9 100644 --- a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/EventFactory.h +++ b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/EventFactory.h @@ -78,6 +78,7 @@ SPStreamEvent newToggleSplitModeFinishedEvent(QString const &userID); ///< Creat SPStreamEvent newUserDisconnectedEvent(QString const &username); ///< Create a new UserDisconnectedEvent event. SPStreamEvent newUserChangedEvent(QString const &userID); ///< Create a new UserChangedEvent event. SPStreamEvent newUserBadEvent(QString const &userID, QString const& errorMessage); ///< Create a new UserBadEvent event. +SPStreamEvent newUsedBytesChangedEvent(QString const &userID, qint64 usedBytes); ///< Create a new UsedBytesChangedEvent event. // Generic error event SPStreamEvent newGenericErrorEvent(grpc::ErrorCode errorCode); ///< Create a new GenericErrrorEvent event. diff --git a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/GRPCClient.cpp b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/GRPCClient.cpp index f2bf58b1..8445fc69 100644 --- a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/GRPCClient.cpp +++ b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/GRPCClient.cpp @@ -1374,6 +1374,14 @@ void GRPCClient::processUserEvent(UserEvent const &event) { emit userBadEvent(userID, errorMessage); break; } + case UserEvent::kUsedBytesChangedEvent: { + UsedBytesChangedEvent const& e = event.usedbyteschangedevent(); + QString const userID = QString::fromStdString(e.userid()); + qint64 const usedBytes = e.usedbytes(); + this->logTrace(QString("User event received: UsedBytesChangedEvent (userID = %1, usedBytes = %2).").arg(userID).arg(usedBytes)); + emit usedBytesChanged(userID, usedBytes); + break; + } default: this->logError("Unknown User event received."); } diff --git a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/GRPCClient.h b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/GRPCClient.h index c84ee2b5..0ecd6a94 100644 --- a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/GRPCClient.h +++ b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/GRPCClient.h @@ -179,6 +179,7 @@ signals: void userDisconnected(QString const &username); void userChanged(QString const &userID); void userBadEvent(QString const &userID, QString const& errorMessage); + void usedBytesChanged(QString const &userID, qint64 usedBytes); public: // keychain related calls grpc::Status availableKeychains(QStringList &outKeychains); diff --git a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/bridge.pb.cc b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/bridge.pb.cc index 096889ca..877ee0ed 100644 --- a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/bridge.pb.cc +++ b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/bridge.pb.cc @@ -759,6 +759,20 @@ struct UserBadEventDefaultTypeInternal { }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 UserBadEventDefaultTypeInternal _UserBadEvent_default_instance_; +PROTOBUF_CONSTEXPR UsedBytesChangedEvent::UsedBytesChangedEvent( + ::_pbi::ConstantInitialized): _impl_{ + /*decltype(_impl_.userid_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}} + , /*decltype(_impl_.usedbytes_)*/int64_t{0} + , /*decltype(_impl_._cached_size_)*/{}} {} +struct UsedBytesChangedEventDefaultTypeInternal { + PROTOBUF_CONSTEXPR UsedBytesChangedEventDefaultTypeInternal() + : _instance(::_pbi::ConstantInitialized{}) {} + ~UsedBytesChangedEventDefaultTypeInternal() {} + union { + UsedBytesChangedEvent _instance; + }; +}; +PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 UsedBytesChangedEventDefaultTypeInternal _UsedBytesChangedEvent_default_instance_; PROTOBUF_CONSTEXPR GenericErrorEvent::GenericErrorEvent( ::_pbi::ConstantInitialized): _impl_{ /*decltype(_impl_.code_)*/0 @@ -773,7 +787,7 @@ struct GenericErrorEventDefaultTypeInternal { }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GenericErrorEventDefaultTypeInternal _GenericErrorEvent_default_instance_; } // namespace grpc -static ::_pb::Metadata file_level_metadata_bridge_2eproto[58]; +static ::_pb::Metadata file_level_metadata_bridge_2eproto[59]; static const ::_pb::EnumDescriptor* file_level_enum_descriptors_bridge_2eproto[7]; static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_bridge_2eproto = nullptr; @@ -1199,6 +1213,7 @@ const uint32_t TableStruct_bridge_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(p ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, + ::_pbi::kInvalidFieldOffsetTag, PROTOBUF_FIELD_OFFSET(::grpc::UserEvent, _impl_.event_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::grpc::ToggleSplitModeFinishedEvent, _internal_metadata_), @@ -1230,6 +1245,14 @@ const uint32_t TableStruct_bridge_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(p PROTOBUF_FIELD_OFFSET(::grpc::UserBadEvent, _impl_.userid_), PROTOBUF_FIELD_OFFSET(::grpc::UserBadEvent, _impl_.errormessage_), ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::grpc::UsedBytesChangedEvent, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::grpc::UsedBytesChangedEvent, _impl_.userid_), + PROTOBUF_FIELD_OFFSET(::grpc::UsedBytesChangedEvent, _impl_.usedbytes_), + ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::grpc::GenericErrorEvent, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ @@ -1291,11 +1314,12 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode { 398, -1, -1, sizeof(::grpc::AddressChangedLogoutEvent)}, { 405, -1, -1, sizeof(::grpc::ApiCertIssueEvent)}, { 411, -1, -1, sizeof(::grpc::UserEvent)}, - { 422, -1, -1, sizeof(::grpc::ToggleSplitModeFinishedEvent)}, - { 429, -1, -1, sizeof(::grpc::UserDisconnectedEvent)}, - { 436, -1, -1, sizeof(::grpc::UserChangedEvent)}, - { 443, -1, -1, sizeof(::grpc::UserBadEvent)}, - { 451, -1, -1, sizeof(::grpc::GenericErrorEvent)}, + { 423, -1, -1, sizeof(::grpc::ToggleSplitModeFinishedEvent)}, + { 430, -1, -1, sizeof(::grpc::UserDisconnectedEvent)}, + { 437, -1, -1, sizeof(::grpc::UserChangedEvent)}, + { 444, -1, -1, sizeof(::grpc::UserBadEvent)}, + { 452, -1, -1, sizeof(::grpc::UsedBytesChangedEvent)}, + { 460, -1, -1, sizeof(::grpc::GenericErrorEvent)}, }; static const ::_pb::Message* const file_default_instances[] = { @@ -1356,6 +1380,7 @@ static const ::_pb::Message* const file_default_instances[] = { &::grpc::_UserDisconnectedEvent_default_instance_._instance, &::grpc::_UserChangedEvent_default_instance_._instance, &::grpc::_UserBadEvent_default_instance_._instance, + &::grpc::_UsedBytesChangedEvent_default_instance_._instance, &::grpc::_GenericErrorEvent_default_instance_._instance, }; @@ -1477,135 +1502,138 @@ const char descriptor_table_protodef_bridge_2eproto[] PROTOBUF_SECTION_VARIABLE( "KeyForRecipientEvent\022\r\n\005email\030\001 \001(\t\"&\n\023A" "ddressChangedEvent\022\017\n\007address\030\001 \001(\t\",\n\031A" "ddressChangedLogoutEvent\022\017\n\007address\030\001 \001(" - "\t\"\023\n\021ApiCertIssueEvent\"\357\001\n\tUserEvent\022E\n\027" + "\t\"\023\n\021ApiCertIssueEvent\"\255\002\n\tUserEvent\022E\n\027" "toggleSplitModeFinished\030\001 \001(\0132\".grpc.Tog" "gleSplitModeFinishedEventH\000\0227\n\020userDisco" "nnected\030\002 \001(\0132\033.grpc.UserDisconnectedEve" "ntH\000\022-\n\013userChanged\030\003 \001(\0132\026.grpc.UserCha" "ngedEventH\000\022*\n\014userBadEvent\030\004 \001(\0132\022.grpc" - ".UserBadEventH\000B\007\n\005event\".\n\034ToggleSplitM" - "odeFinishedEvent\022\016\n\006userID\030\001 \001(\t\")\n\025User" - "DisconnectedEvent\022\020\n\010username\030\001 \001(\t\"\"\n\020U" - "serChangedEvent\022\016\n\006userID\030\001 \001(\t\"4\n\014UserB" - "adEvent\022\016\n\006userID\030\001 \001(\t\022\024\n\014errorMessage\030" - "\002 \001(\t\"2\n\021GenericErrorEvent\022\035\n\004code\030\001 \001(\016" - "2\017.grpc.ErrorCode*q\n\010LogLevel\022\r\n\tLOG_PAN" - "IC\020\000\022\r\n\tLOG_FATAL\020\001\022\r\n\tLOG_ERROR\020\002\022\014\n\010LO" - "G_WARN\020\003\022\014\n\010LOG_INFO\020\004\022\r\n\tLOG_DEBUG\020\005\022\r\n" - "\tLOG_TRACE\020\006*6\n\tUserState\022\016\n\nSIGNED_OUT\020" - "\000\022\n\n\006LOCKED\020\001\022\r\n\tCONNECTED\020\002*\242\001\n\016LoginEr" - "rorType\022\033\n\027USERNAME_PASSWORD_ERROR\020\000\022\r\n\t" - "FREE_USER\020\001\022\024\n\020CONNECTION_ERROR\020\002\022\r\n\tTFA" - "_ERROR\020\003\022\r\n\tTFA_ABORT\020\004\022\027\n\023TWO_PASSWORDS" - "_ERROR\020\005\022\027\n\023TWO_PASSWORDS_ABORT\020\006*[\n\017Upd" - "ateErrorType\022\027\n\023UPDATE_MANUAL_ERROR\020\000\022\026\n" - "\022UPDATE_FORCE_ERROR\020\001\022\027\n\023UPDATE_SILENT_E" - "RROR\020\002*k\n\022DiskCacheErrorType\022 \n\034DISK_CAC" - "HE_UNAVAILABLE_ERROR\020\000\022\036\n\032CANT_MOVE_DISK" - "_CACHE_ERROR\020\001\022\023\n\017DISK_FULL_ERROR\020\002*\335\001\n\033" - "MailServerSettingsErrorType\022\033\n\027IMAP_PORT" - "_STARTUP_ERROR\020\000\022\033\n\027SMTP_PORT_STARTUP_ER" - "ROR\020\001\022\032\n\026IMAP_PORT_CHANGE_ERROR\020\002\022\032\n\026SMT" - "P_PORT_CHANGE_ERROR\020\003\022%\n!IMAP_CONNECTION" - "_MODE_CHANGE_ERROR\020\004\022%\n!SMTP_CONNECTION_" - "MODE_CHANGE_ERROR\020\005*S\n\tErrorCode\022\021\n\rUNKN" - "OWN_ERROR\020\000\022\031\n\025TLS_CERT_EXPORT_ERROR\020\001\022\030" - "\n\024TLS_KEY_EXPORT_ERROR\020\0022\231\035\n\006Bridge\022I\n\013C" - "heckTokens\022\034.google.protobuf.StringValue" - "\032\034.google.protobuf.StringValue\022\?\n\013AddLog" - "Entry\022\030.grpc.AddLogEntryRequest\032\026.google" - ".protobuf.Empty\022:\n\010GuiReady\022\026.google.pro" - "tobuf.Empty\032\026.grpc.GuiReadyResponse\0226\n\004Q" - "uit\022\026.google.protobuf.Empty\032\026.google.pro" - "tobuf.Empty\0229\n\007Restart\022\026.google.protobuf" - ".Empty\032\026.google.protobuf.Empty\022C\n\rShowOn" - "Startup\022\026.google.protobuf.Empty\032\032.google" - ".protobuf.BoolValue\022F\n\020SetIsAutostartOn\022" - "\032.google.protobuf.BoolValue\032\026.google.pro" - "tobuf.Empty\022C\n\rIsAutostartOn\022\026.google.pr" - "otobuf.Empty\032\032.google.protobuf.BoolValue" - "\022F\n\020SetIsBetaEnabled\022\032.google.protobuf.B" - "oolValue\032\026.google.protobuf.Empty\022C\n\rIsBe" - "taEnabled\022\026.google.protobuf.Empty\032\032.goog" - "le.protobuf.BoolValue\022I\n\023SetIsAllMailVis" - "ible\022\032.google.protobuf.BoolValue\032\026.googl" - "e.protobuf.Empty\022F\n\020IsAllMailVisible\022\026.g" - "oogle.protobuf.Empty\032\032.google.protobuf.B" - "oolValue\022<\n\004GoOs\022\026.google.protobuf.Empty" - "\032\034.google.protobuf.StringValue\022>\n\014Trigge" - "rReset\022\026.google.protobuf.Empty\032\026.google." - "protobuf.Empty\022\?\n\007Version\022\026.google.proto" - "buf.Empty\032\034.google.protobuf.StringValue\022" - "@\n\010LogsPath\022\026.google.protobuf.Empty\032\034.go" - "ogle.protobuf.StringValue\022C\n\013LicensePath" + ".UserBadEventH\000\022<\n\025usedBytesChangedEvent" + "\030\005 \001(\0132\033.grpc.UsedBytesChangedEventH\000B\007\n" + "\005event\".\n\034ToggleSplitModeFinishedEvent\022\016" + "\n\006userID\030\001 \001(\t\")\n\025UserDisconnectedEvent\022" + "\020\n\010username\030\001 \001(\t\"\"\n\020UserChangedEvent\022\016\n" + "\006userID\030\001 \001(\t\"4\n\014UserBadEvent\022\016\n\006userID\030" + "\001 \001(\t\022\024\n\014errorMessage\030\002 \001(\t\":\n\025UsedBytes" + "ChangedEvent\022\016\n\006userID\030\001 \001(\t\022\021\n\tusedByte" + "s\030\002 \001(\003\"2\n\021GenericErrorEvent\022\035\n\004code\030\001 \001" + "(\0162\017.grpc.ErrorCode*q\n\010LogLevel\022\r\n\tLOG_P" + "ANIC\020\000\022\r\n\tLOG_FATAL\020\001\022\r\n\tLOG_ERROR\020\002\022\014\n\010" + "LOG_WARN\020\003\022\014\n\010LOG_INFO\020\004\022\r\n\tLOG_DEBUG\020\005\022" + "\r\n\tLOG_TRACE\020\006*6\n\tUserState\022\016\n\nSIGNED_OU" + "T\020\000\022\n\n\006LOCKED\020\001\022\r\n\tCONNECTED\020\002*\242\001\n\016Login" + "ErrorType\022\033\n\027USERNAME_PASSWORD_ERROR\020\000\022\r" + "\n\tFREE_USER\020\001\022\024\n\020CONNECTION_ERROR\020\002\022\r\n\tT" + "FA_ERROR\020\003\022\r\n\tTFA_ABORT\020\004\022\027\n\023TWO_PASSWOR" + "DS_ERROR\020\005\022\027\n\023TWO_PASSWORDS_ABORT\020\006*[\n\017U" + "pdateErrorType\022\027\n\023UPDATE_MANUAL_ERROR\020\000\022" + "\026\n\022UPDATE_FORCE_ERROR\020\001\022\027\n\023UPDATE_SILENT" + "_ERROR\020\002*k\n\022DiskCacheErrorType\022 \n\034DISK_C" + "ACHE_UNAVAILABLE_ERROR\020\000\022\036\n\032CANT_MOVE_DI" + "SK_CACHE_ERROR\020\001\022\023\n\017DISK_FULL_ERROR\020\002*\335\001" + "\n\033MailServerSettingsErrorType\022\033\n\027IMAP_PO" + "RT_STARTUP_ERROR\020\000\022\033\n\027SMTP_PORT_STARTUP_" + "ERROR\020\001\022\032\n\026IMAP_PORT_CHANGE_ERROR\020\002\022\032\n\026S" + "MTP_PORT_CHANGE_ERROR\020\003\022%\n!IMAP_CONNECTI" + "ON_MODE_CHANGE_ERROR\020\004\022%\n!SMTP_CONNECTIO" + "N_MODE_CHANGE_ERROR\020\005*S\n\tErrorCode\022\021\n\rUN" + "KNOWN_ERROR\020\000\022\031\n\025TLS_CERT_EXPORT_ERROR\020\001" + "\022\030\n\024TLS_KEY_EXPORT_ERROR\020\0022\231\035\n\006Bridge\022I\n" + "\013CheckTokens\022\034.google.protobuf.StringVal" + "ue\032\034.google.protobuf.StringValue\022\?\n\013AddL" + "ogEntry\022\030.grpc.AddLogEntryRequest\032\026.goog" + "le.protobuf.Empty\022:\n\010GuiReady\022\026.google.p" + "rotobuf.Empty\032\026.grpc.GuiReadyResponse\0226\n" + "\004Quit\022\026.google.protobuf.Empty\032\026.google.p" + "rotobuf.Empty\0229\n\007Restart\022\026.google.protob" + "uf.Empty\032\026.google.protobuf.Empty\022C\n\rShow" + "OnStartup\022\026.google.protobuf.Empty\032\032.goog" + "le.protobuf.BoolValue\022F\n\020SetIsAutostartO" + "n\022\032.google.protobuf.BoolValue\032\026.google.p" + "rotobuf.Empty\022C\n\rIsAutostartOn\022\026.google." + "protobuf.Empty\032\032.google.protobuf.BoolVal" + "ue\022F\n\020SetIsBetaEnabled\022\032.google.protobuf" + ".BoolValue\032\026.google.protobuf.Empty\022C\n\rIs" + "BetaEnabled\022\026.google.protobuf.Empty\032\032.go" + "ogle.protobuf.BoolValue\022I\n\023SetIsAllMailV" + "isible\022\032.google.protobuf.BoolValue\032\026.goo" + "gle.protobuf.Empty\022F\n\020IsAllMailVisible\022\026" + ".google.protobuf.Empty\032\032.google.protobuf" + ".BoolValue\022<\n\004GoOs\022\026.google.protobuf.Emp" + "ty\032\034.google.protobuf.StringValue\022>\n\014Trig" + "gerReset\022\026.google.protobuf.Empty\032\026.googl" + "e.protobuf.Empty\022\?\n\007Version\022\026.google.pro" + "tobuf.Empty\032\034.google.protobuf.StringValu" + "e\022@\n\010LogsPath\022\026.google.protobuf.Empty\032\034." + "google.protobuf.StringValue\022C\n\013LicensePa" + "th\022\026.google.protobuf.Empty\032\034.google.prot" + "obuf.StringValue\022L\n\024ReleaseNotesPageLink" "\022\026.google.protobuf.Empty\032\034.google.protob" - "uf.StringValue\022L\n\024ReleaseNotesPageLink\022\026" - ".google.protobuf.Empty\032\034.google.protobuf" - ".StringValue\022N\n\026DependencyLicensesLink\022\026" - ".google.protobuf.Empty\032\034.google.protobuf" - ".StringValue\022G\n\017LandingPageLink\022\026.google" - ".protobuf.Empty\032\034.google.protobuf.String" - "Value\022J\n\022SetColorSchemeName\022\034.google.pro" - "tobuf.StringValue\032\026.google.protobuf.Empt" - "y\022G\n\017ColorSchemeName\022\026.google.protobuf.E" - "mpty\032\034.google.protobuf.StringValue\022J\n\022Cu" - "rrentEmailClient\022\026.google.protobuf.Empty" - "\032\034.google.protobuf.StringValue\022;\n\tReport" - "Bug\022\026.grpc.ReportBugRequest\032\026.google.pro" - "tobuf.Empty\022M\n\025ExportTLSCertificates\022\034.g" - "oogle.protobuf.StringValue\032\026.google.prot" - "obuf.Empty\022E\n\rForceLauncher\022\034.google.pro" - "tobuf.StringValue\032\026.google.protobuf.Empt" - "y\022I\n\021SetMainExecutable\022\034.google.protobuf" - ".StringValue\032\026.google.protobuf.Empty\0223\n\005" - "Login\022\022.grpc.LoginRequest\032\026.google.proto" - "buf.Empty\0226\n\010Login2FA\022\022.grpc.LoginReques" - "t\032\026.google.protobuf.Empty\022=\n\017Login2Passw" - "ords\022\022.grpc.LoginRequest\032\026.google.protob" - "uf.Empty\022=\n\nLoginAbort\022\027.grpc.LoginAbort" - "Request\032\026.google.protobuf.Empty\022=\n\013Check" - "Update\022\026.google.protobuf.Empty\032\026.google." - "protobuf.Empty\022\?\n\rInstallUpdate\022\026.google" - ".protobuf.Empty\032\026.google.protobuf.Empty\022" - "L\n\026SetIsAutomaticUpdateOn\022\032.google.proto" - "buf.BoolValue\032\026.google.protobuf.Empty\022I\n" - "\023IsAutomaticUpdateOn\022\026.google.protobuf.E" - "mpty\032\032.google.protobuf.BoolValue\022E\n\rDisk" - "CachePath\022\026.google.protobuf.Empty\032\034.goog" - "le.protobuf.StringValue\022H\n\020SetDiskCacheP" - "ath\022\034.google.protobuf.StringValue\032\026.goog" - "le.protobuf.Empty\022E\n\017SetIsDoHEnabled\022\032.g" - "oogle.protobuf.BoolValue\032\026.google.protob" - "uf.Empty\022B\n\014IsDoHEnabled\022\026.google.protob" - "uf.Empty\032\032.google.protobuf.BoolValue\022D\n\022" - "MailServerSettings\022\026.google.protobuf.Emp" - "ty\032\026.grpc.ImapSmtpSettings\022G\n\025SetMailSer" - "verSettings\022\026.grpc.ImapSmtpSettings\032\026.go" - "ogle.protobuf.Empty\022@\n\010Hostname\022\026.google" - ".protobuf.Empty\032\034.google.protobuf.String" - "Value\022E\n\nIsPortFree\022\033.google.protobuf.In" - "t32Value\032\032.google.protobuf.BoolValue\022N\n\022" - "AvailableKeychains\022\026.google.protobuf.Emp" - "ty\032 .grpc.AvailableKeychainsResponse\022J\n\022" - "SetCurrentKeychain\022\034.google.protobuf.Str" - "ingValue\032\026.google.protobuf.Empty\022G\n\017Curr" - "entKeychain\022\026.google.protobuf.Empty\032\034.go" - "ogle.protobuf.StringValue\022=\n\013GetUserList" - "\022\026.google.protobuf.Empty\032\026.grpc.UserList" - "Response\0223\n\007GetUser\022\034.google.protobuf.St" - "ringValue\032\n.grpc.User\022F\n\020SetUserSplitMod" - "e\022\032.grpc.UserSplitModeRequest\032\026.google.p" - "rotobuf.Empty\022B\n\nLogoutUser\022\034.google.pro" - "tobuf.StringValue\032\026.google.protobuf.Empt" - "y\022B\n\nRemoveUser\022\034.google.protobuf.String" - "Value\032\026.google.protobuf.Empty\022Q\n\026Configu" - "reUserAppleMail\022\037.grpc.ConfigureAppleMai" - "lRequest\032\026.google.protobuf.Empty\022\?\n\016RunE" - "ventStream\022\030.grpc.EventStreamRequest\032\021.g" - "rpc.StreamEvent0\001\022A\n\017StopEventStream\022\026.g" - "oogle.protobuf.Empty\032\026.google.protobuf.E" - "mptyB6Z4github.com/ProtonMail/proton-bri" - "dge/v3/internal/grpcb\006proto3" + "uf.StringValue\022N\n\026DependencyLicensesLink" + "\022\026.google.protobuf.Empty\032\034.google.protob" + "uf.StringValue\022G\n\017LandingPageLink\022\026.goog" + "le.protobuf.Empty\032\034.google.protobuf.Stri" + "ngValue\022J\n\022SetColorSchemeName\022\034.google.p" + "rotobuf.StringValue\032\026.google.protobuf.Em" + "pty\022G\n\017ColorSchemeName\022\026.google.protobuf" + ".Empty\032\034.google.protobuf.StringValue\022J\n\022" + "CurrentEmailClient\022\026.google.protobuf.Emp" + "ty\032\034.google.protobuf.StringValue\022;\n\tRepo" + "rtBug\022\026.grpc.ReportBugRequest\032\026.google.p" + "rotobuf.Empty\022M\n\025ExportTLSCertificates\022\034" + ".google.protobuf.StringValue\032\026.google.pr" + "otobuf.Empty\022E\n\rForceLauncher\022\034.google.p" + "rotobuf.StringValue\032\026.google.protobuf.Em" + "pty\022I\n\021SetMainExecutable\022\034.google.protob" + "uf.StringValue\032\026.google.protobuf.Empty\0223" + "\n\005Login\022\022.grpc.LoginRequest\032\026.google.pro" + "tobuf.Empty\0226\n\010Login2FA\022\022.grpc.LoginRequ" + "est\032\026.google.protobuf.Empty\022=\n\017Login2Pas" + "swords\022\022.grpc.LoginRequest\032\026.google.prot" + "obuf.Empty\022=\n\nLoginAbort\022\027.grpc.LoginAbo" + "rtRequest\032\026.google.protobuf.Empty\022=\n\013Che" + "ckUpdate\022\026.google.protobuf.Empty\032\026.googl" + "e.protobuf.Empty\022\?\n\rInstallUpdate\022\026.goog" + "le.protobuf.Empty\032\026.google.protobuf.Empt" + "y\022L\n\026SetIsAutomaticUpdateOn\022\032.google.pro" + "tobuf.BoolValue\032\026.google.protobuf.Empty\022" + "I\n\023IsAutomaticUpdateOn\022\026.google.protobuf" + ".Empty\032\032.google.protobuf.BoolValue\022E\n\rDi" + "skCachePath\022\026.google.protobuf.Empty\032\034.go" + "ogle.protobuf.StringValue\022H\n\020SetDiskCach" + "ePath\022\034.google.protobuf.StringValue\032\026.go" + "ogle.protobuf.Empty\022E\n\017SetIsDoHEnabled\022\032" + ".google.protobuf.BoolValue\032\026.google.prot" + "obuf.Empty\022B\n\014IsDoHEnabled\022\026.google.prot" + "obuf.Empty\032\032.google.protobuf.BoolValue\022D" + "\n\022MailServerSettings\022\026.google.protobuf.E" + "mpty\032\026.grpc.ImapSmtpSettings\022G\n\025SetMailS" + "erverSettings\022\026.grpc.ImapSmtpSettings\032\026." + "google.protobuf.Empty\022@\n\010Hostname\022\026.goog" + "le.protobuf.Empty\032\034.google.protobuf.Stri" + "ngValue\022E\n\nIsPortFree\022\033.google.protobuf." + "Int32Value\032\032.google.protobuf.BoolValue\022N" + "\n\022AvailableKeychains\022\026.google.protobuf.E" + "mpty\032 .grpc.AvailableKeychainsResponse\022J" + "\n\022SetCurrentKeychain\022\034.google.protobuf.S" + "tringValue\032\026.google.protobuf.Empty\022G\n\017Cu" + "rrentKeychain\022\026.google.protobuf.Empty\032\034." + "google.protobuf.StringValue\022=\n\013GetUserLi" + "st\022\026.google.protobuf.Empty\032\026.grpc.UserLi" + "stResponse\0223\n\007GetUser\022\034.google.protobuf." + "StringValue\032\n.grpc.User\022F\n\020SetUserSplitM" + "ode\022\032.grpc.UserSplitModeRequest\032\026.google" + ".protobuf.Empty\022B\n\nLogoutUser\022\034.google.p" + "rotobuf.StringValue\032\026.google.protobuf.Em" + "pty\022B\n\nRemoveUser\022\034.google.protobuf.Stri" + "ngValue\032\026.google.protobuf.Empty\022Q\n\026Confi" + "gureUserAppleMail\022\037.grpc.ConfigureAppleM" + "ailRequest\032\026.google.protobuf.Empty\022\?\n\016Ru" + "nEventStream\022\030.grpc.EventStreamRequest\032\021" + ".grpc.StreamEvent0\001\022A\n\017StopEventStream\022\026" + ".google.protobuf.Empty\032\026.google.protobuf" + ".EmptyB6Z4github.com/ProtonMail/proton-b" + "ridge/v3/internal/grpcb\006proto3" ; static const ::_pbi::DescriptorTable* const descriptor_table_bridge_2eproto_deps[2] = { &::descriptor_table_google_2fprotobuf_2fempty_2eproto, @@ -1613,9 +1641,9 @@ static const ::_pbi::DescriptorTable* const descriptor_table_bridge_2eproto_deps }; static ::_pbi::once_flag descriptor_table_bridge_2eproto_once; const ::_pbi::DescriptorTable descriptor_table_bridge_2eproto = { - false, false, 9828, descriptor_table_protodef_bridge_2eproto, + false, false, 9950, descriptor_table_protodef_bridge_2eproto, "bridge.proto", - &descriptor_table_bridge_2eproto_once, descriptor_table_bridge_2eproto_deps, 2, 58, + &descriptor_table_bridge_2eproto_once, descriptor_table_bridge_2eproto_deps, 2, 59, schemas, file_default_instances, TableStruct_bridge_2eproto::offsets, file_level_metadata_bridge_2eproto, file_level_enum_descriptors_bridge_2eproto, file_level_service_descriptors_bridge_2eproto, @@ -12378,6 +12406,7 @@ class UserEvent::_Internal { static const ::grpc::UserDisconnectedEvent& userdisconnected(const UserEvent* msg); static const ::grpc::UserChangedEvent& userchanged(const UserEvent* msg); static const ::grpc::UserBadEvent& userbadevent(const UserEvent* msg); + static const ::grpc::UsedBytesChangedEvent& usedbyteschangedevent(const UserEvent* msg); }; const ::grpc::ToggleSplitModeFinishedEvent& @@ -12396,6 +12425,10 @@ const ::grpc::UserBadEvent& UserEvent::_Internal::userbadevent(const UserEvent* msg) { return *msg->_impl_.event_.userbadevent_; } +const ::grpc::UsedBytesChangedEvent& +UserEvent::_Internal::usedbyteschangedevent(const UserEvent* msg) { + return *msg->_impl_.event_.usedbyteschangedevent_; +} void UserEvent::set_allocated_togglesplitmodefinished(::grpc::ToggleSplitModeFinishedEvent* togglesplitmodefinished) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); clear_event(); @@ -12456,6 +12489,21 @@ void UserEvent::set_allocated_userbadevent(::grpc::UserBadEvent* userbadevent) { } // @@protoc_insertion_point(field_set_allocated:grpc.UserEvent.userBadEvent) } +void UserEvent::set_allocated_usedbyteschangedevent(::grpc::UsedBytesChangedEvent* usedbyteschangedevent) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); + clear_event(); + if (usedbyteschangedevent) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(usedbyteschangedevent); + if (message_arena != submessage_arena) { + usedbyteschangedevent = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, usedbyteschangedevent, submessage_arena); + } + set_has_usedbyteschangedevent(); + _impl_.event_.usedbyteschangedevent_ = usedbyteschangedevent; + } + // @@protoc_insertion_point(field_set_allocated:grpc.UserEvent.usedBytesChangedEvent) +} UserEvent::UserEvent(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) { @@ -12493,6 +12541,11 @@ UserEvent::UserEvent(const UserEvent& from) from._internal_userbadevent()); break; } + case kUsedBytesChangedEvent: { + _this->_internal_mutable_usedbyteschangedevent()->::grpc::UsedBytesChangedEvent::MergeFrom( + from._internal_usedbyteschangedevent()); + break; + } case EVENT_NOT_SET: { break; } @@ -12559,6 +12612,12 @@ void UserEvent::clear_event() { } break; } + case kUsedBytesChangedEvent: { + if (GetArenaForAllocation() == nullptr) { + delete _impl_.event_.usedbyteschangedevent_; + } + break; + } case EVENT_NOT_SET: { break; } @@ -12615,6 +12674,14 @@ const char* UserEvent::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx } else goto handle_unusual; continue; + // .grpc.UsedBytesChangedEvent usedBytesChangedEvent = 5; + case 5: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 42)) { + ptr = ctx->ParseMessage(_internal_mutable_usedbyteschangedevent(), ptr); + CHK_(ptr); + } else + goto handle_unusual; + continue; default: goto handle_unusual; } // switch @@ -12672,6 +12739,13 @@ uint8_t* UserEvent::_InternalSerialize( _Internal::userbadevent(this).GetCachedSize(), target, stream); } + // .grpc.UsedBytesChangedEvent usedBytesChangedEvent = 5; + if (_internal_has_usedbyteschangedevent()) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(5, _Internal::usedbyteschangedevent(this), + _Internal::usedbyteschangedevent(this).GetCachedSize(), target, stream); + } + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); @@ -12717,6 +12791,13 @@ size_t UserEvent::ByteSizeLong() const { *_impl_.event_.userbadevent_); break; } + // .grpc.UsedBytesChangedEvent usedBytesChangedEvent = 5; + case kUsedBytesChangedEvent: { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( + *_impl_.event_.usedbyteschangedevent_); + break; + } case EVENT_NOT_SET: { break; } @@ -12760,6 +12841,11 @@ void UserEvent::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROT from._internal_userbadevent()); break; } + case kUsedBytesChangedEvent: { + _this->_internal_mutable_usedbyteschangedevent()->::grpc::UsedBytesChangedEvent::MergeFrom( + from._internal_usedbyteschangedevent()); + break; + } case EVENT_NOT_SET: { break; } @@ -13655,6 +13741,236 @@ void UserBadEvent::InternalSwap(UserBadEvent* other) { // =================================================================== +class UsedBytesChangedEvent::_Internal { + public: +}; + +UsedBytesChangedEvent::UsedBytesChangedEvent(::PROTOBUF_NAMESPACE_ID::Arena* arena, + bool is_message_owned) + : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) { + SharedCtor(arena, is_message_owned); + // @@protoc_insertion_point(arena_constructor:grpc.UsedBytesChangedEvent) +} +UsedBytesChangedEvent::UsedBytesChangedEvent(const UsedBytesChangedEvent& from) + : ::PROTOBUF_NAMESPACE_ID::Message() { + UsedBytesChangedEvent* const _this = this; (void)_this; + new (&_impl_) Impl_{ + decltype(_impl_.userid_){} + , decltype(_impl_.usedbytes_){} + , /*decltype(_impl_._cached_size_)*/{}}; + + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + _impl_.userid_.InitDefault(); + #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + _impl_.userid_.Set("", GetArenaForAllocation()); + #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (!from._internal_userid().empty()) { + _this->_impl_.userid_.Set(from._internal_userid(), + _this->GetArenaForAllocation()); + } + _this->_impl_.usedbytes_ = from._impl_.usedbytes_; + // @@protoc_insertion_point(copy_constructor:grpc.UsedBytesChangedEvent) +} + +inline void UsedBytesChangedEvent::SharedCtor( + ::_pb::Arena* arena, bool is_message_owned) { + (void)arena; + (void)is_message_owned; + new (&_impl_) Impl_{ + decltype(_impl_.userid_){} + , decltype(_impl_.usedbytes_){int64_t{0}} + , /*decltype(_impl_._cached_size_)*/{} + }; + _impl_.userid_.InitDefault(); + #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + _impl_.userid_.Set("", GetArenaForAllocation()); + #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING +} + +UsedBytesChangedEvent::~UsedBytesChangedEvent() { + // @@protoc_insertion_point(destructor:grpc.UsedBytesChangedEvent) + if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) { + (void)arena; + return; + } + SharedDtor(); +} + +inline void UsedBytesChangedEvent::SharedDtor() { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + _impl_.userid_.Destroy(); +} + +void UsedBytesChangedEvent::SetCachedSize(int size) const { + _impl_._cached_size_.Set(size); +} + +void UsedBytesChangedEvent::Clear() { +// @@protoc_insertion_point(message_clear_start:grpc.UsedBytesChangedEvent) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + _impl_.userid_.ClearToEmpty(); + _impl_.usedbytes_ = int64_t{0}; + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); +} + +const char* UsedBytesChangedEvent::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) { +#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure + while (!ctx->Done(&ptr)) { + uint32_t tag; + ptr = ::_pbi::ReadTag(ptr, &tag); + switch (tag >> 3) { + // string userID = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 10)) { + auto str = _internal_mutable_userid(); + ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx); + CHK_(ptr); + CHK_(::_pbi::VerifyUTF8(str, "grpc.UsedBytesChangedEvent.userID")); + } else + goto handle_unusual; + continue; + // int64 usedBytes = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 16)) { + _impl_.usedbytes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, ctx); + CHK_(ptr != nullptr); + } // while +message_done: + return ptr; +failure: + ptr = nullptr; + goto message_done; +#undef CHK_ +} + +uint8_t* UsedBytesChangedEvent::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { + // @@protoc_insertion_point(serialize_to_array_start:grpc.UsedBytesChangedEvent) + uint32_t cached_has_bits = 0; + (void) cached_has_bits; + + // string userID = 1; + if (!this->_internal_userid().empty()) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( + this->_internal_userid().data(), static_cast(this->_internal_userid().length()), + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, + "grpc.UsedBytesChangedEvent.userID"); + target = stream->WriteStringMaybeAliased( + 1, this->_internal_userid(), target); + } + + // int64 usedBytes = 2; + if (this->_internal_usedbytes() != 0) { + target = stream->EnsureSpace(target); + target = ::_pbi::WireFormatLite::WriteInt64ToArray(2, this->_internal_usedbytes(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { + target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); + } + // @@protoc_insertion_point(serialize_to_array_end:grpc.UsedBytesChangedEvent) + return target; +} + +size_t UsedBytesChangedEvent::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:grpc.UsedBytesChangedEvent) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string userID = 1; + if (!this->_internal_userid().empty()) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( + this->_internal_userid()); + } + + // int64 usedBytes = 2; + if (this->_internal_usedbytes() != 0) { + total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(this->_internal_usedbytes()); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); +} + +const ::PROTOBUF_NAMESPACE_ID::Message::ClassData UsedBytesChangedEvent::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck, + UsedBytesChangedEvent::MergeImpl +}; +const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*UsedBytesChangedEvent::GetClassData() const { return &_class_data_; } + + +void UsedBytesChangedEvent::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) { + auto* const _this = static_cast(&to_msg); + auto& from = static_cast(from_msg); + // @@protoc_insertion_point(class_specific_merge_from_start:grpc.UsedBytesChangedEvent) + GOOGLE_DCHECK_NE(&from, _this); + uint32_t cached_has_bits = 0; + (void) cached_has_bits; + + if (!from._internal_userid().empty()) { + _this->_internal_set_userid(from._internal_userid()); + } + if (from._internal_usedbytes() != 0) { + _this->_internal_set_usedbytes(from._internal_usedbytes()); + } + _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); +} + +void UsedBytesChangedEvent::CopyFrom(const UsedBytesChangedEvent& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:grpc.UsedBytesChangedEvent) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool UsedBytesChangedEvent::IsInitialized() const { + return true; +} + +void UsedBytesChangedEvent::InternalSwap(UsedBytesChangedEvent* other) { + using std::swap; + auto* lhs_arena = GetArenaForAllocation(); + auto* rhs_arena = other->GetArenaForAllocation(); + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap( + &_impl_.userid_, lhs_arena, + &other->_impl_.userid_, rhs_arena + ); + swap(_impl_.usedbytes_, other->_impl_.usedbytes_); +} + +::PROTOBUF_NAMESPACE_ID::Metadata UsedBytesChangedEvent::GetMetadata() const { + return ::_pbi::AssignDescriptors( + &descriptor_table_bridge_2eproto_getter, &descriptor_table_bridge_2eproto_once, + file_level_metadata_bridge_2eproto[57]); +} + +// =================================================================== + class GenericErrorEvent::_Internal { public: }; @@ -13831,7 +14147,7 @@ void GenericErrorEvent::InternalSwap(GenericErrorEvent* other) { ::PROTOBUF_NAMESPACE_ID::Metadata GenericErrorEvent::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_bridge_2eproto_getter, &descriptor_table_bridge_2eproto_once, - file_level_metadata_bridge_2eproto[57]); + file_level_metadata_bridge_2eproto[58]); } // @@protoc_insertion_point(namespace_scope) @@ -14065,6 +14381,10 @@ template<> PROTOBUF_NOINLINE ::grpc::UserBadEvent* Arena::CreateMaybeMessage< ::grpc::UserBadEvent >(Arena* arena) { return Arena::CreateMessageInternal< ::grpc::UserBadEvent >(arena); } +template<> PROTOBUF_NOINLINE ::grpc::UsedBytesChangedEvent* +Arena::CreateMaybeMessage< ::grpc::UsedBytesChangedEvent >(Arena* arena) { + return Arena::CreateMessageInternal< ::grpc::UsedBytesChangedEvent >(arena); +} template<> PROTOBUF_NOINLINE ::grpc::GenericErrorEvent* Arena::CreateMaybeMessage< ::grpc::GenericErrorEvent >(Arena* arena) { return Arena::CreateMessageInternal< ::grpc::GenericErrorEvent >(arena); diff --git a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/bridge.pb.h b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/bridge.pb.h index dc39e892..e39d8cd8 100644 --- a/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/bridge.pb.h +++ b/internal/frontend/bridge-gui/bridgepp/bridgepp/GRPC/bridge.pb.h @@ -202,6 +202,9 @@ extern UpdateSilentRestartNeededDefaultTypeInternal _UpdateSilentRestartNeeded_d class UpdateVersionChanged; struct UpdateVersionChangedDefaultTypeInternal; extern UpdateVersionChangedDefaultTypeInternal _UpdateVersionChanged_default_instance_; +class UsedBytesChangedEvent; +struct UsedBytesChangedEventDefaultTypeInternal; +extern UsedBytesChangedEventDefaultTypeInternal _UsedBytesChangedEvent_default_instance_; class User; struct UserDefaultTypeInternal; extern UserDefaultTypeInternal _User_default_instance_; @@ -276,6 +279,7 @@ template<> ::grpc::UpdateManualReadyEvent* Arena::CreateMaybeMessage<::grpc::Upd template<> ::grpc::UpdateManualRestartNeededEvent* Arena::CreateMaybeMessage<::grpc::UpdateManualRestartNeededEvent>(Arena*); template<> ::grpc::UpdateSilentRestartNeeded* Arena::CreateMaybeMessage<::grpc::UpdateSilentRestartNeeded>(Arena*); template<> ::grpc::UpdateVersionChanged* Arena::CreateMaybeMessage<::grpc::UpdateVersionChanged>(Arena*); +template<> ::grpc::UsedBytesChangedEvent* Arena::CreateMaybeMessage<::grpc::UsedBytesChangedEvent>(Arena*); template<> ::grpc::User* Arena::CreateMaybeMessage<::grpc::User>(Arena*); template<> ::grpc::UserBadEvent* Arena::CreateMaybeMessage<::grpc::UserBadEvent>(Arena*); template<> ::grpc::UserChangedEvent* Arena::CreateMaybeMessage<::grpc::UserChangedEvent>(Arena*); @@ -9077,6 +9081,7 @@ class UserEvent final : kUserDisconnected = 2, kUserChanged = 3, kUserBadEvent = 4, + kUsedBytesChangedEvent = 5, EVENT_NOT_SET = 0, }; @@ -9162,6 +9167,7 @@ class UserEvent final : kUserDisconnectedFieldNumber = 2, kUserChangedFieldNumber = 3, kUserBadEventFieldNumber = 4, + kUsedBytesChangedEventFieldNumber = 5, }; // .grpc.ToggleSplitModeFinishedEvent toggleSplitModeFinished = 1; bool has_togglesplitmodefinished() const; @@ -9235,6 +9241,24 @@ class UserEvent final : ::grpc::UserBadEvent* userbadevent); ::grpc::UserBadEvent* unsafe_arena_release_userbadevent(); + // .grpc.UsedBytesChangedEvent usedBytesChangedEvent = 5; + bool has_usedbyteschangedevent() const; + private: + bool _internal_has_usedbyteschangedevent() const; + public: + void clear_usedbyteschangedevent(); + const ::grpc::UsedBytesChangedEvent& usedbyteschangedevent() const; + PROTOBUF_NODISCARD ::grpc::UsedBytesChangedEvent* release_usedbyteschangedevent(); + ::grpc::UsedBytesChangedEvent* mutable_usedbyteschangedevent(); + void set_allocated_usedbyteschangedevent(::grpc::UsedBytesChangedEvent* usedbyteschangedevent); + private: + const ::grpc::UsedBytesChangedEvent& _internal_usedbyteschangedevent() const; + ::grpc::UsedBytesChangedEvent* _internal_mutable_usedbyteschangedevent(); + public: + void unsafe_arena_set_allocated_usedbyteschangedevent( + ::grpc::UsedBytesChangedEvent* usedbyteschangedevent); + ::grpc::UsedBytesChangedEvent* unsafe_arena_release_usedbyteschangedevent(); + void clear_event(); EventCase event_case() const; // @@protoc_insertion_point(class_scope:grpc.UserEvent) @@ -9244,6 +9268,7 @@ class UserEvent final : void set_has_userdisconnected(); void set_has_userchanged(); void set_has_userbadevent(); + void set_has_usedbyteschangedevent(); inline bool has_event() const; inline void clear_has_event(); @@ -9259,6 +9284,7 @@ class UserEvent final : ::grpc::UserDisconnectedEvent* userdisconnected_; ::grpc::UserChangedEvent* userchanged_; ::grpc::UserBadEvent* userbadevent_; + ::grpc::UsedBytesChangedEvent* usedbyteschangedevent_; } event_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; uint32_t _oneof_case_[1]; @@ -9897,6 +9923,170 @@ class UserBadEvent final : }; // ------------------------------------------------------------------- +class UsedBytesChangedEvent final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:grpc.UsedBytesChangedEvent) */ { + public: + inline UsedBytesChangedEvent() : UsedBytesChangedEvent(nullptr) {} + ~UsedBytesChangedEvent() override; + explicit PROTOBUF_CONSTEXPR UsedBytesChangedEvent(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + UsedBytesChangedEvent(const UsedBytesChangedEvent& from); + UsedBytesChangedEvent(UsedBytesChangedEvent&& from) noexcept + : UsedBytesChangedEvent() { + *this = ::std::move(from); + } + + inline UsedBytesChangedEvent& operator=(const UsedBytesChangedEvent& from) { + CopyFrom(from); + return *this; + } + inline UsedBytesChangedEvent& operator=(UsedBytesChangedEvent&& from) noexcept { + if (this == &from) return *this; + if (GetOwningArena() == from.GetOwningArena() + #ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr + #endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) { + InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return default_instance().GetMetadata().reflection; + } + static const UsedBytesChangedEvent& default_instance() { + return *internal_default_instance(); + } + static inline const UsedBytesChangedEvent* internal_default_instance() { + return reinterpret_cast( + &_UsedBytesChangedEvent_default_instance_); + } + static constexpr int kIndexInFileMessages = + 57; + + friend void swap(UsedBytesChangedEvent& a, UsedBytesChangedEvent& b) { + a.Swap(&b); + } + inline void Swap(UsedBytesChangedEvent* other) { + if (other == this) return; + #ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) { + #else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) { + #endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(UsedBytesChangedEvent* other) { + if (other == this) return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + UsedBytesChangedEvent* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const UsedBytesChangedEvent& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom( const UsedBytesChangedEvent& from) { + UsedBytesChangedEvent::MergeImpl(*this, from); + } + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _impl_._cached_size_.Get(); } + + private: + void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(UsedBytesChangedEvent* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "grpc.UsedBytesChangedEvent"; + } + protected: + explicit UsedBytesChangedEvent(::PROTOBUF_NAMESPACE_ID::Arena* arena, + bool is_message_owned = false); + public: + + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kUserIDFieldNumber = 1, + kUsedBytesFieldNumber = 2, + }; + // string userID = 1; + void clear_userid(); + const std::string& userid() const; + template + void set_userid(ArgT0&& arg0, ArgT... args); + std::string* mutable_userid(); + PROTOBUF_NODISCARD std::string* release_userid(); + void set_allocated_userid(std::string* userid); + private: + const std::string& _internal_userid() const; + inline PROTOBUF_ALWAYS_INLINE void _internal_set_userid(const std::string& value); + std::string* _internal_mutable_userid(); + public: + + // int64 usedBytes = 2; + void clear_usedbytes(); + int64_t usedbytes() const; + void set_usedbytes(int64_t value); + private: + int64_t _internal_usedbytes() const; + void _internal_set_usedbytes(int64_t value); + public: + + // @@protoc_insertion_point(class_scope:grpc.UsedBytesChangedEvent) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + struct Impl_ { + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr userid_; + int64_t usedbytes_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + }; + union { Impl_ _impl_; }; + friend struct ::TableStruct_bridge_2eproto; +}; +// ------------------------------------------------------------------- + class GenericErrorEvent final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:grpc.GenericErrorEvent) */ { public: @@ -9945,7 +10135,7 @@ class GenericErrorEvent final : &_GenericErrorEvent_default_instance_); } static constexpr int kIndexInFileMessages = - 57; + 58; friend void swap(GenericErrorEvent& a, GenericErrorEvent& b) { a.Swap(&b); @@ -15728,6 +15918,80 @@ inline ::grpc::UserBadEvent* UserEvent::mutable_userbadevent() { return _msg; } +// .grpc.UsedBytesChangedEvent usedBytesChangedEvent = 5; +inline bool UserEvent::_internal_has_usedbyteschangedevent() const { + return event_case() == kUsedBytesChangedEvent; +} +inline bool UserEvent::has_usedbyteschangedevent() const { + return _internal_has_usedbyteschangedevent(); +} +inline void UserEvent::set_has_usedbyteschangedevent() { + _impl_._oneof_case_[0] = kUsedBytesChangedEvent; +} +inline void UserEvent::clear_usedbyteschangedevent() { + if (_internal_has_usedbyteschangedevent()) { + if (GetArenaForAllocation() == nullptr) { + delete _impl_.event_.usedbyteschangedevent_; + } + clear_has_event(); + } +} +inline ::grpc::UsedBytesChangedEvent* UserEvent::release_usedbyteschangedevent() { + // @@protoc_insertion_point(field_release:grpc.UserEvent.usedBytesChangedEvent) + if (_internal_has_usedbyteschangedevent()) { + clear_has_event(); + ::grpc::UsedBytesChangedEvent* temp = _impl_.event_.usedbyteschangedevent_; + if (GetArenaForAllocation() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + _impl_.event_.usedbyteschangedevent_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::grpc::UsedBytesChangedEvent& UserEvent::_internal_usedbyteschangedevent() const { + return _internal_has_usedbyteschangedevent() + ? *_impl_.event_.usedbyteschangedevent_ + : reinterpret_cast< ::grpc::UsedBytesChangedEvent&>(::grpc::_UsedBytesChangedEvent_default_instance_); +} +inline const ::grpc::UsedBytesChangedEvent& UserEvent::usedbyteschangedevent() const { + // @@protoc_insertion_point(field_get:grpc.UserEvent.usedBytesChangedEvent) + return _internal_usedbyteschangedevent(); +} +inline ::grpc::UsedBytesChangedEvent* UserEvent::unsafe_arena_release_usedbyteschangedevent() { + // @@protoc_insertion_point(field_unsafe_arena_release:grpc.UserEvent.usedBytesChangedEvent) + if (_internal_has_usedbyteschangedevent()) { + clear_has_event(); + ::grpc::UsedBytesChangedEvent* temp = _impl_.event_.usedbyteschangedevent_; + _impl_.event_.usedbyteschangedevent_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void UserEvent::unsafe_arena_set_allocated_usedbyteschangedevent(::grpc::UsedBytesChangedEvent* usedbyteschangedevent) { + clear_event(); + if (usedbyteschangedevent) { + set_has_usedbyteschangedevent(); + _impl_.event_.usedbyteschangedevent_ = usedbyteschangedevent; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:grpc.UserEvent.usedBytesChangedEvent) +} +inline ::grpc::UsedBytesChangedEvent* UserEvent::_internal_mutable_usedbyteschangedevent() { + if (!_internal_has_usedbyteschangedevent()) { + clear_event(); + set_has_usedbyteschangedevent(); + _impl_.event_.usedbyteschangedevent_ = CreateMaybeMessage< ::grpc::UsedBytesChangedEvent >(GetArenaForAllocation()); + } + return _impl_.event_.usedbyteschangedevent_; +} +inline ::grpc::UsedBytesChangedEvent* UserEvent::mutable_usedbyteschangedevent() { + ::grpc::UsedBytesChangedEvent* _msg = _internal_mutable_usedbyteschangedevent(); + // @@protoc_insertion_point(field_mutable:grpc.UserEvent.usedBytesChangedEvent) + return _msg; +} + inline bool UserEvent::has_event() const { return event_case() != EVENT_NOT_SET; } @@ -16005,6 +16269,80 @@ inline void UserBadEvent::set_allocated_errormessage(std::string* errormessage) // ------------------------------------------------------------------- +// UsedBytesChangedEvent + +// string userID = 1; +inline void UsedBytesChangedEvent::clear_userid() { + _impl_.userid_.ClearToEmpty(); +} +inline const std::string& UsedBytesChangedEvent::userid() const { + // @@protoc_insertion_point(field_get:grpc.UsedBytesChangedEvent.userID) + return _internal_userid(); +} +template +inline PROTOBUF_ALWAYS_INLINE +void UsedBytesChangedEvent::set_userid(ArgT0&& arg0, ArgT... args) { + + _impl_.userid_.Set(static_cast(arg0), args..., GetArenaForAllocation()); + // @@protoc_insertion_point(field_set:grpc.UsedBytesChangedEvent.userID) +} +inline std::string* UsedBytesChangedEvent::mutable_userid() { + std::string* _s = _internal_mutable_userid(); + // @@protoc_insertion_point(field_mutable:grpc.UsedBytesChangedEvent.userID) + return _s; +} +inline const std::string& UsedBytesChangedEvent::_internal_userid() const { + return _impl_.userid_.Get(); +} +inline void UsedBytesChangedEvent::_internal_set_userid(const std::string& value) { + + _impl_.userid_.Set(value, GetArenaForAllocation()); +} +inline std::string* UsedBytesChangedEvent::_internal_mutable_userid() { + + return _impl_.userid_.Mutable(GetArenaForAllocation()); +} +inline std::string* UsedBytesChangedEvent::release_userid() { + // @@protoc_insertion_point(field_release:grpc.UsedBytesChangedEvent.userID) + return _impl_.userid_.Release(); +} +inline void UsedBytesChangedEvent::set_allocated_userid(std::string* userid) { + if (userid != nullptr) { + + } else { + + } + _impl_.userid_.SetAllocated(userid, GetArenaForAllocation()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (_impl_.userid_.IsDefault()) { + _impl_.userid_.Set("", GetArenaForAllocation()); + } +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + // @@protoc_insertion_point(field_set_allocated:grpc.UsedBytesChangedEvent.userID) +} + +// int64 usedBytes = 2; +inline void UsedBytesChangedEvent::clear_usedbytes() { + _impl_.usedbytes_ = int64_t{0}; +} +inline int64_t UsedBytesChangedEvent::_internal_usedbytes() const { + return _impl_.usedbytes_; +} +inline int64_t UsedBytesChangedEvent::usedbytes() const { + // @@protoc_insertion_point(field_get:grpc.UsedBytesChangedEvent.usedBytes) + return _internal_usedbytes(); +} +inline void UsedBytesChangedEvent::_internal_set_usedbytes(int64_t value) { + + _impl_.usedbytes_ = value; +} +inline void UsedBytesChangedEvent::set_usedbytes(int64_t value) { + _internal_set_usedbytes(value); + // @@protoc_insertion_point(field_set:grpc.UsedBytesChangedEvent.usedBytes) +} + +// ------------------------------------------------------------------- + // GenericErrorEvent // .grpc.ErrorCode code = 1; @@ -16144,6 +16482,8 @@ inline void GenericErrorEvent::set_code(::grpc::ErrorCode value) { // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/internal/frontend/grpc/bridge.pb.go b/internal/frontend/grpc/bridge.pb.go index f41b42e5..d25c8af5 100644 --- a/internal/frontend/grpc/bridge.pb.go +++ b/internal/frontend/grpc/bridge.pb.go @@ -3562,6 +3562,7 @@ type UserEvent struct { // *UserEvent_UserDisconnected // *UserEvent_UserChanged // *UserEvent_UserBadEvent + // *UserEvent_UsedBytesChangedEvent Event isUserEvent_Event `protobuf_oneof:"event"` } @@ -3632,6 +3633,13 @@ func (x *UserEvent) GetUserBadEvent() *UserBadEvent { return nil } +func (x *UserEvent) GetUsedBytesChangedEvent() *UsedBytesChangedEvent { + if x, ok := x.GetEvent().(*UserEvent_UsedBytesChangedEvent); ok { + return x.UsedBytesChangedEvent + } + return nil +} + type isUserEvent_Event interface { isUserEvent_Event() } @@ -3652,6 +3660,10 @@ type UserEvent_UserBadEvent struct { UserBadEvent *UserBadEvent `protobuf:"bytes,4,opt,name=userBadEvent,proto3,oneof"` } +type UserEvent_UsedBytesChangedEvent struct { + UsedBytesChangedEvent *UsedBytesChangedEvent `protobuf:"bytes,5,opt,name=usedBytesChangedEvent,proto3,oneof"` +} + func (*UserEvent_ToggleSplitModeFinished) isUserEvent_Event() {} func (*UserEvent_UserDisconnected) isUserEvent_Event() {} @@ -3660,6 +3672,8 @@ func (*UserEvent_UserChanged) isUserEvent_Event() {} func (*UserEvent_UserBadEvent) isUserEvent_Event() {} +func (*UserEvent_UsedBytesChangedEvent) isUserEvent_Event() {} + type ToggleSplitModeFinishedEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3856,6 +3870,61 @@ func (x *UserBadEvent) GetErrorMessage() string { return "" } +type UsedBytesChangedEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + UsedBytes int64 `protobuf:"varint,2,opt,name=usedBytes,proto3" json:"usedBytes,omitempty"` +} + +func (x *UsedBytesChangedEvent) Reset() { + *x = UsedBytesChangedEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_bridge_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UsedBytesChangedEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UsedBytesChangedEvent) ProtoMessage() {} + +func (x *UsedBytesChangedEvent) ProtoReflect() protoreflect.Message { + mi := &file_bridge_proto_msgTypes[57] + 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 UsedBytesChangedEvent.ProtoReflect.Descriptor instead. +func (*UsedBytesChangedEvent) Descriptor() ([]byte, []int) { + return file_bridge_proto_rawDescGZIP(), []int{57} +} + +func (x *UsedBytesChangedEvent) GetUserID() string { + if x != nil { + return x.UserID + } + return "" +} + +func (x *UsedBytesChangedEvent) GetUsedBytes() int64 { + if x != nil { + return x.UsedBytes + } + return 0 +} + type GenericErrorEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3867,7 +3936,7 @@ type GenericErrorEvent struct { func (x *GenericErrorEvent) Reset() { *x = GenericErrorEvent{} if protoimpl.UnsafeEnabled { - mi := &file_bridge_proto_msgTypes[57] + mi := &file_bridge_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3880,7 +3949,7 @@ func (x *GenericErrorEvent) String() string { func (*GenericErrorEvent) ProtoMessage() {} func (x *GenericErrorEvent) ProtoReflect() protoreflect.Message { - mi := &file_bridge_proto_msgTypes[57] + mi := &file_bridge_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3893,7 +3962,7 @@ func (x *GenericErrorEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use GenericErrorEvent.ProtoReflect.Descriptor instead. func (*GenericErrorEvent) Descriptor() ([]byte, []int) { - return file_bridge_proto_rawDescGZIP(), []int{57} + return file_bridge_proto_rawDescGZIP(), []int{58} } func (x *GenericErrorEvent) GetCode() ErrorCode { @@ -4270,7 +4339,7 @@ var file_bridge_proto_rawDesc = []byte{ 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x41, 0x70, 0x69, 0x43, 0x65, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x22, 0xb5, 0x02, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5e, + 0x22, 0x8a, 0x03, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5e, 0x0a, 0x17, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x70, 0x6c, @@ -4288,317 +4357,327 @@ var file_bridge_proto_rawDesc = []byte{ 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x36, 0x0a, 0x1c, 0x54, 0x6f, 0x67, 0x67, - 0x6c, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x22, 0x33, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x22, 0x4a, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x4d, 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, 0x22, 0x38, 0x0a, - 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x0f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x2a, 0x71, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x47, 0x5f, 0x50, 0x41, 0x4e, 0x49, 0x43, - 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x47, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, - 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x47, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, - 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x47, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, 0x0c, - 0x0a, 0x08, 0x4c, 0x4f, 0x47, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, - 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x4c, - 0x4f, 0x47, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x06, 0x2a, 0x36, 0x0a, 0x09, 0x55, 0x73, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x47, 0x4e, 0x45, - 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x43, 0x4b, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, - 0x10, 0x02, 0x2a, 0xa2, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x53, 0x45, 0x52, 0x4e, 0x41, 0x4d, - 0x45, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x52, 0x45, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, - 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x46, 0x41, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x46, 0x41, 0x5f, 0x41, 0x42, - 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x57, 0x4f, 0x5f, 0x50, 0x41, 0x53, - 0x53, 0x57, 0x4f, 0x52, 0x44, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x17, - 0x0a, 0x13, 0x54, 0x57, 0x4f, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x53, 0x5f, - 0x41, 0x42, 0x4f, 0x52, 0x54, 0x10, 0x06, 0x2a, 0x5b, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x50, - 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x4f, - 0x52, 0x43, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, 0x4c, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0x02, 0x2a, 0x6b, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x49, - 0x53, 0x4b, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, - 0x43, 0x41, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x43, - 0x41, 0x43, 0x48, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, - 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x02, 0x2a, 0xdd, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4d, 0x41, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x1b, - 0x0a, 0x17, 0x53, 0x4d, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, - 0x54, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x49, - 0x4d, 0x41, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x4d, 0x54, 0x50, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4d, 0x41, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, - 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x4d, - 0x54, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x05, 0x2a, 0x53, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x11, - 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x00, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x4c, 0x53, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x5f, 0x45, 0x58, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, - 0x54, 0x4c, 0x53, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x45, 0x58, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x32, 0x99, 0x1d, 0x0a, 0x06, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x0b, - 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3a, 0x0a, - 0x08, 0x47, 0x75, 0x69, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x52, 0x65, 0x61, 0x64, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x51, 0x75, 0x69, - 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x12, 0x39, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x43, 0x0a, 0x0d, - 0x53, 0x68, 0x6f, 0x77, 0x4f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x46, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x49, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x4f, 0x6e, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x43, 0x0a, 0x0d, 0x49, 0x73, 0x41, - 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x46, - 0x0a, 0x10, 0x53, 0x65, 0x74, 0x49, 0x73, 0x42, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x43, 0x0a, 0x0d, 0x49, 0x73, 0x42, 0x65, 0x74, 0x61, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x53, - 0x65, 0x74, 0x49, 0x73, 0x41, 0x6c, 0x6c, 0x4d, 0x61, 0x69, 0x6c, 0x56, 0x69, 0x73, 0x69, 0x62, - 0x6c, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x10, 0x49, 0x73, 0x41, 0x6c, 0x6c, 0x4d, - 0x61, 0x69, 0x6c, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, - 0x0a, 0x04, 0x47, 0x6f, 0x4f, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x0c, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x07, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x0a, - 0x08, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x43, 0x0a, 0x0b, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, - 0x6f, 0x74, 0x65, 0x73, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x00, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x53, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x15, 0x75, + 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x36, 0x0a, + 0x1c, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x33, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x10, 0x55, 0x73, + 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x4a, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, + 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 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, 0x22, 0x4d, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x22, 0x38, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x2a, 0x71, 0x0a, 0x08, 0x4c, + 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x47, 0x5f, 0x50, + 0x41, 0x4e, 0x49, 0x43, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x47, 0x5f, 0x46, 0x41, + 0x54, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x47, 0x5f, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x47, 0x5f, 0x57, 0x41, 0x52, 0x4e, + 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x47, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, + 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x47, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, + 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x47, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x06, 0x2a, 0x36, + 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, + 0x49, 0x47, 0x4e, 0x45, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4c, + 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x4e, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x2a, 0xa2, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x53, 0x45, + 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x52, 0x45, 0x45, 0x5f, 0x55, + 0x53, 0x45, 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, + 0x46, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x46, + 0x41, 0x5f, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x57, 0x4f, + 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x57, 0x4f, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, + 0x52, 0x44, 0x53, 0x5f, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x10, 0x06, 0x2a, 0x5b, 0x0a, 0x0f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, + 0x0a, 0x13, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x50, 0x44, 0x41, 0x54, + 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, + 0x17, 0x0a, 0x13, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, 0x4c, 0x45, 0x4e, 0x54, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0x6b, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x6b, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, + 0x0a, 0x1c, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x55, 0x4e, 0x41, + 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, + 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x41, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x44, 0x49, + 0x53, 0x4b, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, + 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0xdd, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x69, 0x6c, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4d, 0x41, 0x50, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x4d, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, + 0x1a, 0x0a, 0x16, 0x49, 0x4d, 0x41, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x53, + 0x4d, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4d, 0x41, 0x50, 0x5f, + 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x25, + 0x0a, 0x21, 0x53, 0x4d, 0x54, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x05, 0x2a, 0x53, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x4c, 0x53, 0x5f, 0x43, 0x45, 0x52, + 0x54, 0x5f, 0x45, 0x58, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x54, 0x4c, 0x53, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x45, 0x58, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x32, 0x99, 0x1d, 0x0a, 0x06, 0x42, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x4e, 0x0a, 0x16, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, - 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x4c, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x67, - 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, + 0x75, 0x65, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x3f, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x3a, 0x0a, 0x08, 0x47, 0x75, 0x69, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x53, - 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x0f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, + 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, + 0x04, 0x51, 0x75, 0x69, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0x43, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x77, 0x4f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, + 0x70, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x49, 0x73, 0x41, 0x75, + 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x6e, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x43, 0x0a, + 0x0d, 0x49, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x6e, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x49, 0x73, 0x42, 0x65, 0x74, 0x61, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x43, 0x0a, 0x0d, 0x49, 0x73, + 0x42, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x49, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x49, 0x73, 0x41, 0x6c, 0x6c, 0x4d, 0x61, 0x69, 0x6c, 0x56, + 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x10, 0x49, 0x73, + 0x41, 0x6c, 0x6c, 0x4d, 0x61, 0x69, 0x6c, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x47, 0x6f, 0x4f, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x4a, 0x0a, 0x12, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x09, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4d, 0x0a, 0x15, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x0d, 0x46, 0x6f, 0x72, 0x63, - 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x49, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x36, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x32, 0x46, 0x41, 0x12, 0x12, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x32, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x12, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x49, 0x73, 0x41, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x12, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x13, 0x49, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, - 0x69, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, - 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x48, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x69, 0x73, 0x6b, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x45, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x49, 0x73, 0x44, 0x6f, 0x48, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0c, 0x49, 0x73, 0x44, 0x6f, 0x48, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x44, 0x0a, 0x12, 0x4d, 0x61, - 0x69, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x3e, 0x0a, 0x0c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x49, 0x6d, 0x61, 0x70, 0x53, 0x6d, 0x74, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x47, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x49, 0x6d, 0x61, 0x70, 0x53, 0x6d, 0x74, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x08, 0x48, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x49, - 0x73, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x65, 0x65, 0x12, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, - 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x4e, 0x0a, 0x12, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, - 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x47, - 0x0a, 0x0f, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, - 0x0a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x10, 0x53, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x6c, 0x69, 0x74, - 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x12, 0x3f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x40, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6e, 0x6b, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4e, 0x0a, 0x16, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x4c, 0x69, 0x6e, 0x6b, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x4c, 0x61, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x4a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x16, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, - 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3f, - 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x12, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, - 0x41, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x0f, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, + 0x6d, 0x61, 0x69, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x4d, 0x61, 0x69, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x6e, 0x2d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x3b, 0x0a, 0x09, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x67, 0x12, 0x16, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4d, 0x0a, + 0x15, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x0d, + 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x72, 0x12, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x33, + 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x32, 0x46, 0x41, 0x12, + 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0f, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x32, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x12, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0a, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x16, 0x53, 0x65, 0x74, + 0x49, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x6e, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x13, 0x49, 0x73, 0x41, 0x75, 0x74, + 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, + 0x61, 0x74, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x48, 0x0a, 0x10, 0x53, 0x65, 0x74, + 0x44, 0x69, 0x73, 0x6b, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x49, 0x73, 0x44, 0x6f, 0x48, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0c, 0x49, 0x73, + 0x44, 0x6f, 0x48, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x44, + 0x0a, 0x12, 0x4d, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6d, 0x61, 0x70, 0x53, 0x6d, 0x74, 0x70, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6d, 0x61, 0x70, 0x53, 0x6d, 0x74, 0x70, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x40, 0x0a, + 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x45, 0x0a, 0x0a, 0x49, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x65, 0x65, 0x12, 0x1b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4e, 0x0a, 0x12, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x47, 0x0a, 0x0f, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x47, 0x65, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x1a, 0x0a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x46, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, + 0x70, 0x6c, 0x69, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x6f, 0x75, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, + 0x51, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x41, 0x70, 0x70, 0x6c, 0x65, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x4d, + 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x12, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x4d, 0x61, 0x69, 0x6c, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x2d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x2f, 0x76, 0x33, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4614,7 +4693,7 @@ func file_bridge_proto_rawDescGZIP() []byte { } var file_bridge_proto_enumTypes = make([]protoimpl.EnumInfo, 7) -var file_bridge_proto_msgTypes = make([]protoimpl.MessageInfo, 58) +var file_bridge_proto_msgTypes = make([]protoimpl.MessageInfo, 59) var file_bridge_proto_goTypes = []interface{}{ (LogLevel)(0), // 0: grpc.LogLevel (UserState)(0), // 1: grpc.UserState @@ -4680,11 +4759,12 @@ var file_bridge_proto_goTypes = []interface{}{ (*UserDisconnectedEvent)(nil), // 61: grpc.UserDisconnectedEvent (*UserChangedEvent)(nil), // 62: grpc.UserChangedEvent (*UserBadEvent)(nil), // 63: grpc.UserBadEvent - (*GenericErrorEvent)(nil), // 64: grpc.GenericErrorEvent - (*wrapperspb.StringValue)(nil), // 65: google.protobuf.StringValue - (*emptypb.Empty)(nil), // 66: google.protobuf.Empty - (*wrapperspb.BoolValue)(nil), // 67: google.protobuf.BoolValue - (*wrapperspb.Int32Value)(nil), // 68: google.protobuf.Int32Value + (*UsedBytesChangedEvent)(nil), // 64: grpc.UsedBytesChangedEvent + (*GenericErrorEvent)(nil), // 65: grpc.GenericErrorEvent + (*wrapperspb.StringValue)(nil), // 66: google.protobuf.StringValue + (*emptypb.Empty)(nil), // 67: google.protobuf.Empty + (*wrapperspb.BoolValue)(nil), // 68: google.protobuf.BoolValue + (*wrapperspb.Int32Value)(nil), // 69: google.protobuf.Int32Value } var file_bridge_proto_depIdxs = []int32{ 0, // 0: grpc.AddLogEntryRequest.level:type_name -> grpc.LogLevel @@ -4698,7 +4778,7 @@ var file_bridge_proto_depIdxs = []int32{ 50, // 8: grpc.StreamEvent.keychain:type_name -> grpc.KeychainEvent 54, // 9: grpc.StreamEvent.mail:type_name -> grpc.MailEvent 59, // 10: grpc.StreamEvent.user:type_name -> grpc.UserEvent - 64, // 11: grpc.StreamEvent.genericError:type_name -> grpc.GenericErrorEvent + 65, // 11: grpc.StreamEvent.genericError:type_name -> grpc.GenericErrorEvent 21, // 12: grpc.AppEvent.internetStatus:type_name -> grpc.InternetStatusEvent 22, // 13: grpc.AppEvent.toggleAutostartFinished:type_name -> grpc.ToggleAutostartFinishedEvent 23, // 14: grpc.AppEvent.resetFinished:type_name -> grpc.ResetFinishedEvent @@ -4741,120 +4821,121 @@ var file_bridge_proto_depIdxs = []int32{ 61, // 51: grpc.UserEvent.userDisconnected:type_name -> grpc.UserDisconnectedEvent 62, // 52: grpc.UserEvent.userChanged:type_name -> grpc.UserChangedEvent 63, // 53: grpc.UserEvent.userBadEvent:type_name -> grpc.UserBadEvent - 6, // 54: grpc.GenericErrorEvent.code:type_name -> grpc.ErrorCode - 65, // 55: grpc.Bridge.CheckTokens:input_type -> google.protobuf.StringValue - 7, // 56: grpc.Bridge.AddLogEntry:input_type -> grpc.AddLogEntryRequest - 66, // 57: grpc.Bridge.GuiReady:input_type -> google.protobuf.Empty - 66, // 58: grpc.Bridge.Quit:input_type -> google.protobuf.Empty - 66, // 59: grpc.Bridge.Restart:input_type -> google.protobuf.Empty - 66, // 60: grpc.Bridge.ShowOnStartup:input_type -> google.protobuf.Empty - 67, // 61: grpc.Bridge.SetIsAutostartOn:input_type -> google.protobuf.BoolValue - 66, // 62: grpc.Bridge.IsAutostartOn:input_type -> google.protobuf.Empty - 67, // 63: grpc.Bridge.SetIsBetaEnabled:input_type -> google.protobuf.BoolValue - 66, // 64: grpc.Bridge.IsBetaEnabled:input_type -> google.protobuf.Empty - 67, // 65: grpc.Bridge.SetIsAllMailVisible:input_type -> google.protobuf.BoolValue - 66, // 66: grpc.Bridge.IsAllMailVisible:input_type -> google.protobuf.Empty - 66, // 67: grpc.Bridge.GoOs:input_type -> google.protobuf.Empty - 66, // 68: grpc.Bridge.TriggerReset:input_type -> google.protobuf.Empty - 66, // 69: grpc.Bridge.Version:input_type -> google.protobuf.Empty - 66, // 70: grpc.Bridge.LogsPath:input_type -> google.protobuf.Empty - 66, // 71: grpc.Bridge.LicensePath:input_type -> google.protobuf.Empty - 66, // 72: grpc.Bridge.ReleaseNotesPageLink:input_type -> google.protobuf.Empty - 66, // 73: grpc.Bridge.DependencyLicensesLink:input_type -> google.protobuf.Empty - 66, // 74: grpc.Bridge.LandingPageLink:input_type -> google.protobuf.Empty - 65, // 75: grpc.Bridge.SetColorSchemeName:input_type -> google.protobuf.StringValue - 66, // 76: grpc.Bridge.ColorSchemeName:input_type -> google.protobuf.Empty - 66, // 77: grpc.Bridge.CurrentEmailClient:input_type -> google.protobuf.Empty - 9, // 78: grpc.Bridge.ReportBug:input_type -> grpc.ReportBugRequest - 65, // 79: grpc.Bridge.ExportTLSCertificates:input_type -> google.protobuf.StringValue - 65, // 80: grpc.Bridge.ForceLauncher:input_type -> google.protobuf.StringValue - 65, // 81: grpc.Bridge.SetMainExecutable:input_type -> google.protobuf.StringValue - 10, // 82: grpc.Bridge.Login:input_type -> grpc.LoginRequest - 10, // 83: grpc.Bridge.Login2FA:input_type -> grpc.LoginRequest - 10, // 84: grpc.Bridge.Login2Passwords:input_type -> grpc.LoginRequest - 11, // 85: grpc.Bridge.LoginAbort:input_type -> grpc.LoginAbortRequest - 66, // 86: grpc.Bridge.CheckUpdate:input_type -> google.protobuf.Empty - 66, // 87: grpc.Bridge.InstallUpdate:input_type -> google.protobuf.Empty - 67, // 88: grpc.Bridge.SetIsAutomaticUpdateOn:input_type -> google.protobuf.BoolValue - 66, // 89: grpc.Bridge.IsAutomaticUpdateOn:input_type -> google.protobuf.Empty - 66, // 90: grpc.Bridge.DiskCachePath:input_type -> google.protobuf.Empty - 65, // 91: grpc.Bridge.SetDiskCachePath:input_type -> google.protobuf.StringValue - 67, // 92: grpc.Bridge.SetIsDoHEnabled:input_type -> google.protobuf.BoolValue - 66, // 93: grpc.Bridge.IsDoHEnabled:input_type -> google.protobuf.Empty - 66, // 94: grpc.Bridge.MailServerSettings:input_type -> google.protobuf.Empty - 12, // 95: grpc.Bridge.SetMailServerSettings:input_type -> grpc.ImapSmtpSettings - 66, // 96: grpc.Bridge.Hostname:input_type -> google.protobuf.Empty - 68, // 97: grpc.Bridge.IsPortFree:input_type -> google.protobuf.Int32Value - 66, // 98: grpc.Bridge.AvailableKeychains:input_type -> google.protobuf.Empty - 65, // 99: grpc.Bridge.SetCurrentKeychain:input_type -> google.protobuf.StringValue - 66, // 100: grpc.Bridge.CurrentKeychain:input_type -> google.protobuf.Empty - 66, // 101: grpc.Bridge.GetUserList:input_type -> google.protobuf.Empty - 65, // 102: grpc.Bridge.GetUser:input_type -> google.protobuf.StringValue - 15, // 103: grpc.Bridge.SetUserSplitMode:input_type -> grpc.UserSplitModeRequest - 65, // 104: grpc.Bridge.LogoutUser:input_type -> google.protobuf.StringValue - 65, // 105: grpc.Bridge.RemoveUser:input_type -> google.protobuf.StringValue - 17, // 106: grpc.Bridge.ConfigureUserAppleMail:input_type -> grpc.ConfigureAppleMailRequest - 18, // 107: grpc.Bridge.RunEventStream:input_type -> grpc.EventStreamRequest - 66, // 108: grpc.Bridge.StopEventStream:input_type -> google.protobuf.Empty - 65, // 109: grpc.Bridge.CheckTokens:output_type -> google.protobuf.StringValue - 66, // 110: grpc.Bridge.AddLogEntry:output_type -> google.protobuf.Empty - 8, // 111: grpc.Bridge.GuiReady:output_type -> grpc.GuiReadyResponse - 66, // 112: grpc.Bridge.Quit:output_type -> google.protobuf.Empty - 66, // 113: grpc.Bridge.Restart:output_type -> google.protobuf.Empty - 67, // 114: grpc.Bridge.ShowOnStartup:output_type -> google.protobuf.BoolValue - 66, // 115: grpc.Bridge.SetIsAutostartOn:output_type -> google.protobuf.Empty - 67, // 116: grpc.Bridge.IsAutostartOn:output_type -> google.protobuf.BoolValue - 66, // 117: grpc.Bridge.SetIsBetaEnabled:output_type -> google.protobuf.Empty - 67, // 118: grpc.Bridge.IsBetaEnabled:output_type -> google.protobuf.BoolValue - 66, // 119: grpc.Bridge.SetIsAllMailVisible:output_type -> google.protobuf.Empty - 67, // 120: grpc.Bridge.IsAllMailVisible:output_type -> google.protobuf.BoolValue - 65, // 121: grpc.Bridge.GoOs:output_type -> google.protobuf.StringValue - 66, // 122: grpc.Bridge.TriggerReset:output_type -> google.protobuf.Empty - 65, // 123: grpc.Bridge.Version:output_type -> google.protobuf.StringValue - 65, // 124: grpc.Bridge.LogsPath:output_type -> google.protobuf.StringValue - 65, // 125: grpc.Bridge.LicensePath:output_type -> google.protobuf.StringValue - 65, // 126: grpc.Bridge.ReleaseNotesPageLink:output_type -> google.protobuf.StringValue - 65, // 127: grpc.Bridge.DependencyLicensesLink:output_type -> google.protobuf.StringValue - 65, // 128: grpc.Bridge.LandingPageLink:output_type -> google.protobuf.StringValue - 66, // 129: grpc.Bridge.SetColorSchemeName:output_type -> google.protobuf.Empty - 65, // 130: grpc.Bridge.ColorSchemeName:output_type -> google.protobuf.StringValue - 65, // 131: grpc.Bridge.CurrentEmailClient:output_type -> google.protobuf.StringValue - 66, // 132: grpc.Bridge.ReportBug:output_type -> google.protobuf.Empty - 66, // 133: grpc.Bridge.ExportTLSCertificates:output_type -> google.protobuf.Empty - 66, // 134: grpc.Bridge.ForceLauncher:output_type -> google.protobuf.Empty - 66, // 135: grpc.Bridge.SetMainExecutable:output_type -> google.protobuf.Empty - 66, // 136: grpc.Bridge.Login:output_type -> google.protobuf.Empty - 66, // 137: grpc.Bridge.Login2FA:output_type -> google.protobuf.Empty - 66, // 138: grpc.Bridge.Login2Passwords:output_type -> google.protobuf.Empty - 66, // 139: grpc.Bridge.LoginAbort:output_type -> google.protobuf.Empty - 66, // 140: grpc.Bridge.CheckUpdate:output_type -> google.protobuf.Empty - 66, // 141: grpc.Bridge.InstallUpdate:output_type -> google.protobuf.Empty - 66, // 142: grpc.Bridge.SetIsAutomaticUpdateOn:output_type -> google.protobuf.Empty - 67, // 143: grpc.Bridge.IsAutomaticUpdateOn:output_type -> google.protobuf.BoolValue - 65, // 144: grpc.Bridge.DiskCachePath:output_type -> google.protobuf.StringValue - 66, // 145: grpc.Bridge.SetDiskCachePath:output_type -> google.protobuf.Empty - 66, // 146: grpc.Bridge.SetIsDoHEnabled:output_type -> google.protobuf.Empty - 67, // 147: grpc.Bridge.IsDoHEnabled:output_type -> google.protobuf.BoolValue - 12, // 148: grpc.Bridge.MailServerSettings:output_type -> grpc.ImapSmtpSettings - 66, // 149: grpc.Bridge.SetMailServerSettings:output_type -> google.protobuf.Empty - 65, // 150: grpc.Bridge.Hostname:output_type -> google.protobuf.StringValue - 67, // 151: grpc.Bridge.IsPortFree:output_type -> google.protobuf.BoolValue - 13, // 152: grpc.Bridge.AvailableKeychains:output_type -> grpc.AvailableKeychainsResponse - 66, // 153: grpc.Bridge.SetCurrentKeychain:output_type -> google.protobuf.Empty - 65, // 154: grpc.Bridge.CurrentKeychain:output_type -> google.protobuf.StringValue - 16, // 155: grpc.Bridge.GetUserList:output_type -> grpc.UserListResponse - 14, // 156: grpc.Bridge.GetUser:output_type -> grpc.User - 66, // 157: grpc.Bridge.SetUserSplitMode:output_type -> google.protobuf.Empty - 66, // 158: grpc.Bridge.LogoutUser:output_type -> google.protobuf.Empty - 66, // 159: grpc.Bridge.RemoveUser:output_type -> google.protobuf.Empty - 66, // 160: grpc.Bridge.ConfigureUserAppleMail:output_type -> google.protobuf.Empty - 19, // 161: grpc.Bridge.RunEventStream:output_type -> grpc.StreamEvent - 66, // 162: grpc.Bridge.StopEventStream:output_type -> google.protobuf.Empty - 109, // [109:163] is the sub-list for method output_type - 55, // [55:109] is the sub-list for method input_type - 55, // [55:55] is the sub-list for extension type_name - 55, // [55:55] is the sub-list for extension extendee - 0, // [0:55] is the sub-list for field type_name + 64, // 54: grpc.UserEvent.usedBytesChangedEvent:type_name -> grpc.UsedBytesChangedEvent + 6, // 55: grpc.GenericErrorEvent.code:type_name -> grpc.ErrorCode + 66, // 56: grpc.Bridge.CheckTokens:input_type -> google.protobuf.StringValue + 7, // 57: grpc.Bridge.AddLogEntry:input_type -> grpc.AddLogEntryRequest + 67, // 58: grpc.Bridge.GuiReady:input_type -> google.protobuf.Empty + 67, // 59: grpc.Bridge.Quit:input_type -> google.protobuf.Empty + 67, // 60: grpc.Bridge.Restart:input_type -> google.protobuf.Empty + 67, // 61: grpc.Bridge.ShowOnStartup:input_type -> google.protobuf.Empty + 68, // 62: grpc.Bridge.SetIsAutostartOn:input_type -> google.protobuf.BoolValue + 67, // 63: grpc.Bridge.IsAutostartOn:input_type -> google.protobuf.Empty + 68, // 64: grpc.Bridge.SetIsBetaEnabled:input_type -> google.protobuf.BoolValue + 67, // 65: grpc.Bridge.IsBetaEnabled:input_type -> google.protobuf.Empty + 68, // 66: grpc.Bridge.SetIsAllMailVisible:input_type -> google.protobuf.BoolValue + 67, // 67: grpc.Bridge.IsAllMailVisible:input_type -> google.protobuf.Empty + 67, // 68: grpc.Bridge.GoOs:input_type -> google.protobuf.Empty + 67, // 69: grpc.Bridge.TriggerReset:input_type -> google.protobuf.Empty + 67, // 70: grpc.Bridge.Version:input_type -> google.protobuf.Empty + 67, // 71: grpc.Bridge.LogsPath:input_type -> google.protobuf.Empty + 67, // 72: grpc.Bridge.LicensePath:input_type -> google.protobuf.Empty + 67, // 73: grpc.Bridge.ReleaseNotesPageLink:input_type -> google.protobuf.Empty + 67, // 74: grpc.Bridge.DependencyLicensesLink:input_type -> google.protobuf.Empty + 67, // 75: grpc.Bridge.LandingPageLink:input_type -> google.protobuf.Empty + 66, // 76: grpc.Bridge.SetColorSchemeName:input_type -> google.protobuf.StringValue + 67, // 77: grpc.Bridge.ColorSchemeName:input_type -> google.protobuf.Empty + 67, // 78: grpc.Bridge.CurrentEmailClient:input_type -> google.protobuf.Empty + 9, // 79: grpc.Bridge.ReportBug:input_type -> grpc.ReportBugRequest + 66, // 80: grpc.Bridge.ExportTLSCertificates:input_type -> google.protobuf.StringValue + 66, // 81: grpc.Bridge.ForceLauncher:input_type -> google.protobuf.StringValue + 66, // 82: grpc.Bridge.SetMainExecutable:input_type -> google.protobuf.StringValue + 10, // 83: grpc.Bridge.Login:input_type -> grpc.LoginRequest + 10, // 84: grpc.Bridge.Login2FA:input_type -> grpc.LoginRequest + 10, // 85: grpc.Bridge.Login2Passwords:input_type -> grpc.LoginRequest + 11, // 86: grpc.Bridge.LoginAbort:input_type -> grpc.LoginAbortRequest + 67, // 87: grpc.Bridge.CheckUpdate:input_type -> google.protobuf.Empty + 67, // 88: grpc.Bridge.InstallUpdate:input_type -> google.protobuf.Empty + 68, // 89: grpc.Bridge.SetIsAutomaticUpdateOn:input_type -> google.protobuf.BoolValue + 67, // 90: grpc.Bridge.IsAutomaticUpdateOn:input_type -> google.protobuf.Empty + 67, // 91: grpc.Bridge.DiskCachePath:input_type -> google.protobuf.Empty + 66, // 92: grpc.Bridge.SetDiskCachePath:input_type -> google.protobuf.StringValue + 68, // 93: grpc.Bridge.SetIsDoHEnabled:input_type -> google.protobuf.BoolValue + 67, // 94: grpc.Bridge.IsDoHEnabled:input_type -> google.protobuf.Empty + 67, // 95: grpc.Bridge.MailServerSettings:input_type -> google.protobuf.Empty + 12, // 96: grpc.Bridge.SetMailServerSettings:input_type -> grpc.ImapSmtpSettings + 67, // 97: grpc.Bridge.Hostname:input_type -> google.protobuf.Empty + 69, // 98: grpc.Bridge.IsPortFree:input_type -> google.protobuf.Int32Value + 67, // 99: grpc.Bridge.AvailableKeychains:input_type -> google.protobuf.Empty + 66, // 100: grpc.Bridge.SetCurrentKeychain:input_type -> google.protobuf.StringValue + 67, // 101: grpc.Bridge.CurrentKeychain:input_type -> google.protobuf.Empty + 67, // 102: grpc.Bridge.GetUserList:input_type -> google.protobuf.Empty + 66, // 103: grpc.Bridge.GetUser:input_type -> google.protobuf.StringValue + 15, // 104: grpc.Bridge.SetUserSplitMode:input_type -> grpc.UserSplitModeRequest + 66, // 105: grpc.Bridge.LogoutUser:input_type -> google.protobuf.StringValue + 66, // 106: grpc.Bridge.RemoveUser:input_type -> google.protobuf.StringValue + 17, // 107: grpc.Bridge.ConfigureUserAppleMail:input_type -> grpc.ConfigureAppleMailRequest + 18, // 108: grpc.Bridge.RunEventStream:input_type -> grpc.EventStreamRequest + 67, // 109: grpc.Bridge.StopEventStream:input_type -> google.protobuf.Empty + 66, // 110: grpc.Bridge.CheckTokens:output_type -> google.protobuf.StringValue + 67, // 111: grpc.Bridge.AddLogEntry:output_type -> google.protobuf.Empty + 8, // 112: grpc.Bridge.GuiReady:output_type -> grpc.GuiReadyResponse + 67, // 113: grpc.Bridge.Quit:output_type -> google.protobuf.Empty + 67, // 114: grpc.Bridge.Restart:output_type -> google.protobuf.Empty + 68, // 115: grpc.Bridge.ShowOnStartup:output_type -> google.protobuf.BoolValue + 67, // 116: grpc.Bridge.SetIsAutostartOn:output_type -> google.protobuf.Empty + 68, // 117: grpc.Bridge.IsAutostartOn:output_type -> google.protobuf.BoolValue + 67, // 118: grpc.Bridge.SetIsBetaEnabled:output_type -> google.protobuf.Empty + 68, // 119: grpc.Bridge.IsBetaEnabled:output_type -> google.protobuf.BoolValue + 67, // 120: grpc.Bridge.SetIsAllMailVisible:output_type -> google.protobuf.Empty + 68, // 121: grpc.Bridge.IsAllMailVisible:output_type -> google.protobuf.BoolValue + 66, // 122: grpc.Bridge.GoOs:output_type -> google.protobuf.StringValue + 67, // 123: grpc.Bridge.TriggerReset:output_type -> google.protobuf.Empty + 66, // 124: grpc.Bridge.Version:output_type -> google.protobuf.StringValue + 66, // 125: grpc.Bridge.LogsPath:output_type -> google.protobuf.StringValue + 66, // 126: grpc.Bridge.LicensePath:output_type -> google.protobuf.StringValue + 66, // 127: grpc.Bridge.ReleaseNotesPageLink:output_type -> google.protobuf.StringValue + 66, // 128: grpc.Bridge.DependencyLicensesLink:output_type -> google.protobuf.StringValue + 66, // 129: grpc.Bridge.LandingPageLink:output_type -> google.protobuf.StringValue + 67, // 130: grpc.Bridge.SetColorSchemeName:output_type -> google.protobuf.Empty + 66, // 131: grpc.Bridge.ColorSchemeName:output_type -> google.protobuf.StringValue + 66, // 132: grpc.Bridge.CurrentEmailClient:output_type -> google.protobuf.StringValue + 67, // 133: grpc.Bridge.ReportBug:output_type -> google.protobuf.Empty + 67, // 134: grpc.Bridge.ExportTLSCertificates:output_type -> google.protobuf.Empty + 67, // 135: grpc.Bridge.ForceLauncher:output_type -> google.protobuf.Empty + 67, // 136: grpc.Bridge.SetMainExecutable:output_type -> google.protobuf.Empty + 67, // 137: grpc.Bridge.Login:output_type -> google.protobuf.Empty + 67, // 138: grpc.Bridge.Login2FA:output_type -> google.protobuf.Empty + 67, // 139: grpc.Bridge.Login2Passwords:output_type -> google.protobuf.Empty + 67, // 140: grpc.Bridge.LoginAbort:output_type -> google.protobuf.Empty + 67, // 141: grpc.Bridge.CheckUpdate:output_type -> google.protobuf.Empty + 67, // 142: grpc.Bridge.InstallUpdate:output_type -> google.protobuf.Empty + 67, // 143: grpc.Bridge.SetIsAutomaticUpdateOn:output_type -> google.protobuf.Empty + 68, // 144: grpc.Bridge.IsAutomaticUpdateOn:output_type -> google.protobuf.BoolValue + 66, // 145: grpc.Bridge.DiskCachePath:output_type -> google.protobuf.StringValue + 67, // 146: grpc.Bridge.SetDiskCachePath:output_type -> google.protobuf.Empty + 67, // 147: grpc.Bridge.SetIsDoHEnabled:output_type -> google.protobuf.Empty + 68, // 148: grpc.Bridge.IsDoHEnabled:output_type -> google.protobuf.BoolValue + 12, // 149: grpc.Bridge.MailServerSettings:output_type -> grpc.ImapSmtpSettings + 67, // 150: grpc.Bridge.SetMailServerSettings:output_type -> google.protobuf.Empty + 66, // 151: grpc.Bridge.Hostname:output_type -> google.protobuf.StringValue + 68, // 152: grpc.Bridge.IsPortFree:output_type -> google.protobuf.BoolValue + 13, // 153: grpc.Bridge.AvailableKeychains:output_type -> grpc.AvailableKeychainsResponse + 67, // 154: grpc.Bridge.SetCurrentKeychain:output_type -> google.protobuf.Empty + 66, // 155: grpc.Bridge.CurrentKeychain:output_type -> google.protobuf.StringValue + 16, // 156: grpc.Bridge.GetUserList:output_type -> grpc.UserListResponse + 14, // 157: grpc.Bridge.GetUser:output_type -> grpc.User + 67, // 158: grpc.Bridge.SetUserSplitMode:output_type -> google.protobuf.Empty + 67, // 159: grpc.Bridge.LogoutUser:output_type -> google.protobuf.Empty + 67, // 160: grpc.Bridge.RemoveUser:output_type -> google.protobuf.Empty + 67, // 161: grpc.Bridge.ConfigureUserAppleMail:output_type -> google.protobuf.Empty + 19, // 162: grpc.Bridge.RunEventStream:output_type -> grpc.StreamEvent + 67, // 163: grpc.Bridge.StopEventStream:output_type -> google.protobuf.Empty + 110, // [110:164] is the sub-list for method output_type + 56, // [56:110] is the sub-list for method input_type + 56, // [56:56] is the sub-list for extension type_name + 56, // [56:56] is the sub-list for extension extendee + 0, // [0:56] is the sub-list for field type_name } func init() { file_bridge_proto_init() } @@ -5548,6 +5629,18 @@ func file_bridge_proto_init() { } } file_bridge_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UsedBytesChangedEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bridge_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenericErrorEvent); i { case 0: return &v.state @@ -5623,6 +5716,7 @@ func file_bridge_proto_init() { (*UserEvent_UserDisconnected)(nil), (*UserEvent_UserChanged)(nil), (*UserEvent_UserBadEvent)(nil), + (*UserEvent_UsedBytesChangedEvent)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -5630,7 +5724,7 @@ func file_bridge_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_bridge_proto_rawDesc, NumEnums: 7, - NumMessages: 58, + NumMessages: 59, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/frontend/grpc/bridge.proto b/internal/frontend/grpc/bridge.proto index 0c13c4d2..957ca153 100644 --- a/internal/frontend/grpc/bridge.proto +++ b/internal/frontend/grpc/bridge.proto @@ -448,6 +448,7 @@ message UserEvent { UserDisconnectedEvent userDisconnected = 2; UserChangedEvent userChanged = 3; UserBadEvent userBadEvent = 4; + UsedBytesChangedEvent usedBytesChangedEvent= 5; } } @@ -468,6 +469,11 @@ message UserBadEvent { string errorMessage = 2; } +message UsedBytesChangedEvent { + string userID = 1; + int64 usedBytes = 2; +} + //********************************************************** // Generic errors //********************************************************** diff --git a/internal/frontend/grpc/event_factory.go b/internal/frontend/grpc/event_factory.go index 29b0f11c..98644291 100644 --- a/internal/frontend/grpc/event_factory.go +++ b/internal/frontend/grpc/event_factory.go @@ -177,6 +177,10 @@ func NewUserBadEvent(userID string, errorMessage string) *StreamEvent { return userEvent(&UserEvent{Event: &UserEvent_UserBadEvent{UserBadEvent: &UserBadEvent{UserID: userID, ErrorMessage: errorMessage}}}) } +func NewUsedBytesChangedEvent(userID string, usedBytes int) *StreamEvent { + return userEvent(&UserEvent{Event: &UserEvent_UsedBytesChangedEvent{UsedBytesChangedEvent: &UsedBytesChangedEvent{UserID: userID, UsedBytes: int64(usedBytes)}}}) +} + func NewGenericErrorEvent(errorCode ErrorCode) *StreamEvent { return genericErrorEvent(&GenericErrorEvent{Code: errorCode}) } diff --git a/internal/frontend/grpc/service.go b/internal/frontend/grpc/service.go index e1d281a8..5857d348 100644 --- a/internal/frontend/grpc/service.go +++ b/internal/frontend/grpc/service.go @@ -305,6 +305,9 @@ func (s *Service) watchEvents() { case events.AddressModeChanged: _ = s.SendEvent(NewUserChangedEvent(event.UserID)) + case events.UsedSpaceChanged: + _ = s.SendEvent(NewUsedBytesChangedEvent(event.UserID, event.UsedSpace)) + case events.UserDeauth: // This is the event the GUI cares about. _ = s.SendEvent(NewUserChangedEvent(event.UserID)) diff --git a/internal/frontend/grpc/service_stream.go b/internal/frontend/grpc/service_stream.go index 5a727585..83d6c4d2 100644 --- a/internal/frontend/grpc/service_stream.go +++ b/internal/frontend/grpc/service_stream.go @@ -174,6 +174,7 @@ func (s *Service) StartEventTest() error { //nolint:funlen NewUserToggleSplitModeFinishedEvent("userID"), NewUserDisconnectedEvent("username"), NewUserChangedEvent("userID"), + NewUsedBytesChangedEvent("userID", 1000), } for _, event := range events { diff --git a/internal/user/events.go b/internal/user/events.go index 5311c8bd..b009a2f6 100644 --- a/internal/user/events.go +++ b/internal/user/events.go @@ -66,6 +66,10 @@ func (user *User) handleAPIEvent(ctx context.Context, event proton.Event) error } } + if event.UsedSpace != nil { + user.handleUsedSpaceChange(*event.UsedSpace) + } + return nil } @@ -655,6 +659,20 @@ func (user *User) handleUpdateDraftEvent(ctx context.Context, event proton.Messa }, user.apiUserLock, user.apiAddrsLock, user.apiLabelsLock, user.updateChLock) } +func (user *User) handleUsedSpaceChange(usedSpace int) { + safe.Lock(func() { + if user.apiUser.UsedSpace == usedSpace { + return + } + + user.apiUser.UsedSpace = usedSpace + user.eventCh.Enqueue(events.UsedSpaceChanged{ + UserID: user.apiUser.ID, + UsedSpace: usedSpace, + }) + }, user.apiUserLock) +} + func getMailboxName(label proton.Label) []string { var name []string