// Code generated by protoc-gen-go. DO NOT EDIT.
// source: envoy/api/v3alpha/route/route.proto

package envoy_api_v3alpha_route

import (
	fmt "fmt"
	core "github.com/envoyproxy/go-control-plane/envoy/api/v3alpha/core"
	v3alpha "github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3alpha"
	v3alpha1 "github.com/envoyproxy/go-control-plane/envoy/type/v3alpha"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	proto "github.com/golang/protobuf/proto"
	any "github.com/golang/protobuf/ptypes/any"
	duration "github.com/golang/protobuf/ptypes/duration"
	_ "github.com/golang/protobuf/ptypes/struct"
	wrappers "github.com/golang/protobuf/ptypes/wrappers"
	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.ProtoPackageIsVersion3 // please upgrade the proto package

type VirtualHost_TlsRequirementType int32

const (
	VirtualHost_NONE          VirtualHost_TlsRequirementType = 0
	VirtualHost_EXTERNAL_ONLY VirtualHost_TlsRequirementType = 1
	VirtualHost_ALL           VirtualHost_TlsRequirementType = 2
)

var VirtualHost_TlsRequirementType_name = map[int32]string{
	0: "NONE",
	1: "EXTERNAL_ONLY",
	2: "ALL",
}

var VirtualHost_TlsRequirementType_value = map[string]int32{
	"NONE":          0,
	"EXTERNAL_ONLY": 1,
	"ALL":           2,
}

func (x VirtualHost_TlsRequirementType) String() string {
	return proto.EnumName(VirtualHost_TlsRequirementType_name, int32(x))
}

func (VirtualHost_TlsRequirementType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{0, 0}
}

type RouteAction_ClusterNotFoundResponseCode int32

const (
	RouteAction_SERVICE_UNAVAILABLE RouteAction_ClusterNotFoundResponseCode = 0
	RouteAction_NOT_FOUND           RouteAction_ClusterNotFoundResponseCode = 1
)

var RouteAction_ClusterNotFoundResponseCode_name = map[int32]string{
	0: "SERVICE_UNAVAILABLE",
	1: "NOT_FOUND",
}

var RouteAction_ClusterNotFoundResponseCode_value = map[string]int32{
	"SERVICE_UNAVAILABLE": 0,
	"NOT_FOUND":           1,
}

func (x RouteAction_ClusterNotFoundResponseCode) String() string {
	return proto.EnumName(RouteAction_ClusterNotFoundResponseCode_name, int32(x))
}

func (RouteAction_ClusterNotFoundResponseCode) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{5, 0}
}

type RouteAction_InternalRedirectAction int32

const (
	RouteAction_PASS_THROUGH_INTERNAL_REDIRECT RouteAction_InternalRedirectAction = 0
	RouteAction_HANDLE_INTERNAL_REDIRECT       RouteAction_InternalRedirectAction = 1
)

var RouteAction_InternalRedirectAction_name = map[int32]string{
	0: "PASS_THROUGH_INTERNAL_REDIRECT",
	1: "HANDLE_INTERNAL_REDIRECT",
}

var RouteAction_InternalRedirectAction_value = map[string]int32{
	"PASS_THROUGH_INTERNAL_REDIRECT": 0,
	"HANDLE_INTERNAL_REDIRECT":       1,
}

func (x RouteAction_InternalRedirectAction) String() string {
	return proto.EnumName(RouteAction_InternalRedirectAction_name, int32(x))
}

func (RouteAction_InternalRedirectAction) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{5, 1}
}

type RedirectAction_RedirectResponseCode int32

const (
	RedirectAction_MOVED_PERMANENTLY  RedirectAction_RedirectResponseCode = 0
	RedirectAction_FOUND              RedirectAction_RedirectResponseCode = 1
	RedirectAction_SEE_OTHER          RedirectAction_RedirectResponseCode = 2
	RedirectAction_TEMPORARY_REDIRECT RedirectAction_RedirectResponseCode = 3
	RedirectAction_PERMANENT_REDIRECT RedirectAction_RedirectResponseCode = 4
)

var RedirectAction_RedirectResponseCode_name = map[int32]string{
	0: "MOVED_PERMANENTLY",
	1: "FOUND",
	2: "SEE_OTHER",
	3: "TEMPORARY_REDIRECT",
	4: "PERMANENT_REDIRECT",
}

var RedirectAction_RedirectResponseCode_value = map[string]int32{
	"MOVED_PERMANENTLY":  0,
	"FOUND":              1,
	"SEE_OTHER":          2,
	"TEMPORARY_REDIRECT": 3,
	"PERMANENT_REDIRECT": 4,
}

func (x RedirectAction_RedirectResponseCode) String() string {
	return proto.EnumName(RedirectAction_RedirectResponseCode_name, int32(x))
}

func (RedirectAction_RedirectResponseCode) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{8, 0}
}

type VirtualHost struct {
	Name                       string                         `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Domains                    []string                       `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"`
	Routes                     []*Route                       `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"`
	RequireTls                 VirtualHost_TlsRequirementType `protobuf:"varint,4,opt,name=require_tls,json=requireTls,proto3,enum=envoy.api.v3alpha.route.VirtualHost_TlsRequirementType" json:"require_tls,omitempty"`
	VirtualClusters            []*VirtualCluster              `protobuf:"bytes,5,rep,name=virtual_clusters,json=virtualClusters,proto3" json:"virtual_clusters,omitempty"`
	RateLimits                 []*RateLimit                   `protobuf:"bytes,6,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"`
	RequestHeadersToAdd        []*core.HeaderValueOption      `protobuf:"bytes,7,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"`
	RequestHeadersToRemove     []string                       `protobuf:"bytes,13,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"`
	ResponseHeadersToAdd       []*core.HeaderValueOption      `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"`
	ResponseHeadersToRemove    []string                       `protobuf:"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"`
	Cors                       *CorsPolicy                    `protobuf:"bytes,8,opt,name=cors,proto3" json:"cors,omitempty"`
	TypedPerFilterConfig       map[string]*any.Any            `protobuf:"bytes,15,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	IncludeRequestAttemptCount bool                           `protobuf:"varint,14,opt,name=include_request_attempt_count,json=includeRequestAttemptCount,proto3" json:"include_request_attempt_count,omitempty"`
	RetryPolicy                *RetryPolicy                   `protobuf:"bytes,16,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"`
	HedgePolicy                *HedgePolicy                   `protobuf:"bytes,17,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"`
	PerRequestBufferLimitBytes *wrappers.UInt32Value          `protobuf:"bytes,18,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"`
	XXX_NoUnkeyedLiteral       struct{}                       `json:"-"`
	XXX_unrecognized           []byte                         `json:"-"`
	XXX_sizecache              int32                          `json:"-"`
}

func (m *VirtualHost) Reset()         { *m = VirtualHost{} }
func (m *VirtualHost) String() string { return proto.CompactTextString(m) }
func (*VirtualHost) ProtoMessage()    {}
func (*VirtualHost) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{0}
}

func (m *VirtualHost) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_VirtualHost.Unmarshal(m, b)
}
func (m *VirtualHost) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_VirtualHost.Marshal(b, m, deterministic)
}
func (m *VirtualHost) XXX_Merge(src proto.Message) {
	xxx_messageInfo_VirtualHost.Merge(m, src)
}
func (m *VirtualHost) XXX_Size() int {
	return xxx_messageInfo_VirtualHost.Size(m)
}
func (m *VirtualHost) XXX_DiscardUnknown() {
	xxx_messageInfo_VirtualHost.DiscardUnknown(m)
}

var xxx_messageInfo_VirtualHost proto.InternalMessageInfo

func (m *VirtualHost) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *VirtualHost) GetDomains() []string {
	if m != nil {
		return m.Domains
	}
	return nil
}

func (m *VirtualHost) GetRoutes() []*Route {
	if m != nil {
		return m.Routes
	}
	return nil
}

func (m *VirtualHost) GetRequireTls() VirtualHost_TlsRequirementType {
	if m != nil {
		return m.RequireTls
	}
	return VirtualHost_NONE
}

func (m *VirtualHost) GetVirtualClusters() []*VirtualCluster {
	if m != nil {
		return m.VirtualClusters
	}
	return nil
}

func (m *VirtualHost) GetRateLimits() []*RateLimit {
	if m != nil {
		return m.RateLimits
	}
	return nil
}

func (m *VirtualHost) GetRequestHeadersToAdd() []*core.HeaderValueOption {
	if m != nil {
		return m.RequestHeadersToAdd
	}
	return nil
}

func (m *VirtualHost) GetRequestHeadersToRemove() []string {
	if m != nil {
		return m.RequestHeadersToRemove
	}
	return nil
}

func (m *VirtualHost) GetResponseHeadersToAdd() []*core.HeaderValueOption {
	if m != nil {
		return m.ResponseHeadersToAdd
	}
	return nil
}

func (m *VirtualHost) GetResponseHeadersToRemove() []string {
	if m != nil {
		return m.ResponseHeadersToRemove
	}
	return nil
}

func (m *VirtualHost) GetCors() *CorsPolicy {
	if m != nil {
		return m.Cors
	}
	return nil
}

func (m *VirtualHost) GetTypedPerFilterConfig() map[string]*any.Any {
	if m != nil {
		return m.TypedPerFilterConfig
	}
	return nil
}

func (m *VirtualHost) GetIncludeRequestAttemptCount() bool {
	if m != nil {
		return m.IncludeRequestAttemptCount
	}
	return false
}

func (m *VirtualHost) GetRetryPolicy() *RetryPolicy {
	if m != nil {
		return m.RetryPolicy
	}
	return nil
}

func (m *VirtualHost) GetHedgePolicy() *HedgePolicy {
	if m != nil {
		return m.HedgePolicy
	}
	return nil
}

func (m *VirtualHost) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value {
	if m != nil {
		return m.PerRequestBufferLimitBytes
	}
	return nil
}

type Route struct {
	Name  string      `protobuf:"bytes,14,opt,name=name,proto3" json:"name,omitempty"`
	Match *RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"`
	// Types that are valid to be assigned to Action:
	//	*Route_Route
	//	*Route_Redirect
	//	*Route_DirectResponse
	Action                     isRoute_Action            `protobuf_oneof:"action"`
	Metadata                   *core.Metadata            `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
	Decorator                  *Decorator                `protobuf:"bytes,5,opt,name=decorator,proto3" json:"decorator,omitempty"`
	TypedPerFilterConfig       map[string]*any.Any       `protobuf:"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	RequestHeadersToAdd        []*core.HeaderValueOption `protobuf:"bytes,9,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"`
	RequestHeadersToRemove     []string                  `protobuf:"bytes,12,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"`
	ResponseHeadersToAdd       []*core.HeaderValueOption `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"`
	ResponseHeadersToRemove    []string                  `protobuf:"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"`
	Tracing                    *Tracing                  `protobuf:"bytes,15,opt,name=tracing,proto3" json:"tracing,omitempty"`
	PerRequestBufferLimitBytes *wrappers.UInt32Value     `protobuf:"bytes,16,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"`
	XXX_NoUnkeyedLiteral       struct{}                  `json:"-"`
	XXX_unrecognized           []byte                    `json:"-"`
	XXX_sizecache              int32                     `json:"-"`
}

func (m *Route) Reset()         { *m = Route{} }
func (m *Route) String() string { return proto.CompactTextString(m) }
func (*Route) ProtoMessage()    {}
func (*Route) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{1}
}

func (m *Route) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Route.Unmarshal(m, b)
}
func (m *Route) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Route.Marshal(b, m, deterministic)
}
func (m *Route) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Route.Merge(m, src)
}
func (m *Route) XXX_Size() int {
	return xxx_messageInfo_Route.Size(m)
}
func (m *Route) XXX_DiscardUnknown() {
	xxx_messageInfo_Route.DiscardUnknown(m)
}

var xxx_messageInfo_Route proto.InternalMessageInfo

func (m *Route) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Route) GetMatch() *RouteMatch {
	if m != nil {
		return m.Match
	}
	return nil
}

type isRoute_Action interface {
	isRoute_Action()
}

type Route_Route struct {
	Route *RouteAction `protobuf:"bytes,2,opt,name=route,proto3,oneof"`
}

type Route_Redirect struct {
	Redirect *RedirectAction `protobuf:"bytes,3,opt,name=redirect,proto3,oneof"`
}

type Route_DirectResponse struct {
	DirectResponse *DirectResponseAction `protobuf:"bytes,7,opt,name=direct_response,json=directResponse,proto3,oneof"`
}

func (*Route_Route) isRoute_Action() {}

func (*Route_Redirect) isRoute_Action() {}

func (*Route_DirectResponse) isRoute_Action() {}

func (m *Route) GetAction() isRoute_Action {
	if m != nil {
		return m.Action
	}
	return nil
}

func (m *Route) GetRoute() *RouteAction {
	if x, ok := m.GetAction().(*Route_Route); ok {
		return x.Route
	}
	return nil
}

func (m *Route) GetRedirect() *RedirectAction {
	if x, ok := m.GetAction().(*Route_Redirect); ok {
		return x.Redirect
	}
	return nil
}

func (m *Route) GetDirectResponse() *DirectResponseAction {
	if x, ok := m.GetAction().(*Route_DirectResponse); ok {
		return x.DirectResponse
	}
	return nil
}

func (m *Route) GetMetadata() *core.Metadata {
	if m != nil {
		return m.Metadata
	}
	return nil
}

func (m *Route) GetDecorator() *Decorator {
	if m != nil {
		return m.Decorator
	}
	return nil
}

func (m *Route) GetTypedPerFilterConfig() map[string]*any.Any {
	if m != nil {
		return m.TypedPerFilterConfig
	}
	return nil
}

func (m *Route) GetRequestHeadersToAdd() []*core.HeaderValueOption {
	if m != nil {
		return m.RequestHeadersToAdd
	}
	return nil
}

func (m *Route) GetRequestHeadersToRemove() []string {
	if m != nil {
		return m.RequestHeadersToRemove
	}
	return nil
}

func (m *Route) GetResponseHeadersToAdd() []*core.HeaderValueOption {
	if m != nil {
		return m.ResponseHeadersToAdd
	}
	return nil
}

func (m *Route) GetResponseHeadersToRemove() []string {
	if m != nil {
		return m.ResponseHeadersToRemove
	}
	return nil
}

func (m *Route) GetTracing() *Tracing {
	if m != nil {
		return m.Tracing
	}
	return nil
}

func (m *Route) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value {
	if m != nil {
		return m.PerRequestBufferLimitBytes
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*Route) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*Route_Route)(nil),
		(*Route_Redirect)(nil),
		(*Route_DirectResponse)(nil),
	}
}

type WeightedCluster struct {
	Clusters             []*WeightedCluster_ClusterWeight `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
	TotalWeight          *wrappers.UInt32Value            `protobuf:"bytes,3,opt,name=total_weight,json=totalWeight,proto3" json:"total_weight,omitempty"`
	RuntimeKeyPrefix     string                           `protobuf:"bytes,2,opt,name=runtime_key_prefix,json=runtimeKeyPrefix,proto3" json:"runtime_key_prefix,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
	XXX_unrecognized     []byte                           `json:"-"`
	XXX_sizecache        int32                            `json:"-"`
}

func (m *WeightedCluster) Reset()         { *m = WeightedCluster{} }
func (m *WeightedCluster) String() string { return proto.CompactTextString(m) }
func (*WeightedCluster) ProtoMessage()    {}
func (*WeightedCluster) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{2}
}

func (m *WeightedCluster) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_WeightedCluster.Unmarshal(m, b)
}
func (m *WeightedCluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_WeightedCluster.Marshal(b, m, deterministic)
}
func (m *WeightedCluster) XXX_Merge(src proto.Message) {
	xxx_messageInfo_WeightedCluster.Merge(m, src)
}
func (m *WeightedCluster) XXX_Size() int {
	return xxx_messageInfo_WeightedCluster.Size(m)
}
func (m *WeightedCluster) XXX_DiscardUnknown() {
	xxx_messageInfo_WeightedCluster.DiscardUnknown(m)
}

var xxx_messageInfo_WeightedCluster proto.InternalMessageInfo

func (m *WeightedCluster) GetClusters() []*WeightedCluster_ClusterWeight {
	if m != nil {
		return m.Clusters
	}
	return nil
}

func (m *WeightedCluster) GetTotalWeight() *wrappers.UInt32Value {
	if m != nil {
		return m.TotalWeight
	}
	return nil
}

func (m *WeightedCluster) GetRuntimeKeyPrefix() string {
	if m != nil {
		return m.RuntimeKeyPrefix
	}
	return ""
}

type WeightedCluster_ClusterWeight struct {
	Name                    string                    `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Weight                  *wrappers.UInt32Value     `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"`
	MetadataMatch           *core.Metadata            `protobuf:"bytes,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"`
	RequestHeadersToAdd     []*core.HeaderValueOption `protobuf:"bytes,4,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"`
	RequestHeadersToRemove  []string                  `protobuf:"bytes,9,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"`
	ResponseHeadersToAdd    []*core.HeaderValueOption `protobuf:"bytes,5,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"`
	ResponseHeadersToRemove []string                  `protobuf:"bytes,6,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"`
	TypedPerFilterConfig    map[string]*any.Any       `protobuf:"bytes,10,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral    struct{}                  `json:"-"`
	XXX_unrecognized        []byte                    `json:"-"`
	XXX_sizecache           int32                     `json:"-"`
}

func (m *WeightedCluster_ClusterWeight) Reset()         { *m = WeightedCluster_ClusterWeight{} }
func (m *WeightedCluster_ClusterWeight) String() string { return proto.CompactTextString(m) }
func (*WeightedCluster_ClusterWeight) ProtoMessage()    {}
func (*WeightedCluster_ClusterWeight) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{2, 0}
}

func (m *WeightedCluster_ClusterWeight) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_WeightedCluster_ClusterWeight.Unmarshal(m, b)
}
func (m *WeightedCluster_ClusterWeight) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_WeightedCluster_ClusterWeight.Marshal(b, m, deterministic)
}
func (m *WeightedCluster_ClusterWeight) XXX_Merge(src proto.Message) {
	xxx_messageInfo_WeightedCluster_ClusterWeight.Merge(m, src)
}
func (m *WeightedCluster_ClusterWeight) XXX_Size() int {
	return xxx_messageInfo_WeightedCluster_ClusterWeight.Size(m)
}
func (m *WeightedCluster_ClusterWeight) XXX_DiscardUnknown() {
	xxx_messageInfo_WeightedCluster_ClusterWeight.DiscardUnknown(m)
}

var xxx_messageInfo_WeightedCluster_ClusterWeight proto.InternalMessageInfo

func (m *WeightedCluster_ClusterWeight) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *WeightedCluster_ClusterWeight) GetWeight() *wrappers.UInt32Value {
	if m != nil {
		return m.Weight
	}
	return nil
}

func (m *WeightedCluster_ClusterWeight) GetMetadataMatch() *core.Metadata {
	if m != nil {
		return m.MetadataMatch
	}
	return nil
}

func (m *WeightedCluster_ClusterWeight) GetRequestHeadersToAdd() []*core.HeaderValueOption {
	if m != nil {
		return m.RequestHeadersToAdd
	}
	return nil
}

func (m *WeightedCluster_ClusterWeight) GetRequestHeadersToRemove() []string {
	if m != nil {
		return m.RequestHeadersToRemove
	}
	return nil
}

func (m *WeightedCluster_ClusterWeight) GetResponseHeadersToAdd() []*core.HeaderValueOption {
	if m != nil {
		return m.ResponseHeadersToAdd
	}
	return nil
}

func (m *WeightedCluster_ClusterWeight) GetResponseHeadersToRemove() []string {
	if m != nil {
		return m.ResponseHeadersToRemove
	}
	return nil
}

func (m *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*any.Any {
	if m != nil {
		return m.TypedPerFilterConfig
	}
	return nil
}

type RouteMatch struct {
	// Types that are valid to be assigned to PathSpecifier:
	//	*RouteMatch_Prefix
	//	*RouteMatch_Path
	//	*RouteMatch_SafeRegex
	PathSpecifier        isRouteMatch_PathSpecifier         `protobuf_oneof:"path_specifier"`
	CaseSensitive        *wrappers.BoolValue                `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"`
	RuntimeFraction      *core.RuntimeFractionalPercent     `protobuf:"bytes,9,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"`
	Headers              []*HeaderMatcher                   `protobuf:"bytes,6,rep,name=headers,proto3" json:"headers,omitempty"`
	QueryParameters      []*QueryParameterMatcher           `protobuf:"bytes,7,rep,name=query_parameters,json=queryParameters,proto3" json:"query_parameters,omitempty"`
	Grpc                 *RouteMatch_GrpcRouteMatchOptions  `protobuf:"bytes,8,opt,name=grpc,proto3" json:"grpc,omitempty"`
	TlsContext           *RouteMatch_TlsContextMatchOptions `protobuf:"bytes,11,opt,name=tls_context,json=tlsContext,proto3" json:"tls_context,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
	XXX_unrecognized     []byte                             `json:"-"`
	XXX_sizecache        int32                              `json:"-"`
}

func (m *RouteMatch) Reset()         { *m = RouteMatch{} }
func (m *RouteMatch) String() string { return proto.CompactTextString(m) }
func (*RouteMatch) ProtoMessage()    {}
func (*RouteMatch) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{3}
}

func (m *RouteMatch) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteMatch.Unmarshal(m, b)
}
func (m *RouteMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteMatch.Marshal(b, m, deterministic)
}
func (m *RouteMatch) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteMatch.Merge(m, src)
}
func (m *RouteMatch) XXX_Size() int {
	return xxx_messageInfo_RouteMatch.Size(m)
}
func (m *RouteMatch) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteMatch.DiscardUnknown(m)
}

var xxx_messageInfo_RouteMatch proto.InternalMessageInfo

type isRouteMatch_PathSpecifier interface {
	isRouteMatch_PathSpecifier()
}

type RouteMatch_Prefix struct {
	Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3,oneof"`
}

