github.com/xmplusdev/xmcore@v1.8.11-0.20240412132628-5518b55526af/app/router/config.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // versions:
     3  // 	protoc-gen-go v1.33.0
     4  // 	protoc        v4.23.1
     5  // source: app/router/config.proto
     6  
     7  package router
     8  
     9  import (
    10  	net "github.com/xmplusdev/xmcore/common/net"
    11  	serial "github.com/xmplusdev/xmcore/common/serial"
    12  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    13  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    14  	reflect "reflect"
    15  	sync "sync"
    16  )
    17  
    18  const (
    19  	// Verify that this generated code is sufficiently up-to-date.
    20  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    21  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    22  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    23  )
    24  
    25  // Type of domain value.
    26  type Domain_Type int32
    27  
    28  const (
    29  	// The value is used as is.
    30  	Domain_Plain Domain_Type = 0
    31  	// The value is used as a regular expression.
    32  	Domain_Regex Domain_Type = 1
    33  	// The value is a root domain.
    34  	Domain_Domain Domain_Type = 2
    35  	// The value is a domain.
    36  	Domain_Full Domain_Type = 3
    37  )
    38  
    39  // Enum value maps for Domain_Type.
    40  var (
    41  	Domain_Type_name = map[int32]string{
    42  		0: "Plain",
    43  		1: "Regex",
    44  		2: "Domain",
    45  		3: "Full",
    46  	}
    47  	Domain_Type_value = map[string]int32{
    48  		"Plain":  0,
    49  		"Regex":  1,
    50  		"Domain": 2,
    51  		"Full":   3,
    52  	}
    53  )
    54  
    55  func (x Domain_Type) Enum() *Domain_Type {
    56  	p := new(Domain_Type)
    57  	*p = x
    58  	return p
    59  }
    60  
    61  func (x Domain_Type) String() string {
    62  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    63  }
    64  
    65  func (Domain_Type) Descriptor() protoreflect.EnumDescriptor {
    66  	return file_app_router_config_proto_enumTypes[0].Descriptor()
    67  }
    68  
    69  func (Domain_Type) Type() protoreflect.EnumType {
    70  	return &file_app_router_config_proto_enumTypes[0]
    71  }
    72  
    73  func (x Domain_Type) Number() protoreflect.EnumNumber {
    74  	return protoreflect.EnumNumber(x)
    75  }
    76  
    77  // Deprecated: Use Domain_Type.Descriptor instead.
    78  func (Domain_Type) EnumDescriptor() ([]byte, []int) {
    79  	return file_app_router_config_proto_rawDescGZIP(), []int{0, 0}
    80  }
    81  
    82  type Config_DomainStrategy int32
    83  
    84  const (
    85  	// Use domain as is.
    86  	Config_AsIs Config_DomainStrategy = 0
    87  	// Always resolve IP for domains.
    88  	Config_UseIp Config_DomainStrategy = 1
    89  	// Resolve to IP if the domain doesn't match any rules.
    90  	Config_IpIfNonMatch Config_DomainStrategy = 2
    91  	// Resolve to IP if any rule requires IP matching.
    92  	Config_IpOnDemand Config_DomainStrategy = 3
    93  )
    94  
    95  // Enum value maps for Config_DomainStrategy.
    96  var (
    97  	Config_DomainStrategy_name = map[int32]string{
    98  		0: "AsIs",
    99  		1: "UseIp",
   100  		2: "IpIfNonMatch",
   101  		3: "IpOnDemand",
   102  	}
   103  	Config_DomainStrategy_value = map[string]int32{
   104  		"AsIs":         0,
   105  		"UseIp":        1,
   106  		"IpIfNonMatch": 2,
   107  		"IpOnDemand":   3,
   108  	}
   109  )
   110  
   111  func (x Config_DomainStrategy) Enum() *Config_DomainStrategy {
   112  	p := new(Config_DomainStrategy)
   113  	*p = x
   114  	return p
   115  }
   116  
   117  func (x Config_DomainStrategy) String() string {
   118  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   119  }
   120  
   121  func (Config_DomainStrategy) Descriptor() protoreflect.EnumDescriptor {
   122  	return file_app_router_config_proto_enumTypes[1].Descriptor()
   123  }
   124  
   125  func (Config_DomainStrategy) Type() protoreflect.EnumType {
   126  	return &file_app_router_config_proto_enumTypes[1]
   127  }
   128  
   129  func (x Config_DomainStrategy) Number() protoreflect.EnumNumber {
   130  	return protoreflect.EnumNumber(x)
   131  }
   132  
   133  // Deprecated: Use Config_DomainStrategy.Descriptor instead.
   134  func (Config_DomainStrategy) EnumDescriptor() ([]byte, []int) {
   135  	return file_app_router_config_proto_rawDescGZIP(), []int{10, 0}
   136  }
   137  
   138  // Domain for routing decision.
   139  type Domain struct {
   140  	state         protoimpl.MessageState
   141  	sizeCache     protoimpl.SizeCache
   142  	unknownFields protoimpl.UnknownFields
   143  
   144  	// Domain matching type.
   145  	Type Domain_Type `protobuf:"varint,1,opt,name=type,proto3,enum=xray.app.router.Domain_Type" json:"type,omitempty"`
   146  	// Domain value.
   147  	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
   148  	// Attributes of this domain. May be used for filtering.
   149  	Attribute []*Domain_Attribute `protobuf:"bytes,3,rep,name=attribute,proto3" json:"attribute,omitempty"`
   150  }
   151  
   152  func (x *Domain) Reset() {
   153  	*x = Domain{}
   154  	if protoimpl.UnsafeEnabled {
   155  		mi := &file_app_router_config_proto_msgTypes[0]
   156  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   157  		ms.StoreMessageInfo(mi)
   158  	}
   159  }
   160  
   161  func (x *Domain) String() string {
   162  	return protoimpl.X.MessageStringOf(x)
   163  }
   164  
   165  func (*Domain) ProtoMessage() {}
   166  
   167  func (x *Domain) ProtoReflect() protoreflect.Message {
   168  	mi := &file_app_router_config_proto_msgTypes[0]
   169  	if protoimpl.UnsafeEnabled && x != nil {
   170  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   171  		if ms.LoadMessageInfo() == nil {
   172  			ms.StoreMessageInfo(mi)
   173  		}
   174  		return ms
   175  	}
   176  	return mi.MessageOf(x)
   177  }
   178  
   179  // Deprecated: Use Domain.ProtoReflect.Descriptor instead.
   180  func (*Domain) Descriptor() ([]byte, []int) {
   181  	return file_app_router_config_proto_rawDescGZIP(), []int{0}
   182  }
   183  
   184  func (x *Domain) GetType() Domain_Type {
   185  	if x != nil {
   186  		return x.Type
   187  	}
   188  	return Domain_Plain
   189  }
   190  
   191  func (x *Domain) GetValue() string {
   192  	if x != nil {
   193  		return x.Value
   194  	}
   195  	return ""
   196  }
   197  
   198  func (x *Domain) GetAttribute() []*Domain_Attribute {
   199  	if x != nil {
   200  		return x.Attribute
   201  	}
   202  	return nil
   203  }
   204  
   205  // IP for routing decision, in CIDR form.
   206  type CIDR struct {
   207  	state         protoimpl.MessageState
   208  	sizeCache     protoimpl.SizeCache
   209  	unknownFields protoimpl.UnknownFields
   210  
   211  	// IP address, should be either 4 or 16 bytes.
   212  	Ip []byte `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"`
   213  	// Number of leading ones in the network mask.
   214  	Prefix uint32 `protobuf:"varint,2,opt,name=prefix,proto3" json:"prefix,omitempty"`
   215  }
   216  
   217  func (x *CIDR) Reset() {
   218  	*x = CIDR{}
   219  	if protoimpl.UnsafeEnabled {
   220  		mi := &file_app_router_config_proto_msgTypes[1]
   221  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   222  		ms.StoreMessageInfo(mi)
   223  	}
   224  }
   225  
   226  func (x *CIDR) String() string {
   227  	return protoimpl.X.MessageStringOf(x)
   228  }
   229  
   230  func (*CIDR) ProtoMessage() {}
   231  
   232  func (x *CIDR) ProtoReflect() protoreflect.Message {
   233  	mi := &file_app_router_config_proto_msgTypes[1]
   234  	if protoimpl.UnsafeEnabled && x != nil {
   235  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   236  		if ms.LoadMessageInfo() == nil {
   237  			ms.StoreMessageInfo(mi)
   238  		}
   239  		return ms
   240  	}
   241  	return mi.MessageOf(x)
   242  }
   243  
   244  // Deprecated: Use CIDR.ProtoReflect.Descriptor instead.
   245  func (*CIDR) Descriptor() ([]byte, []int) {
   246  	return file_app_router_config_proto_rawDescGZIP(), []int{1}
   247  }
   248  
   249  func (x *CIDR) GetIp() []byte {
   250  	if x != nil {
   251  		return x.Ip
   252  	}
   253  	return nil
   254  }
   255  
   256  func (x *CIDR) GetPrefix() uint32 {
   257  	if x != nil {
   258  		return x.Prefix
   259  	}
   260  	return 0
   261  }
   262  
   263  type GeoIP struct {
   264  	state         protoimpl.MessageState
   265  	sizeCache     protoimpl.SizeCache
   266  	unknownFields protoimpl.UnknownFields
   267  
   268  	CountryCode  string  `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
   269  	Cidr         []*CIDR `protobuf:"bytes,2,rep,name=cidr,proto3" json:"cidr,omitempty"`
   270  	ReverseMatch bool    `protobuf:"varint,3,opt,name=reverse_match,json=reverseMatch,proto3" json:"reverse_match,omitempty"`
   271  }
   272  
   273  func (x *GeoIP) Reset() {
   274  	*x = GeoIP{}
   275  	if protoimpl.UnsafeEnabled {
   276  		mi := &file_app_router_config_proto_msgTypes[2]
   277  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   278  		ms.StoreMessageInfo(mi)
   279  	}
   280  }
   281  
   282  func (x *GeoIP) String() string {
   283  	return protoimpl.X.MessageStringOf(x)
   284  }
   285  
   286  func (*GeoIP) ProtoMessage() {}
   287  
   288  func (x *GeoIP) ProtoReflect() protoreflect.Message {
   289  	mi := &file_app_router_config_proto_msgTypes[2]
   290  	if protoimpl.UnsafeEnabled && x != nil {
   291  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   292  		if ms.LoadMessageInfo() == nil {
   293  			ms.StoreMessageInfo(mi)
   294  		}
   295  		return ms
   296  	}
   297  	return mi.MessageOf(x)
   298  }
   299  
   300  // Deprecated: Use GeoIP.ProtoReflect.Descriptor instead.
   301  func (*GeoIP) Descriptor() ([]byte, []int) {
   302  	return file_app_router_config_proto_rawDescGZIP(), []int{2}
   303  }
   304  
   305  func (x *GeoIP) GetCountryCode() string {
   306  	if x != nil {
   307  		return x.CountryCode
   308  	}
   309  	return ""
   310  }
   311  
   312  func (x *GeoIP) GetCidr() []*CIDR {
   313  	if x != nil {
   314  		return x.Cidr
   315  	}
   316  	return nil
   317  }
   318  
   319  func (x *GeoIP) GetReverseMatch() bool {
   320  	if x != nil {
   321  		return x.ReverseMatch
   322  	}
   323  	return false
   324  }
   325  
   326  type GeoIPList struct {
   327  	state         protoimpl.MessageState
   328  	sizeCache     protoimpl.SizeCache
   329  	unknownFields protoimpl.UnknownFields
   330  
   331  	Entry []*GeoIP `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
   332  }
   333  
   334  func (x *GeoIPList) Reset() {
   335  	*x = GeoIPList{}
   336  	if protoimpl.UnsafeEnabled {
   337  		mi := &file_app_router_config_proto_msgTypes[3]
   338  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   339  		ms.StoreMessageInfo(mi)
   340  	}
   341  }
   342  
   343  func (x *GeoIPList) String() string {
   344  	return protoimpl.X.MessageStringOf(x)
   345  }
   346  
   347  func (*GeoIPList) ProtoMessage() {}
   348  
   349  func (x *GeoIPList) ProtoReflect() protoreflect.Message {
   350  	mi := &file_app_router_config_proto_msgTypes[3]
   351  	if protoimpl.UnsafeEnabled && x != nil {
   352  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   353  		if ms.LoadMessageInfo() == nil {
   354  			ms.StoreMessageInfo(mi)
   355  		}
   356  		return ms
   357  	}
   358  	return mi.MessageOf(x)
   359  }
   360  
   361  // Deprecated: Use GeoIPList.ProtoReflect.Descriptor instead.
   362  func (*GeoIPList) Descriptor() ([]byte, []int) {
   363  	return file_app_router_config_proto_rawDescGZIP(), []int{3}
   364  }
   365  
   366  func (x *GeoIPList) GetEntry() []*GeoIP {
   367  	if x != nil {
   368  		return x.Entry
   369  	}
   370  	return nil
   371  }
   372  
   373  type GeoSite struct {
   374  	state         protoimpl.MessageState
   375  	sizeCache     protoimpl.SizeCache
   376  	unknownFields protoimpl.UnknownFields
   377  
   378  	CountryCode string    `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
   379  	Domain      []*Domain `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"`
   380  }
   381  
   382  func (x *GeoSite) Reset() {
   383  	*x = GeoSite{}
   384  	if protoimpl.UnsafeEnabled {
   385  		mi := &file_app_router_config_proto_msgTypes[4]
   386  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   387  		ms.StoreMessageInfo(mi)
   388  	}
   389  }
   390  
   391  func (x *GeoSite) String() string {
   392  	return protoimpl.X.MessageStringOf(x)
   393  }
   394  
   395  func (*GeoSite) ProtoMessage() {}
   396  
   397  func (x *GeoSite) ProtoReflect() protoreflect.Message {
   398  	mi := &file_app_router_config_proto_msgTypes[4]
   399  	if protoimpl.UnsafeEnabled && x != nil {
   400  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   401  		if ms.LoadMessageInfo() == nil {
   402  			ms.StoreMessageInfo(mi)
   403  		}
   404  		return ms
   405  	}
   406  	return mi.MessageOf(x)
   407  }
   408  
   409  // Deprecated: Use GeoSite.ProtoReflect.Descriptor instead.
   410  func (*GeoSite) Descriptor() ([]byte, []int) {
   411  	return file_app_router_config_proto_rawDescGZIP(), []int{4}
   412  }
   413  
   414  func (x *GeoSite) GetCountryCode() string {
   415  	if x != nil {
   416  		return x.CountryCode
   417  	}
   418  	return ""
   419  }
   420  
   421  func (x *GeoSite) GetDomain() []*Domain {
   422  	if x != nil {
   423  		return x.Domain
   424  	}
   425  	return nil
   426  }
   427  
   428  type GeoSiteList struct {
   429  	state         protoimpl.MessageState
   430  	sizeCache     protoimpl.SizeCache
   431  	unknownFields protoimpl.UnknownFields
   432  
   433  	Entry []*GeoSite `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
   434  }
   435  
   436  func (x *GeoSiteList) Reset() {
   437  	*x = GeoSiteList{}
   438  	if protoimpl.UnsafeEnabled {
   439  		mi := &file_app_router_config_proto_msgTypes[5]
   440  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   441  		ms.StoreMessageInfo(mi)
   442  	}
   443  }
   444  
   445  func (x *GeoSiteList) String() string {
   446  	return protoimpl.X.MessageStringOf(x)
   447  }
   448  
   449  func (*GeoSiteList) ProtoMessage() {}
   450  
   451  func (x *GeoSiteList) ProtoReflect() protoreflect.Message {
   452  	mi := &file_app_router_config_proto_msgTypes[5]
   453  	if protoimpl.UnsafeEnabled && x != nil {
   454  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   455  		if ms.LoadMessageInfo() == nil {
   456  			ms.StoreMessageInfo(mi)
   457  		}
   458  		return ms
   459  	}
   460  	return mi.MessageOf(x)
   461  }
   462  
   463  // Deprecated: Use GeoSiteList.ProtoReflect.Descriptor instead.
   464  func (*GeoSiteList) Descriptor() ([]byte, []int) {
   465  	return file_app_router_config_proto_rawDescGZIP(), []int{5}
   466  }
   467  
   468  func (x *GeoSiteList) GetEntry() []*GeoSite {
   469  	if x != nil {
   470  		return x.Entry
   471  	}
   472  	return nil
   473  }
   474  
   475  type RoutingRule struct {
   476  	state         protoimpl.MessageState
   477  	sizeCache     protoimpl.SizeCache
   478  	unknownFields protoimpl.UnknownFields
   479  
   480  	// Types that are assignable to TargetTag:
   481  	//
   482  	//	*RoutingRule_Tag
   483  	//	*RoutingRule_BalancingTag
   484  	TargetTag isRoutingRule_TargetTag `protobuf_oneof:"target_tag"`
   485  	RuleTag   string                  `protobuf:"bytes,18,opt,name=rule_tag,json=ruleTag,proto3" json:"rule_tag,omitempty"`
   486  	// List of domains for target domain matching.
   487  	Domain []*Domain `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"`
   488  	// List of CIDRs for target IP address matching.
   489  	// Deprecated. Use geoip below.
   490  	//
   491  	// Deprecated: Marked as deprecated in app/router/config.proto.
   492  	Cidr []*CIDR `protobuf:"bytes,3,rep,name=cidr,proto3" json:"cidr,omitempty"`
   493  	// List of GeoIPs for target IP address matching. If this entry exists, the
   494  	// cidr above will have no effect. GeoIP fields with the same country code are
   495  	// supposed to contain exactly same content. They will be merged during
   496  	// runtime. For customized GeoIPs, please leave country code empty.
   497  	Geoip []*GeoIP `protobuf:"bytes,10,rep,name=geoip,proto3" json:"geoip,omitempty"`
   498  	// A range of port [from, to]. If the destination port is in this range, this
   499  	// rule takes effect. Deprecated. Use port_list.
   500  	//
   501  	// Deprecated: Marked as deprecated in app/router/config.proto.
   502  	PortRange *net.PortRange `protobuf:"bytes,4,opt,name=port_range,json=portRange,proto3" json:"port_range,omitempty"`
   503  	// List of ports.
   504  	PortList *net.PortList `protobuf:"bytes,14,opt,name=port_list,json=portList,proto3" json:"port_list,omitempty"`
   505  	// List of networks. Deprecated. Use networks.
   506  	//
   507  	// Deprecated: Marked as deprecated in app/router/config.proto.
   508  	NetworkList *net.NetworkList `protobuf:"bytes,5,opt,name=network_list,json=networkList,proto3" json:"network_list,omitempty"`
   509  	// List of networks for matching.
   510  	Networks []net.Network `protobuf:"varint,13,rep,packed,name=networks,proto3,enum=xray.common.net.Network" json:"networks,omitempty"`
   511  	// List of CIDRs for source IP address matching.
   512  	//
   513  	// Deprecated: Marked as deprecated in app/router/config.proto.
   514  	SourceCidr []*CIDR `protobuf:"bytes,6,rep,name=source_cidr,json=sourceCidr,proto3" json:"source_cidr,omitempty"`
   515  	// List of GeoIPs for source IP address matching. If this entry exists, the
   516  	// source_cidr above will have no effect.
   517  	SourceGeoip []*GeoIP `protobuf:"bytes,11,rep,name=source_geoip,json=sourceGeoip,proto3" json:"source_geoip,omitempty"`
   518  	// List of ports for source port matching.
   519  	SourcePortList *net.PortList     `protobuf:"bytes,16,opt,name=source_port_list,json=sourcePortList,proto3" json:"source_port_list,omitempty"`
   520  	UserEmail      []string          `protobuf:"bytes,7,rep,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"`
   521  	InboundTag     []string          `protobuf:"bytes,8,rep,name=inbound_tag,json=inboundTag,proto3" json:"inbound_tag,omitempty"`
   522  	Protocol       []string          `protobuf:"bytes,9,rep,name=protocol,proto3" json:"protocol,omitempty"`
   523  	Attributes     map[string]string `protobuf:"bytes,15,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   524  	DomainMatcher  string            `protobuf:"bytes,17,opt,name=domain_matcher,json=domainMatcher,proto3" json:"domain_matcher,omitempty"`
   525  }
   526  
   527  func (x *RoutingRule) Reset() {
   528  	*x = RoutingRule{}
   529  	if protoimpl.UnsafeEnabled {
   530  		mi := &file_app_router_config_proto_msgTypes[6]
   531  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   532  		ms.StoreMessageInfo(mi)
   533  	}
   534  }
   535  
   536  func (x *RoutingRule) String() string {
   537  	return protoimpl.X.MessageStringOf(x)
   538  }
   539  
   540  func (*RoutingRule) ProtoMessage() {}
   541  
   542  func (x *RoutingRule) ProtoReflect() protoreflect.Message {
   543  	mi := &file_app_router_config_proto_msgTypes[6]
   544  	if protoimpl.UnsafeEnabled && x != nil {
   545  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   546  		if ms.LoadMessageInfo() == nil {
   547  			ms.StoreMessageInfo(mi)
   548  		}
   549  		return ms
   550  	}
   551  	return mi.MessageOf(x)
   552  }
   553  
   554  // Deprecated: Use RoutingRule.ProtoReflect.Descriptor instead.
   555  func (*RoutingRule) Descriptor() ([]byte, []int) {
   556  	return file_app_router_config_proto_rawDescGZIP(), []int{6}
   557  }
   558  
   559  func (m *RoutingRule) GetTargetTag() isRoutingRule_TargetTag {
   560  	if m != nil {
   561  		return m.TargetTag
   562  	}
   563  	return nil
   564  }
   565  
   566  func (x *RoutingRule) GetTag() string {
   567  	if x, ok := x.GetTargetTag().(*RoutingRule_Tag); ok {
   568  		return x.Tag
   569  	}
   570  	return ""
   571  }
   572  
   573  func (x *RoutingRule) GetBalancingTag() string {
   574  	if x, ok := x.GetTargetTag().(*RoutingRule_BalancingTag); ok {
   575  		return x.BalancingTag
   576  	}
   577  	return ""
   578  }
   579  
   580  func (x *RoutingRule) GetRuleTag() string {
   581  	if x != nil {
   582  		return x.RuleTag
   583  	}
   584  	return ""
   585  }
   586  
   587  func (x *RoutingRule) GetDomain() []*Domain {
   588  	if x != nil {
   589  		return x.Domain
   590  	}
   591  	return nil
   592  }
   593  
   594  // Deprecated: Marked as deprecated in app/router/config.proto.
   595  func (x *RoutingRule) GetCidr() []*CIDR {
   596  	if x != nil {
   597  		return x.Cidr
   598  	}
   599  	return nil
   600  }
   601  
   602  func (x *RoutingRule) GetGeoip() []*GeoIP {
   603  	if x != nil {
   604  		return x.Geoip
   605  	}
   606  	return nil
   607  }
   608  
   609  // Deprecated: Marked as deprecated in app/router/config.proto.
   610  func (x *RoutingRule) GetPortRange() *net.PortRange {
   611  	if x != nil {
   612  		return x.PortRange
   613  	}
   614  	return nil
   615  }
   616  
   617  func (x *RoutingRule) GetPortList() *net.PortList {
   618  	if x != nil {
   619  		return x.PortList
   620  	}
   621  	return nil
   622  }
   623  
   624  // Deprecated: Marked as deprecated in app/router/config.proto.
   625  func (x *RoutingRule) GetNetworkList() *net.NetworkList {
   626  	if x != nil {
   627  		return x.NetworkList
   628  	}
   629  	return nil
   630  }
   631  
   632  func (x *RoutingRule) GetNetworks() []net.Network {
   633  	if x != nil {
   634  		return x.Networks
   635  	}
   636  	return nil
   637  }
   638  
   639  // Deprecated: Marked as deprecated in app/router/config.proto.
   640  func (x *RoutingRule) GetSourceCidr() []*CIDR {
   641  	if x != nil {
   642  		return x.SourceCidr
   643  	}
   644  	return nil
   645  }
   646  
   647  func (x *RoutingRule) GetSourceGeoip() []*GeoIP {
   648  	if x != nil {
   649  		return x.SourceGeoip
   650  	}
   651  	return nil
   652  }
   653  
   654  func (x *RoutingRule) GetSourcePortList() *net.PortList {
   655  	if x != nil {
   656  		return x.SourcePortList
   657  	}
   658  	return nil
   659  }
   660  
   661  func (x *RoutingRule) GetUserEmail() []string {
   662  	if x != nil {
   663  		return x.UserEmail
   664  	}
   665  	return nil
   666  }
   667  
   668  func (x *RoutingRule) GetInboundTag() []string {
   669  	if x != nil {
   670  		return x.InboundTag
   671  	}
   672  	return nil
   673  }
   674  
   675  func (x *RoutingRule) GetProtocol() []string {
   676  	if x != nil {
   677  		return x.Protocol
   678  	}
   679  	return nil
   680  }
   681  
   682  func (x *RoutingRule) GetAttributes() map[string]string {
   683  	if x != nil {
   684  		return x.Attributes
   685  	}
   686  	return nil
   687  }
   688  
   689  func (x *RoutingRule) GetDomainMatcher() string {
   690  	if x != nil {
   691  		return x.DomainMatcher
   692  	}
   693  	return ""
   694  }
   695  
   696  type isRoutingRule_TargetTag interface {
   697  	isRoutingRule_TargetTag()
   698  }
   699  
   700  type RoutingRule_Tag struct {
   701  	// Tag of outbound that this rule is pointing to.
   702  	Tag string `protobuf:"bytes,1,opt,name=tag,proto3,oneof"`
   703  }
   704  
   705  type RoutingRule_BalancingTag struct {
   706  	// Tag of routing balancer.
   707  	BalancingTag string `protobuf:"bytes,12,opt,name=balancing_tag,json=balancingTag,proto3,oneof"`
   708  }
   709  
   710  func (*RoutingRule_Tag) isRoutingRule_TargetTag() {}
   711  
   712  func (*RoutingRule_BalancingTag) isRoutingRule_TargetTag() {}
   713  
   714  type BalancingRule struct {
   715  	state         protoimpl.MessageState
   716  	sizeCache     protoimpl.SizeCache
   717  	unknownFields protoimpl.UnknownFields
   718  
   719  	Tag              string               `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
   720  	OutboundSelector []string             `protobuf:"bytes,2,rep,name=outbound_selector,json=outboundSelector,proto3" json:"outbound_selector,omitempty"`
   721  	Strategy         string               `protobuf:"bytes,3,opt,name=strategy,proto3" json:"strategy,omitempty"`
   722  	StrategySettings *serial.TypedMessage `protobuf:"bytes,4,opt,name=strategy_settings,json=strategySettings,proto3" json:"strategy_settings,omitempty"`
   723  	FallbackTag      string               `protobuf:"bytes,5,opt,name=fallback_tag,json=fallbackTag,proto3" json:"fallback_tag,omitempty"`
   724  }
   725  
   726  func (x *BalancingRule) Reset() {
   727  	*x = BalancingRule{}
   728  	if protoimpl.UnsafeEnabled {
   729  		mi := &file_app_router_config_proto_msgTypes[7]
   730  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   731  		ms.StoreMessageInfo(mi)
   732  	}
   733  }
   734  
   735  func (x *BalancingRule) String() string {
   736  	return protoimpl.X.MessageStringOf(x)
   737  }
   738  
   739  func (*BalancingRule) ProtoMessage() {}
   740  
   741  func (x *BalancingRule) ProtoReflect() protoreflect.Message {
   742  	mi := &file_app_router_config_proto_msgTypes[7]
   743  	if protoimpl.UnsafeEnabled && x != nil {
   744  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   745  		if ms.LoadMessageInfo() == nil {
   746  			ms.StoreMessageInfo(mi)
   747  		}
   748  		return ms
   749  	}
   750  	return mi.MessageOf(x)
   751  }
   752  
   753  // Deprecated: Use BalancingRule.ProtoReflect.Descriptor instead.
   754  func (*BalancingRule) Descriptor() ([]byte, []int) {
   755  	return file_app_router_config_proto_rawDescGZIP(), []int{7}
   756  }
   757  
   758  func (x *BalancingRule) GetTag() string {
   759  	if x != nil {
   760  		return x.Tag
   761  	}
   762  	return ""
   763  }
   764  
   765  func (x *BalancingRule) GetOutboundSelector() []string {
   766  	if x != nil {
   767  		return x.OutboundSelector
   768  	}
   769  	return nil
   770  }
   771  
   772  func (x *BalancingRule) GetStrategy() string {
   773  	if x != nil {
   774  		return x.Strategy
   775  	}
   776  	return ""
   777  }
   778  
   779  func (x *BalancingRule) GetStrategySettings() *serial.TypedMessage {
   780  	if x != nil {
   781  		return x.StrategySettings
   782  	}
   783  	return nil
   784  }
   785  
   786  func (x *BalancingRule) GetFallbackTag() string {
   787  	if x != nil {
   788  		return x.FallbackTag
   789  	}
   790  	return ""
   791  }
   792  
   793  type StrategyWeight struct {
   794  	state         protoimpl.MessageState
   795  	sizeCache     protoimpl.SizeCache
   796  	unknownFields protoimpl.UnknownFields
   797  
   798  	Regexp bool    `protobuf:"varint,1,opt,name=regexp,proto3" json:"regexp,omitempty"`
   799  	Match  string  `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"`
   800  	Value  float32 `protobuf:"fixed32,3,opt,name=value,proto3" json:"value,omitempty"`
   801  }
   802  
   803  func (x *StrategyWeight) Reset() {
   804  	*x = StrategyWeight{}
   805  	if protoimpl.UnsafeEnabled {
   806  		mi := &file_app_router_config_proto_msgTypes[8]
   807  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   808  		ms.StoreMessageInfo(mi)
   809  	}
   810  }
   811  
   812  func (x *StrategyWeight) String() string {
   813  	return protoimpl.X.MessageStringOf(x)
   814  }
   815  
   816  func (*StrategyWeight) ProtoMessage() {}
   817  
   818  func (x *StrategyWeight) ProtoReflect() protoreflect.Message {
   819  	mi := &file_app_router_config_proto_msgTypes[8]
   820  	if protoimpl.UnsafeEnabled && x != nil {
   821  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   822  		if ms.LoadMessageInfo() == nil {
   823  			ms.StoreMessageInfo(mi)
   824  		}
   825  		return ms
   826  	}
   827  	return mi.MessageOf(x)
   828  }
   829  
   830  // Deprecated: Use StrategyWeight.ProtoReflect.Descriptor instead.
   831  func (*StrategyWeight) Descriptor() ([]byte, []int) {
   832  	return file_app_router_config_proto_rawDescGZIP(), []int{8}
   833  }
   834  
   835  func (x *StrategyWeight) GetRegexp() bool {
   836  	if x != nil {
   837  		return x.Regexp
   838  	}
   839  	return false
   840  }
   841  
   842  func (x *StrategyWeight) GetMatch() string {
   843  	if x != nil {
   844  		return x.Match
   845  	}
   846  	return ""
   847  }
   848  
   849  func (x *StrategyWeight) GetValue() float32 {
   850  	if x != nil {
   851  		return x.Value
   852  	}
   853  	return 0
   854  }
   855  
   856  type StrategyLeastLoadConfig struct {
   857  	state         protoimpl.MessageState
   858  	sizeCache     protoimpl.SizeCache
   859  	unknownFields protoimpl.UnknownFields
   860  
   861  	// weight settings
   862  	Costs []*StrategyWeight `protobuf:"bytes,2,rep,name=costs,proto3" json:"costs,omitempty"`
   863  	// RTT baselines for selecting, int64 values of time.Duration
   864  	Baselines []int64 `protobuf:"varint,3,rep,packed,name=baselines,proto3" json:"baselines,omitempty"`
   865  	// expected nodes count to select
   866  	Expected int32 `protobuf:"varint,4,opt,name=expected,proto3" json:"expected,omitempty"`
   867  	// max acceptable rtt, filter away high delay nodes. defalut 0
   868  	MaxRTT int64 `protobuf:"varint,5,opt,name=maxRTT,proto3" json:"maxRTT,omitempty"`
   869  	// acceptable failure rate
   870  	Tolerance float32 `protobuf:"fixed32,6,opt,name=tolerance,proto3" json:"tolerance,omitempty"`
   871  }
   872  
   873  func (x *StrategyLeastLoadConfig) Reset() {
   874  	*x = StrategyLeastLoadConfig{}
   875  	if protoimpl.UnsafeEnabled {
   876  		mi := &file_app_router_config_proto_msgTypes[9]
   877  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   878  		ms.StoreMessageInfo(mi)
   879  	}
   880  }
   881  
   882  func (x *StrategyLeastLoadConfig) String() string {
   883  	return protoimpl.X.MessageStringOf(x)
   884  }
   885  
   886  func (*StrategyLeastLoadConfig) ProtoMessage() {}
   887  
   888  func (x *StrategyLeastLoadConfig) ProtoReflect() protoreflect.Message {
   889  	mi := &file_app_router_config_proto_msgTypes[9]
   890  	if protoimpl.UnsafeEnabled && x != nil {
   891  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   892  		if ms.LoadMessageInfo() == nil {
   893  			ms.StoreMessageInfo(mi)
   894  		}
   895  		return ms
   896  	}
   897  	return mi.MessageOf(x)
   898  }
   899  
   900  // Deprecated: Use StrategyLeastLoadConfig.ProtoReflect.Descriptor instead.
   901  func (*StrategyLeastLoadConfig) Descriptor() ([]byte, []int) {
   902  	return file_app_router_config_proto_rawDescGZIP(), []int{9}
   903  }
   904  
   905  func (x *StrategyLeastLoadConfig) GetCosts() []*StrategyWeight {
   906  	if x != nil {
   907  		return x.Costs
   908  	}
   909  	return nil
   910  }
   911  
   912  func (x *StrategyLeastLoadConfig) GetBaselines() []int64 {
   913  	if x != nil {
   914  		return x.Baselines
   915  	}
   916  	return nil
   917  }
   918  
   919  func (x *StrategyLeastLoadConfig) GetExpected() int32 {
   920  	if x != nil {
   921  		return x.Expected
   922  	}
   923  	return 0
   924  }
   925  
   926  func (x *StrategyLeastLoadConfig) GetMaxRTT() int64 {
   927  	if x != nil {
   928  		return x.MaxRTT
   929  	}
   930  	return 0
   931  }
   932  
   933  func (x *StrategyLeastLoadConfig) GetTolerance() float32 {
   934  	if x != nil {
   935  		return x.Tolerance
   936  	}
   937  	return 0
   938  }
   939  
   940  type Config struct {
   941  	state         protoimpl.MessageState
   942  	sizeCache     protoimpl.SizeCache
   943  	unknownFields protoimpl.UnknownFields
   944  
   945  	DomainStrategy Config_DomainStrategy `protobuf:"varint,1,opt,name=domain_strategy,json=domainStrategy,proto3,enum=xray.app.router.Config_DomainStrategy" json:"domain_strategy,omitempty"`
   946  	Rule           []*RoutingRule        `protobuf:"bytes,2,rep,name=rule,proto3" json:"rule,omitempty"`
   947  	BalancingRule  []*BalancingRule      `protobuf:"bytes,3,rep,name=balancing_rule,json=balancingRule,proto3" json:"balancing_rule,omitempty"`
   948  }
   949  
   950  func (x *Config) Reset() {
   951  	*x = Config{}
   952  	if protoimpl.UnsafeEnabled {
   953  		mi := &file_app_router_config_proto_msgTypes[10]
   954  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   955  		ms.StoreMessageInfo(mi)
   956  	}
   957  }
   958  
   959  func (x *Config) String() string {
   960  	return protoimpl.X.MessageStringOf(x)
   961  }
   962  
   963  func (*Config) ProtoMessage() {}
   964  
   965  func (x *Config) ProtoReflect() protoreflect.Message {
   966  	mi := &file_app_router_config_proto_msgTypes[10]
   967  	if protoimpl.UnsafeEnabled && x != nil {
   968  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   969  		if ms.LoadMessageInfo() == nil {
   970  			ms.StoreMessageInfo(mi)
   971  		}
   972  		return ms
   973  	}
   974  	return mi.MessageOf(x)
   975  }
   976  
   977  // Deprecated: Use Config.ProtoReflect.Descriptor instead.
   978  func (*Config) Descriptor() ([]byte, []int) {
   979  	return file_app_router_config_proto_rawDescGZIP(), []int{10}
   980  }
   981  
   982  func (x *Config) GetDomainStrategy() Config_DomainStrategy {
   983  	if x != nil {
   984  		return x.DomainStrategy
   985  	}
   986  	return Config_AsIs
   987  }
   988  
   989  func (x *Config) GetRule() []*RoutingRule {
   990  	if x != nil {
   991  		return x.Rule
   992  	}
   993  	return nil
   994  }
   995  
   996  func (x *Config) GetBalancingRule() []*BalancingRule {
   997  	if x != nil {
   998  		return x.BalancingRule
   999  	}
  1000  	return nil
  1001  }
  1002  
  1003  type Domain_Attribute struct {
  1004  	state         protoimpl.MessageState
  1005  	sizeCache     protoimpl.SizeCache
  1006  	unknownFields protoimpl.UnknownFields
  1007  
  1008  	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
  1009  	// Types that are assignable to TypedValue:
  1010  	//
  1011  	//	*Domain_Attribute_BoolValue
  1012  	//	*Domain_Attribute_IntValue
  1013  	TypedValue isDomain_Attribute_TypedValue `protobuf_oneof:"typed_value"`
  1014  }
  1015  
  1016  func (x *Domain_Attribute) Reset() {
  1017  	*x = Domain_Attribute{}
  1018  	if protoimpl.UnsafeEnabled {
  1019  		mi := &file_app_router_config_proto_msgTypes[11]
  1020  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1021  		ms.StoreMessageInfo(mi)
  1022  	}
  1023  }
  1024  
  1025  func (x *Domain_Attribute) String() string {
  1026  	return protoimpl.X.MessageStringOf(x)
  1027  }
  1028  
  1029  func (*Domain_Attribute) ProtoMessage() {}
  1030  
  1031  func (x *Domain_Attribute) ProtoReflect() protoreflect.Message {
  1032  	mi := &file_app_router_config_proto_msgTypes[11]
  1033  	if protoimpl.UnsafeEnabled && x != nil {
  1034  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1035  		if ms.LoadMessageInfo() == nil {
  1036  			ms.StoreMessageInfo(mi)
  1037  		}
  1038  		return ms
  1039  	}
  1040  	return mi.MessageOf(x)
  1041  }
  1042  
  1043  // Deprecated: Use Domain_Attribute.ProtoReflect.Descriptor instead.
  1044  func (*Domain_Attribute) Descriptor() ([]byte, []int) {
  1045  	return file_app_router_config_proto_rawDescGZIP(), []int{0, 0}
  1046  }
  1047  
  1048  func (x *Domain_Attribute) GetKey() string {
  1049  	if x != nil {
  1050  		return x.Key
  1051  	}
  1052  	return ""
  1053  }
  1054  
  1055  func (m *Domain_Attribute) GetTypedValue() isDomain_Attribute_TypedValue {
  1056  	if m != nil {
  1057  		return m.TypedValue
  1058  	}
  1059  	return nil
  1060  }
  1061  
  1062  func (x *Domain_Attribute) GetBoolValue() bool {
  1063  	if x, ok := x.GetTypedValue().(*Domain_Attribute_BoolValue); ok {
  1064  		return x.BoolValue
  1065  	}
  1066  	return false
  1067  }
  1068  
  1069  func (x *Domain_Attribute) GetIntValue() int64 {
  1070  	if x, ok := x.GetTypedValue().(*Domain_Attribute_IntValue); ok {
  1071  		return x.IntValue
  1072  	}
  1073  	return 0
  1074  }
  1075  
  1076  type isDomain_Attribute_TypedValue interface {
  1077  	isDomain_Attribute_TypedValue()
  1078  }
  1079  
  1080  type Domain_Attribute_BoolValue struct {
  1081  	BoolValue bool `protobuf:"varint,2,opt,name=bool_value,json=boolValue,proto3,oneof"`
  1082  }
  1083  
  1084  type Domain_Attribute_IntValue struct {
  1085  	IntValue int64 `protobuf:"varint,3,opt,name=int_value,json=intValue,proto3,oneof"`
  1086  }
  1087  
  1088  func (*Domain_Attribute_BoolValue) isDomain_Attribute_TypedValue() {}
  1089  
  1090  func (*Domain_Attribute_IntValue) isDomain_Attribute_TypedValue() {}
  1091  
  1092  var File_app_router_config_proto protoreflect.FileDescriptor
  1093  
  1094  var file_app_router_config_proto_rawDesc = []byte{
  1095  	0x0a, 0x17, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2f, 0x63, 0x6f, 0x6e,
  1096  	0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x78, 0x72, 0x61, 0x79, 0x2e,
  1097  	0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d,
  1098  	0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f,
  1099  	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x63,
  1100  	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70,
  1101  	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74,
  1102  	0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb3,
  1103  	0x02, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70,
  1104  	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61,
  1105  	0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
  1106  	0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76,
  1107  	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
  1108  	0x65, 0x12, 0x3f, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x03,
  1109  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e,
  1110  	0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x41, 0x74,
  1111  	0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
  1112  	0x74, 0x65, 0x1a, 0x6c, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12,
  1113  	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
  1114  	0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
  1115  	0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c,
  1116  	0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
  1117  	0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75,
  1118  	0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
  1119  	0x22, 0x32, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x6c, 0x61, 0x69,
  1120  	0x6e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x10, 0x01, 0x12, 0x0a,
  1121  	0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x75,
  1122  	0x6c, 0x6c, 0x10, 0x03, 0x22, 0x2e, 0x0a, 0x04, 0x43, 0x49, 0x44, 0x52, 0x12, 0x0e, 0x0a, 0x02,
  1123  	0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06,
  1124  	0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x70, 0x72,
  1125  	0x65, 0x66, 0x69, 0x78, 0x22, 0x7a, 0x0a, 0x05, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x12, 0x21, 0x0a,
  1126  	0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
  1127  	0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65,
  1128  	0x12, 0x29, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15,
  1129  	0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
  1130  	0x2e, 0x43, 0x49, 0x44, 0x52, 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72,
  1131  	0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01,
  1132  	0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68,
  1133  	0x22, 0x39, 0x0a, 0x09, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a,
  1134  	0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78,
  1135  	0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x47,
  1136  	0x65, 0x6f, 0x49, 0x50, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x5d, 0x0a, 0x07, 0x47,
  1137  	0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72,
  1138  	0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f,
  1139  	0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x64, 0x6f, 0x6d,
  1140  	0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x72, 0x61, 0x79,
  1141  	0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61,
  1142  	0x69, 0x6e, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x3d, 0x0a, 0x0b, 0x47, 0x65,
  1143  	0x6f, 0x53, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x6e, 0x74,
  1144  	0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e,
  1145  	0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x6f, 0x53, 0x69,
  1146  	0x74, 0x65, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xbd, 0x07, 0x0a, 0x0b, 0x52, 0x6f,
  1147  	0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x74, 0x61, 0x67,
  1148  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x25, 0x0a,
  1149  	0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x0c,
  1150  	0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e,
  1151  	0x67, 0x54, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x67,
  1152  	0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x67, 0x12,
  1153  	0x2f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
  1154  	0x17, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
  1155  	0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
  1156  	0x12, 0x2d, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15,
  1157  	0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
  1158  	0x2e, 0x43, 0x49, 0x44, 0x52, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12,
  1159  	0x2c, 0x0a, 0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16,
  1160  	0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
  1161  	0x2e, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x52, 0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x12, 0x3d, 0x0a,
  1162  	0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
  1163  	0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
  1164  	0x6e, 0x65, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x02, 0x18,
  1165  	0x01, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09,
  1166  	0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32,
  1167  	0x19, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65,
  1168  	0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74,
  1169  	0x4c, 0x69, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f,
  1170  	0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x72, 0x61,
  1171  	0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74,
  1172  	0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x6e, 0x65,
  1173  	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x08, 0x6e, 0x65, 0x74,
  1174  	0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x78, 0x72,
  1175  	0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65,
  1176  	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12,
  1177  	0x3a, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x69, 0x64, 0x72, 0x18, 0x06,
  1178  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e,
  1179  	0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x49, 0x44, 0x52, 0x42, 0x02, 0x18, 0x01, 0x52,
  1180  	0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x69, 0x64, 0x72, 0x12, 0x39, 0x0a, 0x0c, 0x73,
  1181  	0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x18, 0x0b, 0x20, 0x03, 0x28,
  1182  	0x0b, 0x32, 0x16, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75,
  1183  	0x74, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63,
  1184  	0x65, 0x47, 0x65, 0x6f, 0x69, 0x70, 0x12, 0x43, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
  1185  	0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
  1186  	0x32, 0x19, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e,
  1187  	0x65, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0e, 0x73, 0x6f, 0x75,
  1188  	0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75,
  1189  	0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52,
  1190  	0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e,
  1191  	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52,
  1192  	0x0a, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70,
  1193  	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70,
  1194  	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x4c, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69,
  1195  	0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x72,
  1196  	0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f,
  1197  	0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
  1198  	0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69,
  1199  	0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f,
  1200  	0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64,
  1201  	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x1a, 0x3d, 0x0a, 0x0f,
  1202  	0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
  1203  	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
  1204  	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  1205  	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x74,
  1206  	0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x22, 0xdc, 0x01, 0x0a, 0x0d, 0x42, 0x61,
  1207  	0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74,
  1208  	0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x2b, 0x0a,
  1209  	0x11, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
  1210  	0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75,
  1211  	0x6e, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74,
  1212  	0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74,
  1213  	0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x4d, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65,
  1214  	0x67, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
  1215  	0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
  1216  	0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
  1217  	0x61, 0x67, 0x65, 0x52, 0x10, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x53, 0x65, 0x74,
  1218  	0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63,
  1219  	0x6b, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x61, 0x6c,
  1220  	0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x61, 0x67, 0x22, 0x54, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x61,
  1221  	0x74, 0x65, 0x67, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65,
  1222  	0x67, 0x65, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x67, 0x65,
  1223  	0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
  1224  	0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
  1225  	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc0,
  1226  	0x01, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x4c, 0x65, 0x61, 0x73, 0x74,
  1227  	0x4c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x6f,
  1228  	0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x72, 0x61, 0x79,
  1229  	0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x61,
  1230  	0x74, 0x65, 0x67, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x05, 0x63, 0x6f, 0x73, 0x74,
  1231  	0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03,
  1232  	0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12,
  1233  	0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
  1234  	0x05, 0x52, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d,
  1235  	0x61, 0x78, 0x52, 0x54, 0x54, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x78,
  1236  	0x52, 0x54, 0x54, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65,
  1237  	0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63,
  1238  	0x65, 0x22, 0x9b, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x0f,
  1239  	0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18,
  1240  	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70,
  1241  	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44,
  1242  	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0e, 0x64,
  1243  	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x30, 0x0a,
  1244  	0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x72,
  1245  	0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f,
  1246  	0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12,
  1247  	0x45, 0x0a, 0x0e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c,
  1248  	0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61,
  1249  	0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
  1250  	0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69,
  1251  	0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x22, 0x47, 0x0a, 0x0e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
  1252  	0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x73, 0x49, 0x73,
  1253  	0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x49, 0x70, 0x10, 0x01, 0x12, 0x10, 0x0a,
  1254  	0x0c, 0x49, 0x70, 0x49, 0x66, 0x4e, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x02, 0x12,
  1255  	0x0e, 0x0a, 0x0a, 0x49, 0x70, 0x4f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x10, 0x03, 0x42,
  1256  	0x4f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e,
  1257  	0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x50, 0x01, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
  1258  	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63,
  1259  	0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0xaa, 0x02,
  1260  	0x0f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72,
  1261  	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  1262  }
  1263  
  1264  var (
  1265  	file_app_router_config_proto_rawDescOnce sync.Once
  1266  	file_app_router_config_proto_rawDescData = file_app_router_config_proto_rawDesc
  1267  )
  1268  
  1269  func file_app_router_config_proto_rawDescGZIP() []byte {
  1270  	file_app_router_config_proto_rawDescOnce.Do(func() {
  1271  		file_app_router_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_router_config_proto_rawDescData)
  1272  	})
  1273  	return file_app_router_config_proto_rawDescData
  1274  }
  1275  
  1276  var file_app_router_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
  1277  var file_app_router_config_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
  1278  var file_app_router_config_proto_goTypes = []interface{}{
  1279  	(Domain_Type)(0),                // 0: xray.app.router.Domain.Type
  1280  	(Config_DomainStrategy)(0),      // 1: xray.app.router.Config.DomainStrategy
  1281  	(*Domain)(nil),                  // 2: xray.app.router.Domain
  1282  	(*CIDR)(nil),                    // 3: xray.app.router.CIDR
  1283  	(*GeoIP)(nil),                   // 4: xray.app.router.GeoIP
  1284  	(*GeoIPList)(nil),               // 5: xray.app.router.GeoIPList
  1285  	(*GeoSite)(nil),                 // 6: xray.app.router.GeoSite
  1286  	(*GeoSiteList)(nil),             // 7: xray.app.router.GeoSiteList
  1287  	(*RoutingRule)(nil),             // 8: xray.app.router.RoutingRule
  1288  	(*BalancingRule)(nil),           // 9: xray.app.router.BalancingRule
  1289  	(*StrategyWeight)(nil),          // 10: xray.app.router.StrategyWeight
  1290  	(*StrategyLeastLoadConfig)(nil), // 11: xray.app.router.StrategyLeastLoadConfig
  1291  	(*Config)(nil),                  // 12: xray.app.router.Config
  1292  	(*Domain_Attribute)(nil),        // 13: xray.app.router.Domain.Attribute
  1293  	nil,                             // 14: xray.app.router.RoutingRule.AttributesEntry
  1294  	(*net.PortRange)(nil),           // 15: xray.common.net.PortRange
  1295  	(*net.PortList)(nil),            // 16: xray.common.net.PortList
  1296  	(*net.NetworkList)(nil),         // 17: xray.common.net.NetworkList
  1297  	(net.Network)(0),                // 18: xray.common.net.Network
  1298  	(*serial.TypedMessage)(nil),     // 19: xray.common.serial.TypedMessage
  1299  }
  1300  var file_app_router_config_proto_depIdxs = []int32{
  1301  	0,  // 0: xray.app.router.Domain.type:type_name -> xray.app.router.Domain.Type
  1302  	13, // 1: xray.app.router.Domain.attribute:type_name -> xray.app.router.Domain.Attribute
  1303  	3,  // 2: xray.app.router.GeoIP.cidr:type_name -> xray.app.router.CIDR
  1304  	4,  // 3: xray.app.router.GeoIPList.entry:type_name -> xray.app.router.GeoIP
  1305  	2,  // 4: xray.app.router.GeoSite.domain:type_name -> xray.app.router.Domain
  1306  	6,  // 5: xray.app.router.GeoSiteList.entry:type_name -> xray.app.router.GeoSite
  1307  	2,  // 6: xray.app.router.RoutingRule.domain:type_name -> xray.app.router.Domain
  1308  	3,  // 7: xray.app.router.RoutingRule.cidr:type_name -> xray.app.router.CIDR
  1309  	4,  // 8: xray.app.router.RoutingRule.geoip:type_name -> xray.app.router.GeoIP
  1310  	15, // 9: xray.app.router.RoutingRule.port_range:type_name -> xray.common.net.PortRange
  1311  	16, // 10: xray.app.router.RoutingRule.port_list:type_name -> xray.common.net.PortList
  1312  	17, // 11: xray.app.router.RoutingRule.network_list:type_name -> xray.common.net.NetworkList
  1313  	18, // 12: xray.app.router.RoutingRule.networks:type_name -> xray.common.net.Network
  1314  	3,  // 13: xray.app.router.RoutingRule.source_cidr:type_name -> xray.app.router.CIDR
  1315  	4,  // 14: xray.app.router.RoutingRule.source_geoip:type_name -> xray.app.router.GeoIP
  1316  	16, // 15: xray.app.router.RoutingRule.source_port_list:type_name -> xray.common.net.PortList
  1317  	14, // 16: xray.app.router.RoutingRule.attributes:type_name -> xray.app.router.RoutingRule.AttributesEntry
  1318  	19, // 17: xray.app.router.BalancingRule.strategy_settings:type_name -> xray.common.serial.TypedMessage
  1319  	10, // 18: xray.app.router.StrategyLeastLoadConfig.costs:type_name -> xray.app.router.StrategyWeight
  1320  	1,  // 19: xray.app.router.Config.domain_strategy:type_name -> xray.app.router.Config.DomainStrategy
  1321  	8,  // 20: xray.app.router.Config.rule:type_name -> xray.app.router.RoutingRule
  1322  	9,  // 21: xray.app.router.Config.balancing_rule:type_name -> xray.app.router.BalancingRule
  1323  	22, // [22:22] is the sub-list for method output_type
  1324  	22, // [22:22] is the sub-list for method input_type
  1325  	22, // [22:22] is the sub-list for extension type_name
  1326  	22, // [22:22] is the sub-list for extension extendee
  1327  	0,  // [0:22] is the sub-list for field type_name
  1328  }
  1329  
  1330  func init() { file_app_router_config_proto_init() }
  1331  func file_app_router_config_proto_init() {
  1332  	if File_app_router_config_proto != nil {
  1333  		return
  1334  	}
  1335  	if !protoimpl.UnsafeEnabled {
  1336  		file_app_router_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  1337  			switch v := v.(*Domain); i {
  1338  			case 0:
  1339  				return &v.state
  1340  			case 1:
  1341  				return &v.sizeCache
  1342  			case 2:
  1343  				return &v.unknownFields
  1344  			default:
  1345  				return nil
  1346  			}
  1347  		}
  1348  		file_app_router_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  1349  			switch v := v.(*CIDR); i {
  1350  			case 0:
  1351  				return &v.state
  1352  			case 1:
  1353  				return &v.sizeCache
  1354  			case 2:
  1355  				return &v.unknownFields
  1356  			default:
  1357  				return nil
  1358  			}
  1359  		}
  1360  		file_app_router_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  1361  			switch v := v.(*GeoIP); i {
  1362  			case 0:
  1363  				return &v.state
  1364  			case 1:
  1365  				return &v.sizeCache
  1366  			case 2:
  1367  				return &v.unknownFields
  1368  			default:
  1369  				return nil
  1370  			}
  1371  		}
  1372  		file_app_router_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  1373  			switch v := v.(*GeoIPList); i {
  1374  			case 0:
  1375  				return &v.state
  1376  			case 1:
  1377  				return &v.sizeCache
  1378  			case 2:
  1379  				return &v.unknownFields
  1380  			default:
  1381  				return nil
  1382  			}
  1383  		}
  1384  		file_app_router_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  1385  			switch v := v.(*GeoSite); i {
  1386  			case 0:
  1387  				return &v.state
  1388  			case 1:
  1389  				return &v.sizeCache
  1390  			case 2:
  1391  				return &v.unknownFields
  1392  			default:
  1393  				return nil
  1394  			}
  1395  		}
  1396  		file_app_router_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  1397  			switch v := v.(*GeoSiteList); i {
  1398  			case 0:
  1399  				return &v.state
  1400  			case 1:
  1401  				return &v.sizeCache
  1402  			case 2:
  1403  				return &v.unknownFields
  1404  			default:
  1405  				return nil
  1406  			}
  1407  		}
  1408  		file_app_router_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  1409  			switch v := v.(*RoutingRule); i {
  1410  			case 0:
  1411  				return &v.state
  1412  			case 1:
  1413  				return &v.sizeCache
  1414  			case 2:
  1415  				return &v.unknownFields
  1416  			default:
  1417  				return nil
  1418  			}
  1419  		}
  1420  		file_app_router_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  1421  			switch v := v.(*BalancingRule); i {
  1422  			case 0:
  1423  				return &v.state
  1424  			case 1:
  1425  				return &v.sizeCache
  1426  			case 2:
  1427  				return &v.unknownFields
  1428  			default:
  1429  				return nil
  1430  			}
  1431  		}
  1432  		file_app_router_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  1433  			switch v := v.(*StrategyWeight); i {
  1434  			case 0:
  1435  				return &v.state
  1436  			case 1:
  1437  				return &v.sizeCache
  1438  			case 2:
  1439  				return &v.unknownFields
  1440  			default:
  1441  				return nil
  1442  			}
  1443  		}
  1444  		file_app_router_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  1445  			switch v := v.(*StrategyLeastLoadConfig); i {
  1446  			case 0:
  1447  				return &v.state
  1448  			case 1:
  1449  				return &v.sizeCache
  1450  			case 2:
  1451  				return &v.unknownFields
  1452  			default:
  1453  				return nil
  1454  			}
  1455  		}
  1456  		file_app_router_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  1457  			switch v := v.(*Config); i {
  1458  			case 0:
  1459  				return &v.state
  1460  			case 1:
  1461  				return &v.sizeCache
  1462  			case 2:
  1463  				return &v.unknownFields
  1464  			default:
  1465  				return nil
  1466  			}
  1467  		}
  1468  		file_app_router_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  1469  			switch v := v.(*Domain_Attribute); i {
  1470  			case 0:
  1471  				return &v.state
  1472  			case 1:
  1473  				return &v.sizeCache
  1474  			case 2:
  1475  				return &v.unknownFields
  1476  			default:
  1477  				return nil
  1478  			}
  1479  		}
  1480  	}
  1481  	file_app_router_config_proto_msgTypes[6].OneofWrappers = []interface{}{
  1482  		(*RoutingRule_Tag)(nil),
  1483  		(*RoutingRule_BalancingTag)(nil),
  1484  	}
  1485  	file_app_router_config_proto_msgTypes[11].OneofWrappers = []interface{}{
  1486  		(*Domain_Attribute_BoolValue)(nil),
  1487  		(*Domain_Attribute_IntValue)(nil),
  1488  	}
  1489  	type x struct{}
  1490  	out := protoimpl.TypeBuilder{
  1491  		File: protoimpl.DescBuilder{
  1492  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  1493  			RawDescriptor: file_app_router_config_proto_rawDesc,
  1494  			NumEnums:      2,
  1495  			NumMessages:   13,
  1496  			NumExtensions: 0,
  1497  			NumServices:   0,
  1498  		},
  1499  		GoTypes:           file_app_router_config_proto_goTypes,
  1500  		DependencyIndexes: file_app_router_config_proto_depIdxs,
  1501  		EnumInfos:         file_app_router_config_proto_enumTypes,
  1502  		MessageInfos:      file_app_router_config_proto_msgTypes,
  1503  	}.Build()
  1504  	File_app_router_config_proto = out.File
  1505  	file_app_router_config_proto_rawDesc = nil
  1506  	file_app_router_config_proto_goTypes = nil
  1507  	file_app_router_config_proto_depIdxs = nil
  1508  }