diff --git a/README.md b/README.md index a7952fb..692815d 100644 --- a/README.md +++ b/README.md @@ -18,16 +18,44 @@ Currently, the following client features have been implemented in this library: - [x] GC session state management - [x] Player profile fetching / call tracking - - [ ] SOCache tracking / state management - - [ ] Lobby tracking / state management - - [ ] Read lobby state correctly + - [x] SOCache tracking / state management + - [x] Basic chat interaction + - [~] Lobby tracking / state management + - [x] Read lobby state correctly - [ ] Implement normal lobby operations - - [ ] Party tracking / state management - - [ ] Read party and invite state correctly + - [~] Party tracking / state management + - [x] Read party and invite state correctly - [ ] Implement normal party operations ... and others. This is the current short-term roadmap. +## SOCache Mechanism + +The caching mechanism makes it easy to watch for changes to common objects, like `Lobby, LobbyInvite, Party, PartyInvite`. + +This mechanism is used everywhere, these objects are not exposed in their own events. + +```go +import ( + gcmm "github.com/paralin/go-dota2/protocol/dota_gcmessages_common_match_management" + "github.com/paralin/go-dota2/cso" +) + +eventCh, eventCancel, err := dota.GetCache().SubscribeType(cso.Lobby) +if err != nil { + return err +} + +defer eventCancel() + +lobbyEvent := <-eventCh +lobby := lobbyEvent.Object.(*gcmm.CSODOTALobby) +``` + +Events for the object type are emitted on the eventCh. Be sure to call `eventCancel` once you are done with the channel to prevent resource leaks. + +The cache object also adds interfaces to get and list the current objects in the cache. + ## go-steam Dependency This library depends on `go-steam`. Currently we are using the [FACEIT fork](https://github.com/faceit/go-steam). diff --git a/client.go b/client.go index 37be244..70b71b1 100644 --- a/client.go +++ b/client.go @@ -15,6 +15,7 @@ import ( gcm "github.com/paralin/go-dota2/protocol/dota_gcmessages_msgid" gcsdkm "github.com/paralin/go-dota2/protocol/gcsdk_gcmessages" gcsm "github.com/paralin/go-dota2/protocol/gcsystemmsgs" + "github.com/paralin/go-dota2/socache" "github.com/paralin/go-dota2/state" ) @@ -31,6 +32,7 @@ type handlerMap map[uint32]func(packet *gamecoordinator.GCPacket) error type Dota2 struct { le *logrus.Entry client *steam.Client + cache *socache.SOCache connectionCtxMtx sync.Mutex connectionCtx context.Context @@ -43,12 +45,15 @@ type Dota2 struct { profileResponseHandlersMtx sync.Mutex profileResponseHandlers map[uint32][]chan<- *gccm.CMsgDOTAProfileCard + + joinChatChannelHandlers sync.Map // map[string]chan *gcmcc.CMsgDOTAJoinChatChannelResponse } // New builds a new Dota2 handler. func New(client *steam.Client, le *logrus.Entry) *Dota2 { c := &Dota2{ le: le, + cache: socache.NewSOCache(le), client: client, state: state.Dota2State{ ConnectionStatus: gcsdkm.GCConnectionStatus_GCConnectionStatus_NO_SESSION, @@ -60,6 +65,11 @@ func New(client *steam.Client, le *logrus.Entry) *Dota2 { return c } +// GetCache returns the SO Cache. +func (d *Dota2) GetCache() *socache.SOCache { + return d.cache +} + // Close kills any ongoing calls. func (d *Dota2) Close() { d.connectionCtxMtx.Lock() @@ -75,6 +85,14 @@ func (d *Dota2) buildHandlerMap() { uint32(gcsm.EGCBaseClientMsg_k_EMsgGCClientWelcome): d.handleClientWelcome, uint32(gcsm.EGCBaseClientMsg_k_EMsgGCClientConnectionStatus): d.handleConnectionStatus, uint32(gcm.EDOTAGCMsg_k_EMsgClientToGCGetProfileCardResponse): d.handleGetProfileCardResponse, + uint32(gcsm.ESOMsg_k_ESOMsg_CacheSubscribed): d.handleCacheSubscribed, + uint32(gcsm.ESOMsg_k_ESOMsg_UpdateMultiple): d.handleCacheUpdateMultiple, + uint32(gcsm.ESOMsg_k_ESOMsg_CacheUnsubscribed): d.handleCacheUnsubscribed, + uint32(gcsm.ESOMsg_k_ESOMsg_Destroy): d.handleCacheDestroy, + uint32(gcm.EDOTAGCMsg_k_EMsgGCJoinChatChannelResponse): d.handleJoinChatChannelResponse, + uint32(gcm.EDOTAGCMsg_k_EMsgGCChatMessage): d.handleChatMessage, + uint32(gcm.EDOTAGCMsg_k_EMsgGCOtherJoinedChannel): d.handleJoinedChannel, + uint32(gcm.EDOTAGCMsg_k_EMsgGCOtherLeftChannel): d.handleLeftChannel, } } @@ -138,3 +156,8 @@ func (d *Dota2) HandleGCPacket(packet *gamecoordinator.GCPacket) { le.WithError(err).Warn("error handling gc msg") } } + +// Pong responds to a Ping. +func (d *Dota2) Pong() { + d.write(uint32(gcsm.EGCBaseClientMsg_k_EMsgGCPingResponse), &gcsdkm.CMsgGCClientPing{}) +} diff --git a/client_cache.go b/client_cache.go new file mode 100644 index 0000000..e214ed5 --- /dev/null +++ b/client_cache.go @@ -0,0 +1,70 @@ +package dota2 + +import ( + "github.com/Philipp15b/go-steam/protocol/gamecoordinator" + gcsdkm "github.com/paralin/go-dota2/protocol/gcsdk_gcmessages" + gcsm "github.com/paralin/go-dota2/protocol/gcsystemmsgs" +) + +// RequestCacheSubscriptionRefresh requests a subscription refresh for a specific cache ID. +func (d *Dota2) RequestCacheSubscriptionRefresh(ownerSoid *gcsdkm.CMsgSOIDOwner) { + d.write(uint32(gcsm.ESOMsg_k_ESOMsg_CacheSubscriptionRefresh), &gcsdkm.CMsgSOCacheSubscriptionRefresh{ + OwnerSoid: ownerSoid, + }) +} + +// handleCacheSubscribed handles a CacheSubscribed packet. +func (d *Dota2) handleCacheSubscribed(packet *gamecoordinator.GCPacket) error { + sub := &gcsdkm.CMsgSOCacheSubscribed{} + if err := d.unmarshalBody(packet, sub); err != nil { + return err + } + + if err := d.cache.HandleSubscribed(sub); err != nil { + d.le.WithError(err).Debug("unhandled cache issue (ignore)") + } + + return nil +} + +// handleCacheUnsubscribed handles a CacheUnsubscribed packet. +func (d *Dota2) handleCacheUnsubscribed(packet *gamecoordinator.GCPacket) error { + sub := &gcsdkm.CMsgSOCacheUnsubscribed{} + if err := d.unmarshalBody(packet, sub); err != nil { + return err + } + + if err := d.cache.HandleUnsubscribed(sub); err != nil { + d.le.WithError(err).Debug("unhandled cache issue (ignore)") + } + + return nil +} + +// handleCacheUpdateMultiple handles when one or more object(s) in a cache is/are updated. +func (d *Dota2) handleCacheUpdateMultiple(packet *gamecoordinator.GCPacket) error { + sub := &gcsdkm.CMsgSOMultipleObjects{} + if err := d.unmarshalBody(packet, sub); err != nil { + return err + } + + if err := d.cache.HandleUpdateMultiple(sub); err != nil { + d.le.WithError(err).Debug("unhandled cache issue (ignore)") + } + + return nil +} + +// handleCacheDestroy handles when an object in a cache is destroyed. +func (d *Dota2) handleCacheDestroy(packet *gamecoordinator.GCPacket) error { + sub := &gcsdkm.CMsgSOSingleObject{} + if err := d.unmarshalBody(packet, sub); err != nil { + return err + } + + if err := d.cache.HandleDestroy(sub); err != nil { + d.le.WithError(err).Debug("unhandled cache issue (ignore)") + } + + return nil +} diff --git a/client_chat.go b/client_chat.go new file mode 100644 index 0000000..472a8bd --- /dev/null +++ b/client_chat.go @@ -0,0 +1,96 @@ +package dota2 + +import ( + "context" + + "github.com/Philipp15b/go-steam/protocol/gamecoordinator" + "github.com/paralin/go-dota2/events" + gcmcc "github.com/paralin/go-dota2/protocol/dota_gcmessages_client_chat" + gcm "github.com/paralin/go-dota2/protocol/dota_gcmessages_msgid" + "github.com/paralin/go-dota2/protocol/dota_shared_enums" +) + +// SendChannelMessage attempts to send a message in a channel. +func (d *Dota2) SendChannelMessage(channelID uint64, message string) { + d.write(uint32(gcm.EDOTAGCMsg_k_EMsgGCChatMessage), &gcmcc.CMsgDOTAChatMessage{ + ChannelId: &channelID, + Text: &message, + }) + +} + +// SendChannelMessageEx attempts to send a message in a channel with explicit details. +// At minimum ChannelId and Text must be set. +func (d *Dota2) SendChannelMessageEx(channelID uint64, msg *gcmcc.CMsgDOTAChatMessage) { + d.write(uint32(gcm.EDOTAGCMsg_k_EMsgGCChatMessage), msg) +} + +// JoinChatChannel attempts to join a chat channel by name and type. +func (d *Dota2) JoinChatChannel(ctx context.Context, name string, channelType dota_shared_enums.DOTAChatChannelTypeT) (*gcmcc.CMsgDOTAJoinChatChannelResponse, error) { + d.write(uint32(gcm.EDOTAGCMsg_k_EMsgGCJoinChatChannel), &gcmcc.CMsgDOTAJoinChatChannel{ + ChannelName: &name, + ChannelType: &channelType, + }) + + defer d.joinChatChannelHandlers.Delete(name) + ch := make(chan *gcmcc.CMsgDOTAJoinChatChannelResponse, 1) + d.joinChatChannelHandlers.Store(name, ch) + select { + case <-ctx.Done(): + return nil, ctx.Err() + case v := <-ch: + return v, nil + } +} + +// handleJoinChatChannelResponse handles the response to the join chat channel request +func (d *Dota2) handleJoinChatChannelResponse(packet *gamecoordinator.GCPacket) error { + resp := &gcmcc.CMsgDOTAJoinChatChannelResponse{} + if err := d.unmarshalBody(packet, resp); err != nil { + return err + } + + chanName := resp.GetChannelName() + reqCh, ok := d.joinChatChannelHandlers.Load(chanName) + if ok { + reqCh.(chan *gcmcc.CMsgDOTAJoinChatChannelResponse) <- resp + } + + return nil +} + +// handleChatMessage handles an incoming chat message. +func (d *Dota2) handleChatMessage(packet *gamecoordinator.GCPacket) error { + eve := &events.ChatMessage{} + resp := &eve.CMsgDOTAChatMessage + if err := d.unmarshalBody(packet, resp); err != nil { + return err + } + + d.emit(eve) + return nil +} + +// handleLeftChannel handles a channel leave event. +func (d *Dota2) handleLeftChannel(packet *gamecoordinator.GCPacket) error { + eve := &events.LeftChatChannel{} + resp := &eve.CMsgDOTAOtherLeftChatChannel + if err := d.unmarshalBody(packet, resp); err != nil { + return err + } + + d.emit(eve) + return nil +} + +// handleJoinedChannel handles a channel join event. +func (d *Dota2) handleJoinedChannel(packet *gamecoordinator.GCPacket) error { + eve := &events.JoinedChatChannel{} + resp := &eve.CMsgDOTAOtherJoinedChatChannel + if err := d.unmarshalBody(packet, resp); err != nil { + return err + } + + d.emit(eve) + return nil +} diff --git a/client_lobby.go b/client_lobby.go new file mode 100644 index 0000000..bbb31aa --- /dev/null +++ b/client_lobby.go @@ -0,0 +1,79 @@ +package dota2 + +import ( + "context" + + "github.com/paralin/go-dota2/cso" + gccm "github.com/paralin/go-dota2/protocol/dota_gcmessages_client" + gcccm "github.com/paralin/go-dota2/protocol/dota_gcmessages_client_match_management" + gcmm "github.com/paralin/go-dota2/protocol/dota_gcmessages_common_match_management" + gcm "github.com/paralin/go-dota2/protocol/dota_gcmessages_msgid" +) + +// JoinLobby attempts to join a lobby by ID. +func (d *Dota2) JoinLobby(lobbyID uint64, passKey string) { + d.write(uint32(gcm.EDOTAGCMsg_k_EMsgGCPracticeLobbyJoin), &gcccm.CMsgPracticeLobbyJoin{ + LobbyId: &lobbyID, + PassKey: &passKey, + }) +} + +// CreateLobby attempts to create a lobby with details. +func (d *Dota2) CreateLobby(details *gcccm.CMsgPracticeLobbySetDetails) { + // TODO: investigate SearchKey + d.write(uint32(gcm.EDOTAGCMsg_k_EMsgGCPracticeLobbyCreate), &gcccm.CMsgPracticeLobbyCreate{ + PassKey: details.PassKey, + LobbyDetails: details, + }) +} + +// LeaveCreateLobby attempts to leave any current lobby and creates a new one. +func (d *Dota2) LeaveCreateLobby(ctx context.Context, details *gcccm.CMsgPracticeLobbySetDetails) error { + cacheCtr, err := d.cache.GetContainerForTypeID(uint32(cso.Lobby)) + if err != nil { + return err + } + + eventCh, eventCancel, err := cacheCtr.Subscribe() + if err != nil { + return err + } + defer eventCancel() + + var wasInNoLobby bool + for { + lobbyObj := cacheCtr.GetOne() + if lobbyObj != nil { + lob := lobbyObj.(*gcmm.CSODOTALobby) + le := d.le.WithField("lobby-id", lob.GetLobbyId()) + if wasInNoLobby { + le.Debug("successfully created lobby") + return nil + } + + le.Debug("attempting to leave lobby") + d.LeaveLobby() + } else { + wasInNoLobby = true + d.le.Debug("creating lobby") + d.CreateLobby(details) + } + + select { + case <-ctx.Done(): + return ctx.Err() + case event := <-eventCh: + _ = event + } + } +} + +// LeaveLobby attempts to leave the current lobby. +func (d *Dota2) LeaveLobby() { + d.write(uint32(gcm.EDOTAGCMsg_k_EMsgGCPracticeLobbyLeave), &gcccm.CMsgPracticeLobbyLeave{}) +} + +// DestroyLobby attempts to destroy the lobby. +func (d *Dota2) DestroyLobby() { + d.write(uint32(gcm.EDOTAGCMsg_k_EMsgDestroyLobbyRequest), &gccm.CMsgDOTADestroyLobbyRequest{}) +} diff --git a/client_party.go b/client_party.go new file mode 100644 index 0000000..54fe182 --- /dev/null +++ b/client_party.go @@ -0,0 +1,10 @@ +package dota2 + +import ( + bgcm "github.com/paralin/go-dota2/protocol/base_gcmessages" +) + +// LeaveParty attempts to leave the current party. +func (d *Dota2) LeaveParty() { + d.write(uint32(bgcm.EGCBaseMsg_k_EMsgGCLeaveParty), &bgcm.CMsgLeaveParty{}) +} diff --git a/client_profile.go b/client_profile.go index 78b979d..bfffd6d 100644 --- a/client_profile.go +++ b/client_profile.go @@ -11,32 +11,6 @@ import ( gcm "github.com/paralin/go-dota2/protocol/dota_gcmessages_msgid" ) -// handleGetProfileCardResponse handles the response to the get profile card request -func (d *Dota2) handleGetProfileCardResponse(packet *gamecoordinator.GCPacket) error { - card := &gccm.CMsgDOTAProfileCard{} - - if err := d.unmarshalBody(packet, card); err != nil { - return err - } - if card.AccountId == nil { - return errors.New("received a profile card response with nil account id") - } - - accountID := *card.AccountId - d.profileResponseHandlersMtx.Lock() - handlers := d.profileResponseHandlers[accountID] - d.profileResponseHandlersMtx.Unlock() - - for _, handler := range handlers { - select { - case handler <- card: - default: - } - } - - return nil -} - // RequestProfileCard sends a request to the DOTA gc for a card and waits for the response. // If you want to enable timeouts, use a context.WithTimeout func (d *Dota2) RequestProfileCard(ctx context.Context, accountId uint32) (*gccm.CMsgDOTAProfileCard, error) { @@ -87,3 +61,29 @@ func (d *Dota2) RequestProfileCard(ctx context.Context, accountId uint32) (*gccm return r, nil } } + +// handleGetProfileCardResponse handles the response to the get profile card request +func (d *Dota2) handleGetProfileCardResponse(packet *gamecoordinator.GCPacket) error { + card := &gccm.CMsgDOTAProfileCard{} + + if err := d.unmarshalBody(packet, card); err != nil { + return err + } + if card.AccountId == nil { + return errors.New("received a profile card response with nil account id") + } + + accountID := *card.AccountId + d.profileResponseHandlersMtx.Lock() + handlers := d.profileResponseHandlers[accountID] + d.profileResponseHandlersMtx.Unlock() + + for _, handler := range handlers { + select { + case handler <- card: + default: + } + } + + return nil +} diff --git a/client_session.go b/client_session.go index 583d8ab..f4b5ce8 100644 --- a/client_session.go +++ b/client_session.go @@ -5,7 +5,6 @@ import ( "github.com/Philipp15b/go-steam/protocol/gamecoordinator" devents "github.com/paralin/go-dota2/events" - // gcmm "github.com/paralin/go-dota2/protocol/dota_gcmessages_common_match_management" gcsdkm "github.com/paralin/go-dota2/protocol/gcsdk_gcmessages" gcsm "github.com/paralin/go-dota2/protocol/gcsystemmsgs" "github.com/paralin/go-dota2/state" @@ -61,6 +60,17 @@ func (d *Dota2) handleClientWelcome(packet *gamecoordinator.GCPacket) error { return err } + d.le.Debugf("welcome: %v", welcome) + for _, cache := range welcome.GetUptodateSubscribedCaches() { + d.RequestCacheSubscriptionRefresh(cache.GetOwnerSoid()) + } + + for _, cache := range welcome.GetOutofdateSubscribedCaches() { + if err := d.cache.HandleSubscribed(cache); err != nil { + d.le.WithError(err).Warn("unable to handle welcome cache") + } + } + d.setConnectionStatus(gcsdkm.GCConnectionStatus_GCConnectionStatus_HAVE_SESSION, nil) d.emit(&devents.ClientWelcomed{Welcome: welcome}) return nil diff --git a/cso/cso_types.go b/cso/cso_types.go new file mode 100644 index 0000000..78fc2ae --- /dev/null +++ b/cso/cso_types.go @@ -0,0 +1,93 @@ +package cso + +import ( + "github.com/golang/protobuf/proto" + gcclm "github.com/paralin/go-dota2/protocol/dota_gcmessages_client" + gccm "github.com/paralin/go-dota2/protocol/dota_gcmessages_common" + gcmm "github.com/paralin/go-dota2/protocol/dota_gcmessages_common_match_management" + "github.com/pkg/errors" +) + +// CSOType is a shared object type identifier. +//go:generate stringer -type=CSOType +type CSOType int32 + +const ( + // EconItem is an economy item. + EconItem CSOType = 1 + // ItemRecipe is an item recipe. + ItemRecipe = 5 + // EconGameAccountClient is a economy game account client.. + EconGameAccountClient = 7 + // SelectedItemPreset is a selected item preset. + SelectedItemPreset = 35 + // ItemPresetInstance is a instance of an item preset. + ItemPresetInstance = 36 + // DropRateBonus is an active drop rate bonus. + DropRateBonus = 38 + // LeagueViewPass is a pass to view a league ticket. + LeagueViewPass = 39 + // EventTicket is a ticket to an event. + EventTicket = 40 + // ItemTournamentPassport is an item representing a tournament passport. + ItemTournamentPassport = 42 + // GameAccountClient is the DOTA game account for a client. + GameAccountClient = 2002 + // Party is a Dota 2 party. + Party = 2003 + // Lobby is a Dota 2 lobby. + Lobby = 2004 + // PartyInvite is an invite to a party. + PartyInvite = 2006 + // GameHeroFavorites are game hero favorites. + GameHeroFavorites = 2007 + // MapLocationState is the minimap location state. + MapLocationState = 2008 + // Tournament represents a tournament. + Tournament = 2009 + // PlayerChallenge represents a player challenge. + PlayerChallenge = 2010 + // LobbyInvite is an invitation to a lobby. + LobbyInvite = 2011 +) + +// csoTypeCtors links type IDs to constructors. +var csoTypeCtors = map[CSOType]func() proto.Message{ + GameAccountClient: func() proto.Message { + return &gccm.CSODOTAGameAccountClient{} + }, + Party: func() proto.Message { + return &gcmm.CSODOTAParty{} + }, + Lobby: func() proto.Message { + return &gcmm.CSODOTALobby{} + }, + PartyInvite: func() proto.Message { + return &gcmm.CSODOTAPartyInvite{} + }, + GameHeroFavorites: func() proto.Message { + return &gcclm.CSODOTAGameHeroFavorites{} + }, + MapLocationState: func() proto.Message { + return &gccm.CSODOTAMapLocationState{} + }, + Tournament: func() proto.Message { + return &gccm.CMsgDOTALeagueTournament{} + }, + PlayerChallenge: func() proto.Message { + return &gccm.CSODOTAPlayerChallenge{} + }, + LobbyInvite: func() proto.Message { + return &gcmm.CSODOTALobbyInvite{} + }, +} + +// NewSharedObject builds a new shared object from a type ID. +func NewSharedObject(typ CSOType) (proto.Message, error) { + ctor, ok := csoTypeCtors[typ] + if !ok { + return nil, errors.Errorf("unknown shared object type id: %d", typ) + } + + return ctor(), nil +} diff --git a/cso/csotype_string.go b/cso/csotype_string.go new file mode 100644 index 0000000..89c2027 --- /dev/null +++ b/cso/csotype_string.go @@ -0,0 +1,17 @@ +// Code generated by "stringer -type=CSOType"; DO NOT EDIT. + +package cso + +import "strconv" + +const _CSOType_name = "EconItem" + +var _CSOType_index = [...]uint8{0, 8} + +func (i CSOType) String() string { + i -= 1 + if i < 0 || i >= CSOType(len(_CSOType_index)-1) { + return "CSOType(" + strconv.FormatInt(int64(i+1), 10) + ")" + } + return _CSOType_name[_CSOType_index[i]:_CSOType_index[i+1]] +} diff --git a/events/chat.go b/events/chat.go new file mode 100644 index 0000000..b1edf2c --- /dev/null +++ b/events/chat.go @@ -0,0 +1,20 @@ +package events + +import ( + gcmcc "github.com/paralin/go-dota2/protocol/dota_gcmessages_client_chat" +) + +// ChatMessage is emitted when a chat message is observed. +type ChatMessage struct { + gcmcc.CMsgDOTAChatMessage +} + +// LeftChatChannel is emitted when we left a channel. +type LeftChatChannel struct { + gcmcc.CMsgDOTAOtherLeftChatChannel +} + +// JoinedChatChannel is emitted when we joined a channel. +type JoinedChatChannel struct { + gcmcc.CMsgDOTAOtherJoinedChatChannel +} diff --git a/generator/generator.go b/generator/generator.go index ca691ac..8e31850 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -20,11 +20,14 @@ var dota2ProtoFiles = map[string]string{ "base_gcmessages.proto": "base.pb.go", "gcsdk_gcmessages.proto": "gcsdk.pb.go", "dota_gcmessages_client.proto": "dota_client.pb.go", + "dota_gcmessages_client_chat.proto": "dota_client_chat.pb.go", + "dota_gcmessages_client_match_management.proto": "dota_client_match_management.pb.go", "dota_gcmessages_msgid.proto": "dota_client_msgid.pb.go", "dota_gcmessages_common.proto": "dota_common.pb.go", "dota_gcmessages_common_match_management.proto": "dota_common_match_management.pb.go", "dota_gcmessages_client_team.proto": "dota_gcmessages_client_team.pb.go", "dota_shared_enums.proto": "dota_shared_enums.pb.go", + "dota_client_enums.proto": "dota_client_enums.pb.go", "steammessages.proto": "steammessages.pb.go", "gcsystemmsgs.proto": "system.pb.go", } diff --git a/protocol/dota_client_enums/dota_client_enums.go b/protocol/dota_client_enums/dota_client_enums.go new file mode 100755 index 0000000..8178c39 --- /dev/null +++ b/protocol/dota_client_enums/dota_client_enums.go @@ -0,0 +1,466 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: dota_client_enums.proto + +package dota_client_enums + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type ETournamentTemplate int32 + +const ( + ETournamentTemplate_k_ETournamentTemplate_None ETournamentTemplate = 0 + ETournamentTemplate_k_ETournamentTemplate_AutomatedWin3 ETournamentTemplate = 1 +) + +var ETournamentTemplate_name = map[int32]string{ + 0: "k_ETournamentTemplate_None", + 1: "k_ETournamentTemplate_AutomatedWin3", +} +var ETournamentTemplate_value = map[string]int32{ + "k_ETournamentTemplate_None": 0, + "k_ETournamentTemplate_AutomatedWin3": 1, +} + +func (x ETournamentTemplate) Enum() *ETournamentTemplate { + p := new(ETournamentTemplate) + *p = x + return p +} +func (x ETournamentTemplate) String() string { + return proto.EnumName(ETournamentTemplate_name, int32(x)) +} +func (x *ETournamentTemplate) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(ETournamentTemplate_value, data, "ETournamentTemplate") + if err != nil { + return err + } + *x = ETournamentTemplate(value) + return nil +} +func (ETournamentTemplate) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +type ETournamentGameState int32 + +const ( + ETournamentGameState_k_ETournamentGameState_Unknown ETournamentGameState = 0 + ETournamentGameState_k_ETournamentGameState_Canceled ETournamentGameState = 1 + ETournamentGameState_k_ETournamentGameState_Scheduled ETournamentGameState = 2 + ETournamentGameState_k_ETournamentGameState_Active ETournamentGameState = 3 + ETournamentGameState_k_ETournamentGameState_RadVictory ETournamentGameState = 20 + ETournamentGameState_k_ETournamentGameState_DireVictory ETournamentGameState = 21 + ETournamentGameState_k_ETournamentGameState_RadVictoryByForfeit ETournamentGameState = 22 + ETournamentGameState_k_ETournamentGameState_DireVictoryByForfeit ETournamentGameState = 23 + ETournamentGameState_k_ETournamentGameState_ServerFailure ETournamentGameState = 40 + ETournamentGameState_k_ETournamentGameState_NotNeeded ETournamentGameState = 41 +) + +var ETournamentGameState_name = map[int32]string{ + 0: "k_ETournamentGameState_Unknown", + 1: "k_ETournamentGameState_Canceled", + 2: "k_ETournamentGameState_Scheduled", + 3: "k_ETournamentGameState_Active", + 20: "k_ETournamentGameState_RadVictory", + 21: "k_ETournamentGameState_DireVictory", + 22: "k_ETournamentGameState_RadVictoryByForfeit", + 23: "k_ETournamentGameState_DireVictoryByForfeit", + 40: "k_ETournamentGameState_ServerFailure", + 41: "k_ETournamentGameState_NotNeeded", +} +var ETournamentGameState_value = map[string]int32{ + "k_ETournamentGameState_Unknown": 0, + "k_ETournamentGameState_Canceled": 1, + "k_ETournamentGameState_Scheduled": 2, + "k_ETournamentGameState_Active": 3, + "k_ETournamentGameState_RadVictory": 20, + "k_ETournamentGameState_DireVictory": 21, + "k_ETournamentGameState_RadVictoryByForfeit": 22, + "k_ETournamentGameState_DireVictoryByForfeit": 23, + "k_ETournamentGameState_ServerFailure": 40, + "k_ETournamentGameState_NotNeeded": 41, +} + +func (x ETournamentGameState) Enum() *ETournamentGameState { + p := new(ETournamentGameState) + *p = x + return p +} +func (x ETournamentGameState) String() string { + return proto.EnumName(ETournamentGameState_name, int32(x)) +} +func (x *ETournamentGameState) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(ETournamentGameState_value, data, "ETournamentGameState") + if err != nil { + return err + } + *x = ETournamentGameState(value) + return nil +} +func (ETournamentGameState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +type ETournamentTeamState int32 + +const ( + ETournamentTeamState_k_ETournamentTeamState_Unknown ETournamentTeamState = 0 + ETournamentTeamState_k_ETournamentTeamState_Node1 ETournamentTeamState = 1 + ETournamentTeamState_k_ETournamentTeamState_NodeMax ETournamentTeamState = 1024 + ETournamentTeamState_k_ETournamentTeamState_Eliminated ETournamentTeamState = 14003 + ETournamentTeamState_k_ETournamentTeamState_Forfeited ETournamentTeamState = 14004 + ETournamentTeamState_k_ETournamentTeamState_Finished1st ETournamentTeamState = 15001 + ETournamentTeamState_k_ETournamentTeamState_Finished2nd ETournamentTeamState = 15002 + ETournamentTeamState_k_ETournamentTeamState_Finished3rd ETournamentTeamState = 15003 + ETournamentTeamState_k_ETournamentTeamState_Finished4th ETournamentTeamState = 15004 + ETournamentTeamState_k_ETournamentTeamState_Finished5th ETournamentTeamState = 15005 + ETournamentTeamState_k_ETournamentTeamState_Finished6th ETournamentTeamState = 15006 + ETournamentTeamState_k_ETournamentTeamState_Finished7th ETournamentTeamState = 15007 + ETournamentTeamState_k_ETournamentTeamState_Finished8th ETournamentTeamState = 15008 + ETournamentTeamState_k_ETournamentTeamState_Finished9th ETournamentTeamState = 15009 + ETournamentTeamState_k_ETournamentTeamState_Finished10th ETournamentTeamState = 15010 + ETournamentTeamState_k_ETournamentTeamState_Finished11th ETournamentTeamState = 15011 + ETournamentTeamState_k_ETournamentTeamState_Finished12th ETournamentTeamState = 15012 + ETournamentTeamState_k_ETournamentTeamState_Finished13th ETournamentTeamState = 15013 + ETournamentTeamState_k_ETournamentTeamState_Finished14th ETournamentTeamState = 15014 + ETournamentTeamState_k_ETournamentTeamState_Finished15th ETournamentTeamState = 15015 + ETournamentTeamState_k_ETournamentTeamState_Finished16th ETournamentTeamState = 15016 +) + +var ETournamentTeamState_name = map[int32]string{ + 0: "k_ETournamentTeamState_Unknown", + 1: "k_ETournamentTeamState_Node1", + 1024: "k_ETournamentTeamState_NodeMax", + 14003: "k_ETournamentTeamState_Eliminated", + 14004: "k_ETournamentTeamState_Forfeited", + 15001: "k_ETournamentTeamState_Finished1st", + 15002: "k_ETournamentTeamState_Finished2nd", + 15003: "k_ETournamentTeamState_Finished3rd", + 15004: "k_ETournamentTeamState_Finished4th", + 15005: "k_ETournamentTeamState_Finished5th", + 15006: "k_ETournamentTeamState_Finished6th", + 15007: "k_ETournamentTeamState_Finished7th", + 15008: "k_ETournamentTeamState_Finished8th", + 15009: "k_ETournamentTeamState_Finished9th", + 15010: "k_ETournamentTeamState_Finished10th", + 15011: "k_ETournamentTeamState_Finished11th", + 15012: "k_ETournamentTeamState_Finished12th", + 15013: "k_ETournamentTeamState_Finished13th", + 15014: "k_ETournamentTeamState_Finished14th", + 15015: "k_ETournamentTeamState_Finished15th", + 15016: "k_ETournamentTeamState_Finished16th", +} +var ETournamentTeamState_value = map[string]int32{ + "k_ETournamentTeamState_Unknown": 0, + "k_ETournamentTeamState_Node1": 1, + "k_ETournamentTeamState_NodeMax": 1024, + "k_ETournamentTeamState_Eliminated": 14003, + "k_ETournamentTeamState_Forfeited": 14004, + "k_ETournamentTeamState_Finished1st": 15001, + "k_ETournamentTeamState_Finished2nd": 15002, + "k_ETournamentTeamState_Finished3rd": 15003, + "k_ETournamentTeamState_Finished4th": 15004, + "k_ETournamentTeamState_Finished5th": 15005, + "k_ETournamentTeamState_Finished6th": 15006, + "k_ETournamentTeamState_Finished7th": 15007, + "k_ETournamentTeamState_Finished8th": 15008, + "k_ETournamentTeamState_Finished9th": 15009, + "k_ETournamentTeamState_Finished10th": 15010, + "k_ETournamentTeamState_Finished11th": 15011, + "k_ETournamentTeamState_Finished12th": 15012, + "k_ETournamentTeamState_Finished13th": 15013, + "k_ETournamentTeamState_Finished14th": 15014, + "k_ETournamentTeamState_Finished15th": 15015, + "k_ETournamentTeamState_Finished16th": 15016, +} + +func (x ETournamentTeamState) Enum() *ETournamentTeamState { + p := new(ETournamentTeamState) + *p = x + return p +} +func (x ETournamentTeamState) String() string { + return proto.EnumName(ETournamentTeamState_name, int32(x)) +} +func (x *ETournamentTeamState) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(ETournamentTeamState_value, data, "ETournamentTeamState") + if err != nil { + return err + } + *x = ETournamentTeamState(value) + return nil +} +func (ETournamentTeamState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +type ETournamentState int32 + +const ( + ETournamentState_k_ETournamentState_Unknown ETournamentState = 0 + ETournamentState_k_ETournamentState_CanceledByAdmin ETournamentState = 1 + ETournamentState_k_ETournamentState_Completed ETournamentState = 2 + ETournamentState_k_ETournamentState_Merged ETournamentState = 3 + ETournamentState_k_ETournamentState_ServerFailure ETournamentState = 4 + ETournamentState_k_ETournamentState_TeamAbandoned ETournamentState = 5 + ETournamentState_k_ETournamentState_TeamTimeoutForfeit ETournamentState = 6 + ETournamentState_k_ETournamentState_TeamTimeoutRefund ETournamentState = 7 + ETournamentState_k_ETournamentState_ServerFailureGrantedVictory ETournamentState = 8 + ETournamentState_k_ETournamentState_TeamTimeoutGrantedVictory ETournamentState = 9 + ETournamentState_k_ETournamentState_InProgress ETournamentState = 100 + ETournamentState_k_ETournamentState_WaitingToMerge ETournamentState = 101 +) + +var ETournamentState_name = map[int32]string{ + 0: "k_ETournamentState_Unknown", + 1: "k_ETournamentState_CanceledByAdmin", + 2: "k_ETournamentState_Completed", + 3: "k_ETournamentState_Merged", + 4: "k_ETournamentState_ServerFailure", + 5: "k_ETournamentState_TeamAbandoned", + 6: "k_ETournamentState_TeamTimeoutForfeit", + 7: "k_ETournamentState_TeamTimeoutRefund", + 8: "k_ETournamentState_ServerFailureGrantedVictory", + 9: "k_ETournamentState_TeamTimeoutGrantedVictory", + 100: "k_ETournamentState_InProgress", + 101: "k_ETournamentState_WaitingToMerge", +} +var ETournamentState_value = map[string]int32{ + "k_ETournamentState_Unknown": 0, + "k_ETournamentState_CanceledByAdmin": 1, + "k_ETournamentState_Completed": 2, + "k_ETournamentState_Merged": 3, + "k_ETournamentState_ServerFailure": 4, + "k_ETournamentState_TeamAbandoned": 5, + "k_ETournamentState_TeamTimeoutForfeit": 6, + "k_ETournamentState_TeamTimeoutRefund": 7, + "k_ETournamentState_ServerFailureGrantedVictory": 8, + "k_ETournamentState_TeamTimeoutGrantedVictory": 9, + "k_ETournamentState_InProgress": 100, + "k_ETournamentState_WaitingToMerge": 101, +} + +func (x ETournamentState) Enum() *ETournamentState { + p := new(ETournamentState) + *p = x + return p +} +func (x ETournamentState) String() string { + return proto.EnumName(ETournamentState_name, int32(x)) +} +func (x *ETournamentState) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(ETournamentState_value, data, "ETournamentState") + if err != nil { + return err + } + *x = ETournamentState(value) + return nil +} +func (ETournamentState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +type ETournamentNodeState int32 + +const ( + ETournamentNodeState_k_ETournamentNodeState_Unknown ETournamentNodeState = 0 + ETournamentNodeState_k_ETournamentNodeState_Canceled ETournamentNodeState = 1 + ETournamentNodeState_k_ETournamentNodeState_TeamsNotYetAssigned ETournamentNodeState = 2 + ETournamentNodeState_k_ETournamentNodeState_InBetweenGames ETournamentNodeState = 3 + ETournamentNodeState_k_ETournamentNodeState_GameInProgress ETournamentNodeState = 4 + ETournamentNodeState_k_ETournamentNodeState_A_Won ETournamentNodeState = 5 + ETournamentNodeState_k_ETournamentNodeState_B_Won ETournamentNodeState = 6 + ETournamentNodeState_k_ETournamentNodeState_A_WonByForfeit ETournamentNodeState = 7 + ETournamentNodeState_k_ETournamentNodeState_B_WonByForfeit ETournamentNodeState = 8 + ETournamentNodeState_k_ETournamentNodeState_A_Bye ETournamentNodeState = 9 + ETournamentNodeState_k_ETournamentNodeState_A_Abandoned ETournamentNodeState = 10 + ETournamentNodeState_k_ETournamentNodeState_ServerFailure ETournamentNodeState = 11 + ETournamentNodeState_k_ETournamentNodeState_A_TimeoutForfeit ETournamentNodeState = 12 + ETournamentNodeState_k_ETournamentNodeState_A_TimeoutRefund ETournamentNodeState = 13 +) + +var ETournamentNodeState_name = map[int32]string{ + 0: "k_ETournamentNodeState_Unknown", + 1: "k_ETournamentNodeState_Canceled", + 2: "k_ETournamentNodeState_TeamsNotYetAssigned", + 3: "k_ETournamentNodeState_InBetweenGames", + 4: "k_ETournamentNodeState_GameInProgress", + 5: "k_ETournamentNodeState_A_Won", + 6: "k_ETournamentNodeState_B_Won", + 7: "k_ETournamentNodeState_A_WonByForfeit", + 8: "k_ETournamentNodeState_B_WonByForfeit", + 9: "k_ETournamentNodeState_A_Bye", + 10: "k_ETournamentNodeState_A_Abandoned", + 11: "k_ETournamentNodeState_ServerFailure", + 12: "k_ETournamentNodeState_A_TimeoutForfeit", + 13: "k_ETournamentNodeState_A_TimeoutRefund", +} +var ETournamentNodeState_value = map[string]int32{ + "k_ETournamentNodeState_Unknown": 0, + "k_ETournamentNodeState_Canceled": 1, + "k_ETournamentNodeState_TeamsNotYetAssigned": 2, + "k_ETournamentNodeState_InBetweenGames": 3, + "k_ETournamentNodeState_GameInProgress": 4, + "k_ETournamentNodeState_A_Won": 5, + "k_ETournamentNodeState_B_Won": 6, + "k_ETournamentNodeState_A_WonByForfeit": 7, + "k_ETournamentNodeState_B_WonByForfeit": 8, + "k_ETournamentNodeState_A_Bye": 9, + "k_ETournamentNodeState_A_Abandoned": 10, + "k_ETournamentNodeState_ServerFailure": 11, + "k_ETournamentNodeState_A_TimeoutForfeit": 12, + "k_ETournamentNodeState_A_TimeoutRefund": 13, +} + +func (x ETournamentNodeState) Enum() *ETournamentNodeState { + p := new(ETournamentNodeState) + *p = x + return p +} +func (x ETournamentNodeState) String() string { + return proto.EnumName(ETournamentNodeState_name, int32(x)) +} +func (x *ETournamentNodeState) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(ETournamentNodeState_value, data, "ETournamentNodeState") + if err != nil { + return err + } + *x = ETournamentNodeState(value) + return nil +} +func (ETournamentNodeState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +type EDOTAGroupMergeResult int32 + +const ( + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_OK EDOTAGroupMergeResult = 0 + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_FAILED_GENERIC EDOTAGroupMergeResult = 1 + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_NOT_LEADER EDOTAGroupMergeResult = 2 + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_TOO_MANY_PLAYERS EDOTAGroupMergeResult = 3 + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_TOO_MANY_COACHES EDOTAGroupMergeResult = 4 + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_ENGINE_MISMATCH EDOTAGroupMergeResult = 5 + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_NO_SUCH_GROUP EDOTAGroupMergeResult = 6 + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_OTHER_GROUP_NOT_OPEN EDOTAGroupMergeResult = 7 + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_ALREADY_INVITED EDOTAGroupMergeResult = 8 + EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_NOT_INVITED EDOTAGroupMergeResult = 9 +) + +var EDOTAGroupMergeResult_name = map[int32]string{ + 0: "k_EDOTAGroupMergeResult_OK", + 1: "k_EDOTAGroupMergeResult_FAILED_GENERIC", + 2: "k_EDOTAGroupMergeResult_NOT_LEADER", + 3: "k_EDOTAGroupMergeResult_TOO_MANY_PLAYERS", + 4: "k_EDOTAGroupMergeResult_TOO_MANY_COACHES", + 5: "k_EDOTAGroupMergeResult_ENGINE_MISMATCH", + 6: "k_EDOTAGroupMergeResult_NO_SUCH_GROUP", + 7: "k_EDOTAGroupMergeResult_OTHER_GROUP_NOT_OPEN", + 8: "k_EDOTAGroupMergeResult_ALREADY_INVITED", + 9: "k_EDOTAGroupMergeResult_NOT_INVITED", +} +var EDOTAGroupMergeResult_value = map[string]int32{ + "k_EDOTAGroupMergeResult_OK": 0, + "k_EDOTAGroupMergeResult_FAILED_GENERIC": 1, + "k_EDOTAGroupMergeResult_NOT_LEADER": 2, + "k_EDOTAGroupMergeResult_TOO_MANY_PLAYERS": 3, + "k_EDOTAGroupMergeResult_TOO_MANY_COACHES": 4, + "k_EDOTAGroupMergeResult_ENGINE_MISMATCH": 5, + "k_EDOTAGroupMergeResult_NO_SUCH_GROUP": 6, + "k_EDOTAGroupMergeResult_OTHER_GROUP_NOT_OPEN": 7, + "k_EDOTAGroupMergeResult_ALREADY_INVITED": 8, + "k_EDOTAGroupMergeResult_NOT_INVITED": 9, +} + +func (x EDOTAGroupMergeResult) Enum() *EDOTAGroupMergeResult { + p := new(EDOTAGroupMergeResult) + *p = x + return p +} +func (x EDOTAGroupMergeResult) String() string { + return proto.EnumName(EDOTAGroupMergeResult_name, int32(x)) +} +func (x *EDOTAGroupMergeResult) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(EDOTAGroupMergeResult_value, data, "EDOTAGroupMergeResult") + if err != nil { + return err + } + *x = EDOTAGroupMergeResult(value) + return nil +} +func (EDOTAGroupMergeResult) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func init() { + proto.RegisterEnum("ETournamentTemplate", ETournamentTemplate_name, ETournamentTemplate_value) + proto.RegisterEnum("ETournamentGameState", ETournamentGameState_name, ETournamentGameState_value) + proto.RegisterEnum("ETournamentTeamState", ETournamentTeamState_name, ETournamentTeamState_value) + proto.RegisterEnum("ETournamentState", ETournamentState_name, ETournamentState_value) + proto.RegisterEnum("ETournamentNodeState", ETournamentNodeState_name, ETournamentNodeState_value) + proto.RegisterEnum("EDOTAGroupMergeResult", EDOTAGroupMergeResult_name, EDOTAGroupMergeResult_value) +} + +func init() { proto.RegisterFile("dota_client_enums.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 902 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0xd6, 0xdb, 0x6e, 0xdb, 0x36, + 0x18, 0x07, 0xf0, 0xb8, 0xce, 0x91, 0xdb, 0x80, 0x0f, 0x5c, 0xbb, 0x62, 0xc3, 0xda, 0xb5, 0x4d, + 0x73, 0xa8, 0x5b, 0x64, 0x4d, 0xb2, 0xe3, 0xa5, 0x6c, 0x2b, 0xb6, 0xb1, 0x58, 0x0a, 0x64, 0xa5, + 0x41, 0x6e, 0x26, 0x68, 0xe6, 0xd7, 0x48, 0xa8, 0x45, 0x06, 0x12, 0xd5, 0x2e, 0x77, 0x7d, 0x8d, + 0x9d, 0xcf, 0x5b, 0xef, 0xb7, 0x77, 0xd8, 0xcd, 0xde, 0x63, 0x37, 0x7b, 0x88, 0x41, 0x8e, 0x62, + 0xd9, 0x3a, 0x59, 0xd7, 0xfc, 0x99, 0x22, 0xbf, 0x8f, 0xfc, 0xd3, 0xe4, 0x26, 0x13, 0xd2, 0xb6, + 0x86, 0x23, 0x17, 0xb9, 0xb4, 0x90, 0x87, 0x5e, 0xb0, 0x73, 0xee, 0x0b, 0x29, 0x1a, 0x9f, 0x93, + 0x37, 0x55, 0x53, 0x84, 0x3e, 0xb7, 0x3d, 0xe4, 0xd2, 0x44, 0xef, 0x7c, 0x64, 0x4b, 0xa4, 0xb7, + 0xc9, 0x3b, 0xcf, 0xac, 0x9c, 0x01, 0x4b, 0x13, 0x1c, 0x61, 0x81, 0x6e, 0x91, 0xf5, 0xfc, 0x71, + 0x25, 0x94, 0xc2, 0xb3, 0x25, 0xb2, 0x13, 0x97, 0xef, 0x43, 0xad, 0xf1, 0xaa, 0x4e, 0xae, 0x4f, + 0xb9, 0x8e, 0xed, 0xe1, 0x40, 0x46, 0x5f, 0xb8, 0x47, 0x6e, 0xcf, 0xcc, 0x30, 0x19, 0xb1, 0x8e, + 0xf9, 0x33, 0x2e, 0x5e, 0x70, 0x58, 0xa0, 0xeb, 0xe4, 0xbd, 0x02, 0xd3, 0xb2, 0xf9, 0x10, 0x47, + 0xc8, 0xa0, 0x46, 0xef, 0x93, 0x3b, 0x05, 0x68, 0x30, 0x74, 0x90, 0x85, 0x91, 0xba, 0x46, 0xef, + 0x92, 0x5b, 0x05, 0x4a, 0x19, 0x4a, 0xf7, 0x39, 0x42, 0x9d, 0x6e, 0x90, 0xbb, 0x05, 0xc4, 0xb0, + 0xd9, 0x13, 0x77, 0x28, 0x85, 0x7f, 0x01, 0xd7, 0xe9, 0x26, 0xb9, 0x57, 0xc0, 0xda, 0xae, 0x8f, + 0x57, 0xee, 0x06, 0xdd, 0x21, 0x8d, 0xb9, 0xd3, 0x35, 0x2f, 0x0e, 0x84, 0xff, 0x14, 0x5d, 0x09, + 0x6f, 0xd1, 0xf7, 0xc9, 0xc3, 0xf9, 0xf3, 0x26, 0x3f, 0xb8, 0x49, 0xb7, 0xc9, 0xfd, 0xa2, 0x8d, + 0xa3, 0xff, 0x1c, 0xfd, 0x03, 0xdb, 0x1d, 0x85, 0x3e, 0xc2, 0x76, 0x49, 0x89, 0x34, 0x21, 0x35, + 0x44, 0x86, 0x0c, 0x1e, 0x34, 0xfe, 0x5d, 0x9e, 0x69, 0x95, 0x89, 0xb6, 0x97, 0xdf, 0xaa, 0xc9, + 0xc8, 0x54, 0xab, 0xee, 0x90, 0x77, 0x0b, 0x8c, 0x26, 0x18, 0xee, 0x42, 0x8d, 0xae, 0x17, 0xce, + 0x12, 0x89, 0xbe, 0xfd, 0x25, 0xbc, 0x5c, 0xa5, 0x9b, 0xa9, 0x1e, 0x24, 0x48, 0x1d, 0xb9, 0x9e, + 0xcb, 0xa3, 0x93, 0x05, 0x7f, 0x7a, 0x74, 0x23, 0xb5, 0xa3, 0xc4, 0xc5, 0xf5, 0x41, 0x06, 0x7f, + 0x79, 0x74, 0x2b, 0xd5, 0xab, 0x29, 0xe6, 0x72, 0x37, 0x70, 0x90, 0xed, 0x06, 0x12, 0xbe, 0x0a, + 0x2b, 0xc0, 0x3d, 0xce, 0xe0, 0xeb, 0x2a, 0x70, 0xdf, 0x67, 0xf0, 0x4d, 0x15, 0xf8, 0x81, 0x74, + 0xe0, 0xdb, 0x2a, 0xf0, 0x43, 0xe9, 0xc0, 0x77, 0x55, 0xe0, 0x47, 0xd2, 0x81, 0xef, 0xab, 0xc0, + 0x8f, 0xa5, 0x03, 0x3f, 0x54, 0x81, 0x9f, 0x48, 0x07, 0x7e, 0xac, 0x02, 0x3f, 0x95, 0x0e, 0xfc, + 0x14, 0xd2, 0xed, 0x4c, 0x2e, 0x64, 0x0a, 0xfe, 0x58, 0x3a, 0xf0, 0x73, 0x25, 0xb9, 0x2b, 0x1d, + 0xf8, 0xa5, 0x92, 0xdc, 0x93, 0x0e, 0xfc, 0x5a, 0x49, 0xee, 0x4b, 0x07, 0x7e, 0xab, 0x24, 0xa3, + 0xf6, 0xfc, 0x5e, 0x49, 0x46, 0xfd, 0xf9, 0xa3, 0x92, 0x8c, 0x1a, 0xf4, 0x2a, 0x6c, 0xfc, 0x57, + 0x27, 0x30, 0x05, 0x2f, 0x6f, 0x59, 0x3a, 0x72, 0xd3, 0x37, 0x2c, 0x9d, 0x3b, 0xb3, 0x41, 0xd8, + 0xbc, 0x50, 0x98, 0xe7, 0x72, 0xa8, 0x65, 0x6e, 0x62, 0xec, 0x84, 0x77, 0x3e, 0x42, 0x39, 0xce, + 0xc2, 0x5b, 0xe4, 0xed, 0x1c, 0xd1, 0x47, 0xff, 0x0c, 0x19, 0xd4, 0x33, 0x69, 0x91, 0x97, 0x29, + 0x8b, 0x05, 0x2a, 0xda, 0xb3, 0xf2, 0x85, 0xcd, 0x99, 0xe0, 0xc8, 0x60, 0x89, 0x3e, 0x20, 0x1b, + 0x05, 0xca, 0x74, 0x3d, 0x14, 0xa1, 0xbc, 0x8a, 0xb3, 0xe5, 0x4c, 0x9c, 0x65, 0xa8, 0x81, 0x4f, + 0x43, 0xce, 0x60, 0x85, 0xee, 0x91, 0x9d, 0x79, 0x0b, 0xec, 0xf8, 0x36, 0x97, 0x38, 0x49, 0xed, + 0x55, 0xfa, 0x98, 0x3c, 0x2a, 0x9f, 0x3d, 0xf5, 0x8b, 0xb5, 0xcc, 0x8b, 0x71, 0xf9, 0x8b, 0x1e, + 0x3f, 0xf2, 0xc5, 0x99, 0x8f, 0x41, 0x00, 0x2c, 0xf3, 0x62, 0x5c, 0x92, 0x13, 0xdb, 0x95, 0x2e, + 0x3f, 0x33, 0xc5, 0xb8, 0xa2, 0x80, 0x8d, 0x7f, 0x16, 0x67, 0x82, 0x35, 0x8a, 0xbb, 0xfc, 0x60, + 0x9d, 0x8c, 0x94, 0xbc, 0x81, 0x89, 0x99, 0x7a, 0x03, 0xd3, 0x6f, 0x4d, 0x82, 0xa2, 0x1d, 0x06, + 0x9a, 0x90, 0xa7, 0x28, 0x95, 0x20, 0x70, 0xcf, 0xf8, 0xf8, 0x04, 0xa4, 0xdb, 0x92, 0xf8, 0x1e, + 0x6f, 0xa2, 0x7c, 0x81, 0xc8, 0xa3, 0x37, 0x22, 0x80, 0x7a, 0x09, 0x8d, 0xc4, 0x54, 0x39, 0x16, + 0x33, 0x27, 0x2f, 0xa1, 0x8a, 0x75, 0x22, 0x38, 0x2c, 0x95, 0x88, 0xe6, 0x58, 0x2c, 0x97, 0x7c, + 0x6e, 0x3c, 0x47, 0xf2, 0xfe, 0xad, 0x94, 0xd0, 0xe6, 0x2c, 0x5d, 0x2d, 0x5d, 0x59, 0xf3, 0x02, + 0x61, 0x2d, 0x73, 0xbb, 0xa6, 0x45, 0x72, 0xa0, 0x49, 0xe6, 0x94, 0x26, 0x6e, 0xf6, 0x82, 0xbc, + 0x46, 0x1f, 0x92, 0xad, 0xc2, 0x19, 0x53, 0x87, 0xff, 0x75, 0xda, 0x20, 0x9b, 0xf3, 0x70, 0x7c, + 0xfc, 0xdf, 0x68, 0xfc, 0x5d, 0x27, 0x37, 0xd4, 0xb6, 0x6e, 0x2a, 0x1d, 0x5f, 0x84, 0xe7, 0xe3, + 0x43, 0x66, 0x60, 0x10, 0x8e, 0x64, 0x1c, 0x21, 0x79, 0x43, 0x96, 0xfe, 0x19, 0x2c, 0xc4, 0x5f, + 0xc9, 0x1d, 0x3f, 0x50, 0x7a, 0x87, 0x6a, 0xdb, 0xea, 0xa8, 0x9a, 0x6a, 0xf4, 0x5a, 0x50, 0x8b, + 0x0b, 0x92, 0x6b, 0x35, 0xdd, 0xb4, 0x0e, 0x55, 0xa5, 0xad, 0x1a, 0x70, 0x8d, 0x3e, 0x22, 0xdb, + 0x45, 0xce, 0xd4, 0x75, 0xab, 0xaf, 0x68, 0xa7, 0xd6, 0xd1, 0xa1, 0x72, 0xaa, 0x1a, 0x03, 0xa8, + 0x57, 0xd2, 0x2d, 0x5d, 0x69, 0x75, 0xd5, 0x01, 0x2c, 0xc6, 0x25, 0xcc, 0xd5, 0xaa, 0xd6, 0xe9, + 0x69, 0xaa, 0xd5, 0xef, 0x0d, 0xfa, 0x8a, 0xd9, 0xea, 0x4e, 0xa2, 0xa6, 0x60, 0xc1, 0xd6, 0xe0, + 0xb8, 0xd5, 0xb5, 0x3a, 0x86, 0x7e, 0x7c, 0x04, 0xcb, 0x71, 0x18, 0xe4, 0xd7, 0xc9, 0xec, 0xaa, + 0xc6, 0x25, 0x1c, 0xef, 0x53, 0x3f, 0x52, 0x35, 0x58, 0x29, 0x5b, 0x89, 0x72, 0x68, 0xa8, 0x4a, + 0xfb, 0xd4, 0xea, 0x69, 0x4f, 0x7a, 0xa6, 0xda, 0x86, 0xd5, 0xf8, 0xcf, 0x71, 0x61, 0xe9, 0xae, + 0xe0, 0x5a, 0x73, 0xa9, 0x5b, 0x7b, 0x59, 0x5b, 0xf8, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x18, + 0x8d, 0xfb, 0x9d, 0x0b, 0x00, 0x00, +} diff --git a/protocol/dota_gcmessages_client_chat/dota_gcmessages_client_chat.go b/protocol/dota_gcmessages_client_chat/dota_gcmessages_client_chat.go new file mode 100755 index 0000000..490f601 --- /dev/null +++ b/protocol/dota_gcmessages_client_chat/dota_gcmessages_client_chat.go @@ -0,0 +1,1668 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: dota_gcmessages_client_chat.proto + +package dota_gcmessages_client_chat + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import dota_shared_enums "github.com/paralin/go-dota2/protocol/dota_shared_enums" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type CMsgGCToClientPrivateChatResponse_Result int32 + +const ( + CMsgGCToClientPrivateChatResponse_SUCCESS CMsgGCToClientPrivateChatResponse_Result = 0 + CMsgGCToClientPrivateChatResponse_FAILURE_CREATION_LOCK CMsgGCToClientPrivateChatResponse_Result = 1 + CMsgGCToClientPrivateChatResponse_FAILURE_SQL_TRANSACTION CMsgGCToClientPrivateChatResponse_Result = 2 + CMsgGCToClientPrivateChatResponse_FAILURE_SDO_LOAD CMsgGCToClientPrivateChatResponse_Result = 3 + CMsgGCToClientPrivateChatResponse_FAILURE_NO_PERMISSION CMsgGCToClientPrivateChatResponse_Result = 4 + CMsgGCToClientPrivateChatResponse_FAILURE_ALREADY_MEMBER CMsgGCToClientPrivateChatResponse_Result = 5 + CMsgGCToClientPrivateChatResponse_FAILURE_NOT_A_MEMBER CMsgGCToClientPrivateChatResponse_Result = 7 + CMsgGCToClientPrivateChatResponse_FAILURE_NO_REMAINING_ADMINS CMsgGCToClientPrivateChatResponse_Result = 8 + CMsgGCToClientPrivateChatResponse_FAILURE_NO_ROOM CMsgGCToClientPrivateChatResponse_Result = 9 + CMsgGCToClientPrivateChatResponse_FAILURE_CREATION_RATE_LIMITED CMsgGCToClientPrivateChatResponse_Result = 10 + CMsgGCToClientPrivateChatResponse_FAILURE_UNKNOWN_CHANNEL_NAME CMsgGCToClientPrivateChatResponse_Result = 11 + CMsgGCToClientPrivateChatResponse_FAILURE_UNKNOWN_USER CMsgGCToClientPrivateChatResponse_Result = 12 + CMsgGCToClientPrivateChatResponse_FAILURE_UNKNOWN_ERROR CMsgGCToClientPrivateChatResponse_Result = 13 + CMsgGCToClientPrivateChatResponse_FAILURE_CANNOT_KICK_ADMIN CMsgGCToClientPrivateChatResponse_Result = 14 + CMsgGCToClientPrivateChatResponse_FAILURE_ALREADY_ADMIN CMsgGCToClientPrivateChatResponse_Result = 15 +) + +var CMsgGCToClientPrivateChatResponse_Result_name = map[int32]string{ + 0: "SUCCESS", + 1: "FAILURE_CREATION_LOCK", + 2: "FAILURE_SQL_TRANSACTION", + 3: "FAILURE_SDO_LOAD", + 4: "FAILURE_NO_PERMISSION", + 5: "FAILURE_ALREADY_MEMBER", + 7: "FAILURE_NOT_A_MEMBER", + 8: "FAILURE_NO_REMAINING_ADMINS", + 9: "FAILURE_NO_ROOM", + 10: "FAILURE_CREATION_RATE_LIMITED", + 11: "FAILURE_UNKNOWN_CHANNEL_NAME", + 12: "FAILURE_UNKNOWN_USER", + 13: "FAILURE_UNKNOWN_ERROR", + 14: "FAILURE_CANNOT_KICK_ADMIN", + 15: "FAILURE_ALREADY_ADMIN", +} +var CMsgGCToClientPrivateChatResponse_Result_value = map[string]int32{ + "SUCCESS": 0, + "FAILURE_CREATION_LOCK": 1, + "FAILURE_SQL_TRANSACTION": 2, + "FAILURE_SDO_LOAD": 3, + "FAILURE_NO_PERMISSION": 4, + "FAILURE_ALREADY_MEMBER": 5, + "FAILURE_NOT_A_MEMBER": 7, + "FAILURE_NO_REMAINING_ADMINS": 8, + "FAILURE_NO_ROOM": 9, + "FAILURE_CREATION_RATE_LIMITED": 10, + "FAILURE_UNKNOWN_CHANNEL_NAME": 11, + "FAILURE_UNKNOWN_USER": 12, + "FAILURE_UNKNOWN_ERROR": 13, + "FAILURE_CANNOT_KICK_ADMIN": 14, + "FAILURE_ALREADY_ADMIN": 15, +} + +func (x CMsgGCToClientPrivateChatResponse_Result) Enum() *CMsgGCToClientPrivateChatResponse_Result { + p := new(CMsgGCToClientPrivateChatResponse_Result) + *p = x + return p +} +func (x CMsgGCToClientPrivateChatResponse_Result) String() string { + return proto.EnumName(CMsgGCToClientPrivateChatResponse_Result_name, int32(x)) +} +func (x *CMsgGCToClientPrivateChatResponse_Result) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(CMsgGCToClientPrivateChatResponse_Result_value, data, "CMsgGCToClientPrivateChatResponse_Result") + if err != nil { + return err + } + *x = CMsgGCToClientPrivateChatResponse_Result(value) + return nil +} +func (CMsgGCToClientPrivateChatResponse_Result) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{4, 0} +} + +type CMsgDOTAJoinChatChannelResponse_Result int32 + +const ( + CMsgDOTAJoinChatChannelResponse_JOIN_SUCCESS CMsgDOTAJoinChatChannelResponse_Result = 0 + CMsgDOTAJoinChatChannelResponse_INVALID_CHANNEL_TYPE CMsgDOTAJoinChatChannelResponse_Result = 1 + CMsgDOTAJoinChatChannelResponse_ACCOUNT_NOT_FOUND CMsgDOTAJoinChatChannelResponse_Result = 2 + CMsgDOTAJoinChatChannelResponse_ACH_FAILED CMsgDOTAJoinChatChannelResponse_Result = 3 + CMsgDOTAJoinChatChannelResponse_USER_IN_TOO_MANY_CHANNELS CMsgDOTAJoinChatChannelResponse_Result = 4 + CMsgDOTAJoinChatChannelResponse_RATE_LIMIT_EXCEEDED CMsgDOTAJoinChatChannelResponse_Result = 5 + CMsgDOTAJoinChatChannelResponse_CHANNEL_FULL CMsgDOTAJoinChatChannelResponse_Result = 6 + CMsgDOTAJoinChatChannelResponse_CHANNEL_FULL_OVERFLOWED CMsgDOTAJoinChatChannelResponse_Result = 7 + CMsgDOTAJoinChatChannelResponse_FAILED_TO_ADD_USER CMsgDOTAJoinChatChannelResponse_Result = 8 + CMsgDOTAJoinChatChannelResponse_CHANNEL_TYPE_DISABLED CMsgDOTAJoinChatChannelResponse_Result = 9 + CMsgDOTAJoinChatChannelResponse_PRIVATE_CHAT_CREATE_FAILED CMsgDOTAJoinChatChannelResponse_Result = 10 + CMsgDOTAJoinChatChannelResponse_PRIVATE_CHAT_NO_PERMISSION CMsgDOTAJoinChatChannelResponse_Result = 11 + CMsgDOTAJoinChatChannelResponse_PRIVATE_CHAT_CREATE_LOCK_FAILED CMsgDOTAJoinChatChannelResponse_Result = 12 + CMsgDOTAJoinChatChannelResponse_PRIVATE_CHAT_KICKED CMsgDOTAJoinChatChannelResponse_Result = 13 + CMsgDOTAJoinChatChannelResponse_USER_NOT_ALLOWED CMsgDOTAJoinChatChannelResponse_Result = 14 +) + +var CMsgDOTAJoinChatChannelResponse_Result_name = map[int32]string{ + 0: "JOIN_SUCCESS", + 1: "INVALID_CHANNEL_TYPE", + 2: "ACCOUNT_NOT_FOUND", + 3: "ACH_FAILED", + 4: "USER_IN_TOO_MANY_CHANNELS", + 5: "RATE_LIMIT_EXCEEDED", + 6: "CHANNEL_FULL", + 7: "CHANNEL_FULL_OVERFLOWED", + 8: "FAILED_TO_ADD_USER", + 9: "CHANNEL_TYPE_DISABLED", + 10: "PRIVATE_CHAT_CREATE_FAILED", + 11: "PRIVATE_CHAT_NO_PERMISSION", + 12: "PRIVATE_CHAT_CREATE_LOCK_FAILED", + 13: "PRIVATE_CHAT_KICKED", + 14: "USER_NOT_ALLOWED", +} +var CMsgDOTAJoinChatChannelResponse_Result_value = map[string]int32{ + "JOIN_SUCCESS": 0, + "INVALID_CHANNEL_TYPE": 1, + "ACCOUNT_NOT_FOUND": 2, + "ACH_FAILED": 3, + "USER_IN_TOO_MANY_CHANNELS": 4, + "RATE_LIMIT_EXCEEDED": 5, + "CHANNEL_FULL": 6, + "CHANNEL_FULL_OVERFLOWED": 7, + "FAILED_TO_ADD_USER": 8, + "CHANNEL_TYPE_DISABLED": 9, + "PRIVATE_CHAT_CREATE_FAILED": 10, + "PRIVATE_CHAT_NO_PERMISSION": 11, + "PRIVATE_CHAT_CREATE_LOCK_FAILED": 12, + "PRIVATE_CHAT_KICKED": 13, + "USER_NOT_ALLOWED": 14, +} + +func (x CMsgDOTAJoinChatChannelResponse_Result) Enum() *CMsgDOTAJoinChatChannelResponse_Result { + p := new(CMsgDOTAJoinChatChannelResponse_Result) + *p = x + return p +} +func (x CMsgDOTAJoinChatChannelResponse_Result) String() string { + return proto.EnumName(CMsgDOTAJoinChatChannelResponse_Result_name, int32(x)) +} +func (x *CMsgDOTAJoinChatChannelResponse_Result) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(CMsgDOTAJoinChatChannelResponse_Result_value, data, "CMsgDOTAJoinChatChannelResponse_Result") + if err != nil { + return err + } + *x = CMsgDOTAJoinChatChannelResponse_Result(value) + return nil +} +func (CMsgDOTAJoinChatChannelResponse_Result) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{13, 0} +} + +type CMsgClientToGCPrivateChatInvite struct { + PrivateChatChannelName *string `protobuf:"bytes,1,opt,name=private_chat_channel_name,json=privateChatChannelName" json:"private_chat_channel_name,omitempty"` + InvitedAccountId *uint32 `protobuf:"varint,2,opt,name=invited_account_id,json=invitedAccountId" json:"invited_account_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgClientToGCPrivateChatInvite) Reset() { *m = CMsgClientToGCPrivateChatInvite{} } +func (m *CMsgClientToGCPrivateChatInvite) String() string { return proto.CompactTextString(m) } +func (*CMsgClientToGCPrivateChatInvite) ProtoMessage() {} +func (*CMsgClientToGCPrivateChatInvite) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *CMsgClientToGCPrivateChatInvite) GetPrivateChatChannelName() string { + if m != nil && m.PrivateChatChannelName != nil { + return *m.PrivateChatChannelName + } + return "" +} + +func (m *CMsgClientToGCPrivateChatInvite) GetInvitedAccountId() uint32 { + if m != nil && m.InvitedAccountId != nil { + return *m.InvitedAccountId + } + return 0 +} + +type CMsgClientToGCPrivateChatKick struct { + PrivateChatChannelName *string `protobuf:"bytes,1,opt,name=private_chat_channel_name,json=privateChatChannelName" json:"private_chat_channel_name,omitempty"` + KickAccountId *uint32 `protobuf:"varint,2,opt,name=kick_account_id,json=kickAccountId" json:"kick_account_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgClientToGCPrivateChatKick) Reset() { *m = CMsgClientToGCPrivateChatKick{} } +func (m *CMsgClientToGCPrivateChatKick) String() string { return proto.CompactTextString(m) } +func (*CMsgClientToGCPrivateChatKick) ProtoMessage() {} +func (*CMsgClientToGCPrivateChatKick) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *CMsgClientToGCPrivateChatKick) GetPrivateChatChannelName() string { + if m != nil && m.PrivateChatChannelName != nil { + return *m.PrivateChatChannelName + } + return "" +} + +func (m *CMsgClientToGCPrivateChatKick) GetKickAccountId() uint32 { + if m != nil && m.KickAccountId != nil { + return *m.KickAccountId + } + return 0 +} + +type CMsgClientToGCPrivateChatPromote struct { + PrivateChatChannelName *string `protobuf:"bytes,1,opt,name=private_chat_channel_name,json=privateChatChannelName" json:"private_chat_channel_name,omitempty"` + PromoteAccountId *uint32 `protobuf:"varint,2,opt,name=promote_account_id,json=promoteAccountId" json:"promote_account_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgClientToGCPrivateChatPromote) Reset() { *m = CMsgClientToGCPrivateChatPromote{} } +func (m *CMsgClientToGCPrivateChatPromote) String() string { return proto.CompactTextString(m) } +func (*CMsgClientToGCPrivateChatPromote) ProtoMessage() {} +func (*CMsgClientToGCPrivateChatPromote) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{2} +} + +func (m *CMsgClientToGCPrivateChatPromote) GetPrivateChatChannelName() string { + if m != nil && m.PrivateChatChannelName != nil { + return *m.PrivateChatChannelName + } + return "" +} + +func (m *CMsgClientToGCPrivateChatPromote) GetPromoteAccountId() uint32 { + if m != nil && m.PromoteAccountId != nil { + return *m.PromoteAccountId + } + return 0 +} + +type CMsgClientToGCPrivateChatDemote struct { + PrivateChatChannelName *string `protobuf:"bytes,1,opt,name=private_chat_channel_name,json=privateChatChannelName" json:"private_chat_channel_name,omitempty"` + DemoteAccountId *uint32 `protobuf:"varint,2,opt,name=demote_account_id,json=demoteAccountId" json:"demote_account_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgClientToGCPrivateChatDemote) Reset() { *m = CMsgClientToGCPrivateChatDemote{} } +func (m *CMsgClientToGCPrivateChatDemote) String() string { return proto.CompactTextString(m) } +func (*CMsgClientToGCPrivateChatDemote) ProtoMessage() {} +func (*CMsgClientToGCPrivateChatDemote) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +func (m *CMsgClientToGCPrivateChatDemote) GetPrivateChatChannelName() string { + if m != nil && m.PrivateChatChannelName != nil { + return *m.PrivateChatChannelName + } + return "" +} + +func (m *CMsgClientToGCPrivateChatDemote) GetDemoteAccountId() uint32 { + if m != nil && m.DemoteAccountId != nil { + return *m.DemoteAccountId + } + return 0 +} + +type CMsgGCToClientPrivateChatResponse struct { + PrivateChatChannelName *string `protobuf:"bytes,1,opt,name=private_chat_channel_name,json=privateChatChannelName" json:"private_chat_channel_name,omitempty"` + Result *CMsgGCToClientPrivateChatResponse_Result `protobuf:"varint,2,opt,name=result,enum=CMsgGCToClientPrivateChatResponse_Result,def=0" json:"result,omitempty"` + Username *string `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgGCToClientPrivateChatResponse) Reset() { *m = CMsgGCToClientPrivateChatResponse{} } +func (m *CMsgGCToClientPrivateChatResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgGCToClientPrivateChatResponse) ProtoMessage() {} +func (*CMsgGCToClientPrivateChatResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{4} +} + +const Default_CMsgGCToClientPrivateChatResponse_Result CMsgGCToClientPrivateChatResponse_Result = CMsgGCToClientPrivateChatResponse_SUCCESS + +func (m *CMsgGCToClientPrivateChatResponse) GetPrivateChatChannelName() string { + if m != nil && m.PrivateChatChannelName != nil { + return *m.PrivateChatChannelName + } + return "" +} + +func (m *CMsgGCToClientPrivateChatResponse) GetResult() CMsgGCToClientPrivateChatResponse_Result { + if m != nil && m.Result != nil { + return *m.Result + } + return Default_CMsgGCToClientPrivateChatResponse_Result +} + +func (m *CMsgGCToClientPrivateChatResponse) GetUsername() string { + if m != nil && m.Username != nil { + return *m.Username + } + return "" +} + +type CMsgClientToGCPrivateChatInfoRequest struct { + PrivateChatChannelName *string `protobuf:"bytes,1,opt,name=private_chat_channel_name,json=privateChatChannelName" json:"private_chat_channel_name,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgClientToGCPrivateChatInfoRequest) Reset() { *m = CMsgClientToGCPrivateChatInfoRequest{} } +func (m *CMsgClientToGCPrivateChatInfoRequest) String() string { return proto.CompactTextString(m) } +func (*CMsgClientToGCPrivateChatInfoRequest) ProtoMessage() {} +func (*CMsgClientToGCPrivateChatInfoRequest) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{5} +} + +func (m *CMsgClientToGCPrivateChatInfoRequest) GetPrivateChatChannelName() string { + if m != nil && m.PrivateChatChannelName != nil { + return *m.PrivateChatChannelName + } + return "" +} + +type CMsgGCToClientPrivateChatInfoResponse struct { + PrivateChatChannelName *string `protobuf:"bytes,1,opt,name=private_chat_channel_name,json=privateChatChannelName" json:"private_chat_channel_name,omitempty"` + Members []*CMsgGCToClientPrivateChatInfoResponse_Member `protobuf:"bytes,2,rep,name=members" json:"members,omitempty"` + Creator *uint32 `protobuf:"varint,3,opt,name=creator" json:"creator,omitempty"` + CreationDate *uint32 `protobuf:"varint,4,opt,name=creation_date,json=creationDate" json:"creation_date,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgGCToClientPrivateChatInfoResponse) Reset() { *m = CMsgGCToClientPrivateChatInfoResponse{} } +func (m *CMsgGCToClientPrivateChatInfoResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgGCToClientPrivateChatInfoResponse) ProtoMessage() {} +func (*CMsgGCToClientPrivateChatInfoResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{6} +} + +func (m *CMsgGCToClientPrivateChatInfoResponse) GetPrivateChatChannelName() string { + if m != nil && m.PrivateChatChannelName != nil { + return *m.PrivateChatChannelName + } + return "" +} + +func (m *CMsgGCToClientPrivateChatInfoResponse) GetMembers() []*CMsgGCToClientPrivateChatInfoResponse_Member { + if m != nil { + return m.Members + } + return nil +} + +func (m *CMsgGCToClientPrivateChatInfoResponse) GetCreator() uint32 { + if m != nil && m.Creator != nil { + return *m.Creator + } + return 0 +} + +func (m *CMsgGCToClientPrivateChatInfoResponse) GetCreationDate() uint32 { + if m != nil && m.CreationDate != nil { + return *m.CreationDate + } + return 0 +} + +type CMsgGCToClientPrivateChatInfoResponse_Member struct { + AccountId *uint32 `protobuf:"varint,1,opt,name=account_id,json=accountId" json:"account_id,omitempty"` + Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` + Status *uint32 `protobuf:"varint,3,opt,name=status" json:"status,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgGCToClientPrivateChatInfoResponse_Member) Reset() { + *m = CMsgGCToClientPrivateChatInfoResponse_Member{} +} +func (m *CMsgGCToClientPrivateChatInfoResponse_Member) String() string { + return proto.CompactTextString(m) +} +func (*CMsgGCToClientPrivateChatInfoResponse_Member) ProtoMessage() {} +func (*CMsgGCToClientPrivateChatInfoResponse_Member) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{6, 0} +} + +func (m *CMsgGCToClientPrivateChatInfoResponse_Member) GetAccountId() uint32 { + if m != nil && m.AccountId != nil { + return *m.AccountId + } + return 0 +} + +func (m *CMsgGCToClientPrivateChatInfoResponse_Member) GetName() string { + if m != nil && m.Name != nil { + return *m.Name + } + return "" +} + +func (m *CMsgGCToClientPrivateChatInfoResponse_Member) GetStatus() uint32 { + if m != nil && m.Status != nil { + return *m.Status + } + return 0 +} + +type CMsgDOTAJoinChatChannel struct { + ChannelName *string `protobuf:"bytes,2,opt,name=channel_name,json=channelName" json:"channel_name,omitempty"` + ChannelType *dota_shared_enums.DOTAChatChannelTypeT `protobuf:"varint,4,opt,name=channel_type,json=channelType,enum=DOTAChatChannelTypeT,def=0" json:"channel_type,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAJoinChatChannel) Reset() { *m = CMsgDOTAJoinChatChannel{} } +func (m *CMsgDOTAJoinChatChannel) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAJoinChatChannel) ProtoMessage() {} +func (*CMsgDOTAJoinChatChannel) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } + +const Default_CMsgDOTAJoinChatChannel_ChannelType dota_shared_enums.DOTAChatChannelTypeT = dota_shared_enums.DOTAChatChannelTypeT_DOTAChannelType_Regional + +func (m *CMsgDOTAJoinChatChannel) GetChannelName() string { + if m != nil && m.ChannelName != nil { + return *m.ChannelName + } + return "" +} + +func (m *CMsgDOTAJoinChatChannel) GetChannelType() dota_shared_enums.DOTAChatChannelTypeT { + if m != nil && m.ChannelType != nil { + return *m.ChannelType + } + return Default_CMsgDOTAJoinChatChannel_ChannelType +} + +type CMsgDOTALeaveChatChannel struct { + ChannelId *uint64 `protobuf:"varint,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTALeaveChatChannel) Reset() { *m = CMsgDOTALeaveChatChannel{} } +func (m *CMsgDOTALeaveChatChannel) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTALeaveChatChannel) ProtoMessage() {} +func (*CMsgDOTALeaveChatChannel) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } + +func (m *CMsgDOTALeaveChatChannel) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +type CMsgGCChatReportPublicSpam struct { + ChannelId *uint64 `protobuf:"varint,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + ChannelUserId *uint32 `protobuf:"varint,2,opt,name=channel_user_id,json=channelUserId" json:"channel_user_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgGCChatReportPublicSpam) Reset() { *m = CMsgGCChatReportPublicSpam{} } +func (m *CMsgGCChatReportPublicSpam) String() string { return proto.CompactTextString(m) } +func (*CMsgGCChatReportPublicSpam) ProtoMessage() {} +func (*CMsgGCChatReportPublicSpam) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } + +func (m *CMsgGCChatReportPublicSpam) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +func (m *CMsgGCChatReportPublicSpam) GetChannelUserId() uint32 { + if m != nil && m.ChannelUserId != nil { + return *m.ChannelUserId + } + return 0 +} + +type CMsgDOTAClientIgnoredUser struct { + IgnoredAccountId *uint32 `protobuf:"varint,1,opt,name=ignored_account_id,json=ignoredAccountId" json:"ignored_account_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAClientIgnoredUser) Reset() { *m = CMsgDOTAClientIgnoredUser{} } +func (m *CMsgDOTAClientIgnoredUser) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAClientIgnoredUser) ProtoMessage() {} +func (*CMsgDOTAClientIgnoredUser) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } + +func (m *CMsgDOTAClientIgnoredUser) GetIgnoredAccountId() uint32 { + if m != nil && m.IgnoredAccountId != nil { + return *m.IgnoredAccountId + } + return 0 +} + +type CMsgDOTAChatMessage struct { + AccountId *uint32 `protobuf:"varint,1,opt,name=account_id,json=accountId" json:"account_id,omitempty"` + ChannelId *uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + PersonaName *string `protobuf:"bytes,3,opt,name=persona_name,json=personaName" json:"persona_name,omitempty"` + Text *string `protobuf:"bytes,4,opt,name=text" json:"text,omitempty"` + Timestamp *uint32 `protobuf:"varint,5,opt,name=timestamp" json:"timestamp,omitempty"` + SuggestInviteAccountId *uint32 `protobuf:"varint,6,opt,name=suggest_invite_account_id,json=suggestInviteAccountId" json:"suggest_invite_account_id,omitempty"` + SuggestInviteName *string `protobuf:"bytes,7,opt,name=suggest_invite_name,json=suggestInviteName" json:"suggest_invite_name,omitempty"` + FantasyDraftOwnerAccountId *uint32 `protobuf:"varint,8,opt,name=fantasy_draft_owner_account_id,json=fantasyDraftOwnerAccountId" json:"fantasy_draft_owner_account_id,omitempty"` + FantasyDraftPlayerAccountId *uint32 `protobuf:"varint,9,opt,name=fantasy_draft_player_account_id,json=fantasyDraftPlayerAccountId" json:"fantasy_draft_player_account_id,omitempty"` + EventId *uint32 `protobuf:"varint,10,opt,name=event_id,json=eventId" json:"event_id,omitempty"` + SuggestInviteToLobby *bool `protobuf:"varint,11,opt,name=suggest_invite_to_lobby,json=suggestInviteToLobby" json:"suggest_invite_to_lobby,omitempty"` + EventPoints *uint32 `protobuf:"varint,12,opt,name=event_points,json=eventPoints" json:"event_points,omitempty"` + CoinFlip *bool `protobuf:"varint,13,opt,name=coin_flip,json=coinFlip" json:"coin_flip,omitempty"` + PlayerId *int32 `protobuf:"varint,14,opt,name=player_id,json=playerId,def=-1" json:"player_id,omitempty"` + ShareProfileAccountId *uint32 `protobuf:"varint,15,opt,name=share_profile_account_id,json=shareProfileAccountId" json:"share_profile_account_id,omitempty"` + ChannelUserId *uint32 `protobuf:"varint,16,opt,name=channel_user_id,json=channelUserId" json:"channel_user_id,omitempty"` + DiceRoll *CMsgDOTAChatMessage_DiceRoll `protobuf:"bytes,17,opt,name=dice_roll,json=diceRoll" json:"dice_roll,omitempty"` + SharePartyId *uint64 `protobuf:"varint,18,opt,name=share_party_id,json=sharePartyId" json:"share_party_id,omitempty"` + ShareLobbyId *uint64 `protobuf:"varint,19,opt,name=share_lobby_id,json=shareLobbyId" json:"share_lobby_id,omitempty"` + ShareLobbyCustomGameId *uint64 `protobuf:"varint,20,opt,name=share_lobby_custom_game_id,json=shareLobbyCustomGameId" json:"share_lobby_custom_game_id,omitempty"` + ShareLobbyPasskey *string `protobuf:"bytes,21,opt,name=share_lobby_passkey,json=shareLobbyPasskey" json:"share_lobby_passkey,omitempty"` + PrivateChatChannelId *uint32 `protobuf:"varint,22,opt,name=private_chat_channel_id,json=privateChatChannelId" json:"private_chat_channel_id,omitempty"` + Status *uint32 `protobuf:"varint,23,opt,name=status" json:"status,omitempty"` + LegacyBattleCupVictory *bool `protobuf:"varint,24,opt,name=legacy_battle_cup_victory,json=legacyBattleCupVictory" json:"legacy_battle_cup_victory,omitempty"` + BattleCupStreak *uint32 `protobuf:"varint,29,opt,name=battle_cup_streak,json=battleCupStreak" json:"battle_cup_streak,omitempty"` + BadgeLevel *uint32 `protobuf:"varint,25,opt,name=badge_level,json=badgeLevel" json:"badge_level,omitempty"` + SuggestPickHeroId *uint32 `protobuf:"varint,26,opt,name=suggest_pick_hero_id,json=suggestPickHeroId" json:"suggest_pick_hero_id,omitempty"` + SuggestPickHeroRole *string `protobuf:"bytes,27,opt,name=suggest_pick_hero_role,json=suggestPickHeroRole" json:"suggest_pick_hero_role,omitempty"` + SuggestBanHeroId *uint32 `protobuf:"varint,30,opt,name=suggest_ban_hero_id,json=suggestBanHeroId" json:"suggest_ban_hero_id,omitempty"` + Terse *bool `protobuf:"varint,28,opt,name=terse" json:"terse,omitempty"` + IgnoreMuted *bool `protobuf:"varint,31,opt,name=ignore_muted,json=ignoreMuted" json:"ignore_muted,omitempty"` + TriviaAnswer *CMsgDOTAChatMessage_TriviaAnswered `protobuf:"bytes,32,opt,name=trivia_answer,json=triviaAnswer" json:"trivia_answer,omitempty"` + RequestedAbilityId *uint32 `protobuf:"varint,33,opt,name=requested_ability_id,json=requestedAbilityId" json:"requested_ability_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatMessage) Reset() { *m = CMsgDOTAChatMessage{} } +func (m *CMsgDOTAChatMessage) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatMessage) ProtoMessage() {} +func (*CMsgDOTAChatMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } + +const Default_CMsgDOTAChatMessage_PlayerId int32 = -1 + +func (m *CMsgDOTAChatMessage) GetAccountId() uint32 { + if m != nil && m.AccountId != nil { + return *m.AccountId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetPersonaName() string { + if m != nil && m.PersonaName != nil { + return *m.PersonaName + } + return "" +} + +func (m *CMsgDOTAChatMessage) GetText() string { + if m != nil && m.Text != nil { + return *m.Text + } + return "" +} + +func (m *CMsgDOTAChatMessage) GetTimestamp() uint32 { + if m != nil && m.Timestamp != nil { + return *m.Timestamp + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetSuggestInviteAccountId() uint32 { + if m != nil && m.SuggestInviteAccountId != nil { + return *m.SuggestInviteAccountId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetSuggestInviteName() string { + if m != nil && m.SuggestInviteName != nil { + return *m.SuggestInviteName + } + return "" +} + +func (m *CMsgDOTAChatMessage) GetFantasyDraftOwnerAccountId() uint32 { + if m != nil && m.FantasyDraftOwnerAccountId != nil { + return *m.FantasyDraftOwnerAccountId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetFantasyDraftPlayerAccountId() uint32 { + if m != nil && m.FantasyDraftPlayerAccountId != nil { + return *m.FantasyDraftPlayerAccountId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetEventId() uint32 { + if m != nil && m.EventId != nil { + return *m.EventId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetSuggestInviteToLobby() bool { + if m != nil && m.SuggestInviteToLobby != nil { + return *m.SuggestInviteToLobby + } + return false +} + +func (m *CMsgDOTAChatMessage) GetEventPoints() uint32 { + if m != nil && m.EventPoints != nil { + return *m.EventPoints + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetCoinFlip() bool { + if m != nil && m.CoinFlip != nil { + return *m.CoinFlip + } + return false +} + +func (m *CMsgDOTAChatMessage) GetPlayerId() int32 { + if m != nil && m.PlayerId != nil { + return *m.PlayerId + } + return Default_CMsgDOTAChatMessage_PlayerId +} + +func (m *CMsgDOTAChatMessage) GetShareProfileAccountId() uint32 { + if m != nil && m.ShareProfileAccountId != nil { + return *m.ShareProfileAccountId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetChannelUserId() uint32 { + if m != nil && m.ChannelUserId != nil { + return *m.ChannelUserId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetDiceRoll() *CMsgDOTAChatMessage_DiceRoll { + if m != nil { + return m.DiceRoll + } + return nil +} + +func (m *CMsgDOTAChatMessage) GetSharePartyId() uint64 { + if m != nil && m.SharePartyId != nil { + return *m.SharePartyId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetShareLobbyId() uint64 { + if m != nil && m.ShareLobbyId != nil { + return *m.ShareLobbyId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetShareLobbyCustomGameId() uint64 { + if m != nil && m.ShareLobbyCustomGameId != nil { + return *m.ShareLobbyCustomGameId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetShareLobbyPasskey() string { + if m != nil && m.ShareLobbyPasskey != nil { + return *m.ShareLobbyPasskey + } + return "" +} + +func (m *CMsgDOTAChatMessage) GetPrivateChatChannelId() uint32 { + if m != nil && m.PrivateChatChannelId != nil { + return *m.PrivateChatChannelId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetStatus() uint32 { + if m != nil && m.Status != nil { + return *m.Status + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetLegacyBattleCupVictory() bool { + if m != nil && m.LegacyBattleCupVictory != nil { + return *m.LegacyBattleCupVictory + } + return false +} + +func (m *CMsgDOTAChatMessage) GetBattleCupStreak() uint32 { + if m != nil && m.BattleCupStreak != nil { + return *m.BattleCupStreak + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetBadgeLevel() uint32 { + if m != nil && m.BadgeLevel != nil { + return *m.BadgeLevel + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetSuggestPickHeroId() uint32 { + if m != nil && m.SuggestPickHeroId != nil { + return *m.SuggestPickHeroId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetSuggestPickHeroRole() string { + if m != nil && m.SuggestPickHeroRole != nil { + return *m.SuggestPickHeroRole + } + return "" +} + +func (m *CMsgDOTAChatMessage) GetSuggestBanHeroId() uint32 { + if m != nil && m.SuggestBanHeroId != nil { + return *m.SuggestBanHeroId + } + return 0 +} + +func (m *CMsgDOTAChatMessage) GetTerse() bool { + if m != nil && m.Terse != nil { + return *m.Terse + } + return false +} + +func (m *CMsgDOTAChatMessage) GetIgnoreMuted() bool { + if m != nil && m.IgnoreMuted != nil { + return *m.IgnoreMuted + } + return false +} + +func (m *CMsgDOTAChatMessage) GetTriviaAnswer() *CMsgDOTAChatMessage_TriviaAnswered { + if m != nil { + return m.TriviaAnswer + } + return nil +} + +func (m *CMsgDOTAChatMessage) GetRequestedAbilityId() uint32 { + if m != nil && m.RequestedAbilityId != nil { + return *m.RequestedAbilityId + } + return 0 +} + +type CMsgDOTAChatMessage_DiceRoll struct { + RollMin *int32 `protobuf:"varint,1,opt,name=roll_min,json=rollMin" json:"roll_min,omitempty"` + RollMax *int32 `protobuf:"varint,2,opt,name=roll_max,json=rollMax" json:"roll_max,omitempty"` + Result *int32 `protobuf:"varint,3,opt,name=result" json:"result,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatMessage_DiceRoll) Reset() { *m = CMsgDOTAChatMessage_DiceRoll{} } +func (m *CMsgDOTAChatMessage_DiceRoll) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatMessage_DiceRoll) ProtoMessage() {} +func (*CMsgDOTAChatMessage_DiceRoll) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{11, 0} +} + +func (m *CMsgDOTAChatMessage_DiceRoll) GetRollMin() int32 { + if m != nil && m.RollMin != nil { + return *m.RollMin + } + return 0 +} + +func (m *CMsgDOTAChatMessage_DiceRoll) GetRollMax() int32 { + if m != nil && m.RollMax != nil { + return *m.RollMax + } + return 0 +} + +func (m *CMsgDOTAChatMessage_DiceRoll) GetResult() int32 { + if m != nil && m.Result != nil { + return *m.Result + } + return 0 +} + +type CMsgDOTAChatMessage_TriviaAnswered struct { + QuestionId *uint32 `protobuf:"varint,1,opt,name=question_id,json=questionId" json:"question_id,omitempty"` + AnswerIndex *uint32 `protobuf:"varint,2,opt,name=answer_index,json=answerIndex" json:"answer_index,omitempty"` + PartyQuestionsCorrect *uint32 `protobuf:"varint,3,opt,name=party_questions_correct,json=partyQuestionsCorrect" json:"party_questions_correct,omitempty"` + PartyQuestionsViewed *uint32 `protobuf:"varint,4,opt,name=party_questions_viewed,json=partyQuestionsViewed" json:"party_questions_viewed,omitempty"` + PartyTriviaPoints *uint32 `protobuf:"varint,5,opt,name=party_trivia_points,json=partyTriviaPoints" json:"party_trivia_points,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatMessage_TriviaAnswered) Reset() { *m = CMsgDOTAChatMessage_TriviaAnswered{} } +func (m *CMsgDOTAChatMessage_TriviaAnswered) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatMessage_TriviaAnswered) ProtoMessage() {} +func (*CMsgDOTAChatMessage_TriviaAnswered) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{11, 1} +} + +func (m *CMsgDOTAChatMessage_TriviaAnswered) GetQuestionId() uint32 { + if m != nil && m.QuestionId != nil { + return *m.QuestionId + } + return 0 +} + +func (m *CMsgDOTAChatMessage_TriviaAnswered) GetAnswerIndex() uint32 { + if m != nil && m.AnswerIndex != nil { + return *m.AnswerIndex + } + return 0 +} + +func (m *CMsgDOTAChatMessage_TriviaAnswered) GetPartyQuestionsCorrect() uint32 { + if m != nil && m.PartyQuestionsCorrect != nil { + return *m.PartyQuestionsCorrect + } + return 0 +} + +func (m *CMsgDOTAChatMessage_TriviaAnswered) GetPartyQuestionsViewed() uint32 { + if m != nil && m.PartyQuestionsViewed != nil { + return *m.PartyQuestionsViewed + } + return 0 +} + +func (m *CMsgDOTAChatMessage_TriviaAnswered) GetPartyTriviaPoints() uint32 { + if m != nil && m.PartyTriviaPoints != nil { + return *m.PartyTriviaPoints + } + return 0 +} + +type CMsgDOTAChatMember struct { + SteamId *uint64 `protobuf:"fixed64,1,opt,name=steam_id,json=steamId" json:"steam_id,omitempty"` + PersonaName *string `protobuf:"bytes,2,opt,name=persona_name,json=personaName" json:"persona_name,omitempty"` + ChannelUserId *uint32 `protobuf:"varint,3,opt,name=channel_user_id,json=channelUserId" json:"channel_user_id,omitempty"` + Status *uint32 `protobuf:"varint,4,opt,name=status" json:"status,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatMember) Reset() { *m = CMsgDOTAChatMember{} } +func (m *CMsgDOTAChatMember) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatMember) ProtoMessage() {} +func (*CMsgDOTAChatMember) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } + +func (m *CMsgDOTAChatMember) GetSteamId() uint64 { + if m != nil && m.SteamId != nil { + return *m.SteamId + } + return 0 +} + +func (m *CMsgDOTAChatMember) GetPersonaName() string { + if m != nil && m.PersonaName != nil { + return *m.PersonaName + } + return "" +} + +func (m *CMsgDOTAChatMember) GetChannelUserId() uint32 { + if m != nil && m.ChannelUserId != nil { + return *m.ChannelUserId + } + return 0 +} + +func (m *CMsgDOTAChatMember) GetStatus() uint32 { + if m != nil && m.Status != nil { + return *m.Status + } + return 0 +} + +type CMsgDOTAJoinChatChannelResponse struct { + Response *uint32 `protobuf:"varint,1,opt,name=response" json:"response,omitempty"` + ChannelName *string `protobuf:"bytes,2,opt,name=channel_name,json=channelName" json:"channel_name,omitempty"` + ChannelId *uint64 `protobuf:"fixed64,3,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + MaxMembers *uint32 `protobuf:"varint,4,opt,name=max_members,json=maxMembers" json:"max_members,omitempty"` + Members []*CMsgDOTAChatMember `protobuf:"bytes,5,rep,name=members" json:"members,omitempty"` + ChannelType *dota_shared_enums.DOTAChatChannelTypeT `protobuf:"varint,6,opt,name=channel_type,json=channelType,enum=DOTAChatChannelTypeT,def=0" json:"channel_type,omitempty"` + Result *CMsgDOTAJoinChatChannelResponse_Result `protobuf:"varint,7,opt,name=result,enum=CMsgDOTAJoinChatChannelResponse_Result,def=0" json:"result,omitempty"` + GcInitiatedJoin *bool `protobuf:"varint,8,opt,name=gc_initiated_join,json=gcInitiatedJoin" json:"gc_initiated_join,omitempty"` + ChannelUserId *uint32 `protobuf:"varint,9,opt,name=channel_user_id,json=channelUserId" json:"channel_user_id,omitempty"` + WelcomeMessage *string `protobuf:"bytes,10,opt,name=welcome_message,json=welcomeMessage" json:"welcome_message,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAJoinChatChannelResponse) Reset() { *m = CMsgDOTAJoinChatChannelResponse{} } +func (m *CMsgDOTAJoinChatChannelResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAJoinChatChannelResponse) ProtoMessage() {} +func (*CMsgDOTAJoinChatChannelResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{13} +} + +const Default_CMsgDOTAJoinChatChannelResponse_ChannelType dota_shared_enums.DOTAChatChannelTypeT = dota_shared_enums.DOTAChatChannelTypeT_DOTAChannelType_Regional +const Default_CMsgDOTAJoinChatChannelResponse_Result CMsgDOTAJoinChatChannelResponse_Result = CMsgDOTAJoinChatChannelResponse_JOIN_SUCCESS + +func (m *CMsgDOTAJoinChatChannelResponse) GetResponse() uint32 { + if m != nil && m.Response != nil { + return *m.Response + } + return 0 +} + +func (m *CMsgDOTAJoinChatChannelResponse) GetChannelName() string { + if m != nil && m.ChannelName != nil { + return *m.ChannelName + } + return "" +} + +func (m *CMsgDOTAJoinChatChannelResponse) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +func (m *CMsgDOTAJoinChatChannelResponse) GetMaxMembers() uint32 { + if m != nil && m.MaxMembers != nil { + return *m.MaxMembers + } + return 0 +} + +func (m *CMsgDOTAJoinChatChannelResponse) GetMembers() []*CMsgDOTAChatMember { + if m != nil { + return m.Members + } + return nil +} + +func (m *CMsgDOTAJoinChatChannelResponse) GetChannelType() dota_shared_enums.DOTAChatChannelTypeT { + if m != nil && m.ChannelType != nil { + return *m.ChannelType + } + return Default_CMsgDOTAJoinChatChannelResponse_ChannelType +} + +func (m *CMsgDOTAJoinChatChannelResponse) GetResult() CMsgDOTAJoinChatChannelResponse_Result { + if m != nil && m.Result != nil { + return *m.Result + } + return Default_CMsgDOTAJoinChatChannelResponse_Result +} + +func (m *CMsgDOTAJoinChatChannelResponse) GetGcInitiatedJoin() bool { + if m != nil && m.GcInitiatedJoin != nil { + return *m.GcInitiatedJoin + } + return false +} + +func (m *CMsgDOTAJoinChatChannelResponse) GetChannelUserId() uint32 { + if m != nil && m.ChannelUserId != nil { + return *m.ChannelUserId + } + return 0 +} + +func (m *CMsgDOTAJoinChatChannelResponse) GetWelcomeMessage() string { + if m != nil && m.WelcomeMessage != nil { + return *m.WelcomeMessage + } + return "" +} + +type CMsgDOTAChatChannelFullUpdate struct { + ChannelId *uint64 `protobuf:"fixed64,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + Members []*CMsgDOTAChatMember `protobuf:"bytes,2,rep,name=members" json:"members,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatChannelFullUpdate) Reset() { *m = CMsgDOTAChatChannelFullUpdate{} } +func (m *CMsgDOTAChatChannelFullUpdate) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatChannelFullUpdate) ProtoMessage() {} +func (*CMsgDOTAChatChannelFullUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } + +func (m *CMsgDOTAChatChannelFullUpdate) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +func (m *CMsgDOTAChatChannelFullUpdate) GetMembers() []*CMsgDOTAChatMember { + if m != nil { + return m.Members + } + return nil +} + +type CMsgDOTAOtherJoinedChatChannel struct { + ChannelId *uint64 `protobuf:"fixed64,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + PersonaName *string `protobuf:"bytes,2,opt,name=persona_name,json=personaName" json:"persona_name,omitempty"` + SteamId *uint64 `protobuf:"fixed64,3,opt,name=steam_id,json=steamId" json:"steam_id,omitempty"` + ChannelUserId *uint32 `protobuf:"varint,4,opt,name=channel_user_id,json=channelUserId" json:"channel_user_id,omitempty"` + Status *uint32 `protobuf:"varint,5,opt,name=status" json:"status,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAOtherJoinedChatChannel) Reset() { *m = CMsgDOTAOtherJoinedChatChannel{} } +func (m *CMsgDOTAOtherJoinedChatChannel) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAOtherJoinedChatChannel) ProtoMessage() {} +func (*CMsgDOTAOtherJoinedChatChannel) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } + +func (m *CMsgDOTAOtherJoinedChatChannel) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +func (m *CMsgDOTAOtherJoinedChatChannel) GetPersonaName() string { + if m != nil && m.PersonaName != nil { + return *m.PersonaName + } + return "" +} + +func (m *CMsgDOTAOtherJoinedChatChannel) GetSteamId() uint64 { + if m != nil && m.SteamId != nil { + return *m.SteamId + } + return 0 +} + +func (m *CMsgDOTAOtherJoinedChatChannel) GetChannelUserId() uint32 { + if m != nil && m.ChannelUserId != nil { + return *m.ChannelUserId + } + return 0 +} + +func (m *CMsgDOTAOtherJoinedChatChannel) GetStatus() uint32 { + if m != nil && m.Status != nil { + return *m.Status + } + return 0 +} + +type CMsgDOTAOtherLeftChatChannel struct { + ChannelId *uint64 `protobuf:"fixed64,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + SteamId *uint64 `protobuf:"fixed64,2,opt,name=steam_id,json=steamId" json:"steam_id,omitempty"` + ChannelUserId *uint32 `protobuf:"varint,3,opt,name=channel_user_id,json=channelUserId" json:"channel_user_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAOtherLeftChatChannel) Reset() { *m = CMsgDOTAOtherLeftChatChannel{} } +func (m *CMsgDOTAOtherLeftChatChannel) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAOtherLeftChatChannel) ProtoMessage() {} +func (*CMsgDOTAOtherLeftChatChannel) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } + +func (m *CMsgDOTAOtherLeftChatChannel) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +func (m *CMsgDOTAOtherLeftChatChannel) GetSteamId() uint64 { + if m != nil && m.SteamId != nil { + return *m.SteamId + } + return 0 +} + +func (m *CMsgDOTAOtherLeftChatChannel) GetChannelUserId() uint32 { + if m != nil && m.ChannelUserId != nil { + return *m.ChannelUserId + } + return 0 +} + +type CMsgDOTAChatChannelMemberUpdate struct { + ChannelId *uint64 `protobuf:"fixed64,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + LeftSteamIds []uint64 `protobuf:"fixed64,2,rep,name=left_steam_ids,json=leftSteamIds" json:"left_steam_ids,omitempty"` + JoinedMembers []*CMsgDOTAChatChannelMemberUpdate_JoinedMember `protobuf:"bytes,3,rep,name=joined_members,json=joinedMembers" json:"joined_members,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatChannelMemberUpdate) Reset() { *m = CMsgDOTAChatChannelMemberUpdate{} } +func (m *CMsgDOTAChatChannelMemberUpdate) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatChannelMemberUpdate) ProtoMessage() {} +func (*CMsgDOTAChatChannelMemberUpdate) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{17} +} + +func (m *CMsgDOTAChatChannelMemberUpdate) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +func (m *CMsgDOTAChatChannelMemberUpdate) GetLeftSteamIds() []uint64 { + if m != nil { + return m.LeftSteamIds + } + return nil +} + +func (m *CMsgDOTAChatChannelMemberUpdate) GetJoinedMembers() []*CMsgDOTAChatChannelMemberUpdate_JoinedMember { + if m != nil { + return m.JoinedMembers + } + return nil +} + +type CMsgDOTAChatChannelMemberUpdate_JoinedMember struct { + SteamId *uint64 `protobuf:"fixed64,1,opt,name=steam_id,json=steamId" json:"steam_id,omitempty"` + PersonaName *string `protobuf:"bytes,2,opt,name=persona_name,json=personaName" json:"persona_name,omitempty"` + ChannelUserId *uint32 `protobuf:"varint,3,opt,name=channel_user_id,json=channelUserId" json:"channel_user_id,omitempty"` + Status *uint32 `protobuf:"varint,4,opt,name=status" json:"status,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatChannelMemberUpdate_JoinedMember) Reset() { + *m = CMsgDOTAChatChannelMemberUpdate_JoinedMember{} +} +func (m *CMsgDOTAChatChannelMemberUpdate_JoinedMember) String() string { + return proto.CompactTextString(m) +} +func (*CMsgDOTAChatChannelMemberUpdate_JoinedMember) ProtoMessage() {} +func (*CMsgDOTAChatChannelMemberUpdate_JoinedMember) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{17, 0} +} + +func (m *CMsgDOTAChatChannelMemberUpdate_JoinedMember) GetSteamId() uint64 { + if m != nil && m.SteamId != nil { + return *m.SteamId + } + return 0 +} + +func (m *CMsgDOTAChatChannelMemberUpdate_JoinedMember) GetPersonaName() string { + if m != nil && m.PersonaName != nil { + return *m.PersonaName + } + return "" +} + +func (m *CMsgDOTAChatChannelMemberUpdate_JoinedMember) GetChannelUserId() uint32 { + if m != nil && m.ChannelUserId != nil { + return *m.ChannelUserId + } + return 0 +} + +func (m *CMsgDOTAChatChannelMemberUpdate_JoinedMember) GetStatus() uint32 { + if m != nil && m.Status != nil { + return *m.Status + } + return 0 +} + +type CMsgDOTARequestChatChannelList struct { + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTARequestChatChannelList) Reset() { *m = CMsgDOTARequestChatChannelList{} } +func (m *CMsgDOTARequestChatChannelList) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTARequestChatChannelList) ProtoMessage() {} +func (*CMsgDOTARequestChatChannelList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } + +type CMsgDOTARequestChatChannelListResponse struct { + Channels []*CMsgDOTARequestChatChannelListResponse_ChatChannel `protobuf:"bytes,1,rep,name=channels" json:"channels,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTARequestChatChannelListResponse) Reset() { + *m = CMsgDOTARequestChatChannelListResponse{} +} +func (m *CMsgDOTARequestChatChannelListResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTARequestChatChannelListResponse) ProtoMessage() {} +func (*CMsgDOTARequestChatChannelListResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{19} +} + +func (m *CMsgDOTARequestChatChannelListResponse) GetChannels() []*CMsgDOTARequestChatChannelListResponse_ChatChannel { + if m != nil { + return m.Channels + } + return nil +} + +type CMsgDOTARequestChatChannelListResponse_ChatChannel struct { + ChannelName *string `protobuf:"bytes,1,opt,name=channel_name,json=channelName" json:"channel_name,omitempty"` + NumMembers *uint32 `protobuf:"varint,2,opt,name=num_members,json=numMembers" json:"num_members,omitempty"` + ChannelType *dota_shared_enums.DOTAChatChannelTypeT `protobuf:"varint,3,opt,name=channel_type,json=channelType,enum=DOTAChatChannelTypeT,def=0" json:"channel_type,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTARequestChatChannelListResponse_ChatChannel) Reset() { + *m = CMsgDOTARequestChatChannelListResponse_ChatChannel{} +} +func (m *CMsgDOTARequestChatChannelListResponse_ChatChannel) String() string { + return proto.CompactTextString(m) +} +func (*CMsgDOTARequestChatChannelListResponse_ChatChannel) ProtoMessage() {} +func (*CMsgDOTARequestChatChannelListResponse_ChatChannel) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{19, 0} +} + +const Default_CMsgDOTARequestChatChannelListResponse_ChatChannel_ChannelType dota_shared_enums.DOTAChatChannelTypeT = dota_shared_enums.DOTAChatChannelTypeT_DOTAChannelType_Regional + +func (m *CMsgDOTARequestChatChannelListResponse_ChatChannel) GetChannelName() string { + if m != nil && m.ChannelName != nil { + return *m.ChannelName + } + return "" +} + +func (m *CMsgDOTARequestChatChannelListResponse_ChatChannel) GetNumMembers() uint32 { + if m != nil && m.NumMembers != nil { + return *m.NumMembers + } + return 0 +} + +func (m *CMsgDOTARequestChatChannelListResponse_ChatChannel) GetChannelType() dota_shared_enums.DOTAChatChannelTypeT { + if m != nil && m.ChannelType != nil { + return *m.ChannelType + } + return Default_CMsgDOTARequestChatChannelListResponse_ChatChannel_ChannelType +} + +type CMsgDOTAChatGetUserList struct { + ChannelId *uint64 `protobuf:"fixed64,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatGetUserList) Reset() { *m = CMsgDOTAChatGetUserList{} } +func (m *CMsgDOTAChatGetUserList) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatGetUserList) ProtoMessage() {} +func (*CMsgDOTAChatGetUserList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } + +func (m *CMsgDOTAChatGetUserList) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +type CMsgDOTAChatGetUserListResponse struct { + ChannelId *uint64 `protobuf:"fixed64,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` + Members []*CMsgDOTAChatGetUserListResponse_Member `protobuf:"bytes,2,rep,name=members" json:"members,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatGetUserListResponse) Reset() { *m = CMsgDOTAChatGetUserListResponse{} } +func (m *CMsgDOTAChatGetUserListResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatGetUserListResponse) ProtoMessage() {} +func (*CMsgDOTAChatGetUserListResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{21} +} + +func (m *CMsgDOTAChatGetUserListResponse) GetChannelId() uint64 { + if m != nil && m.ChannelId != nil { + return *m.ChannelId + } + return 0 +} + +func (m *CMsgDOTAChatGetUserListResponse) GetMembers() []*CMsgDOTAChatGetUserListResponse_Member { + if m != nil { + return m.Members + } + return nil +} + +type CMsgDOTAChatGetUserListResponse_Member struct { + SteamId *uint64 `protobuf:"fixed64,1,opt,name=steam_id,json=steamId" json:"steam_id,omitempty"` + PersonaName *string `protobuf:"bytes,2,opt,name=persona_name,json=personaName" json:"persona_name,omitempty"` + ChannelUserId *uint32 `protobuf:"varint,3,opt,name=channel_user_id,json=channelUserId" json:"channel_user_id,omitempty"` + Status *uint32 `protobuf:"varint,4,opt,name=status" json:"status,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatGetUserListResponse_Member) Reset() { + *m = CMsgDOTAChatGetUserListResponse_Member{} +} +func (m *CMsgDOTAChatGetUserListResponse_Member) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatGetUserListResponse_Member) ProtoMessage() {} +func (*CMsgDOTAChatGetUserListResponse_Member) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{21, 0} +} + +func (m *CMsgDOTAChatGetUserListResponse_Member) GetSteamId() uint64 { + if m != nil && m.SteamId != nil { + return *m.SteamId + } + return 0 +} + +func (m *CMsgDOTAChatGetUserListResponse_Member) GetPersonaName() string { + if m != nil && m.PersonaName != nil { + return *m.PersonaName + } + return "" +} + +func (m *CMsgDOTAChatGetUserListResponse_Member) GetChannelUserId() uint32 { + if m != nil && m.ChannelUserId != nil { + return *m.ChannelUserId + } + return 0 +} + +func (m *CMsgDOTAChatGetUserListResponse_Member) GetStatus() uint32 { + if m != nil && m.Status != nil { + return *m.Status + } + return 0 +} + +type CMsgDOTAChatGetMemberCount struct { + ChannelName *string `protobuf:"bytes,1,opt,name=channel_name,json=channelName" json:"channel_name,omitempty"` + ChannelType *dota_shared_enums.DOTAChatChannelTypeT `protobuf:"varint,2,opt,name=channel_type,json=channelType,enum=DOTAChatChannelTypeT,def=0" json:"channel_type,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatGetMemberCount) Reset() { *m = CMsgDOTAChatGetMemberCount{} } +func (m *CMsgDOTAChatGetMemberCount) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatGetMemberCount) ProtoMessage() {} +func (*CMsgDOTAChatGetMemberCount) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } + +const Default_CMsgDOTAChatGetMemberCount_ChannelType dota_shared_enums.DOTAChatChannelTypeT = dota_shared_enums.DOTAChatChannelTypeT_DOTAChannelType_Regional + +func (m *CMsgDOTAChatGetMemberCount) GetChannelName() string { + if m != nil && m.ChannelName != nil { + return *m.ChannelName + } + return "" +} + +func (m *CMsgDOTAChatGetMemberCount) GetChannelType() dota_shared_enums.DOTAChatChannelTypeT { + if m != nil && m.ChannelType != nil { + return *m.ChannelType + } + return Default_CMsgDOTAChatGetMemberCount_ChannelType +} + +type CMsgDOTAChatGetMemberCountResponse struct { + ChannelName *string `protobuf:"bytes,1,opt,name=channel_name,json=channelName" json:"channel_name,omitempty"` + ChannelType *dota_shared_enums.DOTAChatChannelTypeT `protobuf:"varint,2,opt,name=channel_type,json=channelType,enum=DOTAChatChannelTypeT,def=0" json:"channel_type,omitempty"` + MemberCount *uint32 `protobuf:"varint,3,opt,name=member_count,json=memberCount" json:"member_count,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatGetMemberCountResponse) Reset() { *m = CMsgDOTAChatGetMemberCountResponse{} } +func (m *CMsgDOTAChatGetMemberCountResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatGetMemberCountResponse) ProtoMessage() {} +func (*CMsgDOTAChatGetMemberCountResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{23} +} + +const Default_CMsgDOTAChatGetMemberCountResponse_ChannelType dota_shared_enums.DOTAChatChannelTypeT = dota_shared_enums.DOTAChatChannelTypeT_DOTAChannelType_Regional + +func (m *CMsgDOTAChatGetMemberCountResponse) GetChannelName() string { + if m != nil && m.ChannelName != nil { + return *m.ChannelName + } + return "" +} + +func (m *CMsgDOTAChatGetMemberCountResponse) GetChannelType() dota_shared_enums.DOTAChatChannelTypeT { + if m != nil && m.ChannelType != nil { + return *m.ChannelType + } + return Default_CMsgDOTAChatGetMemberCountResponse_ChannelType +} + +func (m *CMsgDOTAChatGetMemberCountResponse) GetMemberCount() uint32 { + if m != nil && m.MemberCount != nil { + return *m.MemberCount + } + return 0 +} + +type CMsgDOTAChatRegionsEnabled struct { + EnableAllRegions *bool `protobuf:"varint,1,opt,name=enable_all_regions,json=enableAllRegions" json:"enable_all_regions,omitempty"` + EnabledRegions []*CMsgDOTAChatRegionsEnabled_Region `protobuf:"bytes,2,rep,name=enabled_regions,json=enabledRegions" json:"enabled_regions,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatRegionsEnabled) Reset() { *m = CMsgDOTAChatRegionsEnabled{} } +func (m *CMsgDOTAChatRegionsEnabled) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatRegionsEnabled) ProtoMessage() {} +func (*CMsgDOTAChatRegionsEnabled) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } + +func (m *CMsgDOTAChatRegionsEnabled) GetEnableAllRegions() bool { + if m != nil && m.EnableAllRegions != nil { + return *m.EnableAllRegions + } + return false +} + +func (m *CMsgDOTAChatRegionsEnabled) GetEnabledRegions() []*CMsgDOTAChatRegionsEnabled_Region { + if m != nil { + return m.EnabledRegions + } + return nil +} + +type CMsgDOTAChatRegionsEnabled_Region struct { + MinLatitude *float32 `protobuf:"fixed32,1,opt,name=min_latitude,json=minLatitude" json:"min_latitude,omitempty"` + MaxLatitude *float32 `protobuf:"fixed32,2,opt,name=max_latitude,json=maxLatitude" json:"max_latitude,omitempty"` + MinLongitude *float32 `protobuf:"fixed32,3,opt,name=min_longitude,json=minLongitude" json:"min_longitude,omitempty"` + MaxLongitude *float32 `protobuf:"fixed32,4,opt,name=max_longitude,json=maxLongitude" json:"max_longitude,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAChatRegionsEnabled_Region) Reset() { *m = CMsgDOTAChatRegionsEnabled_Region{} } +func (m *CMsgDOTAChatRegionsEnabled_Region) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAChatRegionsEnabled_Region) ProtoMessage() {} +func (*CMsgDOTAChatRegionsEnabled_Region) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{24, 0} +} + +func (m *CMsgDOTAChatRegionsEnabled_Region) GetMinLatitude() float32 { + if m != nil && m.MinLatitude != nil { + return *m.MinLatitude + } + return 0 +} + +func (m *CMsgDOTAChatRegionsEnabled_Region) GetMaxLatitude() float32 { + if m != nil && m.MaxLatitude != nil { + return *m.MaxLatitude + } + return 0 +} + +func (m *CMsgDOTAChatRegionsEnabled_Region) GetMinLongitude() float32 { + if m != nil && m.MinLongitude != nil { + return *m.MinLongitude + } + return 0 +} + +func (m *CMsgDOTAChatRegionsEnabled_Region) GetMaxLongitude() float32 { + if m != nil && m.MaxLongitude != nil { + return *m.MaxLongitude + } + return 0 +} + +func init() { + proto.RegisterType((*CMsgClientToGCPrivateChatInvite)(nil), "CMsgClientToGCPrivateChatInvite") + proto.RegisterType((*CMsgClientToGCPrivateChatKick)(nil), "CMsgClientToGCPrivateChatKick") + proto.RegisterType((*CMsgClientToGCPrivateChatPromote)(nil), "CMsgClientToGCPrivateChatPromote") + proto.RegisterType((*CMsgClientToGCPrivateChatDemote)(nil), "CMsgClientToGCPrivateChatDemote") + proto.RegisterType((*CMsgGCToClientPrivateChatResponse)(nil), "CMsgGCToClientPrivateChatResponse") + proto.RegisterType((*CMsgClientToGCPrivateChatInfoRequest)(nil), "CMsgClientToGCPrivateChatInfoRequest") + proto.RegisterType((*CMsgGCToClientPrivateChatInfoResponse)(nil), "CMsgGCToClientPrivateChatInfoResponse") + proto.RegisterType((*CMsgGCToClientPrivateChatInfoResponse_Member)(nil), "CMsgGCToClientPrivateChatInfoResponse.Member") + proto.RegisterType((*CMsgDOTAJoinChatChannel)(nil), "CMsgDOTAJoinChatChannel") + proto.RegisterType((*CMsgDOTALeaveChatChannel)(nil), "CMsgDOTALeaveChatChannel") + proto.RegisterType((*CMsgGCChatReportPublicSpam)(nil), "CMsgGCChatReportPublicSpam") + proto.RegisterType((*CMsgDOTAClientIgnoredUser)(nil), "CMsgDOTAClientIgnoredUser") + proto.RegisterType((*CMsgDOTAChatMessage)(nil), "CMsgDOTAChatMessage") + proto.RegisterType((*CMsgDOTAChatMessage_DiceRoll)(nil), "CMsgDOTAChatMessage.DiceRoll") + proto.RegisterType((*CMsgDOTAChatMessage_TriviaAnswered)(nil), "CMsgDOTAChatMessage.TriviaAnswered") + proto.RegisterType((*CMsgDOTAChatMember)(nil), "CMsgDOTAChatMember") + proto.RegisterType((*CMsgDOTAJoinChatChannelResponse)(nil), "CMsgDOTAJoinChatChannelResponse") + proto.RegisterType((*CMsgDOTAChatChannelFullUpdate)(nil), "CMsgDOTAChatChannelFullUpdate") + proto.RegisterType((*CMsgDOTAOtherJoinedChatChannel)(nil), "CMsgDOTAOtherJoinedChatChannel") + proto.RegisterType((*CMsgDOTAOtherLeftChatChannel)(nil), "CMsgDOTAOtherLeftChatChannel") + proto.RegisterType((*CMsgDOTAChatChannelMemberUpdate)(nil), "CMsgDOTAChatChannelMemberUpdate") + proto.RegisterType((*CMsgDOTAChatChannelMemberUpdate_JoinedMember)(nil), "CMsgDOTAChatChannelMemberUpdate.JoinedMember") + proto.RegisterType((*CMsgDOTARequestChatChannelList)(nil), "CMsgDOTARequestChatChannelList") + proto.RegisterType((*CMsgDOTARequestChatChannelListResponse)(nil), "CMsgDOTARequestChatChannelListResponse") + proto.RegisterType((*CMsgDOTARequestChatChannelListResponse_ChatChannel)(nil), "CMsgDOTARequestChatChannelListResponse.ChatChannel") + proto.RegisterType((*CMsgDOTAChatGetUserList)(nil), "CMsgDOTAChatGetUserList") + proto.RegisterType((*CMsgDOTAChatGetUserListResponse)(nil), "CMsgDOTAChatGetUserListResponse") + proto.RegisterType((*CMsgDOTAChatGetUserListResponse_Member)(nil), "CMsgDOTAChatGetUserListResponse.Member") + proto.RegisterType((*CMsgDOTAChatGetMemberCount)(nil), "CMsgDOTAChatGetMemberCount") + proto.RegisterType((*CMsgDOTAChatGetMemberCountResponse)(nil), "CMsgDOTAChatGetMemberCountResponse") + proto.RegisterType((*CMsgDOTAChatRegionsEnabled)(nil), "CMsgDOTAChatRegionsEnabled") + proto.RegisterType((*CMsgDOTAChatRegionsEnabled_Region)(nil), "CMsgDOTAChatRegionsEnabled.Region") + proto.RegisterEnum("CMsgGCToClientPrivateChatResponse_Result", CMsgGCToClientPrivateChatResponse_Result_name, CMsgGCToClientPrivateChatResponse_Result_value) + proto.RegisterEnum("CMsgDOTAJoinChatChannelResponse_Result", CMsgDOTAJoinChatChannelResponse_Result_name, CMsgDOTAJoinChatChannelResponse_Result_value) +} + +func init() { proto.RegisterFile("dota_gcmessages_client_chat.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 2419 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x18, 0xc9, 0x72, 0x1b, 0xc7, + 0xd5, 0x03, 0x6e, 0xc0, 0x03, 0x09, 0x8e, 0x9a, 0x14, 0x39, 0x84, 0x44, 0x91, 0x82, 0x1c, 0x5b, + 0x71, 0x59, 0x48, 0x22, 0x67, 0xb3, 0x6e, 0x23, 0x60, 0x24, 0x8d, 0x85, 0x85, 0x1e, 0x80, 0xb2, + 0x7d, 0xea, 0x6a, 0xce, 0x34, 0xa1, 0x31, 0x67, 0x41, 0x66, 0x1a, 0x14, 0x79, 0x73, 0xe5, 0x90, + 0xca, 0xe2, 0x4b, 0x52, 0x49, 0x55, 0x4e, 0x39, 0xe4, 0x90, 0x0f, 0xc8, 0x3d, 0xe5, 0x0f, 0xc8, + 0x87, 0xe4, 0x9e, 0x73, 0x0e, 0xa9, 0xee, 0x9e, 0x0d, 0x20, 0x48, 0x2a, 0x45, 0x57, 0x7c, 0x41, + 0xa1, 0xdf, 0xfe, 0xfa, 0xbd, 0x7e, 0xcb, 0xc0, 0x7d, 0x27, 0x64, 0x04, 0x8f, 0x6c, 0x9f, 0xc6, + 0x31, 0x19, 0xd1, 0x18, 0xdb, 0x9e, 0x4b, 0x03, 0x86, 0xed, 0xd7, 0x84, 0x35, 0xc7, 0x51, 0xc8, + 0xc2, 0xfa, 0xb6, 0x20, 0x89, 0x5f, 0x93, 0x88, 0x3a, 0x98, 0x06, 0x13, 0x3f, 0x96, 0x88, 0xc6, + 0x6f, 0x15, 0xd8, 0x6b, 0x75, 0xe3, 0x51, 0x4b, 0xb0, 0x0c, 0xc3, 0xe7, 0xad, 0x83, 0xc8, 0x3d, + 0x25, 0x8c, 0xb6, 0x5e, 0x13, 0x66, 0x06, 0xa7, 0x2e, 0xa3, 0xe8, 0x63, 0xd8, 0x19, 0x4b, 0xa0, + 0x10, 0xc9, 0x7f, 0x82, 0x80, 0x7a, 0x38, 0x20, 0x3e, 0xd5, 0x94, 0x7d, 0xe5, 0x61, 0xc5, 0xda, + 0x1a, 0xe7, 0x5c, 0x2d, 0x89, 0xee, 0x11, 0x9f, 0xa2, 0x0f, 0x01, 0xb9, 0x42, 0x88, 0x83, 0x89, + 0x6d, 0x87, 0x93, 0x80, 0x61, 0xd7, 0xd1, 0x4a, 0xfb, 0xca, 0xc3, 0x35, 0x4b, 0x4d, 0x30, 0xba, + 0x44, 0x98, 0x4e, 0xe3, 0x97, 0x0a, 0xec, 0x5e, 0x6a, 0xcc, 0x4b, 0xd7, 0x3e, 0xb9, 0x89, 0x29, + 0xef, 0xc1, 0xfa, 0x89, 0x6b, 0x9f, 0x5c, 0xb4, 0x63, 0x8d, 0x83, 0x73, 0x23, 0x7e, 0xa7, 0xc0, + 0xfe, 0xa5, 0x46, 0x1c, 0x44, 0xa1, 0x1f, 0xde, 0xf8, 0x4a, 0xc6, 0x52, 0xca, 0x9c, 0x2b, 0x49, + 0x30, 0xb9, 0x35, 0xbf, 0xbe, 0x2a, 0x3e, 0x6d, 0x7a, 0x53, 0x63, 0x3e, 0x80, 0x5b, 0x0e, 0x9d, + 0x6f, 0xcb, 0xba, 0x44, 0xe4, 0xa6, 0xfc, 0x6b, 0x11, 0xee, 0x73, 0x53, 0x9e, 0xb7, 0x86, 0xa1, + 0x34, 0xa7, 0x60, 0x8a, 0x45, 0xe3, 0x71, 0x18, 0xc4, 0x37, 0x32, 0xe6, 0x13, 0x58, 0x8e, 0x68, + 0x3c, 0xf1, 0x98, 0xb0, 0xa0, 0xf6, 0xf8, 0xfb, 0xcd, 0x6b, 0xd5, 0x35, 0x2d, 0xc1, 0xf0, 0x64, + 0x65, 0x70, 0xd8, 0x6a, 0x19, 0x83, 0x81, 0x95, 0x48, 0x40, 0x75, 0x28, 0x4f, 0x62, 0x1a, 0x09, + 0xad, 0x0b, 0x42, 0x6b, 0x76, 0x6e, 0xfc, 0x65, 0x01, 0x96, 0x25, 0x1f, 0xaa, 0x42, 0xca, 0xa9, + 0xbe, 0x83, 0x76, 0xe0, 0xf6, 0x33, 0xdd, 0xec, 0x1c, 0x5a, 0x06, 0x6e, 0x59, 0x86, 0x3e, 0x34, + 0xfb, 0x3d, 0xdc, 0xe9, 0xb7, 0x5e, 0xaa, 0x0a, 0xba, 0x03, 0xdb, 0x29, 0x6a, 0xf0, 0x69, 0x07, + 0x0f, 0x2d, 0xbd, 0x37, 0xd0, 0x5b, 0x9c, 0x42, 0x2d, 0xa1, 0x4d, 0x50, 0x33, 0x64, 0xbb, 0x8f, + 0x3b, 0x7d, 0xbd, 0xad, 0x2e, 0x14, 0xa5, 0xf5, 0xfa, 0xf8, 0xc0, 0xb0, 0xba, 0xe6, 0x60, 0xc0, + 0x19, 0x16, 0x51, 0x1d, 0xb6, 0x52, 0x94, 0xde, 0xb1, 0x0c, 0xbd, 0xfd, 0x05, 0xee, 0x1a, 0xdd, + 0xa7, 0x86, 0xa5, 0x2e, 0x21, 0x0d, 0x36, 0x73, 0xb6, 0x21, 0xd6, 0x53, 0xcc, 0x0a, 0xda, 0x83, + 0x3b, 0x05, 0x81, 0x96, 0xd1, 0xd5, 0xcd, 0x9e, 0xd9, 0x7b, 0x8e, 0xf5, 0x76, 0xd7, 0xec, 0x0d, + 0xd4, 0x32, 0xda, 0x80, 0xf5, 0x22, 0x41, 0xbf, 0xdf, 0x55, 0x2b, 0xe8, 0x3e, 0xec, 0x5e, 0x70, + 0xca, 0xd2, 0x87, 0x06, 0xee, 0x98, 0x5d, 0x73, 0x68, 0xb4, 0x55, 0x40, 0xfb, 0x70, 0x37, 0x25, + 0x39, 0xec, 0xbd, 0xec, 0xf5, 0x3f, 0xeb, 0xe1, 0xd6, 0x0b, 0xbd, 0xd7, 0x33, 0x3a, 0xb8, 0xa7, + 0x77, 0x0d, 0xb5, 0x5a, 0x34, 0x2a, 0xa5, 0x38, 0x1c, 0x18, 0x96, 0xba, 0x5a, 0xf4, 0x32, 0xc5, + 0x18, 0x96, 0xd5, 0xb7, 0xd4, 0x35, 0xb4, 0x0b, 0x3b, 0x99, 0x66, 0xbd, 0xc7, 0x9d, 0x79, 0x69, + 0xb6, 0x5e, 0x4a, 0x73, 0xd5, 0x5a, 0x91, 0x33, 0xbd, 0x04, 0x89, 0x5a, 0x6f, 0x10, 0x78, 0xf7, + 0x8a, 0x9a, 0x74, 0x1c, 0x5a, 0xf4, 0x17, 0x13, 0x1a, 0xb3, 0x1b, 0xe4, 0x5a, 0xe3, 0x9b, 0x12, + 0x7c, 0xef, 0xd2, 0xec, 0x92, 0x3a, 0x6e, 0x9e, 0xd0, 0xcf, 0x61, 0xc5, 0xa7, 0xfe, 0x11, 0x8d, + 0x62, 0xad, 0xb4, 0xbf, 0xf0, 0xb0, 0xfa, 0xf8, 0x51, 0xf3, 0xad, 0x74, 0x36, 0xbb, 0x82, 0xcb, + 0x4a, 0xb9, 0x91, 0x06, 0x2b, 0x76, 0x44, 0x09, 0x0b, 0x23, 0x91, 0xcc, 0x6b, 0x56, 0x7a, 0x44, + 0x0f, 0x60, 0x4d, 0xfc, 0x75, 0xc3, 0x00, 0x3b, 0x84, 0x51, 0x6d, 0x51, 0xe0, 0x57, 0x53, 0x60, + 0x9b, 0x30, 0x5a, 0x1f, 0xc0, 0xb2, 0x94, 0x88, 0x76, 0x01, 0x0a, 0x0f, 0x5d, 0x11, 0xb4, 0x15, + 0x92, 0x3e, 0x71, 0x84, 0x60, 0x51, 0xb8, 0x55, 0x12, 0x6e, 0x89, 0xff, 0x68, 0x0b, 0x96, 0x63, + 0x46, 0xd8, 0x24, 0x4e, 0x54, 0x27, 0xa7, 0xc6, 0xef, 0x15, 0xd8, 0xe6, 0xde, 0xb4, 0xfb, 0x43, + 0xfd, 0x93, 0xd0, 0x0d, 0x0a, 0xce, 0xa3, 0xfb, 0xb0, 0x3a, 0x75, 0x4d, 0x52, 0x5e, 0xd5, 0x2e, + 0xdc, 0xcd, 0x20, 0x27, 0x61, 0xe7, 0x63, 0x69, 0x77, 0xed, 0xf1, 0x56, 0x93, 0x8b, 0x2b, 0x88, + 0x1a, 0x9e, 0x8f, 0x29, 0x66, 0x4f, 0xb4, 0x04, 0x9c, 0x81, 0x2c, 0x3a, 0x72, 0xc3, 0x80, 0x78, + 0x99, 0x50, 0x0e, 0x6d, 0x7c, 0x0c, 0x5a, 0x6a, 0x52, 0x87, 0x92, 0xd3, 0x62, 0x40, 0xb8, 0xeb, + 0xa9, 0xc2, 0xc4, 0xf5, 0x45, 0xab, 0x92, 0x40, 0x4c, 0xa7, 0x61, 0x43, 0x5d, 0xc6, 0x46, 0x96, + 0x97, 0x71, 0x18, 0xb1, 0x83, 0xc9, 0x91, 0xe7, 0xda, 0x83, 0x31, 0xf1, 0xaf, 0x61, 0xe6, 0xbd, + 0x25, 0x45, 0xf3, 0x2a, 0x53, 0xe8, 0x2d, 0x09, 0xf8, 0x30, 0xa6, 0x91, 0xe9, 0x34, 0x4c, 0xd8, + 0x49, 0xed, 0x93, 0x09, 0x60, 0x8e, 0x82, 0x30, 0xa2, 0x0e, 0x47, 0x8b, 0x5e, 0x29, 0x8f, 0xf8, + 0x42, 0x8c, 0xd4, 0x04, 0x93, 0x57, 0xe3, 0x3f, 0xd5, 0x60, 0x23, 0x93, 0xf5, 0x9a, 0xb0, 0xae, + 0x6c, 0xfe, 0xd7, 0x45, 0x78, 0xda, 0x91, 0xd2, 0xac, 0x23, 0xf7, 0x61, 0x75, 0x4c, 0xa3, 0x38, + 0x0c, 0x08, 0x2e, 0x94, 0xce, 0x6a, 0x02, 0x13, 0x81, 0x43, 0xb0, 0xc8, 0xe8, 0x19, 0x13, 0x01, + 0xab, 0x58, 0xe2, 0x3f, 0xba, 0x0b, 0x15, 0xe6, 0xfa, 0x34, 0x66, 0xc4, 0x1f, 0x6b, 0x4b, 0x52, + 0x67, 0x06, 0xe0, 0x2f, 0x28, 0x9e, 0x8c, 0x46, 0x34, 0x66, 0x58, 0xb6, 0xfc, 0xa2, 0x7f, 0xcb, + 0x82, 0x7a, 0x2b, 0x21, 0x90, 0x13, 0x47, 0xe6, 0x25, 0x6a, 0xc2, 0xc6, 0x0c, 0xab, 0x30, 0x6b, + 0x45, 0xe8, 0xbe, 0x35, 0xc5, 0x24, 0x8c, 0x7b, 0x0a, 0xf7, 0x8e, 0x49, 0xc0, 0x48, 0x7c, 0x8e, + 0x9d, 0x88, 0x1c, 0x33, 0x1c, 0xbe, 0x09, 0x68, 0x54, 0xd4, 0x57, 0x16, 0xfa, 0xea, 0x09, 0x55, + 0x9b, 0x13, 0xf5, 0x39, 0x4d, 0xae, 0xb3, 0x0d, 0x7b, 0xd3, 0x32, 0xc6, 0x1e, 0x39, 0x9f, 0x16, + 0x52, 0x11, 0x42, 0xee, 0x14, 0x85, 0x1c, 0x08, 0xa2, 0x5c, 0xca, 0x0e, 0x94, 0xe9, 0x29, 0x95, + 0xe4, 0x20, 0xdf, 0xac, 0x38, 0x9b, 0x0e, 0xfa, 0x09, 0x6c, 0xcf, 0x38, 0xc5, 0x42, 0xec, 0x85, + 0x47, 0x47, 0xe7, 0x5a, 0x75, 0x5f, 0x79, 0x58, 0xb6, 0x36, 0xa7, 0x1c, 0x1b, 0x86, 0x1d, 0x8e, + 0xe3, 0xb1, 0x91, 0x12, 0xc7, 0xa1, 0x1b, 0xb0, 0x58, 0x5b, 0x15, 0x52, 0xab, 0x02, 0x76, 0x20, + 0x40, 0xe8, 0x0e, 0x54, 0xec, 0xd0, 0x0d, 0xf0, 0xb1, 0xe7, 0x8e, 0xb5, 0x35, 0x21, 0xab, 0xcc, + 0x01, 0xcf, 0x3c, 0x77, 0x8c, 0xf6, 0xa0, 0x92, 0x78, 0xe2, 0x3a, 0x5a, 0x6d, 0x5f, 0x79, 0xb8, + 0xf4, 0xa4, 0xf4, 0xe8, 0x47, 0x56, 0x59, 0x02, 0x4d, 0x07, 0xfd, 0x0c, 0x34, 0x31, 0x21, 0xe2, + 0x71, 0x14, 0x1e, 0xbb, 0xde, 0x54, 0x98, 0xd6, 0x85, 0xb2, 0xdb, 0x02, 0x7f, 0x20, 0xd1, 0xb9, + 0xaf, 0x73, 0xd2, 0x5f, 0x9d, 0x93, 0xfe, 0xe8, 0x09, 0x54, 0x1c, 0xd7, 0xa6, 0x38, 0x0a, 0x3d, + 0x4f, 0xbb, 0xb5, 0xaf, 0x3c, 0xac, 0x3e, 0xde, 0x6d, 0xce, 0x49, 0xe2, 0x66, 0xdb, 0xb5, 0xa9, + 0x15, 0x7a, 0x9e, 0x55, 0x76, 0x92, 0x7f, 0xe8, 0x5d, 0xa8, 0x25, 0xc6, 0x91, 0x88, 0x9d, 0x73, + 0x15, 0x48, 0x24, 0xef, 0xaa, 0x34, 0x89, 0x03, 0x4d, 0x27, 0xa7, 0x12, 0xd7, 0xc9, 0xa9, 0x36, + 0x0a, 0x54, 0xe2, 0x1e, 0x85, 0x1d, 0xf5, 0x22, 0x95, 0x3d, 0x89, 0x59, 0xe8, 0xe3, 0x11, 0xf1, + 0x29, 0xe7, 0xd8, 0x14, 0x1c, 0x5b, 0x39, 0x47, 0x4b, 0xe0, 0x9f, 0x13, 0x9f, 0x26, 0x19, 0x59, + 0xe0, 0x1d, 0x93, 0x38, 0x3e, 0xa1, 0xe7, 0xda, 0xed, 0x24, 0x23, 0x33, 0xa6, 0x03, 0x89, 0xe0, + 0xc1, 0x9e, 0xdb, 0x3e, 0x5c, 0x47, 0xdb, 0x12, 0x77, 0xb4, 0x79, 0xb1, 0x79, 0x98, 0x4e, 0xa1, + 0xea, 0x6e, 0x17, 0xab, 0x2e, 0x7f, 0x4b, 0x1e, 0x1d, 0x11, 0xfb, 0x1c, 0x1f, 0x11, 0xc6, 0x3c, + 0x8a, 0xed, 0xc9, 0x18, 0x9f, 0xba, 0x36, 0x0b, 0xa3, 0x73, 0x4d, 0x13, 0x11, 0xdf, 0x92, 0x04, + 0x4f, 0x05, 0xbe, 0x35, 0x19, 0xbf, 0x92, 0x58, 0x3e, 0xeb, 0x15, 0x78, 0x62, 0x16, 0x51, 0x72, + 0xa2, 0xed, 0xca, 0x59, 0xef, 0x28, 0x25, 0x1e, 0x08, 0x30, 0xda, 0x83, 0xea, 0x11, 0x71, 0x46, + 0x14, 0x7b, 0xf4, 0x94, 0x7a, 0xda, 0x8e, 0xa0, 0x02, 0x01, 0xea, 0x70, 0x08, 0xfa, 0x01, 0xa4, + 0x49, 0x8a, 0xc7, 0x7c, 0xaa, 0x7e, 0x4d, 0xa3, 0x90, 0xfb, 0x54, 0x17, 0x94, 0xe9, 0xcb, 0x3c, + 0x70, 0xed, 0x93, 0x17, 0x34, 0x0a, 0x4d, 0x07, 0x7d, 0x04, 0x5b, 0x17, 0x19, 0xa2, 0xd0, 0xa3, + 0xda, 0x1d, 0x71, 0x75, 0x1b, 0x33, 0x2c, 0x56, 0xe8, 0x51, 0xf4, 0x28, 0x7f, 0xfe, 0x47, 0x24, + 0xc8, 0x94, 0xdc, 0x93, 0x35, 0x31, 0x41, 0x3d, 0x25, 0x41, 0xa2, 0x63, 0x13, 0x96, 0x18, 0x8d, + 0x62, 0xaa, 0xdd, 0x15, 0x17, 0x21, 0x0f, 0xfc, 0xdd, 0xc8, 0xea, 0x89, 0xfd, 0x09, 0xa3, 0x8e, + 0xb6, 0x27, 0x90, 0x55, 0x09, 0xeb, 0x72, 0x10, 0x7a, 0x01, 0x6b, 0x2c, 0x72, 0x4f, 0x5d, 0x82, + 0x49, 0x10, 0xbf, 0xa1, 0x91, 0xb6, 0x2f, 0x92, 0xf3, 0xc1, 0xdc, 0xe4, 0x1c, 0x0a, 0x4a, 0x5d, + 0x10, 0x52, 0xc7, 0x5a, 0x65, 0x85, 0x33, 0xfa, 0x21, 0x6c, 0x46, 0x72, 0x3a, 0xe1, 0x65, 0xfc, + 0xc8, 0xf5, 0x5c, 0x99, 0xac, 0xf7, 0x85, 0xc9, 0x28, 0xc3, 0xe9, 0x12, 0x65, 0x3a, 0xf5, 0xcf, + 0xa1, 0x9c, 0xa6, 0x3b, 0x2f, 0x1a, 0xfc, 0x6d, 0x60, 0xdf, 0x0d, 0x44, 0xe9, 0x5e, 0xb2, 0x56, + 0xf8, 0xb9, 0xeb, 0x06, 0x39, 0x8a, 0x9c, 0x89, 0xb2, 0x9d, 0xa2, 0xc8, 0x19, 0xcf, 0x95, 0x64, + 0x6e, 0x5e, 0x10, 0x88, 0xe4, 0x54, 0xff, 0xb7, 0x02, 0xb5, 0x69, 0x63, 0x79, 0x5c, 0x85, 0x01, + 0x7c, 0x5c, 0xc8, 0xda, 0x03, 0xa4, 0x20, 0xd9, 0x00, 0xe4, 0x15, 0x60, 0x37, 0x70, 0xe8, 0x59, + 0xd2, 0xc6, 0xaa, 0x12, 0x66, 0x72, 0x10, 0xfa, 0x29, 0x6c, 0xcb, 0x37, 0x98, 0xb2, 0xc5, 0xd8, + 0x0e, 0xa3, 0x88, 0xda, 0x2c, 0x99, 0x10, 0x6e, 0x0b, 0xf4, 0xa7, 0x29, 0xb6, 0x25, 0x91, 0xe8, + 0xc7, 0xb0, 0x35, 0xcb, 0x77, 0xea, 0xd2, 0x37, 0xd4, 0x49, 0x66, 0x96, 0xcd, 0x69, 0xb6, 0x57, + 0x02, 0xc7, 0xdf, 0x9b, 0xe4, 0x4a, 0x02, 0x94, 0x14, 0x3f, 0xd9, 0x64, 0x6e, 0x09, 0x94, 0xf4, + 0x51, 0x96, 0xc0, 0xc6, 0x1f, 0x14, 0x40, 0xd3, 0x51, 0x13, 0x83, 0xcf, 0x0e, 0x94, 0x63, 0x46, + 0x89, 0x9f, 0x7a, 0xbd, 0x6c, 0xad, 0x88, 0xf3, 0x9c, 0x9e, 0x57, 0xba, 0xd8, 0xf3, 0xe6, 0x14, + 0xb8, 0x85, 0x79, 0x05, 0x2e, 0x7f, 0xb5, 0x8b, 0x53, 0xb3, 0xd2, 0x7f, 0x96, 0xe5, 0x16, 0x37, + 0x67, 0x56, 0xca, 0xe6, 0xcc, 0x3a, 0x94, 0xa3, 0xe4, 0x7f, 0x12, 0x97, 0xec, 0xfc, 0x36, 0xf3, + 0xd4, 0x74, 0x63, 0x5f, 0x10, 0x2e, 0x16, 0x1a, 0xfb, 0x1e, 0x54, 0x7d, 0x72, 0x86, 0xd3, 0x71, + 0x54, 0x9a, 0x07, 0x3e, 0x39, 0xeb, 0x26, 0x23, 0xe6, 0xa3, 0x7c, 0x56, 0x5d, 0x12, 0xb3, 0xea, + 0x46, 0xf3, 0xe2, 0x35, 0xe6, 0x13, 0xe9, 0xec, 0xf8, 0xb6, 0xfc, 0x2d, 0x8c, 0x6f, 0xa8, 0x9b, + 0x25, 0xf2, 0x8a, 0x10, 0xf7, 0x7e, 0xf3, 0x9a, 0x4b, 0x4b, 0xd7, 0xbf, 0xd5, 0x4f, 0xfa, 0x66, + 0x0f, 0xcf, 0xee, 0x80, 0x1f, 0xc0, 0xad, 0x91, 0x8d, 0xdd, 0xc0, 0x65, 0x2e, 0xe1, 0xcf, 0xf1, + 0xcb, 0xd0, 0x0d, 0x44, 0xff, 0x2f, 0x5b, 0xeb, 0x23, 0xdb, 0x4c, 0xe1, 0x5c, 0xf6, 0xbc, 0x08, + 0x57, 0xe6, 0x45, 0xf8, 0x7d, 0x58, 0x7f, 0x43, 0x3d, 0x3b, 0xf4, 0x29, 0x4e, 0x3e, 0xb7, 0x88, + 0xee, 0x5e, 0xb1, 0x6a, 0x09, 0x38, 0xa9, 0x12, 0x8d, 0xdf, 0xe4, 0x4b, 0xa6, 0x0a, 0x53, 0xf6, + 0xa9, 0xef, 0xf0, 0x7d, 0xca, 0xec, 0xbd, 0xd2, 0x3b, 0x66, 0x3b, 0xdb, 0xb4, 0x86, 0x5f, 0x1c, + 0x18, 0xaa, 0x82, 0x6e, 0xc3, 0x2d, 0xbd, 0xd5, 0xea, 0x1f, 0xf6, 0x86, 0x62, 0xfd, 0x7b, 0xd6, + 0x3f, 0xec, 0xb5, 0xd5, 0x12, 0xaa, 0x01, 0xe8, 0xad, 0x17, 0x98, 0x2f, 0x4c, 0x06, 0x5f, 0x2e, + 0x77, 0x61, 0x87, 0x2f, 0x60, 0xd8, 0xec, 0xe1, 0x61, 0xbf, 0x8f, 0xbb, 0x7a, 0xef, 0x8b, 0x54, + 0xd2, 0x40, 0x5d, 0x44, 0xdb, 0xb0, 0x91, 0xef, 0x78, 0xd8, 0xf8, 0xbc, 0x65, 0x18, 0x6d, 0xa3, + 0xad, 0x2e, 0x71, 0x53, 0x52, 0x85, 0xcf, 0x0e, 0x3b, 0x1d, 0x75, 0x99, 0x6f, 0xb6, 0x45, 0x08, + 0xee, 0xbf, 0x32, 0xac, 0x67, 0x9d, 0xfe, 0x67, 0x46, 0x5b, 0x5d, 0x41, 0x5b, 0x80, 0xa4, 0x4a, + 0x3c, 0xec, 0x63, 0xbd, 0xdd, 0x96, 0x5b, 0x5f, 0x99, 0xef, 0x6e, 0x45, 0xbb, 0x71, 0xdb, 0x1c, + 0xe8, 0x4f, 0xb9, 0x65, 0x15, 0x74, 0x0f, 0xea, 0x07, 0x96, 0xf9, 0x8a, 0x6b, 0x6f, 0xbd, 0xd0, + 0x87, 0x72, 0xe9, 0x34, 0x52, 0xcb, 0xe1, 0x02, 0x7e, 0x7a, 0x37, 0xae, 0xa2, 0x07, 0xb0, 0x37, + 0x8f, 0x9f, 0xef, 0xe1, 0xa9, 0x90, 0x55, 0xee, 0xdf, 0x14, 0x11, 0x5f, 0x2c, 0x8d, 0xb6, 0xba, + 0xc6, 0x57, 0x71, 0x71, 0x2f, 0x62, 0x75, 0xee, 0x48, 0x37, 0x6a, 0x0d, 0x5f, 0x7e, 0x56, 0x9a, + 0xc9, 0xcd, 0x67, 0x13, 0xcf, 0x3b, 0x1c, 0xf3, 0xa5, 0x69, 0xce, 0x78, 0x3f, 0xf5, 0x78, 0x1e, + 0xcd, 0xee, 0x71, 0x57, 0xbe, 0x8d, 0xc6, 0x3f, 0x14, 0xb8, 0x97, 0xe2, 0xfb, 0xec, 0x35, 0x8d, + 0x78, 0x86, 0x51, 0xe7, 0xea, 0x65, 0x64, 0xf9, 0xaa, 0x31, 0x7c, 0x4e, 0x49, 0x2a, 0x16, 0xb4, + 0x85, 0xe9, 0x82, 0x36, 0x27, 0x97, 0x17, 0xaf, 0xae, 0x56, 0x4b, 0x53, 0xd5, 0xea, 0x2b, 0x05, + 0xee, 0x4e, 0xd9, 0xdf, 0xa1, 0xc7, 0xec, 0x7f, 0xb0, 0xbe, 0x68, 0x5a, 0xe9, 0x5a, 0xd3, 0xe6, + 0x15, 0xd2, 0xc6, 0x3f, 0x4b, 0x79, 0xc1, 0x2c, 0x68, 0x96, 0x37, 0xfd, 0x76, 0x41, 0x7b, 0x17, + 0x6a, 0x1e, 0x3d, 0x66, 0x38, 0x35, 0x45, 0xc6, 0x6e, 0xd9, 0x5a, 0xe5, 0xd0, 0x81, 0xb4, 0x27, + 0x46, 0x43, 0xa8, 0x7d, 0x29, 0xa2, 0x93, 0x95, 0xc6, 0x85, 0xc2, 0xa6, 0x7e, 0x85, 0xfa, 0xa6, + 0x0c, 0x6a, 0x12, 0xfb, 0xb5, 0x2f, 0x0b, 0xa7, 0xb8, 0xfe, 0xb5, 0x02, 0xab, 0x45, 0xfc, 0x77, + 0xdc, 0x7e, 0xf6, 0xf3, 0x7c, 0x4c, 0x3e, 0x9d, 0x14, 0x9c, 0xea, 0xb8, 0x31, 0x6b, 0xfc, 0xb5, + 0x04, 0xef, 0x5d, 0x4d, 0x92, 0xf5, 0xa9, 0x3e, 0x94, 0x13, 0xad, 0xb1, 0xa6, 0x88, 0xbb, 0xfa, + 0xa8, 0xf9, 0x76, 0xac, 0xcd, 0x62, 0x05, 0xcf, 0x84, 0xd4, 0xff, 0xa6, 0x40, 0xf5, 0xaa, 0x8f, + 0x07, 0xca, 0xc5, 0x66, 0xb7, 0x07, 0xd5, 0x60, 0xe2, 0xe3, 0xfc, 0x51, 0x8a, 0x6e, 0x16, 0x4c, + 0xfc, 0xee, 0x25, 0xed, 0x69, 0xe1, 0xdb, 0xf8, 0xba, 0xf0, 0xf3, 0xfc, 0x83, 0x07, 0x97, 0xf1, + 0x9c, 0x32, 0x7e, 0xef, 0xdc, 0xc3, 0x6b, 0x72, 0xb1, 0xf1, 0xf5, 0x4c, 0x3a, 0x17, 0x58, 0xb3, + 0x7b, 0xbd, 0x26, 0x9d, 0xf5, 0xd9, 0x1a, 0xf4, 0x7e, 0xf3, 0x1a, 0x89, 0xb3, 0x5f, 0x91, 0xea, + 0xbf, 0x52, 0xb2, 0xef, 0x40, 0xdf, 0x6d, 0x3e, 0xfe, 0x51, 0x91, 0x1f, 0x5b, 0x0a, 0xc6, 0x4b, + 0xbb, 0x5a, 0x7c, 0xa1, 0x7c, 0x9b, 0x04, 0x98, 0x8d, 0x6f, 0xe9, 0xdb, 0x88, 0xef, 0x37, 0x0a, + 0x34, 0x2e, 0x37, 0xcb, 0xba, 0x6c, 0x18, 0xfb, 0x3f, 0x99, 0xc7, 0xf5, 0xca, 0x48, 0x62, 0xb1, + 0x77, 0x27, 0x57, 0x5e, 0xf5, 0x73, 0x13, 0x1b, 0x7f, 0x2f, 0x4d, 0x5f, 0xac, 0x14, 0x14, 0x1b, + 0x01, 0x39, 0xf2, 0xa8, 0x83, 0x3e, 0x04, 0x44, 0xc5, 0x5f, 0x4c, 0x3c, 0x0f, 0x47, 0x12, 0x29, + 0xec, 0x2f, 0x5b, 0xaa, 0xc4, 0xe8, 0x9e, 0x97, 0x30, 0xa1, 0x97, 0xb0, 0x2e, 0x61, 0x4e, 0x46, + 0x2a, 0x33, 0xaf, 0xd1, 0xbc, 0x5c, 0x47, 0x53, 0x1e, 0xad, 0x5a, 0xc2, 0x9a, 0x60, 0xeb, 0x7f, + 0x56, 0xf8, 0x38, 0xc4, 0xff, 0x0b, 0x3f, 0xdc, 0x00, 0x7b, 0x84, 0xb9, 0x6c, 0xe2, 0xc8, 0xfb, + 0x2b, 0x59, 0x55, 0xdf, 0x0d, 0x3a, 0x09, 0x48, 0x90, 0x90, 0xb3, 0x9c, 0xa4, 0x94, 0x90, 0x90, + 0xb3, 0x8c, 0xe4, 0x01, 0xac, 0x09, 0x29, 0x61, 0x30, 0x92, 0x34, 0x0b, 0x82, 0x86, 0x8b, 0xee, + 0xa4, 0x30, 0x41, 0xc4, 0xe5, 0x64, 0x44, 0x8b, 0x09, 0x11, 0x39, 0xcb, 0x88, 0x9e, 0x2e, 0xbd, + 0x50, 0xbe, 0x52, 0xde, 0xf9, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2d, 0xba, 0x02, 0x36, 0x46, + 0x1b, 0x00, 0x00, +} diff --git a/protocol/dota_gcmessages_client_match_management/dota_gcmessages_client_match_management.go b/protocol/dota_gcmessages_client_match_management/dota_gcmessages_client_match_management.go new file mode 100755 index 0000000..d1fe8c9 --- /dev/null +++ b/protocol/dota_gcmessages_client_match_management/dota_gcmessages_client_match_management.go @@ -0,0 +1,2987 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: dota_gcmessages_client_match_management.proto + +package dota_gcmessages_client_match_management + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import dota_shared_enums "github.com/paralin/go-dota2/protocol/dota_shared_enums" +import dota_client_enums "github.com/paralin/go-dota2/protocol/dota_client_enums" +import base_gcmessages "github.com/paralin/go-dota2/protocol/base_gcmessages" +import dota_gcmessages_common_match_management "github.com/paralin/go-dota2/protocol/dota_gcmessages_common_match_management" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type EStartFindingMatchResult int32 + +const ( + EStartFindingMatchResult_k_EStartFindingMatchResult_Invalid EStartFindingMatchResult = 0 + EStartFindingMatchResult_k_EStartFindingMatchResult_OK EStartFindingMatchResult = 1 + EStartFindingMatchResult_k_EStartFindingMatchResult_AlreadySearching EStartFindingMatchResult = 2 + EStartFindingMatchResult_k_EStartFindingMatchResult_FailGeneric EStartFindingMatchResult = 100 + EStartFindingMatchResult_k_EStartFindingMatchResult_FailedIgnore EStartFindingMatchResult = 101 + EStartFindingMatchResult_k_EStartFindingMatchResult_MatchmakingDisabled EStartFindingMatchResult = 102 + EStartFindingMatchResult_k_EStartFindingMatchResult_RegionOffline EStartFindingMatchResult = 103 + EStartFindingMatchResult_k_EStartFindingMatchResult_MatchmakingCooldown EStartFindingMatchResult = 104 + EStartFindingMatchResult_k_EStartFindingMatchResult_ClientOutOfDate EStartFindingMatchResult = 105 + EStartFindingMatchResult_k_EStartFindingMatchResult_CompetitiveNoLowPriority EStartFindingMatchResult = 106 + EStartFindingMatchResult_k_EStartFindingMatchResult_CompetitiveNotUnlocked EStartFindingMatchResult = 107 + EStartFindingMatchResult_k_EStartFindingMatchResult_GameModeNotUnlocked EStartFindingMatchResult = 108 + EStartFindingMatchResult_k_EStartFindingMatchResult_CompetitiveNotEnoughSkillData EStartFindingMatchResult = 109 + EStartFindingMatchResult_k_EStartFindingMatchResult_MissingInitialSkill EStartFindingMatchResult = 110 + EStartFindingMatchResult_k_EStartFindingMatchResult_CompetitiveRankSpreadTooLarge EStartFindingMatchResult = 111 + EStartFindingMatchResult_k_EStartFindingMatchResult_MemberAlreadyInLobby EStartFindingMatchResult = 112 + EStartFindingMatchResult_k_EStartFindingMatchResult_MemberNotVACVerified EStartFindingMatchResult = 113 + EStartFindingMatchResult_k_EStartFindingMatchResult_WeekendTourneyBadPartySize EStartFindingMatchResult = 114 + EStartFindingMatchResult_k_EStartFindingMatchResult_WeekendTourneyTeamBuyInTooSmall EStartFindingMatchResult = 115 + EStartFindingMatchResult_k_EStartFindingMatchResult_WeekendTourneyIndividualBuyInTooLarge EStartFindingMatchResult = 116 + EStartFindingMatchResult_k_EStartFindingMatchResult_WeekendTourneyTeamBuyInTooLarge EStartFindingMatchResult = 117 + EStartFindingMatchResult_k_EStartFindingMatchResult_MemberMissingEventOwnership EStartFindingMatchResult = 118 + EStartFindingMatchResult_k_EStartFindingMatchResult_WeekendTourneyNotUnlocked EStartFindingMatchResult = 119 + EStartFindingMatchResult_k_EStartFindingMatchResult_WeekendTourneyRecentParticipation EStartFindingMatchResult = 120 + EStartFindingMatchResult_k_EStartFindingMatchResult_MemberMissingAnchoredPhoneNumber EStartFindingMatchResult = 121 + EStartFindingMatchResult_k_EStartFindingMatchResult_NotMemberOfClan EStartFindingMatchResult = 122 +) + +var EStartFindingMatchResult_name = map[int32]string{ + 0: "k_EStartFindingMatchResult_Invalid", + 1: "k_EStartFindingMatchResult_OK", + 2: "k_EStartFindingMatchResult_AlreadySearching", + 100: "k_EStartFindingMatchResult_FailGeneric", + 101: "k_EStartFindingMatchResult_FailedIgnore", + 102: "k_EStartFindingMatchResult_MatchmakingDisabled", + 103: "k_EStartFindingMatchResult_RegionOffline", + 104: "k_EStartFindingMatchResult_MatchmakingCooldown", + 105: "k_EStartFindingMatchResult_ClientOutOfDate", + 106: "k_EStartFindingMatchResult_CompetitiveNoLowPriority", + 107: "k_EStartFindingMatchResult_CompetitiveNotUnlocked", + 108: "k_EStartFindingMatchResult_GameModeNotUnlocked", + 109: "k_EStartFindingMatchResult_CompetitiveNotEnoughSkillData", + 110: "k_EStartFindingMatchResult_MissingInitialSkill", + 111: "k_EStartFindingMatchResult_CompetitiveRankSpreadTooLarge", + 112: "k_EStartFindingMatchResult_MemberAlreadyInLobby", + 113: "k_EStartFindingMatchResult_MemberNotVACVerified", + 114: "k_EStartFindingMatchResult_WeekendTourneyBadPartySize", + 115: "k_EStartFindingMatchResult_WeekendTourneyTeamBuyInTooSmall", + 116: "k_EStartFindingMatchResult_WeekendTourneyIndividualBuyInTooLarge", + 117: "k_EStartFindingMatchResult_WeekendTourneyTeamBuyInTooLarge", + 118: "k_EStartFindingMatchResult_MemberMissingEventOwnership", + 119: "k_EStartFindingMatchResult_WeekendTourneyNotUnlocked", + 120: "k_EStartFindingMatchResult_WeekendTourneyRecentParticipation", + 121: "k_EStartFindingMatchResult_MemberMissingAnchoredPhoneNumber", + 122: "k_EStartFindingMatchResult_NotMemberOfClan", +} +var EStartFindingMatchResult_value = map[string]int32{ + "k_EStartFindingMatchResult_Invalid": 0, + "k_EStartFindingMatchResult_OK": 1, + "k_EStartFindingMatchResult_AlreadySearching": 2, + "k_EStartFindingMatchResult_FailGeneric": 100, + "k_EStartFindingMatchResult_FailedIgnore": 101, + "k_EStartFindingMatchResult_MatchmakingDisabled": 102, + "k_EStartFindingMatchResult_RegionOffline": 103, + "k_EStartFindingMatchResult_MatchmakingCooldown": 104, + "k_EStartFindingMatchResult_ClientOutOfDate": 105, + "k_EStartFindingMatchResult_CompetitiveNoLowPriority": 106, + "k_EStartFindingMatchResult_CompetitiveNotUnlocked": 107, + "k_EStartFindingMatchResult_GameModeNotUnlocked": 108, + "k_EStartFindingMatchResult_CompetitiveNotEnoughSkillData": 109, + "k_EStartFindingMatchResult_MissingInitialSkill": 110, + "k_EStartFindingMatchResult_CompetitiveRankSpreadTooLarge": 111, + "k_EStartFindingMatchResult_MemberAlreadyInLobby": 112, + "k_EStartFindingMatchResult_MemberNotVACVerified": 113, + "k_EStartFindingMatchResult_WeekendTourneyBadPartySize": 114, + "k_EStartFindingMatchResult_WeekendTourneyTeamBuyInTooSmall": 115, + "k_EStartFindingMatchResult_WeekendTourneyIndividualBuyInTooLarge": 116, + "k_EStartFindingMatchResult_WeekendTourneyTeamBuyInTooLarge": 117, + "k_EStartFindingMatchResult_MemberMissingEventOwnership": 118, + "k_EStartFindingMatchResult_WeekendTourneyNotUnlocked": 119, + "k_EStartFindingMatchResult_WeekendTourneyRecentParticipation": 120, + "k_EStartFindingMatchResult_MemberMissingAnchoredPhoneNumber": 121, + "k_EStartFindingMatchResult_NotMemberOfClan": 122, +} + +func (x EStartFindingMatchResult) Enum() *EStartFindingMatchResult { + p := new(EStartFindingMatchResult) + *p = x + return p +} +func (x EStartFindingMatchResult) String() string { + return proto.EnumName(EStartFindingMatchResult_name, int32(x)) +} +func (x *EStartFindingMatchResult) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(EStartFindingMatchResult_value, data, "EStartFindingMatchResult") + if err != nil { + return err + } + *x = EStartFindingMatchResult(value) + return nil +} +func (EStartFindingMatchResult) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +type CMsgStartFindingMatch struct { + Key *string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` + Matchgroups *uint32 `protobuf:"varint,2,opt,name=matchgroups,def=4294967295" json:"matchgroups,omitempty"` + ClientVersion *uint32 `protobuf:"varint,3,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + GameModes *uint32 `protobuf:"varint,4,opt,name=game_modes,json=gameModes,def=4294967295" json:"game_modes,omitempty"` + BotDifficulty *dota_shared_enums.DOTABotDifficulty `protobuf:"varint,5,opt,name=bot_difficulty,json=botDifficulty,enum=DOTABotDifficulty,def=3" json:"bot_difficulty,omitempty"` + MatchType *dota_shared_enums.MatchType `protobuf:"varint,6,opt,name=match_type,json=matchType,enum=MatchType,def=0" json:"match_type,omitempty"` + Matchlanguages *uint32 `protobuf:"varint,7,opt,name=matchlanguages,def=4294967295" json:"matchlanguages,omitempty"` + TeamId *uint32 `protobuf:"varint,8,opt,name=team_id,json=teamId" json:"team_id,omitempty"` + GameLanguageEnum *dota_shared_enums.MatchLanguages `protobuf:"varint,10,opt,name=game_language_enum,json=gameLanguageEnum,enum=MatchLanguages,def=0" json:"game_language_enum,omitempty"` + GameLanguageName *string `protobuf:"bytes,11,opt,name=game_language_name,json=gameLanguageName" json:"game_language_name,omitempty"` + PingData *base_gcmessages.CMsgClientPingData `protobuf:"bytes,12,opt,name=ping_data,json=pingData" json:"ping_data,omitempty"` + RegionSelectFlags *uint32 `protobuf:"varint,13,opt,name=region_select_flags,json=regionSelectFlags" json:"region_select_flags,omitempty"` + SoloQueue *bool `protobuf:"varint,14,opt,name=solo_queue,json=soloQueue" json:"solo_queue,omitempty"` + BotScriptIndex *uint32 `protobuf:"varint,15,opt,name=bot_script_index,json=botScriptIndex" json:"bot_script_index,omitempty"` + SteamClanAccountId *uint32 `protobuf:"varint,16,opt,name=steam_clan_account_id,json=steamClanAccountId" json:"steam_clan_account_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgStartFindingMatch) Reset() { *m = CMsgStartFindingMatch{} } +func (m *CMsgStartFindingMatch) String() string { return proto.CompactTextString(m) } +func (*CMsgStartFindingMatch) ProtoMessage() {} +func (*CMsgStartFindingMatch) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +const Default_CMsgStartFindingMatch_Matchgroups uint32 = 4294967295 +const Default_CMsgStartFindingMatch_GameModes uint32 = 4294967295 +const Default_CMsgStartFindingMatch_BotDifficulty dota_shared_enums.DOTABotDifficulty = dota_shared_enums.DOTABotDifficulty_BOT_DIFFICULTY_HARD +const Default_CMsgStartFindingMatch_MatchType dota_shared_enums.MatchType = dota_shared_enums.MatchType_MATCH_TYPE_CASUAL +const Default_CMsgStartFindingMatch_Matchlanguages uint32 = 4294967295 +const Default_CMsgStartFindingMatch_GameLanguageEnum dota_shared_enums.MatchLanguages = dota_shared_enums.MatchLanguages_MATCH_LANGUAGE_INVALID + +func (m *CMsgStartFindingMatch) GetKey() string { + if m != nil && m.Key != nil { + return *m.Key + } + return "" +} + +func (m *CMsgStartFindingMatch) GetMatchgroups() uint32 { + if m != nil && m.Matchgroups != nil { + return *m.Matchgroups + } + return Default_CMsgStartFindingMatch_Matchgroups +} + +func (m *CMsgStartFindingMatch) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +func (m *CMsgStartFindingMatch) GetGameModes() uint32 { + if m != nil && m.GameModes != nil { + return *m.GameModes + } + return Default_CMsgStartFindingMatch_GameModes +} + +func (m *CMsgStartFindingMatch) GetBotDifficulty() dota_shared_enums.DOTABotDifficulty { + if m != nil && m.BotDifficulty != nil { + return *m.BotDifficulty + } + return Default_CMsgStartFindingMatch_BotDifficulty +} + +func (m *CMsgStartFindingMatch) GetMatchType() dota_shared_enums.MatchType { + if m != nil && m.MatchType != nil { + return *m.MatchType + } + return Default_CMsgStartFindingMatch_MatchType +} + +func (m *CMsgStartFindingMatch) GetMatchlanguages() uint32 { + if m != nil && m.Matchlanguages != nil { + return *m.Matchlanguages + } + return Default_CMsgStartFindingMatch_Matchlanguages +} + +func (m *CMsgStartFindingMatch) GetTeamId() uint32 { + if m != nil && m.TeamId != nil { + return *m.TeamId + } + return 0 +} + +func (m *CMsgStartFindingMatch) GetGameLanguageEnum() dota_shared_enums.MatchLanguages { + if m != nil && m.GameLanguageEnum != nil { + return *m.GameLanguageEnum + } + return Default_CMsgStartFindingMatch_GameLanguageEnum +} + +func (m *CMsgStartFindingMatch) GetGameLanguageName() string { + if m != nil && m.GameLanguageName != nil { + return *m.GameLanguageName + } + return "" +} + +func (m *CMsgStartFindingMatch) GetPingData() *base_gcmessages.CMsgClientPingData { + if m != nil { + return m.PingData + } + return nil +} + +func (m *CMsgStartFindingMatch) GetRegionSelectFlags() uint32 { + if m != nil && m.RegionSelectFlags != nil { + return *m.RegionSelectFlags + } + return 0 +} + +func (m *CMsgStartFindingMatch) GetSoloQueue() bool { + if m != nil && m.SoloQueue != nil { + return *m.SoloQueue + } + return false +} + +func (m *CMsgStartFindingMatch) GetBotScriptIndex() uint32 { + if m != nil && m.BotScriptIndex != nil { + return *m.BotScriptIndex + } + return 0 +} + +func (m *CMsgStartFindingMatch) GetSteamClanAccountId() uint32 { + if m != nil && m.SteamClanAccountId != nil { + return *m.SteamClanAccountId + } + return 0 +} + +type CMsgStartFindingMatchResult struct { + LegacyGenericEresult *uint32 `protobuf:"varint,1,opt,name=legacy_generic_eresult,json=legacyGenericEresult,def=2" json:"legacy_generic_eresult,omitempty"` + Result *EStartFindingMatchResult `protobuf:"varint,2,opt,name=result,enum=EStartFindingMatchResult,def=0" json:"result,omitempty"` + ErrorToken *string `protobuf:"bytes,3,opt,name=error_token,json=errorToken" json:"error_token,omitempty"` + DebugMessage *string `protobuf:"bytes,4,opt,name=debug_message,json=debugMessage" json:"debug_message,omitempty"` + ResponsiblePartyMembers []uint64 `protobuf:"fixed64,5,rep,name=responsible_party_members,json=responsiblePartyMembers" json:"responsible_party_members,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgStartFindingMatchResult) Reset() { *m = CMsgStartFindingMatchResult{} } +func (m *CMsgStartFindingMatchResult) String() string { return proto.CompactTextString(m) } +func (*CMsgStartFindingMatchResult) ProtoMessage() {} +func (*CMsgStartFindingMatchResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +const Default_CMsgStartFindingMatchResult_LegacyGenericEresult uint32 = 2 +const Default_CMsgStartFindingMatchResult_Result EStartFindingMatchResult = EStartFindingMatchResult_k_EStartFindingMatchResult_Invalid + +func (m *CMsgStartFindingMatchResult) GetLegacyGenericEresult() uint32 { + if m != nil && m.LegacyGenericEresult != nil { + return *m.LegacyGenericEresult + } + return Default_CMsgStartFindingMatchResult_LegacyGenericEresult +} + +func (m *CMsgStartFindingMatchResult) GetResult() EStartFindingMatchResult { + if m != nil && m.Result != nil { + return *m.Result + } + return Default_CMsgStartFindingMatchResult_Result +} + +func (m *CMsgStartFindingMatchResult) GetErrorToken() string { + if m != nil && m.ErrorToken != nil { + return *m.ErrorToken + } + return "" +} + +func (m *CMsgStartFindingMatchResult) GetDebugMessage() string { + if m != nil && m.DebugMessage != nil { + return *m.DebugMessage + } + return "" +} + +func (m *CMsgStartFindingMatchResult) GetResponsiblePartyMembers() []uint64 { + if m != nil { + return m.ResponsiblePartyMembers + } + return nil +} + +type CMsgStopFindingMatch struct { + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgStopFindingMatch) Reset() { *m = CMsgStopFindingMatch{} } +func (m *CMsgStopFindingMatch) String() string { return proto.CompactTextString(m) } +func (*CMsgStopFindingMatch) ProtoMessage() {} +func (*CMsgStopFindingMatch) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +type CMsgPartyBuilderOptions struct { + AdditionalSlots *uint32 `protobuf:"varint,1,opt,name=additional_slots,json=additionalSlots" json:"additional_slots,omitempty"` + MatchType *dota_shared_enums.MatchType `protobuf:"varint,2,opt,name=match_type,json=matchType,enum=MatchType,def=0" json:"match_type,omitempty"` + Matchgroups *uint32 `protobuf:"varint,3,opt,name=matchgroups" json:"matchgroups,omitempty"` + ClientVersion *uint32 `protobuf:"varint,4,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + Language *dota_shared_enums.MatchLanguages `protobuf:"varint,5,opt,name=language,enum=MatchLanguages,def=0" json:"language,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPartyBuilderOptions) Reset() { *m = CMsgPartyBuilderOptions{} } +func (m *CMsgPartyBuilderOptions) String() string { return proto.CompactTextString(m) } +func (*CMsgPartyBuilderOptions) ProtoMessage() {} +func (*CMsgPartyBuilderOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +const Default_CMsgPartyBuilderOptions_MatchType dota_shared_enums.MatchType = dota_shared_enums.MatchType_MATCH_TYPE_CASUAL +const Default_CMsgPartyBuilderOptions_Language dota_shared_enums.MatchLanguages = dota_shared_enums.MatchLanguages_MATCH_LANGUAGE_INVALID + +func (m *CMsgPartyBuilderOptions) GetAdditionalSlots() uint32 { + if m != nil && m.AdditionalSlots != nil { + return *m.AdditionalSlots + } + return 0 +} + +func (m *CMsgPartyBuilderOptions) GetMatchType() dota_shared_enums.MatchType { + if m != nil && m.MatchType != nil { + return *m.MatchType + } + return Default_CMsgPartyBuilderOptions_MatchType +} + +func (m *CMsgPartyBuilderOptions) GetMatchgroups() uint32 { + if m != nil && m.Matchgroups != nil { + return *m.Matchgroups + } + return 0 +} + +func (m *CMsgPartyBuilderOptions) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +func (m *CMsgPartyBuilderOptions) GetLanguage() dota_shared_enums.MatchLanguages { + if m != nil && m.Language != nil { + return *m.Language + } + return Default_CMsgPartyBuilderOptions_Language +} + +type CMsgReadyUp struct { + State *dota_shared_enums.DOTALobbyReadyState `protobuf:"varint,1,opt,name=state,enum=DOTALobbyReadyState,def=0" json:"state,omitempty"` + ReadyUpKey *uint64 `protobuf:"fixed64,2,opt,name=ready_up_key,json=readyUpKey" json:"ready_up_key,omitempty"` + HardwareSpecs *dota_shared_enums.CDOTAClientHardwareSpecs `protobuf:"bytes,3,opt,name=hardware_specs,json=hardwareSpecs" json:"hardware_specs,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgReadyUp) Reset() { *m = CMsgReadyUp{} } +func (m *CMsgReadyUp) String() string { return proto.CompactTextString(m) } +func (*CMsgReadyUp) ProtoMessage() {} +func (*CMsgReadyUp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +const Default_CMsgReadyUp_State dota_shared_enums.DOTALobbyReadyState = dota_shared_enums.DOTALobbyReadyState_DOTALobbyReadyState_UNDECLARED + +func (m *CMsgReadyUp) GetState() dota_shared_enums.DOTALobbyReadyState { + if m != nil && m.State != nil { + return *m.State + } + return Default_CMsgReadyUp_State +} + +func (m *CMsgReadyUp) GetReadyUpKey() uint64 { + if m != nil && m.ReadyUpKey != nil { + return *m.ReadyUpKey + } + return 0 +} + +func (m *CMsgReadyUp) GetHardwareSpecs() *dota_shared_enums.CDOTAClientHardwareSpecs { + if m != nil { + return m.HardwareSpecs + } + return nil +} + +type CMsgReadyUpStatus struct { + LobbyId *uint64 `protobuf:"fixed64,1,opt,name=lobby_id,json=lobbyId" json:"lobby_id,omitempty"` + AcceptedIds []uint32 `protobuf:"varint,2,rep,name=accepted_ids,json=acceptedIds" json:"accepted_ids,omitempty"` + DeclinedIds []uint32 `protobuf:"varint,3,rep,name=declined_ids,json=declinedIds" json:"declined_ids,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgReadyUpStatus) Reset() { *m = CMsgReadyUpStatus{} } +func (m *CMsgReadyUpStatus) String() string { return proto.CompactTextString(m) } +func (*CMsgReadyUpStatus) ProtoMessage() {} +func (*CMsgReadyUpStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *CMsgReadyUpStatus) GetLobbyId() uint64 { + if m != nil && m.LobbyId != nil { + return *m.LobbyId + } + return 0 +} + +func (m *CMsgReadyUpStatus) GetAcceptedIds() []uint32 { + if m != nil { + return m.AcceptedIds + } + return nil +} + +func (m *CMsgReadyUpStatus) GetDeclinedIds() []uint32 { + if m != nil { + return m.DeclinedIds + } + return nil +} + +type CMsgAbandonCurrentGame struct { + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgAbandonCurrentGame) Reset() { *m = CMsgAbandonCurrentGame{} } +func (m *CMsgAbandonCurrentGame) String() string { return proto.CompactTextString(m) } +func (*CMsgAbandonCurrentGame) ProtoMessage() {} +func (*CMsgAbandonCurrentGame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } + +type CMsgPracticeLobbySetDetails struct { + LobbyId *uint64 `protobuf:"varint,1,opt,name=lobby_id,json=lobbyId" json:"lobby_id,omitempty"` + GameName *string `protobuf:"bytes,2,opt,name=game_name,json=gameName" json:"game_name,omitempty"` + TeamDetails []*dota_gcmessages_common_match_management.CLobbyTeamDetails `protobuf:"bytes,3,rep,name=team_details,json=teamDetails" json:"team_details,omitempty"` + ServerRegion *uint32 `protobuf:"varint,4,opt,name=server_region,json=serverRegion" json:"server_region,omitempty"` + GameMode *uint32 `protobuf:"varint,5,opt,name=game_mode,json=gameMode" json:"game_mode,omitempty"` + CmPick *dota_shared_enums.DOTA_CM_PICK `protobuf:"varint,6,opt,name=cm_pick,json=cmPick,enum=DOTA_CM_PICK,def=0" json:"cm_pick,omitempty"` + BotDifficultyRadiant *dota_shared_enums.DOTABotDifficulty `protobuf:"varint,9,opt,name=bot_difficulty_radiant,json=botDifficultyRadiant,enum=DOTABotDifficulty,def=0" json:"bot_difficulty_radiant,omitempty"` + AllowCheats *bool `protobuf:"varint,10,opt,name=allow_cheats,json=allowCheats" json:"allow_cheats,omitempty"` + FillWithBots *bool `protobuf:"varint,11,opt,name=fill_with_bots,json=fillWithBots" json:"fill_with_bots,omitempty"` + IntroMode *bool `protobuf:"varint,12,opt,name=intro_mode,json=introMode" json:"intro_mode,omitempty"` + AllowSpectating *bool `protobuf:"varint,13,opt,name=allow_spectating,json=allowSpectating" json:"allow_spectating,omitempty"` + GameVersion *dota_shared_enums.DOTAGameVersion `protobuf:"varint,14,opt,name=game_version,json=gameVersion,enum=DOTAGameVersion,def=0" json:"game_version,omitempty"` + PassKey *string `protobuf:"bytes,15,opt,name=pass_key,json=passKey" json:"pass_key,omitempty"` + Leagueid *uint32 `protobuf:"varint,16,opt,name=leagueid" json:"leagueid,omitempty"` + PenaltyLevelRadiant *uint32 `protobuf:"varint,17,opt,name=penalty_level_radiant,json=penaltyLevelRadiant" json:"penalty_level_radiant,omitempty"` + PenaltyLevelDire *uint32 `protobuf:"varint,18,opt,name=penalty_level_dire,json=penaltyLevelDire" json:"penalty_level_dire,omitempty"` + LoadGameId *uint32 `protobuf:"varint,19,opt,name=load_game_id,json=loadGameId" json:"load_game_id,omitempty"` + SeriesType *uint32 `protobuf:"varint,20,opt,name=series_type,json=seriesType" json:"series_type,omitempty"` + RadiantSeriesWins *uint32 `protobuf:"varint,21,opt,name=radiant_series_wins,json=radiantSeriesWins" json:"radiant_series_wins,omitempty"` + DireSeriesWins *uint32 `protobuf:"varint,22,opt,name=dire_series_wins,json=direSeriesWins" json:"dire_series_wins,omitempty"` + Allchat *bool `protobuf:"varint,23,opt,name=allchat,def=0" json:"allchat,omitempty"` + DotaTvDelay *dota_gcmessages_common_match_management.LobbyDotaTVDelay `protobuf:"varint,24,opt,name=dota_tv_delay,json=dotaTvDelay,enum=LobbyDotaTVDelay,def=1" json:"dota_tv_delay,omitempty"` + Lan *bool `protobuf:"varint,25,opt,name=lan" json:"lan,omitempty"` + CustomGameMode *string `protobuf:"bytes,26,opt,name=custom_game_mode,json=customGameMode" json:"custom_game_mode,omitempty"` + CustomMapName *string `protobuf:"bytes,27,opt,name=custom_map_name,json=customMapName" json:"custom_map_name,omitempty"` + CustomDifficulty *uint32 `protobuf:"varint,28,opt,name=custom_difficulty,json=customDifficulty" json:"custom_difficulty,omitempty"` + CustomGameId *uint64 `protobuf:"varint,29,opt,name=custom_game_id,json=customGameId" json:"custom_game_id,omitempty"` + CustomMinPlayers *uint32 `protobuf:"varint,30,opt,name=custom_min_players,json=customMinPlayers" json:"custom_min_players,omitempty"` + CustomMaxPlayers *uint32 `protobuf:"varint,31,opt,name=custom_max_players,json=customMaxPlayers" json:"custom_max_players,omitempty"` + LanHostPingToServerRegion *uint32 `protobuf:"varint,32,opt,name=lan_host_ping_to_server_region,json=lanHostPingToServerRegion" json:"lan_host_ping_to_server_region,omitempty"` + Visibility *dota_shared_enums.DOTALobbyVisibility `protobuf:"varint,33,opt,name=visibility,enum=DOTALobbyVisibility,def=0" json:"visibility,omitempty"` + CustomGameCrc *uint64 `protobuf:"fixed64,34,opt,name=custom_game_crc,json=customGameCrc" json:"custom_game_crc,omitempty"` + LeagueSeriesId *uint32 `protobuf:"varint,35,opt,name=league_series_id,json=leagueSeriesId" json:"league_series_id,omitempty"` + LeagueGameId *uint32 `protobuf:"varint,36,opt,name=league_game_id,json=leagueGameId" json:"league_game_id,omitempty"` + CustomGameTimestamp *uint32 `protobuf:"fixed32,37,opt,name=custom_game_timestamp,json=customGameTimestamp" json:"custom_game_timestamp,omitempty"` + PreviousMatchOverride *uint64 `protobuf:"varint,38,opt,name=previous_match_override,json=previousMatchOverride" json:"previous_match_override,omitempty"` + PauseSetting *dota_gcmessages_common_match_management.LobbyDotaPauseSetting `protobuf:"varint,42,opt,name=pause_setting,json=pauseSetting,enum=LobbyDotaPauseSetting,def=0" json:"pause_setting,omitempty"` + BotDifficultyDire *dota_shared_enums.DOTABotDifficulty `protobuf:"varint,43,opt,name=bot_difficulty_dire,json=botDifficultyDire,enum=DOTABotDifficulty,def=0" json:"bot_difficulty_dire,omitempty"` + BotRadiant *uint64 `protobuf:"varint,44,opt,name=bot_radiant,json=botRadiant" json:"bot_radiant,omitempty"` + BotDire *uint64 `protobuf:"varint,45,opt,name=bot_dire,json=botDire" json:"bot_dire,omitempty"` + SelectionPriorityRules *dota_shared_enums.DOTASelectionPriorityRules `protobuf:"varint,46,opt,name=selection_priority_rules,json=selectionPriorityRules,enum=DOTASelectionPriorityRules,def=0" json:"selection_priority_rules,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbySetDetails) Reset() { *m = CMsgPracticeLobbySetDetails{} } +func (m *CMsgPracticeLobbySetDetails) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbySetDetails) ProtoMessage() {} +func (*CMsgPracticeLobbySetDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } + +const Default_CMsgPracticeLobbySetDetails_CmPick dota_shared_enums.DOTA_CM_PICK = dota_shared_enums.DOTA_CM_PICK_DOTA_CM_RANDOM +const Default_CMsgPracticeLobbySetDetails_BotDifficultyRadiant dota_shared_enums.DOTABotDifficulty = dota_shared_enums.DOTABotDifficulty_BOT_DIFFICULTY_PASSIVE +const Default_CMsgPracticeLobbySetDetails_GameVersion dota_shared_enums.DOTAGameVersion = dota_shared_enums.DOTAGameVersion_GAME_VERSION_CURRENT +const Default_CMsgPracticeLobbySetDetails_Allchat bool = false +const Default_CMsgPracticeLobbySetDetails_DotaTvDelay dota_gcmessages_common_match_management.LobbyDotaTVDelay = dota_gcmessages_common_match_management.LobbyDotaTVDelay_LobbyDotaTV_120 +const Default_CMsgPracticeLobbySetDetails_Visibility dota_shared_enums.DOTALobbyVisibility = dota_shared_enums.DOTALobbyVisibility_DOTALobbyVisibility_Public +const Default_CMsgPracticeLobbySetDetails_PauseSetting dota_gcmessages_common_match_management.LobbyDotaPauseSetting = dota_gcmessages_common_match_management.LobbyDotaPauseSetting_LobbyDotaPauseSetting_Unlimited +const Default_CMsgPracticeLobbySetDetails_BotDifficultyDire dota_shared_enums.DOTABotDifficulty = dota_shared_enums.DOTABotDifficulty_BOT_DIFFICULTY_PASSIVE +const Default_CMsgPracticeLobbySetDetails_SelectionPriorityRules dota_shared_enums.DOTASelectionPriorityRules = dota_shared_enums.DOTASelectionPriorityRules_k_DOTASelectionPriorityRules_Manual + +func (m *CMsgPracticeLobbySetDetails) GetLobbyId() uint64 { + if m != nil && m.LobbyId != nil { + return *m.LobbyId + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetGameName() string { + if m != nil && m.GameName != nil { + return *m.GameName + } + return "" +} + +func (m *CMsgPracticeLobbySetDetails) GetTeamDetails() []*dota_gcmessages_common_match_management.CLobbyTeamDetails { + if m != nil { + return m.TeamDetails + } + return nil +} + +func (m *CMsgPracticeLobbySetDetails) GetServerRegion() uint32 { + if m != nil && m.ServerRegion != nil { + return *m.ServerRegion + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetGameMode() uint32 { + if m != nil && m.GameMode != nil { + return *m.GameMode + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetCmPick() dota_shared_enums.DOTA_CM_PICK { + if m != nil && m.CmPick != nil { + return *m.CmPick + } + return Default_CMsgPracticeLobbySetDetails_CmPick +} + +func (m *CMsgPracticeLobbySetDetails) GetBotDifficultyRadiant() dota_shared_enums.DOTABotDifficulty { + if m != nil && m.BotDifficultyRadiant != nil { + return *m.BotDifficultyRadiant + } + return Default_CMsgPracticeLobbySetDetails_BotDifficultyRadiant +} + +func (m *CMsgPracticeLobbySetDetails) GetAllowCheats() bool { + if m != nil && m.AllowCheats != nil { + return *m.AllowCheats + } + return false +} + +func (m *CMsgPracticeLobbySetDetails) GetFillWithBots() bool { + if m != nil && m.FillWithBots != nil { + return *m.FillWithBots + } + return false +} + +func (m *CMsgPracticeLobbySetDetails) GetIntroMode() bool { + if m != nil && m.IntroMode != nil { + return *m.IntroMode + } + return false +} + +func (m *CMsgPracticeLobbySetDetails) GetAllowSpectating() bool { + if m != nil && m.AllowSpectating != nil { + return *m.AllowSpectating + } + return false +} + +func (m *CMsgPracticeLobbySetDetails) GetGameVersion() dota_shared_enums.DOTAGameVersion { + if m != nil && m.GameVersion != nil { + return *m.GameVersion + } + return Default_CMsgPracticeLobbySetDetails_GameVersion +} + +func (m *CMsgPracticeLobbySetDetails) GetPassKey() string { + if m != nil && m.PassKey != nil { + return *m.PassKey + } + return "" +} + +func (m *CMsgPracticeLobbySetDetails) GetLeagueid() uint32 { + if m != nil && m.Leagueid != nil { + return *m.Leagueid + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetPenaltyLevelRadiant() uint32 { + if m != nil && m.PenaltyLevelRadiant != nil { + return *m.PenaltyLevelRadiant + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetPenaltyLevelDire() uint32 { + if m != nil && m.PenaltyLevelDire != nil { + return *m.PenaltyLevelDire + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetLoadGameId() uint32 { + if m != nil && m.LoadGameId != nil { + return *m.LoadGameId + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetSeriesType() uint32 { + if m != nil && m.SeriesType != nil { + return *m.SeriesType + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetRadiantSeriesWins() uint32 { + if m != nil && m.RadiantSeriesWins != nil { + return *m.RadiantSeriesWins + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetDireSeriesWins() uint32 { + if m != nil && m.DireSeriesWins != nil { + return *m.DireSeriesWins + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetAllchat() bool { + if m != nil && m.Allchat != nil { + return *m.Allchat + } + return Default_CMsgPracticeLobbySetDetails_Allchat +} + +func (m *CMsgPracticeLobbySetDetails) GetDotaTvDelay() dota_gcmessages_common_match_management.LobbyDotaTVDelay { + if m != nil && m.DotaTvDelay != nil { + return *m.DotaTvDelay + } + return Default_CMsgPracticeLobbySetDetails_DotaTvDelay +} + +func (m *CMsgPracticeLobbySetDetails) GetLan() bool { + if m != nil && m.Lan != nil { + return *m.Lan + } + return false +} + +func (m *CMsgPracticeLobbySetDetails) GetCustomGameMode() string { + if m != nil && m.CustomGameMode != nil { + return *m.CustomGameMode + } + return "" +} + +func (m *CMsgPracticeLobbySetDetails) GetCustomMapName() string { + if m != nil && m.CustomMapName != nil { + return *m.CustomMapName + } + return "" +} + +func (m *CMsgPracticeLobbySetDetails) GetCustomDifficulty() uint32 { + if m != nil && m.CustomDifficulty != nil { + return *m.CustomDifficulty + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetCustomGameId() uint64 { + if m != nil && m.CustomGameId != nil { + return *m.CustomGameId + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetCustomMinPlayers() uint32 { + if m != nil && m.CustomMinPlayers != nil { + return *m.CustomMinPlayers + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetCustomMaxPlayers() uint32 { + if m != nil && m.CustomMaxPlayers != nil { + return *m.CustomMaxPlayers + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetLanHostPingToServerRegion() uint32 { + if m != nil && m.LanHostPingToServerRegion != nil { + return *m.LanHostPingToServerRegion + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetVisibility() dota_shared_enums.DOTALobbyVisibility { + if m != nil && m.Visibility != nil { + return *m.Visibility + } + return Default_CMsgPracticeLobbySetDetails_Visibility +} + +func (m *CMsgPracticeLobbySetDetails) GetCustomGameCrc() uint64 { + if m != nil && m.CustomGameCrc != nil { + return *m.CustomGameCrc + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetLeagueSeriesId() uint32 { + if m != nil && m.LeagueSeriesId != nil { + return *m.LeagueSeriesId + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetLeagueGameId() uint32 { + if m != nil && m.LeagueGameId != nil { + return *m.LeagueGameId + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetCustomGameTimestamp() uint32 { + if m != nil && m.CustomGameTimestamp != nil { + return *m.CustomGameTimestamp + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetPreviousMatchOverride() uint64 { + if m != nil && m.PreviousMatchOverride != nil { + return *m.PreviousMatchOverride + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetPauseSetting() dota_gcmessages_common_match_management.LobbyDotaPauseSetting { + if m != nil && m.PauseSetting != nil { + return *m.PauseSetting + } + return Default_CMsgPracticeLobbySetDetails_PauseSetting +} + +func (m *CMsgPracticeLobbySetDetails) GetBotDifficultyDire() dota_shared_enums.DOTABotDifficulty { + if m != nil && m.BotDifficultyDire != nil { + return *m.BotDifficultyDire + } + return Default_CMsgPracticeLobbySetDetails_BotDifficultyDire +} + +func (m *CMsgPracticeLobbySetDetails) GetBotRadiant() uint64 { + if m != nil && m.BotRadiant != nil { + return *m.BotRadiant + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetBotDire() uint64 { + if m != nil && m.BotDire != nil { + return *m.BotDire + } + return 0 +} + +func (m *CMsgPracticeLobbySetDetails) GetSelectionPriorityRules() dota_shared_enums.DOTASelectionPriorityRules { + if m != nil && m.SelectionPriorityRules != nil { + return *m.SelectionPriorityRules + } + return Default_CMsgPracticeLobbySetDetails_SelectionPriorityRules +} + +type CMsgPracticeLobbyCreate struct { + SearchKey *string `protobuf:"bytes,1,opt,name=search_key,json=searchKey" json:"search_key,omitempty"` + PassKey *string `protobuf:"bytes,5,opt,name=pass_key,json=passKey" json:"pass_key,omitempty"` + ClientVersion *uint32 `protobuf:"varint,6,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + LobbyDetails *CMsgPracticeLobbySetDetails `protobuf:"bytes,7,opt,name=lobby_details,json=lobbyDetails" json:"lobby_details,omitempty"` + SaveGame *CMsgPracticeLobbyCreate_SaveGame `protobuf:"bytes,8,opt,name=save_game,json=saveGame" json:"save_game,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyCreate) Reset() { *m = CMsgPracticeLobbyCreate{} } +func (m *CMsgPracticeLobbyCreate) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyCreate) ProtoMessage() {} +func (*CMsgPracticeLobbyCreate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } + +func (m *CMsgPracticeLobbyCreate) GetSearchKey() string { + if m != nil && m.SearchKey != nil { + return *m.SearchKey + } + return "" +} + +func (m *CMsgPracticeLobbyCreate) GetPassKey() string { + if m != nil && m.PassKey != nil { + return *m.PassKey + } + return "" +} + +func (m *CMsgPracticeLobbyCreate) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +func (m *CMsgPracticeLobbyCreate) GetLobbyDetails() *CMsgPracticeLobbySetDetails { + if m != nil { + return m.LobbyDetails + } + return nil +} + +func (m *CMsgPracticeLobbyCreate) GetSaveGame() *CMsgPracticeLobbyCreate_SaveGame { + if m != nil { + return m.SaveGame + } + return nil +} + +type CMsgPracticeLobbyCreate_SaveGame struct { + Data []byte `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"` + Version *int32 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"` + SteamId *uint64 `protobuf:"fixed64,3,opt,name=steam_id,json=steamId" json:"steam_id,omitempty"` + Signature *uint64 `protobuf:"fixed64,4,opt,name=signature" json:"signature,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyCreate_SaveGame) Reset() { *m = CMsgPracticeLobbyCreate_SaveGame{} } +func (m *CMsgPracticeLobbyCreate_SaveGame) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyCreate_SaveGame) ProtoMessage() {} +func (*CMsgPracticeLobbyCreate_SaveGame) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{8, 0} +} + +func (m *CMsgPracticeLobbyCreate_SaveGame) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +func (m *CMsgPracticeLobbyCreate_SaveGame) GetVersion() int32 { + if m != nil && m.Version != nil { + return *m.Version + } + return 0 +} + +func (m *CMsgPracticeLobbyCreate_SaveGame) GetSteamId() uint64 { + if m != nil && m.SteamId != nil { + return *m.SteamId + } + return 0 +} + +func (m *CMsgPracticeLobbyCreate_SaveGame) GetSignature() uint64 { + if m != nil && m.Signature != nil { + return *m.Signature + } + return 0 +} + +type CMsgPracticeLobbySetTeamSlot struct { + Team *dota_shared_enums.DOTA_GC_TEAM `protobuf:"varint,1,opt,name=team,enum=DOTA_GC_TEAM,def=0" json:"team,omitempty"` + Slot *uint32 `protobuf:"varint,2,opt,name=slot" json:"slot,omitempty"` + BotDifficulty *dota_shared_enums.DOTABotDifficulty `protobuf:"varint,3,opt,name=bot_difficulty,json=botDifficulty,enum=DOTABotDifficulty,def=0" json:"bot_difficulty,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbySetTeamSlot) Reset() { *m = CMsgPracticeLobbySetTeamSlot{} } +func (m *CMsgPracticeLobbySetTeamSlot) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbySetTeamSlot) ProtoMessage() {} +func (*CMsgPracticeLobbySetTeamSlot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } + +const Default_CMsgPracticeLobbySetTeamSlot_Team dota_shared_enums.DOTA_GC_TEAM = dota_shared_enums.DOTA_GC_TEAM_DOTA_GC_TEAM_GOOD_GUYS +const Default_CMsgPracticeLobbySetTeamSlot_BotDifficulty dota_shared_enums.DOTABotDifficulty = dota_shared_enums.DOTABotDifficulty_BOT_DIFFICULTY_PASSIVE + +func (m *CMsgPracticeLobbySetTeamSlot) GetTeam() dota_shared_enums.DOTA_GC_TEAM { + if m != nil && m.Team != nil { + return *m.Team + } + return Default_CMsgPracticeLobbySetTeamSlot_Team +} + +func (m *CMsgPracticeLobbySetTeamSlot) GetSlot() uint32 { + if m != nil && m.Slot != nil { + return *m.Slot + } + return 0 +} + +func (m *CMsgPracticeLobbySetTeamSlot) GetBotDifficulty() dota_shared_enums.DOTABotDifficulty { + if m != nil && m.BotDifficulty != nil { + return *m.BotDifficulty + } + return Default_CMsgPracticeLobbySetTeamSlot_BotDifficulty +} + +type CMsgPracticeLobbySetCoach struct { + Team *dota_shared_enums.DOTA_GC_TEAM `protobuf:"varint,1,opt,name=team,enum=DOTA_GC_TEAM,def=0" json:"team,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbySetCoach) Reset() { *m = CMsgPracticeLobbySetCoach{} } +func (m *CMsgPracticeLobbySetCoach) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbySetCoach) ProtoMessage() {} +func (*CMsgPracticeLobbySetCoach) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } + +const Default_CMsgPracticeLobbySetCoach_Team dota_shared_enums.DOTA_GC_TEAM = dota_shared_enums.DOTA_GC_TEAM_DOTA_GC_TEAM_GOOD_GUYS + +func (m *CMsgPracticeLobbySetCoach) GetTeam() dota_shared_enums.DOTA_GC_TEAM { + if m != nil && m.Team != nil { + return *m.Team + } + return Default_CMsgPracticeLobbySetCoach_Team +} + +type CMsgPracticeLobbyJoinBroadcastChannel struct { + Channel *uint32 `protobuf:"varint,1,opt,name=channel" json:"channel,omitempty"` + PreferredDescription *string `protobuf:"bytes,2,opt,name=preferred_description,json=preferredDescription" json:"preferred_description,omitempty"` + PreferredCountryCode *string `protobuf:"bytes,3,opt,name=preferred_country_code,json=preferredCountryCode" json:"preferred_country_code,omitempty"` + PreferredLanguageCode *string `protobuf:"bytes,4,opt,name=preferred_language_code,json=preferredLanguageCode" json:"preferred_language_code,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyJoinBroadcastChannel) Reset() { *m = CMsgPracticeLobbyJoinBroadcastChannel{} } +func (m *CMsgPracticeLobbyJoinBroadcastChannel) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyJoinBroadcastChannel) ProtoMessage() {} +func (*CMsgPracticeLobbyJoinBroadcastChannel) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{11} +} + +func (m *CMsgPracticeLobbyJoinBroadcastChannel) GetChannel() uint32 { + if m != nil && m.Channel != nil { + return *m.Channel + } + return 0 +} + +func (m *CMsgPracticeLobbyJoinBroadcastChannel) GetPreferredDescription() string { + if m != nil && m.PreferredDescription != nil { + return *m.PreferredDescription + } + return "" +} + +func (m *CMsgPracticeLobbyJoinBroadcastChannel) GetPreferredCountryCode() string { + if m != nil && m.PreferredCountryCode != nil { + return *m.PreferredCountryCode + } + return "" +} + +func (m *CMsgPracticeLobbyJoinBroadcastChannel) GetPreferredLanguageCode() string { + if m != nil && m.PreferredLanguageCode != nil { + return *m.PreferredLanguageCode + } + return "" +} + +type CMsgPracticeLobbyCloseBroadcastChannel struct { + Channel *uint32 `protobuf:"varint,1,opt,name=channel" json:"channel,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyCloseBroadcastChannel) Reset() { + *m = CMsgPracticeLobbyCloseBroadcastChannel{} +} +func (m *CMsgPracticeLobbyCloseBroadcastChannel) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyCloseBroadcastChannel) ProtoMessage() {} +func (*CMsgPracticeLobbyCloseBroadcastChannel) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{12} +} + +func (m *CMsgPracticeLobbyCloseBroadcastChannel) GetChannel() uint32 { + if m != nil && m.Channel != nil { + return *m.Channel + } + return 0 +} + +type CMsgPracticeLobbyToggleBroadcastChannelCameramanStatus struct { + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyToggleBroadcastChannelCameramanStatus) Reset() { + *m = CMsgPracticeLobbyToggleBroadcastChannelCameramanStatus{} +} +func (m *CMsgPracticeLobbyToggleBroadcastChannelCameramanStatus) String() string { + return proto.CompactTextString(m) +} +func (*CMsgPracticeLobbyToggleBroadcastChannelCameramanStatus) ProtoMessage() {} +func (*CMsgPracticeLobbyToggleBroadcastChannelCameramanStatus) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{13} +} + +type CMsgPracticeLobbyKick struct { + AccountId *uint32 `protobuf:"varint,3,opt,name=account_id,json=accountId" json:"account_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyKick) Reset() { *m = CMsgPracticeLobbyKick{} } +func (m *CMsgPracticeLobbyKick) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyKick) ProtoMessage() {} +func (*CMsgPracticeLobbyKick) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } + +func (m *CMsgPracticeLobbyKick) GetAccountId() uint32 { + if m != nil && m.AccountId != nil { + return *m.AccountId + } + return 0 +} + +type CMsgPracticeLobbyKickFromTeam struct { + AccountId *uint32 `protobuf:"varint,1,opt,name=account_id,json=accountId" json:"account_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyKickFromTeam) Reset() { *m = CMsgPracticeLobbyKickFromTeam{} } +func (m *CMsgPracticeLobbyKickFromTeam) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyKickFromTeam) ProtoMessage() {} +func (*CMsgPracticeLobbyKickFromTeam) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } + +func (m *CMsgPracticeLobbyKickFromTeam) GetAccountId() uint32 { + if m != nil && m.AccountId != nil { + return *m.AccountId + } + return 0 +} + +type CMsgPracticeLobbyLeave struct { + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyLeave) Reset() { *m = CMsgPracticeLobbyLeave{} } +func (m *CMsgPracticeLobbyLeave) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyLeave) ProtoMessage() {} +func (*CMsgPracticeLobbyLeave) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } + +type CMsgPracticeLobbyLaunch struct { + ClientVersion *uint32 `protobuf:"varint,5,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyLaunch) Reset() { *m = CMsgPracticeLobbyLaunch{} } +func (m *CMsgPracticeLobbyLaunch) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyLaunch) ProtoMessage() {} +func (*CMsgPracticeLobbyLaunch) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } + +func (m *CMsgPracticeLobbyLaunch) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +type CMsgApplyTeamToPracticeLobby struct { + TeamId *uint32 `protobuf:"varint,1,opt,name=team_id,json=teamId" json:"team_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgApplyTeamToPracticeLobby) Reset() { *m = CMsgApplyTeamToPracticeLobby{} } +func (m *CMsgApplyTeamToPracticeLobby) String() string { return proto.CompactTextString(m) } +func (*CMsgApplyTeamToPracticeLobby) ProtoMessage() {} +func (*CMsgApplyTeamToPracticeLobby) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } + +func (m *CMsgApplyTeamToPracticeLobby) GetTeamId() uint32 { + if m != nil && m.TeamId != nil { + return *m.TeamId + } + return 0 +} + +type CMsgClearPracticeLobbyTeam struct { + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgClearPracticeLobbyTeam) Reset() { *m = CMsgClearPracticeLobbyTeam{} } +func (m *CMsgClearPracticeLobbyTeam) String() string { return proto.CompactTextString(m) } +func (*CMsgClearPracticeLobbyTeam) ProtoMessage() {} +func (*CMsgClearPracticeLobbyTeam) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } + +type CMsgPracticeLobbyList struct { + TournamentGames *bool `protobuf:"varint,1,opt,name=tournament_games,json=tournamentGames" json:"tournament_games,omitempty"` + PassKey *string `protobuf:"bytes,2,opt,name=pass_key,json=passKey" json:"pass_key,omitempty"` + Region *uint32 `protobuf:"varint,3,opt,name=region" json:"region,omitempty"` + GameMode *dota_shared_enums.DOTA_GameMode `protobuf:"varint,4,opt,name=game_mode,json=gameMode,enum=DOTA_GameMode,def=0" json:"game_mode,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyList) Reset() { *m = CMsgPracticeLobbyList{} } +func (m *CMsgPracticeLobbyList) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyList) ProtoMessage() {} +func (*CMsgPracticeLobbyList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } + +const Default_CMsgPracticeLobbyList_GameMode dota_shared_enums.DOTA_GameMode = dota_shared_enums.DOTA_GameMode_DOTA_GAMEMODE_NONE + +func (m *CMsgPracticeLobbyList) GetTournamentGames() bool { + if m != nil && m.TournamentGames != nil { + return *m.TournamentGames + } + return false +} + +func (m *CMsgPracticeLobbyList) GetPassKey() string { + if m != nil && m.PassKey != nil { + return *m.PassKey + } + return "" +} + +func (m *CMsgPracticeLobbyList) GetRegion() uint32 { + if m != nil && m.Region != nil { + return *m.Region + } + return 0 +} + +func (m *CMsgPracticeLobbyList) GetGameMode() dota_shared_enums.DOTA_GameMode { + if m != nil && m.GameMode != nil { + return *m.GameMode + } + return Default_CMsgPracticeLobbyList_GameMode +} + +type CMsgPracticeLobbyListResponseEntry struct { + Id *uint64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` + TournamentId *uint32 `protobuf:"varint,3,opt,name=tournament_id,json=tournamentId" json:"tournament_id,omitempty"` + TournamentGameId *uint32 `protobuf:"varint,4,opt,name=tournament_game_id,json=tournamentGameId" json:"tournament_game_id,omitempty"` + Members []*CMsgPracticeLobbyListResponseEntry_CLobbyMember `protobuf:"bytes,5,rep,name=members" json:"members,omitempty"` + RequiresPassKey *bool `protobuf:"varint,6,opt,name=requires_pass_key,json=requiresPassKey" json:"requires_pass_key,omitempty"` + LeaderAccountId *uint32 `protobuf:"varint,7,opt,name=leader_account_id,json=leaderAccountId" json:"leader_account_id,omitempty"` + GuildId *uint32 `protobuf:"varint,8,opt,name=guild_id,json=guildId" json:"guild_id,omitempty"` + GuildLogo *uint64 `protobuf:"varint,9,opt,name=guild_logo,json=guildLogo" json:"guild_logo,omitempty"` + Name *string `protobuf:"bytes,10,opt,name=name" json:"name,omitempty"` + CustomGameMode *string `protobuf:"bytes,11,opt,name=custom_game_mode,json=customGameMode" json:"custom_game_mode,omitempty"` + GameMode *dota_shared_enums.DOTA_GameMode `protobuf:"varint,12,opt,name=game_mode,json=gameMode,enum=DOTA_GameMode,def=0" json:"game_mode,omitempty"` + FriendPresent *bool `protobuf:"varint,13,opt,name=friend_present,json=friendPresent" json:"friend_present,omitempty"` + Players *uint32 `protobuf:"varint,14,opt,name=players" json:"players,omitempty"` + CustomMapName *string `protobuf:"bytes,15,opt,name=custom_map_name,json=customMapName" json:"custom_map_name,omitempty"` + MaxPlayerCount *uint32 `protobuf:"varint,16,opt,name=max_player_count,json=maxPlayerCount" json:"max_player_count,omitempty"` + ServerRegion *uint32 `protobuf:"varint,17,opt,name=server_region,json=serverRegion" json:"server_region,omitempty"` + LanHostPingToServerRegion *uint32 `protobuf:"varint,18,opt,name=lan_host_ping_to_server_region,json=lanHostPingToServerRegion" json:"lan_host_ping_to_server_region,omitempty"` + LeagueId *uint32 `protobuf:"varint,19,opt,name=league_id,json=leagueId" json:"league_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyListResponseEntry) Reset() { *m = CMsgPracticeLobbyListResponseEntry{} } +func (m *CMsgPracticeLobbyListResponseEntry) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyListResponseEntry) ProtoMessage() {} +func (*CMsgPracticeLobbyListResponseEntry) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{21} +} + +const Default_CMsgPracticeLobbyListResponseEntry_GameMode dota_shared_enums.DOTA_GameMode = dota_shared_enums.DOTA_GameMode_DOTA_GAMEMODE_NONE + +func (m *CMsgPracticeLobbyListResponseEntry) GetId() uint64 { + if m != nil && m.Id != nil { + return *m.Id + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetTournamentId() uint32 { + if m != nil && m.TournamentId != nil { + return *m.TournamentId + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetTournamentGameId() uint32 { + if m != nil && m.TournamentGameId != nil { + return *m.TournamentGameId + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetMembers() []*CMsgPracticeLobbyListResponseEntry_CLobbyMember { + if m != nil { + return m.Members + } + return nil +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetRequiresPassKey() bool { + if m != nil && m.RequiresPassKey != nil { + return *m.RequiresPassKey + } + return false +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetLeaderAccountId() uint32 { + if m != nil && m.LeaderAccountId != nil { + return *m.LeaderAccountId + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetGuildId() uint32 { + if m != nil && m.GuildId != nil { + return *m.GuildId + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetGuildLogo() uint64 { + if m != nil && m.GuildLogo != nil { + return *m.GuildLogo + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetName() string { + if m != nil && m.Name != nil { + return *m.Name + } + return "" +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetCustomGameMode() string { + if m != nil && m.CustomGameMode != nil { + return *m.CustomGameMode + } + return "" +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetGameMode() dota_shared_enums.DOTA_GameMode { + if m != nil && m.GameMode != nil { + return *m.GameMode + } + return Default_CMsgPracticeLobbyListResponseEntry_GameMode +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetFriendPresent() bool { + if m != nil && m.FriendPresent != nil { + return *m.FriendPresent + } + return false +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetPlayers() uint32 { + if m != nil && m.Players != nil { + return *m.Players + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetCustomMapName() string { + if m != nil && m.CustomMapName != nil { + return *m.CustomMapName + } + return "" +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetMaxPlayerCount() uint32 { + if m != nil && m.MaxPlayerCount != nil { + return *m.MaxPlayerCount + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetServerRegion() uint32 { + if m != nil && m.ServerRegion != nil { + return *m.ServerRegion + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetLanHostPingToServerRegion() uint32 { + if m != nil && m.LanHostPingToServerRegion != nil { + return *m.LanHostPingToServerRegion + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry) GetLeagueId() uint32 { + if m != nil && m.LeagueId != nil { + return *m.LeagueId + } + return 0 +} + +type CMsgPracticeLobbyListResponseEntry_CLobbyMember struct { + AccountId *uint32 `protobuf:"varint,1,opt,name=account_id,json=accountId" json:"account_id,omitempty"` + PlayerName *string `protobuf:"bytes,2,opt,name=player_name,json=playerName" json:"player_name,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyListResponseEntry_CLobbyMember) Reset() { + *m = CMsgPracticeLobbyListResponseEntry_CLobbyMember{} +} +func (m *CMsgPracticeLobbyListResponseEntry_CLobbyMember) String() string { + return proto.CompactTextString(m) +} +func (*CMsgPracticeLobbyListResponseEntry_CLobbyMember) ProtoMessage() {} +func (*CMsgPracticeLobbyListResponseEntry_CLobbyMember) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{21, 0} +} + +func (m *CMsgPracticeLobbyListResponseEntry_CLobbyMember) GetAccountId() uint32 { + if m != nil && m.AccountId != nil { + return *m.AccountId + } + return 0 +} + +func (m *CMsgPracticeLobbyListResponseEntry_CLobbyMember) GetPlayerName() string { + if m != nil && m.PlayerName != nil { + return *m.PlayerName + } + return "" +} + +type CMsgPracticeLobbyListResponse struct { + TournamentGames *bool `protobuf:"varint,1,opt,name=tournament_games,json=tournamentGames" json:"tournament_games,omitempty"` + Lobbies []*CMsgPracticeLobbyListResponseEntry `protobuf:"bytes,2,rep,name=lobbies" json:"lobbies,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyListResponse) Reset() { *m = CMsgPracticeLobbyListResponse{} } +func (m *CMsgPracticeLobbyListResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyListResponse) ProtoMessage() {} +func (*CMsgPracticeLobbyListResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } + +func (m *CMsgPracticeLobbyListResponse) GetTournamentGames() bool { + if m != nil && m.TournamentGames != nil { + return *m.TournamentGames + } + return false +} + +func (m *CMsgPracticeLobbyListResponse) GetLobbies() []*CMsgPracticeLobbyListResponseEntry { + if m != nil { + return m.Lobbies + } + return nil +} + +type CMsgLobbyList struct { + ServerRegion *uint32 `protobuf:"varint,1,opt,name=server_region,json=serverRegion,def=0" json:"server_region,omitempty"` + GameMode *dota_shared_enums.DOTA_GameMode `protobuf:"varint,2,opt,name=game_mode,json=gameMode,enum=DOTA_GameMode,def=0" json:"game_mode,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgLobbyList) Reset() { *m = CMsgLobbyList{} } +func (m *CMsgLobbyList) String() string { return proto.CompactTextString(m) } +func (*CMsgLobbyList) ProtoMessage() {} +func (*CMsgLobbyList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } + +const Default_CMsgLobbyList_ServerRegion uint32 = 0 +const Default_CMsgLobbyList_GameMode dota_shared_enums.DOTA_GameMode = dota_shared_enums.DOTA_GameMode_DOTA_GAMEMODE_NONE + +func (m *CMsgLobbyList) GetServerRegion() uint32 { + if m != nil && m.ServerRegion != nil { + return *m.ServerRegion + } + return Default_CMsgLobbyList_ServerRegion +} + +func (m *CMsgLobbyList) GetGameMode() dota_shared_enums.DOTA_GameMode { + if m != nil && m.GameMode != nil { + return *m.GameMode + } + return Default_CMsgLobbyList_GameMode +} + +type CMsgLobbyListResponse struct { + Lobbies []*CMsgPracticeLobbyListResponseEntry `protobuf:"bytes,1,rep,name=lobbies" json:"lobbies,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgLobbyListResponse) Reset() { *m = CMsgLobbyListResponse{} } +func (m *CMsgLobbyListResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgLobbyListResponse) ProtoMessage() {} +func (*CMsgLobbyListResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } + +func (m *CMsgLobbyListResponse) GetLobbies() []*CMsgPracticeLobbyListResponseEntry { + if m != nil { + return m.Lobbies + } + return nil +} + +type CMsgPracticeLobbyJoin struct { + LobbyId *uint64 `protobuf:"varint,1,opt,name=lobby_id,json=lobbyId" json:"lobby_id,omitempty"` + ClientVersion *uint32 `protobuf:"varint,2,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + PassKey *string `protobuf:"bytes,3,opt,name=pass_key,json=passKey" json:"pass_key,omitempty"` + CustomGameCrc *uint64 `protobuf:"fixed64,4,opt,name=custom_game_crc,json=customGameCrc" json:"custom_game_crc,omitempty"` + CustomGameTimestamp *uint32 `protobuf:"fixed32,5,opt,name=custom_game_timestamp,json=customGameTimestamp" json:"custom_game_timestamp,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyJoin) Reset() { *m = CMsgPracticeLobbyJoin{} } +func (m *CMsgPracticeLobbyJoin) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyJoin) ProtoMessage() {} +func (*CMsgPracticeLobbyJoin) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } + +func (m *CMsgPracticeLobbyJoin) GetLobbyId() uint64 { + if m != nil && m.LobbyId != nil { + return *m.LobbyId + } + return 0 +} + +func (m *CMsgPracticeLobbyJoin) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +func (m *CMsgPracticeLobbyJoin) GetPassKey() string { + if m != nil && m.PassKey != nil { + return *m.PassKey + } + return "" +} + +func (m *CMsgPracticeLobbyJoin) GetCustomGameCrc() uint64 { + if m != nil && m.CustomGameCrc != nil { + return *m.CustomGameCrc + } + return 0 +} + +func (m *CMsgPracticeLobbyJoin) GetCustomGameTimestamp() uint32 { + if m != nil && m.CustomGameTimestamp != nil { + return *m.CustomGameTimestamp + } + return 0 +} + +type CMsgPracticeLobbyJoinResponse struct { + Result *dota_shared_enums.DOTAJoinLobbyResult `protobuf:"varint,1,opt,name=result,enum=DOTAJoinLobbyResult,def=0" json:"result,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgPracticeLobbyJoinResponse) Reset() { *m = CMsgPracticeLobbyJoinResponse{} } +func (m *CMsgPracticeLobbyJoinResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgPracticeLobbyJoinResponse) ProtoMessage() {} +func (*CMsgPracticeLobbyJoinResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } + +const Default_CMsgPracticeLobbyJoinResponse_Result dota_shared_enums.DOTAJoinLobbyResult = dota_shared_enums.DOTAJoinLobbyResult_DOTA_JOIN_RESULT_SUCCESS + +func (m *CMsgPracticeLobbyJoinResponse) GetResult() dota_shared_enums.DOTAJoinLobbyResult { + if m != nil && m.Result != nil { + return *m.Result + } + return Default_CMsgPracticeLobbyJoinResponse_Result +} + +type CMsgFriendPracticeLobbyListRequest struct { + Friends []uint32 `protobuf:"varint,1,rep,name=friends" json:"friends,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgFriendPracticeLobbyListRequest) Reset() { *m = CMsgFriendPracticeLobbyListRequest{} } +func (m *CMsgFriendPracticeLobbyListRequest) String() string { return proto.CompactTextString(m) } +func (*CMsgFriendPracticeLobbyListRequest) ProtoMessage() {} +func (*CMsgFriendPracticeLobbyListRequest) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{27} +} + +func (m *CMsgFriendPracticeLobbyListRequest) GetFriends() []uint32 { + if m != nil { + return m.Friends + } + return nil +} + +type CMsgFriendPracticeLobbyListResponse struct { + Lobbies []*CMsgPracticeLobbyListResponseEntry `protobuf:"bytes,1,rep,name=lobbies" json:"lobbies,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgFriendPracticeLobbyListResponse) Reset() { *m = CMsgFriendPracticeLobbyListResponse{} } +func (m *CMsgFriendPracticeLobbyListResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgFriendPracticeLobbyListResponse) ProtoMessage() {} +func (*CMsgFriendPracticeLobbyListResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{28} +} + +func (m *CMsgFriendPracticeLobbyListResponse) GetLobbies() []*CMsgPracticeLobbyListResponseEntry { + if m != nil { + return m.Lobbies + } + return nil +} + +type CMsgGuildmatePracticeLobbyListRequest struct { + Guilds []uint32 `protobuf:"varint,1,rep,name=guilds" json:"guilds,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgGuildmatePracticeLobbyListRequest) Reset() { *m = CMsgGuildmatePracticeLobbyListRequest{} } +func (m *CMsgGuildmatePracticeLobbyListRequest) String() string { return proto.CompactTextString(m) } +func (*CMsgGuildmatePracticeLobbyListRequest) ProtoMessage() {} +func (*CMsgGuildmatePracticeLobbyListRequest) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{29} +} + +func (m *CMsgGuildmatePracticeLobbyListRequest) GetGuilds() []uint32 { + if m != nil { + return m.Guilds + } + return nil +} + +type CMsgGuildmatePracticeLobbyListResponse struct { + Lobbies []*CMsgPracticeLobbyListResponseEntry `protobuf:"bytes,1,rep,name=lobbies" json:"lobbies,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgGuildmatePracticeLobbyListResponse) Reset() { + *m = CMsgGuildmatePracticeLobbyListResponse{} +} +func (m *CMsgGuildmatePracticeLobbyListResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgGuildmatePracticeLobbyListResponse) ProtoMessage() {} +func (*CMsgGuildmatePracticeLobbyListResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{30} +} + +func (m *CMsgGuildmatePracticeLobbyListResponse) GetLobbies() []*CMsgPracticeLobbyListResponseEntry { + if m != nil { + return m.Lobbies + } + return nil +} + +type CMsgJoinableCustomGameModesRequest struct { + ServerRegion *uint32 `protobuf:"varint,1,opt,name=server_region,json=serverRegion" json:"server_region,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgJoinableCustomGameModesRequest) Reset() { *m = CMsgJoinableCustomGameModesRequest{} } +func (m *CMsgJoinableCustomGameModesRequest) String() string { return proto.CompactTextString(m) } +func (*CMsgJoinableCustomGameModesRequest) ProtoMessage() {} +func (*CMsgJoinableCustomGameModesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31} +} + +func (m *CMsgJoinableCustomGameModesRequest) GetServerRegion() uint32 { + if m != nil && m.ServerRegion != nil { + return *m.ServerRegion + } + return 0 +} + +type CMsgJoinableCustomGameModesResponseEntry struct { + CustomGameId *uint64 `protobuf:"varint,1,opt,name=custom_game_id,json=customGameId" json:"custom_game_id,omitempty"` + LobbyCount *uint32 `protobuf:"varint,2,opt,name=lobby_count,json=lobbyCount" json:"lobby_count,omitempty"` + PlayerCount *uint32 `protobuf:"varint,3,opt,name=player_count,json=playerCount" json:"player_count,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgJoinableCustomGameModesResponseEntry) Reset() { + *m = CMsgJoinableCustomGameModesResponseEntry{} +} +func (m *CMsgJoinableCustomGameModesResponseEntry) String() string { return proto.CompactTextString(m) } +func (*CMsgJoinableCustomGameModesResponseEntry) ProtoMessage() {} +func (*CMsgJoinableCustomGameModesResponseEntry) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{32} +} + +func (m *CMsgJoinableCustomGameModesResponseEntry) GetCustomGameId() uint64 { + if m != nil && m.CustomGameId != nil { + return *m.CustomGameId + } + return 0 +} + +func (m *CMsgJoinableCustomGameModesResponseEntry) GetLobbyCount() uint32 { + if m != nil && m.LobbyCount != nil { + return *m.LobbyCount + } + return 0 +} + +func (m *CMsgJoinableCustomGameModesResponseEntry) GetPlayerCount() uint32 { + if m != nil && m.PlayerCount != nil { + return *m.PlayerCount + } + return 0 +} + +type CMsgJoinableCustomGameModesResponse struct { + GameModes []*CMsgJoinableCustomGameModesResponseEntry `protobuf:"bytes,1,rep,name=game_modes,json=gameModes" json:"game_modes,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgJoinableCustomGameModesResponse) Reset() { *m = CMsgJoinableCustomGameModesResponse{} } +func (m *CMsgJoinableCustomGameModesResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgJoinableCustomGameModesResponse) ProtoMessage() {} +func (*CMsgJoinableCustomGameModesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{33} +} + +func (m *CMsgJoinableCustomGameModesResponse) GetGameModes() []*CMsgJoinableCustomGameModesResponseEntry { + if m != nil { + return m.GameModes + } + return nil +} + +type CMsgJoinableCustomLobbiesRequest struct { + ServerRegion *uint32 `protobuf:"varint,1,opt,name=server_region,json=serverRegion" json:"server_region,omitempty"` + CustomGameId *uint64 `protobuf:"varint,2,opt,name=custom_game_id,json=customGameId" json:"custom_game_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgJoinableCustomLobbiesRequest) Reset() { *m = CMsgJoinableCustomLobbiesRequest{} } +func (m *CMsgJoinableCustomLobbiesRequest) String() string { return proto.CompactTextString(m) } +func (*CMsgJoinableCustomLobbiesRequest) ProtoMessage() {} +func (*CMsgJoinableCustomLobbiesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{34} +} + +func (m *CMsgJoinableCustomLobbiesRequest) GetServerRegion() uint32 { + if m != nil && m.ServerRegion != nil { + return *m.ServerRegion + } + return 0 +} + +func (m *CMsgJoinableCustomLobbiesRequest) GetCustomGameId() uint64 { + if m != nil && m.CustomGameId != nil { + return *m.CustomGameId + } + return 0 +} + +type CMsgJoinableCustomLobbiesResponseEntry struct { + LobbyId *uint64 `protobuf:"fixed64,1,opt,name=lobby_id,json=lobbyId" json:"lobby_id,omitempty"` + CustomGameId *uint64 `protobuf:"varint,2,opt,name=custom_game_id,json=customGameId" json:"custom_game_id,omitempty"` + LobbyName *string `protobuf:"bytes,3,opt,name=lobby_name,json=lobbyName" json:"lobby_name,omitempty"` + MemberCount *uint32 `protobuf:"varint,4,opt,name=member_count,json=memberCount" json:"member_count,omitempty"` + LeaderAccountId *uint32 `protobuf:"varint,5,opt,name=leader_account_id,json=leaderAccountId" json:"leader_account_id,omitempty"` + LeaderName *string `protobuf:"bytes,6,opt,name=leader_name,json=leaderName" json:"leader_name,omitempty"` + CustomMapName *string `protobuf:"bytes,7,opt,name=custom_map_name,json=customMapName" json:"custom_map_name,omitempty"` + MaxPlayerCount *uint32 `protobuf:"varint,8,opt,name=max_player_count,json=maxPlayerCount" json:"max_player_count,omitempty"` + ServerRegion *uint32 `protobuf:"varint,9,opt,name=server_region,json=serverRegion" json:"server_region,omitempty"` + LanHostPingToServerRegion *uint32 `protobuf:"varint,10,opt,name=lan_host_ping_to_server_region,json=lanHostPingToServerRegion" json:"lan_host_ping_to_server_region,omitempty"` + HasPassKey *bool `protobuf:"varint,11,opt,name=has_pass_key,json=hasPassKey" json:"has_pass_key,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) Reset() { + *m = CMsgJoinableCustomLobbiesResponseEntry{} +} +func (m *CMsgJoinableCustomLobbiesResponseEntry) String() string { return proto.CompactTextString(m) } +func (*CMsgJoinableCustomLobbiesResponseEntry) ProtoMessage() {} +func (*CMsgJoinableCustomLobbiesResponseEntry) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{35} +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetLobbyId() uint64 { + if m != nil && m.LobbyId != nil { + return *m.LobbyId + } + return 0 +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetCustomGameId() uint64 { + if m != nil && m.CustomGameId != nil { + return *m.CustomGameId + } + return 0 +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetLobbyName() string { + if m != nil && m.LobbyName != nil { + return *m.LobbyName + } + return "" +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetMemberCount() uint32 { + if m != nil && m.MemberCount != nil { + return *m.MemberCount + } + return 0 +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetLeaderAccountId() uint32 { + if m != nil && m.LeaderAccountId != nil { + return *m.LeaderAccountId + } + return 0 +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetLeaderName() string { + if m != nil && m.LeaderName != nil { + return *m.LeaderName + } + return "" +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetCustomMapName() string { + if m != nil && m.CustomMapName != nil { + return *m.CustomMapName + } + return "" +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetMaxPlayerCount() uint32 { + if m != nil && m.MaxPlayerCount != nil { + return *m.MaxPlayerCount + } + return 0 +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetServerRegion() uint32 { + if m != nil && m.ServerRegion != nil { + return *m.ServerRegion + } + return 0 +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetLanHostPingToServerRegion() uint32 { + if m != nil && m.LanHostPingToServerRegion != nil { + return *m.LanHostPingToServerRegion + } + return 0 +} + +func (m *CMsgJoinableCustomLobbiesResponseEntry) GetHasPassKey() bool { + if m != nil && m.HasPassKey != nil { + return *m.HasPassKey + } + return false +} + +type CMsgJoinableCustomLobbiesResponse struct { + Lobbies []*CMsgJoinableCustomLobbiesResponseEntry `protobuf:"bytes,1,rep,name=lobbies" json:"lobbies,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgJoinableCustomLobbiesResponse) Reset() { *m = CMsgJoinableCustomLobbiesResponse{} } +func (m *CMsgJoinableCustomLobbiesResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgJoinableCustomLobbiesResponse) ProtoMessage() {} +func (*CMsgJoinableCustomLobbiesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{36} +} + +func (m *CMsgJoinableCustomLobbiesResponse) GetLobbies() []*CMsgJoinableCustomLobbiesResponseEntry { + if m != nil { + return m.Lobbies + } + return nil +} + +type CMsgQuickJoinCustomLobby struct { + LegacyServerRegion *uint32 `protobuf:"varint,1,opt,name=legacy_server_region,json=legacyServerRegion" json:"legacy_server_region,omitempty"` + CustomGameId *uint64 `protobuf:"varint,2,opt,name=custom_game_id,json=customGameId" json:"custom_game_id,omitempty"` + ClientVersion *uint32 `protobuf:"varint,3,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + CreateLobbyDetails *CMsgPracticeLobbySetDetails `protobuf:"bytes,4,opt,name=create_lobby_details,json=createLobbyDetails" json:"create_lobby_details,omitempty"` + AllowAnyMap *bool `protobuf:"varint,5,opt,name=allow_any_map,json=allowAnyMap" json:"allow_any_map,omitempty"` + LegacyRegionPings []*CMsgQuickJoinCustomLobby_LegacyRegionPing `protobuf:"bytes,6,rep,name=legacy_region_pings,json=legacyRegionPings" json:"legacy_region_pings,omitempty"` + PingData *base_gcmessages.CMsgClientPingData `protobuf:"bytes,7,opt,name=ping_data,json=pingData" json:"ping_data,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgQuickJoinCustomLobby) Reset() { *m = CMsgQuickJoinCustomLobby{} } +func (m *CMsgQuickJoinCustomLobby) String() string { return proto.CompactTextString(m) } +func (*CMsgQuickJoinCustomLobby) ProtoMessage() {} +func (*CMsgQuickJoinCustomLobby) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } + +func (m *CMsgQuickJoinCustomLobby) GetLegacyServerRegion() uint32 { + if m != nil && m.LegacyServerRegion != nil { + return *m.LegacyServerRegion + } + return 0 +} + +func (m *CMsgQuickJoinCustomLobby) GetCustomGameId() uint64 { + if m != nil && m.CustomGameId != nil { + return *m.CustomGameId + } + return 0 +} + +func (m *CMsgQuickJoinCustomLobby) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +func (m *CMsgQuickJoinCustomLobby) GetCreateLobbyDetails() *CMsgPracticeLobbySetDetails { + if m != nil { + return m.CreateLobbyDetails + } + return nil +} + +func (m *CMsgQuickJoinCustomLobby) GetAllowAnyMap() bool { + if m != nil && m.AllowAnyMap != nil { + return *m.AllowAnyMap + } + return false +} + +func (m *CMsgQuickJoinCustomLobby) GetLegacyRegionPings() []*CMsgQuickJoinCustomLobby_LegacyRegionPing { + if m != nil { + return m.LegacyRegionPings + } + return nil +} + +func (m *CMsgQuickJoinCustomLobby) GetPingData() *base_gcmessages.CMsgClientPingData { + if m != nil { + return m.PingData + } + return nil +} + +type CMsgQuickJoinCustomLobby_LegacyRegionPing struct { + ServerRegion *uint32 `protobuf:"varint,1,opt,name=server_region,json=serverRegion" json:"server_region,omitempty"` + Ping *uint32 `protobuf:"varint,2,opt,name=ping" json:"ping,omitempty"` + RegionCode *uint32 `protobuf:"fixed32,3,opt,name=region_code,json=regionCode" json:"region_code,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgQuickJoinCustomLobby_LegacyRegionPing) Reset() { + *m = CMsgQuickJoinCustomLobby_LegacyRegionPing{} +} +func (m *CMsgQuickJoinCustomLobby_LegacyRegionPing) String() string { return proto.CompactTextString(m) } +func (*CMsgQuickJoinCustomLobby_LegacyRegionPing) ProtoMessage() {} +func (*CMsgQuickJoinCustomLobby_LegacyRegionPing) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{37, 0} +} + +func (m *CMsgQuickJoinCustomLobby_LegacyRegionPing) GetServerRegion() uint32 { + if m != nil && m.ServerRegion != nil { + return *m.ServerRegion + } + return 0 +} + +func (m *CMsgQuickJoinCustomLobby_LegacyRegionPing) GetPing() uint32 { + if m != nil && m.Ping != nil { + return *m.Ping + } + return 0 +} + +func (m *CMsgQuickJoinCustomLobby_LegacyRegionPing) GetRegionCode() uint32 { + if m != nil && m.RegionCode != nil { + return *m.RegionCode + } + return 0 +} + +type CMsgQuickJoinCustomLobbyResponse struct { + Result *dota_shared_enums.DOTAJoinLobbyResult `protobuf:"varint,1,opt,name=result,enum=DOTAJoinLobbyResult,def=0" json:"result,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgQuickJoinCustomLobbyResponse) Reset() { *m = CMsgQuickJoinCustomLobbyResponse{} } +func (m *CMsgQuickJoinCustomLobbyResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgQuickJoinCustomLobbyResponse) ProtoMessage() {} +func (*CMsgQuickJoinCustomLobbyResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{38} +} + +const Default_CMsgQuickJoinCustomLobbyResponse_Result dota_shared_enums.DOTAJoinLobbyResult = dota_shared_enums.DOTAJoinLobbyResult_DOTA_JOIN_RESULT_SUCCESS + +func (m *CMsgQuickJoinCustomLobbyResponse) GetResult() dota_shared_enums.DOTAJoinLobbyResult { + if m != nil && m.Result != nil { + return *m.Result + } + return Default_CMsgQuickJoinCustomLobbyResponse_Result +} + +type CMsgBotGameCreate struct { + SearchKey *string `protobuf:"bytes,1,opt,name=search_key,json=searchKey" json:"search_key,omitempty"` + ClientVersion *uint32 `protobuf:"varint,2,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + DifficultyRadiant *dota_shared_enums.DOTABotDifficulty `protobuf:"varint,3,opt,name=difficulty_radiant,json=difficultyRadiant,enum=DOTABotDifficulty,def=0" json:"difficulty_radiant,omitempty"` + Team *dota_shared_enums.DOTA_GC_TEAM `protobuf:"varint,4,opt,name=team,enum=DOTA_GC_TEAM,def=0" json:"team,omitempty"` + GameMode *uint32 `protobuf:"varint,5,opt,name=game_mode,json=gameMode" json:"game_mode,omitempty"` + DifficultyDire *dota_shared_enums.DOTABotDifficulty `protobuf:"varint,6,opt,name=difficulty_dire,json=difficultyDire,enum=DOTABotDifficulty,def=0" json:"difficulty_dire,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgBotGameCreate) Reset() { *m = CMsgBotGameCreate{} } +func (m *CMsgBotGameCreate) String() string { return proto.CompactTextString(m) } +func (*CMsgBotGameCreate) ProtoMessage() {} +func (*CMsgBotGameCreate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } + +const Default_CMsgBotGameCreate_DifficultyRadiant dota_shared_enums.DOTABotDifficulty = dota_shared_enums.DOTABotDifficulty_BOT_DIFFICULTY_PASSIVE +const Default_CMsgBotGameCreate_Team dota_shared_enums.DOTA_GC_TEAM = dota_shared_enums.DOTA_GC_TEAM_DOTA_GC_TEAM_GOOD_GUYS +const Default_CMsgBotGameCreate_DifficultyDire dota_shared_enums.DOTABotDifficulty = dota_shared_enums.DOTABotDifficulty_BOT_DIFFICULTY_PASSIVE + +func (m *CMsgBotGameCreate) GetSearchKey() string { + if m != nil && m.SearchKey != nil { + return *m.SearchKey + } + return "" +} + +func (m *CMsgBotGameCreate) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +func (m *CMsgBotGameCreate) GetDifficultyRadiant() dota_shared_enums.DOTABotDifficulty { + if m != nil && m.DifficultyRadiant != nil { + return *m.DifficultyRadiant + } + return Default_CMsgBotGameCreate_DifficultyRadiant +} + +func (m *CMsgBotGameCreate) GetTeam() dota_shared_enums.DOTA_GC_TEAM { + if m != nil && m.Team != nil { + return *m.Team + } + return Default_CMsgBotGameCreate_Team +} + +func (m *CMsgBotGameCreate) GetGameMode() uint32 { + if m != nil && m.GameMode != nil { + return *m.GameMode + } + return 0 +} + +func (m *CMsgBotGameCreate) GetDifficultyDire() dota_shared_enums.DOTABotDifficulty { + if m != nil && m.DifficultyDire != nil { + return *m.DifficultyDire + } + return Default_CMsgBotGameCreate_DifficultyDire +} + +type CMsgCustomGameCreate struct { + SearchKey *string `protobuf:"bytes,1,opt,name=search_key,json=searchKey" json:"search_key,omitempty"` + ClientVersion *uint32 `protobuf:"varint,2,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + Difficulty *uint32 `protobuf:"varint,3,opt,name=difficulty" json:"difficulty,omitempty"` + GameMode *string `protobuf:"bytes,4,opt,name=game_mode,json=gameMode" json:"game_mode,omitempty"` + Map *string `protobuf:"bytes,5,opt,name=map" json:"map,omitempty"` + CustomGameId *uint64 `protobuf:"varint,7,opt,name=custom_game_id,json=customGameId" json:"custom_game_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgCustomGameCreate) Reset() { *m = CMsgCustomGameCreate{} } +func (m *CMsgCustomGameCreate) String() string { return proto.CompactTextString(m) } +func (*CMsgCustomGameCreate) ProtoMessage() {} +func (*CMsgCustomGameCreate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } + +func (m *CMsgCustomGameCreate) GetSearchKey() string { + if m != nil && m.SearchKey != nil { + return *m.SearchKey + } + return "" +} + +func (m *CMsgCustomGameCreate) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +func (m *CMsgCustomGameCreate) GetDifficulty() uint32 { + if m != nil && m.Difficulty != nil { + return *m.Difficulty + } + return 0 +} + +func (m *CMsgCustomGameCreate) GetGameMode() string { + if m != nil && m.GameMode != nil { + return *m.GameMode + } + return "" +} + +func (m *CMsgCustomGameCreate) GetMap() string { + if m != nil && m.Map != nil { + return *m.Map + } + return "" +} + +func (m *CMsgCustomGameCreate) GetCustomGameId() uint64 { + if m != nil && m.CustomGameId != nil { + return *m.CustomGameId + } + return 0 +} + +type CMsgEventGameCreate struct { + SearchKey *string `protobuf:"bytes,1,opt,name=search_key,json=searchKey" json:"search_key,omitempty"` + ClientVersion *uint32 `protobuf:"varint,2,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + Difficulty *uint32 `protobuf:"varint,3,opt,name=difficulty" json:"difficulty,omitempty"` + GameMode *string `protobuf:"bytes,4,opt,name=game_mode,json=gameMode" json:"game_mode,omitempty"` + Map *string `protobuf:"bytes,5,opt,name=map" json:"map,omitempty"` + CustomGameId *uint64 `protobuf:"varint,7,opt,name=custom_game_id,json=customGameId" json:"custom_game_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgEventGameCreate) Reset() { *m = CMsgEventGameCreate{} } +func (m *CMsgEventGameCreate) String() string { return proto.CompactTextString(m) } +func (*CMsgEventGameCreate) ProtoMessage() {} +func (*CMsgEventGameCreate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } + +func (m *CMsgEventGameCreate) GetSearchKey() string { + if m != nil && m.SearchKey != nil { + return *m.SearchKey + } + return "" +} + +func (m *CMsgEventGameCreate) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +func (m *CMsgEventGameCreate) GetDifficulty() uint32 { + if m != nil && m.Difficulty != nil { + return *m.Difficulty + } + return 0 +} + +func (m *CMsgEventGameCreate) GetGameMode() string { + if m != nil && m.GameMode != nil { + return *m.GameMode + } + return "" +} + +func (m *CMsgEventGameCreate) GetMap() string { + if m != nil && m.Map != nil { + return *m.Map + } + return "" +} + +func (m *CMsgEventGameCreate) GetCustomGameId() uint64 { + if m != nil && m.CustomGameId != nil { + return *m.CustomGameId + } + return 0 +} + +type CMsgDOTAPartyMemberSetCoach struct { + WantsCoach *bool `protobuf:"varint,1,opt,name=wants_coach,json=wantsCoach" json:"wants_coach,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAPartyMemberSetCoach) Reset() { *m = CMsgDOTAPartyMemberSetCoach{} } +func (m *CMsgDOTAPartyMemberSetCoach) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAPartyMemberSetCoach) ProtoMessage() {} +func (*CMsgDOTAPartyMemberSetCoach) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } + +func (m *CMsgDOTAPartyMemberSetCoach) GetWantsCoach() bool { + if m != nil && m.WantsCoach != nil { + return *m.WantsCoach + } + return false +} + +type CMsgDOTASetGroupLeader struct { + NewLeaderSteamid *uint64 `protobuf:"fixed64,1,opt,name=new_leader_steamid,json=newLeaderSteamid" json:"new_leader_steamid,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTASetGroupLeader) Reset() { *m = CMsgDOTASetGroupLeader{} } +func (m *CMsgDOTASetGroupLeader) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTASetGroupLeader) ProtoMessage() {} +func (*CMsgDOTASetGroupLeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } + +func (m *CMsgDOTASetGroupLeader) GetNewLeaderSteamid() uint64 { + if m != nil && m.NewLeaderSteamid != nil { + return *m.NewLeaderSteamid + } + return 0 +} + +type CMsgDOTACancelGroupInvites struct { + InvitedSteamids []uint64 `protobuf:"fixed64,1,rep,name=invited_steamids,json=invitedSteamids" json:"invited_steamids,omitempty"` + InvitedGroupids []uint64 `protobuf:"fixed64,2,rep,name=invited_groupids,json=invitedGroupids" json:"invited_groupids,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTACancelGroupInvites) Reset() { *m = CMsgDOTACancelGroupInvites{} } +func (m *CMsgDOTACancelGroupInvites) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTACancelGroupInvites) ProtoMessage() {} +func (*CMsgDOTACancelGroupInvites) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } + +func (m *CMsgDOTACancelGroupInvites) GetInvitedSteamids() []uint64 { + if m != nil { + return m.InvitedSteamids + } + return nil +} + +func (m *CMsgDOTACancelGroupInvites) GetInvitedGroupids() []uint64 { + if m != nil { + return m.InvitedGroupids + } + return nil +} + +type CMsgDOTASetGroupOpenStatus struct { + Open *bool `protobuf:"varint,1,opt,name=open" json:"open,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTASetGroupOpenStatus) Reset() { *m = CMsgDOTASetGroupOpenStatus{} } +func (m *CMsgDOTASetGroupOpenStatus) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTASetGroupOpenStatus) ProtoMessage() {} +func (*CMsgDOTASetGroupOpenStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } + +func (m *CMsgDOTASetGroupOpenStatus) GetOpen() bool { + if m != nil && m.Open != nil { + return *m.Open + } + return false +} + +type CMsgDOTAGroupMergeInvite struct { + OtherGroupId *uint64 `protobuf:"fixed64,1,opt,name=other_group_id,json=otherGroupId" json:"other_group_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAGroupMergeInvite) Reset() { *m = CMsgDOTAGroupMergeInvite{} } +func (m *CMsgDOTAGroupMergeInvite) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAGroupMergeInvite) ProtoMessage() {} +func (*CMsgDOTAGroupMergeInvite) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } + +func (m *CMsgDOTAGroupMergeInvite) GetOtherGroupId() uint64 { + if m != nil && m.OtherGroupId != nil { + return *m.OtherGroupId + } + return 0 +} + +type CMsgDOTAGroupMergeResponse struct { + InitiatorGroupId *uint64 `protobuf:"fixed64,1,opt,name=initiator_group_id,json=initiatorGroupId" json:"initiator_group_id,omitempty"` + Accept *bool `protobuf:"varint,2,opt,name=accept" json:"accept,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAGroupMergeResponse) Reset() { *m = CMsgDOTAGroupMergeResponse{} } +func (m *CMsgDOTAGroupMergeResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAGroupMergeResponse) ProtoMessage() {} +func (*CMsgDOTAGroupMergeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } + +func (m *CMsgDOTAGroupMergeResponse) GetInitiatorGroupId() uint64 { + if m != nil && m.InitiatorGroupId != nil { + return *m.InitiatorGroupId + } + return 0 +} + +func (m *CMsgDOTAGroupMergeResponse) GetAccept() bool { + if m != nil && m.Accept != nil { + return *m.Accept + } + return false +} + +type CMsgDOTAGroupMergeReply struct { + Result *dota_client_enums.EDOTAGroupMergeResult `protobuf:"varint,1,opt,name=result,enum=EDOTAGroupMergeResult,def=0" json:"result,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgDOTAGroupMergeReply) Reset() { *m = CMsgDOTAGroupMergeReply{} } +func (m *CMsgDOTAGroupMergeReply) String() string { return proto.CompactTextString(m) } +func (*CMsgDOTAGroupMergeReply) ProtoMessage() {} +func (*CMsgDOTAGroupMergeReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } + +const Default_CMsgDOTAGroupMergeReply_Result dota_client_enums.EDOTAGroupMergeResult = dota_client_enums.EDOTAGroupMergeResult_k_EDOTAGroupMergeResult_OK + +func (m *CMsgDOTAGroupMergeReply) GetResult() dota_client_enums.EDOTAGroupMergeResult { + if m != nil && m.Result != nil { + return *m.Result + } + return Default_CMsgDOTAGroupMergeReply_Result +} + +type CMsgSpectatorLobbyGameDetails struct { + Language *uint32 `protobuf:"varint,1,opt,name=language" json:"language,omitempty"` + MatchId *uint64 `protobuf:"varint,2,opt,name=match_id,json=matchId" json:"match_id,omitempty"` + ServerSteamId *uint64 `protobuf:"fixed64,3,opt,name=server_steam_id,json=serverSteamId" json:"server_steam_id,omitempty"` + StreamUrl *string `protobuf:"bytes,4,opt,name=stream_url,json=streamUrl" json:"stream_url,omitempty"` + StreamName *string `protobuf:"bytes,5,opt,name=stream_name,json=streamName" json:"stream_name,omitempty"` + LeagueId *uint32 `protobuf:"varint,6,opt,name=league_id,json=leagueId" json:"league_id,omitempty"` + SeriesType *uint32 `protobuf:"varint,7,opt,name=series_type,json=seriesType" json:"series_type,omitempty"` + SeriesGame *uint32 `protobuf:"varint,8,opt,name=series_game,json=seriesGame" json:"series_game,omitempty"` + RadiantTeam *CMsgSpectatorLobbyGameDetails_Team `protobuf:"bytes,9,opt,name=radiant_team,json=radiantTeam" json:"radiant_team,omitempty"` + DireTeam *CMsgSpectatorLobbyGameDetails_Team `protobuf:"bytes,10,opt,name=dire_team,json=direTeam" json:"dire_team,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgSpectatorLobbyGameDetails) Reset() { *m = CMsgSpectatorLobbyGameDetails{} } +func (m *CMsgSpectatorLobbyGameDetails) String() string { return proto.CompactTextString(m) } +func (*CMsgSpectatorLobbyGameDetails) ProtoMessage() {} +func (*CMsgSpectatorLobbyGameDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } + +func (m *CMsgSpectatorLobbyGameDetails) GetLanguage() uint32 { + if m != nil && m.Language != nil { + return *m.Language + } + return 0 +} + +func (m *CMsgSpectatorLobbyGameDetails) GetMatchId() uint64 { + if m != nil && m.MatchId != nil { + return *m.MatchId + } + return 0 +} + +func (m *CMsgSpectatorLobbyGameDetails) GetServerSteamId() uint64 { + if m != nil && m.ServerSteamId != nil { + return *m.ServerSteamId + } + return 0 +} + +func (m *CMsgSpectatorLobbyGameDetails) GetStreamUrl() string { + if m != nil && m.StreamUrl != nil { + return *m.StreamUrl + } + return "" +} + +func (m *CMsgSpectatorLobbyGameDetails) GetStreamName() string { + if m != nil && m.StreamName != nil { + return *m.StreamName + } + return "" +} + +func (m *CMsgSpectatorLobbyGameDetails) GetLeagueId() uint32 { + if m != nil && m.LeagueId != nil { + return *m.LeagueId + } + return 0 +} + +func (m *CMsgSpectatorLobbyGameDetails) GetSeriesType() uint32 { + if m != nil && m.SeriesType != nil { + return *m.SeriesType + } + return 0 +} + +func (m *CMsgSpectatorLobbyGameDetails) GetSeriesGame() uint32 { + if m != nil && m.SeriesGame != nil { + return *m.SeriesGame + } + return 0 +} + +func (m *CMsgSpectatorLobbyGameDetails) GetRadiantTeam() *CMsgSpectatorLobbyGameDetails_Team { + if m != nil { + return m.RadiantTeam + } + return nil +} + +func (m *CMsgSpectatorLobbyGameDetails) GetDireTeam() *CMsgSpectatorLobbyGameDetails_Team { + if m != nil { + return m.DireTeam + } + return nil +} + +type CMsgSpectatorLobbyGameDetails_Team struct { + TeamId *uint32 `protobuf:"varint,1,opt,name=team_id,json=teamId" json:"team_id,omitempty"` + TeamName *string `protobuf:"bytes,2,opt,name=team_name,json=teamName" json:"team_name,omitempty"` + TeamLogo *uint64 `protobuf:"fixed64,3,opt,name=team_logo,json=teamLogo" json:"team_logo,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgSpectatorLobbyGameDetails_Team) Reset() { *m = CMsgSpectatorLobbyGameDetails_Team{} } +func (m *CMsgSpectatorLobbyGameDetails_Team) String() string { return proto.CompactTextString(m) } +func (*CMsgSpectatorLobbyGameDetails_Team) ProtoMessage() {} +func (*CMsgSpectatorLobbyGameDetails_Team) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{49, 0} +} + +func (m *CMsgSpectatorLobbyGameDetails_Team) GetTeamId() uint32 { + if m != nil && m.TeamId != nil { + return *m.TeamId + } + return 0 +} + +func (m *CMsgSpectatorLobbyGameDetails_Team) GetTeamName() string { + if m != nil && m.TeamName != nil { + return *m.TeamName + } + return "" +} + +func (m *CMsgSpectatorLobbyGameDetails_Team) GetTeamLogo() uint64 { + if m != nil && m.TeamLogo != nil { + return *m.TeamLogo + } + return 0 +} + +type CMsgSetSpectatorLobbyDetails struct { + LobbyId *uint64 `protobuf:"varint,1,opt,name=lobby_id,json=lobbyId" json:"lobby_id,omitempty"` + LobbyName *string `protobuf:"bytes,2,opt,name=lobby_name,json=lobbyName" json:"lobby_name,omitempty"` + PassKey *string `protobuf:"bytes,3,opt,name=pass_key,json=passKey" json:"pass_key,omitempty"` + GameDetails *CMsgSpectatorLobbyGameDetails `protobuf:"bytes,4,opt,name=game_details,json=gameDetails" json:"game_details,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgSetSpectatorLobbyDetails) Reset() { *m = CMsgSetSpectatorLobbyDetails{} } +func (m *CMsgSetSpectatorLobbyDetails) String() string { return proto.CompactTextString(m) } +func (*CMsgSetSpectatorLobbyDetails) ProtoMessage() {} +func (*CMsgSetSpectatorLobbyDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } + +func (m *CMsgSetSpectatorLobbyDetails) GetLobbyId() uint64 { + if m != nil && m.LobbyId != nil { + return *m.LobbyId + } + return 0 +} + +func (m *CMsgSetSpectatorLobbyDetails) GetLobbyName() string { + if m != nil && m.LobbyName != nil { + return *m.LobbyName + } + return "" +} + +func (m *CMsgSetSpectatorLobbyDetails) GetPassKey() string { + if m != nil && m.PassKey != nil { + return *m.PassKey + } + return "" +} + +func (m *CMsgSetSpectatorLobbyDetails) GetGameDetails() *CMsgSpectatorLobbyGameDetails { + if m != nil { + return m.GameDetails + } + return nil +} + +type CMsgCreateSpectatorLobby struct { + ClientVersion *uint32 `protobuf:"varint,1,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` + Details *CMsgSetSpectatorLobbyDetails `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgCreateSpectatorLobby) Reset() { *m = CMsgCreateSpectatorLobby{} } +func (m *CMsgCreateSpectatorLobby) String() string { return proto.CompactTextString(m) } +func (*CMsgCreateSpectatorLobby) ProtoMessage() {} +func (*CMsgCreateSpectatorLobby) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } + +func (m *CMsgCreateSpectatorLobby) GetClientVersion() uint32 { + if m != nil && m.ClientVersion != nil { + return *m.ClientVersion + } + return 0 +} + +func (m *CMsgCreateSpectatorLobby) GetDetails() *CMsgSetSpectatorLobbyDetails { + if m != nil { + return m.Details + } + return nil +} + +type CMsgSpectatorLobbyList struct { + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgSpectatorLobbyList) Reset() { *m = CMsgSpectatorLobbyList{} } +func (m *CMsgSpectatorLobbyList) String() string { return proto.CompactTextString(m) } +func (*CMsgSpectatorLobbyList) ProtoMessage() {} +func (*CMsgSpectatorLobbyList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } + +type CMsgSpectatorLobbyListResponse struct { + Lobbies []*CMsgSpectatorLobbyListResponse_SpectatorLobby `protobuf:"bytes,1,rep,name=lobbies" json:"lobbies,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgSpectatorLobbyListResponse) Reset() { *m = CMsgSpectatorLobbyListResponse{} } +func (m *CMsgSpectatorLobbyListResponse) String() string { return proto.CompactTextString(m) } +func (*CMsgSpectatorLobbyListResponse) ProtoMessage() {} +func (*CMsgSpectatorLobbyListResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } + +func (m *CMsgSpectatorLobbyListResponse) GetLobbies() []*CMsgSpectatorLobbyListResponse_SpectatorLobby { + if m != nil { + return m.Lobbies + } + return nil +} + +type CMsgSpectatorLobbyListResponse_SpectatorLobby struct { + LobbyId *uint64 `protobuf:"varint,1,opt,name=lobby_id,json=lobbyId" json:"lobby_id,omitempty"` + GameName *string `protobuf:"bytes,2,opt,name=game_name,json=gameName" json:"game_name,omitempty"` + RequiresPassKey *bool `protobuf:"varint,3,opt,name=requires_pass_key,json=requiresPassKey" json:"requires_pass_key,omitempty"` + LeaderAccountId *uint32 `protobuf:"varint,4,opt,name=leader_account_id,json=leaderAccountId" json:"leader_account_id,omitempty"` + MemberCount *uint32 `protobuf:"varint,5,opt,name=member_count,json=memberCount" json:"member_count,omitempty"` + GameDetails *CMsgSpectatorLobbyGameDetails `protobuf:"bytes,7,opt,name=game_details,json=gameDetails" json:"game_details,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgSpectatorLobbyListResponse_SpectatorLobby) Reset() { + *m = CMsgSpectatorLobbyListResponse_SpectatorLobby{} +} +func (m *CMsgSpectatorLobbyListResponse_SpectatorLobby) String() string { + return proto.CompactTextString(m) +} +func (*CMsgSpectatorLobbyListResponse_SpectatorLobby) ProtoMessage() {} +func (*CMsgSpectatorLobbyListResponse_SpectatorLobby) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{53, 0} +} + +func (m *CMsgSpectatorLobbyListResponse_SpectatorLobby) GetLobbyId() uint64 { + if m != nil && m.LobbyId != nil { + return *m.LobbyId + } + return 0 +} + +func (m *CMsgSpectatorLobbyListResponse_SpectatorLobby) GetGameName() string { + if m != nil && m.GameName != nil { + return *m.GameName + } + return "" +} + +func (m *CMsgSpectatorLobbyListResponse_SpectatorLobby) GetRequiresPassKey() bool { + if m != nil && m.RequiresPassKey != nil { + return *m.RequiresPassKey + } + return false +} + +func (m *CMsgSpectatorLobbyListResponse_SpectatorLobby) GetLeaderAccountId() uint32 { + if m != nil && m.LeaderAccountId != nil { + return *m.LeaderAccountId + } + return 0 +} + +func (m *CMsgSpectatorLobbyListResponse_SpectatorLobby) GetMemberCount() uint32 { + if m != nil && m.MemberCount != nil { + return *m.MemberCount + } + return 0 +} + +func (m *CMsgSpectatorLobbyListResponse_SpectatorLobby) GetGameDetails() *CMsgSpectatorLobbyGameDetails { + if m != nil { + return m.GameDetails + } + return nil +} + +type CMsgClientToGCRequestSteamDatagramTicket struct { + ServerSteamId *uint64 `protobuf:"fixed64,1,opt,name=server_steam_id,json=serverSteamId" json:"server_steam_id,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgClientToGCRequestSteamDatagramTicket) Reset() { + *m = CMsgClientToGCRequestSteamDatagramTicket{} +} +func (m *CMsgClientToGCRequestSteamDatagramTicket) String() string { return proto.CompactTextString(m) } +func (*CMsgClientToGCRequestSteamDatagramTicket) ProtoMessage() {} +func (*CMsgClientToGCRequestSteamDatagramTicket) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{54} +} + +func (m *CMsgClientToGCRequestSteamDatagramTicket) GetServerSteamId() uint64 { + if m != nil && m.ServerSteamId != nil { + return *m.ServerSteamId + } + return 0 +} + +type CMsgClientToGCRequestSteamDatagramTicketResponse struct { + SerializedTicket []byte `protobuf:"bytes,1,opt,name=serialized_ticket,json=serializedTicket" json:"serialized_ticket,omitempty"` + Message *string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgClientToGCRequestSteamDatagramTicketResponse) Reset() { + *m = CMsgClientToGCRequestSteamDatagramTicketResponse{} +} +func (m *CMsgClientToGCRequestSteamDatagramTicketResponse) String() string { + return proto.CompactTextString(m) +} +func (*CMsgClientToGCRequestSteamDatagramTicketResponse) ProtoMessage() {} +func (*CMsgClientToGCRequestSteamDatagramTicketResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{55} +} + +func (m *CMsgClientToGCRequestSteamDatagramTicketResponse) GetSerializedTicket() []byte { + if m != nil { + return m.SerializedTicket + } + return nil +} + +func (m *CMsgClientToGCRequestSteamDatagramTicketResponse) GetMessage() string { + if m != nil && m.Message != nil { + return *m.Message + } + return "" +} + +type CMsgGCToClientSteamDatagramTicket struct { + LegacyTimeExpiry *uint32 `protobuf:"fixed32,1,opt,name=legacy_time_expiry,json=legacyTimeExpiry" json:"legacy_time_expiry,omitempty"` + LegacyAuthorizedSteamId *uint64 `protobuf:"fixed64,2,opt,name=legacy_authorized_steam_id,json=legacyAuthorizedSteamId" json:"legacy_authorized_steam_id,omitempty"` + LegacyAuthorizedPublicIp *uint32 `protobuf:"fixed32,3,opt,name=legacy_authorized_public_ip,json=legacyAuthorizedPublicIp" json:"legacy_authorized_public_ip,omitempty"` + LegacyGameserverSteamId *uint64 `protobuf:"fixed64,4,opt,name=legacy_gameserver_steam_id,json=legacyGameserverSteamId" json:"legacy_gameserver_steam_id,omitempty"` + LegacyGameserverNetId *uint64 `protobuf:"fixed64,5,opt,name=legacy_gameserver_net_id,json=legacyGameserverNetId" json:"legacy_gameserver_net_id,omitempty"` + LegacySignature []byte `protobuf:"bytes,6,opt,name=legacy_signature,json=legacySignature" json:"legacy_signature,omitempty"` + LegacyAppId *uint32 `protobuf:"varint,7,opt,name=legacy_app_id,json=legacyAppId" json:"legacy_app_id,omitempty"` + LegacyExtraFields [][]byte `protobuf:"bytes,8,rep,name=legacy_extra_fields,json=legacyExtraFields" json:"legacy_extra_fields,omitempty"` + SerializedTicket []byte `protobuf:"bytes,16,opt,name=serialized_ticket,json=serializedTicket" json:"serialized_ticket,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *CMsgGCToClientSteamDatagramTicket) Reset() { *m = CMsgGCToClientSteamDatagramTicket{} } +func (m *CMsgGCToClientSteamDatagramTicket) String() string { return proto.CompactTextString(m) } +func (*CMsgGCToClientSteamDatagramTicket) ProtoMessage() {} +func (*CMsgGCToClientSteamDatagramTicket) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{56} +} + +func (m *CMsgGCToClientSteamDatagramTicket) GetLegacyTimeExpiry() uint32 { + if m != nil && m.LegacyTimeExpiry != nil { + return *m.LegacyTimeExpiry + } + return 0 +} + +func (m *CMsgGCToClientSteamDatagramTicket) GetLegacyAuthorizedSteamId() uint64 { + if m != nil && m.LegacyAuthorizedSteamId != nil { + return *m.LegacyAuthorizedSteamId + } + return 0 +} + +func (m *CMsgGCToClientSteamDatagramTicket) GetLegacyAuthorizedPublicIp() uint32 { + if m != nil && m.LegacyAuthorizedPublicIp != nil { + return *m.LegacyAuthorizedPublicIp + } + return 0 +} + +func (m *CMsgGCToClientSteamDatagramTicket) GetLegacyGameserverSteamId() uint64 { + if m != nil && m.LegacyGameserverSteamId != nil { + return *m.LegacyGameserverSteamId + } + return 0 +} + +func (m *CMsgGCToClientSteamDatagramTicket) GetLegacyGameserverNetId() uint64 { + if m != nil && m.LegacyGameserverNetId != nil { + return *m.LegacyGameserverNetId + } + return 0 +} + +func (m *CMsgGCToClientSteamDatagramTicket) GetLegacySignature() []byte { + if m != nil { + return m.LegacySignature + } + return nil +} + +func (m *CMsgGCToClientSteamDatagramTicket) GetLegacyAppId() uint32 { + if m != nil && m.LegacyAppId != nil { + return *m.LegacyAppId + } + return 0 +} + +func (m *CMsgGCToClientSteamDatagramTicket) GetLegacyExtraFields() [][]byte { + if m != nil { + return m.LegacyExtraFields + } + return nil +} + +func (m *CMsgGCToClientSteamDatagramTicket) GetSerializedTicket() []byte { + if m != nil { + return m.SerializedTicket + } + return nil +} + +func init() { + proto.RegisterType((*CMsgStartFindingMatch)(nil), "CMsgStartFindingMatch") + proto.RegisterType((*CMsgStartFindingMatchResult)(nil), "CMsgStartFindingMatchResult") + proto.RegisterType((*CMsgStopFindingMatch)(nil), "CMsgStopFindingMatch") + proto.RegisterType((*CMsgPartyBuilderOptions)(nil), "CMsgPartyBuilderOptions") + proto.RegisterType((*CMsgReadyUp)(nil), "CMsgReadyUp") + proto.RegisterType((*CMsgReadyUpStatus)(nil), "CMsgReadyUpStatus") + proto.RegisterType((*CMsgAbandonCurrentGame)(nil), "CMsgAbandonCurrentGame") + proto.RegisterType((*CMsgPracticeLobbySetDetails)(nil), "CMsgPracticeLobbySetDetails") + proto.RegisterType((*CMsgPracticeLobbyCreate)(nil), "CMsgPracticeLobbyCreate") + proto.RegisterType((*CMsgPracticeLobbyCreate_SaveGame)(nil), "CMsgPracticeLobbyCreate.SaveGame") + proto.RegisterType((*CMsgPracticeLobbySetTeamSlot)(nil), "CMsgPracticeLobbySetTeamSlot") + proto.RegisterType((*CMsgPracticeLobbySetCoach)(nil), "CMsgPracticeLobbySetCoach") + proto.RegisterType((*CMsgPracticeLobbyJoinBroadcastChannel)(nil), "CMsgPracticeLobbyJoinBroadcastChannel") + proto.RegisterType((*CMsgPracticeLobbyCloseBroadcastChannel)(nil), "CMsgPracticeLobbyCloseBroadcastChannel") + proto.RegisterType((*CMsgPracticeLobbyToggleBroadcastChannelCameramanStatus)(nil), "CMsgPracticeLobbyToggleBroadcastChannelCameramanStatus") + proto.RegisterType((*CMsgPracticeLobbyKick)(nil), "CMsgPracticeLobbyKick") + proto.RegisterType((*CMsgPracticeLobbyKickFromTeam)(nil), "CMsgPracticeLobbyKickFromTeam") + proto.RegisterType((*CMsgPracticeLobbyLeave)(nil), "CMsgPracticeLobbyLeave") + proto.RegisterType((*CMsgPracticeLobbyLaunch)(nil), "CMsgPracticeLobbyLaunch") + proto.RegisterType((*CMsgApplyTeamToPracticeLobby)(nil), "CMsgApplyTeamToPracticeLobby") + proto.RegisterType((*CMsgClearPracticeLobbyTeam)(nil), "CMsgClearPracticeLobbyTeam") + proto.RegisterType((*CMsgPracticeLobbyList)(nil), "CMsgPracticeLobbyList") + proto.RegisterType((*CMsgPracticeLobbyListResponseEntry)(nil), "CMsgPracticeLobbyListResponseEntry") + proto.RegisterType((*CMsgPracticeLobbyListResponseEntry_CLobbyMember)(nil), "CMsgPracticeLobbyListResponseEntry.CLobbyMember") + proto.RegisterType((*CMsgPracticeLobbyListResponse)(nil), "CMsgPracticeLobbyListResponse") + proto.RegisterType((*CMsgLobbyList)(nil), "CMsgLobbyList") + proto.RegisterType((*CMsgLobbyListResponse)(nil), "CMsgLobbyListResponse") + proto.RegisterType((*CMsgPracticeLobbyJoin)(nil), "CMsgPracticeLobbyJoin") + proto.RegisterType((*CMsgPracticeLobbyJoinResponse)(nil), "CMsgPracticeLobbyJoinResponse") + proto.RegisterType((*CMsgFriendPracticeLobbyListRequest)(nil), "CMsgFriendPracticeLobbyListRequest") + proto.RegisterType((*CMsgFriendPracticeLobbyListResponse)(nil), "CMsgFriendPracticeLobbyListResponse") + proto.RegisterType((*CMsgGuildmatePracticeLobbyListRequest)(nil), "CMsgGuildmatePracticeLobbyListRequest") + proto.RegisterType((*CMsgGuildmatePracticeLobbyListResponse)(nil), "CMsgGuildmatePracticeLobbyListResponse") + proto.RegisterType((*CMsgJoinableCustomGameModesRequest)(nil), "CMsgJoinableCustomGameModesRequest") + proto.RegisterType((*CMsgJoinableCustomGameModesResponseEntry)(nil), "CMsgJoinableCustomGameModesResponseEntry") + proto.RegisterType((*CMsgJoinableCustomGameModesResponse)(nil), "CMsgJoinableCustomGameModesResponse") + proto.RegisterType((*CMsgJoinableCustomLobbiesRequest)(nil), "CMsgJoinableCustomLobbiesRequest") + proto.RegisterType((*CMsgJoinableCustomLobbiesResponseEntry)(nil), "CMsgJoinableCustomLobbiesResponseEntry") + proto.RegisterType((*CMsgJoinableCustomLobbiesResponse)(nil), "CMsgJoinableCustomLobbiesResponse") + proto.RegisterType((*CMsgQuickJoinCustomLobby)(nil), "CMsgQuickJoinCustomLobby") + proto.RegisterType((*CMsgQuickJoinCustomLobby_LegacyRegionPing)(nil), "CMsgQuickJoinCustomLobby.LegacyRegionPing") + proto.RegisterType((*CMsgQuickJoinCustomLobbyResponse)(nil), "CMsgQuickJoinCustomLobbyResponse") + proto.RegisterType((*CMsgBotGameCreate)(nil), "CMsgBotGameCreate") + proto.RegisterType((*CMsgCustomGameCreate)(nil), "CMsgCustomGameCreate") + proto.RegisterType((*CMsgEventGameCreate)(nil), "CMsgEventGameCreate") + proto.RegisterType((*CMsgDOTAPartyMemberSetCoach)(nil), "CMsgDOTAPartyMemberSetCoach") + proto.RegisterType((*CMsgDOTASetGroupLeader)(nil), "CMsgDOTASetGroupLeader") + proto.RegisterType((*CMsgDOTACancelGroupInvites)(nil), "CMsgDOTACancelGroupInvites") + proto.RegisterType((*CMsgDOTASetGroupOpenStatus)(nil), "CMsgDOTASetGroupOpenStatus") + proto.RegisterType((*CMsgDOTAGroupMergeInvite)(nil), "CMsgDOTAGroupMergeInvite") + proto.RegisterType((*CMsgDOTAGroupMergeResponse)(nil), "CMsgDOTAGroupMergeResponse") + proto.RegisterType((*CMsgDOTAGroupMergeReply)(nil), "CMsgDOTAGroupMergeReply") + proto.RegisterType((*CMsgSpectatorLobbyGameDetails)(nil), "CMsgSpectatorLobbyGameDetails") + proto.RegisterType((*CMsgSpectatorLobbyGameDetails_Team)(nil), "CMsgSpectatorLobbyGameDetails.Team") + proto.RegisterType((*CMsgSetSpectatorLobbyDetails)(nil), "CMsgSetSpectatorLobbyDetails") + proto.RegisterType((*CMsgCreateSpectatorLobby)(nil), "CMsgCreateSpectatorLobby") + proto.RegisterType((*CMsgSpectatorLobbyList)(nil), "CMsgSpectatorLobbyList") + proto.RegisterType((*CMsgSpectatorLobbyListResponse)(nil), "CMsgSpectatorLobbyListResponse") + proto.RegisterType((*CMsgSpectatorLobbyListResponse_SpectatorLobby)(nil), "CMsgSpectatorLobbyListResponse.SpectatorLobby") + proto.RegisterType((*CMsgClientToGCRequestSteamDatagramTicket)(nil), "CMsgClientToGCRequestSteamDatagramTicket") + proto.RegisterType((*CMsgClientToGCRequestSteamDatagramTicketResponse)(nil), "CMsgClientToGCRequestSteamDatagramTicketResponse") + proto.RegisterType((*CMsgGCToClientSteamDatagramTicket)(nil), "CMsgGCToClientSteamDatagramTicket") + proto.RegisterEnum("EStartFindingMatchResult", EStartFindingMatchResult_name, EStartFindingMatchResult_value) +} + +func init() { proto.RegisterFile("dota_gcmessages_client_match_management.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 4520 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0x4b, 0x73, 0x1b, 0x47, + 0x7a, 0x0b, 0xbe, 0x40, 0x7c, 0x00, 0x49, 0xb0, 0x25, 0x51, 0x23, 0xca, 0x92, 0xa8, 0x91, 0xad, + 0xa5, 0x65, 0x2d, 0x56, 0xa6, 0x6d, 0xc9, 0xe6, 0x7a, 0x6d, 0x81, 0x20, 0x48, 0xc1, 0xe6, 0xcb, + 0x03, 0x90, 0x2e, 0x6f, 0xa5, 0x6a, 0xd2, 0x9c, 0x69, 0x02, 0xbd, 0x1c, 0xcc, 0x8c, 0x67, 0x06, + 0xa4, 0xe0, 0xd3, 0x56, 0x0e, 0xa9, 0xda, 0x5b, 0x0e, 0xb9, 0xe6, 0x9a, 0x6b, 0x6e, 0x7b, 0x4b, + 0x55, 0x7e, 0xc2, 0x26, 0x95, 0x3f, 0x90, 0x4a, 0xaa, 0x72, 0x4c, 0xaa, 0xf2, 0x07, 0x52, 0xfd, + 0x75, 0x0f, 0x30, 0x00, 0x86, 0x20, 0xa8, 0xf8, 0x92, 0xdb, 0xf4, 0xf7, 0xe8, 0xc7, 0xd7, 0xdf, + 0xbb, 0x07, 0x7e, 0x65, 0x7b, 0x11, 0x35, 0x9b, 0x56, 0x9b, 0x85, 0x21, 0x6d, 0xb2, 0xd0, 0xb4, + 0x1c, 0xce, 0xdc, 0xc8, 0x6c, 0xd3, 0xc8, 0x6a, 0x99, 0x6d, 0xea, 0xd2, 0x26, 0x6b, 0x33, 0x37, + 0x2a, 0xf9, 0x81, 0x17, 0x79, 0xab, 0xb7, 0xc2, 0x88, 0xd1, 0x76, 0x4c, 0xac, 0x80, 0x77, 0x71, + 0x8e, 0xb0, 0x45, 0x03, 0x66, 0x9b, 0xcc, 0xed, 0xb4, 0x07, 0x11, 0x6a, 0xc6, 0x24, 0xe2, 0xce, + 0x29, 0x0d, 0x59, 0x62, 0x55, 0x05, 0x1e, 0xdd, 0x8c, 0xd7, 0x6e, 0x7b, 0xee, 0x15, 0x9b, 0xd1, + 0xff, 0x73, 0x16, 0xee, 0x54, 0xf6, 0xc3, 0x66, 0x3d, 0xa2, 0x41, 0xb4, 0xc3, 0x5d, 0x9b, 0xbb, + 0xcd, 0x7d, 0x41, 0x4a, 0x8a, 0x30, 0x7d, 0xce, 0xba, 0x5a, 0x66, 0x2d, 0xb3, 0x9e, 0x33, 0xc4, + 0x27, 0x79, 0x0e, 0x79, 0x9c, 0xa5, 0x19, 0x78, 0x1d, 0x3f, 0xd4, 0xa6, 0xd6, 0x32, 0xeb, 0x0b, + 0x9b, 0xf0, 0xe9, 0xc6, 0x17, 0x9f, 0x7e, 0xf1, 0xf2, 0xd5, 0xc6, 0x17, 0x9f, 0x19, 0x49, 0x34, + 0xf9, 0x00, 0x16, 0xd5, 0xae, 0x2f, 0x58, 0x10, 0x72, 0xcf, 0xd5, 0xa6, 0x05, 0x83, 0xb1, 0x20, + 0xa1, 0x27, 0x12, 0x48, 0x3e, 0x04, 0x68, 0xd2, 0x36, 0x33, 0xdb, 0x9e, 0xcd, 0x42, 0x6d, 0x66, + 0x64, 0xce, 0x9c, 0xc0, 0xee, 0x0b, 0x24, 0x39, 0x80, 0xc5, 0x53, 0x2f, 0x32, 0x6d, 0x7e, 0x76, + 0xc6, 0xad, 0x8e, 0x13, 0x75, 0xb5, 0xd9, 0xb5, 0xcc, 0xfa, 0xe2, 0x06, 0x29, 0x6d, 0x1f, 0x36, + 0xca, 0x5b, 0x5e, 0xb4, 0xdd, 0xc3, 0x6c, 0xde, 0xda, 0x3a, 0x6c, 0x98, 0xdb, 0xb5, 0x9d, 0x9d, + 0x5a, 0xe5, 0x78, 0xaf, 0xf1, 0x83, 0xf9, 0xa6, 0x6c, 0x6c, 0x1b, 0x0b, 0xa7, 0x49, 0x1a, 0xf2, + 0x25, 0x80, 0x94, 0x4a, 0xd4, 0xf5, 0x99, 0x36, 0x87, 0x73, 0x41, 0x09, 0x4f, 0xdf, 0xe8, 0xfa, + 0x6c, 0x73, 0x79, 0xbf, 0xdc, 0xa8, 0xbc, 0x31, 0x1b, 0x3f, 0x1c, 0x55, 0xcd, 0x4a, 0xb9, 0x7e, + 0x5c, 0xde, 0x33, 0x72, 0xed, 0x18, 0x4b, 0x36, 0x60, 0x11, 0x07, 0x0e, 0x75, 0x9b, 0x1d, 0x21, + 0x69, 0x2d, 0x3b, 0xb2, 0xf9, 0x21, 0x0a, 0x72, 0x17, 0xb2, 0xe2, 0xee, 0x4d, 0x6e, 0x6b, 0xf3, + 0x28, 0x8c, 0x39, 0x31, 0xac, 0xd9, 0xe4, 0x18, 0x08, 0x4a, 0x21, 0x26, 0xc5, 0x9b, 0xd6, 0x00, + 0xb7, 0xb4, 0x24, 0xb7, 0xb4, 0x17, 0xcf, 0xb2, 0xb9, 0x22, 0xf7, 0xb5, 0x57, 0x3e, 0xd8, 0x3d, + 0x2e, 0xef, 0x56, 0xcd, 0xda, 0xc1, 0x49, 0x79, 0xaf, 0xb6, 0x6d, 0x14, 0xc5, 0x14, 0x31, 0x59, + 0xd5, 0xed, 0xb4, 0xc9, 0xf3, 0xe1, 0x69, 0x5d, 0xda, 0x66, 0x5a, 0x1e, 0xaf, 0x74, 0x80, 0xfa, + 0x80, 0xb6, 0x19, 0x79, 0x01, 0x39, 0x9f, 0xbb, 0x4d, 0xd3, 0xa6, 0x11, 0xd5, 0x0a, 0x6b, 0x99, + 0xf5, 0xfc, 0xc6, 0xad, 0x92, 0x50, 0x8e, 0x0a, 0xde, 0xd8, 0x11, 0x77, 0x9b, 0xdb, 0x34, 0xa2, + 0xc6, 0xbc, 0xaf, 0xbe, 0x48, 0x09, 0x6e, 0x05, 0xac, 0xc9, 0x3d, 0xd7, 0x0c, 0x99, 0xc3, 0xac, + 0xc8, 0x3c, 0x73, 0x68, 0x33, 0xd4, 0x16, 0xf0, 0x6c, 0xcb, 0x12, 0x55, 0x47, 0xcc, 0x8e, 0x40, + 0x90, 0x07, 0x00, 0xa1, 0xe7, 0x78, 0xe6, 0x8f, 0x1d, 0xd6, 0x61, 0xda, 0xe2, 0x5a, 0x66, 0x7d, + 0xde, 0xc8, 0x09, 0xc8, 0x77, 0x02, 0x40, 0xd6, 0xa1, 0x28, 0x2e, 0x38, 0xb4, 0x02, 0xee, 0x47, + 0x26, 0x77, 0x6d, 0xf6, 0x56, 0x5b, 0xc2, 0xb9, 0xc4, 0xc5, 0xd7, 0x11, 0x5c, 0x13, 0x50, 0xf2, + 0x31, 0xdc, 0x41, 0x2b, 0x32, 0x2d, 0x87, 0xba, 0x26, 0xb5, 0x2c, 0xaf, 0xe3, 0x46, 0x42, 0xac, + 0x45, 0x24, 0x27, 0x88, 0xac, 0x38, 0xd4, 0x2d, 0x4b, 0x54, 0xcd, 0xd6, 0xff, 0x61, 0x0a, 0xee, + 0xa7, 0x6a, 0xba, 0xc1, 0xc2, 0x8e, 0x13, 0x91, 0x57, 0xb0, 0xe2, 0xb0, 0x26, 0xb5, 0xba, 0x66, + 0x93, 0xb9, 0x2c, 0xe0, 0x96, 0xc9, 0x02, 0xc4, 0xa0, 0x09, 0x2c, 0x6c, 0x66, 0x36, 0x8c, 0xdb, + 0x92, 0x60, 0x57, 0xe2, 0xab, 0x12, 0x4d, 0x8e, 0x61, 0x4e, 0x11, 0x4e, 0xe1, 0x7d, 0xdd, 0x2b, + 0x55, 0xaf, 0x58, 0x63, 0x53, 0x3f, 0x37, 0xaf, 0xc2, 0x99, 0x35, 0xf7, 0x82, 0x3a, 0xdc, 0x36, + 0xd4, 0x64, 0xe4, 0x11, 0xe4, 0x59, 0x10, 0x78, 0x81, 0x19, 0x79, 0xe7, 0x4c, 0x1a, 0x4f, 0xce, + 0x00, 0x04, 0x35, 0x04, 0x84, 0x3c, 0x81, 0x05, 0x9b, 0x9d, 0x76, 0x9a, 0xa6, 0x32, 0x75, 0x34, + 0x9e, 0x9c, 0x51, 0x40, 0xe0, 0xbe, 0x84, 0x91, 0x4d, 0xb8, 0x17, 0xb0, 0xd0, 0xf7, 0xdc, 0x90, + 0x9f, 0x3a, 0xcc, 0xf4, 0x69, 0x10, 0x75, 0xcd, 0x36, 0x6b, 0x9f, 0xb2, 0x20, 0xd4, 0x66, 0xd7, + 0xa6, 0xd7, 0xe7, 0x8c, 0xbb, 0x09, 0x82, 0x23, 0x81, 0xdf, 0x97, 0x68, 0x7d, 0x05, 0x6e, 0x4b, + 0x81, 0x79, 0x7e, 0x72, 0xbf, 0xfa, 0xdf, 0x4c, 0xc1, 0x5d, 0x81, 0x40, 0xe2, 0xad, 0x0e, 0x77, + 0x6c, 0x16, 0x1c, 0xfa, 0x11, 0xf7, 0xdc, 0x90, 0x7c, 0x08, 0x45, 0x6a, 0xdb, 0x5c, 0x0c, 0xa8, + 0x63, 0x86, 0x8e, 0x17, 0x85, 0x52, 0x7e, 0xc6, 0x52, 0x1f, 0x5e, 0x17, 0xe0, 0x21, 0xf3, 0x9b, + 0xba, 0xa1, 0xf9, 0xad, 0x0d, 0x3a, 0x23, 0xe9, 0x5b, 0xae, 0x71, 0x40, 0x33, 0x69, 0x0e, 0xa8, + 0x02, 0xf3, 0xb1, 0x79, 0x28, 0x7f, 0x32, 0xb1, 0xc1, 0xf5, 0x18, 0xf5, 0x7f, 0xcc, 0x40, 0x5e, + 0x88, 0xc4, 0x60, 0xd4, 0xee, 0x1e, 0xfb, 0xe4, 0x1b, 0x98, 0x0d, 0x23, 0x1a, 0x31, 0x3c, 0xfb, + 0xe2, 0xc6, 0x6d, 0xf4, 0x50, 0x7b, 0xde, 0xe9, 0x69, 0x17, 0x29, 0xea, 0x02, 0xb7, 0xf9, 0x30, + 0x05, 0x68, 0x1e, 0x1f, 0x6c, 0x57, 0x2b, 0x7b, 0x65, 0xa3, 0xba, 0x6d, 0xc8, 0x29, 0xc8, 0x1a, + 0x14, 0x02, 0x81, 0x37, 0x3b, 0xbe, 0x29, 0x3c, 0xb2, 0x90, 0xd4, 0x9c, 0x01, 0x81, 0x5c, 0xea, + 0x5b, 0xd6, 0x25, 0xaf, 0x61, 0xb1, 0x45, 0x03, 0xfb, 0x92, 0x06, 0xcc, 0x0c, 0x7d, 0x66, 0x49, + 0x71, 0xe4, 0x37, 0xee, 0x95, 0x2a, 0x62, 0x09, 0x69, 0xbe, 0x6f, 0x14, 0x45, 0x5d, 0x10, 0x18, + 0x0b, 0xad, 0xe4, 0x50, 0x8f, 0x60, 0x39, 0xb1, 0x7d, 0xb1, 0x93, 0x4e, 0x48, 0xee, 0xc1, 0xbc, + 0x23, 0x76, 0x27, 0xec, 0x2a, 0x83, 0x8b, 0x66, 0x71, 0x5c, 0xb3, 0xc9, 0x63, 0x28, 0x50, 0xcb, + 0x62, 0x7e, 0xc4, 0x6c, 0x93, 0xdb, 0x22, 0x16, 0x4c, 0x0b, 0xf1, 0xc7, 0xb0, 0x9a, 0x1d, 0x0a, + 0x12, 0x9b, 0x59, 0x0e, 0x77, 0x15, 0xc9, 0xb4, 0x24, 0x89, 0x61, 0x35, 0x3b, 0xd4, 0x35, 0x58, + 0x11, 0xab, 0x96, 0x4f, 0xa9, 0x6b, 0x7b, 0x6e, 0xa5, 0x13, 0x04, 0xcc, 0x8d, 0x76, 0x69, 0x9b, + 0xe9, 0xff, 0xbe, 0x24, 0x8d, 0xf5, 0x28, 0xa0, 0x56, 0xc4, 0x2d, 0x86, 0x52, 0xaa, 0xb3, 0x68, + 0x9b, 0x45, 0x94, 0x3b, 0xa3, 0x5b, 0x9b, 0xe9, 0x6f, 0xed, 0x3e, 0x60, 0xc8, 0x90, 0xae, 0x6e, + 0x0a, 0x4d, 0x62, 0x5e, 0x00, 0xd0, 0xc5, 0x7d, 0x06, 0x05, 0x74, 0x1b, 0xb6, 0x9c, 0x07, 0x37, + 0x95, 0xdf, 0x20, 0xa5, 0x0a, 0x2e, 0xd0, 0x60, 0xb4, 0xad, 0x56, 0x30, 0xf2, 0x51, 0x7f, 0x20, + 0x4c, 0x2d, 0x64, 0xc1, 0x05, 0x0b, 0x4c, 0xe9, 0xd3, 0x94, 0x26, 0x15, 0x24, 0xd0, 0x40, 0x58, + 0x6f, 0x61, 0x11, 0xc9, 0x50, 0x93, 0x16, 0xe4, 0xc2, 0x22, 0x78, 0x91, 0x97, 0x90, 0xb5, 0xda, + 0xa6, 0xcf, 0xad, 0x73, 0x15, 0x68, 0x16, 0x50, 0x25, 0xcc, 0xca, 0xbe, 0x79, 0x54, 0xab, 0x7c, + 0xbb, 0xb9, 0x18, 0x8f, 0x8c, 0xf2, 0xc1, 0xf6, 0xe1, 0xbe, 0x31, 0x67, 0xb5, 0x8f, 0xb8, 0x75, + 0x4e, 0xfe, 0x12, 0x56, 0x06, 0x63, 0x9e, 0x19, 0x50, 0x9b, 0x53, 0x37, 0xd2, 0x72, 0x57, 0xc6, + 0xbe, 0x95, 0xa1, 0xd8, 0x77, 0x54, 0xae, 0xd7, 0x6b, 0x27, 0x55, 0xe3, 0xf6, 0x40, 0xf8, 0x33, + 0xe4, 0x3c, 0x78, 0x95, 0x8e, 0xe3, 0x5d, 0x9a, 0x56, 0x8b, 0xd1, 0x28, 0xc4, 0xa0, 0x33, 0x6f, + 0xe4, 0x11, 0x56, 0x41, 0x10, 0x79, 0x1f, 0x16, 0xcf, 0xb8, 0xe3, 0x98, 0x97, 0x3c, 0x6a, 0x99, + 0xa7, 0xc2, 0xa4, 0xf3, 0x48, 0x54, 0x10, 0xd0, 0xef, 0x79, 0xd4, 0xda, 0x12, 0xf6, 0xfc, 0x00, + 0x80, 0xbb, 0x51, 0xe0, 0x49, 0x01, 0x14, 0xa4, 0x73, 0x47, 0x08, 0x4a, 0x40, 0x78, 0x06, 0x5c, + 0x47, 0x68, 0x68, 0x44, 0x23, 0xee, 0x36, 0x31, 0x50, 0xcc, 0x1b, 0x4b, 0x08, 0xaf, 0xf7, 0xc0, + 0xa4, 0x06, 0x05, 0x94, 0x64, 0x6c, 0xb7, 0x8b, 0x78, 0xd4, 0x22, 0x1e, 0x55, 0xa8, 0x87, 0x32, + 0xdd, 0xcd, 0xdb, 0xbb, 0xe5, 0xfd, 0xaa, 0x79, 0x52, 0x35, 0xea, 0xb5, 0xc3, 0x03, 0xb3, 0x72, + 0x6c, 0x18, 0xd5, 0x83, 0x86, 0x91, 0x6f, 0xf6, 0x49, 0x84, 0xa2, 0xf8, 0x34, 0x0c, 0xd1, 0x70, + 0x96, 0x50, 0x19, 0xb2, 0x62, 0x2c, 0xac, 0x66, 0x15, 0xe6, 0x1d, 0x46, 0x9b, 0x1d, 0xd6, 0x0b, + 0x1b, 0xbd, 0x31, 0xd9, 0x80, 0x3b, 0x3e, 0x73, 0xa9, 0x90, 0xb7, 0xc3, 0x2e, 0x98, 0xd3, 0x93, + 0xfa, 0x32, 0x12, 0xde, 0x52, 0xc8, 0x3d, 0x81, 0x8b, 0x05, 0xf9, 0x1c, 0xc8, 0x20, 0x8f, 0xcd, + 0x03, 0xa6, 0x11, 0x64, 0x28, 0x26, 0x19, 0xb6, 0x79, 0x80, 0x56, 0xed, 0x78, 0xd4, 0x36, 0xf1, + 0xa0, 0xdc, 0xd6, 0x6e, 0x21, 0x1d, 0x08, 0x98, 0x38, 0x62, 0xcd, 0x16, 0x01, 0x20, 0x64, 0x01, + 0x67, 0xa1, 0x74, 0x90, 0xb7, 0x25, 0x81, 0x04, 0xa1, 0x0b, 0x14, 0xd1, 0x57, 0xae, 0x6d, 0x2a, + 0xc2, 0x4b, 0xee, 0x86, 0xda, 0x1d, 0x15, 0x7d, 0x25, 0xaa, 0x8e, 0x98, 0xef, 0xb9, 0x1b, 0x8a, + 0xf0, 0x2a, 0xb6, 0x34, 0x40, 0xbc, 0x22, 0xc3, 0xab, 0x80, 0x27, 0x28, 0x1f, 0x41, 0x96, 0x3a, + 0x8e, 0xd5, 0xa2, 0x91, 0x76, 0x57, 0x5c, 0xd1, 0xe6, 0xec, 0x19, 0x75, 0x42, 0x66, 0xc4, 0x50, + 0xb2, 0x03, 0x0b, 0x98, 0x67, 0x46, 0x17, 0xa6, 0xcd, 0x1c, 0xda, 0xd5, 0x34, 0xbc, 0xa2, 0xe5, + 0x12, 0xda, 0xd1, 0xb6, 0x17, 0xd1, 0xc6, 0xc9, 0xb6, 0x40, 0x6c, 0x2e, 0x25, 0x20, 0xe6, 0xc7, + 0x1b, 0x2f, 0x8c, 0xbc, 0x60, 0x6c, 0x5c, 0x20, 0x56, 0x24, 0x99, 0x0e, 0x75, 0xb5, 0x7b, 0xa8, + 0x07, 0xe2, 0x53, 0x6c, 0xd2, 0xea, 0x84, 0x91, 0xd7, 0x36, 0xfb, 0xc6, 0xb4, 0x8a, 0x17, 0xb7, + 0x28, 0xe1, 0xbb, 0xb1, 0x49, 0x3d, 0x85, 0x25, 0x45, 0xd9, 0xa6, 0xbe, 0x34, 0xf7, 0xfb, 0x48, + 0xb8, 0x20, 0xc1, 0xfb, 0xd4, 0x47, 0x9b, 0xff, 0x08, 0x96, 0x15, 0x5d, 0x22, 0x73, 0x7c, 0x4f, + 0x5e, 0x8b, 0x44, 0x24, 0x72, 0xc2, 0xf7, 0x61, 0x31, 0xb9, 0x3c, 0xb7, 0xb5, 0x07, 0xe8, 0x5e, + 0x0a, 0xfd, 0xc5, 0x6b, 0xb6, 0xb8, 0xea, 0x78, 0x69, 0xee, 0x9a, 0xbe, 0x43, 0xbb, 0x22, 0x9c, + 0x3e, 0x4c, 0xce, 0xb9, 0xcf, 0xdd, 0x23, 0x09, 0x4f, 0x52, 0xd3, 0xb7, 0x3d, 0xea, 0x47, 0x03, + 0xd4, 0xf4, 0x6d, 0x4c, 0x5d, 0x86, 0x87, 0x22, 0xa7, 0x69, 0x79, 0x61, 0x64, 0x62, 0x3a, 0x16, + 0x79, 0xe6, 0xa0, 0xf3, 0x59, 0x43, 0xce, 0x7b, 0x0e, 0x75, 0xdf, 0x78, 0x21, 0xa6, 0x65, 0x0d, + 0xaf, 0x9e, 0xf4, 0x44, 0x47, 0x00, 0x17, 0x3c, 0xe4, 0xa7, 0xdc, 0xe1, 0x51, 0x57, 0x7b, 0x3c, + 0x1c, 0x82, 0x4e, 0x7a, 0xb8, 0xcd, 0xd5, 0x14, 0xa0, 0x79, 0xd4, 0x39, 0x75, 0xb8, 0x65, 0x24, + 0xe6, 0x48, 0xc8, 0x1a, 0xc5, 0x62, 0x05, 0x96, 0xa6, 0x63, 0x44, 0x58, 0xe8, 0xcb, 0xa5, 0x12, + 0x58, 0xe2, 0xf6, 0xa4, 0x0d, 0xc5, 0x4a, 0xc6, 0x6d, 0xed, 0x89, 0x54, 0x31, 0x09, 0x97, 0x4a, + 0x56, 0xb3, 0x85, 0xa0, 0x15, 0x65, 0x2c, 0xe8, 0xf7, 0xa5, 0x4f, 0x95, 0x50, 0x25, 0xe8, 0x0d, + 0xb8, 0x93, 0x5c, 0x37, 0xe2, 0x6d, 0x16, 0x46, 0xb4, 0xed, 0x6b, 0x1f, 0xac, 0x65, 0xd6, 0xb3, + 0xc6, 0xad, 0xfe, 0xea, 0x8d, 0x18, 0x45, 0x5e, 0xc2, 0x5d, 0x3f, 0x60, 0x17, 0xdc, 0xeb, 0x84, + 0xaa, 0xea, 0xf1, 0x2e, 0x58, 0x10, 0x70, 0x9b, 0x69, 0x4f, 0xf1, 0x2e, 0xef, 0xc4, 0x68, 0x0c, + 0xf3, 0x87, 0x0a, 0x49, 0xfe, 0x02, 0x16, 0x7c, 0xda, 0x09, 0xc5, 0xd6, 0x23, 0xf4, 0x4e, 0xcf, + 0x50, 0x70, 0x2b, 0x7d, 0x9d, 0x3e, 0x12, 0xe8, 0xba, 0xc4, 0x6e, 0x3e, 0x4a, 0x05, 0x9b, 0xc7, + 0xae, 0xc3, 0xdb, 0x3c, 0x62, 0xb6, 0x51, 0xf0, 0x13, 0x70, 0xf2, 0x3b, 0xb8, 0x35, 0xe4, 0xc8, + 0xd1, 0x3d, 0x7c, 0x74, 0x63, 0x2f, 0xbe, 0x3c, 0xe0, 0xc5, 0xd1, 0x97, 0x3c, 0x82, 0xbc, 0x98, + 0x3b, 0xf6, 0x51, 0xcf, 0xf1, 0x94, 0x70, 0xea, 0x45, 0xb1, 0x6b, 0xba, 0x07, 0xf3, 0x72, 0xf1, + 0x80, 0x69, 0xbf, 0x92, 0xe1, 0x12, 0x67, 0x09, 0x18, 0xf9, 0x09, 0x34, 0x99, 0xbb, 0x8b, 0x2c, + 0xde, 0x0f, 0xb8, 0x17, 0x08, 0x15, 0x08, 0x3a, 0x0e, 0x0b, 0xb5, 0x12, 0x6e, 0xee, 0x3e, 0x6e, + 0xae, 0x1e, 0x13, 0x1d, 0x29, 0x1a, 0x43, 0x90, 0x6c, 0x3e, 0x39, 0x37, 0xaf, 0xc6, 0x9a, 0xfb, + 0xd4, 0xed, 0x50, 0xc7, 0x58, 0x09, 0x53, 0xd1, 0xfa, 0x7f, 0xc7, 0x89, 0x64, 0x32, 0xca, 0x57, + 0x02, 0x26, 0xb2, 0x1e, 0x51, 0x2a, 0x30, 0x1a, 0x58, 0x2d, 0xb3, 0x5f, 0x85, 0xe6, 0x24, 0x44, + 0x38, 0xef, 0xa4, 0x5f, 0x9f, 0x1d, 0xf4, 0xeb, 0xa3, 0x79, 0xdf, 0x5c, 0x5a, 0xde, 0x57, 0x86, + 0x05, 0x99, 0x42, 0xc4, 0xb9, 0x40, 0x16, 0x73, 0xa6, 0xf7, 0x4a, 0x63, 0xf2, 0x0e, 0xa3, 0x80, + 0x2c, 0x71, 0x5a, 0xf0, 0x15, 0xe4, 0x42, 0x7a, 0x21, 0x35, 0x18, 0x0b, 0xba, 0xfc, 0xc6, 0xe3, + 0xd2, 0x15, 0x07, 0x2a, 0xd5, 0xe9, 0x05, 0x6a, 0xb5, 0x31, 0x1f, 0xaa, 0xaf, 0xd5, 0x1f, 0x61, + 0x3e, 0x86, 0x12, 0x02, 0x33, 0x58, 0x77, 0x89, 0x93, 0x16, 0x0c, 0xfc, 0x26, 0x1a, 0x64, 0xe3, + 0x23, 0x88, 0x44, 0x66, 0xd6, 0x88, 0x87, 0xe2, 0xf8, 0x61, 0x5c, 0x49, 0x4e, 0xcb, 0xd4, 0x2c, + 0x54, 0xa5, 0xe4, 0x7b, 0x90, 0x0b, 0x79, 0xd3, 0xa5, 0x51, 0x27, 0x90, 0x25, 0xc1, 0x9c, 0xd1, + 0x07, 0xe8, 0xff, 0x94, 0x81, 0xf7, 0xd2, 0x0e, 0x28, 0x52, 0x1f, 0x91, 0x96, 0x93, 0x2f, 0x60, + 0x46, 0x4c, 0xa4, 0x12, 0x57, 0x95, 0xa5, 0xec, 0x56, 0xcc, 0x46, 0xb5, 0xbc, 0xbf, 0xb9, 0x92, + 0x1c, 0x99, 0xbb, 0x87, 0x87, 0xdb, 0xe6, 0xee, 0xf1, 0x0f, 0x75, 0x03, 0x59, 0xc4, 0x11, 0x44, + 0xc2, 0x2f, 0x1b, 0x03, 0x06, 0x7e, 0x93, 0xef, 0x46, 0x6a, 0xf6, 0xe9, 0x1b, 0x6b, 0xfc, 0x60, + 0xd9, 0xae, 0x9f, 0xc0, 0xbd, 0xb4, 0x13, 0x54, 0x3c, 0x6a, 0xb5, 0xfe, 0x0f, 0xdb, 0xd7, 0xff, + 0x23, 0x03, 0x1f, 0x8c, 0x4c, 0xfc, 0x8d, 0xc7, 0xdd, 0xad, 0xc0, 0xa3, 0xb6, 0x45, 0xc3, 0xa8, + 0xd2, 0xa2, 0xae, 0xcb, 0x1c, 0x71, 0x2f, 0x96, 0xfc, 0x54, 0xb5, 0x4d, 0x3c, 0x24, 0x9f, 0x80, + 0x70, 0x2e, 0x67, 0x2c, 0x08, 0x98, 0x6d, 0xda, 0x4c, 0x56, 0xb2, 0xf1, 0xfd, 0xe5, 0x8c, 0xdb, + 0x3d, 0xe4, 0x76, 0x1f, 0x47, 0x3e, 0x85, 0x95, 0x3e, 0x13, 0x96, 0xab, 0x41, 0xd7, 0xb4, 0x44, + 0xe0, 0x9b, 0x1e, 0xe2, 0xaa, 0x48, 0x64, 0x45, 0x66, 0x94, 0x77, 0xfb, 0x5c, 0xbd, 0x02, 0x1f, + 0xd9, 0x64, 0x21, 0xd8, 0xdf, 0x49, 0x5c, 0xc9, 0x08, 0x3e, 0x7d, 0x0b, 0x9e, 0x8e, 0xaa, 0xa8, + 0xe3, 0x85, 0x6c, 0xf2, 0x63, 0xea, 0x9f, 0xc3, 0xcb, 0x91, 0x39, 0x1a, 0x5e, 0xb3, 0xe9, 0x8c, + 0x4c, 0x52, 0xa1, 0x6d, 0x16, 0xd0, 0x36, 0x75, 0x65, 0x4d, 0xa1, 0xbf, 0x94, 0xed, 0xa6, 0x01, + 0xce, 0x6f, 0x45, 0xa2, 0xfb, 0x00, 0x20, 0x51, 0xc6, 0xcb, 0x72, 0x2e, 0x47, 0x7b, 0xd5, 0xfb, + 0x57, 0xf0, 0x20, 0x95, 0x6f, 0x27, 0xf0, 0xda, 0x42, 0x77, 0x87, 0xf8, 0x33, 0xc3, 0xfc, 0xaa, + 0xd4, 0x18, 0xe0, 0xdf, 0x63, 0xf4, 0x82, 0xe9, 0xaf, 0x53, 0x7c, 0xd0, 0x1e, 0xed, 0xb8, 0x56, + 0x2b, 0xc5, 0x93, 0xcc, 0xa6, 0x78, 0x12, 0xfd, 0x95, 0x34, 0xa9, 0xb2, 0xef, 0x3b, 0x58, 0x42, + 0x34, 0xbc, 0x81, 0xc9, 0x92, 0x5d, 0x9f, 0x4c, 0xb2, 0xeb, 0xa3, 0xbf, 0x07, 0xab, 0xb2, 0xbd, + 0xc2, 0x68, 0x30, 0x28, 0x4b, 0xa1, 0x8f, 0x7f, 0xca, 0xa4, 0xc8, 0x6a, 0x8f, 0x87, 0x91, 0x48, + 0xa5, 0x23, 0xaf, 0x13, 0x88, 0x94, 0xc7, 0x8d, 0xd0, 0xfb, 0xc8, 0x22, 0x7b, 0xde, 0x58, 0xea, + 0xc3, 0x85, 0x57, 0x09, 0x07, 0xfc, 0xe4, 0xd4, 0xa0, 0x9f, 0x5c, 0x81, 0x39, 0x95, 0x50, 0x48, + 0x69, 0xab, 0x11, 0xf9, 0x3a, 0x59, 0xc7, 0xcc, 0xa0, 0x1d, 0x2d, 0x2a, 0x3b, 0x52, 0xa9, 0xd7, + 0x26, 0x91, 0xc3, 0xf2, 0x7e, 0x75, 0xff, 0x70, 0xbb, 0x6a, 0x1e, 0x1c, 0x1e, 0x54, 0xfb, 0xb5, + 0x8e, 0xfe, 0x2f, 0x73, 0xa0, 0xa7, 0x6e, 0xdc, 0x90, 0x8d, 0x06, 0x56, 0x15, 0x4a, 0x4c, 0x6e, + 0xc3, 0x54, 0x5c, 0xbd, 0x6d, 0xcd, 0xfc, 0xe1, 0xef, 0x1f, 0x64, 0x8c, 0x29, 0x6e, 0x8b, 0x52, + 0x2b, 0x71, 0xb6, 0x9e, 0x2a, 0x14, 0xfa, 0x40, 0x99, 0x7f, 0x0d, 0x09, 0x40, 0x50, 0xca, 0xa2, + 0xac, 0x38, 0x28, 0x82, 0x9a, 0x4d, 0xbe, 0x81, 0x6c, 0xb2, 0xe3, 0x91, 0xdf, 0x78, 0x51, 0xba, + 0x7e, 0x7b, 0xaa, 0x24, 0x94, 0xbd, 0x10, 0x23, 0x9e, 0x80, 0x3c, 0x83, 0xe5, 0x80, 0xfd, 0xd8, + 0xe1, 0x01, 0x0b, 0xcd, 0x9e, 0x60, 0xe7, 0xa4, 0xec, 0x63, 0xc4, 0x91, 0x12, 0xf0, 0x33, 0x58, + 0x76, 0x18, 0xb5, 0x59, 0x90, 0x6c, 0x50, 0x65, 0x65, 0x33, 0x44, 0x22, 0x7a, 0xdd, 0x29, 0x71, + 0x4f, 0xcd, 0x0e, 0x77, 0xec, 0x7e, 0x6b, 0x30, 0x8b, 0xe3, 0x9a, 0x2d, 0x34, 0x5b, 0xa2, 0x1c, + 0xaf, 0xe9, 0x61, 0xd9, 0x37, 0x63, 0xe4, 0x10, 0xb2, 0xe7, 0x35, 0x3d, 0xe1, 0x75, 0x31, 0xf7, + 0x05, 0xbc, 0x5d, 0xfc, 0x4e, 0x4d, 0xa2, 0xf3, 0xa9, 0x49, 0xf4, 0xc0, 0x65, 0x17, 0x6e, 0x7e, + 0xd9, 0xc2, 0x46, 0xce, 0x02, 0xce, 0x5c, 0xdb, 0xf4, 0x03, 0x16, 0x32, 0x37, 0x52, 0x45, 0xdd, + 0x82, 0x84, 0x1e, 0x49, 0xa0, 0xf0, 0x25, 0x71, 0xe2, 0xbb, 0x28, 0x8f, 0xa7, 0x86, 0x69, 0x69, + 0xfc, 0x52, 0x5a, 0x1a, 0xbf, 0x0e, 0xc5, 0x7e, 0xfa, 0x2c, 0xdd, 0xa4, 0x2a, 0xdb, 0x16, 0xdb, + 0x71, 0xf6, 0x8c, 0xfe, 0x71, 0xb4, 0x5a, 0x5f, 0x4e, 0xa9, 0xd6, 0xaf, 0x4f, 0xb3, 0xc9, 0x75, + 0x69, 0xf6, 0x7d, 0xc8, 0xa9, 0x14, 0xb6, 0x57, 0xbf, 0xa9, 0x0a, 0xb2, 0x66, 0xaf, 0x1e, 0x40, + 0x21, 0xa9, 0x41, 0xd7, 0xf8, 0x27, 0x91, 0xc2, 0xa9, 0x93, 0x25, 0xfa, 0x16, 0x20, 0x41, 0xe2, + 0xf8, 0xfa, 0x1f, 0x33, 0x29, 0x1e, 0x30, 0xa9, 0xb5, 0x37, 0xf1, 0x0a, 0xbf, 0x05, 0x6c, 0x97, + 0x70, 0x26, 0x3b, 0x37, 0xf9, 0x8d, 0x27, 0x13, 0x58, 0x84, 0x11, 0xf3, 0xe8, 0x6f, 0x61, 0x41, + 0x90, 0xf7, 0x1d, 0xd2, 0xd3, 0x61, 0x89, 0xab, 0x96, 0xe9, 0x8b, 0x21, 0xa1, 0x0f, 0x68, 0xdb, + 0xd4, 0x3b, 0xb8, 0x96, 0x13, 0xe9, 0x12, 0x47, 0x0f, 0x9f, 0x38, 0x51, 0xe6, 0x1d, 0x4e, 0xf4, + 0xe7, 0x34, 0x5f, 0x2b, 0x62, 0xff, 0xb8, 0x4e, 0xd3, 0x68, 0x78, 0x98, 0x4a, 0x4b, 0x34, 0x93, + 0x2e, 0x78, 0x7a, 0xd0, 0x05, 0xa7, 0x94, 0x55, 0x33, 0x69, 0x65, 0xd5, 0x95, 0x65, 0xd0, 0xec, + 0x95, 0x65, 0x90, 0xde, 0x4c, 0xd1, 0x17, 0x71, 0xa2, 0x9e, 0xc8, 0x76, 0x7a, 0x7d, 0xeb, 0x64, + 0x93, 0x52, 0x90, 0xa8, 0x9e, 0x24, 0xb6, 0xac, 0x35, 0xbc, 0x8f, 0x6f, 0x0e, 0x6b, 0x07, 0xa6, + 0x51, 0xad, 0x1f, 0xef, 0x35, 0xcc, 0xfa, 0x71, 0xa5, 0x52, 0xad, 0xd7, 0xe3, 0x46, 0xb5, 0xfe, + 0x95, 0xf4, 0xf6, 0x3b, 0xca, 0xde, 0x47, 0x04, 0xfe, 0x63, 0x87, 0x85, 0xe8, 0x00, 0xa4, 0x47, + 0x90, 0x17, 0xb4, 0x60, 0xc4, 0x43, 0xdd, 0x86, 0x27, 0x63, 0xf9, 0x7f, 0x9e, 0x1b, 0xfe, 0x5a, + 0x26, 0x77, 0xbb, 0xc2, 0x6f, 0xb6, 0x69, 0xc4, 0xae, 0xdc, 0xe8, 0x0a, 0xcc, 0xa1, 0x73, 0x8d, + 0xf7, 0xa9, 0x46, 0x7a, 0x53, 0xe6, 0x4d, 0xe3, 0x26, 0xf8, 0x79, 0x76, 0x5a, 0x93, 0xf2, 0x14, + 0x17, 0x41, 0x4f, 0x1d, 0x56, 0x19, 0x70, 0xd8, 0x61, 0xbc, 0xcd, 0x27, 0xa9, 0x26, 0x37, 0x68, + 0x6f, 0xfa, 0xdf, 0x66, 0x60, 0x7d, 0xec, 0x5c, 0xc9, 0x78, 0x3c, 0xda, 0xfa, 0xc8, 0xa4, 0xb4, + 0x3e, 0x1e, 0x41, 0x5e, 0xda, 0x83, 0xf4, 0xc0, 0x53, 0x71, 0xdb, 0x4a, 0x64, 0x91, 0xe8, 0x7d, + 0x1f, 0x43, 0x61, 0xc0, 0x47, 0xab, 0xce, 0xbc, 0xdf, 0x77, 0xd0, 0xba, 0x27, 0x6f, 0xfc, 0x9a, + 0x5d, 0x91, 0x37, 0x03, 0x4f, 0x83, 0x52, 0x94, 0x1f, 0x96, 0x26, 0x3d, 0x4f, 0xe2, 0xe5, 0x50, + 0x6f, 0xc3, 0xda, 0x28, 0xdb, 0x9e, 0x94, 0xf7, 0x4d, 0x04, 0x9a, 0x22, 0xa3, 0xa9, 0x51, 0x19, + 0xe9, 0xff, 0x3a, 0x2d, 0x75, 0xe5, 0x8a, 0xf5, 0x92, 0x42, 0x1f, 0xd3, 0x63, 0x9f, 0x68, 0x2d, + 0x11, 0x57, 0xe4, 0x04, 0x18, 0x37, 0xa4, 0x7f, 0xc9, 0x21, 0x04, 0xa3, 0xe6, 0x63, 0x28, 0xc8, + 0xd4, 0x45, 0xdd, 0xc6, 0x8c, 0x7a, 0x27, 0x41, 0x98, 0xbc, 0xb0, 0xd4, 0x34, 0x65, 0x36, 0x3d, + 0x4d, 0x11, 0xb7, 0x2f, 0x69, 0x71, 0xb9, 0x39, 0x19, 0xa6, 0x24, 0x08, 0xd7, 0x4b, 0x89, 0xe6, + 0xd9, 0x49, 0xa3, 0xf9, 0xfc, 0x64, 0xd1, 0x3c, 0xf7, 0x4e, 0xd1, 0x1c, 0xae, 0x8b, 0xe6, 0x6b, + 0x50, 0x68, 0xd1, 0x44, 0x52, 0x27, 0x5b, 0xdc, 0xd0, 0xa2, 0x71, 0x3e, 0xa7, 0x9f, 0xc1, 0xe3, + 0x6b, 0x6f, 0x95, 0x94, 0x87, 0x8d, 0xff, 0x97, 0xa5, 0xc9, 0x54, 0xa1, 0xef, 0x00, 0xfe, 0x38, + 0x03, 0x9a, 0xe0, 0xf9, 0xae, 0xc3, 0xad, 0x73, 0xc1, 0xd8, 0x67, 0xea, 0x92, 0x17, 0xa0, 0x5e, + 0x21, 0xcd, 0x34, 0x6d, 0x25, 0x12, 0x57, 0xbf, 0xb1, 0xce, 0x4e, 0xfa, 0x5c, 0x7f, 0x00, 0xb7, + 0x2d, 0xec, 0x67, 0x98, 0x83, 0xcd, 0x93, 0x99, 0x09, 0x9a, 0x27, 0x44, 0x72, 0xee, 0x25, 0x5b, + 0x28, 0x3a, 0x2c, 0xc8, 0x57, 0x01, 0xea, 0x76, 0x85, 0xca, 0xa0, 0xe2, 0xc5, 0xcf, 0x0f, 0x65, + 0xb7, 0xbb, 0x4f, 0x7d, 0xf2, 0x3b, 0xb8, 0xa5, 0x8e, 0xac, 0x1e, 0x9b, 0xc5, 0x0d, 0x87, 0xda, + 0x1c, 0x8a, 0xf7, 0x59, 0xe9, 0x2a, 0x51, 0x95, 0xf6, 0x90, 0x49, 0x4a, 0x41, 0x5c, 0xb8, 0xb1, + 0xec, 0x0c, 0x41, 0xc2, 0xc1, 0x37, 0xef, 0xec, 0x04, 0x6f, 0xde, 0xab, 0x0e, 0x14, 0x87, 0x27, + 0x9e, 0xcc, 0x77, 0x10, 0x98, 0x11, 0x93, 0xc4, 0xed, 0x11, 0xf1, 0x2d, 0xec, 0x49, 0x9d, 0xa9, + 0x57, 0xef, 0x67, 0x0d, 0x90, 0x20, 0xac, 0xd6, 0x7f, 0x2f, 0x3d, 0x57, 0xda, 0xf9, 0x7e, 0xf6, + 0x40, 0xfe, 0x6f, 0x53, 0xf2, 0x15, 0x70, 0xcb, 0x8b, 0x64, 0xe2, 0x31, 0x49, 0x23, 0x6e, 0xc2, + 0x24, 0xe8, 0x07, 0x20, 0x29, 0x6f, 0x58, 0x37, 0xef, 0x05, 0x2d, 0xdb, 0x23, 0x0f, 0x58, 0x71, + 0xcb, 0x67, 0xe6, 0xe6, 0x1d, 0xab, 0xb1, 0x4f, 0x76, 0x75, 0x58, 0x1a, 0xee, 0xd6, 0xce, 0xdd, + 0x78, 0xbf, 0x8b, 0xf6, 0x40, 0xab, 0x56, 0xff, 0xe7, 0x8c, 0x7c, 0x54, 0xaf, 0x24, 0xf2, 0xbb, + 0x9f, 0x51, 0xcc, 0x0f, 0x01, 0x86, 0x5a, 0x6d, 0x0b, 0x46, 0x02, 0x32, 0x78, 0xe0, 0x99, 0xfe, + 0xe3, 0x28, 0x1e, 0xb8, 0x08, 0xd3, 0xb1, 0x05, 0xe6, 0x0c, 0xf1, 0x99, 0xe2, 0x3a, 0xb2, 0x29, + 0xe1, 0xee, 0xcf, 0x19, 0xb8, 0x25, 0xce, 0x54, 0xbd, 0x50, 0x05, 0xc6, 0xff, 0xff, 0x23, 0x7d, + 0x25, 0x9f, 0x9f, 0xc5, 0x3d, 0x27, 0x7e, 0x89, 0xe8, 0x75, 0x19, 0x1f, 0x41, 0xfe, 0x92, 0xba, + 0x51, 0x68, 0x5a, 0x62, 0xa8, 0xaa, 0x2c, 0x40, 0x10, 0x12, 0xe8, 0x3b, 0xb2, 0xdd, 0x24, 0x5b, + 0xe3, 0xd1, 0x6e, 0xe0, 0x75, 0xfc, 0x3d, 0x0c, 0x92, 0xe4, 0x39, 0x10, 0x97, 0x5d, 0x9a, 0x2a, + 0x8a, 0x62, 0xd3, 0xb6, 0x17, 0xfa, 0x8b, 0x2e, 0xbb, 0x94, 0x64, 0x75, 0x09, 0xd7, 0x03, 0xd9, + 0x21, 0xc2, 0x57, 0x7c, 0xea, 0x5a, 0xcc, 0xc1, 0xa9, 0x6a, 0xee, 0x05, 0x8f, 0x18, 0xfe, 0x6c, + 0xc1, 0xf1, 0xd3, 0x8e, 0x27, 0x92, 0x41, 0x67, 0xce, 0x58, 0x52, 0x70, 0x35, 0xcf, 0x00, 0x29, + 0xfe, 0x1e, 0x11, 0x3f, 0xda, 0xf7, 0x49, 0x77, 0x15, 0x58, 0x7f, 0xd1, 0x5f, 0x33, 0xde, 0xfb, + 0xa1, 0xcf, 0x54, 0x03, 0x4f, 0x78, 0x31, 0xcf, 0x67, 0xae, 0x3a, 0x33, 0x7e, 0xeb, 0xaf, 0x65, + 0xbc, 0xc2, 0xe7, 0x59, 0x41, 0xbe, 0xcf, 0x82, 0x26, 0x93, 0x9b, 0x14, 0xf2, 0xf6, 0xa2, 0x16, + 0x0b, 0xe4, 0xb2, 0xfd, 0x34, 0xa7, 0x80, 0x50, 0x79, 0x1c, 0x5b, 0x3f, 0xed, 0xaf, 0xd9, 0x9f, + 0xa1, 0xe7, 0xe0, 0x9e, 0x03, 0xe1, 0x2e, 0x8f, 0x38, 0x8d, 0xbc, 0x91, 0x79, 0x8a, 0x3d, 0x8c, + 0x9a, 0x4b, 0x24, 0xf0, 0xf2, 0x3f, 0x04, 0xd4, 0xa7, 0x79, 0x43, 0x8d, 0x74, 0x26, 0x1b, 0x7d, + 0xc3, 0x6b, 0xf8, 0x4e, 0x97, 0x7c, 0x33, 0xe4, 0x41, 0x57, 0x4a, 0xd5, 0x91, 0xad, 0x08, 0x1f, + 0xba, 0x7a, 0x6e, 0xa6, 0x22, 0xcc, 0xc3, 0x6f, 0x7b, 0x5e, 0xf4, 0xaf, 0x66, 0x64, 0xe1, 0xa5, + 0xde, 0xb3, 0xbd, 0x00, 0x9d, 0xb0, 0xd0, 0xab, 0x38, 0xe6, 0xad, 0x26, 0xfe, 0x38, 0xc9, 0xa8, + 0xb6, 0x81, 0x1a, 0x8b, 0x7c, 0x50, 0xbe, 0x59, 0xf5, 0xc2, 0x74, 0x16, 0xc7, 0x35, 0x5b, 0xa4, + 0x56, 0x2a, 0xc8, 0x0c, 0xb5, 0xfe, 0x55, 0xec, 0xa9, 0xab, 0x07, 0x00, 0x61, 0x76, 0x51, 0x20, + 0x28, 0x3a, 0x81, 0xa3, 0x2c, 0x22, 0x27, 0x21, 0xc7, 0x81, 0x83, 0xcf, 0xca, 0x12, 0x8d, 0xd9, + 0x99, 0x34, 0x0d, 0xc5, 0x81, 0xa9, 0xd9, 0x40, 0x5b, 0x63, 0x6e, 0xb0, 0xad, 0x31, 0xfc, 0x28, + 0x9d, 0x1d, 0x79, 0x94, 0xee, 0x13, 0xf4, 0x5e, 0x45, 0x7a, 0x04, 0xf8, 0xd0, 0xb1, 0x03, 0x85, + 0xf8, 0xd5, 0x1a, 0xdd, 0x76, 0x0e, 0x83, 0xae, 0x2c, 0x91, 0xae, 0x94, 0x59, 0xa9, 0xc1, 0x68, + 0xdb, 0xc8, 0x2b, 0x46, 0x6c, 0xf8, 0xbe, 0x86, 0x1c, 0xbe, 0x66, 0xe3, 0x24, 0x30, 0xf9, 0x24, + 0xf3, 0x82, 0x4b, 0x7c, 0xad, 0xfe, 0x00, 0x33, 0x38, 0xd3, 0x55, 0xfd, 0x59, 0x21, 0x89, 0xa8, + 0x27, 0x28, 0xf5, 0x2b, 0x49, 0x94, 0x10, 0x13, 0x22, 0xb1, 0x2b, 0x27, 0x2f, 0x02, 0x91, 0x7b, + 0x5e, 0xd3, 0xd3, 0xff, 0xa4, 0x9e, 0x59, 0xea, 0x2c, 0x1a, 0xdc, 0xce, 0x04, 0x3f, 0xb0, 0x0c, + 0x66, 0xf4, 0x53, 0xc3, 0x19, 0xfd, 0x98, 0x76, 0x42, 0x59, 0xfd, 0x37, 0x31, 0x98, 0x94, 0x3d, + 0x1c, 0x2f, 0x15, 0xf9, 0xbf, 0x84, 0x1a, 0xe8, 0x3f, 0x49, 0x53, 0x96, 0x1e, 0x7c, 0x90, 0x27, + 0xc5, 0x61, 0x67, 0xd2, 0x1c, 0xf6, 0x2b, 0xc8, 0xc6, 0x1b, 0x98, 0xc2, 0x0d, 0x3c, 0x28, 0x8d, + 0x13, 0x85, 0x11, 0x53, 0xc7, 0x3d, 0xfa, 0x41, 0x2a, 0x51, 0x28, 0xeb, 0xff, 0x33, 0x05, 0x0f, + 0xd3, 0x51, 0x89, 0x62, 0x71, 0x28, 0xef, 0x2e, 0x95, 0xc6, 0x73, 0x94, 0x06, 0x51, 0xbd, 0xf4, + 0x7b, 0xf5, 0xaf, 0xa7, 0x60, 0x71, 0xe8, 0xe4, 0xef, 0xfa, 0xbb, 0x51, 0x6a, 0xb7, 0x78, 0xfa, + 0x06, 0xdd, 0xe2, 0x99, 0xf4, 0x32, 0x6c, 0xb8, 0xaa, 0x9b, 0x1d, 0xad, 0xea, 0x86, 0x75, 0x21, + 0x7b, 0x73, 0x5d, 0x30, 0x64, 0xf3, 0x40, 0x66, 0xc2, 0x0d, 0x6f, 0xb7, 0xa2, 0x4a, 0x65, 0x74, + 0x34, 0x22, 0x17, 0x6e, 0x06, 0xb4, 0xdd, 0xe0, 0xd6, 0x39, 0x8b, 0xd2, 0x9c, 0x53, 0x26, 0xc5, + 0x39, 0xe9, 0x5d, 0x78, 0x31, 0xe9, 0x9c, 0xbd, 0xab, 0xfd, 0x08, 0x96, 0x85, 0xff, 0xa0, 0x0e, + 0xff, 0x89, 0xd9, 0x66, 0x84, 0x48, 0xf5, 0x4e, 0x5a, 0xec, 0x23, 0xd4, 0x46, 0x34, 0xc8, 0xc6, + 0xff, 0x43, 0xaa, 0xf7, 0x0e, 0x35, 0xd4, 0xff, 0x6b, 0x5a, 0xd6, 0x6f, 0xbb, 0x95, 0x86, 0x27, + 0xd7, 0x4f, 0x3b, 0xc8, 0x73, 0x50, 0x35, 0x14, 0x76, 0xd9, 0x4c, 0xf6, 0xd6, 0xe7, 0x81, 0x4c, + 0x5e, 0xb2, 0x46, 0x51, 0x62, 0x1a, 0xbc, 0xcd, 0xaa, 0x08, 0x27, 0xbf, 0x81, 0x55, 0x45, 0x4d, + 0x3b, 0x51, 0xcb, 0x0b, 0x70, 0x87, 0x3d, 0x09, 0xc8, 0x3f, 0xf5, 0xee, 0x4a, 0x8a, 0x72, 0x8f, + 0x20, 0x76, 0xd4, 0xbf, 0x85, 0xfb, 0xa3, 0xcc, 0x3e, 0xfe, 0x7c, 0x61, 0x72, 0x5f, 0x15, 0x03, + 0xda, 0x30, 0xb7, 0xfc, 0x3b, 0xa3, 0xe6, 0x27, 0xd6, 0xc6, 0x5e, 0xef, 0x90, 0xf4, 0x67, 0x92, + 0x6b, 0xef, 0xf6, 0x08, 0xe2, 0xb5, 0x5f, 0x81, 0x36, 0xca, 0xec, 0xb2, 0x5e, 0xed, 0x3f, 0x67, + 0xdc, 0x19, 0x66, 0x3d, 0x60, 0x42, 0xf5, 0x3e, 0x84, 0x62, 0x5c, 0x7f, 0xf6, 0x5e, 0x99, 0xe7, + 0xf0, 0x2e, 0x96, 0x54, 0xed, 0x19, 0x83, 0x45, 0x6d, 0x17, 0x9f, 0xcf, 0xf7, 0xfb, 0x6f, 0x1f, + 0x79, 0x75, 0x22, 0x5f, 0x04, 0xeb, 0x52, 0xaf, 0xb6, 0x63, 0x6f, 0xa3, 0x80, 0x9a, 0x67, 0x9c, + 0x39, 0x76, 0xa8, 0xcd, 0xaf, 0x4d, 0xaf, 0x17, 0xe2, 0x7a, 0xad, 0x2a, 0x30, 0x3b, 0x88, 0x48, + 0xd7, 0x85, 0x62, 0xba, 0x2e, 0x3c, 0xfb, 0xbb, 0x3c, 0x68, 0x57, 0xfd, 0x6f, 0x4b, 0x9e, 0xc2, + 0x04, 0x7f, 0xe3, 0x16, 0x7f, 0x41, 0x1e, 0xc3, 0x83, 0x31, 0x74, 0x87, 0xdf, 0x16, 0x33, 0xe4, + 0xd7, 0xf0, 0xd1, 0x18, 0x92, 0xb2, 0x83, 0xbf, 0x6a, 0xd6, 0x31, 0xf1, 0xe5, 0x6e, 0xb3, 0x38, + 0x45, 0x9e, 0xc1, 0xd3, 0x31, 0x0c, 0x3b, 0x94, 0x3b, 0xea, 0x1f, 0xe3, 0xa2, 0x4d, 0x3e, 0x82, + 0x5f, 0x5e, 0x43, 0xcb, 0xec, 0x5a, 0xd3, 0xf5, 0x02, 0x56, 0x64, 0x64, 0x03, 0x4a, 0x63, 0x88, + 0xf1, 0xbb, 0x4d, 0xcf, 0x45, 0x29, 0xcb, 0x43, 0x7a, 0xea, 0x30, 0xbb, 0x78, 0x46, 0x9e, 0xc3, + 0xfa, 0x18, 0x1e, 0x59, 0xbc, 0x1e, 0x9e, 0x9d, 0x39, 0xdc, 0x65, 0xc5, 0xe6, 0xe4, 0x2b, 0x54, + 0x3c, 0xcf, 0xb1, 0xbd, 0x4b, 0xb7, 0xd8, 0x22, 0x25, 0x78, 0x36, 0x86, 0x47, 0xda, 0xe2, 0x61, + 0x27, 0x3a, 0x3c, 0xdb, 0xa6, 0x11, 0x2b, 0x72, 0xf2, 0x0a, 0x3e, 0x19, 0x47, 0xef, 0xb5, 0x7d, + 0x16, 0xf1, 0x88, 0x5f, 0xb0, 0x03, 0x6f, 0xcf, 0xbb, 0x8c, 0xff, 0x29, 0x29, 0xfe, 0x9e, 0x7c, + 0x06, 0x1f, 0x4f, 0xca, 0x18, 0x1d, 0xbb, 0x8e, 0x67, 0x9d, 0x33, 0xbb, 0x78, 0x7e, 0xcd, 0x99, + 0xe2, 0xf6, 0x62, 0x92, 0xc7, 0x21, 0x5f, 0xc2, 0xe7, 0x13, 0x2f, 0x55, 0x75, 0xbd, 0x4e, 0xb3, + 0x55, 0x3f, 0xe7, 0x8e, 0x23, 0xbc, 0x4d, 0xb1, 0x7d, 0x9d, 0x14, 0x79, 0x18, 0x72, 0xb7, 0x59, + 0xc3, 0xcc, 0xd6, 0x41, 0xbe, 0xa2, 0x3b, 0xf9, 0x8a, 0x06, 0x75, 0xcf, 0xeb, 0xbe, 0x50, 0xba, + 0x86, 0xe7, 0xed, 0xd1, 0xa0, 0xc9, 0x8a, 0x1e, 0xf9, 0x04, 0x7e, 0x3d, 0x6e, 0x45, 0x8c, 0x1c, + 0x4a, 0x53, 0x6b, 0xb2, 0x6f, 0x50, 0xf4, 0x27, 0x62, 0x3a, 0xf0, 0xa2, 0x93, 0x72, 0xe5, 0x84, + 0x05, 0xfc, 0x8c, 0x33, 0xbb, 0xf8, 0x23, 0xf9, 0x02, 0x3e, 0x1b, 0xc3, 0xf4, 0x3d, 0x63, 0xe7, + 0xcc, 0xb5, 0x1b, 0x5e, 0x27, 0x70, 0x59, 0x77, 0x8b, 0xda, 0x58, 0x5f, 0xd5, 0xf9, 0x4f, 0xac, + 0x18, 0x90, 0xaf, 0x60, 0x73, 0x62, 0x56, 0x91, 0xba, 0x6d, 0x75, 0xba, 0x35, 0xb7, 0xe1, 0x79, + 0xf5, 0x36, 0x75, 0x9c, 0x62, 0x48, 0xb6, 0xe1, 0xf5, 0xc4, 0xfc, 0x35, 0xd7, 0xe6, 0x17, 0xdc, + 0xee, 0x50, 0x27, 0x9e, 0x45, 0x8a, 0x2a, 0x7a, 0xe7, 0x5d, 0x48, 0xfe, 0x0e, 0xd9, 0x84, 0x97, + 0xd7, 0x4a, 0x4d, 0x5d, 0x31, 0x96, 0xcc, 0x87, 0x97, 0x2e, 0x0b, 0xc2, 0x16, 0xf7, 0x8b, 0x17, + 0xe4, 0x73, 0xf8, 0x74, 0xe2, 0xb5, 0x93, 0x0a, 0x79, 0x49, 0x5e, 0xc3, 0x97, 0x13, 0x73, 0x1a, + 0xcc, 0x62, 0x6e, 0x24, 0x24, 0xcf, 0x2d, 0xee, 0xd3, 0x88, 0x7b, 0x6e, 0xf1, 0x2d, 0xf9, 0x1a, + 0x7e, 0x33, 0xe9, 0xbe, 0xcb, 0xae, 0xd5, 0xf2, 0x02, 0x66, 0x1f, 0xb5, 0x3c, 0x97, 0x1d, 0x74, + 0x04, 0xa6, 0xd8, 0xbd, 0xc6, 0xce, 0x0f, 0xbc, 0x48, 0xce, 0x71, 0x78, 0x56, 0x71, 0xa8, 0x5b, + 0xfc, 0x69, 0x6b, 0xf6, 0x4d, 0xe6, 0x0f, 0x99, 0x5f, 0xfc, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfa, 0x9a, 0x2b, 0xf0, 0x40, 0x35, 0x00, 0x00, +} diff --git a/protocol/dota_gcmessages_common_match_management/dota_gcmessages_common_match_management.go b/protocol/dota_gcmessages_common_match_management/dota_gcmessages_common_match_management.go index 7122bb1..763eb99 100755 --- a/protocol/dota_gcmessages_common_match_management/dota_gcmessages_common_match_management.go +++ b/protocol/dota_gcmessages_common_match_management/dota_gcmessages_common_match_management.go @@ -1533,6 +1533,7 @@ type CSODOTALobby struct { SeriesCurrentSelectionPriorityUsedCoinToss *bool `protobuf:"varint,102,opt,name=series_current_selection_priority_used_coin_toss,json=seriesCurrentSelectionPriorityUsedCoinToss" json:"series_current_selection_priority_used_coin_toss,omitempty"` CurrentPrimaryEvent *dota_shared_enums.EEvent `protobuf:"varint,103,opt,name=current_primary_event,json=currentPrimaryEvent,enum=EEvent,def=0" json:"current_primary_event,omitempty"` LowpriDeprecated *bool `protobuf:"varint,104,opt,name=lowpri_deprecated,json=lowpriDeprecated" json:"lowpri_deprecated,omitempty"` + EmergencyDisabledHeroIds []uint32 `protobuf:"varint,105,rep,name=emergency_disabled_hero_ids,json=emergencyDisabledHeroIds" json:"emergency_disabled_hero_ids,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -2159,6 +2160,13 @@ func (m *CSODOTALobby) GetLowpriDeprecated() bool { return false } +func (m *CSODOTALobby) GetEmergencyDisabledHeroIds() []uint32 { + if m != nil { + return m.EmergencyDisabledHeroIds + } + return nil +} + type CSODOTALobby_CExtraMsg struct { Id *uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` Contents []byte `protobuf:"bytes,2,opt,name=contents" json:"contents,omitempty"` @@ -2227,303 +2235,304 @@ func init() { func init() { proto.RegisterFile("dota_gcmessages_common_match_management.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 4759 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x73, 0x1b, 0x47, - 0x76, 0x36, 0x28, 0x8a, 0x04, 0x1b, 0x17, 0x82, 0x4d, 0x8a, 0x1c, 0x52, 0x37, 0x9a, 0xba, 0xd1, + // 4783 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xdb, 0x72, 0x1b, 0x47, + 0x7a, 0x36, 0x28, 0x8a, 0x04, 0x1b, 0x07, 0x82, 0x4d, 0x8a, 0x1c, 0x52, 0x27, 0x9a, 0x3a, 0xd1, 0x92, 0x4d, 0x4b, 0xb2, 0x2d, 0xaf, 0xb9, 0xf6, 0xba, 0x40, 0x00, 0x92, 0x60, 0x91, 0x20, 0x3c, 0x00, 0x25, 0x2b, 0xd9, 0x4d, 0xa7, 0x31, 0xd3, 0x04, 0x7b, 0x39, 0x33, 0x3d, 0x3b, 0x3d, 0x43, - 0x91, 0xfb, 0xb4, 0xa9, 0xbc, 0xa5, 0x2a, 0x0f, 0x79, 0x4a, 0xaa, 0xf2, 0x92, 0x97, 0xe4, 0x1f, - 0xa4, 0xf2, 0x03, 0xf2, 0x07, 0xf2, 0x8f, 0x36, 0xd5, 0xa7, 0x7b, 0x06, 0x03, 0x10, 0xdc, 0x4b, - 0x92, 0xaa, 0xe8, 0x45, 0x9c, 0xef, 0x7c, 0xdd, 0xd3, 0xd3, 0xe7, 0xf4, 0xb9, 0x35, 0xd0, 0x67, - 0xae, 0x88, 0x29, 0x19, 0x3a, 0x3e, 0x93, 0x92, 0x0e, 0x99, 0x24, 0x8e, 0xf0, 0x7d, 0x11, 0x10, - 0x9f, 0xc6, 0xce, 0x09, 0xf1, 0x69, 0x40, 0x87, 0xcc, 0x67, 0x41, 0xbc, 0x13, 0x46, 0x22, 0x16, - 0x1b, 0xcb, 0x32, 0x66, 0xd4, 0x4f, 0xc9, 0x06, 0x5c, 0x1d, 0x3a, 0xd2, 0x3d, 0xcd, 0x4d, 0x62, - 0xf0, 0x35, 0x98, 0x5b, 0x9e, 0xd0, 0x88, 0xb9, 0x84, 0x05, 0x89, 0x6f, 0x04, 0x5b, 0xff, 0x7c, - 0x0d, 0xe1, 0x46, 0xef, 0xb0, 0x79, 0xd8, 0xaf, 0x77, 0x69, 0x14, 0x5f, 0x1c, 0x30, 0x7f, 0xc0, - 0x22, 0xdc, 0x44, 0xe5, 0x90, 0x46, 0x71, 0xc0, 0x22, 0x12, 0x5f, 0x84, 0xcc, 0x2a, 0x6c, 0x16, - 0xb6, 0xab, 0xcf, 0x97, 0x77, 0xba, 0x1a, 0xac, 0x3b, 0x8e, 0x48, 0x82, 0xb8, 0x7f, 0x11, 0xb2, - 0xdd, 0x72, 0xb7, 0x6e, 0xf7, 0x3b, 0x2d, 0x9b, 0x74, 0x0e, 0x3b, 0x2d, 0xbb, 0x64, 0x86, 0x29, - 0x11, 0x5e, 0x47, 0x45, 0xae, 0x3e, 0x83, 0x3a, 0x27, 0xd6, 0xcc, 0x66, 0x61, 0xbb, 0x68, 0xcf, - 0x73, 0xd9, 0x50, 0x8f, 0x78, 0x07, 0x2d, 0x45, 0x6c, 0xc8, 0x45, 0x40, 0x42, 0x1e, 0x0c, 0x89, - 0x23, 0x5c, 0x26, 0xad, 0xd9, 0xcd, 0x6b, 0xdb, 0x95, 0xbd, 0x99, 0x5a, 0xc1, 0x5e, 0xd4, 0xc2, - 0x2e, 0x0f, 0x86, 0x0d, 0x25, 0x9a, 0xe4, 0xc7, 0xdc, 0x67, 0xd2, 0xba, 0x3e, 0x8d, 0xdf, 0x57, - 0x22, 0xfc, 0x73, 0xb4, 0x91, 0xe7, 0x1f, 0x53, 0xee, 0x31, 0x97, 0x0c, 0x78, 0xec, 0x53, 0x79, - 0x6a, 0xcd, 0x6d, 0x16, 0xb6, 0x2b, 0xf6, 0xda, 0x68, 0xd0, 0x4b, 0x90, 0xef, 0x69, 0x31, 0xde, - 0x41, 0xcb, 0xb1, 0x48, 0xa2, 0x80, 0x5d, 0x10, 0x79, 0xca, 0x3d, 0x8f, 0x78, 0xec, 0x8c, 0x79, - 0xd6, 0x3c, 0x8c, 0x5a, 0x32, 0xa2, 0x9e, 0x92, 0xec, 0x2b, 0x01, 0xbe, 0x87, 0x2a, 0x29, 0x7f, - 0x90, 0x5c, 0xf0, 0xc0, 0x2a, 0x02, 0xb3, 0x6c, 0xc0, 0x3d, 0x85, 0xe1, 0xe7, 0xe8, 0x46, 0x4a, - 0x0a, 0x23, 0x76, 0xc6, 0x82, 0x98, 0x24, 0x41, 0xcc, 0x3d, 0x6b, 0x01, 0xc8, 0xe9, 0x1b, 0xbb, - 0x5a, 0x76, 0xa4, 0x44, 0x5b, 0xff, 0xb1, 0x84, 0xca, 0x79, 0xed, 0xe0, 0xbb, 0xa8, 0xa8, 0x36, - 0xf8, 0x82, 0x70, 0x17, 0x74, 0x32, 0xbb, 0x37, 0xfb, 0xbb, 0x7f, 0xbb, 0x5d, 0xb0, 0xe7, 0x01, - 0x6d, 0xbb, 0xf8, 0x26, 0x5a, 0xf0, 0x18, 0x75, 0x59, 0xa4, 0x18, 0x6a, 0xcf, 0xe7, 0xec, 0xa2, - 0x06, 0xda, 0x2e, 0xbe, 0x8d, 0x90, 0x0f, 0xfa, 0x25, 0xdc, 0x95, 0xd6, 0xb5, 0xcd, 0x6b, 0xdb, - 0x73, 0xf6, 0x82, 0x46, 0xda, 0xae, 0x54, 0xe2, 0x21, 0xf5, 0x19, 0xf1, 0x8d, 0x32, 0xd4, 0xb2, - 0x16, 0x14, 0x72, 0x00, 0x2a, 0xf8, 0x0c, 0x5d, 0x97, 0x31, 0x8d, 0x19, 0xec, 0x9e, 0x32, 0x86, - 0xfc, 0xca, 0x76, 0x7a, 0x4a, 0xb4, 0x3b, 0x73, 0xd4, 0xb6, 0x35, 0x0b, 0xbf, 0x41, 0x5b, 0xec, - 0xf8, 0x98, 0x39, 0x31, 0x3f, 0x63, 0x44, 0xc6, 0x34, 0x8a, 0x99, 0xab, 0x6d, 0xd9, 0xa7, 0xa7, - 0xa9, 0x0e, 0xcd, 0x9e, 0xde, 0xcd, 0x98, 0x3d, 0x4d, 0x3c, 0x18, 0xf1, 0x94, 0x3e, 0xf1, 0xf7, - 0xe8, 0x56, 0x44, 0x3f, 0x5c, 0x3d, 0xcd, 0x26, 0x4c, 0xb3, 0x1e, 0xd1, 0x0f, 0x57, 0x4c, 0xf0, - 0x29, 0xc2, 0x34, 0x8e, 0x99, 0x1f, 0xc6, 0x7a, 0x12, 0x3d, 0xec, 0x63, 0x18, 0x56, 0x33, 0x12, - 0x18, 0x0a, 0xec, 0xbb, 0xa8, 0x94, 0xb2, 0x83, 0xc4, 0xb7, 0xb6, 0x80, 0x86, 0x0c, 0xd4, 0x49, - 0x7c, 0xbc, 0x89, 0x4a, 0xb0, 0x86, 0x61, 0x24, 0x92, 0x50, 0x5a, 0x25, 0x20, 0xe4, 0x21, 0xfc, - 0x15, 0x5a, 0xf3, 0xc4, 0x07, 0x12, 0x46, 0x5c, 0x44, 0x3c, 0xbe, 0x20, 0x54, 0x1f, 0x19, 0xa5, - 0x96, 0x65, 0x60, 0xaf, 0x78, 0xe2, 0x43, 0xd7, 0x48, 0xcd, 0x79, 0x6a, 0xbb, 0xf8, 0x5b, 0x84, - 0xf4, 0x79, 0x87, 0x63, 0x77, 0x03, 0x76, 0x1a, 0xed, 0xc0, 0xd7, 0xc0, 0x69, 0x5b, 0x3a, 0xa8, - 0xf7, 0x1b, 0xaf, 0x49, 0xff, 0x7d, 0xb7, 0x45, 0x1a, 0xf5, 0xde, 0x51, 0x7d, 0xdf, 0x5e, 0xf0, - 0x53, 0x29, 0xfe, 0x11, 0x55, 0x07, 0x22, 0x26, 0x2e, 0x3f, 0x3e, 0xe6, 0x4e, 0xe2, 0xc5, 0x17, - 0xd6, 0x2a, 0xcc, 0x80, 0x77, 0x94, 0xa2, 0xf6, 0x44, 0xdc, 0xcc, 0x24, 0xbb, 0xab, 0x7b, 0x87, - 0x7d, 0xd2, 0x6c, 0xbf, 0x7c, 0xd9, 0x6e, 0x1c, 0xed, 0xf7, 0xdf, 0x93, 0x6e, 0xbd, 0xd7, 0x6b, - 0xbf, 0x6d, 0xd9, 0x95, 0x41, 0x9e, 0x86, 0xd7, 0xd0, 0xbc, 0xf2, 0x33, 0x6a, 0xdd, 0x6b, 0xb0, - 0xee, 0x39, 0xf5, 0xa8, 0x2d, 0x0d, 0x04, 0x01, 0xf5, 0x99, 0xf5, 0xc5, 0x66, 0x61, 0x7b, 0xc1, - 0x2e, 0x2a, 0xa0, 0x43, 0x7d, 0x86, 0x37, 0x51, 0x19, 0x84, 0x09, 0x27, 0x9e, 0x18, 0x0a, 0xeb, - 0x4b, 0x65, 0xab, 0x36, 0x52, 0xd8, 0x11, 0xdf, 0x17, 0x43, 0x81, 0xef, 0xa3, 0x2a, 0x30, 0x06, - 0x54, 0x32, 0xcd, 0xf9, 0x0a, 0x38, 0x30, 0x6e, 0x8f, 0x4a, 0x06, 0xac, 0x6f, 0xd0, 0xba, 0xde, - 0x0e, 0x97, 0x4b, 0x3a, 0x50, 0x47, 0x18, 0xce, 0x0c, 0x71, 0x95, 0x1d, 0x5a, 0xb0, 0x9e, 0x55, - 0x20, 0x34, 0x8d, 0x1c, 0xce, 0x4d, 0x53, 0xd9, 0xdf, 0xe5, 0xa1, 0x39, 0x15, 0xac, 0x4f, 0x19, - 0x3a, 0x52, 0x42, 0x1d, 0xdd, 0xce, 0x5b, 0x98, 0x4f, 0xcf, 0x49, 0x44, 0x83, 0x21, 0x23, 0x3e, - 0x0f, 0x92, 0x98, 0x49, 0x6b, 0x03, 0x86, 0x6f, 0xe4, 0x48, 0x07, 0xf4, 0xdc, 0x56, 0x94, 0x03, - 0xcd, 0xc0, 0x0f, 0x51, 0x15, 0xa4, 0x1e, 0x0d, 0x86, 0x89, 0x72, 0xc4, 0xd6, 0x4d, 0x18, 0x33, - 0x81, 0xe2, 0xcf, 0xd0, 0xbc, 0x3e, 0x80, 0xd2, 0xba, 0xbd, 0x79, 0x6d, 0xbb, 0x34, 0x71, 0xac, - 0xb4, 0x3b, 0xb6, 0x53, 0x0e, 0xde, 0x42, 0x15, 0x11, 0xb2, 0x80, 0x0c, 0x13, 0xee, 0xb9, 0xea, - 0x43, 0xee, 0x68, 0xcb, 0x53, 0xe0, 0x2b, 0x85, 0xb5, 0x5d, 0xe5, 0x8d, 0x4c, 0xe4, 0x00, 0x96, - 0xb4, 0xee, 0x2a, 0x37, 0x69, 0x97, 0x35, 0x08, 0x2c, 0xa9, 0x0e, 0xd4, 0x98, 0x79, 0xaa, 0x63, - 0x2e, 0x49, 0xc4, 0x7c, 0xca, 0x03, 0x1e, 0x0c, 0xad, 0x7b, 0xfa, 0x40, 0xe5, 0x6c, 0xf4, 0x95, - 0x62, 0xd8, 0x29, 0x01, 0x7f, 0x81, 0x56, 0x61, 0x25, 0xc7, 0x22, 0x22, 0xbf, 0x16, 0x3c, 0x20, - 0x11, 0xfb, 0x4d, 0xc2, 0x64, 0x2c, 0xad, 0x6d, 0xf0, 0xf4, 0xcb, 0x4a, 0xfa, 0x52, 0x44, 0x3f, - 0x08, 0x1e, 0xd8, 0x46, 0x84, 0x5f, 0xa0, 0xb2, 0x54, 0x8e, 0x8f, 0x07, 0x67, 0x5c, 0xed, 0xe3, - 0x27, 0x53, 0x3e, 0xb9, 0x0d, 0x32, 0xbb, 0xa4, 0x88, 0xfa, 0x6f, 0x18, 0x17, 0x31, 0xe7, 0x2c, - 0x1b, 0xf7, 0xf8, 0x0f, 0x8c, 0x53, 0xc4, 0x74, 0xdc, 0x3d, 0x54, 0x49, 0x95, 0x7e, 0xec, 0xd1, - 0xa1, 0xb4, 0x9e, 0x68, 0xc7, 0x6c, 0xc0, 0x97, 0x0a, 0x53, 0xde, 0xde, 0x84, 0x0a, 0xc9, 0x3c, - 0xe6, 0xa4, 0xd4, 0x4f, 0xb5, 0xb7, 0xd7, 0xa2, 0x1e, 0x48, 0x34, 0xff, 0x05, 0x5a, 0x63, 0xe7, - 0x8e, 0x97, 0x48, 0xe5, 0xd8, 0xc0, 0x6b, 0x53, 0x9f, 0x69, 0xb3, 0xfa, 0x0c, 0xc6, 0xdc, 0xc8, - 0xc4, 0xfd, 0x4c, 0xda, 0x76, 0xf3, 0x51, 0xc5, 0xe5, 0x67, 0x5c, 0xaa, 0x37, 0x72, 0xd7, 0xfa, - 0x7c, 0x2c, 0xaa, 0x34, 0x8d, 0xa4, 0xed, 0xe6, 0x03, 0x86, 0x74, 0x4e, 0x98, 0x9b, 0x78, 0x4c, - 0x7b, 0xad, 0xa7, 0x63, 0x01, 0xa3, 0x67, 0x64, 0xe0, 0xb8, 0xae, 0x88, 0x5c, 0xcf, 0xae, 0x8a, - 0x5c, 0xb9, 0x77, 0x0c, 0x22, 0xea, 0x9c, 0xb2, 0x98, 0x44, 0x22, 0x09, 0x5c, 0xeb, 0xf9, 0xd8, - 0x3b, 0xf6, 0xb4, 0xcc, 0x56, 0x22, 0xfc, 0x1d, 0xba, 0x99, 0x8e, 0xf9, 0x4d, 0xc2, 0x12, 0x46, - 0x5c, 0x46, 0x5d, 0x8f, 0x07, 0x66, 0x75, 0x2f, 0x60, 0xa4, 0x65, 0x28, 0x3f, 0x2a, 0x46, 0xd3, - 0x10, 0x60, 0x89, 0x7f, 0x53, 0x40, 0xb7, 0xae, 0x18, 0xaf, 0xc3, 0xcb, 0xd7, 0xe0, 0xb2, 0x6e, - 0xee, 0xb4, 0xfa, 0x53, 0xa6, 0xd0, 0x61, 0xe6, 0xde, 0x29, 0xb9, 0x5a, 0x4a, 0x3a, 0x22, 0xf2, - 0xa9, 0x67, 0xaf, 0xc7, 0x57, 0x31, 0xf0, 0xb7, 0xe8, 0xa6, 0x0e, 0xa3, 0x03, 0x75, 0x1a, 0x58, - 0x44, 0xa4, 0x27, 0x62, 0x49, 0x62, 0x41, 0x8e, 0xb9, 0xe7, 0x59, 0x3f, 0xd3, 0xe9, 0x01, 0x50, - 0xf6, 0x34, 0xa3, 0xa7, 0x08, 0x7d, 0xf1, 0x92, 0x7b, 0x9e, 0xca, 0x2d, 0xc6, 0x47, 0x6b, 0x3f, - 0x63, 0x62, 0xc1, 0x37, 0x97, 0x07, 0x83, 0xfb, 0x7e, 0xa5, 0xe3, 0xc2, 0xd7, 0xc8, 0x9a, 0x78, - 0xf5, 0x28, 0x1c, 0xed, 0x6a, 0xf3, 0x19, 0x7b, 0x6f, 0x16, 0x93, 0x6e, 0x23, 0x24, 0x85, 0x27, - 0xf4, 0x9e, 0x59, 0x3f, 0x87, 0x43, 0xb6, 0xa0, 0x10, 0xf8, 0x3e, 0xbc, 0x8d, 0x6a, 0xca, 0xf5, - 0x4b, 0x27, 0xe2, 0xa1, 0x3a, 0x60, 0x2e, 0x3b, 0xb7, 0xbe, 0xd5, 0x2e, 0x67, 0x20, 0xe2, 0x1e, - 0xc0, 0x6d, 0x85, 0xe2, 0x67, 0xe8, 0x06, 0xa4, 0x8e, 0xc4, 0xf1, 0x68, 0x90, 0x77, 0x8a, 0xdf, - 0x01, 0x1d, 0x83, 0xb0, 0xe1, 0xd1, 0x20, 0x73, 0x88, 0x5b, 0x4f, 0xd1, 0x75, 0xbd, 0x71, 0x73, - 0x68, 0xe6, 0xa8, 0x5d, 0xfb, 0x08, 0x2f, 0xa1, 0xca, 0xcb, 0x76, 0xa7, 0xd9, 0xee, 0xbc, 0x22, - 0x10, 0x90, 0x6a, 0x05, 0x5c, 0x46, 0xc5, 0x76, 0xc7, 0x3c, 0xcd, 0x6c, 0xfd, 0xdd, 0x44, 0x5e, - 0xa9, 0x4f, 0xa4, 0xca, 0x5f, 0x60, 0x9b, 0x2e, 0xe5, 0x2f, 0x80, 0xea, 0xa8, 0x22, 0x59, 0x30, - 0x9e, 0xbf, 0x68, 0xa0, 0xed, 0xaa, 0xb0, 0x6c, 0x84, 0x10, 0x74, 0xae, 0x41, 0xd0, 0x41, 0x1a, - 0x82, 0xb0, 0xf3, 0xcd, 0xc8, 0x9b, 0xce, 0x82, 0x8b, 0xb8, 0x3b, 0xc5, 0x45, 0xec, 0x4c, 0xf5, - 0xac, 0xb9, 0x38, 0x77, 0x7d, 0x2c, 0xce, 0xed, 0xa0, 0xe5, 0x31, 0x4f, 0xa9, 0x8c, 0x34, 0x91, - 0x90, 0x04, 0x15, 0xed, 0xa5, 0x9c, 0x83, 0xec, 0x81, 0x40, 0x25, 0xbd, 0x34, 0x4d, 0x7a, 0xe7, - 0x75, 0xd2, 0x4b, 0x4d, 0xd2, 0x7b, 0x1b, 0x21, 0xed, 0xc1, 0xc8, 0x90, 0xbb, 0x90, 0x24, 0xce, - 0xd9, 0x0b, 0x1a, 0x79, 0xc5, 0xdd, 0x8d, 0x77, 0xa8, 0x94, 0xcf, 0xc1, 0x31, 0x9a, 0x85, 0xcf, - 0x2c, 0xc0, 0x67, 0xc2, 0xdf, 0x6a, 0x72, 0x99, 0x2e, 0x53, 0xef, 0xce, 0xbc, 0x34, 0xeb, 0xcc, - 0x27, 0xdb, 0xb3, 0x63, 0xc9, 0xf6, 0xd6, 0xdf, 0x8f, 0x94, 0xb1, 0x2f, 0x06, 0x83, 0xff, 0x77, - 0x65, 0xe4, 0x16, 0xb1, 0x03, 0x7f, 0x4f, 0x2a, 0xe3, 0x3e, 0xaa, 0x3a, 0x89, 0x8c, 0x85, 0x0f, - 0x71, 0x29, 0xd5, 0xc9, 0xac, 0x5d, 0xd6, 0xa8, 0x0a, 0x45, 0x3a, 0x9d, 0xcd, 0x6d, 0xe7, 0xdc, - 0xc4, 0x76, 0xe2, 0x87, 0x68, 0x31, 0x3f, 0x89, 0x13, 0x39, 0xa0, 0x8f, 0x39, 0xbb, 0x32, 0x9a, - 0xa5, 0x11, 0x39, 0xca, 0x07, 0xe6, 0x79, 0x50, 0x5a, 0xc4, 0xd4, 0x0f, 0x41, 0x41, 0xf3, 0xf6, - 0xf2, 0x88, 0xdd, 0x4f, 0x45, 0x1b, 0xdf, 0xa2, 0x52, 0x6e, 0xe1, 0x7f, 0xa6, 0xaa, 0xb6, 0xfe, - 0x7d, 0x06, 0x2d, 0x36, 0x0e, 0xe4, 0x70, 0x9f, 0xd1, 0x33, 0x38, 0xe2, 0xa0, 0x8c, 0x92, 0xa7, - 0x66, 0x34, 0x4e, 0xb0, 0xa0, 0x53, 0x4e, 0x80, 0x34, 0xa1, 0x6d, 0xb2, 0x73, 0x2d, 0x9f, 0x01, - 0x27, 0xb9, 0x08, 0x79, 0x1d, 0x51, 0x6b, 0xd3, 0x8e, 0x71, 0x5d, 0x3f, 0xd7, 0x0f, 0x5a, 0xf6, - 0xd1, 0x7e, 0xab, 0x47, 0x7a, 0xfd, 0x7a, 0xbf, 0x45, 0xda, 0x9d, 0x76, 0x5f, 0x67, 0xf2, 0x7a, - 0xaa, 0x47, 0x68, 0xd1, 0x83, 0x57, 0x13, 0x97, 0xc5, 0xcc, 0x89, 0x99, 0x0b, 0xea, 0x2b, 0xda, - 0x55, 0x0d, 0x37, 0x0d, 0x8a, 0x9f, 0xa2, 0x95, 0x63, 0x1e, 0xc9, 0x98, 0x0c, 0x3c, 0x21, 0x5c, - 0x72, 0x42, 0xc3, 0x90, 0x05, 0xcc, 0x35, 0xf6, 0x85, 0x41, 0xb6, 0xa7, 0x44, 0xaf, 0x8d, 0x44, - 0x6d, 0xa6, 0xcb, 0xa5, 0x43, 0x23, 0x93, 0xa4, 0x93, 0x88, 0xc9, 0xc4, 0x8b, 0x25, 0x28, 0xb0, - 0x68, 0x2f, 0x1b, 0x21, 0x78, 0x44, 0x5b, 0x8b, 0xd4, 0x72, 0x7c, 0x2a, 0xa5, 0x4a, 0xd4, 0x1c, - 0x11, 0x04, 0xcc, 0x89, 0xcd, 0xe9, 0xaa, 0x2a, 0xb8, 0x99, 0xa1, 0x5b, 0xff, 0x85, 0x50, 0xad, - 0x91, 0x19, 0x90, 0xd9, 0xfb, 0x15, 0x34, 0x63, 0xec, 0x77, 0xce, 0xd8, 0xef, 0x0c, 0x77, 0xd5, - 0x71, 0x3e, 0x61, 0x91, 0x48, 0x37, 0xbf, 0x62, 0xcf, 0xa9, 0xc7, 0xb6, 0x8b, 0xbf, 0x41, 0xb3, - 0x4a, 0x0b, 0xf0, 0xc1, 0xd5, 0xe7, 0x15, 0xb3, 0x81, 0x0d, 0xd2, 0x6f, 0xd5, 0x0f, 0x76, 0x57, - 0xf3, 0x4f, 0xe4, 0xd5, 0xe1, 0x61, 0x93, 0xbc, 0x3a, 0x7a, 0xdf, 0xb3, 0x61, 0x48, 0xa6, 0xe5, - 0xb9, 0x9c, 0x96, 0x31, 0x9a, 0x55, 0xb1, 0xc3, 0xd4, 0x31, 0xf0, 0xb7, 0xd2, 0x7c, 0x56, 0xa4, - 0x95, 0xc1, 0x6e, 0xb3, 0xf2, 0x0c, 0x2a, 0xb0, 0x98, 0x9a, 0xb0, 0x5c, 0xd1, 0x25, 0x96, 0x42, - 0x74, 0x38, 0x5e, 0x53, 0x47, 0x26, 0xa6, 0xe4, 0x3c, 0xb4, 0xaa, 0x7a, 0xd5, 0xea, 0xf1, 0xa7, - 0x50, 0xd9, 0xb2, 0x11, 0x10, 0xfa, 0x81, 0x46, 0x2e, 0x73, 0xad, 0x45, 0x20, 0x54, 0x34, 0xa1, - 0xae, 0x41, 0xfc, 0x03, 0xaa, 0x18, 0xcd, 0x1a, 0x37, 0x55, 0x33, 0xb5, 0x1a, 0xec, 0x5a, 0x66, - 0x6e, 0x89, 0x24, 0xf1, 0x6e, 0x0d, 0x3e, 0x76, 0xbf, 0x55, 0x7f, 0x9b, 0x16, 0xef, 0x65, 0x2f, - 0xc7, 0xc0, 0x0f, 0x90, 0x31, 0x07, 0x42, 0x9d, 0x98, 0x8b, 0x40, 0x5a, 0xb7, 0xf4, 0x2b, 0x35, - 0x5a, 0xd7, 0x20, 0xb6, 0xd0, 0xbc, 0x73, 0x42, 0x83, 0x80, 0x79, 0xd6, 0x12, 0xc8, 0xd3, 0x47, - 0xb5, 0xe8, 0x30, 0xe2, 0xbf, 0x55, 0x01, 0xfe, 0xd8, 0x44, 0x24, 0xac, 0x67, 0x00, 0xb8, 0xc9, - 0x8e, 0x75, 0x40, 0xda, 0x46, 0xb5, 0x2c, 0x47, 0x4f, 0x95, 0xb6, 0x02, 0x39, 0x6b, 0x35, 0xc5, - 0x5f, 0x6b, 0xe5, 0xf5, 0xd0, 0x4a, 0xda, 0x96, 0x48, 0xe3, 0x56, 0xae, 0x4e, 0xfa, 0x13, 0xda, - 0x13, 0x38, 0xbc, 0xc4, 0x50, 0xcb, 0x64, 0xc1, 0xf8, 0xdb, 0x57, 0xe1, 0xed, 0x15, 0x03, 0x9b, - 0x97, 0xd7, 0x11, 0x02, 0xef, 0x4a, 0xc0, 0x7e, 0xd6, 0xa6, 0xd9, 0xcf, 0xf2, 0x98, 0xfd, 0x74, - 0x0e, 0xd5, 0x7f, 0xf6, 0x02, 0x8c, 0xea, 0x2b, 0x0b, 0x7a, 0x84, 0x6a, 0x01, 0x3b, 0x17, 0x01, - 0x09, 0x1d, 0x32, 0xa0, 0xc1, 0x90, 0x04, 0xc2, 0x54, 0x31, 0x15, 0xc0, 0xbb, 0xce, 0x1e, 0x0d, - 0x86, 0x1d, 0x81, 0x9f, 0x20, 0x3c, 0x41, 0x54, 0x86, 0xb7, 0x0e, 0x86, 0xb7, 0x98, 0xa7, 0x2a, - 0x1b, 0x7c, 0x8d, 0xd0, 0x79, 0x48, 0x06, 0x22, 0x48, 0x24, 0xd4, 0x19, 0xca, 0xd7, 0x7e, 0xb2, - 0x33, 0x79, 0x50, 0x2e, 0x01, 0x3f, 0x75, 0xf7, 0xd4, 0x10, 0x7b, 0xe1, 0x3c, 0xdc, 0xd3, 0x63, - 0x95, 0x13, 0x8a, 0x68, 0x70, 0x4a, 0x94, 0x06, 0x87, 0xcc, 0xba, 0xbd, 0x59, 0xd8, 0x5e, 0xb2, - 0x91, 0x82, 0x1a, 0x80, 0xe0, 0x5b, 0x68, 0xc1, 0xa1, 0x3e, 0x8b, 0xa8, 0x4f, 0x03, 0xa8, 0x3d, - 0x8a, 0xf6, 0x08, 0x50, 0x35, 0x6f, 0xde, 0x93, 0x86, 0x91, 0x70, 0x13, 0x27, 0x86, 0x66, 0x83, - 0xae, 0x41, 0x56, 0x46, 0xbe, 0xb4, 0xab, 0x85, 0x6d, 0x57, 0xe2, 0x9f, 0xa1, 0x75, 0xed, 0xfa, - 0xfc, 0xb3, 0x90, 0x9c, 0x89, 0x98, 0xe5, 0x93, 0x12, 0x5d, 0xd9, 0xdf, 0x00, 0xc2, 0xc1, 0x59, - 0xf8, 0x56, 0xc4, 0x6c, 0x54, 0xa8, 0xb5, 0xd1, 0x92, 0x64, 0x34, 0x82, 0xf6, 0x58, 0x56, 0x34, - 0x7f, 0xfc, 0xa7, 0x14, 0xcd, 0x8b, 0x7a, 0x5c, 0xc6, 0x01, 0x57, 0x47, 0xcf, 0x54, 0x20, 0x67, - 0xa0, 0x60, 0x12, 0xaa, 0x94, 0xd7, 0x85, 0x42, 0x68, 0xd6, 0xc6, 0xa9, 0x4c, 0xa9, 0xb1, 0x0b, - 0x12, 0x95, 0x18, 0x70, 0xa9, 0xf2, 0x02, 0xe5, 0x94, 0x93, 0x81, 0xca, 0xbc, 0x06, 0x2c, 0xb2, - 0xee, 0xeb, 0xc4, 0x80, 0xcb, 0xae, 0x92, 0xf4, 0x32, 0x01, 0x7e, 0x8c, 0x96, 0x60, 0x73, 0x63, - 0xce, 0x22, 0x92, 0x84, 0xaa, 0x84, 0x75, 0xad, 0x07, 0xc0, 0x5e, 0x54, 0x82, 0x3e, 0x67, 0xd1, - 0x91, 0x86, 0x37, 0x86, 0x68, 0xed, 0x0a, 0x75, 0x29, 0x8f, 0x93, 0xb5, 0xe4, 0x2a, 0x36, 0xfc, - 0xad, 0x3c, 0x4e, 0x6a, 0x01, 0xe0, 0xee, 0x66, 0xec, 0x79, 0xa3, 0x54, 0x9d, 0x36, 0x26, 0x91, - 0xc3, 0xc8, 0x29, 0xbb, 0x00, 0xaf, 0x37, 0xab, 0xd2, 0x46, 0x85, 0xbc, 0x61, 0x17, 0x5b, 0xff, - 0x38, 0x8b, 0x96, 0x1a, 0xf0, 0x16, 0xf5, 0x65, 0x4d, 0x16, 0x53, 0xee, 0xc9, 0xf1, 0xda, 0xbe, - 0x30, 0x51, 0xdb, 0xaf, 0x23, 0xf8, 0x9b, 0xc4, 0x74, 0x68, 0xa2, 0x3e, 0x64, 0x4e, 0x7d, 0x3a, - 0xcc, 0x27, 0x51, 0xb3, 0x53, 0x9b, 0x05, 0x50, 0xe8, 0xeb, 0x58, 0x0e, 0x93, 0x5c, 0xd1, 0x0a, - 0x98, 0x9b, 0xd2, 0x0a, 0xd8, 0x46, 0x35, 0xc3, 0x0a, 0xd4, 0xf9, 0x07, 0xde, 0x3c, 0xf0, 0xaa, - 0x9a, 0xa7, 0x60, 0x60, 0xde, 0x43, 0x15, 0x9d, 0xdf, 0x0a, 0x3f, 0xf4, 0x58, 0xcc, 0x20, 0x90, - 0x17, 0xf5, 0x74, 0x0d, 0x83, 0x41, 0xb3, 0x0b, 0x8a, 0x68, 0xf8, 0xc6, 0x05, 0xf8, 0x8e, 0x05, - 0x40, 0xe0, 0x23, 0x6f, 0x22, 0xfd, 0x00, 0x5f, 0x89, 0xf4, 0x0e, 0x00, 0xa0, 0x3e, 0x73, 0x1d, - 0x15, 0xb3, 0x02, 0x5c, 0xb7, 0x7e, 0xe6, 0x87, 0xa6, 0xf8, 0xce, 0xa6, 0x85, 0xf5, 0x69, 0xef, - 0xaf, 0x67, 0x82, 0xa5, 0x3d, 0x44, 0x8b, 0x5a, 0x3c, 0xfa, 0xd6, 0x0a, 0x70, 0x2a, 0x00, 0x67, - 0x1f, 0xfb, 0x18, 0x2d, 0xa5, 0xbc, 0xd1, 0xd7, 0x56, 0x81, 0xb9, 0x68, 0x98, 0xd9, 0xe7, 0x62, - 0x34, 0xab, 0xcc, 0xc7, 0x04, 0x04, 0xf8, 0x7b, 0xf2, 0x20, 0xd7, 0x2e, 0x1d, 0xe4, 0x4d, 0x54, - 0xe6, 0x92, 0x9c, 0x08, 0x5f, 0x5b, 0x3b, 0xb8, 0xee, 0xa2, 0x8d, 0xb8, 0x7c, 0x2d, 0x7c, 0x30, - 0xf2, 0xad, 0xff, 0x2c, 0x20, 0xcb, 0x58, 0x06, 0xf7, 0x99, 0x6b, 0x33, 0x15, 0x62, 0x52, 0x03, - 0xb9, 0x8f, 0xaa, 0x3c, 0x66, 0x7e, 0xce, 0xb3, 0xeb, 0x28, 0x5b, 0x56, 0x68, 0xe6, 0xd8, 0x1f, - 0xa2, 0x45, 0x2e, 0x89, 0x4c, 0xc2, 0xd0, 0xbb, 0x20, 0x4e, 0xa4, 0xf2, 0x16, 0x9d, 0x67, 0x54, - 0xb8, 0xec, 0x01, 0xda, 0x50, 0x20, 0xde, 0x42, 0x15, 0x2e, 0x21, 0xf1, 0x72, 0x89, 0x1b, 0x89, - 0xd0, 0xe4, 0x17, 0x25, 0x2e, 0xe1, 0xd5, 0xcd, 0x48, 0x84, 0x6a, 0x63, 0x73, 0x5e, 0x41, 0xa7, - 0xe8, 0x0b, 0x34, 0xf3, 0x04, 0xab, 0x68, 0x4e, 0x44, 0x7c, 0xc8, 0x03, 0xd3, 0xdb, 0x35, 0x4f, - 0x5b, 0xff, 0x5a, 0x40, 0x1b, 0xfa, 0x2b, 0xf6, 0x22, 0x41, 0x5d, 0x87, 0xca, 0xb8, 0xa1, 0xc3, - 0x53, 0x3b, 0x38, 0x16, 0x6a, 0x56, 0x13, 0xad, 0xd2, 0x24, 0xb8, 0x62, 0x2f, 0x18, 0xa4, 0xed, - 0xe2, 0x8f, 0x51, 0x19, 0x5e, 0x10, 0x5d, 0x40, 0x87, 0x1a, 0x3e, 0x72, 0xc1, 0x2e, 0x19, 0xac, - 0x21, 0x5c, 0xb5, 0x91, 0x25, 0x97, 0xe9, 0xaa, 0x8b, 0x8b, 0xc0, 0x1c, 0x88, 0x3c, 0xa4, 0xcc, - 0x31, 0xed, 0xf7, 0xe8, 0x59, 0x66, 0x81, 0x53, 0x4e, 0x41, 0x35, 0xcd, 0xd6, 0xbf, 0x3c, 0xca, - 0x3a, 0xbd, 0xb0, 0x5a, 0x95, 0x9c, 0x6b, 0xa7, 0x38, 0x99, 0x9c, 0x03, 0xda, 0x76, 0xf1, 0x93, - 0x51, 0x7a, 0x3d, 0x03, 0x2e, 0x7f, 0xe9, 0x92, 0x87, 0x1f, 0x25, 0xd4, 0x5f, 0xa2, 0xb2, 0xc7, - 0x8e, 0x63, 0x92, 0x8e, 0x98, 0xbf, 0x6a, 0x44, 0x49, 0xd1, 0x0e, 0xcc, 0xa8, 0xb1, 0x66, 0x72, - 0x69, 0xa2, 0x99, 0x7c, 0x47, 0x15, 0x07, 0xd1, 0x99, 0x16, 0x42, 0xf2, 0xbd, 0x5b, 0x78, 0xaa, - 0xea, 0x03, 0x85, 0xe9, 0x23, 0x9f, 0x75, 0x93, 0x61, 0x5b, 0x2a, 0x76, 0x31, 0x6d, 0x26, 0xab, - 0x94, 0x2f, 0x64, 0x81, 0xcb, 0x83, 0x61, 0xd6, 0xd3, 0x41, 0xd0, 0x8e, 0xae, 0x1a, 0x38, 0xed, - 0xe0, 0x64, 0x4d, 0xe7, 0xd9, 0xf1, 0xa6, 0x33, 0xac, 0xf9, 0x72, 0xd3, 0x59, 0x25, 0x23, 0x26, - 0x85, 0xbc, 0xae, 0x5d, 0x93, 0x79, 0xc4, 0xdf, 0x23, 0x9d, 0x4c, 0xeb, 0x18, 0x51, 0x86, 0xd9, - 0xd6, 0xc6, 0x67, 0xd3, 0xc6, 0xae, 0x02, 0xc6, 0x7c, 0xbb, 0xf3, 0xb6, 0xbe, 0xdf, 0x6e, 0xda, - 0x0b, 0x5e, 0x8a, 0x29, 0x5b, 0xa0, 0x9e, 0xaa, 0x04, 0x9d, 0x13, 0x46, 0x63, 0x09, 0xe7, 0xb6, - 0x68, 0x97, 0x00, 0x6b, 0x00, 0xa4, 0x4e, 0xc5, 0x31, 0xf7, 0x3c, 0xf2, 0x81, 0xc7, 0x27, 0x64, - 0x20, 0x62, 0x09, 0x47, 0xb6, 0x68, 0x97, 0x15, 0xfa, 0x8e, 0xc7, 0x27, 0x7b, 0x22, 0x96, 0xba, - 0x6c, 0x89, 0x23, 0xa1, 0x77, 0x66, 0x51, 0x07, 0x51, 0x40, 0x60, 0x6b, 0xd2, 0x7d, 0x03, 0xbf, - 0x54, 0x33, 0x9e, 0x87, 0xfa, 0x0c, 0xdc, 0xd2, 0x57, 0xa6, 0xaf, 0xea, 0xea, 0x73, 0x68, 0x2d, - 0x81, 0x1e, 0xf1, 0xce, 0x25, 0x17, 0x6e, 0x97, 0xe2, 0x9c, 0x3f, 0x7f, 0x84, 0x16, 0xe3, 0x24, - 0x16, 0x11, 0xa7, 0x1e, 0xf1, 0x98, 0x94, 0x22, 0x30, 0x99, 0x58, 0x35, 0x85, 0xf7, 0x01, 0xcd, - 0x6e, 0x32, 0xb2, 0x8e, 0xd6, 0x72, 0xee, 0x26, 0x23, 0x6d, 0x64, 0x7d, 0x8a, 0x70, 0x8e, 0x94, - 0x56, 0x68, 0x2b, 0xba, 0x97, 0x3e, 0x92, 0x98, 0x2a, 0xed, 0x21, 0xaa, 0x18, 0x3b, 0xd1, 0xad, - 0x34, 0x48, 0xd6, 0x2a, 0xca, 0x56, 0xca, 0x1a, 0xb7, 0x01, 0x9e, 0xa8, 0x6f, 0x56, 0xff, 0x37, - 0xf5, 0xcd, 0x03, 0x54, 0x0d, 0x12, 0x9f, 0xc8, 0x90, 0x39, 0x31, 0x8d, 0x45, 0x24, 0x4d, 0xeb, - 0xba, 0x12, 0x24, 0x7e, 0x2f, 0x03, 0xf1, 0x1d, 0xd3, 0x6b, 0x87, 0x72, 0xd7, 0xb4, 0x84, 0x73, - 0x08, 0x7e, 0x81, 0xe6, 0x1d, 0x9f, 0x84, 0xdc, 0x39, 0x85, 0xcc, 0x37, 0xcb, 0xf6, 0x1a, 0x07, - 0xa4, 0xdb, 0x6e, 0xbc, 0xd9, 0xad, 0xa6, 0x4f, 0x76, 0xbd, 0xd3, 0x3c, 0x3c, 0xb0, 0xe7, 0x1c, - 0xbf, 0xcb, 0x9d, 0x53, 0x15, 0x1e, 0x74, 0x3a, 0x62, 0xfa, 0xb3, 0xb3, 0xf6, 0x3c, 0x3c, 0xb7, - 0x5d, 0xfc, 0x39, 0xaa, 0x69, 0x23, 0x32, 0x6b, 0xe3, 0xc1, 0xd0, 0xba, 0xab, 0x2c, 0x60, 0x77, - 0x36, 0x8e, 0x12, 0x66, 0x2f, 0x82, 0xb4, 0x97, 0x09, 0xf1, 0xaf, 0xd0, 0xea, 0x78, 0x47, 0x9f, - 0x44, 0xd4, 0xe5, 0x34, 0x88, 0x21, 0xcf, 0x98, 0xde, 0xd9, 0x5f, 0x9e, 0xe8, 0xec, 0xbf, 0xae, - 0xdb, 0x4d, 0x7b, 0x65, 0xac, 0xad, 0x6f, 0xeb, 0x49, 0x70, 0x1b, 0x95, 0x61, 0xd3, 0xcf, 0x58, - 0x24, 0x95, 0x6e, 0x1e, 0xc0, 0xa4, 0x35, 0x98, 0x54, 0xed, 0xfa, 0x5b, 0x8d, 0xef, 0xae, 0xa8, - 0x2d, 0x27, 0x6f, 0x5b, 0x76, 0xaf, 0x7d, 0xd8, 0x21, 0x8d, 0x23, 0xdb, 0x6e, 0x75, 0xfa, 0x76, - 0x69, 0x38, 0xa2, 0xe0, 0x37, 0x68, 0x45, 0x7b, 0xf0, 0x08, 0x22, 0x45, 0x66, 0xa2, 0x0f, 0xc1, - 0x44, 0xd7, 0x77, 0xae, 0x8a, 0x25, 0x36, 0x8e, 0x2f, 0xc7, 0x17, 0x28, 0xa1, 0xa4, 0x84, 0x9c, - 0xe5, 0x91, 0x3e, 0xc8, 0xea, 0xf9, 0x0d, 0xbb, 0xc0, 0x1b, 0x48, 0xf9, 0xa0, 0x61, 0xc2, 0xb8, - 0x6b, 0x3d, 0xd6, 0x6e, 0x25, 0x7d, 0xc6, 0x5f, 0xa1, 0x1b, 0x21, 0x0b, 0xa8, 0xda, 0x26, 0xa8, - 0xb0, 0xb2, 0xcd, 0x7a, 0x92, 0xda, 0xdc, 0xb2, 0x91, 0x43, 0xbd, 0x95, 0xee, 0xc2, 0xe7, 0x08, - 0x8f, 0x0f, 0x73, 0x79, 0xc4, 0x74, 0x03, 0x58, 0x8d, 0xa9, 0xe5, 0xc7, 0x34, 0x79, 0x04, 0xd1, - 0xd3, 0x13, 0xd4, 0xcd, 0x6c, 0xff, 0xb3, 0xb4, 0x5a, 0xa7, 0xae, 0xb1, 0x7a, 0xe8, 0x8e, 0x44, - 0x9c, 0x49, 0xed, 0x6f, 0x76, 0x34, 0x41, 0x43, 0xe0, 0x4e, 0x76, 0xd0, 0xb2, 0x59, 0x1c, 0x31, - 0xc4, 0x0f, 0x3c, 0x90, 0x69, 0x37, 0xd8, 0x88, 0x7a, 0x20, 0x79, 0xc7, 0x03, 0xa9, 0x8b, 0xa4, - 0x88, 0x8d, 0x91, 0x75, 0x23, 0xb8, 0xaa, 0xf0, 0x1c, 0x53, 0xd5, 0x6d, 0x42, 0xc4, 0x64, 0xc8, - 0x02, 0x16, 0x41, 0x92, 0xf9, 0xcc, 0xd4, 0x6d, 0x42, 0xc4, 0xaf, 0x52, 0x50, 0xf9, 0x33, 0xa0, - 0xa5, 0xf5, 0xa4, 0xee, 0xf8, 0x96, 0x14, 0x96, 0x56, 0x93, 0x77, 0xd1, 0x3c, 0xf5, 0x3c, 0xe7, - 0x84, 0xc6, 0x70, 0xc1, 0x53, 0xdc, 0xbd, 0x7e, 0x4c, 0x3d, 0xc9, 0xec, 0x14, 0xc5, 0x2d, 0x54, - 0x81, 0x8b, 0xe5, 0xf8, 0x8c, 0xb8, 0xcc, 0xa3, 0x17, 0x70, 0x87, 0x53, 0x7d, 0xbe, 0xa4, 0x5d, - 0x69, 0x53, 0xc4, 0xb4, 0xff, 0xb6, 0xa9, 0x04, 0xbb, 0xd5, 0x1c, 0x42, 0x9e, 0x3d, 0xb5, 0x4b, - 0x6a, 0x5c, 0xff, 0x0c, 0x84, 0xea, 0xdb, 0xf2, 0x75, 0x03, 0xf8, 0xc5, 0x17, 0xa0, 0xf5, 0xea, - 0xa8, 0x60, 0x00, 0xe7, 0x38, 0xea, 0xe9, 0xf8, 0x34, 0xd4, 0x2e, 0xf2, 0x6b, 0x20, 0x9a, 0x9e, - 0xce, 0x01, 0x0d, 0xc1, 0x4f, 0x3e, 0x41, 0x4b, 0x86, 0x97, 0xbb, 0x0b, 0xd3, 0x6d, 0x5d, 0xf3, - 0xaa, 0xdc, 0x15, 0x57, 0x0d, 0x5d, 0xf3, 0x68, 0x00, 0x8d, 0xdb, 0xa2, 0xad, 0xfe, 0xc4, 0x3f, - 0xa2, 0xd5, 0x41, 0x9a, 0x2e, 0x90, 0x2c, 0x41, 0x08, 0x8e, 0x85, 0xb5, 0x0b, 0xd6, 0x7c, 0x73, - 0xe7, 0xea, 0x9c, 0xc2, 0x5e, 0x19, 0x4c, 0xcb, 0x34, 0xbe, 0x44, 0xab, 0xba, 0x95, 0x92, 0xd5, - 0xd4, 0x90, 0x45, 0x70, 0x17, 0x5a, 0xb9, 0x15, 0x5b, 0x37, 0x5a, 0xf6, 0x4d, 0x69, 0x6d, 0x64, - 0xba, 0x03, 0x07, 0x0a, 0xe7, 0xae, 0x69, 0xe7, 0x16, 0x35, 0xd0, 0x36, 0x1a, 0x1c, 0x75, 0x26, - 0xa1, 0x7f, 0x5b, 0x54, 0x1a, 0xcc, 0x5a, 0x92, 0xf8, 0x17, 0xa8, 0xca, 0xce, 0xe3, 0x88, 0x92, - 0xf4, 0xf7, 0x00, 0xd6, 0x2f, 0xe0, 0x03, 0x26, 0x22, 0x5f, 0xa3, 0xa5, 0x48, 0x07, 0x72, 0x68, - 0x57, 0x80, 0x7e, 0x60, 0xd8, 0xf8, 0x09, 0x5a, 0x90, 0xf4, 0x8c, 0x81, 0x5e, 0xac, 0xef, 0x37, - 0x0b, 0xdb, 0xa5, 0xe7, 0x55, 0x9d, 0x34, 0xf4, 0xe8, 0x19, 0x53, 0x6a, 0xb1, 0x8b, 0xd2, 0xfc, - 0x75, 0x65, 0xb7, 0xa8, 0x7e, 0x65, 0xb7, 0x68, 0x1f, 0x55, 0xb4, 0xa7, 0x14, 0x49, 0xec, 0x08, - 0x9f, 0x59, 0x2f, 0xc1, 0x7e, 0xaa, 0x3b, 0x2d, 0x28, 0xcc, 0x0e, 0x35, 0xba, 0xbb, 0x76, 0x4a, - 0xc6, 0x00, 0x72, 0x14, 0x9c, 0x06, 0xe2, 0x43, 0x60, 0x97, 0xfd, 0x1c, 0x3a, 0xad, 0x8f, 0xd4, - 0x98, 0xd6, 0x47, 0x9a, 0xd2, 0x5e, 0x6c, 0x4e, 0x69, 0x2f, 0x7e, 0x8a, 0x70, 0x6a, 0x6b, 0x3c, - 0x20, 0xa1, 0x47, 0x2f, 0x54, 0xe6, 0xf4, 0x2a, 0x6f, 0x44, 0x07, 0x3c, 0xe8, 0x6a, 0x3c, 0xcf, - 0xa6, 0xe7, 0x19, 0xfb, 0xf5, 0x18, 0x9b, 0x9e, 0xa7, 0xec, 0xc9, 0xdf, 0x57, 0xb4, 0xff, 0x47, - 0xbf, 0xaf, 0xa8, 0xa3, 0x3b, 0x1e, 0x0d, 0xc8, 0x89, 0x90, 0xb1, 0xf9, 0x59, 0x84, 0x20, 0xe3, - 0xb1, 0xf6, 0x07, 0x73, 0x8d, 0x47, 0x83, 0xd7, 0x42, 0xc6, 0xf0, 0xf3, 0x08, 0xd1, 0xcb, 0x47, - 0xdd, 0x2e, 0x42, 0x67, 0x5c, 0xf2, 0x01, 0xf7, 0x94, 0x05, 0xbd, 0x81, 0x65, 0xac, 0xec, 0x64, - 0x96, 0xf1, 0x36, 0x93, 0xed, 0x6e, 0x4c, 0x01, 0x49, 0x37, 0x19, 0x78, 0xdc, 0xb1, 0x73, 0x73, - 0x4c, 0x6b, 0xbb, 0xee, 0x4f, 0x6b, 0xbb, 0xee, 0xa1, 0x3b, 0x79, 0x1e, 0x4d, 0x62, 0x41, 0x9c, - 0x88, 0x29, 0xdf, 0x44, 0x20, 0xeb, 0xb2, 0x0e, 0x40, 0x79, 0x1b, 0xa3, 0x61, 0xf5, 0x24, 0x16, - 0x0d, 0x4d, 0xd1, 0x49, 0xf2, 0x36, 0xaa, 0x69, 0xdf, 0x4f, 0x46, 0xa7, 0xa4, 0xa3, 0x9d, 0xa2, - 0xc6, 0x7b, 0xe9, 0x59, 0xb9, 0x8f, 0x0c, 0x92, 0xa9, 0xfc, 0x50, 0x67, 0x36, 0x1a, 0x35, 0x2a, - 0xbf, 0xb2, 0x15, 0xdc, 0xbd, 0xb2, 0x15, 0x8c, 0x5f, 0xa0, 0xb5, 0x30, 0x62, 0x67, 0x5c, 0x24, - 0x32, 0x5d, 0x05, 0x58, 0x25, 0x93, 0xd6, 0x8f, 0x9b, 0xd7, 0xb6, 0x67, 0xed, 0x1b, 0xa9, 0x58, - 0x2f, 0xe6, 0x40, 0x0b, 0xc7, 0xc6, 0x99, 0x43, 0x70, 0xc6, 0xa2, 0x88, 0xbb, 0xcc, 0xb2, 0xc1, - 0x1a, 0xb3, 0x71, 0xda, 0xf4, 0x8d, 0x10, 0xbf, 0x44, 0x9b, 0xf9, 0x35, 0x26, 0x92, 0xc9, 0xac, - 0x5f, 0x12, 0x31, 0x47, 0x44, 0xae, 0xb4, 0x7a, 0xb0, 0x73, 0xb7, 0x46, 0xcb, 0x3d, 0x92, 0x4c, - 0x1a, 0xa3, 0xb2, 0x35, 0x07, 0x4a, 0x51, 0x93, 0x6f, 0xa5, 0xf7, 0x4f, 0xef, 0x74, 0x9c, 0x30, - 0x89, 0x94, 0xb9, 0x77, 0xfa, 0x25, 0xaa, 0x84, 0x34, 0x91, 0x6a, 0x8b, 0x63, 0xc8, 0x57, 0x7e, - 0x02, 0x23, 0x59, 0x1d, 0xf9, 0xf8, 0xae, 0x12, 0xf7, 0xb4, 0x74, 0xf7, 0xee, 0x54, 0x98, 0x1c, - 0x05, 0x1e, 0xf7, 0x79, 0xcc, 0x5c, 0xbb, 0x1c, 0xe6, 0x70, 0xfc, 0x39, 0x5a, 0x19, 0xf5, 0x7e, - 0x72, 0x05, 0xde, 0x7b, 0x1d, 0x07, 0xd3, 0xb6, 0xcf, 0xa8, 0xe5, 0xf3, 0x1d, 0xba, 0xf9, 0x81, - 0xb1, 0x53, 0x16, 0xb8, 0x64, 0xda, 0x6d, 0xea, 0x5f, 0xe8, 0xdb, 0x47, 0x43, 0xe9, 0x5f, 0xba, - 0x54, 0x9d, 0x32, 0x3c, 0x7f, 0x51, 0xfa, 0x97, 0xd3, 0x86, 0xe7, 0xee, 0x4b, 0xeb, 0xe8, 0xf6, - 0xe4, 0xf0, 0xf1, 0x7b, 0xd3, 0x5f, 0xea, 0x5f, 0x06, 0x8c, 0x4f, 0x30, 0x76, 0x7d, 0xfa, 0x0e, - 0x2d, 0x4f, 0x64, 0x74, 0x90, 0x6d, 0xfc, 0xea, 0xcf, 0x4b, 0xe7, 0x96, 0xc6, 0xd2, 0x39, 0x48, - 0x4a, 0xee, 0xa2, 0x92, 0x9a, 0x38, 0x4d, 0x79, 0xfe, 0x4a, 0xff, 0xe4, 0x62, 0x20, 0xe2, 0x34, - 0xcd, 0x59, 0x47, 0x45, 0xfd, 0xe6, 0x88, 0x59, 0x44, 0xe7, 0xa5, 0x30, 0x4b, 0xc4, 0x70, 0x03, - 0xad, 0xeb, 0x9f, 0x24, 0x85, 0x91, 0x18, 0x46, 0x4c, 0xc2, 0x76, 0x9a, 0xf6, 0xa7, 0xf5, 0xd7, - 0x9b, 0xd7, 0xb6, 0xab, 0xcf, 0xe7, 0x77, 0x5a, 0x2d, 0x45, 0xb1, 0xd7, 0x80, 0xd9, 0x1d, 0x11, - 0x5b, 0x9a, 0x87, 0x7f, 0x8b, 0x2c, 0x7d, 0x83, 0x0e, 0x3f, 0xbb, 0x4a, 0xef, 0xcb, 0xa2, 0xc4, - 0x63, 0xd2, 0xa2, 0xe6, 0x52, 0x17, 0x42, 0x47, 0x4a, 0x4a, 0xc3, 0x94, 0xad, 0x28, 0xbb, 0xf7, - 0x4e, 0xc9, 0xd5, 0x52, 0x72, 0x40, 0x83, 0x84, 0x7a, 0xf6, 0xaa, 0x9c, 0x2a, 0xc6, 0xef, 0xd1, - 0x63, 0x73, 0xf8, 0x72, 0x87, 0xf1, 0xd2, 0x5a, 0xd2, 0xe6, 0xd4, 0x00, 0xb4, 0xf4, 0x40, 0x8f, - 0xe8, 0x66, 0xc7, 0x73, 0x62, 0xe6, 0xbe, 0xee, 0x5d, 0xbd, 0x43, 0x9f, 0x98, 0xa9, 0x9d, 0x24, - 0x8a, 0x18, 0x24, 0x6c, 0x57, 0xce, 0xec, 0xc0, 0xcc, 0xf7, 0xf5, 0x80, 0x86, 0xe6, 0x5f, 0x35, - 0xf1, 0x3f, 0x14, 0xd0, 0xbd, 0x89, 0x99, 0xc7, 0xe7, 0x73, 0x4e, 0x04, 0x77, 0x98, 0xe5, 0xc2, - 0xde, 0xdd, 0x9a, 0xbe, 0x77, 0x0d, 0xe0, 0xec, 0x3e, 0xb8, 0x62, 0xf3, 0xb4, 0x98, 0xb4, 0x83, - 0x33, 0xea, 0x71, 0xd7, 0xbe, 0x3b, 0xb6, 0xb0, 0xfc, 0x7a, 0x34, 0x11, 0xff, 0x53, 0x01, 0x3d, - 0x9a, 0x58, 0x53, 0x70, 0xe9, 0x3b, 0xcd, 0xba, 0xd8, 0xff, 0xdd, 0xba, 0xb6, 0xc6, 0xd6, 0xd5, - 0x19, 0xdf, 0x2a, 0xb3, 0x34, 0x17, 0x3d, 0xfd, 0xe3, 0x7a, 0x48, 0x24, 0x73, 0x89, 0x23, 0x78, - 0x40, 0x62, 0x21, 0xa5, 0x75, 0x0c, 0x8e, 0xf0, 0xf1, 0x1f, 0x56, 0xc7, 0x91, 0x64, 0x6e, 0x43, - 0xf0, 0xa0, 0x2f, 0xa4, 0xc4, 0x3f, 0xa8, 0x10, 0x90, 0x29, 0xc3, 0xa7, 0xd1, 0x05, 0x01, 0x7b, - 0xb7, 0x86, 0xf0, 0xb5, 0xe9, 0x29, 0xd8, 0xad, 0xb4, 0xde, 0xb6, 0x3a, 0x7d, 0xd2, 0x6e, 0xea, - 0xb8, 0xbc, 0xec, 0x64, 0x5b, 0xaa, 0xc6, 0x00, 0x47, 0x65, 0xa1, 0x9e, 0xf8, 0x10, 0x46, 0x9c, - 0xb8, 0x2c, 0x8c, 0x98, 0x03, 0xc9, 0xf8, 0x09, 0x2c, 0xa9, 0xa6, 0x05, 0xcd, 0x0c, 0xdf, 0xf8, - 0x1a, 0x2d, 0x64, 0x69, 0x18, 0xae, 0x66, 0x97, 0x5a, 0x15, 0xb8, 0xce, 0xda, 0x40, 0x45, 0x47, - 0x04, 0x31, 0x0b, 0x62, 0xdd, 0xe0, 0x2d, 0xdb, 0xd9, 0xf3, 0x96, 0x3b, 0x79, 0x39, 0x5f, 0x42, - 0xf3, 0x76, 0xab, 0xde, 0x7c, 0x7f, 0xd4, 0xad, 0xcd, 0xe2, 0x45, 0x54, 0xea, 0xb5, 0x6c, 0x55, - 0xb9, 0xb5, 0xfa, 0x47, 0xdd, 0x5a, 0x01, 0xcf, 0xa3, 0x6b, 0xf6, 0x51, 0xa7, 0x36, 0x83, 0xcb, - 0xa8, 0xd8, 0x3d, 0xec, 0xf5, 0x55, 0x65, 0x57, 0xbb, 0xa6, 0x9e, 0x3a, 0x87, 0x7d, 0x18, 0x57, - 0xbb, 0x8e, 0x6b, 0xa8, 0xac, 0x47, 0xd5, 0x7b, 0xbd, 0xf6, 0xab, 0x4e, 0x6d, 0x6e, 0xeb, 0xf7, - 0x05, 0xb4, 0x90, 0x35, 0x48, 0xf0, 0x0a, 0x4a, 0x5b, 0x24, 0xb5, 0xdf, 0xa7, 0xff, 0x0a, 0x6a, - 0x94, 0x6e, 0xaf, 0x9b, 0x9f, 0x01, 0x7c, 0x04, 0xef, 0xb0, 0xeb, 0x8d, 0x7e, 0xbb, 0xd1, 0xaa, - 0x15, 0x70, 0x15, 0xa1, 0xfe, 0xe1, 0x91, 0xdd, 0xa9, 0x1f, 0xb4, 0x3a, 0xfd, 0xda, 0x0c, 0xc6, - 0xa8, 0xda, 0x38, 0x3c, 0xec, 0x12, 0xe5, 0xe0, 0xf4, 0x88, 0x59, 0x7c, 0x03, 0x2d, 0xed, 0xb7, - 0x5e, 0xd5, 0x1b, 0xef, 0xf5, 0x1d, 0x8a, 0x86, 0xaf, 0xe3, 0x9b, 0x68, 0xcd, 0xc0, 0xbd, 0xc3, - 0xfd, 0x43, 0xf2, 0xe3, 0x51, 0xeb, 0xa8, 0x65, 0x84, 0x73, 0x6a, 0x4c, 0xe3, 0xf0, 0xa0, 0xdb, - 0xea, 0xb7, 0xfb, 0xed, 0xb7, 0x29, 0x3c, 0x8f, 0x57, 0x50, 0xcd, 0x2c, 0xe7, 0xd9, 0xdb, 0x67, - 0x06, 0x2d, 0xe2, 0x65, 0xb4, 0xf8, 0xae, 0xd5, 0x7a, 0xd3, 0xea, 0x34, 0x09, 0x2c, 0xa6, 0xf5, - 0xbe, 0xb6, 0xa0, 0xc0, 0xfd, 0xc3, 0x46, 0x7d, 0x3f, 0xb7, 0x14, 0x84, 0x2b, 0x68, 0xa1, 0xd7, - 0x6d, 0x35, 0xfa, 0xf5, 0xfe, 0xa1, 0x5d, 0x2b, 0x6d, 0xed, 0x20, 0x0b, 0x2e, 0x6d, 0xd5, 0x26, - 0xa8, 0x3c, 0x2e, 0x66, 0x32, 0x4e, 0xeb, 0x55, 0x8c, 0x66, 0x7f, 0x2d, 0x45, 0x90, 0x5e, 0x00, - 0xab, 0xbf, 0x1f, 0x77, 0x51, 0x6d, 0xb2, 0x0c, 0x52, 0x5f, 0x3c, 0x5e, 0x08, 0xd5, 0x3e, 0x82, - 0x77, 0xe7, 0xb1, 0xe7, 0x4f, 0x6b, 0x85, 0x49, 0xf0, 0x8b, 0xa7, 0x4f, 0x6b, 0x33, 0x8f, 0xff, - 0xb6, 0x80, 0x6e, 0x4c, 0x0d, 0xaf, 0xf8, 0x1e, 0xfa, 0x63, 0x71, 0xb7, 0xf6, 0x11, 0xfe, 0x18, - 0xdd, 0x9e, 0x4e, 0xda, 0x37, 0x94, 0x02, 0xde, 0x42, 0x77, 0xa6, 0x53, 0xd2, 0x1f, 0xc9, 0xd5, - 0x66, 0xf6, 0xae, 0xbf, 0x2e, 0xfc, 0xae, 0xf0, 0xd1, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x02, - 0x9d, 0x37, 0xdb, 0xaf, 0x2c, 0x00, 0x00, + 0x91, 0x7b, 0xb5, 0xa9, 0xdc, 0xa5, 0x2a, 0x17, 0xb9, 0x4a, 0xaa, 0x72, 0x9d, 0xbc, 0x41, 0x2a, + 0x0f, 0x90, 0x17, 0xc8, 0x1b, 0xe4, 0x51, 0x36, 0xd5, 0x7f, 0xf7, 0x0c, 0x06, 0x20, 0xb8, 0x87, + 0x24, 0x55, 0xd1, 0x8d, 0x38, 0xdf, 0xff, 0x75, 0x4f, 0x4f, 0xff, 0x7f, 0xff, 0xa7, 0x06, 0xfa, + 0xcc, 0x15, 0x31, 0x25, 0x43, 0xc7, 0x67, 0x52, 0xd2, 0x21, 0x93, 0xc4, 0x11, 0xbe, 0x2f, 0x02, + 0xe2, 0xd3, 0xd8, 0x39, 0x21, 0x3e, 0x0d, 0xe8, 0x90, 0xf9, 0x2c, 0x88, 0x77, 0xc2, 0x48, 0xc4, + 0x62, 0x63, 0x59, 0xc6, 0x8c, 0xfa, 0x29, 0xd9, 0x80, 0xab, 0x43, 0x47, 0xba, 0xa7, 0xb9, 0x49, + 0x0c, 0xbe, 0x06, 0x73, 0xcb, 0x13, 0x1a, 0x31, 0x97, 0xb0, 0x20, 0xf1, 0x8d, 0x60, 0xeb, 0x9f, + 0xaf, 0x21, 0xdc, 0xe8, 0x1d, 0x36, 0x0f, 0xfb, 0xf5, 0x2e, 0x8d, 0xe2, 0x8b, 0x03, 0xe6, 0x0f, + 0x58, 0x84, 0x9b, 0xa8, 0x1c, 0xd2, 0x28, 0x0e, 0x58, 0x44, 0xe2, 0x8b, 0x90, 0x59, 0x85, 0xcd, + 0xc2, 0x76, 0xf5, 0xf9, 0xf2, 0x4e, 0x57, 0x83, 0x75, 0xc7, 0x11, 0x49, 0x10, 0xf7, 0x2f, 0x42, + 0xb6, 0x5b, 0xee, 0xd6, 0xed, 0x7e, 0xa7, 0x65, 0x93, 0xce, 0x61, 0xa7, 0x65, 0x97, 0xcc, 0x30, + 0x25, 0xc2, 0xeb, 0xa8, 0xc8, 0xd5, 0x67, 0x50, 0xe7, 0xc4, 0x9a, 0xd9, 0x2c, 0x6c, 0x17, 0xed, + 0x79, 0x2e, 0x1b, 0xea, 0x11, 0xef, 0xa0, 0xa5, 0x88, 0x0d, 0xb9, 0x08, 0x48, 0xc8, 0x83, 0x21, + 0x71, 0x84, 0xcb, 0xa4, 0x35, 0xbb, 0x79, 0x6d, 0xbb, 0xb2, 0x37, 0x53, 0x2b, 0xd8, 0x8b, 0x5a, + 0xd8, 0xe5, 0xc1, 0xb0, 0xa1, 0x44, 0x93, 0xfc, 0x98, 0xfb, 0x4c, 0x5a, 0xd7, 0xa7, 0xf1, 0xfb, + 0x4a, 0x84, 0x7f, 0x8e, 0x36, 0xf2, 0xfc, 0x63, 0xca, 0x3d, 0xe6, 0x92, 0x01, 0x8f, 0x7d, 0x2a, + 0x4f, 0xad, 0xb9, 0xcd, 0xc2, 0x76, 0xc5, 0x5e, 0x1b, 0x0d, 0x7a, 0x09, 0xf2, 0x3d, 0x2d, 0xc6, + 0x3b, 0x68, 0x39, 0x16, 0x49, 0x14, 0xb0, 0x0b, 0x22, 0x4f, 0xb9, 0xe7, 0x11, 0x8f, 0x9d, 0x31, + 0xcf, 0x9a, 0x87, 0x51, 0x4b, 0x46, 0xd4, 0x53, 0x92, 0x7d, 0x25, 0xc0, 0xf7, 0x50, 0x25, 0xe5, + 0x0f, 0x92, 0x0b, 0x1e, 0x58, 0x45, 0x60, 0x96, 0x0d, 0xb8, 0xa7, 0x30, 0xfc, 0x1c, 0xdd, 0x48, + 0x49, 0x61, 0xc4, 0xce, 0x58, 0x10, 0x93, 0x24, 0x88, 0xb9, 0x67, 0x2d, 0x00, 0x39, 0x7d, 0x63, + 0x57, 0xcb, 0x8e, 0x94, 0x68, 0xeb, 0xdf, 0x97, 0x50, 0x39, 0xaf, 0x1d, 0x7c, 0x17, 0x15, 0xd5, + 0x06, 0x5f, 0x10, 0xee, 0x82, 0x4e, 0x66, 0xf7, 0x66, 0x7f, 0xf7, 0xaf, 0xb7, 0x0b, 0xf6, 0x3c, + 0xa0, 0x6d, 0x17, 0xdf, 0x44, 0x0b, 0x1e, 0xa3, 0x2e, 0x8b, 0x14, 0x43, 0xed, 0xf9, 0x9c, 0x5d, + 0xd4, 0x40, 0xdb, 0xc5, 0xb7, 0x11, 0xf2, 0x41, 0xbf, 0x84, 0xbb, 0xd2, 0xba, 0xb6, 0x79, 0x6d, + 0x7b, 0xce, 0x5e, 0xd0, 0x48, 0xdb, 0x95, 0x4a, 0x3c, 0xa4, 0x3e, 0x23, 0xbe, 0x51, 0x86, 0x5a, + 0xd6, 0x82, 0x42, 0x0e, 0x40, 0x05, 0x9f, 0xa1, 0xeb, 0x32, 0xa6, 0x31, 0x83, 0xdd, 0x53, 0xc6, + 0x90, 0x5f, 0xd9, 0x4e, 0x4f, 0x89, 0x76, 0x67, 0x8e, 0xda, 0xb6, 0x66, 0xe1, 0x37, 0x68, 0x8b, + 0x1d, 0x1f, 0x33, 0x27, 0xe6, 0x67, 0x8c, 0xc8, 0x98, 0x46, 0x31, 0x73, 0xb5, 0x2d, 0xfb, 0xf4, + 0x34, 0xd5, 0xa1, 0xd9, 0xd3, 0xbb, 0x19, 0xb3, 0xa7, 0x89, 0x07, 0x23, 0x9e, 0xd2, 0x27, 0xfe, + 0x1e, 0xdd, 0x8a, 0xe8, 0x87, 0xab, 0xa7, 0xd9, 0x84, 0x69, 0xd6, 0x23, 0xfa, 0xe1, 0x8a, 0x09, + 0x3e, 0x45, 0x98, 0xc6, 0x31, 0xf3, 0xc3, 0x58, 0x4f, 0xa2, 0x87, 0x7d, 0x0c, 0xc3, 0x6a, 0x46, + 0x02, 0x43, 0x81, 0x7d, 0x17, 0x95, 0x52, 0x76, 0x90, 0xf8, 0xd6, 0x16, 0xd0, 0x90, 0x81, 0x3a, + 0x89, 0x8f, 0x37, 0x51, 0x09, 0xd6, 0x30, 0x8c, 0x44, 0x12, 0x4a, 0xab, 0x04, 0x84, 0x3c, 0x84, + 0xbf, 0x42, 0x6b, 0x9e, 0xf8, 0x40, 0xc2, 0x88, 0x8b, 0x88, 0xc7, 0x17, 0x84, 0xea, 0x23, 0xa3, + 0xd4, 0xb2, 0x0c, 0xec, 0x15, 0x4f, 0x7c, 0xe8, 0x1a, 0xa9, 0x39, 0x4f, 0x6d, 0x17, 0x7f, 0x8b, + 0x90, 0x3e, 0xef, 0x70, 0xec, 0x6e, 0xc0, 0x4e, 0xa3, 0x1d, 0xf8, 0x1a, 0x38, 0x6d, 0x4b, 0x07, + 0xf5, 0x7e, 0xe3, 0x35, 0xe9, 0xbf, 0xef, 0xb6, 0x48, 0xa3, 0xde, 0x3b, 0xaa, 0xef, 0xdb, 0x0b, + 0x7e, 0x2a, 0xc5, 0x3f, 0xa2, 0xea, 0x40, 0xc4, 0xc4, 0xe5, 0xc7, 0xc7, 0xdc, 0x49, 0xbc, 0xf8, + 0xc2, 0x5a, 0x85, 0x19, 0xf0, 0x8e, 0x52, 0xd4, 0x9e, 0x88, 0x9b, 0x99, 0x64, 0x77, 0x75, 0xef, + 0xb0, 0x4f, 0x9a, 0xed, 0x97, 0x2f, 0xdb, 0x8d, 0xa3, 0xfd, 0xfe, 0x7b, 0xd2, 0xad, 0xf7, 0x7a, + 0xed, 0xb7, 0x2d, 0xbb, 0x32, 0xc8, 0xd3, 0xf0, 0x1a, 0x9a, 0x57, 0x7e, 0x46, 0xad, 0x7b, 0x0d, + 0xd6, 0x3d, 0xa7, 0x1e, 0xb5, 0xa5, 0x81, 0x20, 0xa0, 0x3e, 0xb3, 0xbe, 0xd8, 0x2c, 0x6c, 0x2f, + 0xd8, 0x45, 0x05, 0x74, 0xa8, 0xcf, 0xf0, 0x26, 0x2a, 0x83, 0x30, 0xe1, 0xc4, 0x13, 0x43, 0x61, + 0x7d, 0xa9, 0x6c, 0xd5, 0x46, 0x0a, 0x3b, 0xe2, 0xfb, 0x62, 0x28, 0xf0, 0x7d, 0x54, 0x05, 0xc6, + 0x80, 0x4a, 0xa6, 0x39, 0x5f, 0x01, 0x07, 0xc6, 0xed, 0x51, 0xc9, 0x80, 0xf5, 0x0d, 0x5a, 0xd7, + 0xdb, 0xe1, 0x72, 0x49, 0x07, 0xea, 0x08, 0xc3, 0x99, 0x21, 0xae, 0xb2, 0x43, 0x0b, 0xd6, 0xb3, + 0x0a, 0x84, 0xa6, 0x91, 0xc3, 0xb9, 0x69, 0x2a, 0xfb, 0xbb, 0x3c, 0x34, 0xa7, 0x82, 0xf5, 0x29, + 0x43, 0x47, 0x4a, 0xa8, 0xa3, 0xdb, 0x79, 0x0b, 0xf3, 0xe9, 0x39, 0x89, 0x68, 0x30, 0x64, 0xc4, + 0xe7, 0x41, 0x12, 0x33, 0x69, 0x6d, 0xc0, 0xf0, 0x8d, 0x1c, 0xe9, 0x80, 0x9e, 0xdb, 0x8a, 0x72, + 0xa0, 0x19, 0xf8, 0x21, 0xaa, 0x82, 0xd4, 0xa3, 0xc1, 0x30, 0x51, 0x8e, 0xd8, 0xba, 0x09, 0x63, + 0x26, 0x50, 0xfc, 0x19, 0x9a, 0xd7, 0x07, 0x50, 0x5a, 0xb7, 0x37, 0xaf, 0x6d, 0x97, 0x26, 0x8e, + 0x95, 0x76, 0xc7, 0x76, 0xca, 0xc1, 0x5b, 0xa8, 0x22, 0x42, 0x16, 0x90, 0x61, 0xc2, 0x3d, 0x57, + 0x7d, 0xc8, 0x1d, 0x6d, 0x79, 0x0a, 0x7c, 0xa5, 0xb0, 0xb6, 0xab, 0xbc, 0x91, 0x89, 0x1c, 0xc0, + 0x92, 0xd6, 0x5d, 0xe5, 0x26, 0xed, 0xb2, 0x06, 0x81, 0x25, 0xd5, 0x81, 0x1a, 0x33, 0x4f, 0x75, + 0xcc, 0x25, 0x89, 0x98, 0x4f, 0x79, 0xc0, 0x83, 0xa1, 0x75, 0x4f, 0x1f, 0xa8, 0x9c, 0x8d, 0xbe, + 0x52, 0x0c, 0x3b, 0x25, 0xe0, 0x2f, 0xd0, 0x2a, 0xac, 0xe4, 0x58, 0x44, 0xe4, 0xd7, 0x82, 0x07, + 0x24, 0x62, 0xbf, 0x49, 0x98, 0x8c, 0xa5, 0xb5, 0x0d, 0x9e, 0x7e, 0x59, 0x49, 0x5f, 0x8a, 0xe8, + 0x07, 0xc1, 0x03, 0xdb, 0x88, 0xf0, 0x0b, 0x54, 0x96, 0xca, 0xf1, 0xf1, 0xe0, 0x8c, 0xab, 0x7d, + 0xfc, 0x64, 0xca, 0x27, 0xb7, 0x41, 0x66, 0x97, 0x14, 0x51, 0xff, 0x0d, 0xe3, 0x22, 0xe6, 0x9c, + 0x65, 0xe3, 0x1e, 0xff, 0x81, 0x71, 0x8a, 0x98, 0x8e, 0xbb, 0x87, 0x2a, 0xa9, 0xd2, 0x8f, 0x3d, + 0x3a, 0x94, 0xd6, 0x13, 0xed, 0x98, 0x0d, 0xf8, 0x52, 0x61, 0xca, 0xdb, 0x9b, 0x50, 0x21, 0x99, + 0xc7, 0x9c, 0x94, 0xfa, 0xa9, 0xf6, 0xf6, 0x5a, 0xd4, 0x03, 0x89, 0xe6, 0xbf, 0x40, 0x6b, 0xec, + 0xdc, 0xf1, 0x12, 0xa9, 0x1c, 0x1b, 0x78, 0x6d, 0xea, 0x33, 0x6d, 0x56, 0x9f, 0xc1, 0x98, 0x1b, + 0x99, 0xb8, 0x9f, 0x49, 0xdb, 0x6e, 0x3e, 0xaa, 0xb8, 0xfc, 0x8c, 0x4b, 0xf5, 0x46, 0xee, 0x5a, + 0x9f, 0x8f, 0x45, 0x95, 0xa6, 0x91, 0xb4, 0xdd, 0x7c, 0xc0, 0x90, 0xce, 0x09, 0x73, 0x13, 0x8f, + 0x69, 0xaf, 0xf5, 0x74, 0x2c, 0x60, 0xf4, 0x8c, 0x0c, 0x1c, 0xd7, 0x15, 0x91, 0xeb, 0xd9, 0x55, + 0x91, 0x2b, 0xf7, 0x8e, 0x41, 0x44, 0x9d, 0x53, 0x16, 0x93, 0x48, 0x24, 0x81, 0x6b, 0x3d, 0x1f, + 0x7b, 0xc7, 0x9e, 0x96, 0xd9, 0x4a, 0x84, 0xbf, 0x43, 0x37, 0xd3, 0x31, 0xbf, 0x49, 0x58, 0xc2, + 0x88, 0xcb, 0xa8, 0xeb, 0xf1, 0xc0, 0xac, 0xee, 0x05, 0x8c, 0xb4, 0x0c, 0xe5, 0x47, 0xc5, 0x68, + 0x1a, 0x02, 0x2c, 0xf1, 0x6f, 0x0a, 0xe8, 0xd6, 0x15, 0xe3, 0x75, 0x78, 0xf9, 0x1a, 0x5c, 0xd6, + 0xcd, 0x9d, 0x56, 0x7f, 0xca, 0x14, 0x3a, 0xcc, 0xdc, 0x3b, 0x25, 0x57, 0x4b, 0x49, 0x47, 0x44, + 0x3e, 0xf5, 0xec, 0xf5, 0xf8, 0x2a, 0x06, 0xfe, 0x16, 0xdd, 0xd4, 0x61, 0x74, 0xa0, 0x4e, 0x03, + 0x8b, 0x88, 0xf4, 0x44, 0x2c, 0x49, 0x2c, 0xc8, 0x31, 0xf7, 0x3c, 0xeb, 0x67, 0x3a, 0x3d, 0x00, + 0xca, 0x9e, 0x66, 0xf4, 0x14, 0xa1, 0x2f, 0x5e, 0x72, 0xcf, 0x53, 0xb9, 0xc5, 0xf8, 0x68, 0xed, + 0x67, 0x4c, 0x2c, 0xf8, 0xe6, 0xf2, 0x60, 0x70, 0xdf, 0xaf, 0x74, 0x5c, 0xf8, 0x1a, 0x59, 0x13, + 0xaf, 0x1e, 0x85, 0xa3, 0x5d, 0x6d, 0x3e, 0x63, 0xef, 0xcd, 0x62, 0xd2, 0x6d, 0x84, 0xa4, 0xf0, + 0x84, 0xde, 0x33, 0xeb, 0xe7, 0x70, 0xc8, 0x16, 0x14, 0x02, 0xdf, 0x87, 0xb7, 0x51, 0x4d, 0xb9, + 0x7e, 0xe9, 0x44, 0x3c, 0x54, 0x07, 0xcc, 0x65, 0xe7, 0xd6, 0xb7, 0xda, 0xe5, 0x0c, 0x44, 0xdc, + 0x03, 0xb8, 0xad, 0x50, 0xfc, 0x0c, 0xdd, 0x80, 0xd4, 0x91, 0x38, 0x1e, 0x0d, 0xf2, 0x4e, 0xf1, + 0x3b, 0xa0, 0x63, 0x10, 0x36, 0x3c, 0x1a, 0x64, 0x0e, 0x71, 0xeb, 0x29, 0xba, 0xae, 0x37, 0x6e, + 0x0e, 0xcd, 0x1c, 0xb5, 0x6b, 0x1f, 0xe1, 0x25, 0x54, 0x79, 0xd9, 0xee, 0x34, 0xdb, 0x9d, 0x57, + 0x04, 0x02, 0x52, 0xad, 0x80, 0xcb, 0xa8, 0xd8, 0xee, 0x98, 0xa7, 0x99, 0xad, 0xbf, 0x9b, 0xc8, + 0x2b, 0xf5, 0x89, 0x54, 0xf9, 0x0b, 0x6c, 0xd3, 0xa5, 0xfc, 0x05, 0x50, 0x1d, 0x55, 0x24, 0x0b, + 0xc6, 0xf3, 0x17, 0x0d, 0xb4, 0x5d, 0x15, 0x96, 0x8d, 0x10, 0x82, 0xce, 0x35, 0x08, 0x3a, 0x48, + 0x43, 0x10, 0x76, 0xbe, 0x19, 0x79, 0xd3, 0x59, 0x70, 0x11, 0x77, 0xa7, 0xb8, 0x88, 0x9d, 0xa9, + 0x9e, 0x35, 0x17, 0xe7, 0xae, 0x8f, 0xc5, 0xb9, 0x1d, 0xb4, 0x3c, 0xe6, 0x29, 0x95, 0x91, 0x26, + 0x12, 0x92, 0xa0, 0xa2, 0xbd, 0x94, 0x73, 0x90, 0x3d, 0x10, 0xa8, 0xa4, 0x97, 0xa6, 0x49, 0xef, + 0xbc, 0x4e, 0x7a, 0xa9, 0x49, 0x7a, 0x6f, 0x23, 0xa4, 0x3d, 0x18, 0x19, 0x72, 0x17, 0x92, 0xc4, + 0x39, 0x7b, 0x41, 0x23, 0xaf, 0xb8, 0xbb, 0xf1, 0x0e, 0x95, 0xf2, 0x39, 0x38, 0x46, 0xb3, 0xf0, + 0x99, 0x05, 0xf8, 0x4c, 0xf8, 0x5b, 0x4d, 0x2e, 0xd3, 0x65, 0xea, 0xdd, 0x99, 0x97, 0x66, 0x9d, + 0xf9, 0x64, 0x7b, 0x76, 0x2c, 0xd9, 0xde, 0xfa, 0xfb, 0x91, 0x32, 0xf6, 0xc5, 0x60, 0xf0, 0xff, + 0xae, 0x8c, 0xdc, 0x22, 0x76, 0xe0, 0xef, 0x49, 0x65, 0xdc, 0x47, 0x55, 0x27, 0x91, 0xb1, 0xf0, + 0x21, 0x2e, 0xa5, 0x3a, 0x99, 0xb5, 0xcb, 0x1a, 0x55, 0xa1, 0x48, 0xa7, 0xb3, 0xb9, 0xed, 0x9c, + 0x9b, 0xd8, 0x4e, 0xfc, 0x10, 0x2d, 0xe6, 0x27, 0x71, 0x22, 0x07, 0xf4, 0x31, 0x67, 0x57, 0x46, + 0xb3, 0x34, 0x22, 0x47, 0xf9, 0xc0, 0x3c, 0x0f, 0x4a, 0x8b, 0x98, 0xfa, 0x21, 0x28, 0x68, 0xde, + 0x5e, 0x1e, 0xb1, 0xfb, 0xa9, 0x68, 0xe3, 0x5b, 0x54, 0xca, 0x2d, 0xfc, 0xcf, 0x54, 0xd5, 0xd6, + 0xbf, 0xcd, 0xa0, 0xc5, 0xc6, 0x81, 0x1c, 0xee, 0x33, 0x7a, 0x06, 0x47, 0x1c, 0x94, 0x51, 0xf2, + 0xd4, 0x8c, 0xc6, 0x09, 0x16, 0x74, 0xca, 0x09, 0x90, 0x26, 0xb4, 0x4d, 0x76, 0xae, 0xe5, 0x33, + 0xe0, 0x24, 0x17, 0x21, 0xaf, 0x23, 0x6a, 0x6d, 0xda, 0x31, 0xae, 0xeb, 0xe7, 0xfa, 0x41, 0xcb, + 0x3e, 0xda, 0x6f, 0xf5, 0x48, 0xaf, 0x5f, 0xef, 0xb7, 0x48, 0xbb, 0xd3, 0xee, 0xeb, 0x4c, 0x5e, + 0x4f, 0xf5, 0x08, 0x2d, 0x7a, 0xf0, 0x6a, 0xe2, 0xb2, 0x98, 0x39, 0x31, 0x73, 0x41, 0x7d, 0x45, + 0xbb, 0xaa, 0xe1, 0xa6, 0x41, 0xf1, 0x53, 0xb4, 0x72, 0xcc, 0x23, 0x19, 0x93, 0x81, 0x27, 0x84, + 0x4b, 0x4e, 0x68, 0x18, 0xb2, 0x80, 0xb9, 0xc6, 0xbe, 0x30, 0xc8, 0xf6, 0x94, 0xe8, 0xb5, 0x91, + 0xa8, 0xcd, 0x74, 0xb9, 0x74, 0x68, 0x64, 0x92, 0x74, 0x12, 0x31, 0x99, 0x78, 0xb1, 0x04, 0x05, + 0x16, 0xed, 0x65, 0x23, 0x04, 0x8f, 0x68, 0x6b, 0x91, 0x5a, 0x8e, 0x4f, 0xa5, 0x54, 0x89, 0x9a, + 0x23, 0x82, 0x80, 0x39, 0xb1, 0x39, 0x5d, 0x55, 0x05, 0x37, 0x33, 0x74, 0xeb, 0x3f, 0x11, 0xaa, + 0x35, 0x32, 0x03, 0x32, 0x7b, 0xbf, 0x82, 0x66, 0x8c, 0xfd, 0xce, 0x19, 0xfb, 0x9d, 0xe1, 0xae, + 0x3a, 0xce, 0x27, 0x2c, 0x12, 0xe9, 0xe6, 0x57, 0xec, 0x39, 0xf5, 0xd8, 0x76, 0xf1, 0x37, 0x68, + 0x56, 0x69, 0x01, 0x3e, 0xb8, 0xfa, 0xbc, 0x62, 0x36, 0xb0, 0x41, 0xfa, 0xad, 0xfa, 0xc1, 0xee, + 0x6a, 0xfe, 0x89, 0xbc, 0x3a, 0x3c, 0x6c, 0x92, 0x57, 0x47, 0xef, 0x7b, 0x36, 0x0c, 0xc9, 0xb4, + 0x3c, 0x97, 0xd3, 0x32, 0x46, 0xb3, 0x2a, 0x76, 0x98, 0x3a, 0x06, 0xfe, 0x56, 0x9a, 0xcf, 0x8a, + 0xb4, 0x32, 0xd8, 0x6d, 0x56, 0x9e, 0x41, 0x05, 0x16, 0x53, 0x13, 0x96, 0x2b, 0xba, 0xc4, 0x52, + 0x88, 0x0e, 0xc7, 0x6b, 0xea, 0xc8, 0xc4, 0x94, 0x9c, 0x87, 0x56, 0x55, 0xaf, 0x5a, 0x3d, 0xfe, + 0x14, 0x2a, 0x5b, 0x36, 0x02, 0x42, 0x3f, 0xd0, 0xc8, 0x65, 0xae, 0xb5, 0x08, 0x84, 0x8a, 0x26, + 0xd4, 0x35, 0x88, 0x7f, 0x40, 0x15, 0xa3, 0x59, 0xe3, 0xa6, 0x6a, 0xa6, 0x56, 0x83, 0x5d, 0xcb, + 0xcc, 0x2d, 0x91, 0x24, 0xde, 0xad, 0xc1, 0xc7, 0xee, 0xb7, 0xea, 0x6f, 0xd3, 0xe2, 0xbd, 0xec, + 0xe5, 0x18, 0xf8, 0x01, 0x32, 0xe6, 0x40, 0xa8, 0x13, 0x73, 0x11, 0x48, 0xeb, 0x96, 0x7e, 0xa5, + 0x46, 0xeb, 0x1a, 0xc4, 0x16, 0x9a, 0x77, 0x4e, 0x68, 0x10, 0x30, 0xcf, 0x5a, 0x02, 0x79, 0xfa, + 0xa8, 0x16, 0x1d, 0x46, 0xfc, 0xb7, 0x2a, 0xc0, 0x1f, 0x9b, 0x88, 0x84, 0xf5, 0x0c, 0x00, 0x37, + 0xd9, 0xb1, 0x0e, 0x48, 0xdb, 0xa8, 0x96, 0xe5, 0xe8, 0xa9, 0xd2, 0x56, 0x20, 0x67, 0xad, 0xa6, + 0xf8, 0x6b, 0xad, 0xbc, 0x1e, 0x5a, 0x49, 0xdb, 0x12, 0x69, 0xdc, 0xca, 0xd5, 0x49, 0x7f, 0x42, + 0x7b, 0x02, 0x87, 0x97, 0x18, 0x6a, 0x99, 0x2c, 0x18, 0x7f, 0xfb, 0x2a, 0xbc, 0xbd, 0x62, 0x60, + 0xf3, 0xf2, 0x3a, 0x42, 0xe0, 0x5d, 0x09, 0xd8, 0xcf, 0xda, 0x34, 0xfb, 0x59, 0x1e, 0xb3, 0x9f, + 0xce, 0xa1, 0xfa, 0xcf, 0x5e, 0x80, 0x51, 0x7d, 0x65, 0x41, 0x8f, 0x50, 0x2d, 0x60, 0xe7, 0x22, + 0x20, 0xa1, 0x43, 0x06, 0x34, 0x18, 0x92, 0x40, 0x98, 0x2a, 0xa6, 0x02, 0x78, 0xd7, 0xd9, 0xa3, + 0xc1, 0xb0, 0x23, 0xf0, 0x13, 0x84, 0x27, 0x88, 0xca, 0xf0, 0xd6, 0xc1, 0xf0, 0x16, 0xf3, 0x54, + 0x65, 0x83, 0xaf, 0x11, 0x3a, 0x0f, 0xc9, 0x40, 0x04, 0x89, 0x84, 0x3a, 0x43, 0xf9, 0xda, 0x4f, + 0x76, 0x26, 0x0f, 0xca, 0x25, 0xe0, 0xa7, 0xee, 0x9e, 0x1a, 0x62, 0x2f, 0x9c, 0x87, 0x7b, 0x7a, + 0xac, 0x72, 0x42, 0x11, 0x0d, 0x4e, 0x89, 0xd2, 0xe0, 0x90, 0x59, 0xb7, 0x37, 0x0b, 0xdb, 0x4b, + 0x36, 0x52, 0x50, 0x03, 0x10, 0x7c, 0x0b, 0x2d, 0x38, 0xd4, 0x67, 0x11, 0xf5, 0x69, 0x00, 0xb5, + 0x47, 0xd1, 0x1e, 0x01, 0xaa, 0xe6, 0xcd, 0x7b, 0xd2, 0x30, 0x12, 0x6e, 0xe2, 0xc4, 0xd0, 0x6c, + 0xd0, 0x35, 0xc8, 0xca, 0xc8, 0x97, 0x76, 0xb5, 0xb0, 0xed, 0x4a, 0xfc, 0x33, 0xb4, 0xae, 0x5d, + 0x9f, 0x7f, 0x16, 0x92, 0x33, 0x11, 0xb3, 0x7c, 0x52, 0xa2, 0x2b, 0xfb, 0x1b, 0x40, 0x38, 0x38, + 0x0b, 0xdf, 0x8a, 0x98, 0x8d, 0x0a, 0xb5, 0x36, 0x5a, 0x92, 0x8c, 0x46, 0xd0, 0x1e, 0xcb, 0x8a, + 0xe6, 0x8f, 0xff, 0x94, 0xa2, 0x79, 0x51, 0x8f, 0xcb, 0x38, 0xe0, 0xea, 0xe8, 0x99, 0x0a, 0xe4, + 0x0c, 0x14, 0x4c, 0x42, 0x95, 0xf2, 0xba, 0x50, 0x08, 0xcd, 0xda, 0x38, 0x95, 0x29, 0x35, 0x76, + 0x41, 0xa2, 0x12, 0x03, 0x2e, 0x55, 0x5e, 0xa0, 0x9c, 0x72, 0x32, 0x50, 0x99, 0xd7, 0x80, 0x45, + 0xd6, 0x7d, 0x9d, 0x18, 0x70, 0xd9, 0x55, 0x92, 0x5e, 0x26, 0xc0, 0x8f, 0xd1, 0x12, 0x6c, 0x6e, + 0xcc, 0x59, 0x44, 0x92, 0x50, 0x95, 0xb0, 0xae, 0xf5, 0x00, 0xd8, 0x8b, 0x4a, 0xd0, 0xe7, 0x2c, + 0x3a, 0xd2, 0xf0, 0xc6, 0x10, 0xad, 0x5d, 0xa1, 0x2e, 0xe5, 0x71, 0xb2, 0x96, 0x5c, 0xc5, 0x86, + 0xbf, 0x95, 0xc7, 0x49, 0x2d, 0x00, 0xdc, 0xdd, 0x8c, 0x3d, 0x6f, 0x94, 0xaa, 0xd3, 0xc6, 0x24, + 0x72, 0x18, 0x39, 0x65, 0x17, 0xe0, 0xf5, 0x66, 0x55, 0xda, 0xa8, 0x90, 0x37, 0xec, 0x62, 0xeb, + 0x1f, 0x67, 0xd1, 0x52, 0x03, 0xde, 0xa2, 0xbe, 0xac, 0xc9, 0x62, 0xca, 0x3d, 0x39, 0x5e, 0xdb, + 0x17, 0x26, 0x6a, 0xfb, 0x75, 0x04, 0x7f, 0x93, 0x98, 0x0e, 0x4d, 0xd4, 0x87, 0xcc, 0xa9, 0x4f, + 0x87, 0xf9, 0x24, 0x6a, 0x76, 0x6a, 0xb3, 0x00, 0x0a, 0x7d, 0x1d, 0xcb, 0x61, 0x92, 0x2b, 0x5a, + 0x01, 0x73, 0x53, 0x5a, 0x01, 0xdb, 0xa8, 0x66, 0x58, 0x81, 0x3a, 0xff, 0xc0, 0x9b, 0x07, 0x5e, + 0x55, 0xf3, 0x14, 0x0c, 0xcc, 0x7b, 0xa8, 0xa2, 0xf3, 0x5b, 0xe1, 0x87, 0x1e, 0x8b, 0x19, 0x04, + 0xf2, 0xa2, 0x9e, 0xae, 0x61, 0x30, 0x68, 0x76, 0x41, 0x11, 0x0d, 0xdf, 0xb8, 0x00, 0xdf, 0xb1, + 0x00, 0x08, 0x7c, 0xe4, 0x4d, 0xa4, 0x1f, 0xe0, 0x2b, 0x91, 0xde, 0x01, 0x00, 0xd4, 0x67, 0xae, + 0xa3, 0x62, 0x56, 0x80, 0xeb, 0xd6, 0xcf, 0xfc, 0xd0, 0x14, 0xdf, 0xd9, 0xb4, 0xb0, 0x3e, 0xed, + 0xfd, 0xf5, 0x4c, 0xb0, 0xb4, 0x87, 0x68, 0x51, 0x8b, 0x47, 0xdf, 0x5a, 0x01, 0x4e, 0x05, 0xe0, + 0xec, 0x63, 0x1f, 0xa3, 0xa5, 0x94, 0x37, 0xfa, 0xda, 0x2a, 0x30, 0x17, 0x0d, 0x33, 0xfb, 0x5c, + 0x8c, 0x66, 0x95, 0xf9, 0x98, 0x80, 0x00, 0x7f, 0x4f, 0x1e, 0xe4, 0xda, 0xa5, 0x83, 0xbc, 0x89, + 0xca, 0x5c, 0x92, 0x13, 0xe1, 0x6b, 0x6b, 0x07, 0xd7, 0x5d, 0xb4, 0x11, 0x97, 0xaf, 0x85, 0x0f, + 0x46, 0xbe, 0xf5, 0x1f, 0x05, 0x64, 0x19, 0xcb, 0xe0, 0x3e, 0x73, 0x6d, 0xa6, 0x42, 0x4c, 0x6a, + 0x20, 0xf7, 0x51, 0x95, 0xc7, 0xcc, 0xcf, 0x79, 0x76, 0x1d, 0x65, 0xcb, 0x0a, 0xcd, 0x1c, 0xfb, + 0x43, 0xb4, 0xc8, 0x25, 0x91, 0x49, 0x18, 0x7a, 0x17, 0xc4, 0x89, 0x54, 0xde, 0xa2, 0xf3, 0x8c, + 0x0a, 0x97, 0x3d, 0x40, 0x1b, 0x0a, 0xc4, 0x5b, 0xa8, 0xc2, 0x25, 0x24, 0x5e, 0x2e, 0x71, 0x23, + 0x11, 0x9a, 0xfc, 0xa2, 0xc4, 0x25, 0xbc, 0xba, 0x19, 0x89, 0x50, 0x6d, 0x6c, 0xce, 0x2b, 0xe8, + 0x14, 0x7d, 0x81, 0x66, 0x9e, 0x60, 0x15, 0xcd, 0x89, 0x88, 0x0f, 0x79, 0x60, 0x7a, 0xbb, 0xe6, + 0x69, 0xeb, 0x5f, 0x0a, 0x68, 0x43, 0x7f, 0xc5, 0x5e, 0x24, 0xa8, 0xeb, 0x50, 0x19, 0x37, 0x74, + 0x78, 0x6a, 0x07, 0xc7, 0x42, 0xcd, 0x6a, 0xa2, 0x55, 0x9a, 0x04, 0x57, 0xec, 0x05, 0x83, 0xb4, + 0x5d, 0xfc, 0x31, 0x2a, 0xc3, 0x0b, 0xa2, 0x0b, 0xe8, 0x50, 0xc3, 0x47, 0x2e, 0xd8, 0x25, 0x83, + 0x35, 0x84, 0xab, 0x36, 0xb2, 0xe4, 0x32, 0x5d, 0x75, 0x71, 0x11, 0x98, 0x03, 0x91, 0x87, 0x94, + 0x39, 0xa6, 0xfd, 0x1e, 0x3d, 0xcb, 0x2c, 0x70, 0xca, 0x29, 0xa8, 0xa6, 0xd9, 0xfa, 0xaf, 0x47, + 0x59, 0xa7, 0x17, 0x56, 0xab, 0x92, 0x73, 0xed, 0x14, 0x27, 0x93, 0x73, 0x40, 0xdb, 0x2e, 0x7e, + 0x32, 0x4a, 0xaf, 0x67, 0xc0, 0xe5, 0x2f, 0x5d, 0xf2, 0xf0, 0xa3, 0x84, 0xfa, 0x4b, 0x54, 0xf6, + 0xd8, 0x71, 0x4c, 0xd2, 0x11, 0xf3, 0x57, 0x8d, 0x28, 0x29, 0xda, 0x81, 0x19, 0x35, 0xd6, 0x4c, + 0x2e, 0x4d, 0x34, 0x93, 0xef, 0xa8, 0xe2, 0x20, 0x3a, 0xd3, 0x42, 0x48, 0xbe, 0x77, 0x0b, 0x4f, + 0x55, 0x7d, 0xa0, 0x30, 0x7d, 0xe4, 0xb3, 0x6e, 0x32, 0x6c, 0x4b, 0xc5, 0x2e, 0xa6, 0xcd, 0x64, + 0x95, 0xf2, 0x85, 0x2c, 0x70, 0x79, 0x30, 0xcc, 0x7a, 0x3a, 0x08, 0xda, 0xd1, 0x55, 0x03, 0xa7, + 0x1d, 0x9c, 0xac, 0xe9, 0x3c, 0x3b, 0xde, 0x74, 0x86, 0x35, 0x5f, 0x6e, 0x3a, 0xab, 0x64, 0xc4, + 0xa4, 0x90, 0xd7, 0xb5, 0x6b, 0x32, 0x8f, 0xf8, 0x7b, 0xa4, 0x93, 0x69, 0x1d, 0x23, 0xca, 0x30, + 0xdb, 0xda, 0xf8, 0x6c, 0xda, 0xd8, 0x55, 0xc0, 0x98, 0x6f, 0x77, 0xde, 0xd6, 0xf7, 0xdb, 0x4d, + 0x7b, 0xc1, 0x4b, 0x31, 0x65, 0x0b, 0xd4, 0x53, 0x95, 0xa0, 0x73, 0xc2, 0x68, 0x2c, 0xe1, 0xdc, + 0x16, 0xed, 0x12, 0x60, 0x0d, 0x80, 0xd4, 0xa9, 0x38, 0xe6, 0x9e, 0x47, 0x3e, 0xf0, 0xf8, 0x84, + 0x0c, 0x44, 0x2c, 0xe1, 0xc8, 0x16, 0xed, 0xb2, 0x42, 0xdf, 0xf1, 0xf8, 0x64, 0x4f, 0xc4, 0x52, + 0x97, 0x2d, 0x71, 0x24, 0xf4, 0xce, 0x2c, 0xea, 0x20, 0x0a, 0x08, 0x6c, 0x4d, 0xba, 0x6f, 0xe0, + 0x97, 0x6a, 0xc6, 0xf3, 0x50, 0x9f, 0x81, 0x5b, 0xfa, 0xca, 0xf4, 0x55, 0x5d, 0x7d, 0x0e, 0xad, + 0x25, 0xd0, 0x23, 0xde, 0xb9, 0xe4, 0xc2, 0xed, 0x52, 0x9c, 0xf3, 0xe7, 0x8f, 0xd0, 0x62, 0x9c, + 0xc4, 0x22, 0xe2, 0xd4, 0x23, 0x1e, 0x93, 0x52, 0x04, 0x26, 0x13, 0xab, 0xa6, 0xf0, 0x3e, 0xa0, + 0xd9, 0x4d, 0x46, 0xd6, 0xd1, 0x5a, 0xce, 0xdd, 0x64, 0xa4, 0x8d, 0xac, 0x4f, 0x11, 0xce, 0x91, + 0xd2, 0x0a, 0x6d, 0x45, 0xf7, 0xd2, 0x47, 0x12, 0x53, 0xa5, 0x3d, 0x44, 0x15, 0x63, 0x27, 0xba, + 0x95, 0x06, 0xc9, 0x5a, 0x45, 0xd9, 0x4a, 0x59, 0xe3, 0x36, 0xc0, 0x13, 0xf5, 0xcd, 0xea, 0xff, + 0xa6, 0xbe, 0x79, 0x80, 0xaa, 0x41, 0xe2, 0x13, 0x19, 0x32, 0x27, 0xa6, 0xb1, 0x88, 0xa4, 0x69, + 0x5d, 0x57, 0x82, 0xc4, 0xef, 0x65, 0x20, 0xbe, 0x63, 0x7a, 0xed, 0x50, 0xee, 0x9a, 0x96, 0x70, + 0x0e, 0xc1, 0x2f, 0xd0, 0xbc, 0xe3, 0x93, 0x90, 0x3b, 0xa7, 0x90, 0xf9, 0x66, 0xd9, 0x5e, 0xe3, + 0x80, 0x74, 0xdb, 0x8d, 0x37, 0xbb, 0xd5, 0xf4, 0xc9, 0xae, 0x77, 0x9a, 0x87, 0x07, 0xf6, 0x9c, + 0xe3, 0x77, 0xb9, 0x73, 0xaa, 0xc2, 0x83, 0x4e, 0x47, 0x4c, 0x7f, 0x76, 0xd6, 0x9e, 0x87, 0xe7, + 0xb6, 0x8b, 0x3f, 0x47, 0x35, 0x6d, 0x44, 0x66, 0x6d, 0x3c, 0x18, 0x5a, 0x77, 0x95, 0x05, 0xec, + 0xce, 0xc6, 0x51, 0xc2, 0xec, 0x45, 0x90, 0xf6, 0x32, 0x21, 0xfe, 0x15, 0x5a, 0x1d, 0xef, 0xe8, + 0x93, 0x88, 0xba, 0x9c, 0x06, 0x31, 0xe4, 0x19, 0xd3, 0x3b, 0xfb, 0xcb, 0x13, 0x9d, 0xfd, 0xd7, + 0x75, 0xbb, 0x69, 0xaf, 0x8c, 0xb5, 0xf5, 0x6d, 0x3d, 0x09, 0x6e, 0xa3, 0x32, 0x6c, 0xfa, 0x19, + 0x8b, 0xa4, 0xd2, 0xcd, 0x03, 0x98, 0xb4, 0x06, 0x93, 0xaa, 0x5d, 0x7f, 0xab, 0xf1, 0xdd, 0x15, + 0xb5, 0xe5, 0xe4, 0x6d, 0xcb, 0xee, 0xb5, 0x0f, 0x3b, 0xa4, 0x71, 0x64, 0xdb, 0xad, 0x4e, 0xdf, + 0x2e, 0x0d, 0x47, 0x14, 0xfc, 0x06, 0xad, 0x68, 0x0f, 0x1e, 0x41, 0xa4, 0xc8, 0x4c, 0xf4, 0x21, + 0x98, 0xe8, 0xfa, 0xce, 0x55, 0xb1, 0xc4, 0xc6, 0xf1, 0xe5, 0xf8, 0x02, 0x25, 0x94, 0x94, 0x90, + 0xb3, 0x3c, 0xd2, 0x07, 0x59, 0x3d, 0xbf, 0x61, 0x17, 0x78, 0x03, 0x29, 0x1f, 0x34, 0x4c, 0x18, + 0x77, 0xad, 0xc7, 0xda, 0xad, 0xa4, 0xcf, 0xf8, 0x2b, 0x74, 0x23, 0x64, 0x01, 0x55, 0xdb, 0x04, + 0x15, 0x56, 0xb6, 0x59, 0x4f, 0x52, 0x9b, 0x5b, 0x36, 0x72, 0xa8, 0xb7, 0xd2, 0x5d, 0xf8, 0x1c, + 0xe1, 0xf1, 0x61, 0x2e, 0x8f, 0x98, 0x6e, 0x00, 0xab, 0x31, 0xb5, 0xfc, 0x98, 0x26, 0x8f, 0x20, + 0x7a, 0x7a, 0x82, 0xba, 0x99, 0xed, 0x7f, 0x96, 0x56, 0xeb, 0xd4, 0x35, 0x56, 0x0f, 0xdd, 0x91, + 0x88, 0x33, 0xa9, 0xfd, 0xcd, 0x8e, 0x26, 0x68, 0x08, 0xdc, 0xc9, 0x0e, 0x5a, 0x36, 0x8b, 0x23, + 0x86, 0xf8, 0x81, 0x07, 0x32, 0xed, 0x06, 0x1b, 0x51, 0x0f, 0x24, 0xef, 0x78, 0x20, 0x75, 0x91, + 0x14, 0xb1, 0x31, 0xb2, 0x6e, 0x04, 0x57, 0x15, 0x9e, 0x63, 0xaa, 0xba, 0x4d, 0x88, 0x98, 0x0c, + 0x59, 0xc0, 0x22, 0x48, 0x32, 0x9f, 0x99, 0xba, 0x4d, 0x88, 0xf8, 0x55, 0x0a, 0x2a, 0x7f, 0x06, + 0xb4, 0xb4, 0x9e, 0xd4, 0x1d, 0xdf, 0x92, 0xc2, 0xd2, 0x6a, 0xf2, 0x2e, 0x9a, 0xa7, 0x9e, 0xe7, + 0x9c, 0xd0, 0x18, 0x2e, 0x78, 0x8a, 0xbb, 0xd7, 0x8f, 0xa9, 0x27, 0x99, 0x9d, 0xa2, 0xb8, 0x85, + 0x2a, 0x70, 0xb1, 0x1c, 0x9f, 0x11, 0x97, 0x79, 0xf4, 0x02, 0xee, 0x70, 0xaa, 0xcf, 0x97, 0xb4, + 0x2b, 0x6d, 0x8a, 0x98, 0xf6, 0xdf, 0x36, 0x95, 0x60, 0xb7, 0x9a, 0x43, 0xc8, 0xb3, 0xa7, 0x76, + 0x49, 0x8d, 0xeb, 0x9f, 0x81, 0x50, 0x7d, 0x5b, 0xbe, 0x6e, 0x00, 0xbf, 0xf8, 0x02, 0xb4, 0x5e, + 0x1d, 0x15, 0x0c, 0xe0, 0x1c, 0x47, 0x3d, 0x1d, 0x9f, 0x86, 0xda, 0x45, 0x7e, 0x0d, 0x44, 0xd3, + 0xd3, 0x39, 0xa0, 0x21, 0xf8, 0xc9, 0x27, 0x68, 0xc9, 0xf0, 0x72, 0x77, 0x61, 0xba, 0xad, 0x6b, + 0x5e, 0x95, 0xbb, 0xe2, 0xaa, 0xa1, 0x6b, 0x1e, 0x0d, 0xa0, 0x71, 0x5b, 0xb4, 0xd5, 0x9f, 0xf8, + 0x47, 0xb4, 0x3a, 0x48, 0xd3, 0x05, 0x92, 0x25, 0x08, 0xc1, 0xb1, 0xb0, 0x76, 0xc1, 0x9a, 0x6f, + 0xee, 0x5c, 0x9d, 0x53, 0xd8, 0x2b, 0x83, 0x69, 0x99, 0xc6, 0x97, 0x68, 0x55, 0xb7, 0x52, 0xb2, + 0x9a, 0x1a, 0xb2, 0x08, 0xee, 0x42, 0x2b, 0xb7, 0x62, 0xeb, 0x46, 0xcb, 0xbe, 0x29, 0xad, 0x8d, + 0x4c, 0x77, 0xe0, 0x40, 0xe1, 0xdc, 0x35, 0xed, 0xdc, 0xa2, 0x06, 0xda, 0x46, 0x83, 0xa3, 0xce, + 0x24, 0xf4, 0x6f, 0x8b, 0x4a, 0x83, 0x59, 0x4b, 0x12, 0xff, 0x02, 0x55, 0xd9, 0x79, 0x1c, 0x51, + 0x92, 0xfe, 0x1e, 0xc0, 0xfa, 0x05, 0x7c, 0xc0, 0x44, 0xe4, 0x6b, 0xb4, 0x14, 0xe9, 0x40, 0x0e, + 0xed, 0x0a, 0xd0, 0x0f, 0x0c, 0x1b, 0x3f, 0x41, 0x0b, 0x92, 0x9e, 0x31, 0xd0, 0x8b, 0xf5, 0xfd, + 0x66, 0x61, 0xbb, 0xf4, 0xbc, 0xaa, 0x93, 0x86, 0x1e, 0x3d, 0x63, 0x4a, 0x2d, 0x76, 0x51, 0x9a, + 0xbf, 0xae, 0xec, 0x16, 0xd5, 0xaf, 0xec, 0x16, 0xed, 0xa3, 0x8a, 0xf6, 0x94, 0x22, 0x89, 0x1d, + 0xe1, 0x33, 0xeb, 0x25, 0xd8, 0x4f, 0x75, 0xa7, 0x05, 0x85, 0xd9, 0xa1, 0x46, 0x77, 0xd7, 0x4e, + 0xc9, 0x18, 0x40, 0x8e, 0x82, 0xd3, 0x40, 0x7c, 0x08, 0xec, 0xb2, 0x9f, 0x43, 0xa7, 0xf5, 0x91, + 0x1a, 0xd3, 0xfa, 0x48, 0x53, 0xda, 0x8b, 0xcd, 0x29, 0xed, 0xc5, 0x4f, 0x11, 0x4e, 0x6d, 0x8d, + 0x07, 0x24, 0xf4, 0xe8, 0x85, 0xca, 0x9c, 0x5e, 0xe5, 0x8d, 0xe8, 0x80, 0x07, 0x5d, 0x8d, 0xe7, + 0xd9, 0xf4, 0x3c, 0x63, 0xbf, 0x1e, 0x63, 0xd3, 0xf3, 0x94, 0x3d, 0xf9, 0xfb, 0x8a, 0xf6, 0xff, + 0xe8, 0xf7, 0x15, 0x75, 0x74, 0xc7, 0xa3, 0x01, 0x39, 0x11, 0x32, 0x36, 0x3f, 0x8b, 0x10, 0x64, + 0x3c, 0xd6, 0xfe, 0x60, 0xae, 0xf1, 0x68, 0xf0, 0x5a, 0xc8, 0x18, 0x7e, 0x1e, 0x21, 0x7a, 0xf9, + 0xa8, 0xdb, 0x45, 0xe8, 0x8c, 0x4b, 0x3e, 0xe0, 0x9e, 0xb2, 0xa0, 0x37, 0xb0, 0x8c, 0x95, 0x9d, + 0xcc, 0x32, 0xde, 0x66, 0xb2, 0xdd, 0x8d, 0x29, 0x20, 0xe9, 0x26, 0x03, 0x8f, 0x3b, 0x76, 0x6e, + 0x8e, 0x69, 0x6d, 0xd7, 0xfd, 0x69, 0x6d, 0xd7, 0x3d, 0x74, 0x27, 0xcf, 0xa3, 0x49, 0x2c, 0x88, + 0x13, 0x31, 0xe5, 0x9b, 0x08, 0x64, 0x5d, 0xd6, 0x01, 0x28, 0x6f, 0x63, 0x34, 0xac, 0x9e, 0xc4, + 0xa2, 0xa1, 0x29, 0x3a, 0x49, 0xde, 0x46, 0x35, 0xed, 0xfb, 0xc9, 0xe8, 0x94, 0x74, 0xb4, 0x53, + 0xd4, 0x78, 0x2f, 0x3d, 0x2b, 0xf7, 0x91, 0x41, 0x32, 0x95, 0x1f, 0xea, 0xcc, 0x46, 0xa3, 0x46, + 0xe5, 0x57, 0xb6, 0x82, 0xbb, 0x57, 0xb6, 0x82, 0xf1, 0x0b, 0xb4, 0x16, 0x46, 0xec, 0x8c, 0x8b, + 0x44, 0xa6, 0xab, 0x00, 0xab, 0x64, 0xd2, 0xfa, 0x71, 0xf3, 0xda, 0xf6, 0xac, 0x7d, 0x23, 0x15, + 0xeb, 0xc5, 0x1c, 0x68, 0xe1, 0xd8, 0x38, 0x73, 0x08, 0xce, 0x58, 0x14, 0x71, 0x97, 0x59, 0x36, + 0x58, 0x63, 0x36, 0x4e, 0x9b, 0xbe, 0x11, 0xe2, 0x97, 0x68, 0x33, 0xbf, 0xc6, 0x44, 0x32, 0x99, + 0xf5, 0x4b, 0x22, 0xe6, 0x88, 0xc8, 0x95, 0x56, 0x0f, 0x76, 0xee, 0xd6, 0x68, 0xb9, 0x47, 0x92, + 0x49, 0x63, 0x54, 0xb6, 0xe6, 0x40, 0x29, 0x6a, 0xf2, 0xad, 0xf4, 0xfe, 0xe9, 0x9d, 0x8e, 0x13, + 0x26, 0x91, 0x32, 0xf7, 0x4e, 0xbf, 0x44, 0x95, 0x90, 0x26, 0x52, 0x6d, 0x71, 0x0c, 0xf9, 0xca, + 0x4f, 0x60, 0x24, 0xab, 0x23, 0x1f, 0xdf, 0x55, 0xe2, 0x9e, 0x96, 0xee, 0xde, 0x9d, 0x0a, 0x93, + 0xa3, 0xc0, 0xe3, 0x3e, 0x8f, 0x99, 0x6b, 0x97, 0xc3, 0x1c, 0x8e, 0x3f, 0x47, 0x2b, 0xa3, 0xde, + 0x4f, 0xae, 0xc0, 0x7b, 0xaf, 0xe3, 0x60, 0xda, 0xf6, 0x19, 0xb5, 0x7c, 0xbe, 0x43, 0x37, 0x3f, + 0x30, 0x76, 0xca, 0x02, 0x97, 0x4c, 0xbb, 0x4d, 0xfd, 0x0b, 0x7d, 0xfb, 0x68, 0x28, 0xfd, 0x4b, + 0x97, 0xaa, 0x53, 0x86, 0xe7, 0x2f, 0x4a, 0xff, 0x72, 0xda, 0xf0, 0xdc, 0x7d, 0x69, 0x1d, 0xdd, + 0x9e, 0x1c, 0x3e, 0x7e, 0x6f, 0xfa, 0x4b, 0xfd, 0xcb, 0x80, 0xf1, 0x09, 0xc6, 0xae, 0x4f, 0xdf, + 0xa1, 0xe5, 0x89, 0x8c, 0x0e, 0xb2, 0x8d, 0x5f, 0xfd, 0x79, 0xe9, 0xdc, 0xd2, 0x58, 0x3a, 0x07, + 0x49, 0xc9, 0x5d, 0x54, 0x52, 0x13, 0xa7, 0x29, 0xcf, 0x5f, 0xe9, 0x9f, 0x5c, 0x0c, 0x44, 0x9c, + 0xa6, 0x39, 0xeb, 0xa8, 0xa8, 0xdf, 0x1c, 0x31, 0x8b, 0xe8, 0xbc, 0x14, 0x66, 0x89, 0x18, 0x6e, + 0xa0, 0x75, 0xfd, 0x93, 0xa4, 0x30, 0x12, 0xc3, 0x88, 0x49, 0xd8, 0x4e, 0xd3, 0xfe, 0xb4, 0xfe, + 0x7a, 0xf3, 0xda, 0x76, 0xf5, 0xf9, 0xfc, 0x4e, 0xab, 0xa5, 0x28, 0xf6, 0x1a, 0x30, 0xbb, 0x23, + 0x62, 0x4b, 0xf3, 0xf0, 0x6f, 0x91, 0xa5, 0x6f, 0xd0, 0xe1, 0x67, 0x57, 0xe9, 0x7d, 0x59, 0x94, + 0x78, 0x4c, 0x5a, 0xd4, 0x5c, 0xea, 0x42, 0xe8, 0x48, 0x49, 0x69, 0x98, 0xb2, 0x15, 0x65, 0xf7, + 0xde, 0x29, 0xb9, 0x5a, 0x4a, 0x0e, 0x68, 0x90, 0x50, 0xcf, 0x5e, 0x95, 0x53, 0xc5, 0xf8, 0x3d, + 0x7a, 0x6c, 0x0e, 0x5f, 0xee, 0x30, 0x5e, 0x5a, 0x4b, 0xda, 0x9c, 0x1a, 0x80, 0x96, 0x1e, 0xe8, + 0x11, 0xdd, 0xec, 0x78, 0x4e, 0xcc, 0xdc, 0xd7, 0xbd, 0xab, 0x77, 0xe8, 0x13, 0x33, 0xb5, 0x93, + 0x44, 0x11, 0x83, 0x84, 0xed, 0xca, 0x99, 0x1d, 0x98, 0xf9, 0xbe, 0x1e, 0xd0, 0xd0, 0xfc, 0xab, + 0x26, 0xfe, 0x87, 0x02, 0xba, 0x37, 0x31, 0xf3, 0xf8, 0x7c, 0xce, 0x89, 0xe0, 0x0e, 0xb3, 0x5c, + 0xd8, 0xbb, 0x5b, 0xd3, 0xf7, 0xae, 0x01, 0x9c, 0xdd, 0x07, 0x57, 0x6c, 0x9e, 0x16, 0x93, 0x76, + 0x70, 0x46, 0x3d, 0xee, 0xda, 0x77, 0xc7, 0x16, 0x96, 0x5f, 0x8f, 0x26, 0xe2, 0x7f, 0x2a, 0xa0, + 0x47, 0x13, 0x6b, 0x0a, 0x2e, 0x7d, 0xa7, 0x59, 0x17, 0xfb, 0xbf, 0x5b, 0xd7, 0xd6, 0xd8, 0xba, + 0x3a, 0xe3, 0x5b, 0x65, 0x96, 0xe6, 0xa2, 0xa7, 0x7f, 0x5c, 0x0f, 0x89, 0x64, 0x2e, 0x71, 0x04, + 0x0f, 0x48, 0x2c, 0xa4, 0xb4, 0x8e, 0xc1, 0x11, 0x3e, 0xfe, 0xc3, 0xea, 0x38, 0x92, 0xcc, 0x6d, + 0x08, 0x1e, 0xf4, 0x85, 0x94, 0xf8, 0x07, 0x15, 0x02, 0x32, 0x65, 0xf8, 0x34, 0xba, 0x20, 0x60, + 0xef, 0xd6, 0x10, 0xbe, 0x36, 0x3d, 0x05, 0xbb, 0x95, 0xd6, 0xdb, 0x56, 0xa7, 0x4f, 0xda, 0x4d, + 0x1d, 0x97, 0x97, 0x9d, 0x6c, 0x4b, 0xd5, 0x18, 0xe0, 0xa8, 0x2c, 0xd4, 0x13, 0x1f, 0xc2, 0x88, + 0x13, 0x97, 0x85, 0x11, 0x73, 0x20, 0x19, 0x3f, 0x81, 0x25, 0xd5, 0xb4, 0xa0, 0x99, 0xe1, 0xca, + 0x33, 0x31, 0x9f, 0x45, 0x43, 0x16, 0x38, 0x17, 0x64, 0xf2, 0x3e, 0x44, 0x5a, 0x1c, 0x1a, 0xe8, + 0x56, 0x46, 0x69, 0x8e, 0xdd, 0x8c, 0xc8, 0x8d, 0xaf, 0xd1, 0x42, 0x96, 0xc5, 0xe1, 0x6a, 0x76, + 0x27, 0x56, 0x81, 0xdb, 0xb0, 0x0d, 0x54, 0x74, 0x44, 0x10, 0xb3, 0x20, 0xd6, 0xfd, 0xe1, 0xb2, + 0x9d, 0x3d, 0x6f, 0xb9, 0x93, 0x77, 0xfb, 0x25, 0x34, 0x6f, 0xb7, 0xea, 0xcd, 0xf7, 0x47, 0xdd, + 0xda, 0x2c, 0x5e, 0x44, 0xa5, 0x5e, 0xcb, 0x56, 0x85, 0x5f, 0xab, 0x7f, 0xd4, 0xad, 0x15, 0xf0, + 0x3c, 0xba, 0x66, 0x1f, 0x75, 0x6a, 0x33, 0xb8, 0x8c, 0x8a, 0xdd, 0xc3, 0x5e, 0x5f, 0x15, 0x86, + 0xb5, 0x6b, 0xea, 0xa9, 0x73, 0xd8, 0x87, 0x71, 0xb5, 0xeb, 0xb8, 0x86, 0xca, 0x7a, 0x54, 0xbd, + 0xd7, 0x6b, 0xbf, 0xea, 0xd4, 0xe6, 0xb6, 0x7e, 0x5f, 0x40, 0x0b, 0x59, 0x7f, 0x05, 0xaf, 0xa0, + 0xb4, 0xc3, 0x52, 0xfb, 0x7d, 0xfa, 0xaf, 0xa0, 0x46, 0xe9, 0xee, 0xbc, 0xf9, 0x15, 0xc1, 0x47, + 0xf0, 0x0e, 0xbb, 0xde, 0xe8, 0xb7, 0x1b, 0xad, 0x5a, 0x01, 0x57, 0x11, 0xea, 0x1f, 0x1e, 0xd9, + 0x9d, 0xfa, 0x41, 0xab, 0xd3, 0xaf, 0xcd, 0x60, 0x8c, 0xaa, 0x8d, 0xc3, 0xc3, 0x2e, 0x51, 0xfe, + 0x51, 0x8f, 0x98, 0xc5, 0x37, 0xd0, 0xd2, 0x7e, 0xeb, 0x55, 0xbd, 0xf1, 0x5e, 0x5f, 0xc1, 0x68, + 0xf8, 0x3a, 0xbe, 0x89, 0xd6, 0x0c, 0xdc, 0x3b, 0xdc, 0x3f, 0x24, 0x3f, 0x1e, 0xb5, 0x8e, 0x5a, + 0x46, 0x38, 0xa7, 0xc6, 0x34, 0x0e, 0x0f, 0xba, 0xad, 0x7e, 0xbb, 0xdf, 0x7e, 0x9b, 0xc2, 0xf3, + 0x78, 0x05, 0xd5, 0xcc, 0x72, 0x9e, 0xbd, 0x7d, 0x66, 0xd0, 0x22, 0x5e, 0x46, 0x8b, 0xef, 0x5a, + 0xad, 0x37, 0xad, 0x4e, 0x93, 0xc0, 0x62, 0x5a, 0xef, 0x6b, 0x0b, 0x0a, 0xdc, 0x3f, 0x6c, 0xd4, + 0xf7, 0x73, 0x4b, 0x41, 0xb8, 0x82, 0x16, 0x7a, 0xdd, 0x56, 0xa3, 0x5f, 0xef, 0x1f, 0xda, 0xb5, + 0xd2, 0xd6, 0x0e, 0xb2, 0xe0, 0xce, 0x57, 0x6d, 0x82, 0x4a, 0x03, 0x63, 0x26, 0xe3, 0xb4, 0xdc, + 0xc5, 0x68, 0xf6, 0xd7, 0x52, 0x04, 0xe9, 0xfd, 0xb1, 0xfa, 0xfb, 0x71, 0x17, 0xd5, 0x26, 0xab, + 0x28, 0xf5, 0xc5, 0xe3, 0x75, 0x54, 0xed, 0x23, 0x78, 0x77, 0x1e, 0x7b, 0xfe, 0xb4, 0x56, 0x98, + 0x04, 0xbf, 0x78, 0xfa, 0xb4, 0x36, 0xf3, 0xf8, 0x6f, 0x0b, 0xe8, 0xc6, 0xd4, 0xe8, 0x8c, 0xef, + 0xa1, 0x3f, 0x16, 0xb6, 0x6b, 0x1f, 0xe1, 0x8f, 0xd1, 0xed, 0xe9, 0xa4, 0x7d, 0x43, 0x29, 0xe0, + 0x2d, 0x74, 0x67, 0x3a, 0x25, 0xb5, 0xd6, 0xda, 0xcc, 0xde, 0xf5, 0xd7, 0x85, 0xdf, 0x15, 0x3e, + 0xfa, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x45, 0x52, 0x95, 0xf2, 0xee, 0x2c, 0x00, 0x00, } diff --git a/socache/eventtype_string.go b/socache/eventtype_string.go new file mode 100644 index 0000000..2a05a46 --- /dev/null +++ b/socache/eventtype_string.go @@ -0,0 +1,16 @@ +// Code generated by "stringer -type=EventType"; DO NOT EDIT. + +package socache + +import "strconv" + +const _EventType_name = "EventTypeCreateEventTypeUpdateEventTypeDestroy" + +var _EventType_index = [...]uint8{0, 15, 30, 46} + +func (i EventType) String() string { + if i < 0 || i >= EventType(len(_EventType_index)-1) { + return "EventType(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _EventType_name[_EventType_index[i]:_EventType_index[i+1]] +} diff --git a/socache/socache.go b/socache/socache.go new file mode 100644 index 0000000..6b459fc --- /dev/null +++ b/socache/socache.go @@ -0,0 +1,137 @@ +package socache + +import ( + "sync" + + "github.com/Sirupsen/logrus" + gcsdkm "github.com/paralin/go-dota2/protocol/gcsdk_gcmessages" + "github.com/pkg/errors" + // gcsm "github.com/paralin/go-dota2/protocol/gcsystemmsgs" +) + +// SOCache implements the shared-object cache from DOTA. +type SOCache struct { + containerMap sync.Map + le *logrus.Entry +} + +// NewSOCache builds a new SOCache. +func NewSOCache(le *logrus.Entry) *SOCache { + return &SOCache{le: le} +} + +// GetContainerForTypeID returns the container for the type id. +func (c *SOCache) GetContainerForTypeID(id uint32) (*SOCacheContainer, error) { + if valInter, ok := c.containerMap.Load(id); ok { + return valInter.(*SOCacheContainer), nil + } + + ctr, err := NewSOCacheContainer(c.le, id) + if err != nil { + return nil, err + } + + valInter, loaded := c.containerMap.LoadOrStore(id, ctr) + if loaded { + ctr = valInter.(*SOCacheContainer) + } + return ctr, nil +} + +// HandleSubscribed handles a subscribed message. +func (c *SOCache) HandleSubscribed(msg *gcsdkm.CMsgSOCacheSubscribed) error { + var retErr error + for _, obj := range msg.GetObjects() { + if obj.GetTypeId() == 0 { + continue + } + + ctr, err := c.GetContainerForTypeID(uint32(obj.GetTypeId())) + if err == nil { + err = ctr.HandleSubscribed(msg, obj) + } + + if retErr == nil && err != nil { + retErr = err + } + } + + return retErr +} + +// HandleUnsubscribed handles a subscribed message. +func (c *SOCache) HandleUnsubscribed(msg *gcsdkm.CMsgSOCacheUnsubscribed) error { + if msg.GetOwnerSoid().GetId() == 0 { + return errors.Errorf("object id was empty in unsubscribed") + } + + var retErr error + c.containerMap.Range(func(key interface{}, value interface{}) bool { + val := value.(*SOCacheContainer) + _, hasObj := val.objects.Load(msg.GetOwnerSoid().GetId()) + if !hasObj { + return true + } + + retErr = val.HandleUnsubscribed(msg) + return false + }) + + return retErr +} + +// HandleUpdateMultiple handles a update multiple message. +func (c *SOCache) HandleUpdateMultiple(msg *gcsdkm.CMsgSOMultipleObjects) error { + addUpdateObj := func(obj *gcsdkm.CMsgSOMultipleObjects_SingleObject) error { + ctr, err := c.GetContainerForTypeID(uint32(obj.GetTypeId())) + if err != nil { + return nil + } + + m := &gcsdkm.CMsgSOCacheSubscribed_SubscribedType{ + TypeId: obj.TypeId, + ObjectData: [][]byte{obj.ObjectData}, + } + + if err := ctr.addUpdateObject(msg.GetOwnerSoid(), m); err != nil { + return err + } + + return nil + } + + for _, obj := range msg.GetObjectsAdded() { + if err := addUpdateObj(obj); err != nil { + return err + } + } + + for _, obj := range msg.GetObjectsModified() { + if err := addUpdateObj(obj); err != nil { + return err + } + } + + for _, obj := range msg.GetObjectsRemoved() { + ctr, err := c.GetContainerForTypeID(uint32(obj.GetTypeId())) + if err != nil { + continue + } + + if err := ctr.removeObject(msg.GetOwnerSoid()); err != nil { + return err + } + } + + return nil +} + +// HandleDestroy handles a object destroy message. +func (c *SOCache) HandleDestroy(msg *gcsdkm.CMsgSOSingleObject) error { + ctr, err := c.GetContainerForTypeID(uint32(msg.GetTypeId())) + if err != nil { + return err + } + + return ctr.HandleDestroy(msg) +} diff --git a/socache/socache_container.go b/socache/socache_container.go new file mode 100644 index 0000000..0fbf988 --- /dev/null +++ b/socache/socache_container.go @@ -0,0 +1,201 @@ +package socache + +import ( + "math/rand" + "sync" + + "github.com/Sirupsen/logrus" + "github.com/golang/protobuf/jsonpb" + "github.com/golang/protobuf/proto" + "github.com/paralin/go-dota2/cso" + gcsdkm "github.com/paralin/go-dota2/protocol/gcsdk_gcmessages" + "github.com/pkg/errors" +) + +// SOCacheContainer contains a type of object in the cache. +type SOCacheContainer struct { + le *logrus.Entry + typeID uint32 + objects sync.Map // map[uint64]proto.Message + subscriptions sync.Map // map[uint32]chan *CacheEvent +} + +// NewSOCacheContainer builds a new container for a type id. +func NewSOCacheContainer(le *logrus.Entry, typeID uint32) (*SOCacheContainer, error) { + typ := cso.CSOType(typeID) + if _, err := cso.NewSharedObject(typ); err != nil { + return nil, err + } + + return &SOCacheContainer{typeID: typeID, le: le.WithField("object-type", typ.String())}, nil +} + +// GetTypeID returns the type id the container contains. +func (c *SOCacheContainer) GetTypeID() uint32 { + return c.typeID +} + +// parseObject parses an object. +func (c *SOCacheContainer) parseObject(obj *gcsdkm.CMsgSOCacheSubscribed_SubscribedType) (proto.Message, error) { + objData := obj.GetObjectData()[0] + + so, err := cso.NewSharedObject(cso.CSOType(c.GetTypeID())) + if err != nil { + c.le.Debugf("unknown: %v", obj.String()) + return nil, err + } + + if err := proto.Unmarshal(objData, so); err != nil { + return nil, err + } + + return so, nil +} + +// stringifyObject converts an object to a json string. +func (c *SOCacheContainer) stringifyObject(obj proto.Message) string { + m := &jsonpb.Marshaler{} + str, _ := m.MarshalToString(obj) + return str +} + +// emitEvent emits an event to all listeners. +func (c *SOCacheContainer) emitEvent(event *CacheEvent) { + c.subscriptions.Range(func(key interface{}, value interface{}) bool { + ch := value.(chan *CacheEvent) + tries := 0 + RetryLoop: + for tries < 3 { + select { + case ch <- event: + break RetryLoop + default: + select { + case <-ch: + c.le.Warn("dropping event due to channel overflow") + default: + } + } + + tries++ + } + return true + }) +} + +// addUpdateObject handles an added / updated object. +func (c *SOCacheContainer) addUpdateObject(soid *gcsdkm.CMsgSOIDOwner, obj *gcsdkm.CMsgSOCacheSubscribed_SubscribedType) error { + soID := soid.GetId() + if soID == 0 { + return errors.New("object has empty shared object id") + } + + so, err := c.parseObject(obj) + if err != nil { + return err + } + + // c.le.Debugf("received object from GC: %s", c.stringifyObject(so)) + + eventType := EventTypeCreate + _, existed := c.objects.Load(soID) + if existed { + eventType = EventTypeUpdate + } + + c.objects.Store(soID, so) + c.emitEvent(&CacheEvent{ + EventType: eventType, + Object: so, + }) + + return nil +} + +// removeObject attempts to remove an object. +func (c *SOCacheContainer) removeObject(soid *gcsdkm.CMsgSOIDOwner) error { + soID := soid.GetId() + if soID == 0 { + return errors.New("object has empty shared object id") + } + + soInter, ok := c.objects.Load(soID) + if !ok { + return nil + } + so := soInter.(proto.Message) + + c.objects.Delete(soID) + c.emitEvent(&CacheEvent{ + EventType: EventTypeDestroy, + Object: so, + }) + return nil +} + +// HandleSubscribed handles an incoming object from a Subscribed event. +func (c *SOCacheContainer) HandleSubscribed(msg *gcsdkm.CMsgSOCacheSubscribed, obj *gcsdkm.CMsgSOCacheSubscribed_SubscribedType) error { + if len(obj.GetObjectData()) == 0 { + return errors.Errorf("expected object data for cache type %d", c.GetTypeID()) + } + + return c.addUpdateObject(msg.GetOwnerSoid(), obj) +} + +// HandleUnsubscribed handles a cache unsubscribe packet. +func (c *SOCacheContainer) HandleUnsubscribed(msg *gcsdkm.CMsgSOCacheUnsubscribed) error { + return c.removeObject(msg.GetOwnerSoid()) +} + +// HandleDestroy handles a cache object destroy packet. +func (c *SOCacheContainer) HandleDestroy(msg *gcsdkm.CMsgSOSingleObject) error { + return c.removeObject(msg.GetOwnerSoid()) +} + +// Subscribe subscribes to events for the object type. +func (c *SOCacheContainer) Subscribe() (<-chan *CacheEvent, CacheUnsubscribeFunc, error) { + subID := uint32(rand.Int31()) + ch := make(chan *CacheEvent, 10) + c.subscriptions.Store(subID, (chan *CacheEvent)(ch)) + return ch, func() { + c.subscriptions.Delete(subID) + }, nil +} + +// Get tries to look up an object by ID. +func (c *SOCacheContainer) Get(id uint64) (proto.Message, bool) { + obj, ok := c.objects.Load(id) + if !ok { + return nil, false + } + + return obj.(proto.Message), true +} + +// GetOne returns an object assuming there is only one. +func (c *SOCacheContainer) GetOne() (obj proto.Message) { + c.objects.Range(func(key interface{}, value interface{}) bool { + obj = value.(proto.Message) + return false + }) + + return +} + +// Range ranges over the objects in the container. +func (c *SOCacheContainer) Range(cb func(id uint64, obj proto.Message) error) error { + var retErr error + c.objects.Range(func(key interface{}, value interface{}) bool { + id := key.(uint64) + val := value.(proto.Message) + + if err := cb(id, val); err != nil { + retErr = err + return false + } + + return true + }) + + return retErr +} diff --git a/socache/socache_sub.go b/socache/socache_sub.go new file mode 100644 index 0000000..fbc1ead --- /dev/null +++ b/socache/socache_sub.go @@ -0,0 +1,40 @@ +package socache + +import ( + "github.com/golang/protobuf/proto" + "github.com/paralin/go-dota2/cso" +) + +// EventType marks the type of event this is. +type EventType int + +//go:generate stringer -type=EventType +const ( + // EventTypeCreate is emitted when an object is inserted into the cache. + EventTypeCreate EventType = iota + // EventTypeUpdate is emitted when an object is updated in the cache. + EventTypeUpdate + // EventTypeDestroy is emitted when an object is removed from the cache. + EventTypeDestroy +) + +// CacheEvent is a cache event. +type CacheEvent struct { + // EventType marks the type of event. + EventType EventType + // Object contains the affected object. + Object proto.Message +} + +// CacheUnsubscribeFunc is called to unsubscribe a subscription. +type CacheUnsubscribeFunc func() + +// SubscribeType subscribes to events for an object type. +func (c *SOCache) SubscribeType(id cso.CSOType) (<-chan *CacheEvent, CacheUnsubscribeFunc, error) { + ctr, err := c.GetContainerForTypeID(uint32(id)) + if err != nil { + return nil, nil, err + } + + return ctr.Subscribe() +}