type RouteMatch_Path struct {
	Path string `protobuf:"bytes,2,opt,name=path,proto3,oneof"`
}

type RouteMatch_SafeRegex struct {
	SafeRegex *v3alpha.RegexMatcher `protobuf:"bytes,10,opt,name=safe_regex,json=safeRegex,proto3,oneof"`
}

func (*RouteMatch_Prefix) isRouteMatch_PathSpecifier() {}

func (*RouteMatch_Path) isRouteMatch_PathSpecifier() {}

func (*RouteMatch_SafeRegex) isRouteMatch_PathSpecifier() {}

func (m *RouteMatch) GetPathSpecifier() isRouteMatch_PathSpecifier {
	if m != nil {
		return m.PathSpecifier
	}
	return nil
}

func (m *RouteMatch) GetPrefix() string {
	if x, ok := m.GetPathSpecifier().(*RouteMatch_Prefix); ok {
		return x.Prefix
	}
	return ""
}

func (m *RouteMatch) GetPath() string {
	if x, ok := m.GetPathSpecifier().(*RouteMatch_Path); ok {
		return x.Path
	}
	return ""
}

func (m *RouteMatch) GetSafeRegex() *v3alpha.RegexMatcher {
	if x, ok := m.GetPathSpecifier().(*RouteMatch_SafeRegex); ok {
		return x.SafeRegex
	}
	return nil
}

func (m *RouteMatch) GetCaseSensitive() *wrappers.BoolValue {
	if m != nil {
		return m.CaseSensitive
	}
	return nil
}

func (m *RouteMatch) GetRuntimeFraction() *core.RuntimeFractionalPercent {
	if m != nil {
		return m.RuntimeFraction
	}
	return nil
}

func (m *RouteMatch) GetHeaders() []*HeaderMatcher {
	if m != nil {
		return m.Headers
	}
	return nil
}

func (m *RouteMatch) GetQueryParameters() []*QueryParameterMatcher {
	if m != nil {
		return m.QueryParameters
	}
	return nil
}

func (m *RouteMatch) GetGrpc() *RouteMatch_GrpcRouteMatchOptions {
	if m != nil {
		return m.Grpc
	}
	return nil
}

func (m *RouteMatch) GetTlsContext() *RouteMatch_TlsContextMatchOptions {
	if m != nil {
		return m.TlsContext
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*RouteMatch) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*RouteMatch_Prefix)(nil),
		(*RouteMatch_Path)(nil),
		(*RouteMatch_SafeRegex)(nil),
	}
}

type RouteMatch_GrpcRouteMatchOptions struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RouteMatch_GrpcRouteMatchOptions) Reset()         { *m = RouteMatch_GrpcRouteMatchOptions{} }
func (m *RouteMatch_GrpcRouteMatchOptions) String() string { return proto.CompactTextString(m) }
func (*RouteMatch_GrpcRouteMatchOptions) ProtoMessage()    {}
func (*RouteMatch_GrpcRouteMatchOptions) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{3, 0}
}

func (m *RouteMatch_GrpcRouteMatchOptions) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteMatch_GrpcRouteMatchOptions.Unmarshal(m, b)
}
func (m *RouteMatch_GrpcRouteMatchOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteMatch_GrpcRouteMatchOptions.Marshal(b, m, deterministic)
}
func (m *RouteMatch_GrpcRouteMatchOptions) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteMatch_GrpcRouteMatchOptions.Merge(m, src)
}
func (m *RouteMatch_GrpcRouteMatchOptions) XXX_Size() int {
	return xxx_messageInfo_RouteMatch_GrpcRouteMatchOptions.Size(m)
}
func (m *RouteMatch_GrpcRouteMatchOptions) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteMatch_GrpcRouteMatchOptions.DiscardUnknown(m)
}

var xxx_messageInfo_RouteMatch_GrpcRouteMatchOptions proto.InternalMessageInfo

type RouteMatch_TlsContextMatchOptions struct {
	Presented            *wrappers.BoolValue `protobuf:"bytes,1,opt,name=presented,proto3" json:"presented,omitempty"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

func (m *RouteMatch_TlsContextMatchOptions) Reset()         { *m = RouteMatch_TlsContextMatchOptions{} }
func (m *RouteMatch_TlsContextMatchOptions) String() string { return proto.CompactTextString(m) }
func (*RouteMatch_TlsContextMatchOptions) ProtoMessage()    {}
func (*RouteMatch_TlsContextMatchOptions) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{3, 1}
}

func (m *RouteMatch_TlsContextMatchOptions) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteMatch_TlsContextMatchOptions.Unmarshal(m, b)
}
func (m *RouteMatch_TlsContextMatchOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteMatch_TlsContextMatchOptions.Marshal(b, m, deterministic)
}
func (m *RouteMatch_TlsContextMatchOptions) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteMatch_TlsContextMatchOptions.Merge(m, src)
}
func (m *RouteMatch_TlsContextMatchOptions) XXX_Size() int {
	return xxx_messageInfo_RouteMatch_TlsContextMatchOptions.Size(m)
}
func (m *RouteMatch_TlsContextMatchOptions) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteMatch_TlsContextMatchOptions.DiscardUnknown(m)
}

var xxx_messageInfo_RouteMatch_TlsContextMatchOptions proto.InternalMessageInfo

func (m *RouteMatch_TlsContextMatchOptions) GetPresented() *wrappers.BoolValue {
	if m != nil {
		return m.Presented
	}
	return nil
}

type CorsPolicy struct {
	AllowOriginStringMatch []*v3alpha.StringMatcher `protobuf:"bytes,11,rep,name=allow_origin_string_match,json=allowOriginStringMatch,proto3" json:"allow_origin_string_match,omitempty"`
	AllowMethods           string                   `protobuf:"bytes,2,opt,name=allow_methods,json=allowMethods,proto3" json:"allow_methods,omitempty"`
	AllowHeaders           string                   `protobuf:"bytes,3,opt,name=allow_headers,json=allowHeaders,proto3" json:"allow_headers,omitempty"`
	ExposeHeaders          string                   `protobuf:"bytes,4,opt,name=expose_headers,json=exposeHeaders,proto3" json:"expose_headers,omitempty"`
	MaxAge                 string                   `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"`
	AllowCredentials       *wrappers.BoolValue      `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"`
	// Types that are valid to be assigned to EnabledSpecifier:
	//	*CorsPolicy_FilterEnabled
	EnabledSpecifier     isCorsPolicy_EnabledSpecifier  `protobuf_oneof:"enabled_specifier"`
	ShadowEnabled        *core.RuntimeFractionalPercent `protobuf:"bytes,10,opt,name=shadow_enabled,json=shadowEnabled,proto3" json:"shadow_enabled,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
	XXX_unrecognized     []byte                         `json:"-"`
	XXX_sizecache        int32                          `json:"-"`
}

func (m *CorsPolicy) Reset()         { *m = CorsPolicy{} }
func (m *CorsPolicy) String() string { return proto.CompactTextString(m) }
func (*CorsPolicy) ProtoMessage()    {}
func (*CorsPolicy) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{4}
}

func (m *CorsPolicy) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CorsPolicy.Unmarshal(m, b)
}
func (m *CorsPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CorsPolicy.Marshal(b, m, deterministic)
}
func (m *CorsPolicy) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CorsPolicy.Merge(m, src)
}
func (m *CorsPolicy) XXX_Size() int {
	return xxx_messageInfo_CorsPolicy.Size(m)
}
func (m *CorsPolicy) XXX_DiscardUnknown() {
	xxx_messageInfo_CorsPolicy.DiscardUnknown(m)
}

var xxx_messageInfo_CorsPolicy proto.InternalMessageInfo

func (m *CorsPolicy) GetAllowOriginStringMatch() []*v3alpha.StringMatcher {
	if m != nil {
		return m.AllowOriginStringMatch
	}
	return nil
}

func (m *CorsPolicy) GetAllowMethods() string {
	if m != nil {
		return m.AllowMethods
	}
	return ""
}

func (m *CorsPolicy) GetAllowHeaders() string {
	if m != nil {
		return m.AllowHeaders
	}
	return ""
}

func (m *CorsPolicy) GetExposeHeaders() string {
	if m != nil {
		return m.ExposeHeaders
	}
	return ""
}

func (m *CorsPolicy) GetMaxAge() string {
	if m != nil {
		return m.MaxAge
	}
	return ""
}

func (m *CorsPolicy) GetAllowCredentials() *wrappers.BoolValue {
	if m != nil {
		return m.AllowCredentials
	}
	return nil
}

type isCorsPolicy_EnabledSpecifier interface {
	isCorsPolicy_EnabledSpecifier()
}

type CorsPolicy_FilterEnabled struct {
	FilterEnabled *core.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=filter_enabled,json=filterEnabled,proto3,oneof"`
}

func (*CorsPolicy_FilterEnabled) isCorsPolicy_EnabledSpecifier() {}

func (m *CorsPolicy) GetEnabledSpecifier() isCorsPolicy_EnabledSpecifier {
	if m != nil {
		return m.EnabledSpecifier
	}
	return nil
}

func (m *CorsPolicy) GetFilterEnabled() *core.RuntimeFractionalPercent {
	if x, ok := m.GetEnabledSpecifier().(*CorsPolicy_FilterEnabled); ok {
		return x.FilterEnabled
	}
	return nil
}

func (m *CorsPolicy) GetShadowEnabled() *core.RuntimeFractionalPercent {
	if m != nil {
		return m.ShadowEnabled
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*CorsPolicy) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*CorsPolicy_FilterEnabled)(nil),
	}
}

type RouteAction struct {
	// Types that are valid to be assigned to ClusterSpecifier:
	//	*RouteAction_Cluster
	//	*RouteAction_ClusterHeader
	//	*RouteAction_WeightedClusters
	ClusterSpecifier            isRouteAction_ClusterSpecifier          `protobuf_oneof:"cluster_specifier"`
	ClusterNotFoundResponseCode RouteAction_ClusterNotFoundResponseCode `protobuf:"varint,20,opt,name=cluster_not_found_response_code,json=clusterNotFoundResponseCode,proto3,enum=envoy.api.v3alpha.route.RouteAction_ClusterNotFoundResponseCode" json:"cluster_not_found_response_code,omitempty"`
	MetadataMatch               *core.Metadata                          `protobuf:"bytes,4,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"`
	PrefixRewrite               string                                  `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"`
	// Types that are valid to be assigned to HostRewriteSpecifier:
	//	*RouteAction_HostRewrite
	//	*RouteAction_AutoHostRewrite
	//	*RouteAction_AutoHostRewriteHeader
	HostRewriteSpecifier   isRouteAction_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"`
	Timeout                *duration.Duration                 `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"`
	IdleTimeout            *duration.Duration                 `protobuf:"bytes,24,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
	RetryPolicy            *RetryPolicy                       `protobuf:"bytes,9,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"`
	RequestMirrorPolicy    *RouteAction_RequestMirrorPolicy   `protobuf:"bytes,10,opt,name=request_mirror_policy,json=requestMirrorPolicy,proto3" json:"request_mirror_policy,omitempty"`
	Priority               core.RoutingPriority               `protobuf:"varint,11,opt,name=priority,proto3,enum=envoy.api.v3alpha.core.RoutingPriority" json:"priority,omitempty"`
	RateLimits             []*RateLimit                       `protobuf:"bytes,13,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"`
	IncludeVhRateLimits    *wrappers.BoolValue                `protobuf:"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"`
	HashPolicy             []*RouteAction_HashPolicy          `protobuf:"bytes,15,rep,name=hash_policy,json=hashPolicy,proto3" json:"hash_policy,omitempty"`
	Cors                   *CorsPolicy                        `protobuf:"bytes,17,opt,name=cors,proto3" json:"cors,omitempty"`
	MaxGrpcTimeout         *duration.Duration                 `protobuf:"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3" json:"max_grpc_timeout,omitempty"`
	GrpcTimeoutOffset      *duration.Duration                 `protobuf:"bytes,28,opt,name=grpc_timeout_offset,json=grpcTimeoutOffset,proto3" json:"grpc_timeout_offset,omitempty"`
	UpgradeConfigs         []*RouteAction_UpgradeConfig       `protobuf:"bytes,25,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty"`
	InternalRedirectAction RouteAction_InternalRedirectAction `protobuf:"varint,26,opt,name=internal_redirect_action,json=internalRedirectAction,proto3,enum=envoy.api.v3alpha.route.RouteAction_InternalRedirectAction" json:"internal_redirect_action,omitempty"`
	HedgePolicy            *HedgePolicy                       `protobuf:"bytes,27,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"`
	XXX_NoUnkeyedLiteral   struct{}                           `json:"-"`
	XXX_unrecognized       []byte                             `json:"-"`
	XXX_sizecache          int32                              `json:"-"`
}

func (m *RouteAction) Reset()         { *m = RouteAction{} }
func (m *RouteAction) String() string { return proto.CompactTextString(m) }
func (*RouteAction) ProtoMessage()    {}
func (*RouteAction) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{5}
}

func (m *RouteAction) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteAction.Unmarshal(m, b)
}
func (m *RouteAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteAction.Marshal(b, m, deterministic)
}
func (m *RouteAction) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteAction.Merge(m, src)
}
func (m *RouteAction) XXX_Size() int {
	return xxx_messageInfo_RouteAction.Size(m)
}
func (m *RouteAction) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteAction.DiscardUnknown(m)
}

var xxx_messageInfo_RouteAction proto.InternalMessageInfo

type isRouteAction_ClusterSpecifier interface {
	isRouteAction_ClusterSpecifier()
}

type RouteAction_Cluster struct {
	Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3,oneof"`
}

type RouteAction_ClusterHeader struct {
	ClusterHeader string `protobuf:"bytes,2,opt,name=cluster_header,json=clusterHeader,proto3,oneof"`
}

type RouteAction_WeightedClusters struct {
	WeightedClusters *WeightedCluster `protobuf:"bytes,3,opt,name=weighted_clusters,json=weightedClusters,proto3,oneof"`
}

func (*RouteAction_Cluster) isRouteAction_ClusterSpecifier() {}

func (*RouteAction_ClusterHeader) isRouteAction_ClusterSpecifier() {}

func (*RouteAction_WeightedClusters) isRouteAction_ClusterSpecifier() {}

func (m *RouteAction) GetClusterSpecifier() isRouteAction_ClusterSpecifier {
	if m != nil {
		return m.ClusterSpecifier
	}
	return nil
}

func (m *RouteAction) GetCluster() string {
	if x, ok := m.GetClusterSpecifier().(*RouteAction_Cluster); ok {
		return x.Cluster
	}
	return ""
}

func (m *RouteAction) GetClusterHeader() string {
	if x, ok := m.GetClusterSpecifier().(*RouteAction_ClusterHeader); ok {
		return x.ClusterHeader
	}
	return ""
}

func (m *RouteAction) GetWeightedClusters() *WeightedCluster {
	if x, ok := m.GetClusterSpecifier().(*RouteAction_WeightedClusters); ok {
		return x.WeightedClusters
	}
	return nil
}

func (m *RouteAction) GetClusterNotFoundResponseCode() RouteAction_ClusterNotFoundResponseCode {
	if m != nil {
		return m.ClusterNotFoundResponseCode
	}
	return RouteAction_SERVICE_UNAVAILABLE
}

func (m *RouteAction) GetMetadataMatch() *core.Metadata {
	if m != nil {
		return m.MetadataMatch
	}
	return nil
}

func (m *RouteAction) GetPrefixRewrite() string {
	if m != nil {
		return m.PrefixRewrite
	}
	return ""
}

type isRouteAction_HostRewriteSpecifier interface {
	isRouteAction_HostRewriteSpecifier()
}

type RouteAction_HostRewrite struct {
	HostRewrite string `protobuf:"bytes,6,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"`
}

type RouteAction_AutoHostRewrite struct {
	AutoHostRewrite *wrappers.BoolValue `protobuf:"bytes,7,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"`
}

type RouteAction_AutoHostRewriteHeader struct {
	AutoHostRewriteHeader string `protobuf:"bytes,29,opt,name=auto_host_rewrite_header,json=autoHostRewriteHeader,proto3,oneof"`
}

func (*RouteAction_HostRewrite) isRouteAction_HostRewriteSpecifier() {}

func (*RouteAction_AutoHostRewrite) isRouteAction_HostRewriteSpecifier() {}

func (*RouteAction_AutoHostRewriteHeader) isRouteAction_HostRewriteSpecifier() {}

func (m *RouteAction) GetHostRewriteSpecifier() isRouteAction_HostRewriteSpecifier {
	if m != nil {
		return m.HostRewriteSpecifier
	}
	return nil
}

func (m *RouteAction) GetHostRewrite() string {
	if x, ok := m.GetHostRewriteSpecifier().(*RouteAction_HostRewrite); ok {
		return x.HostRewrite
	}
	return ""
}

func (m *RouteAction) GetAutoHostRewrite() *wrappers.BoolValue {
	if x, ok := m.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewrite); ok {
		return x.AutoHostRewrite
	}
	return nil
}

func (m *RouteAction) GetAutoHostRewriteHeader() string {
	if x, ok := m.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewriteHeader); ok {
		return x.AutoHostRewriteHeader
	}
	return ""
}

func (m *RouteAction) GetTimeout() *duration.Duration {
	if m != nil {
		return m.Timeout
	}
	return nil
}

func (m *RouteAction) GetIdleTimeout() *duration.Duration {
	if m != nil {
		return m.IdleTimeout
	}
	return nil
}

func (m *RouteAction) GetRetryPolicy() *RetryPolicy {
	if m != nil {
		return m.RetryPolicy
	}
	return nil
}

func (m *RouteAction) GetRequestMirrorPolicy() *RouteAction_RequestMirrorPolicy {
	if m != nil {
		return m.RequestMirrorPolicy
	}
	return nil
}

func (m *RouteAction) GetPriority() core.RoutingPriority {
	if m != nil {
		return m.Priority
	}
	return core.RoutingPriority_DEFAULT
}

func (m *RouteAction) GetRateLimits() []*RateLimit {
	if m != nil {
		return m.RateLimits
	}
	return nil
}

func (m *RouteAction) GetIncludeVhRateLimits() *wrappers.BoolValue {
	if m != nil {
		return m.IncludeVhRateLimits
	}
	return nil
}

func (m *RouteAction) GetHashPolicy() []*RouteAction_HashPolicy {
	if m != nil {
		return m.HashPolicy
	}
	return nil
}

func (m *RouteAction) GetCors() *CorsPolicy {
	if m != nil {
		return m.Cors
	}
	return nil
}

func (m *RouteAction) GetMaxGrpcTimeout() *duration.Duration {
	if m != nil {
		return m.MaxGrpcTimeout
	}
	return nil
}

func (m *RouteAction) GetGrpcTimeoutOffset() *duration.Duration {
	if m != nil {
		return m.GrpcTimeoutOffset
	}
	return nil
}

func (m *RouteAction) GetUpgradeConfigs() []*RouteAction_UpgradeConfig {
	if m != nil {
		return m.UpgradeConfigs
	}
	return nil
}

func (m *RouteAction) GetInternalRedirectAction() RouteAction_InternalRedirectAction {
	if m != nil {
		return m.InternalRedirectAction
	}
	return RouteAction_PASS_THROUGH_INTERNAL_REDIRECT
}

func (m *RouteAction) GetHedgePolicy() *HedgePolicy {
	if m != nil {
		return m.HedgePolicy
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*RouteAction) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*RouteAction_Cluster)(nil),
		(*RouteAction_ClusterHeader)(nil),
		(*RouteAction_WeightedClusters)(nil),
		(*RouteAction_HostRewrite)(nil),
		(*RouteAction_AutoHostRewrite)(nil),
		(*RouteAction_AutoHostRewriteHeader)(nil),
	}
}

type RouteAction_RequestMirrorPolicy struct {
	Cluster              string                         `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
	RuntimeFraction      *core.RuntimeFractionalPercent `protobuf:"bytes,3,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
	XXX_unrecognized     []byte                         `json:"-"`
	XXX_sizecache        int32                          `json:"-"`
}

func (m *RouteAction_RequestMirrorPolicy) Reset()         { *m = RouteAction_RequestMirrorPolicy{} }
func (m *RouteAction_RequestMirrorPolicy) String() string { return proto.CompactTextString(m) }
func (*RouteAction_RequestMirrorPolicy) ProtoMessage()    {}
func (*RouteAction_RequestMirrorPolicy) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{5, 0}
}

func (m *RouteAction_RequestMirrorPolicy) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteAction_RequestMirrorPolicy.Unmarshal(m, b)
}
func (m *RouteAction_RequestMirrorPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteAction_RequestMirrorPolicy.Marshal(b, m, deterministic)
}
func (m *RouteAction_RequestMirrorPolicy) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteAction_RequestMirrorPolicy.Merge(m, src)
}
func (m *RouteAction_RequestMirrorPolicy) XXX_Size() int {
	return xxx_messageInfo_RouteAction_RequestMirrorPolicy.Size(m)
}
func (m *RouteAction_RequestMirrorPolicy) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteAction_RequestMirrorPolicy.DiscardUnknown(m)
}

var xxx_messageInfo_RouteAction_RequestMirrorPolicy proto.InternalMessageInfo

func (m *RouteAction_RequestMirrorPolicy) GetCluster() string {
	if m != nil {
		return m.Cluster
	}
	return ""
}

func (m *RouteAction_RequestMirrorPolicy) GetRuntimeFraction() *core.RuntimeFractionalPercent {
	if m != nil {
		return m.RuntimeFraction
	}
	return nil
}

type RouteAction_HashPolicy struct {
	// Types that are valid to be assigned to PolicySpecifier:
	//	*RouteAction_HashPolicy_Header_
	//	*RouteAction_HashPolicy_Cookie_
	//	*RouteAction_HashPolicy_ConnectionProperties_
	PolicySpecifier      isRouteAction_HashPolicy_PolicySpecifier `protobuf_oneof:"policy_specifier"`
	Terminal             bool                                     `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                 `json:"-"`
	XXX_unrecognized     []byte                                   `json:"-"`
	XXX_sizecache        int32                                    `json:"-"`
}

func (m *RouteAction_HashPolicy) Reset()         { *m = RouteAction_HashPolicy{} }
func (m *RouteAction_HashPolicy) String() string { return proto.CompactTextString(m) }
func (*RouteAction_HashPolicy) ProtoMessage()    {}
func (*RouteAction_HashPolicy) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{5, 1}
}

func (m *RouteAction_HashPolicy) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteAction_HashPolicy.Unmarshal(m, b)
}
func (m *RouteAction_HashPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteAction_HashPolicy.Marshal(b, m, deterministic)
}
func (m *RouteAction_HashPolicy) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteAction_HashPolicy.Merge(m, src)
}
func (m *RouteAction_HashPolicy) XXX_Size() int {
	return xxx_messageInfo_RouteAction_HashPolicy.Size(m)
}
func (m *RouteAction_HashPolicy) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteAction_HashPolicy.DiscardUnknown(m)
}

var xxx_messageInfo_RouteAction_HashPolicy proto.InternalMessageInfo

type isRouteAction_HashPolicy_PolicySpecifier interface {
	isRouteAction_HashPolicy_PolicySpecifier()
}

type RouteAction_HashPolicy_Header_ struct {
	Header *RouteAction_HashPolicy_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
}

type RouteAction_HashPolicy_Cookie_ struct {
	Cookie *RouteAction_HashPolicy_Cookie `protobuf:"bytes,2,opt,name=cookie,proto3,oneof"`
}

type RouteAction_HashPolicy_ConnectionProperties_ struct {
	ConnectionProperties *RouteAction_HashPolicy_ConnectionProperties `protobuf:"bytes,3,opt,name=connection_properties,json=connectionProperties,proto3,oneof"`
}

func (*RouteAction_HashPolicy_Header_) isRouteAction_HashPolicy_PolicySpecifier() {}

func (*RouteAction_HashPolicy_Cookie_) isRouteAction_HashPolicy_PolicySpecifier() {}

func (*RouteAction_HashPolicy_ConnectionProperties_) isRouteAction_HashPolicy_PolicySpecifier() {}

func (m *RouteAction_HashPolicy) GetPolicySpecifier() isRouteAction_HashPolicy_PolicySpecifier {
	if m != nil {
		return m.PolicySpecifier
	}
	return nil
}

func (m *RouteAction_HashPolicy) GetHeader() *RouteAction_HashPolicy_Header {
	if x, ok := m.GetPolicySpecifier().(*RouteAction_HashPolicy_Header_); ok {
		return x.Header
	}
	return nil
}

func (m *RouteAction_HashPolicy) GetCookie() *RouteAction_HashPolicy_Cookie {
	if x, ok := m.GetPolicySpecifier().(*RouteAction_HashPolicy_Cookie_); ok {
		return x.Cookie
	}
	return nil
}

func (m *RouteAction_HashPolicy) GetConnectionProperties() *RouteAction_HashPolicy_ConnectionProperties {
	if x, ok := m.GetPolicySpecifier().(*RouteAction_HashPolicy_ConnectionProperties_); ok {
		return x.ConnectionProperties
	}
	return nil
}

func (m *RouteAction_HashPolicy) GetTerminal() bool {
	if m != nil {
		return m.Terminal
	}
	return false
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*RouteAction_HashPolicy) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*RouteAction_HashPolicy_Header_)(nil),
		(*RouteAction_HashPolicy_Cookie_)(nil),
		(*RouteAction_HashPolicy_ConnectionProperties_)(nil),
	}
}

type RouteAction_HashPolicy_Header struct {
	HeaderName           string   `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RouteAction_HashPolicy_Header) Reset()         { *m = RouteAction_HashPolicy_Header{} }
func (m *RouteAction_HashPolicy_Header) String() string { return proto.CompactTextString(m) }
func (*RouteAction_HashPolicy_Header) ProtoMessage()    {}
func (*RouteAction_HashPolicy_Header) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{5, 1, 0}
}

func (m *RouteAction_HashPolicy_Header) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteAction_HashPolicy_Header.Unmarshal(m, b)
}
func (m *RouteAction_HashPolicy_Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteAction_HashPolicy_Header.Marshal(b, m, deterministic)
}
func (m *RouteAction_HashPolicy_Header) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteAction_HashPolicy_Header.Merge(m, src)
}
func (m *RouteAction_HashPolicy_Header) XXX_Size() int {
	return xxx_messageInfo_RouteAction_HashPolicy_Header.Size(m)
}
func (m *RouteAction_HashPolicy_Header) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteAction_HashPolicy_Header.DiscardUnknown(m)
}

var xxx_messageInfo_RouteAction_HashPolicy_Header proto.InternalMessageInfo

func (m *RouteAction_HashPolicy_Header) GetHeaderName() string {
	if m != nil {
		return m.HeaderName
	}
	return ""
}

type RouteAction_HashPolicy_Cookie struct {
	Name                 string             `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Ttl                  *duration.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"`
	Path                 string             `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *RouteAction_HashPolicy_Cookie) Reset()         { *m = RouteAction_HashPolicy_Cookie{} }
func (m *RouteAction_HashPolicy_Cookie) String() string { return proto.CompactTextString(m) }
func (*RouteAction_HashPolicy_Cookie) ProtoMessage()    {}
func (*RouteAction_HashPolicy_Cookie) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{5, 1, 1}
}

func (m *RouteAction_HashPolicy_Cookie) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteAction_HashPolicy_Cookie.Unmarshal(m, b)
}
func (m *RouteAction_HashPolicy_Cookie) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteAction_HashPolicy_Cookie.Marshal(b, m, deterministic)
}
func (m *RouteAction_HashPolicy_Cookie) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteAction_HashPolicy_Cookie.Merge(m, src)
}
func (m *RouteAction_HashPolicy_Cookie) XXX_Size() int {
	return xxx_messageInfo_RouteAction_HashPolicy_Cookie.Size(m)
}
func (m *RouteAction_HashPolicy_Cookie) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteAction_HashPolicy_Cookie.DiscardUnknown(m)
}

var xxx_messageInfo_RouteAction_HashPolicy_Cookie proto.InternalMessageInfo

func (m *RouteAction_HashPolicy_Cookie) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *RouteAction_HashPolicy_Cookie) GetTtl() *duration.Duration {
	if m != nil {
		return m.Ttl
	}
	return nil
}

func (m *RouteAction_HashPolicy_Cookie) GetPath() string {
	if m != nil {
		return m.Path
	}
	return ""
}

type RouteAction_HashPolicy_ConnectionProperties struct {
	SourceIp             bool     `protobuf:"varint,1,opt,name=source_ip,json=sourceIp,proto3" json:"source_ip,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RouteAction_HashPolicy_ConnectionProperties) Reset() {
	*m = RouteAction_HashPolicy_ConnectionProperties{}
}
func (m *RouteAction_HashPolicy_ConnectionProperties) String() string {
	return proto.CompactTextString(m)
}
func (*RouteAction_HashPolicy_ConnectionProperties) ProtoMessage() {}
func (*RouteAction_HashPolicy_ConnectionProperties) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{5, 1, 2}
}

func (m *RouteAction_HashPolicy_ConnectionProperties) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteAction_HashPolicy_ConnectionProperties.Unmarshal(m, b)
}
func (m *RouteAction_HashPolicy_ConnectionProperties) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteAction_HashPolicy_ConnectionProperties.Marshal(b, m, deterministic)
}
func (m *RouteAction_HashPolicy_ConnectionProperties) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteAction_HashPolicy_ConnectionProperties.Merge(m, src)
}
func (m *RouteAction_HashPolicy_ConnectionProperties) XXX_Size() int {
	return xxx_messageInfo_RouteAction_HashPolicy_ConnectionProperties.Size(m)
}
func (m *RouteAction_HashPolicy_ConnectionProperties) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteAction_HashPolicy_ConnectionProperties.DiscardUnknown(m)
}

var xxx_messageInfo_RouteAction_HashPolicy_ConnectionProperties proto.InternalMessageInfo

func (m *RouteAction_HashPolicy_ConnectionProperties) GetSourceIp() bool {
	if m != nil {
		return m.SourceIp
	}
	return false
}

type RouteAction_UpgradeConfig struct {
	UpgradeType          string              `protobuf:"bytes,1,opt,name=upgrade_type,json=upgradeType,proto3" json:"upgrade_type,omitempty"`
	Enabled              *wrappers.BoolValue `protobuf:"bytes,2,opt,name=enabled,proto3" json:"enabled,omitempty"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

func (m *RouteAction_UpgradeConfig) Reset()         { *m = RouteAction_UpgradeConfig{} }
func (m *RouteAction_UpgradeConfig) String() string { return proto.CompactTextString(m) }
func (*RouteAction_UpgradeConfig) ProtoMessage()    {}
func (*RouteAction_UpgradeConfig) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{5, 2}
}

func (m *RouteAction_UpgradeConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RouteAction_UpgradeConfig.Unmarshal(m, b)
}
func (m *RouteAction_UpgradeConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RouteAction_UpgradeConfig.Marshal(b, m, deterministic)
}
func (m *RouteAction_UpgradeConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RouteAction_UpgradeConfig.Merge(m, src)
}
func (m *RouteAction_UpgradeConfig) XXX_Size() int {
	return xxx_messageInfo_RouteAction_UpgradeConfig.Size(m)
}
func (m *RouteAction_UpgradeConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_RouteAction_UpgradeConfig.DiscardUnknown(m)
}

var xxx_messageInfo_RouteAction_UpgradeConfig proto.InternalMessageInfo

func (m *RouteAction_UpgradeConfig) GetUpgradeType() string {
	if m != nil {
		return m.UpgradeType
	}
	return ""
}

func (m *RouteAction_UpgradeConfig) GetEnabled() *wrappers.BoolValue {
	if m != nil {
		return m.Enabled
	}
	return nil
}

type RetryPolicy struct {
	RetryOn                       string                            `protobuf:"bytes,1,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,omitempty"`
	NumRetries                    *wrappers.UInt32Value             `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"`
	PerTryTimeout                 *duration.Duration                `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"`
	RetryPriority                 *RetryPolicy_RetryPriority        `protobuf:"bytes,4,opt,name=retry_priority,json=retryPriority,proto3" json:"retry_priority,omitempty"`
	RetryHostPredicate            []*RetryPolicy_RetryHostPredicate `protobuf:"bytes,5,rep,name=retry_host_predicate,json=retryHostPredicate,proto3" json:"retry_host_predicate,omitempty"`
	HostSelectionRetryMaxAttempts int64                             `protobuf:"varint,6,opt,name=host_selection_retry_max_attempts,json=hostSelectionRetryMaxAttempts,proto3" json:"host_selection_retry_max_attempts,omitempty"`
	RetriableStatusCodes          []uint32                          `protobuf:"varint,7,rep,packed,name=retriable_status_codes,json=retriableStatusCodes,proto3" json:"retriable_status_codes,omitempty"`
	RetryBackOff                  *RetryPolicy_RetryBackOff         `protobuf:"bytes,8,opt,name=retry_back_off,json=retryBackOff,proto3" json:"retry_back_off,omitempty"`
	RetriableHeaders              []*HeaderMatcher                  `protobuf:"bytes,9,rep,name=retriable_headers,json=retriableHeaders,proto3" json:"retriable_headers,omitempty"`
	RetriableRequestHeaders       []*HeaderMatcher                  `protobuf:"bytes,10,rep,name=retriable_request_headers,json=retriableRequestHeaders,proto3" json:"retriable_request_headers,omitempty"`
	XXX_NoUnkeyedLiteral          struct{}                          `json:"-"`
	XXX_unrecognized              []byte                            `json:"-"`
	XXX_sizecache                 int32                             `json:"-"`
}

func (m *RetryPolicy) Reset()         { *m = RetryPolicy{} }
func (m *RetryPolicy) String() string { return proto.CompactTextString(m) }
func (*RetryPolicy) ProtoMessage()    {}
func (*RetryPolicy) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{6}
}

func (m *RetryPolicy) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RetryPolicy.Unmarshal(m, b)
}
func (m *RetryPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RetryPolicy.Marshal(b, m, deterministic)
}
func (m *RetryPolicy) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RetryPolicy.Merge(m, src)
}
func (m *RetryPolicy) XXX_Size() int {
	return xxx_messageInfo_RetryPolicy.Size(m)
}
func (m *RetryPolicy) XXX_DiscardUnknown() {
	xxx_messageInfo_RetryPolicy.DiscardUnknown(m)
}

var xxx_messageInfo_RetryPolicy proto.InternalMessageInfo

func (m *RetryPolicy) GetRetryOn() string {
	if m != nil {
		return m.RetryOn
	}
	return ""
}

func (m *RetryPolicy) GetNumRetries() *wrappers.UInt32Value {
	if m != nil {
		return m.NumRetries
	}
	return nil
}

func (m *RetryPolicy) GetPerTryTimeout() *duration.Duration {
	if m != nil {
		return m.PerTryTimeout
	}
	return nil
}

func (m *RetryPolicy) GetRetryPriority() *RetryPolicy_RetryPriority {
	if m != nil {
		return m.RetryPriority
	}
	return nil
}

func (m *RetryPolicy) GetRetryHostPredicate() []*RetryPolicy_RetryHostPredicate {
	if m != nil {
		return m.RetryHostPredicate
	}
	return nil
}

func (m *RetryPolicy) GetHostSelectionRetryMaxAttempts() int64 {
	if m != nil {
		return m.HostSelectionRetryMaxAttempts
	}
	return 0
}

func (m *RetryPolicy) GetRetriableStatusCodes() []uint32 {
	if m != nil {
		return m.RetriableStatusCodes
	}
	return nil
}

func (m *RetryPolicy) GetRetryBackOff() *RetryPolicy_RetryBackOff {
	if m != nil {
		return m.RetryBackOff
	}
	return nil
}

func (m *RetryPolicy) GetRetriableHeaders() []*HeaderMatcher {
	if m != nil {
		return m.RetriableHeaders
	}
	return nil
}

func (m *RetryPolicy) GetRetriableRequestHeaders() []*HeaderMatcher {
	if m != nil {
		return m.RetriableRequestHeaders
	}
	return nil
}

type RetryPolicy_RetryPriority struct {
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are valid to be assigned to ConfigType:
	//	*RetryPolicy_RetryPriority_TypedConfig
	ConfigType           isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:"config_type"`
	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
	XXX_unrecognized     []byte                                 `json:"-"`
	XXX_sizecache        int32                                  `json:"-"`
}

func (m *RetryPolicy_RetryPriority) Reset()         { *m = RetryPolicy_RetryPriority{} }
func (m *RetryPolicy_RetryPriority) String() string { return proto.CompactTextString(m) }
func (*RetryPolicy_RetryPriority) ProtoMessage()    {}
func (*RetryPolicy_RetryPriority) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{6, 0}
}

func (m *RetryPolicy_RetryPriority) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RetryPolicy_RetryPriority.Unmarshal(m, b)
}
func (m *RetryPolicy_RetryPriority) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RetryPolicy_RetryPriority.Marshal(b, m, deterministic)
}
func (m *RetryPolicy_RetryPriority) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RetryPolicy_RetryPriority.Merge(m, src)
}
func (m *RetryPolicy_RetryPriority) XXX_Size() int {
	return xxx_messageInfo_RetryPolicy_RetryPriority.Size(m)
}
func (m *RetryPolicy_RetryPriority) XXX_DiscardUnknown() {
	xxx_messageInfo_RetryPolicy_RetryPriority.DiscardUnknown(m)
}

var xxx_messageInfo_RetryPolicy_RetryPriority proto.InternalMessageInfo

func (m *RetryPolicy_RetryPriority) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

type isRetryPolicy_RetryPriority_ConfigType interface {
	isRetryPolicy_RetryPriority_ConfigType()
}

type RetryPolicy_RetryPriority_TypedConfig struct {
	TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"`
}

func (*RetryPolicy_RetryPriority_TypedConfig) isRetryPolicy_RetryPriority_ConfigType() {}

func (m *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType {
	if m != nil {
		return m.ConfigType
	}
	return nil
}

func (m *RetryPolicy_RetryPriority) GetTypedConfig() *any.Any {
	if x, ok := m.GetConfigType().(*RetryPolicy_RetryPriority_TypedConfig); ok {
		return x.TypedConfig
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*RetryPolicy_RetryPriority) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*RetryPolicy_RetryPriority_TypedConfig)(nil),
	}
}

type RetryPolicy_RetryHostPredicate struct {
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are valid to be assigned to ConfigType:
	//	*RetryPolicy_RetryHostPredicate_TypedConfig
	ConfigType           isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:"config_type"`
	XXX_NoUnkeyedLiteral struct{}                                    `json:"-"`
	XXX_unrecognized     []byte                                      `json:"-"`
	XXX_sizecache        int32                                       `json:"-"`
}

func (m *RetryPolicy_RetryHostPredicate) Reset()         { *m = RetryPolicy_RetryHostPredicate{} }
func (m *RetryPolicy_RetryHostPredicate) String() string { return proto.CompactTextString(m) }
func (*RetryPolicy_RetryHostPredicate) ProtoMessage()    {}
func (*RetryPolicy_RetryHostPredicate) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{6, 1}
}

func (m *RetryPolicy_RetryHostPredicate) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RetryPolicy_RetryHostPredicate.Unmarshal(m, b)
}
func (m *RetryPolicy_RetryHostPredicate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RetryPolicy_RetryHostPredicate.Marshal(b, m, deterministic)
}
func (m *RetryPolicy_RetryHostPredicate) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RetryPolicy_RetryHostPredicate.Merge(m, src)
}
func (m *RetryPolicy_RetryHostPredicate) XXX_Size() int {
	return xxx_messageInfo_RetryPolicy_RetryHostPredicate.Size(m)
}
func (m *RetryPolicy_RetryHostPredicate) XXX_DiscardUnknown() {
	xxx_messageInfo_RetryPolicy_RetryHostPredicate.DiscardUnknown(m)
}

var xxx_messageInfo_RetryPolicy_RetryHostPredicate proto.InternalMessageInfo

func (m *RetryPolicy_RetryHostPredicate) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

type isRetryPolicy_RetryHostPredicate_ConfigType interface {
	isRetryPolicy_RetryHostPredicate_ConfigType()
}

type RetryPolicy_RetryHostPredicate_TypedConfig struct {
	TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"`
}

func (*RetryPolicy_RetryHostPredicate_TypedConfig) isRetryPolicy_RetryHostPredicate_ConfigType() {}

func (m *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType {
	if m != nil {
		return m.ConfigType
	}
	return nil
}

func (m *RetryPolicy_RetryHostPredicate) GetTypedConfig() *any.Any {
	if x, ok := m.GetConfigType().(*RetryPolicy_RetryHostPredicate_TypedConfig); ok {
		return x.TypedConfig
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*RetryPolicy_RetryHostPredicate) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*RetryPolicy_RetryHostPredicate_TypedConfig)(nil),
	}
}

type RetryPolicy_RetryBackOff struct {
	BaseInterval         *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"`
	MaxInterval          *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *RetryPolicy_RetryBackOff) Reset()         { *m = RetryPolicy_RetryBackOff{} }
func (m *RetryPolicy_RetryBackOff) String() string { return proto.CompactTextString(m) }
func (*RetryPolicy_RetryBackOff) ProtoMessage()    {}
func (*RetryPolicy_RetryBackOff) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{6, 2}
}

func (m *RetryPolicy_RetryBackOff) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RetryPolicy_RetryBackOff.Unmarshal(m, b)
}
func (m *RetryPolicy_RetryBackOff) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RetryPolicy_RetryBackOff.Marshal(b, m, deterministic)
}
func (m *RetryPolicy_RetryBackOff) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RetryPolicy_RetryBackOff.Merge(m, src)
}
func (m *RetryPolicy_RetryBackOff) XXX_Size() int {
	return xxx_messageInfo_RetryPolicy_RetryBackOff.Size(m)
}
func (m *RetryPolicy_RetryBackOff) XXX_DiscardUnknown() {
	xxx_messageInfo_RetryPolicy_RetryBackOff.DiscardUnknown(m)
}

var xxx_messageInfo_RetryPolicy_RetryBackOff proto.InternalMessageInfo

func (m *RetryPolicy_RetryBackOff) GetBaseInterval() *duration.Duration {
	if m != nil {
		return m.BaseInterval
	}
	return nil
}

func (m *RetryPolicy_RetryBackOff) GetMaxInterval() *duration.Duration {
	if m != nil {
		return m.MaxInterval
	}
	return nil
}

type HedgePolicy struct {
	InitialRequests         *wrappers.UInt32Value       `protobuf:"bytes,1,opt,name=initial_requests,json=initialRequests,proto3" json:"initial_requests,omitempty"`
	AdditionalRequestChance *v3alpha1.FractionalPercent `protobuf:"bytes,2,opt,name=additional_request_chance,json=additionalRequestChance,proto3" json:"additional_request_chance,omitempty"`
	HedgeOnPerTryTimeout    bool                        `protobuf:"varint,3,opt,name=hedge_on_per_try_timeout,json=hedgeOnPerTryTimeout,proto3" json:"hedge_on_per_try_timeout,omitempty"`
	XXX_NoUnkeyedLiteral    struct{}                    `json:"-"`
	XXX_unrecognized        []byte                      `json:"-"`
	XXX_sizecache           int32                       `json:"-"`
}

func (m *HedgePolicy) Reset()         { *m = HedgePolicy{} }
func (m *HedgePolicy) String() string { return proto.CompactTextString(m) }
func (*HedgePolicy) ProtoMessage()    {}
func (*HedgePolicy) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{7}
}

func (m *HedgePolicy) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HedgePolicy.Unmarshal(m, b)
}
func (m *HedgePolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HedgePolicy.Marshal(b, m, deterministic)
}
func (m *HedgePolicy) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HedgePolicy.Merge(m, src)
}
func (m *HedgePolicy) XXX_Size() int {
	return xxx_messageInfo_HedgePolicy.Size(m)
}
func (m *HedgePolicy) XXX_DiscardUnknown() {
	xxx_messageInfo_HedgePolicy.DiscardUnknown(m)
}

var xxx_messageInfo_HedgePolicy proto.InternalMessageInfo

func (m *HedgePolicy) GetInitialRequests() *wrappers.UInt32Value {
	if m != nil {
		return m.InitialRequests
	}
	return nil
}

func (m *HedgePolicy) GetAdditionalRequestChance() *v3alpha1.FractionalPercent {
	if m != nil {
		return m.AdditionalRequestChance
	}
	return nil
}

func (m *HedgePolicy) GetHedgeOnPerTryTimeout() bool {
	if m != nil {
		return m.HedgeOnPerTryTimeout
	}
	return false
}

type RedirectAction struct {
	// Types that are valid to be assigned to SchemeRewriteSpecifier:
	//	*RedirectAction_HttpsRedirect
	//	*RedirectAction_SchemeRedirect
	SchemeRewriteSpecifier isRedirectAction_SchemeRewriteSpecifier `protobuf_oneof:"scheme_rewrite_specifier"`
	HostRedirect           string                                  `protobuf:"bytes,1,opt,name=host_redirect,json=hostRedirect,proto3" json:"host_redirect,omitempty"`
	PortRedirect           uint32                                  `protobuf:"varint,8,opt,name=port_redirect,json=portRedirect,proto3" json:"port_redirect,omitempty"`
	// Types that are valid to be assigned to PathRewriteSpecifier:
	//	*RedirectAction_PathRedirect
	//	*RedirectAction_PrefixRewrite
	PathRewriteSpecifier isRedirectAction_PathRewriteSpecifier `protobuf_oneof:"path_rewrite_specifier"`
	ResponseCode         RedirectAction_RedirectResponseCode   `protobuf:"varint,3,opt,name=response_code,json=responseCode,proto3,enum=envoy.api.v3alpha.route.RedirectAction_RedirectResponseCode" json:"response_code,omitempty"`
	StripQuery           bool                                  `protobuf:"varint,6,opt,name=strip_query,json=stripQuery,proto3" json:"strip_query,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
	XXX_unrecognized     []byte                                `json:"-"`
	XXX_sizecache        int32                                 `json:"-"`
}

func (m *RedirectAction) Reset()         { *m = RedirectAction{} }
func (m *RedirectAction) String() string { return proto.CompactTextString(m) }
func (*RedirectAction) ProtoMessage()    {}
func (*RedirectAction) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{8}
}

func (m *RedirectAction) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RedirectAction.Unmarshal(m, b)
}
func (m *RedirectAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RedirectAction.Marshal(b, m, deterministic)
}
func (m *RedirectAction) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RedirectAction.Merge(m, src)
}
func (m *RedirectAction) XXX_Size() int {
	return xxx_messageInfo_RedirectAction.Size(m)
}
func (m *RedirectAction) XXX_DiscardUnknown() {
	xxx_messageInfo_RedirectAction.DiscardUnknown(m)
}

var xxx_messageInfo_RedirectAction proto.InternalMessageInfo

type isRedirectAction_SchemeRewriteSpecifier interface {
	isRedirectAction_SchemeRewriteSpecifier()
}

type RedirectAction_HttpsRedirect struct {
	HttpsRedirect bool `protobuf:"varint,4,opt,name=https_redirect,json=httpsRedirect,proto3,oneof"`
}

type RedirectAction_SchemeRedirect struct {
	SchemeRedirect string `protobuf:"bytes,7,opt,name=scheme_redirect,json=schemeRedirect,proto3,oneof"`
}

func (*RedirectAction_HttpsRedirect) isRedirectAction_SchemeRewriteSpecifier() {}

func (*RedirectAction_SchemeRedirect) isRedirectAction_SchemeRewriteSpecifier() {}

func (m *RedirectAction) GetSchemeRewriteSpecifier() isRedirectAction_SchemeRewriteSpecifier {
	if m != nil {
		return m.SchemeRewriteSpecifier
	}
	return nil
}

func (m *RedirectAction) GetHttpsRedirect() bool {
	if x, ok := m.GetSchemeRewriteSpecifier().(*RedirectAction_HttpsRedirect); ok {
		return x.HttpsRedirect
	}
	return false
}

func (m *RedirectAction) GetSchemeRedirect() string {
	if x, ok := m.GetSchemeRewriteSpecifier().(*RedirectAction_SchemeRedirect); ok {
		return x.SchemeRedirect
	}
	return ""
}

func (m *RedirectAction) GetHostRedirect() string {
	if m != nil {
		return m.HostRedirect
	}
	return ""
}

func (m *RedirectAction) GetPortRedirect() uint32 {
	if m != nil {
		return m.PortRedirect
	}
	return 0
}

type isRedirectAction_PathRewriteSpecifier interface {
	isRedirectAction_PathRewriteSpecifier()
}

type RedirectAction_PathRedirect struct {
	PathRedirect string `protobuf:"bytes,2,opt,name=path_redirect,json=pathRedirect,proto3,oneof"`
}

type RedirectAction_PrefixRewrite struct {
	PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3,oneof"`
}

func (*RedirectAction_PathRedirect) isRedirectAction_PathRewriteSpecifier() {}

func (*RedirectAction_PrefixRewrite) isRedirectAction_PathRewriteSpecifier() {}

func (m *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier {
	if m != nil {
		return m.PathRewriteSpecifier
	}
	return nil
}

func (m *RedirectAction) GetPathRedirect() string {
	if x, ok := m.GetPathRewriteSpecifier().(*RedirectAction_PathRedirect); ok {
		return x.PathRedirect
	}
	return ""
}

func (m *RedirectAction) GetPrefixRewrite() string {
	if x, ok := m.GetPathRewriteSpecifier().(*RedirectAction_PrefixRewrite); ok {
		return x.PrefixRewrite
	}
	return ""
}

func (m *RedirectAction) GetResponseCode() RedirectAction_RedirectResponseCode {
	if m != nil {
		return m.ResponseCode
	}
	return RedirectAction_MOVED_PERMANENTLY
}

func (m *RedirectAction) GetStripQuery() bool {
	if m != nil {
		return m.StripQuery
	}
	return false
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*RedirectAction) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*RedirectAction_HttpsRedirect)(nil),
		(*RedirectAction_SchemeRedirect)(nil),
		(*RedirectAction_PathRedirect)(nil),
		(*RedirectAction_PrefixRewrite)(nil),
	}
}

type DirectResponseAction struct {
	Status               uint32           `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Body                 *core.DataSource `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
	XXX_unrecognized     []byte           `json:"-"`
	XXX_sizecache        int32            `json:"-"`
}

func (m *DirectResponseAction) Reset()         { *m = DirectResponseAction{} }
func (m *DirectResponseAction) String() string { return proto.CompactTextString(m) }
func (*DirectResponseAction) ProtoMessage()    {}
func (*DirectResponseAction) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{9}
}

func (m *DirectResponseAction) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DirectResponseAction.Unmarshal(m, b)
}
func (m *DirectResponseAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DirectResponseAction.Marshal(b, m, deterministic)
}
func (m *DirectResponseAction) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DirectResponseAction.Merge(m, src)
}
func (m *DirectResponseAction) XXX_Size() int {
	return xxx_messageInfo_DirectResponseAction.Size(m)
}
func (m *DirectResponseAction) XXX_DiscardUnknown() {
	xxx_messageInfo_DirectResponseAction.DiscardUnknown(m)
}

var xxx_messageInfo_DirectResponseAction proto.InternalMessageInfo

func (m *DirectResponseAction) GetStatus() uint32 {
	if m != nil {
		return m.Status
	}
	return 0
}

func (m *DirectResponseAction) GetBody() *core.DataSource {
	if m != nil {
		return m.Body
	}
	return nil
}

type Decorator struct {
	Operation            string   `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Decorator) Reset()         { *m = Decorator{} }
func (m *Decorator) String() string { return proto.CompactTextString(m) }
func (*Decorator) ProtoMessage()    {}
func (*Decorator) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{10}
}

func (m *Decorator) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Decorator.Unmarshal(m, b)
}
func (m *Decorator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Decorator.Marshal(b, m, deterministic)
}
func (m *Decorator) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Decorator.Merge(m, src)
}
func (m *Decorator) XXX_Size() int {
	return xxx_messageInfo_Decorator.Size(m)
}
func (m *Decorator) XXX_DiscardUnknown() {
	xxx_messageInfo_Decorator.DiscardUnknown(m)
}

var xxx_messageInfo_Decorator proto.InternalMessageInfo

func (m *Decorator) GetOperation() string {
	if m != nil {
		return m.Operation
	}
	return ""
}

type Tracing struct {
	ClientSampling       *v3alpha1.FractionalPercent `protobuf:"bytes,1,opt,name=client_sampling,json=clientSampling,proto3" json:"client_sampling,omitempty"`
	RandomSampling       *v3alpha1.FractionalPercent `protobuf:"bytes,2,opt,name=random_sampling,json=randomSampling,proto3" json:"random_sampling,omitempty"`
	OverallSampling      *v3alpha1.FractionalPercent `protobuf:"bytes,3,opt,name=overall_sampling,json=overallSampling,proto3" json:"overall_sampling,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
	XXX_unrecognized     []byte                      `json:"-"`
	XXX_sizecache        int32                       `json:"-"`
}

func (m *Tracing) Reset()         { *m = Tracing{} }
func (m *Tracing) String() string { return proto.CompactTextString(m) }
func (*Tracing) ProtoMessage()    {}
func (*Tracing) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{11}
}

func (m *Tracing) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Tracing.Unmarshal(m, b)
}
func (m *Tracing) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Tracing.Marshal(b, m, deterministic)
}
func (m *Tracing) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Tracing.Merge(m, src)
}
func (m *Tracing) XXX_Size() int {
	return xxx_messageInfo_Tracing.Size(m)
}
func (m *Tracing) XXX_DiscardUnknown() {
	xxx_messageInfo_Tracing.DiscardUnknown(m)
}

var xxx_messageInfo_Tracing proto.InternalMessageInfo

func (m *Tracing) GetClientSampling() *v3alpha1.FractionalPercent {
	if m != nil {
		return m.ClientSampling
	}
	return nil
}

func (m *Tracing) GetRandomSampling() *v3alpha1.FractionalPercent {
	if m != nil {
		return m.RandomSampling
	}
	return nil
}

func (m *Tracing) GetOverallSampling() *v3alpha1.FractionalPercent {
	if m != nil {
		return m.OverallSampling
	}
	return nil
}

type VirtualCluster struct {
	Headers              []*HeaderMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"`
	Name                 string           `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
	XXX_unrecognized     []byte           `json:"-"`
	XXX_sizecache        int32            `json:"-"`
}

func (m *VirtualCluster) Reset()         { *m = VirtualCluster{} }
func (m *VirtualCluster) String() string { return proto.CompactTextString(m) }
func (*VirtualCluster) ProtoMessage()    {}
func (*VirtualCluster) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{12}
}

func (m *VirtualCluster) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_VirtualCluster.Unmarshal(m, b)
}
func (m *VirtualCluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_VirtualCluster.Marshal(b, m, deterministic)
}
func (m *VirtualCluster) XXX_Merge(src proto.Message) {
	xxx_messageInfo_VirtualCluster.Merge(m, src)
}
func (m *VirtualCluster) XXX_Size() int {
	return xxx_messageInfo_VirtualCluster.Size(m)
}
func (m *VirtualCluster) XXX_DiscardUnknown() {
	xxx_messageInfo_VirtualCluster.DiscardUnknown(m)
}

var xxx_messageInfo_VirtualCluster proto.InternalMessageInfo

func (m *VirtualCluster) GetHeaders() []*HeaderMatcher {
	if m != nil {
		return m.Headers
	}
	return nil
}

func (m *VirtualCluster) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

type RateLimit struct {
	Stage                *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"`
	DisableKey           string                `protobuf:"bytes,2,opt,name=disable_key,json=disableKey,proto3" json:"disable_key,omitempty"`
	Actions              []*RateLimit_Action   `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *RateLimit) Reset()         { *m = RateLimit{} }
func (m *RateLimit) String() string { return proto.CompactTextString(m) }
func (*RateLimit) ProtoMessage()    {}
func (*RateLimit) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{13}
}

func (m *RateLimit) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RateLimit.Unmarshal(m, b)
}
func (m *RateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RateLimit.Marshal(b, m, deterministic)
}
func (m *RateLimit) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RateLimit.Merge(m, src)
}
func (m *RateLimit) XXX_Size() int {
	return xxx_messageInfo_RateLimit.Size(m)
}
func (m *RateLimit) XXX_DiscardUnknown() {
	xxx_messageInfo_RateLimit.DiscardUnknown(m)
}

var xxx_messageInfo_RateLimit proto.InternalMessageInfo

func (m *RateLimit) GetStage() *wrappers.UInt32Value {
	if m != nil {
		return m.Stage
	}
	return nil
}

func (m *RateLimit) GetDisableKey() string {
	if m != nil {
		return m.DisableKey
	}
	return ""
}

func (m *RateLimit) GetActions() []*RateLimit_Action {
	if m != nil {
		return m.Actions
	}
	return nil
}

type RateLimit_Action struct {
	// Types that are valid to be assigned to ActionSpecifier:
	//	*RateLimit_Action_SourceCluster_
	//	*RateLimit_Action_DestinationCluster_
	//	*RateLimit_Action_RequestHeaders_
	//	*RateLimit_Action_RemoteAddress_
	//	*RateLimit_Action_GenericKey_
	//	*RateLimit_Action_HeaderValueMatch_
	ActionSpecifier      isRateLimit_Action_ActionSpecifier `protobuf_oneof:"action_specifier"`
	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
	XXX_unrecognized     []byte                             `json:"-"`
	XXX_sizecache        int32                              `json:"-"`
}

func (m *RateLimit_Action) Reset()         { *m = RateLimit_Action{} }
func (m *RateLimit_Action) String() string { return proto.CompactTextString(m) }
func (*RateLimit_Action) ProtoMessage()    {}
func (*RateLimit_Action) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{13, 0}
}

func (m *RateLimit_Action) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RateLimit_Action.Unmarshal(m, b)
}
func (m *RateLimit_Action) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RateLimit_Action.Marshal(b, m, deterministic)
}
func (m *RateLimit_Action) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RateLimit_Action.Merge(m, src)
}
func (m *RateLimit_Action) XXX_Size() int {
	return xxx_messageInfo_RateLimit_Action.Size(m)
}
func (m *RateLimit_Action) XXX_DiscardUnknown() {
	xxx_messageInfo_RateLimit_Action.DiscardUnknown(m)
}

var xxx_messageInfo_RateLimit_Action proto.InternalMessageInfo

type isRateLimit_Action_ActionSpecifier interface {
	isRateLimit_Action_ActionSpecifier()
}

type RateLimit_Action_SourceCluster_ struct {
	SourceCluster *RateLimit_Action_SourceCluster `protobuf:"bytes,1,opt,name=source_cluster,json=sourceCluster,proto3,oneof"`
}

type RateLimit_Action_DestinationCluster_ struct {
	DestinationCluster *RateLimit_Action_DestinationCluster `protobuf:"bytes,2,opt,name=destination_cluster,json=destinationCluster,proto3,oneof"`
}

type RateLimit_Action_RequestHeaders_ struct {
	RequestHeaders *RateLimit_Action_RequestHeaders `protobuf:"bytes,3,opt,name=request_headers,json=requestHeaders,proto3,oneof"`
}

type RateLimit_Action_RemoteAddress_ struct {
	RemoteAddress *RateLimit_Action_RemoteAddress `protobuf:"bytes,4,opt,name=remote_address,json=remoteAddress,proto3,oneof"`
}

type RateLimit_Action_GenericKey_ struct {
	GenericKey *RateLimit_Action_GenericKey `protobuf:"bytes,5,opt,name=generic_key,json=genericKey,proto3,oneof"`
}

type RateLimit_Action_HeaderValueMatch_ struct {
	HeaderValueMatch *RateLimit_Action_HeaderValueMatch `protobuf:"bytes,6,opt,name=header_value_match,json=headerValueMatch,proto3,oneof"`
}

func (*RateLimit_Action_SourceCluster_) isRateLimit_Action_ActionSpecifier() {}

func (*RateLimit_Action_DestinationCluster_) isRateLimit_Action_ActionSpecifier() {}

func (*RateLimit_Action_RequestHeaders_) isRateLimit_Action_ActionSpecifier() {}

func (*RateLimit_Action_RemoteAddress_) isRateLimit_Action_ActionSpecifier() {}

func (*RateLimit_Action_GenericKey_) isRateLimit_Action_ActionSpecifier() {}

func (*RateLimit_Action_HeaderValueMatch_) isRateLimit_Action_ActionSpecifier() {}

func (m *RateLimit_Action) GetActionSpecifier() isRateLimit_Action_ActionSpecifier {
	if m != nil {
		return m.ActionSpecifier
	}
	return nil
}

func (m *RateLimit_Action) GetSourceCluster() *RateLimit_Action_SourceCluster {
	if x, ok := m.GetActionSpecifier().(*RateLimit_Action_SourceCluster_); ok {
		return x.SourceCluster
	}
	return nil
}

func (m *RateLimit_Action) GetDestinationCluster() *RateLimit_Action_DestinationCluster {
	if x, ok := m.GetActionSpecifier().(*RateLimit_Action_DestinationCluster_); ok {
		return x.DestinationCluster
	}
	return nil
}

func (m *RateLimit_Action) GetRequestHeaders() *RateLimit_Action_RequestHeaders {
	if x, ok := m.GetActionSpecifier().(*RateLimit_Action_RequestHeaders_); ok {
		return x.RequestHeaders
	}
	return nil
}

func (m *RateLimit_Action) GetRemoteAddress() *RateLimit_Action_RemoteAddress {
	if x, ok := m.GetActionSpecifier().(*RateLimit_Action_RemoteAddress_); ok {
		return x.RemoteAddress
	}
	return nil
}

func (m *RateLimit_Action) GetGenericKey() *RateLimit_Action_GenericKey {
	if x, ok := m.GetActionSpecifier().(*RateLimit_Action_GenericKey_); ok {
		return x.GenericKey
	}
	return nil
}

func (m *RateLimit_Action) GetHeaderValueMatch() *RateLimit_Action_HeaderValueMatch {
	if x, ok := m.GetActionSpecifier().(*RateLimit_Action_HeaderValueMatch_); ok {
		return x.HeaderValueMatch
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*RateLimit_Action) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*RateLimit_Action_SourceCluster_)(nil),
		(*RateLimit_Action_DestinationCluster_)(nil),
		(*RateLimit_Action_RequestHeaders_)(nil),
		(*RateLimit_Action_RemoteAddress_)(nil),
		(*RateLimit_Action_GenericKey_)(nil),
		(*RateLimit_Action_HeaderValueMatch_)(nil),
	}
}

type RateLimit_Action_SourceCluster struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RateLimit_Action_SourceCluster) Reset()         { *m = RateLimit_Action_SourceCluster{} }
func (m *RateLimit_Action_SourceCluster) String() string { return proto.CompactTextString(m) }
func (*RateLimit_Action_SourceCluster) ProtoMessage()    {}
func (*RateLimit_Action_SourceCluster) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{13, 0, 0}
}

func (m *RateLimit_Action_SourceCluster) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RateLimit_Action_SourceCluster.Unmarshal(m, b)
}
func (m *RateLimit_Action_SourceCluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RateLimit_Action_SourceCluster.Marshal(b, m, deterministic)
}
func (m *RateLimit_Action_SourceCluster) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RateLimit_Action_SourceCluster.Merge(m, src)
}
func (m *RateLimit_Action_SourceCluster) XXX_Size() int {
	return xxx_messageInfo_RateLimit_Action_SourceCluster.Size(m)
}
func (m *RateLimit_Action_SourceCluster) XXX_DiscardUnknown() {
	xxx_messageInfo_RateLimit_Action_SourceCluster.DiscardUnknown(m)
}

var xxx_messageInfo_RateLimit_Action_SourceCluster proto.InternalMessageInfo

type RateLimit_Action_DestinationCluster struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RateLimit_Action_DestinationCluster) Reset()         { *m = RateLimit_Action_DestinationCluster{} }
func (m *RateLimit_Action_DestinationCluster) String() string { return proto.CompactTextString(m) }
func (*RateLimit_Action_DestinationCluster) ProtoMessage()    {}
func (*RateLimit_Action_DestinationCluster) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{13, 0, 1}
}

func (m *RateLimit_Action_DestinationCluster) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RateLimit_Action_DestinationCluster.Unmarshal(m, b)
}
func (m *RateLimit_Action_DestinationCluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RateLimit_Action_DestinationCluster.Marshal(b, m, deterministic)
}
func (m *RateLimit_Action_DestinationCluster) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RateLimit_Action_DestinationCluster.Merge(m, src)
}
func (m *RateLimit_Action_DestinationCluster) XXX_Size() int {
	return xxx_messageInfo_RateLimit_Action_DestinationCluster.Size(m)
}
func (m *RateLimit_Action_DestinationCluster) XXX_DiscardUnknown() {
	xxx_messageInfo_RateLimit_Action_DestinationCluster.DiscardUnknown(m)
}

var xxx_messageInfo_RateLimit_Action_DestinationCluster proto.InternalMessageInfo

type RateLimit_Action_RequestHeaders struct {
	HeaderName           string   `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"`
	DescriptorKey        string   `protobuf:"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RateLimit_Action_RequestHeaders) Reset()         { *m = RateLimit_Action_RequestHeaders{} }
func (m *RateLimit_Action_RequestHeaders) String() string { return proto.CompactTextString(m) }
func (*RateLimit_Action_RequestHeaders) ProtoMessage()    {}
func (*RateLimit_Action_RequestHeaders) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{13, 0, 2}
}

func (m *RateLimit_Action_RequestHeaders) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RateLimit_Action_RequestHeaders.Unmarshal(m, b)
}
func (m *RateLimit_Action_RequestHeaders) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RateLimit_Action_RequestHeaders.Marshal(b, m, deterministic)
}
func (m *RateLimit_Action_RequestHeaders) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RateLimit_Action_RequestHeaders.Merge(m, src)
}
func (m *RateLimit_Action_RequestHeaders) XXX_Size() int {
	return xxx_messageInfo_RateLimit_Action_RequestHeaders.Size(m)
}
func (m *RateLimit_Action_RequestHeaders) XXX_DiscardUnknown() {
	xxx_messageInfo_RateLimit_Action_RequestHeaders.DiscardUnknown(m)
}

var xxx_messageInfo_RateLimit_Action_RequestHeaders proto.InternalMessageInfo

func (m *RateLimit_Action_RequestHeaders) GetHeaderName() string {
	if m != nil {
		return m.HeaderName
	}
	return ""
}

func (m *RateLimit_Action_RequestHeaders) GetDescriptorKey() string {
	if m != nil {
		return m.DescriptorKey
	}
	return ""
}

type RateLimit_Action_RemoteAddress struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RateLimit_Action_RemoteAddress) Reset()         { *m = RateLimit_Action_RemoteAddress{} }
func (m *RateLimit_Action_RemoteAddress) String() string { return proto.CompactTextString(m) }
func (*RateLimit_Action_RemoteAddress) ProtoMessage()    {}
func (*RateLimit_Action_RemoteAddress) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{13, 0, 3}
}

func (m *RateLimit_Action_RemoteAddress) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RateLimit_Action_RemoteAddress.Unmarshal(m, b)
}
func (m *RateLimit_Action_RemoteAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RateLimit_Action_RemoteAddress.Marshal(b, m, deterministic)
}
func (m *RateLimit_Action_RemoteAddress) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RateLimit_Action_RemoteAddress.Merge(m, src)
}
func (m *RateLimit_Action_RemoteAddress) XXX_Size() int {
	return xxx_messageInfo_RateLimit_Action_RemoteAddress.Size(m)
}
func (m *RateLimit_Action_RemoteAddress) XXX_DiscardUnknown() {
	xxx_messageInfo_RateLimit_Action_RemoteAddress.DiscardUnknown(m)
}

var xxx_messageInfo_RateLimit_Action_RemoteAddress proto.InternalMessageInfo

type RateLimit_Action_GenericKey struct {
	DescriptorValue      string   `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RateLimit_Action_GenericKey) Reset()         { *m = RateLimit_Action_GenericKey{} }
func (m *RateLimit_Action_GenericKey) String() string { return proto.CompactTextString(m) }
func (*RateLimit_Action_GenericKey) ProtoMessage()    {}
func (*RateLimit_Action_GenericKey) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{13, 0, 4}
}

func (m *RateLimit_Action_GenericKey) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RateLimit_Action_GenericKey.Unmarshal(m, b)
}
func (m *RateLimit_Action_GenericKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RateLimit_Action_GenericKey.Marshal(b, m, deterministic)
}
func (m *RateLimit_Action_GenericKey) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RateLimit_Action_GenericKey.Merge(m, src)
}
func (m *RateLimit_Action_GenericKey) XXX_Size() int {
	return xxx_messageInfo_RateLimit_Action_GenericKey.Size(m)
}
func (m *RateLimit_Action_GenericKey) XXX_DiscardUnknown() {
	xxx_messageInfo_RateLimit_Action_GenericKey.DiscardUnknown(m)
}

var xxx_messageInfo_RateLimit_Action_GenericKey proto.InternalMessageInfo

func (m *RateLimit_Action_GenericKey) GetDescriptorValue() string {
	if m != nil {
		return m.DescriptorValue
	}
	return ""
}

type RateLimit_Action_HeaderValueMatch struct {
	DescriptorValue      string              `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"`
	ExpectMatch          *wrappers.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"`
	Headers              []*HeaderMatcher    `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

func (m *RateLimit_Action_HeaderValueMatch) Reset()         { *m = RateLimit_Action_HeaderValueMatch{} }
func (m *RateLimit_Action_HeaderValueMatch) String() string { return proto.CompactTextString(m) }
func (*RateLimit_Action_HeaderValueMatch) ProtoMessage()    {}
func (*RateLimit_Action_HeaderValueMatch) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{13, 0, 5}
}

func (m *RateLimit_Action_HeaderValueMatch) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RateLimit_Action_HeaderValueMatch.Unmarshal(m, b)
}
func (m *RateLimit_Action_HeaderValueMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RateLimit_Action_HeaderValueMatch.Marshal(b, m, deterministic)
}
func (m *RateLimit_Action_HeaderValueMatch) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RateLimit_Action_HeaderValueMatch.Merge(m, src)
}
func (m *RateLimit_Action_HeaderValueMatch) XXX_Size() int {
	return xxx_messageInfo_RateLimit_Action_HeaderValueMatch.Size(m)
}
func (m *RateLimit_Action_HeaderValueMatch) XXX_DiscardUnknown() {
	xxx_messageInfo_RateLimit_Action_HeaderValueMatch.DiscardUnknown(m)
}

var xxx_messageInfo_RateLimit_Action_HeaderValueMatch proto.InternalMessageInfo

func (m *RateLimit_Action_HeaderValueMatch) GetDescriptorValue() string {
	if m != nil {
		return m.DescriptorValue
	}
	return ""
}

func (m *RateLimit_Action_HeaderValueMatch) GetExpectMatch() *wrappers.BoolValue {
	if m != nil {
		return m.ExpectMatch
	}
	return nil
}

func (m *RateLimit_Action_HeaderValueMatch) GetHeaders() []*HeaderMatcher {
	if m != nil {
		return m.Headers
	}
	return nil
}

type HeaderMatcher struct {
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are valid to be assigned to HeaderMatchSpecifier:
	//	*HeaderMatcher_ExactMatch
	//	*HeaderMatcher_SafeRegexMatch
	//	*HeaderMatcher_RangeMatch
	//	*HeaderMatcher_PresentMatch
	//	*HeaderMatcher_PrefixMatch
	//	*HeaderMatcher_SuffixMatch
	HeaderMatchSpecifier isHeaderMatcher_HeaderMatchSpecifier `protobuf_oneof:"header_match_specifier"`
	InvertMatch          bool                                 `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
	XXX_unrecognized     []byte                               `json:"-"`
	XXX_sizecache        int32                                `json:"-"`
}

func (m *HeaderMatcher) Reset()         { *m = HeaderMatcher{} }
func (m *HeaderMatcher) String() string { return proto.CompactTextString(m) }
func (*HeaderMatcher) ProtoMessage()    {}
func (*HeaderMatcher) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{14}
}

func (m *HeaderMatcher) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HeaderMatcher.Unmarshal(m, b)
}
func (m *HeaderMatcher) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HeaderMatcher.Marshal(b, m, deterministic)
}
func (m *HeaderMatcher) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HeaderMatcher.Merge(m, src)
}
func (m *HeaderMatcher) XXX_Size() int {
	return xxx_messageInfo_HeaderMatcher.Size(m)
}
func (m *HeaderMatcher) XXX_DiscardUnknown() {
	xxx_messageInfo_HeaderMatcher.DiscardUnknown(m)
}

var xxx_messageInfo_HeaderMatcher proto.InternalMessageInfo

func (m *HeaderMatcher) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

type isHeaderMatcher_HeaderMatchSpecifier interface {
	isHeaderMatcher_HeaderMatchSpecifier()
}

type HeaderMatcher_ExactMatch struct {
	ExactMatch string `protobuf:"bytes,4,opt,name=exact_match,json=exactMatch,proto3,oneof"`
}

type HeaderMatcher_SafeRegexMatch struct {
	SafeRegexMatch *v3alpha.RegexMatcher `protobuf:"bytes,11,opt,name=safe_regex_match,json=safeRegexMatch,proto3,oneof"`
}

type HeaderMatcher_RangeMatch struct {
	RangeMatch *v3alpha1.Int64Range `protobuf:"bytes,6,opt,name=range_match,json=rangeMatch,proto3,oneof"`
}

type HeaderMatcher_PresentMatch struct {
	PresentMatch bool `protobuf:"varint,7,opt,name=present_match,json=presentMatch,proto3,oneof"`
}

type HeaderMatcher_PrefixMatch struct {
	PrefixMatch string `protobuf:"bytes,9,opt,name=prefix_match,json=prefixMatch,proto3,oneof"`
}

type HeaderMatcher_SuffixMatch struct {
	SuffixMatch string `protobuf:"bytes,10,opt,name=suffix_match,json=suffixMatch,proto3,oneof"`
}

func (*HeaderMatcher_ExactMatch) isHeaderMatcher_HeaderMatchSpecifier() {}

func (*HeaderMatcher_SafeRegexMatch) isHeaderMatcher_HeaderMatchSpecifier() {}

func (*HeaderMatcher_RangeMatch) isHeaderMatcher_HeaderMatchSpecifier() {}

func (*HeaderMatcher_PresentMatch) isHeaderMatcher_HeaderMatchSpecifier() {}

func (*HeaderMatcher_PrefixMatch) isHeaderMatcher_HeaderMatchSpecifier() {}

func (*HeaderMatcher_SuffixMatch) isHeaderMatcher_HeaderMatchSpecifier() {}

func (m *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier {
	if m != nil {
		return m.HeaderMatchSpecifier
	}
	return nil
}

func (m *HeaderMatcher) GetExactMatch() string {
	if x, ok := m.GetHeaderMatchSpecifier().(*HeaderMatcher_ExactMatch); ok {
		return x.ExactMatch
	}
	return ""
}

func (m *HeaderMatcher) GetSafeRegexMatch() *v3alpha.RegexMatcher {
	if x, ok := m.GetHeaderMatchSpecifier().(*HeaderMatcher_SafeRegexMatch); ok {
		return x.SafeRegexMatch
	}
	return nil
}

func (m *HeaderMatcher) GetRangeMatch() *v3alpha1.Int64Range {
	if x, ok := m.GetHeaderMatchSpecifier().(*HeaderMatcher_RangeMatch); ok {
		return x.RangeMatch
	}
	return nil
}

func (m *HeaderMatcher) GetPresentMatch() bool {
	if x, ok := m.GetHeaderMatchSpecifier().(*HeaderMatcher_PresentMatch); ok {
		return x.PresentMatch
	}
	return false
}

func (m *HeaderMatcher) GetPrefixMatch() string {
	if x, ok := m.GetHeaderMatchSpecifier().(*HeaderMatcher_PrefixMatch); ok {
		return x.PrefixMatch
	}
	return ""
}

func (m *HeaderMatcher) GetSuffixMatch() string {
	if x, ok := m.GetHeaderMatchSpecifier().(*HeaderMatcher_SuffixMatch); ok {
		return x.SuffixMatch
	}
	return ""
}

func (m *HeaderMatcher) GetInvertMatch() bool {
	if m != nil {
		return m.InvertMatch
	}
	return false
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*HeaderMatcher) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*HeaderMatcher_ExactMatch)(nil),
		(*HeaderMatcher_SafeRegexMatch)(nil),
		(*HeaderMatcher_RangeMatch)(nil),
		(*HeaderMatcher_PresentMatch)(nil),
		(*HeaderMatcher_PrefixMatch)(nil),
		(*HeaderMatcher_SuffixMatch)(nil),
	}
}

type QueryParameterMatcher struct {
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are valid to be assigned to QueryParameterMatchSpecifier:
	//	*QueryParameterMatcher_StringMatch
	//	*QueryParameterMatcher_PresentMatch
	QueryParameterMatchSpecifier isQueryParameterMatcher_QueryParameterMatchSpecifier `protobuf_oneof:"query_parameter_match_specifier"`
	XXX_NoUnkeyedLiteral         struct{}                                             `json:"-"`
	XXX_unrecognized             []byte                                               `json:"-"`
	XXX_sizecache                int32                                                `json:"-"`
}

func (m *QueryParameterMatcher) Reset()         { *m = QueryParameterMatcher{} }
func (m *QueryParameterMatcher) String() string { return proto.CompactTextString(m) }
func (*QueryParameterMatcher) ProtoMessage()    {}
func (*QueryParameterMatcher) Descriptor() ([]byte, []int) {
	return fileDescriptor_3f3197b7daaf8719, []int{15}
}

func (m *QueryParameterMatcher) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_QueryParameterMatcher.Unmarshal(m, b)
}
func (m *QueryParameterMatcher) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_QueryParameterMatcher.Marshal(b, m, deterministic)
}
func (m *QueryParameterMatcher) XXX_Merge(src proto.Message) {
	xxx_messageInfo_QueryParameterMatcher.Merge(m, src)
}
func (m *QueryParameterMatcher) XXX_Size() int {
	return xxx_messageInfo_QueryParameterMatcher.Size(m)
}
func (m *QueryParameterMatcher) XXX_DiscardUnknown() {
	xxx_messageInfo_QueryParameterMatcher.DiscardUnknown(m)
}

var xxx_messageInfo_QueryParameterMatcher proto.InternalMessageInfo

func (m *QueryParameterMatcher) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

type isQueryParameterMatcher_QueryParameterMatchSpecifier interface {
	isQueryParameterMatcher_QueryParameterMatchSpecifier()
}

type QueryParameterMatcher_StringMatch struct {
	StringMatch *v3alpha.StringMatcher `protobuf:"bytes,5,opt,name=string_match,json=stringMatch,proto3,oneof"`
}

type QueryParameterMatcher_PresentMatch struct {
	PresentMatch bool `protobuf:"varint,6,opt,name=present_match,json=presentMatch,proto3,oneof"`
}

func (*QueryParameterMatcher_StringMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {}

func (*QueryParameterMatcher_PresentMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {}

func (m *QueryParameterMatcher) GetQueryParameterMatchSpecifier() isQueryParameterMatcher_QueryParameterMatchSpecifier {
	if m != nil {
		return m.QueryParameterMatchSpecifier
	}
	return nil
}

func (m *QueryParameterMatcher) GetStringMatch() *v3alpha.StringMatcher {
	if x, ok := m.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_StringMatch); ok {
		return x.StringMatch
	}
	return nil
}

func (m *QueryParameterMatcher) GetPresentMatch() bool {
	if x, ok := m.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_PresentMatch); ok {
		return x.PresentMatch
	}
	return false
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*QueryParameterMatcher) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*QueryParameterMatcher_StringMatch)(nil),
		(*QueryParameterMatcher_PresentMatch)(nil),
	}
}

func init() {
	proto.RegisterEnum("envoy.api.v3alpha.route.VirtualHost_TlsRequirementType", VirtualHost_TlsRequirementType_name, VirtualHost_TlsRequirementType_value)
	proto.RegisterEnum("envoy.api.v3alpha.route.RouteAction_ClusterNotFoundResponseCode", RouteAction_ClusterNotFoundResponseCode_name, RouteAction_ClusterNotFoundResponseCode_value)
	proto.RegisterEnum("envoy.api.v3alpha.route.RouteAction_InternalRedirectAction", RouteAction_InternalRedirectAction_name, RouteAction_InternalRedirectAction_value)
	proto.RegisterEnum("envoy.api.v3alpha.route.RedirectAction_RedirectResponseCode", RedirectAction_RedirectResponseCode_name, RedirectAction_RedirectResponseCode_value)
	proto.RegisterType((*VirtualHost)(nil), "envoy.api.v3alpha.route.VirtualHost")
	proto.RegisterMapType((map[string]*any.Any)(nil), "envoy.api.v3alpha.route.VirtualHost.TypedPerFilterConfigEntry")
	proto.RegisterType((*Route)(nil), "envoy.api.v3alpha.route.Route")
	proto.RegisterMapType((map[string]*any.Any)(nil), "envoy.api.v3alpha.route.Route.TypedPerFilterConfigEntry")
	proto.RegisterType((*WeightedCluster)(nil), "envoy.api.v3alpha.route.WeightedCluster")
	proto.RegisterType((*WeightedCluster_ClusterWeight)(nil), "envoy.api.v3alpha.route.WeightedCluster.ClusterWeight")
	proto.RegisterMapType((map[string]*any.Any)(nil), "envoy.api.v3alpha.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry")
	proto.RegisterType((*RouteMatch)(nil), "envoy.api.v3alpha.route.RouteMatch")
	proto.RegisterType((*RouteMatch_GrpcRouteMatchOptions)(nil), "envoy.api.v3alpha.route.RouteMatch.GrpcRouteMatchOptions")
	proto.RegisterType((*RouteMatch_TlsContextMatchOptions)(nil), "envoy.api.v3alpha.route.RouteMatch.TlsContextMatchOptions")
	proto.RegisterType((*CorsPolicy)(nil), "envoy.api.v3alpha.route.CorsPolicy")
	proto.RegisterType((*RouteAction)(nil), "envoy.api.v3alpha.route.RouteAction")
	proto.RegisterType((*RouteAction_RequestMirrorPolicy)(nil), "envoy.api.v3alpha.route.RouteAction.RequestMirrorPolicy")
	proto.RegisterType((*RouteAction_HashPolicy)(nil), "envoy.api.v3alpha.route.RouteAction.HashPolicy")
	proto.RegisterType((*RouteAction_HashPolicy_Header)(nil), "envoy.api.v3alpha.route.RouteAction.HashPolicy.Header")
	proto.RegisterType((*RouteAction_HashPolicy_Cookie)(nil), "envoy.api.v3alpha.route.RouteAction.HashPolicy.Cookie")
	proto.RegisterType((*RouteAction_HashPolicy_ConnectionProperties)(nil), "envoy.api.v3alpha.route.RouteAction.HashPolicy.ConnectionProperties")
	proto.RegisterType((*RouteAction_UpgradeConfig)(nil), "envoy.api.v3alpha.route.RouteAction.UpgradeConfig")
	proto.RegisterType((*RetryPolicy)(nil), "envoy.api.v3alpha.route.RetryPolicy")
	proto.RegisterType((*RetryPolicy_RetryPriority)(nil), "envoy.api.v3alpha.route.RetryPolicy.RetryPriority")
	proto.RegisterType((*RetryPolicy_RetryHostPredicate)(nil), "envoy.api.v3alpha.route.RetryPolicy.RetryHostPredicate")
	proto.RegisterType((*RetryPolicy_RetryBackOff)(nil), "envoy.api.v3alpha.route.RetryPolicy.RetryBackOff")
	proto.RegisterType((*HedgePolicy)(nil), "envoy.api.v3alpha.route.HedgePolicy")
	proto.RegisterType((*RedirectAction)(nil), "envoy.api.v3alpha.route.RedirectAction")
	proto.RegisterType((*DirectResponseAction)(nil), "envoy.api.v3alpha.route.DirectResponseAction")
	proto.RegisterType((*Decorator)(nil), "envoy.api.v3alpha.route.Decorator")
	proto.RegisterType((*Tracing)(nil), "envoy.api.v3alpha.route.Tracing")
	proto.RegisterType((*VirtualCluster)(nil), "envoy.api.v3alpha.route.VirtualCluster")
	proto.RegisterType((*RateLimit)(nil), "envoy.api.v3alpha.route.RateLimit")
	proto.RegisterType((*RateLimit_Action)(nil), "envoy.api.v3alpha.route.RateLimit.Action")
	proto.RegisterType((*RateLimit_Action_SourceCluster)(nil), "envoy.api.v3alpha.route.RateLimit.Action.SourceCluster")
	proto.RegisterType((*RateLimit_Action_DestinationCluster)(nil), "envoy.api.v3alpha.route.RateLimit.Action.DestinationCluster")
	proto.RegisterType((*RateLimit_Action_RequestHeaders)(nil), "envoy.api.v3alpha.route.RateLimit.Action.RequestHeaders")
	proto.RegisterType((*RateLimit_Action_RemoteAddress)(nil), "envoy.api.v3alpha.route.RateLimit.Action.RemoteAddress")
	proto.RegisterType((*RateLimit_Action_GenericKey)(nil), "envoy.api.v3alpha.route.RateLimit.Action.GenericKey")
	proto.RegisterType((*RateLimit_Action_HeaderValueMatch)(nil), "envoy.api.v3alpha.route.RateLimit.Action.HeaderValueMatch")
	proto.RegisterType((*HeaderMatcher)(nil), "envoy.api.v3alpha.route.HeaderMatcher")
	proto.RegisterType((*QueryParameterMatcher)(nil), "envoy.api.v3alpha.route.QueryParameterMatcher")
}

func init() {
	proto.RegisterFile("envoy/api/v3alpha/route/route.proto", fileDescriptor_3f3197b7daaf8719)
}

var fileDescriptor_3f3197b7daaf8719 = []byte{
	// 3925 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xdd, 0x73, 0x1b, 0xc9,
	0x56, 0xf7, 0x58, 0xb2, 0x34, 0x3a, 0xfa, 0xf0, 0xb8, 0xe3, 0xd8, 0x8a, 0xb2, 0x9b, 0x4d, 0x94,
	0x9b, 0x1b, 0x6f, 0xb8, 0x38, 0x17, 0x27, 0x64, 0xbf, 0x72, 0xa9, 0x95, 0x6c, 0x25, 0xb2, 0xd7,
	0x1f, 0xa2, 0xed, 0x64, 0x37, 0x2c, 0xd4, 0xdc, 0xf1, 0x4c, 0x5b, 0x9a, 0x1b, 0x69, 0x66, 0xb6,
	0xa7, 0xe5, 0x58, 0xc5, 0x0b, 0x05, 0x54, 0x51, 0x50, 0x3c, 0xc0, 0xfd, 0x13, 0x78, 0xa2, 0x2e,
	0x8f, 0xbc, 0x5d, 0xfe, 0x00, 0x1e, 0x78, 0xe2, 0x8d, 0x3f, 0x81, 0xa2, 0x8a, 0xc7, 0x5b, 0x50,
	0xe1, 0x85, 0xea, 0x8f, 0x99, 0x91, 0x64, 0xc9, 0x96, 0x0d, 0x2c, 0x14, 0x2f, 0x89, 0xa7, 0xfb,
	0x77, 0x7e, 0xdd, 0xd3, 0x73, 0xfa, 0x9c, 0x5f, 0x9f, 0x16, 0xdc, 0x27, 0xde, 0xa9, 0x3f, 0x78,
	0x6c, 0x05, 0xee, 0xe3, 0xd3, 0x27, 0x56, 0x37, 0xe8, 0x58, 0x8f, 0xa9, 0xdf, 0x67, 0x44, 0xfe,
	0xbb, 0x1e, 0x50, 0x9f, 0xf9, 0x68, 0x55, 0x80, 0xd6, 0xad, 0xc0, 0x5d, 0x57, 0xa0, 0x75, 0xd1,
	0x5d, 0xb9, 0x77, 0xde, 0xda, 0xf6, 0x29, 0x79, 0x7c, 0x6c, 0x85, 0xca, 0xb6, 0xf2, 0x43, 0x09,
	0x61, 0x83, 0x80, 0x3c, 0xee, 0x59, 0xcc, 0xee, 0x10, 0x9a, 0x8c, 0x44, 0xda, 0xe4, 0x4c, 0xe1,
	0x1e, 0x5e, 0x80, 0x0b, 0x19, 0x75, 0xbd, 0xb6, 0x02, 0xde, 0x1d, 0x02, 0x46, 0x80, 0x80, 0x50,
	0x9b, 0x78, 0x4c, 0x21, 0xee, 0x4c, 0x40, 0x50, 0xcb, 0x6b, 0x47, 0x53, 0xba, 0xd5, 0xf6, 0xfd,
	0x76, 0x97, 0x3c, 0x16, 0x4f, 0xc7, 0xfd, 0x93, 0xc7, 0x96, 0x37, 0x88, 0x4c, 0xc7, 0xbb, 0x9c,
	0x3e, 0xb5, 0x98, 0xeb, 0x7b, 0xaa, 0xff, 0x83, 0xf1, 0xfe, 0x90, 0xd1, 0xbe, 0xcd, 0xa6, 0x59,
	0xbf, 0xa3, 0x56, 0x10, 0x10, 0x1a, 0xaa, 0xfe, 0xd5, 0x53, 0xab, 0xeb, 0x3a, 0x16, 0x23, 0x8f,
	0xa3, 0x3f, 0x64, 0x47, 0xf5, 0x5f, 0x00, 0xf2, 0xaf, 0x5d, 0xca, 0xfa, 0x56, 0xb7, 0xe9, 0x87,
	0x0c, 0xdd, 0x86, 0xb4, 0x67, 0xf5, 0x48, 0x59, 0xbb, 0xab, 0xad, 0xe5, 0xea, 0xd9, 0xf7, 0xf5,
	0x34, 0x9d, 0xbf, 0xab, 0x61, 0xd1, 0x88, 0xaa, 0x90, 0x75, 0xfc, 0x9e, 0xe5, 0x7a, 0x61, 0x79,
	0xfe, 0x6e, 0x6a, 0x2d, 0x57, 0xd7, 0xdf, 0xd7, 0x17, 0x7e, 0xae, 0xcd, 0xeb, 0x1a, 0x8e, 0x3a,
	0xd0, 0x33, 0xc8, 0x88, 0x2f, 0x14, 0x96, 0x53, 0x77, 0x53, 0x6b, 0xf9, 0x8d, 0x3b, 0xeb, 0x53,
	0x3e, 0xe1, 0x3a, 0xe6, 0xff, 0x62, 0x85, 0x46, 0xdf, 0x40, 0x9e, 0x92, 0xef, 0xfa, 0x2e, 0x25,
	0x26, 0xeb, 0x86, 0xe5, 0xf4, 0x5d, 0x6d, 0xad, 0xb4, 0xf1, 0xc9, 0x54, 0xe3, 0xa1, 0x39, 0xaf,
	0x1f, 0x75, 0x43, 0x2c, 0x4d, 0x7b, 0xc4, 0x63, 0x47, 0x83, 0x80, 0x60, 0x50, 0x5c, 0x47, 0xdd,
	0x10, 0x61, 0x30, 0x4e, 0x25, 0xda, 0xb4, 0xbb, 0xfd, 0x90, 0x11, 0x1a, 0x96, 0x17, 0xc4, 0xdc,
	0x1e, 0x5e, 0x46, 0xbf, 0x29, 0xf1, 0x78, 0xf1, 0x74, 0xe4, 0x39, 0x44, 0x9b, 0x90, 0xa7, 0x16,
	0x23, 0x66, 0xd7, 0xed, 0xb9, 0x2c, 0x2c, 0x67, 0x04, 0x5d, 0x75, 0xfa, 0xab, 0x5a, 0x8c, 0xec,
	0x72, 0x28, 0x06, 0x1a, 0xfd, 0x19, 0x22, 0x17, 0x56, 0xf8, 0x34, 0x49, 0xc8, 0xcc, 0x0e, 0xb1,
	0x1c, 0x42, 0x43, 0x93, 0xf9, 0xa6, 0xe5, 0x38, 0xe5, 0xac, 0xe0, 0xfb, 0x78, 0x02, 0x1f, 0x77,
	0xf2, 0xf5, 0xa6, 0x40, 0xbf, 0xb6, 0xba, 0x7d, 0x72, 0x10, 0x70, 0x1f, 0xa9, 0xe7, 0xde, 0xd7,
	0x33, 0x3f, 0xd7, 0x52, 0xc6, 0x3f, 0x67, 0xf1, 0x0d, 0xc5, 0x29, 0x41, 0xe1, 0x91, 0x5f, 0x73,
	0x1c, 0xf4, 0x19, 0xdc, 0x9a, 0x30, 0x14, 0x25, 0x3d, 0xff, 0x94, 0x94, 0x8b, 0xfc, 0x5b, 0xe2,
	0x95, 0x71, 0x3b, 0x2c, 0x7a, 0xd1, 0x5b, 0x58, 0xa5, 0x24, 0x0c, 0x7c, 0x2f, 0x24, 0xe3, 0xd3,
	0x84, 0xff, 0xc2, 0x34, 0x97, 0x23, 0xd2, 0x91, 0x79, 0x7e, 0x01, 0x95, 0x49, 0x83, 0xa9, 0x89,
	0xe6, 0xc5, 0x44, 0x57, 0xcf, 0x59, 0xaa, 0x99, 0x7e, 0x02, 0x69, 0xdb, 0xa7, 0x61, 0x59, 0xbf,
	0xab, 0xad, 0xe5, 0x37, 0xee, 0x4f, 0xfd, 0x1a, 0x9b, 0x3e, 0x0d, 0x5b, 0x7e, 0xd7, 0xb5, 0x07,
	0x58, 0x18, 0xa0, 0x3e, 0xac, 0xf2, 0x2d, 0xeb, 0x98, 0x01, 0xa1, 0xe6, 0x89, 0xdb, 0x65, 0x84,
	0x9a, 0xb6, 0xef, 0x9d, 0xb8, 0xed, 0xf2, 0xa2, 0x78, 0xc5, 0xdf, 0x9a, 0xcd, 0x0f, 0x39, 0x47,
	0x8b, 0xd0, 0x17, 0x82, 0x61, 0x53, 0x10, 0x34, 0x3c, 0x46, 0x07, 0x78, 0x99, 0x4d, 0xe8, 0x42,
	0x35, 0xf8, 0xd0, 0xf5, 0xec, 0x6e, 0xdf, 0x21, 0x66, 0xf4, 0x71, 0x2c, 0xc6, 0x48, 0x2f, 0x60,
	0xa6, 0xed, 0xf7, 0x3d, 0x56, 0x2e, 0xdd, 0xd5, 0xd6, 0x74, 0x5c, 0x51, 0x20, 0x2c, 0x31, 0x35,
	0x09, 0xd9, 0xe4, 0x08, 0xf4, 0x12, 0x0a, 0x94, 0x30, 0x3a, 0x30, 0x03, 0xf1, 0x3e, 0x65, 0x43,
	0xbc, 0xfa, 0x0f, 0xa6, 0x3b, 0x22, 0x07, 0xab, 0x77, 0xcf, 0xd3, 0xe4, 0x81, 0x13, 0x75, 0x88,
	0xd3, 0x26, 0x11, 0xd1, 0xd2, 0x25, 0x44, 0x4d, 0x0e, 0x8e, 0x88, 0x3a, 0xc9, 0x03, 0xfa, 0x29,
	0xdc, 0xe1, 0xab, 0x18, 0xbd, 0xd0, 0x71, 0xff, 0xe4, 0x84, 0x50, 0xb9, 0x4f, 0xcc, 0xe3, 0x01,
	0x8f, 0x0b, 0x48, 0x50, 0x7f, 0xb0, 0x2e, 0x43, 0xd6, 0x7a, 0x14, 0xb2, 0xd6, 0x5f, 0x6d, 0x7b,
	0xec, 0xc9, 0x86, 0x70, 0x17, 0x5c, 0x09, 0x08, 0x55, 0xef, 0x5b, 0x17, 0x0c, 0x62, 0xcb, 0xd4,
	0xb9, 0x7d, 0xe5, 0xf7, 0xe0, 0xd6, 0xd4, 0x95, 0x46, 0x06, 0xa4, 0xde, 0x92, 0x81, 0x0c, 0x5f,
	0x98, 0xff, 0x89, 0x1e, 0xc1, 0xc2, 0x29, 0xe7, 0x2c, 0xcf, 0x8b, 0x71, 0x97, 0xcf, 0x8d, 0x5b,
	0xf3, 0x06, 0x58, 0x42, 0x3e, 0x9f, 0xff, 0x54, 0xab, 0x7e, 0x0e, 0xe8, 0x7c, 0x40, 0x41, 0x3a,
	0xa4, 0xf7, 0x0f, 0xf6, 0x1b, 0xc6, 0x1c, 0x5a, 0x82, 0x62, 0xe3, 0x9b, 0xa3, 0x06, 0xde, 0xaf,
	0xed, 0x9a, 0x07, 0xfb, 0xbb, 0x6f, 0x0c, 0x0d, 0x65, 0x21, 0x55, 0xdb, 0xdd, 0x35, 0xe6, 0x77,
	0xd2, 0x7a, 0xce, 0x80, 0x9d, 0xb4, 0x5e, 0x30, 0x8a, 0x78, 0xe9, 0x9c, 0x33, 0x55, 0xff, 0x26,
	0x07, 0x0b, 0x22, 0xea, 0x21, 0xa4, 0xc2, 0x6c, 0x49, 0xcc, 0x53, 0x46, 0xd7, 0x4d, 0x58, 0x10,
	0xe9, 0x47, 0x4c, 0xfe, 0x22, 0xff, 0x15, 0x14, 0x7b, 0x1c, 0x2a, 0x02, 0xf0, 0x9f, 0x69, 0xf3,
	0x86, 0x86, 0xa5, 0x2d, 0x7a, 0x0e, 0x0b, 0x02, 0xa4, 0xde, 0xf6, 0x07, 0x17, 0x93, 0xd4, 0x6c,
	0xbe, 0x2d, 0x9b, 0x73, 0x58, 0x1a, 0xa1, 0x06, 0xe8, 0x94, 0x38, 0x2e, 0x25, 0x36, 0x2b, 0xa7,
	0x04, 0xc1, 0xc3, 0x0b, 0x5c, 0x49, 0x02, 0x63, 0x8e, 0xd8, 0x14, 0x7d, 0x03, 0x8b, 0xf2, 0x2f,
	0x33, 0xda, 0xaa, 0xe5, 0xac, 0x60, 0xfb, 0xf5, 0xa9, 0x6c, 0x5b, 0x02, 0x8f, 0x15, 0x3c, 0xe6,
	0x2c, 0x39, 0x23, 0xed, 0xe8, 0x39, 0xe8, 0x3d, 0xc2, 0x2c, 0xc7, 0x62, 0x96, 0x48, 0x11, 0xf9,
	0x8d, 0xbb, 0xd3, 0xa2, 0xcf, 0x9e, 0xc2, 0xe1, 0xd8, 0x02, 0x7d, 0x09, 0x39, 0x87, 0xd8, 0x3e,
	0xb5, 0x98, 0x4f, 0xcb, 0x0b, 0xc2, 0x7c, 0x7a, 0xcc, 0xde, 0x8a, 0x90, 0x38, 0x31, 0x42, 0xfe,
	0xf4, 0x48, 0x51, 0x14, 0x91, 0xe2, 0xd3, 0x8b, 0x17, 0xfc, 0xca, 0x31, 0x62, 0x7a, 0x8e, 0xc8,
	0x7d, 0xaf, 0x39, 0xa2, 0xf0, 0xff, 0x24, 0x47, 0x7c, 0x0e, 0x59, 0x46, 0x2d, 0xdb, 0xf5, 0x78,
	0x68, 0x9f, 0xe6, 0x3f, 0xf2, 0x83, 0x1d, 0x49, 0x1c, 0x8e, 0x0c, 0x66, 0x08, 0x6d, 0xc6, 0xff,
	0xe9, 0xd0, 0x56, 0x2f, 0x42, 0xc6, 0x12, 0x3b, 0x0b, 0xa5, 0xfe, 0xbd, 0xae, 0xed, 0xa4, 0xf5,
	0x8c, 0x91, 0xdd, 0x49, 0xeb, 0xba, 0x91, 0x9b, 0x14, 0xad, 0xfe, 0x35, 0x0b, 0x8b, 0x5f, 0x13,
	0xb7, 0xdd, 0x61, 0xc4, 0x51, 0xc2, 0x07, 0xfd, 0x2e, 0xe8, 0xb1, 0x86, 0xd2, 0xc4, 0x97, 0x7d,
	0x36, 0x75, 0xfd, 0xc6, 0x6c, 0xd7, 0xd5, 0xff, 0xb2, 0x79, 0x48, 0x3a, 0xc6, 0x8c, 0xa8, 0x09,
	0x05, 0xe6, 0x33, 0xab, 0x6b, 0xbe, 0x13, 0x18, 0x15, 0x82, 0x2e, 0x5c, 0x4e, 0x21, 0x51, 0x1f,
	0xcd, 0xaf, 0x69, 0x38, 0x2f, 0x4c, 0x25, 0x3b, 0xfa, 0x11, 0x20, 0xda, 0xf7, 0x98, 0xdb, 0x23,
	0xe6, 0x5b, 0x32, 0x30, 0x03, 0x4a, 0x4e, 0xdc, 0x33, 0xb1, 0x4c, 0x39, 0x6c, 0xa8, 0x9e, 0xaf,
	0xc8, 0xa0, 0x25, 0xda, 0x2b, 0x7f, 0x94, 0x81, 0xe2, 0xc8, 0xec, 0x2e, 0x96, 0xc1, 0x4f, 0x21,
	0xa3, 0x26, 0x38, 0x3f, 0xc3, 0xf7, 0x56, 0x58, 0xf4, 0x12, 0x4a, 0x51, 0x20, 0x32, 0x65, 0x9c,
	0x4f, 0xcd, 0x18, 0xc0, 0x8a, 0x91, 0x9d, 0x88, 0xf9, 0x17, 0x84, 0x84, 0xf4, 0xf7, 0x1a, 0x12,
	0x72, 0xd7, 0x0d, 0x09, 0x0b, 0xdf, 0x73, 0x48, 0xc8, 0x5c, 0x1c, 0x12, 0xfe, 0x44, 0x9b, 0x1e,
	0xd4, 0x65, 0xf4, 0x6a, 0x5d, 0xcf, 0xc7, 0xaf, 0x1a, 0xec, 0xff, 0x87, 0xb7, 0xff, 0x4e, 0x5a,
	0xcf, 0x1a, 0xfa, 0xf4, 0xfd, 0xfe, 0x97, 0x19, 0x80, 0x44, 0x5a, 0xa0, 0x32, 0x64, 0xd4, 0xb6,
	0x11, 0x43, 0x36, 0xe7, 0xb0, 0x7a, 0x46, 0xcb, 0x90, 0x0e, 0x2c, 0xd6, 0x91, 0xdb, 0xa9, 0x39,
	0x87, 0xc5, 0x13, 0x3a, 0x04, 0x08, 0xad, 0x13, 0x2e, 0x65, 0xdb, 0xe4, 0xac, 0x0c, 0x62, 0x4a,
	0x6b, 0x6a, 0xe1, 0xf8, 0xdb, 0xae, 0xab, 0xb3, 0x75, 0xbc, 0x82, 0x98, 0x03, 0xf7, 0x64, 0x63,
	0x22, 0x64, 0x9a, 0x73, 0x38, 0xc7, 0x79, 0x44, 0x2f, 0xaa, 0x41, 0xc9, 0xb6, 0x42, 0x62, 0x86,
	0xc4, 0x0b, 0x5d, 0xe6, 0x9e, 0x12, 0x95, 0xf5, 0x2b, 0xe7, 0xde, 0xb5, 0xee, 0xfb, 0x5d, 0xb9,
	0xe1, 0x8a, 0xdc, 0xe2, 0x30, 0x32, 0x40, 0xdf, 0x42, 0xb4, 0xe1, 0xcd, 0x13, 0x2a, 0xc3, 0x5f,
	0x39, 0x27, 0x48, 0x7e, 0x3c, 0xcd, 0x03, 0xb1, 0xc4, 0xbf, 0x50, 0x70, 0xab, 0xdb, 0x92, 0xa7,
	0x7c, 0xbc, 0x48, 0x47, 0x7b, 0xd0, 0x97, 0x90, 0x55, 0xfe, 0xa6, 0xce, 0x80, 0x3f, 0xbc, 0x40,
	0x31, 0x73, 0x9c, 0x7a, 0x5f, 0x1c, 0x99, 0xa1, 0x37, 0x60, 0x7c, 0xd7, 0x27, 0x5c, 0xc1, 0x5b,
	0xd4, 0xea, 0x11, 0x11, 0x59, 0xe5, 0xf1, 0x6f, 0x7d, 0x2a, 0xd5, 0x6f, 0x73, 0x83, 0x56, 0x84,
	0x8f, 0x28, 0x17, 0xbf, 0x1b, 0x69, 0x0e, 0xd1, 0x1e, 0xa4, 0xdb, 0x34, 0xb0, 0xd5, 0x79, 0xe8,
	0xb3, 0x19, 0xf4, 0xe4, 0xfa, 0x4b, 0x1a, 0xd8, 0xc9, 0xa3, 0xdc, 0x7e, 0x21, 0x16, 0x34, 0xe8,
	0x5b, 0xc8, 0xb3, 0x6e, 0xc8, 0xbd, 0x85, 0x91, 0x33, 0x56, 0xce, 0x0b, 0xd6, 0xcf, 0x67, 0x61,
	0x3d, 0xea, 0x86, 0x9b, 0xd2, 0x6a, 0x84, 0x16, 0x58, 0xdc, 0x5e, 0x59, 0x85, 0x9b, 0x13, 0xc7,
	0xae, 0x60, 0x58, 0x99, 0x6c, 0x8e, 0x3e, 0x85, 0x5c, 0x40, 0x49, 0x48, 0x3c, 0x46, 0x1c, 0xa5,
	0x99, 0x2f, 0x72, 0x8b, 0x04, 0x5c, 0xbf, 0x09, 0x25, 0xee, 0xb2, 0x66, 0x18, 0x10, 0xdb, 0x3d,
	0x71, 0x09, 0x8d, 0xf2, 0xe1, 0x82, 0x91, 0xd9, 0x49, 0xeb, 0x29, 0x23, 0x8d, 0x17, 0x84, 0x1b,
	0x57, 0xff, 0x21, 0x0d, 0x90, 0x1c, 0x17, 0x91, 0x03, 0xb7, 0xac, 0x6e, 0xd7, 0x7f, 0x67, 0xfa,
	0xd4, 0x6d, 0xbb, 0x9e, 0x29, 0xcb, 0x43, 0x2a, 0x9c, 0xe7, 0x47, 0xc2, 0xda, 0x44, 0x97, 0x3f,
	0x14, 0xf8, 0xe8, 0x83, 0xad, 0x08, 0xae, 0x03, 0x41, 0x35, 0xd4, 0x83, 0xee, 0x43, 0x51, 0x8e,
	0xd2, 0x23, 0xac, 0xe3, 0x3b, 0xa1, 0xca, 0x5b, 0x05, 0xd1, 0xb8, 0x27, 0xdb, 0x12, 0x50, 0xe4,
	0x7f, 0xa9, 0x21, 0x90, 0x0a, 0x71, 0xe8, 0x01, 0x94, 0xc8, 0x59, 0xe0, 0x27, 0x51, 0x51, 0x6c,
	0x9f, 0x1c, 0x2e, 0xca, 0xd6, 0x08, 0xb6, 0x0a, 0xd9, 0x9e, 0x75, 0x66, 0x5a, 0x6d, 0x22, 0x54,
	0x71, 0x0e, 0x67, 0x7a, 0xd6, 0x59, 0xad, 0x4d, 0xd0, 0x4b, 0x58, 0x92, 0x83, 0xd8, 0x94, 0x38,
	0xc4, 0x63, 0xae, 0xd5, 0xe5, 0x8e, 0x7e, 0xd9, 0x52, 0x1b, 0xc2, 0x68, 0x33, 0xb1, 0x41, 0x6f,
	0xa0, 0xa4, 0x82, 0x0d, 0xf1, 0xac, 0xe3, 0x2e, 0x71, 0xae, 0xbb, 0x05, 0x9b, 0x73, 0xb8, 0x28,
	0x99, 0x1a, 0x92, 0x08, 0x7d, 0x0d, 0xa5, 0xb0, 0x63, 0x39, 0xfe, 0xbb, 0x98, 0x1a, 0xae, 0xb9,
	0xbb, 0x8b, 0x92, 0x47, 0x11, 0xd7, 0x6f, 0xc0, 0x92, 0x62, 0x4c, 0x1c, 0x65, 0x27, 0xad, 0x6b,
	0xe2, 0x9c, 0xa7, 0x1b, 0x39, 0x19, 0x4f, 0xd5, 0x8a, 0x2b, 0x8f, 0xc0, 0x68, 0xc4, 0x3f, 0x84,
	0x13, 0xe1, 0xac, 0xa2, 0xa9, 0xfe, 0xdb, 0x4d, 0xc8, 0x0f, 0x9d, 0xbb, 0xd0, 0x7d, 0xc8, 0x2a,
	0xed, 0x33, 0x26, 0x34, 0x9a, 0x73, 0x38, 0xea, 0x41, 0x3f, 0x86, 0x92, 0xfa, 0x53, 0x7d, 0x44,
	0xe9, 0x0e, 0xc3, 0xd8, 0xa2, 0x02, 0xc8, 0xef, 0x89, 0xbe, 0x86, 0xa5, 0x77, 0x2a, 0x2f, 0x25,
	0x15, 0xaf, 0xd4, 0x48, 0x40, 0xbe, 0x34, 0x93, 0x35, 0xe7, 0xb0, 0xf1, 0x6e, 0xb4, 0x29, 0x44,
	0x7f, 0xa1, 0xc1, 0x47, 0xd1, 0x5c, 0x3c, 0x9f, 0x99, 0x27, 0x7e, 0xdf, 0x73, 0xe2, 0x33, 0x9e,
	0x69, 0xfb, 0x0e, 0x29, 0x2f, 0x8b, 0xc2, 0xdd, 0x97, 0xb3, 0x9c, 0x3b, 0xa3, 0x6c, 0xb9, 0xef,
	0xb3, 0x17, 0x9c, 0x29, 0x3a, 0xe5, 0x6d, 0xfa, 0x0e, 0x11, 0x09, 0xe1, 0x0f, 0xc5, 0xc9, 0xf6,
	0xb6, 0x3d, 0x1d, 0x36, 0x41, 0x55, 0xa5, 0xaf, 0xa7, 0xaa, 0x1e, 0x40, 0x49, 0xa6, 0x37, 0x93,
	0x92, 0x77, 0xd4, 0x65, 0xd1, 0x56, 0x28, 0xca, 0x56, 0x2c, 0x1b, 0xd1, 0x7d, 0x28, 0x74, 0xfc,
	0x90, 0xc5, 0xa0, 0x8c, 0xc8, 0x81, 0x1a, 0xce, 0xf3, 0xd6, 0x08, 0xd4, 0x84, 0x25, 0xab, 0xcf,
	0x7c, 0x73, 0x04, 0x99, 0xbd, 0x6c, 0xdb, 0x34, 0x35, 0xbc, 0xc8, 0xcd, 0x9a, 0x43, 0x4c, 0x9f,
	0x41, 0xf9, 0x1c, 0x53, 0xe4, 0x06, 0x1f, 0xaa, 0xa1, 0x6f, 0x8e, 0x19, 0x29, 0x2f, 0x78, 0x02,
	0x59, 0xee, 0xe6, 0x7e, 0x9f, 0xa9, 0x04, 0x70, 0xeb, 0xdc, 0xd0, 0x5b, 0xaa, 0xc4, 0x8c, 0x23,
	0x24, 0x7a, 0x0e, 0x05, 0xd7, 0xe9, 0x12, 0x33, 0xb2, 0x2c, 0x5f, 0x66, 0x99, 0xe7, 0xf0, 0x23,
	0x65, 0x3d, 0x5e, 0x8d, 0xca, 0x5d, 0xb7, 0x1a, 0xd5, 0x85, 0x9b, 0x91, 0xee, 0xec, 0xb9, 0x94,
	0xfa, 0x34, 0x62, 0x94, 0x5b, 0xfb, 0xd3, 0x99, 0xbc, 0x4b, 0x1d, 0xb2, 0xf6, 0x04, 0x81, 0x1a,
	0x25, 0x52, 0xb9, 0xc3, 0x8d, 0x68, 0x0f, 0xf4, 0x80, 0xba, 0x3e, 0x75, 0xd9, 0x40, 0x64, 0xb5,
	0xd2, 0xc4, 0xaa, 0x87, 0x8c, 0x1d, 0x7e, 0x9f, 0xb9, 0x5e, 0xbb, 0xa5, 0xe0, 0x43, 0x5e, 0x1a,
	0x53, 0x8c, 0xd7, 0x86, 0x8b, 0xd7, 0xaa, 0x0d, 0x1f, 0xc0, 0x4a, 0x54, 0x1b, 0x3c, 0xed, 0x98,
	0xc3, 0x7c, 0xa5, 0x4b, 0xc3, 0xef, 0x0d, 0x65, 0xf9, 0xba, 0x83, 0x13, 0xc2, 0x16, 0xe4, 0x3b,
	0x56, 0xd8, 0x89, 0x16, 0x52, 0xd6, 0x35, 0x1f, 0xcf, 0xb4, 0x90, 0x4d, 0x2b, 0xec, 0xa8, 0xf5,
	0x83, 0x4e, 0xfc, 0x77, 0x5c, 0x6e, 0x5d, 0xba, 0x6a, 0xb9, 0x75, 0x13, 0x0c, 0x9e, 0x6e, 0xb8,
	0xa8, 0x88, 0x1d, 0x6d, 0xf5, 0x32, 0x47, 0x2b, 0xf5, 0xac, 0x33, 0xae, 0x10, 0x22, 0x5f, 0xdb,
	0x86, 0x1b, 0xc3, 0x04, 0xa6, 0x7f, 0x72, 0x12, 0x12, 0x56, 0xfe, 0xe0, 0x32, 0x9e, 0xa5, 0x76,
	0x42, 0x72, 0x20, 0x6c, 0xd0, 0xb7, 0xb0, 0xd8, 0x0f, 0xda, 0xd4, 0x72, 0x88, 0x92, 0xc2, 0x61,
	0xf9, 0x96, 0x58, 0x9e, 0x8d, 0x99, 0x96, 0xe7, 0x95, 0xb4, 0x95, 0x5a, 0x1d, 0x97, 0xfa, 0xc3,
	0x8f, 0x21, 0xea, 0x43, 0xd9, 0xf5, 0x18, 0xa1, 0x9e, 0xd5, 0x35, 0xa3, 0x02, 0x99, 0xa9, 0x64,
	0x68, 0x45, 0x38, 0xdb, 0x17, 0x33, 0x8d, 0xb2, 0xad, 0x48, 0x46, 0xcb, 0x6e, 0x78, 0xc5, 0x9d,
	0xd8, 0x7e, 0xae, 0x9e, 0x7b, 0xfb, 0x9a, 0xf5, 0xdc, 0xca, 0x5f, 0x6b, 0x70, 0x63, 0xc2, 0x4e,
	0x42, 0xf7, 0xa6, 0xe5, 0xae, 0x24, 0x73, 0x4d, 0x52, 0xde, 0xa9, 0xff, 0x26, 0xe5, 0xbd, 0x93,
	0xd6, 0xe7, 0x8d, 0x14, 0xce, 0x0f, 0x9d, 0xf2, 0x2b, 0x7f, 0x9b, 0x06, 0x48, 0x7c, 0x15, 0xb5,
	0x20, 0xa3, 0x22, 0xa5, 0x14, 0x87, 0xcf, 0xae, 0xe8, 0xec, 0x4a, 0xb1, 0xf3, 0x83, 0x8f, 0xe4,
	0xe1, 0x8c, 0xb6, 0xef, 0xbf, 0x75, 0xa3, 0x13, 0xd7, 0x95, 0x19, 0x37, 0x85, 0x35, 0x67, 0x94,
	0x3c, 0xe8, 0xf7, 0xe1, 0xa6, 0xed, 0x7b, 0x1e, 0x11, 0x48, 0x33, 0xa0, 0x7e, 0x40, 0x28, 0x73,
	0x49, 0x94, 0xae, 0xb7, 0xae, 0x3e, 0x40, 0x44, 0xd6, 0x8a, 0xb9, 0x9a, 0x73, 0x78, 0xd9, 0x9e,
	0xd0, 0x8e, 0x2a, 0xa0, 0x33, 0x42, 0x7b, 0xae, 0x67, 0x75, 0x45, 0xd6, 0xd4, 0x71, 0xfc, 0x5c,
	0xd9, 0x80, 0x8c, 0xca, 0x23, 0x6b, 0x90, 0x97, 0xaf, 0x6f, 0x4e, 0xaa, 0x88, 0x80, 0xec, 0xdb,
	0xb7, 0x7a, 0xa4, 0x72, 0x02, 0x19, 0xf9, 0x82, 0x17, 0x97, 0x4f, 0x7e, 0x0d, 0x52, 0x8c, 0x75,
	0xd5, 0x12, 0x5e, 0xb0, 0x53, 0x39, 0x0a, 0x21, 0x75, 0xd6, 0x94, 0xea, 0x56, 0xfc, 0x5d, 0x79,
	0x02, 0xcb, 0x93, 0xde, 0x13, 0xdd, 0x86, 0x5c, 0xe8, 0xf7, 0xa9, 0x4d, 0x4c, 0x37, 0x10, 0x43,
	0xeb, 0x58, 0x97, 0x0d, 0xdb, 0x41, 0x7d, 0x15, 0x0c, 0xb9, 0x15, 0xc6, 0x54, 0x7f, 0xa5, 0x03,
	0xc5, 0x91, 0x1d, 0x8c, 0xee, 0x41, 0x21, 0x0a, 0x07, 0x5c, 0xc4, 0xab, 0x13, 0x77, 0x5e, 0xb5,
	0x89, 0xdb, 0x80, 0xa7, 0x10, 0x69, 0x3a, 0xf5, 0x1a, 0x17, 0x85, 0xe3, 0x58, 0xfe, 0x35, 0xe0,
	0xf6, 0x05, 0x8a, 0x07, 0xad, 0xc2, 0x8d, 0xc3, 0x06, 0x7e, 0xbd, 0xbd, 0xd9, 0x30, 0x5f, 0xed,
	0xd7, 0x5e, 0xd7, 0xb6, 0x77, 0x6b, 0xf5, 0xdd, 0x86, 0x31, 0x87, 0x8a, 0x90, 0xdb, 0x3f, 0x38,
	0x32, 0x5f, 0x1c, 0xbc, 0xda, 0xdf, 0x32, 0xb4, 0xea, 0xef, 0xc0, 0xca, 0xe4, 0x60, 0x80, 0xaa,
	0x70, 0xa7, 0x55, 0x3b, 0x3c, 0x34, 0x8f, 0x9a, 0xf8, 0xe0, 0xd5, 0xcb, 0xa6, 0xb9, 0xbd, 0xaf,
	0xee, 0x29, 0x70, 0x63, 0x6b, 0x1b, 0x37, 0x36, 0x8f, 0x8c, 0x39, 0xf4, 0x01, 0x94, 0x9b, 0xb5,
	0xfd, 0xad, 0xdd, 0xc6, 0x84, 0x5e, 0xad, 0x5e, 0x86, 0xa5, 0x48, 0xe0, 0x8d, 0x2e, 0x53, 0xbd,
	0x0c, 0x2b, 0x23, 0x22, 0x64, 0x58, 0x12, 0x17, 0x8c, 0xe2, 0x4e, 0x5a, 0x47, 0xc6, 0x8d, 0x9d,
	0xb4, 0x7e, 0xc3, 0x58, 0xde, 0x49, 0xeb, 0x86, 0xb1, 0xb4, 0x93, 0xd6, 0x57, 0x8c, 0xd5, 0x9d,
	0xb4, 0x7e, 0xd3, 0x58, 0xa9, 0xfe, 0x32, 0x07, 0xf9, 0xa1, 0x6c, 0x8f, 0x6e, 0x81, 0x2e, 0x95,
	0x82, 0xef, 0xa9, 0xf5, 0xcd, 0x8a, 0xe7, 0x03, 0x0f, 0xfd, 0x04, 0xf2, 0x5e, 0xbf, 0x67, 0xf2,
	0x47, 0xbe, 0x11, 0x66, 0x29, 0xb1, 0x81, 0xd7, 0xef, 0x61, 0x89, 0x47, 0x35, 0x58, 0x0c, 0x08,
	0x35, 0x39, 0x77, 0x94, 0x5b, 0x52, 0x97, 0x79, 0x5a, 0x31, 0x20, 0xf4, 0x88, 0x0e, 0xa2, 0xd4,
	0xf2, 0x06, 0x4a, 0x4a, 0xc6, 0x44, 0xaa, 0x40, 0x6a, 0xca, 0x8d, 0x59, 0x84, 0x8c, 0xfa, 0x5b,
	0x59, 0xe2, 0x22, 0x1d, 0x7e, 0x44, 0x2e, 0x2c, 0x4b, 0x6a, 0xb1, 0x96, 0x01, 0x4f, 0x08, 0xb6,
	0x25, 0xb4, 0x26, 0xcf, 0x37, 0x9f, 0xcc, 0x3e, 0x00, 0xd7, 0x7b, 0xad, 0xc8, 0x1c, 0x23, 0x7a,
	0xae, 0x0d, 0x35, 0xe1, 0x9e, 0x18, 0x24, 0x24, 0x5d, 0x15, 0x5e, 0xe4, 0xc8, 0xe2, 0xa4, 0x27,
	0xef, 0x10, 0xe5, 0x59, 0x2e, 0x85, 0x3f, 0xe4, 0xc0, 0xc3, 0x08, 0x27, 0xf8, 0xf7, 0xac, 0x33,
	0x75, 0xd1, 0x18, 0xa2, 0xa7, 0xb0, 0x22, 0xbe, 0x06, 0xf7, 0x62, 0x33, 0x64, 0x16, 0xeb, 0x87,
	0x42, 0xeb, 0xcb, 0x42, 0x45, 0x11, 0x2f, 0xc7, 0xbd, 0x87, 0xa2, 0x93, 0x7b, 0x73, 0xc8, 0xcf,
	0x65, 0x72, 0xc0, 0x63, 0xcb, 0x7e, 0xcb, 0xd3, 0xb3, 0x92, 0xa1, 0xbf, 0x31, 0xfb, 0x4b, 0xd6,
	0x2d, 0xfb, 0xed, 0xc1, 0xc9, 0x09, 0x96, 0xaa, 0x52, 0x3d, 0xa1, 0x43, 0x58, 0x4a, 0xa6, 0x13,
	0x9d, 0x6b, 0x73, 0x57, 0xaa, 0xbe, 0x18, 0x31, 0x41, 0x74, 0x04, 0x3e, 0x86, 0x5b, 0x09, 0xe9,
	0x58, 0xcd, 0x53, 0x55, 0x01, 0x67, 0x25, 0x5f, 0x8d, 0x89, 0xf0, 0x48, 0x69, 0xb4, 0xf2, 0xc7,
	0x1a, 0x14, 0x47, 0xbc, 0xe3, 0xe2, 0x38, 0xf9, 0x19, 0x14, 0x64, 0x59, 0x52, 0xd5, 0x22, 0x53,
	0xd3, 0xab, 0x7c, 0xcd, 0x39, 0x9c, 0x17, 0x58, 0x19, 0xc2, 0xea, 0x45, 0xc8, 0x4b, 0x23, 0x11,
	0xc1, 0x54, 0xae, 0xcc, 0xc8, 0xa6, 0xca, 0x9f, 0x6a, 0x80, 0xce, 0xfb, 0xd0, 0xff, 0xce, 0x5c,
	0xfe, 0x4a, 0x83, 0xc2, 0xf0, 0xa7, 0x46, 0x3b, 0x50, 0x3c, 0xb6, 0x42, 0x62, 0x0a, 0x59, 0x73,
	0x6a, 0x75, 0x55, 0xee, 0x9e, 0xbe, 0x79, 0xeb, 0xf0, 0xbe, 0x9e, 0xfd, 0x85, 0x96, 0xd6, 0xb5,
	0x47, 0x73, 0xb8, 0xc0, 0x6d, 0xb7, 0x95, 0x29, 0x7a, 0x01, 0x05, 0xee, 0xec, 0x31, 0xd5, 0x65,
	0x19, 0x47, 0xa8, 0xf9, 0x5f, 0x68, 0xf3, 0x8f, 0xe6, 0x70, 0xbe, 0x67, 0x9d, 0x45, 0x3c, 0xd5,
	0xf7, 0x1a, 0xe4, 0x87, 0xf4, 0x11, 0x6a, 0x81, 0xe1, 0x7a, 0x2e, 0x73, 0x85, 0xa2, 0x13, 0x5f,
	0x38, 0x54, 0xd3, 0x9c, 0xf1, 0xaa, 0x62, 0x51, 0x99, 0x2b, 0xff, 0x08, 0x91, 0x05, 0xb7, 0x2c,
	0xc7, 0x71, 0xa5, 0xe4, 0x89, 0xdd, 0xcf, 0xee, 0x58, 0x9e, 0x1d, 0x69, 0x8d, 0x07, 0xc3, 0x75,
	0xa5, 0xc8, 0xfd, 0xce, 0xeb, 0xa4, 0xd5, 0x84, 0x47, 0xb1, 0x6f, 0x0a, 0x16, 0xf4, 0x0c, 0xca,
	0x52, 0x10, 0x72, 0x9d, 0x31, 0x21, 0x40, 0xea, 0x78, 0x59, 0xf4, 0x1f, 0x78, 0xad, 0xe1, 0x60,
	0x58, 0xfd, 0xbb, 0x34, 0x94, 0xc6, 0xd2, 0xcc, 0x43, 0x28, 0x75, 0x18, 0x0b, 0xc2, 0x58, 0xcf,
	0x4a, 0xf5, 0xd0, 0x9c, 0xc3, 0x45, 0xd1, 0x1e, 0xc1, 0xd1, 0xc7, 0xb0, 0x18, 0xda, 0x1d, 0xd2,
	0x23, 0x09, 0x32, 0xab, 0x6a, 0xc6, 0x25, 0xd9, 0x11, 0x43, 0xef, 0x43, 0x51, 0xa5, 0x17, 0x05,
	0x94, 0x59, 0xa1, 0x20, 0x8f, 0xd5, 0x09, 0x28, 0xf0, 0xe9, 0x10, 0x88, 0x47, 0x94, 0x22, 0x2e,
	0xf0, 0xc6, 0x18, 0xf4, 0x00, 0x8a, 0xa2, 0xb8, 0x17, 0x83, 0xe6, 0xd5, 0x39, 0xb9, 0xc0, 0x9b,
	0x63, 0xd8, 0xc3, 0xc9, 0xe7, 0xfd, 0xa6, 0x36, 0x7e, 0xe2, 0x7f, 0x0b, 0xc5, 0xd1, 0x0a, 0x47,
	0x4a, 0xa8, 0xf6, 0xe7, 0x33, 0x5e, 0x8c, 0xc7, 0x8f, 0x53, 0xaa, 0x1b, 0x05, 0x3a, 0xac, 0x01,
	0x3e, 0x82, 0x7c, 0xc8, 0xa8, 0x1b, 0x98, 0xa2, 0x96, 0x2b, 0xc2, 0xb3, 0x8e, 0x41, 0x34, 0x89,
	0xa2, 0x6f, 0xf5, 0x1d, 0x2c, 0x4f, 0x22, 0x44, 0x37, 0x61, 0x69, 0xef, 0xe0, 0x75, 0x63, 0xcb,
	0x6c, 0x35, 0xf0, 0x5e, 0x6d, 0xbf, 0xb1, 0x7f, 0xb4, 0xfb, 0xc6, 0x98, 0x43, 0x39, 0x58, 0x50,
	0xb2, 0x81, 0xab, 0x88, 0xc3, 0x46, 0xc3, 0x3c, 0x38, 0x6a, 0x36, 0xb0, 0x31, 0x8f, 0x56, 0x00,
	0x1d, 0x35, 0xf6, 0x5a, 0x07, 0xb8, 0x86, 0xdf, 0x24, 0x0a, 0x20, 0xc5, 0xdb, 0x63, 0x8a, 0xa4,
	0x3d, 0x5d, 0xaf, 0x40, 0x39, 0xfe, 0x96, 0x63, 0x0a, 0x80, 0x6b, 0x03, 0xb5, 0xe4, 0x63, 0x3d,
	0x55, 0x0a, 0xcb, 0x93, 0x6e, 0xf6, 0x51, 0x15, 0x32, 0x32, 0x91, 0x88, 0xef, 0x5c, 0x14, 0x9b,
	0xf8, 0xd1, 0x82, 0xf1, 0x4f, 0xe9, 0x35, 0x07, 0xab, 0x1e, 0xf4, 0x0c, 0xd2, 0xc7, 0xbe, 0x33,
	0x50, 0xfe, 0x5f, 0x9d, 0x76, 0x64, 0xd8, 0xb2, 0x98, 0x75, 0x28, 0x54, 0x1e, 0x16, 0xf8, 0xea,
	0x06, 0xe4, 0xe2, 0xbb, 0x7b, 0xf4, 0x00, 0x72, 0x5c, 0x1f, 0x8a, 0xfd, 0x3d, 0x1e, 0xda, 0x92,
	0x9e, 0xea, 0x7f, 0x68, 0x90, 0x55, 0xf7, 0xbd, 0x68, 0x1f, 0x16, 0xed, 0xae, 0x4b, 0x3c, 0x66,
	0x86, 0x56, 0x2f, 0xe8, 0xba, 0x5e, 0x5b, 0xed, 0xee, 0x19, 0xb7, 0x60, 0x49, 0x5a, 0x1f, 0x2a,
	0x63, 0xce, 0x47, 0x2d, 0xcf, 0xf1, 0x7b, 0x09, 0xdf, 0x95, 0xb6, 0x74, 0x49, 0x5a, 0xc7, 0x7c,
	0x2d, 0x30, 0xfc, 0x53, 0x42, 0xad, 0x6e, 0x37, 0x21, 0x4c, 0x5d, 0x85, 0x70, 0x51, 0x99, 0x47,
	0x8c, 0xd5, 0x3f, 0xd7, 0xa0, 0x34, 0xfa, 0x8b, 0xb7, 0xe1, 0x8b, 0x8d, 0xf4, 0xf5, 0x2e, 0x36,
	0xa2, 0x7c, 0x32, 0x3f, 0x21, 0x9f, 0xc4, 0x65, 0xd4, 0x94, 0x91, 0xc6, 0xd9, 0x80, 0xcb, 0x11,
	0xea, 0xe1, 0x8c, 0xac, 0x77, 0x57, 0x7f, 0x95, 0x83, 0x5c, 0x5c, 0xb9, 0x40, 0x5f, 0xc0, 0x42,
	0xc8, 0xac, 0x36, 0xb9, 0x42, 0x88, 0x2d, 0x03, 0x96, 0x36, 0x7c, 0x3f, 0x39, 0x6e, 0x28, 0x92,
	0xfa, 0x5b, 0x32, 0x50, 0x85, 0x74, 0x50, 0x4d, 0x5f, 0x91, 0x01, 0xda, 0x83, 0xac, 0x5c, 0x9e,
	0xe8, 0xf7, 0x8a, 0x1f, 0x5f, 0x5e, 0xa8, 0x59, 0x97, 0x4e, 0x3c, 0xfc, 0xeb, 0x47, 0xc5, 0x51,
	0xf9, 0xa5, 0x0e, 0x19, 0xe5, 0xe2, 0x3f, 0x85, 0x92, 0x3a, 0x8d, 0x0c, 0x9f, 0x93, 0x2f, 0x14,
	0x79, 0x63, 0x03, 0xac, 0x4b, 0xb7, 0x4e, 0x2a, 0xb2, 0xc5, 0x70, 0xb8, 0x01, 0xf9, 0x70, 0xc3,
	0x21, 0x21, 0x73, 0x3d, 0xe1, 0xc3, 0xf1, 0x30, 0xd2, 0xb9, 0x9e, 0xcf, 0x3e, 0xcc, 0x56, 0x42,
	0x92, 0x8c, 0x85, 0x9c, 0x73, 0xad, 0xc8, 0x86, 0xc5, 0x71, 0x69, 0x94, 0xba, 0xac, 0x20, 0x37,
	0x3e, 0xd8, 0xa8, 0x26, 0xe2, 0x99, 0x60, 0xf4, 0x02, 0x99, 0xaf, 0x1b, 0x25, 0x3d, 0x9f, 0x11,
	0xd3, 0x72, 0x1c, 0x4a, 0xc2, 0x50, 0xa9, 0xef, 0x4f, 0xae, 0x32, 0x06, 0xb7, 0xaf, 0x49, 0x73,
	0xbe, 0x6e, 0x74, 0xb8, 0x01, 0x7d, 0x0d, 0xf9, 0x36, 0xf1, 0x08, 0x75, 0x6d, 0xe1, 0x14, 0xf2,
	0x87, 0x40, 0x4f, 0x67, 0xa7, 0x7f, 0x29, 0x8d, 0xbf, 0x22, 0x5c, 0xeb, 0x40, 0x3b, 0x7e, 0x42,
	0x3f, 0x03, 0xa4, 0x8e, 0xca, 0xe2, 0xd2, 0x55, 0x15, 0xa4, 0x33, 0x97, 0x5d, 0x94, 0x8d, 0xf3,
	0x0f, 0x5d, 0x80, 0x8b, 0x5d, 0xd5, 0x9c, 0xc3, 0x46, 0x67, 0xac, 0xad, 0xb2, 0x08, 0xc5, 0x11,
	0xf7, 0xa8, 0x2c, 0x03, 0x3a, 0xff, 0x21, 0x2b, 0x3f, 0xe3, 0xd9, 0x7b, 0x64, 0x7d, 0x67, 0x3e,
	0xcf, 0xa3, 0x75, 0x28, 0x39, 0x24, 0xb4, 0xa9, 0x1b, 0x30, 0x9f, 0x26, 0xfb, 0x27, 0x01, 0x17,
	0x93, 0xee, 0xaf, 0xc8, 0x80, 0x4f, 0x69, 0x64, 0xe5, 0x2b, 0x5f, 0x02, 0x24, 0x6b, 0x85, 0x36,
	0xc0, 0x18, 0xa2, 0x93, 0x37, 0xd7, 0x63, 0xa3, 0x2f, 0x26, 0x00, 0xf1, 0xaa, 0x95, 0x7f, 0xd4,
	0xc0, 0x18, 0x5f, 0x8e, 0xeb, 0x10, 0xa1, 0x9f, 0x40, 0x81, 0x9c, 0x05, 0xc4, 0x66, 0xea, 0xa3,
	0x5c, 0x7e, 0x6c, 0xcf, 0x4b, 0xbc, 0x1c, 0x72, 0x27, 0x09, 0x87, 0xa9, 0xab, 0x84, 0xc3, 0xe1,
	0x18, 0xa1, 0x08, 0xea, 0xab, 0x60, 0xc8, 0x70, 0x31, 0x76, 0xc4, 0xae, 0xfe, 0x7d, 0x0a, 0x8a,
	0x23, 0xd6, 0x17, 0x6b, 0xf2, 0x7b, 0x90, 0x27, 0x67, 0x56, 0xfc, 0x46, 0x69, 0xa5, 0xac, 0x40,
	0x34, 0xca, 0x69, 0x1f, 0x81, 0x91, 0xdc, 0xc9, 0xc7, 0xd7, 0x94, 0x57, 0xba, 0x99, 0x17, 0x5a,
	0x2d, 0xba, 0x8f, 0x97, 0xac, 0x35, 0xc8, 0x8b, 0x1f, 0xb5, 0x8f, 0xf8, 0xf7, 0x9d, 0x49, 0xb9,
	0x67, 0xdb, 0x63, 0xcf, 0x9e, 0x62, 0x8e, 0xe5, 0x13, 0x13, 0x46, 0xd1, 0x6d, 0x4b, 0x51, 0x5d,
	0xc7, 0x2a, 0x92, 0xac, 0x52, 0x90, 0x05, 0xd5, 0x2c, 0x61, 0x3f, 0x82, 0x82, 0x12, 0x69, 0x12,
	0x95, 0x1b, 0xbf, 0xf9, 0xca, 0xcb, 0xee, 0x18, 0x1d, 0xf6, 0x4f, 0x12, 0x34, 0x9c, 0x43, 0xcb,
	0x6e, 0x89, 0xbe, 0x07, 0x05, 0xd7, 0x3b, 0x25, 0x34, 0x9a, 0x81, 0x2e, 0xb4, 0x56, 0x5e, 0xb6,
	0xc9, 0x5f, 0x57, 0x96, 0x61, 0x45, 0x6d, 0x15, 0x01, 0x19, 0xa9, 0x79, 0xcc, 0x1b, 0x29, 0x99,
	0xbf, 0xe4, 0xb5, 0x31, 0xce, 0x0f, 0xad, 0x71, 0xf5, 0x57, 0x1a, 0xdc, 0x9c, 0x78, 0x49, 0x8f,
	0xee, 0x8c, 0x7c, 0x51, 0x2e, 0x7b, 0x28, 0x8f, 0x3f, 0x7f, 0xa0, 0xab, 0x8f, 0xfa, 0x0d, 0x14,
	0x46, 0x2e, 0x95, 0x65, 0x70, 0x9a, 0xfd, 0x52, 0x79, 0xe4, 0x87, 0x14, 0xf9, 0x70, 0xe8, 0x56,
	0xf9, 0xdc, 0x92, 0x67, 0x26, 0x2d, 0x79, 0xfd, 0x1e, 0x7c, 0x34, 0xf6, 0x7b, 0x84, 0x09, 0x2f,
	0x2f, 0x5f, 0x3b, 0x6d, 0x2c, 0xa8, 0x9f, 0x97, 0xa8, 0xeb, 0xf2, 0xfa, 0x6f, 0xc2, 0x03, 0xd7,
	0x97, 0x73, 0x0d, 0xa8, 0x7f, 0x36, 0x98, 0xb6, 0x49, 0xea, 0xf2, 0x87, 0x26, 0x2d, 0xbe, 0xeb,
	0x5a, 0xda, 0x71, 0x46, 0x6c, 0xbf, 0x27, 0xff, 0x19, 0x00, 0x00, 0xff, 0xff, 0x68, 0x7d, 0xc4,
	0x5b, 0x13, 0x32, 0x00, 0x00,
}
