// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: sql/types/types.proto

package types

import proto "github.com/gogo/protobuf/proto"
import fmt "fmt"
import math "math"

import github_com_lib_pq_oid "github.com/lib/pq/oid"

import io "io"

// 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.GoGoProtoPackageIsVersion2 // please upgrade the proto package

// See the comment header for the T.Family method for more details.
type Family int32

const (
	// BoolFamily is the family of boolean true/false types.
	//
	//   Canonical: types.Bool
	//   Oid      : T_bool
	//
	// Examples:
	//   BOOL
	//
	BoolFamily Family = 0
	// IntFamily is the family of signed integer types.
	//
	//   Canonical: types.Int
	//   Oid      : T_int8, T_int4, T_int2
	//   Width    : 64, 32, 16
	//
	// Examples:
	//   INT
	//   INT8
	//   INT4
	//
	IntFamily Family = 1
	// FloatFamily is the family of base-2 floating-point types (IEEE 754).
	//
	//   Canonical: types.Float
	//   Oid      : T_float8, T_float4
	//   Width    : 64, 32
	//
	// Examples:
	//   FLOAT8
	//   FLOAT4
	//
	FloatFamily Family = 2
	// DecimalFamily is the family of base-10 floating and fixed point types.
	//
	//   Canonical    : types.Decimal
	//   Oid          : T_numeric
	//   Precision    : max # decimal digits (0 = no specified limit)
	//   Width (Scale): # digits after decimal point (0 = no specified limit)
	//
	// Examples:
	//   DECIMAL
	//   DECIMAL(10)
	//   DECIMAL(10,3)
	//
	DecimalFamily Family = 3
	// DateFamily is the family of date types that store only year/month/day with
	// no time component.
	//
	//   Canonical: types.Date
	//   Oid      : T_date
	//
	// Examples:
	//   DATE
	//
	DateFamily Family = 4
	// TimestampFamily is the family of date types that store a year/month/day
	// date component, as well as an hour/minute/second time component. There is
	// no timezone component (see TIMESTAMPTZ). Seconds can have varying precision
	// (defaults to microsecond precision). Currently, only microsecond precision
	// is supported.
	//
	//   Canonical: types.Timestamp
	//   Oid      : T_timestamp
	//   Precision: fractional seconds (3 = ms, 0,6 = us, 9 = ns, etc.)
	//
	// Examples:
	//   TIMESTAMP
	//   TIMESTAMP(6)
	//
	TimestampFamily Family = 5
	// IntervalFamily is the family of types describing a duration of time.
	// Currently, only microsecond precision is supported.
	//
	//   Canonical: types.Interval
	//   Oid      : T_interval
	//
	// Examples:
	//   INTERVAL
	//
	IntervalFamily Family = 6
	// StringFamily is the family of types containing Unicode textual strings.
	// This family includes types constructed by STRING, VARCHAR, CHAR, and "char"
	// column type definitions (CHAR and "char" are distinct PG types). Note
	// that while STRING and VARCHAR have no default width limit, CHAR has a
	// default width of 1.
	// TODO(andyk): "char" should have default width of 1 as well, but doesn't.
	//
	//   Canonical: types.String
	//   Oid      : T_text, T_varchar, T_bpchar, T_char
	//   Width    : max # characters (0 = no specified limit)
	//
	// Examples:
	//   STRING
	//   TEXT
	//   VARCHAR(10)
	//   CHAR
	//
	StringFamily Family = 7
	// BytesFamily is the family of types containing a list of raw byte values.
	//
	//   Canonical: types.BYTES
	//   Oid      : T_bytea
	//
	// Examples:
	//   BYTES
	//
	BytesFamily Family = 8
	// TimestampTZFamily is the family of date types that store a year/month/day
	// date component, as well as an hour/minute/second time component, along with
	// a timezone. Seconds can have varying precision (defaults to microsecond
	// precision). Currently, only microsecond precision is supported.
	//
	//   Canonical: types.TimestampTZ
	//   Oid      : T_timestamptz
	//   Precision: fractional seconds (3 = ms, 0,6 = us, 9 = ns, etc.)
	//
	// Examples:
	//   TIMESTAMPTZ
	//   TIMESTAMPTZ(6)
	//
	TimestampTZFamily Family = 9
	// CollatedStringFamily is the family of types containing Unicode textual
	// strings with an associated COLLATE value that specifies the locale used
	// for various character-based operations such as sorting, pattern matching,
	// and builtin functions like lower and upper.
	//
	//   Oid      : T_text, T_varchar, T_bpchar, T_char
	//   Width    : max # characters (0 = no specified limit)
	//   Locale   : name of locale (e.g. EN or DE)
	//
	// Examples:
	//   STRING COLLATE en
	//   VARCHAR(10) COLLATE de
	//
	CollatedStringFamily Family = 10
	// OidFamily is the family of types containing Postgres Object ID (Oid)
	// values. Oids are integer values that identify some object in the database,
	// like a type, relation, or procedure.
	//
	//   Canonical: types.Oid
	//   Oid      : T_oid, T_regclass, T_regproc, T_regprocedure, T_regtype,
	//              T_regnamespace
	//
	// Examples:
	//   OID
	//   REGCLASS
	//   REGPROC
	//
	// TODO(andyk): Oids should be part of the IntFamily, since they are treated
	//              as equivalent to ints by PG.
	OidFamily Family = 12
	// UnknownFamily is a special type family that tags expressions that
	// statically evaluate to NULL. An UnknownFamily expression *must* be NULL.
	// But the inverse is not true, since other types allow NULL values as well.
	// UnknownFamily types are not supported as a table column type, but can be
	// transferred through DistSQL streams.
	//
	//   Canonical: types.Unknown
	//   Oid      : T_unknown
	//
	UnknownFamily Family = 13
	// UuidFamily is the family of types containing universally unique
	// identifiers. A UUID is a 128-bit quantity that is very unlikely to ever be
	// generated again, and so can be relied on to be distinct from all other UUID
	// values.
	//
	//   Canonical: types.Uuid
	//   Oid      : T_uuid
	//
	// Examples:
	//   UUID
	//
	UuidFamily Family = 14
	// ArrayFamily is a family of non-scalar types that contain an ordered list of
	// elements. The elements of an array must all share the same type. Elements
	// can have have any type, including ARRAY. However, while the types package
	// supports nested arrays, other parts of CRDB do not currently support them.
	// Also, the length of array dimension(s) are ignored by PG and CRDB (e.g.
	// an array of length 11 could be inserted into a column declared as INT[11]).
	//
	// Array OID values are special. Rather than having a single T_array OID,
	// Postgres defines a separate OID for each possible array element type.
	// Here are some examples:
	//
	//   T__int8: array of int8 values
	//   T__text: array of text values
	//
	// Notice that each array OID has double underscores to distinguish it from
	// the OID of the scalar type it contains.
	//
	//   Oid          : T__int, T__text, T__numeric, etc.
	//   ArrayContents: types.T of the array element type
	//
	// Examples:
	//   INT[]
	//   VARCHAR(10)[] COLLATE EN
	//   DECIMAL(10,1)[]
	//   TIMESTAMP[5]
	//
	ArrayFamily Family = 15
	// INetFamily is the family of types containing IPv4 or IPv6 network address
	// identifiers (e.g. 192.168.100.128/25 or FE80:CD00:0:CDE:1257:0:211E:729C).
	//
	//   Canonical: types.INet
	//   Oid      : T_inet
	//
	// Examples:
	//   INET
	//
	INetFamily Family = 16
	// TimeFamily is the family of date types that store only hour/minute/second
	// with no date component. There is no timezone component. Seconds can have
	// varying precision (defaults to microsecond precision). Currently, only
	// microsecond precision is supported.
	//
	//   Canonical: types.Time
	//   Oid      : T_time
	//   Precision: fractional seconds (3 = ms, 0,6 = us, 9 = ns, etc.)
	//
	// Examples:
	//   TIME
	//   TIME(6)
	//
	TimeFamily Family = 17
	// JsonFamily is the family of types containing JavaScript Object Notation
	// (JSON) values. Currently, CRDB only supports JSONB values, which are stored
	// in a decomposed binary format.
	//
	//   Canonical: types.Jsonb
	//   Oid      : T_jsonb
	//
	// Examples:
	//   JSON
	//   JSONB
	//
	JsonFamily Family = 18
	// TimeTZFamily is the family of date types that store only hour/minute/second
	// and timestamp components, with no date component. Seconds can have
	// varying precision (defaults to microsecond precision). Currently, only
	// microsecond precision is supported.
	//
	//   Canonical: types.TimeTZ
	//   Oid      : T_timetz
	//   Precision: fractional seconds (3 = ms, 0,6 = us, 9 = ns, etc.)
	//
	// Examples:
	//   TIMETZ
	//
	TimeTZFamily Family = 19
	// TupleFamily is a family of non-scalar structural types that describes the
	// fields of a row or record. The fields can be of any type, including nested
	// tuple and array types. Fields can also have optional labels. Currently,
	// CRDB does not support tuple types as column types, but it is possible to
	// construct tuples using the ROW function or tuple construction syntax.
	//
	//   Oid          : T_record
	//   TupleContents: []types.T of each tuple field
	//   TupleLabels  : []string of each tuple label
	//
	// Examples:
	//   (1, 'foo')
	//   ((1, 'foo') AS num, str)
	//   ROW(1, 'foo')
	//   (ROW(1, 'foo') AS num, str)
	//
	TupleFamily Family = 20
	// BitFamily is the family of types containing ordered lists of bit values
	// (0 or 1). Note that while VARBIT has no default width limit, BIT has a
	// default width limit of 1.
	//
	//   Canonical: types.VarBit
	//   Oid      : T_varbit, T_bit
	//   Width    : max # of bits (0 = no specified limit)
	//
	// Examples:
	//   VARBIT
	//   VARBIT(10)
	//   BIT
	//   BIT(10)
	//
	BitFamily Family = 21
	// AnyFamily is a special type family used during static analysis as a
	// wildcard type that matches any other type, including scalar, array, and
	// tuple types. Execution-time values should never have this type. As an
	// example of its use, many SQL builtin functions allow an input value to be
	// of any type, and so use this type in their static definitions.
	//
	//   Canonical: types.Any
	//   Oid      : T_anyelement
	//
	AnyFamily Family = 100
)

var Family_name = map[int32]string{
	0:   "BoolFamily",
	1:   "IntFamily",
	2:   "FloatFamily",
	3:   "DecimalFamily",
	4:   "DateFamily",
	5:   "TimestampFamily",
	6:   "IntervalFamily",
	7:   "StringFamily",
	8:   "BytesFamily",
	9:   "TimestampTZFamily",
	10:  "CollatedStringFamily",
	12:  "OidFamily",
	13:  "UnknownFamily",
	14:  "UuidFamily",
	15:  "ArrayFamily",
	16:  "INetFamily",
	17:  "TimeFamily",
	18:  "JsonFamily",
	19:  "TimeTZFamily",
	20:  "TupleFamily",
	21:  "BitFamily",
	100: "AnyFamily",
}
var Family_value = map[string]int32{
	"BoolFamily":           0,
	"IntFamily":            1,
	"FloatFamily":          2,
	"DecimalFamily":        3,
	"DateFamily":           4,
	"TimestampFamily":      5,
	"IntervalFamily":       6,
	"StringFamily":         7,
	"BytesFamily":          8,
	"TimestampTZFamily":    9,
	"CollatedStringFamily": 10,
	"OidFamily":            12,
	"UnknownFamily":        13,
	"UuidFamily":           14,
	"ArrayFamily":          15,
	"INetFamily":           16,
	"TimeFamily":           17,
	"JsonFamily":           18,
	"TimeTZFamily":         19,
	"TupleFamily":          20,
	"BitFamily":            21,
	"AnyFamily":            100,
}

func (x Family) Enum() *Family {
	p := new(Family)
	*p = x
	return p
}
func (x Family) String() string {
	return proto.EnumName(Family_name, int32(x))
}
func (x *Family) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(Family_value, data, "Family")
	if err != nil {
		return err
	}
	*x = Family(value)
	return nil
}
func (Family) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_types_b295a445183f7b1c, []int{0}
}

// IntervalDurationType represents a duration that can be used
// when defining an Interval Duration Field.
// See https://www.postgresql.org/docs/current/datatype-datetime.html.
type IntervalDurationType int32

const (
	// UNSET defaults to SECOND during evaluation.
	// This indicates no typmod.
	IntervalDurationType_UNSET  IntervalDurationType = 0
	IntervalDurationType_YEAR   IntervalDurationType = 1
	IntervalDurationType_MONTH  IntervalDurationType = 2
	IntervalDurationType_DAY    IntervalDurationType = 3
	IntervalDurationType_HOUR   IntervalDurationType = 4
	IntervalDurationType_MINUTE IntervalDurationType = 5
	// SECOND is the only unit where precision can be added.
	IntervalDurationType_SECOND IntervalDurationType = 6
	// MILLISECOND is not technically part of the SQL standard for intervals, but we
	// provide it as a field to allow code to parse intervals with a default unit
	// of milliseconds, which is useful for some internal use cases like
	// statement_timeout.
	IntervalDurationType_MILLISECOND IntervalDurationType = 7
)

var IntervalDurationType_name = map[int32]string{
	0: "UNSET",
	1: "YEAR",
	2: "MONTH",
	3: "DAY",
	4: "HOUR",
	5: "MINUTE",
	6: "SECOND",
	7: "MILLISECOND",
}
var IntervalDurationType_value = map[string]int32{
	"UNSET":       0,
	"YEAR":        1,
	"MONTH":       2,
	"DAY":         3,
	"HOUR":        4,
	"MINUTE":      5,
	"SECOND":      6,
	"MILLISECOND": 7,
}

func (x IntervalDurationType) Enum() *IntervalDurationType {
	p := new(IntervalDurationType)
	*p = x
	return p
}
func (x IntervalDurationType) String() string {
	return proto.EnumName(IntervalDurationType_name, int32(x))
}
func (x *IntervalDurationType) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(IntervalDurationType_value, data, "IntervalDurationType")
	if err != nil {
		return err
	}
	*x = IntervalDurationType(value)
	return nil
}
func (IntervalDurationType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_types_b295a445183f7b1c, []int{1}
}

// IntervalDurationField represents precisions in intervals which are
// outside of the regular time precision syntax.
// i.e. instead of INTERVAL(6), we can have INTERVAL SECOND(6), INTERVAL MONTH, etc.
// This is represented as a bitmask on the first 4 bits of precision in postgres.
type IntervalDurationField struct {
	// DurationType is the unit of measurement in which durations
	// should truncate themselves to.
	// This (unlike precision) gets truncated downward.
	DurationType IntervalDurationType `protobuf:"varint,1,opt,name=duration_type,json=durationType,enum=cockroach.sql.sem.types.IntervalDurationType" json:"duration_type"`
	// FromDurationType is the left side of the "duration field".
	// i.e. in the `DurationType_1 TO DurationType_2` syntax, this represents `DurationType_1`.
	// Note this is ignored, see https://www.postgresql.org/message-id/20110510040219.GD5617%40tornado.gateway.2wire.net.
	FromDurationType IntervalDurationType `protobuf:"varint,2,opt,name=from_duration_type,json=fromDurationType,enum=cockroach.sql.sem.types.IntervalDurationType" json:"from_duration_type"`
}

func (m *IntervalDurationField) Reset()         { *m = IntervalDurationField{} }
func (m *IntervalDurationField) String() string { return proto.CompactTextString(m) }
func (*IntervalDurationField) ProtoMessage()    {}
func (*IntervalDurationField) Descriptor() ([]byte, []int) {
	return fileDescriptor_types_b295a445183f7b1c, []int{0}
}
func (m *IntervalDurationField) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *IntervalDurationField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	b = b[:cap(b)]
	n, err := m.MarshalTo(b)
	if err != nil {
		return nil, err
	}
	return b[:n], nil
}
func (dst *IntervalDurationField) XXX_Merge(src proto.Message) {
	xxx_messageInfo_IntervalDurationField.Merge(dst, src)
}
func (m *IntervalDurationField) XXX_Size() int {
	return m.Size()
}
func (m *IntervalDurationField) XXX_DiscardUnknown() {
	xxx_messageInfo_IntervalDurationField.DiscardUnknown(m)
}

var xxx_messageInfo_IntervalDurationField proto.InternalMessageInfo

// InternalType is the protobuf encoding for SQL types. It is always wrapped by
// a T struct, and should never be used directly by outside packages. See the
// comment header for the T struct for more details.
type InternalType struct {
	// Family specifies a group of types that are compatible with one another.
	// See the header for the T.Family method for more details.
	Family Family `protobuf:"varint,1,opt,name=family,enum=cockroach.sql.sem.types.Family" json:"family"`
	// Width is the size or scale of the type, such as number of bits or
	// characters. See the T.Width method for more details.
	Width int32 `protobuf:"varint,2,opt,name=width" json:"width"`
	// Precision is the accuracy of the data type. See the T.Precision method for
	// more details. This field was also by FLOAT pre-2.1 (this was incorrect.)
	Precision int32 `protobuf:"varint,3,opt,name=precision" json:"precision"`
	// ArrayDimensions is deprecated in 19.2, since it was never used. It
	// previously contained the length of each dimension in the array. A
	// dimension of -1 meant that no bound was specified for that dimension. If
	// arrayDimensions was nil, then the array had one unbounded dimension.
	ArrayDimensions []int32 `protobuf:"varint,4,rep,name=array_dimensions,json=arrayDimensions" json:"array_dimensions,omitempty"`
	// Locale identifies a specific geographical, political, or cultural region that
	// impacts various character-based operations such as sorting, pattern matching,
	// and builtin functions like lower and upper. See the T.Locale method for
	// more details.
	Locale *string `protobuf:"bytes,5,opt,name=locale" json:"locale,omitempty"`
	// VisibleType is deprecated in 19.2, since it is now superseded by the Oid
	// field. It previously contained an alias for any types where our internal
	// representation is different than the user specification. Examples are INT4,
	// FLOAT4, etc. Mostly for Postgres compatibility.
	VisibleType int32 `protobuf:"varint,6,opt,name=visible_type,json=visibleType" json:"visible_type"`
	// ArrayElemType is deprecated in 19.2, since it is now superseded by the
	// ArrayContents field. It previously contained the type family of array
	// elements. The other array fields (width/precision/locale/etc) were used
	// to store the other attributes of the array's element type.
	ArrayElemType *Family `protobuf:"varint,7,opt,name=array_elem_type,json=arrayElemType,enum=cockroach.sql.sem.types.Family" json:"array_elem_type,omitempty"`
	// TupleContents returns a slice containing the type of each tuple field. This
	// is nil for non-TUPLE types.
	TupleContents []T `protobuf:"bytes,8,rep,name=tuple_contents,json=tupleContents,customtype=T" json:"tuple_contents"`
	// TupleLabels returns a slice containing the labels of each tuple field. This
	// is nil for non-TUPLE types, or if the TUPLE type does not specify labels.
	TupleLabels []string `protobuf:"bytes,9,rep,name=tuple_labels,json=tupleLabels" json:"tuple_labels,omitempty"`
	// Oid returns the type's Postgres Object ID. See the header for the T.Oid
	// method for more details.
	Oid github_com_lib_pq_oid.Oid `protobuf:"varint,10,opt,name=oid,customtype=github.com/lib/pq/oid.Oid" json:"oid"`
	// ArrayContents returns the type of array elements. This is nil for non-ARRAY
	// types.
	ArrayContents *T `protobuf:"bytes,11,opt,name=array_contents,json=arrayContents,customtype=T" json:"array_contents,omitempty"`
	// TimePrecisionIsSet indicates whether the precision was explicitly set.
	// It is currently in use for the TIME-related families and INTERVALs
	// where a Precision of 0 indicated the default precision of 6
	// in versions pre-20.1.
	// The rules for Precision to use are as follows:
	//   * If Precision is > 0, then that is the precision.
	//   * If Precision is 0, it will default to 6 if TimePrecisionIsSet is false
	//    (for compatibility reasons).
	//   * Otherwise, Precision = 0 and TimePrecisionIsSet = true, so it is
	//     actually 0.
	TimePrecisionIsSet bool `protobuf:"varint,12,opt,name=time_precision_is_set,json=timePrecisionIsSet" json:"time_precision_is_set"`
	// IntervalDurationField is populated for intervals, representing extra
	// typmod or precision data that may be required.
	IntervalDurationField *IntervalDurationField `protobuf:"bytes,13,opt,name=interval_duration_field,json=intervalDurationField" json:"interval_duration_field,omitempty"`
}

func (m *InternalType) Reset()         { *m = InternalType{} }
func (m *InternalType) String() string { return proto.CompactTextString(m) }
func (*InternalType) ProtoMessage()    {}
func (*InternalType) Descriptor() ([]byte, []int) {
	return fileDescriptor_types_b295a445183f7b1c, []int{1}
}
func (m *InternalType) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *InternalType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	b = b[:cap(b)]
	n, err := m.MarshalTo(b)
	if err != nil {
		return nil, err
	}
	return b[:n], nil
}
func (dst *InternalType) XXX_Merge(src proto.Message) {
	xxx_messageInfo_InternalType.Merge(dst, src)
}
func (m *InternalType) XXX_Size() int {
	return m.Size()
}
func (m *InternalType) XXX_DiscardUnknown() {
	xxx_messageInfo_InternalType.DiscardUnknown(m)
}

var xxx_messageInfo_InternalType proto.InternalMessageInfo

func init() {
	proto.RegisterType((*IntervalDurationField)(nil), "cockroach.sql.sem.types.IntervalDurationField")
	proto.RegisterType((*InternalType)(nil), "cockroach.sql.sem.types.InternalType")
	proto.RegisterEnum("cockroach.sql.sem.types.Family", Family_name, Family_value)
	proto.RegisterEnum("cockroach.sql.sem.types.IntervalDurationType", IntervalDurationType_name, IntervalDurationType_value)
}
func (m *IntervalDurationField) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalTo(dAtA)
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *IntervalDurationField) MarshalTo(dAtA []byte) (int, error) {
	var i int
	_ = i
	var l int
	_ = l
	dAtA[i] = 0x8
	i++
	i = encodeVarintTypes(dAtA, i, uint64(m.DurationType))
	dAtA[i] = 0x10
	i++
	i = encodeVarintTypes(dAtA, i, uint64(m.FromDurationType))
	return i, nil
}

func (m *InternalType) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalTo(dAtA)
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *InternalType) MarshalTo(dAtA []byte) (int, error) {
	var i int
	_ = i
	var l int
	_ = l
	dAtA[i] = 0x8
	i++
	i = encodeVarintTypes(dAtA, i, uint64(m.Family))
	dAtA[i] = 0x10
	i++
	i = encodeVarintTypes(dAtA, i, uint64(m.Width))
	dAtA[i] = 0x18
	i++
	i = encodeVarintTypes(dAtA, i, uint64(m.Precision))
	if len(m.ArrayDimensions) > 0 {
		for _, num := range m.ArrayDimensions {
			dAtA[i] = 0x20
			i++
			i = encodeVarintTypes(dAtA, i, uint64(num))
		}
	}
	if m.Locale != nil {
		dAtA[i] = 0x2a
		i++
		i = encodeVarintTypes(dAtA, i, uint64(len(*m.Locale)))
		i += copy(dAtA[i:], *m.Locale)
	}
	dAtA[i] = 0x30
	i++
	i = encodeVarintTypes(dAtA, i, uint64(m.VisibleType))
	if m.ArrayElemType != nil {
		dAtA[i] = 0x38
		i++
		i = encodeVarintTypes(dAtA, i, uint64(*m.ArrayElemType))
	}
	if len(m.TupleContents) > 0 {
		for _, msg := range m.TupleContents {
			dAtA[i] = 0x42
			i++
			i = encodeVarintTypes(dAtA, i, uint64(msg.Size()))
			n, err := msg.MarshalTo(dAtA[i:])
			if err != nil {
				return 0, err
			}
			i += n
		}
	}
	if len(m.TupleLabels) > 0 {
		for _, s := range m.TupleLabels {
			dAtA[i] = 0x4a
			i++
			l = len(s)
			for l >= 1<<7 {
				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
				l >>= 7
				i++
			}
			dAtA[i] = uint8(l)
			i++
			i += copy(dAtA[i:], s)
		}
	}
	dAtA[i] = 0x50
	i++
	i = encodeVarintTypes(dAtA, i, uint64(m.Oid))
	if m.ArrayContents != nil {
		dAtA[i] = 0x5a
		i++
		i = encodeVarintTypes(dAtA, i, uint64(m.ArrayContents.Size()))
		n1, err := m.ArrayContents.MarshalTo(dAtA[i:])
		if err != nil {
			return 0, err
		}
		i += n1
	}
	dAtA[i] = 0x60
	i++
	if m.TimePrecisionIsSet {
		dAtA[i] = 1
	} else {
		dAtA[i] = 0
	}
	i++
	if m.IntervalDurationField != nil {
		dAtA[i] = 0x6a
		i++
		i = encodeVarintTypes(dAtA, i, uint64(m.IntervalDurationField.Size()))
		n2, err := m.IntervalDurationField.MarshalTo(dAtA[i:])
		if err != nil {
			return 0, err
		}
		i += n2
	}
	return i, nil
}

func encodeVarintTypes(dAtA []byte, offset int, v uint64) int {
	for v >= 1<<7 {
		dAtA[offset] = uint8(v&0x7f | 0x80)
		v >>= 7
		offset++
	}
	dAtA[offset] = uint8(v)
	return offset + 1
}
func (m *IntervalDurationField) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	n += 1 + sovTypes(uint64(m.DurationType))
	n += 1 + sovTypes(uint64(m.FromDurationType))
	return n
}

func (m *InternalType) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	n += 1 + sovTypes(uint64(m.Family))
	n += 1 + sovTypes(uint64(m.Width))
	n += 1 + sovTypes(uint64(m.Precision))
	if len(m.ArrayDimensions) > 0 {
		for _, e := range m.ArrayDimensions {
			n += 1 + sovTypes(uint64(e))
		}
	}
	if m.Locale != nil {
		l = len(*m.Locale)
		n += 1 + l + sovTypes(uint64(l))
	}
	n += 1 + sovTypes(uint64(m.VisibleType))
	if m.ArrayElemType != nil {
		n += 1 + sovTypes(uint64(*m.ArrayElemType))
	}
	if len(m.TupleContents) > 0 {
		for _, e := range m.TupleContents {
			l = e.Size()
			n += 1 + l + sovTypes(uint64(l))
		}
	}
	if len(m.TupleLabels) > 0 {
		for _, s := range m.TupleLabels {
			l = len(s)
			n += 1 + l + sovTypes(uint64(l))
		}
	}
	n += 1 + sovTypes(uint64(m.Oid))
	if m.ArrayContents != nil {
		l = m.ArrayContents.Size()
		n += 1 + l + sovTypes(uint64(l))
	}
	n += 2
	if m.IntervalDurationField != nil {
		l = m.IntervalDurationField.Size()
		n += 1 + l + sovTypes(uint64(l))
	}
	return n
}

func sovTypes(x uint64) (n int) {
	for {
		n++
		x >>= 7
		if x == 0 {
			break
		}
	}
	return n
}
func sozTypes(x uint64) (n int) {
	return sovTypes(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
func (m *IntervalDurationField) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowTypes
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= (uint64(b) & 0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: IntervalDurationField: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: IntervalDurationField: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field DurationType", wireType)
			}
			m.DurationType = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.DurationType |= (IntervalDurationType(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 2:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field FromDurationType", wireType)
			}
			m.FromDurationType = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.FromDurationType |= (IntervalDurationType(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		default:
			iNdEx = preIndex
			skippy, err := skipTypes(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthTypes
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func (m *InternalType) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowTypes
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= (uint64(b) & 0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: InternalType: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: InternalType: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Family", wireType)
			}
			m.Family = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Family |= (Family(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 2:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Width", wireType)
			}
			m.Width = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Width |= (int32(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 3:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Precision", wireType)
			}
			m.Precision = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Precision |= (int32(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 4:
			if wireType == 0 {
				var v int32
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return ErrIntOverflowTypes
					}
					if iNdEx >= l {
						return io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					v |= (int32(b) & 0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				m.ArrayDimensions = append(m.ArrayDimensions, v)
			} else if wireType == 2 {
				var packedLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return ErrIntOverflowTypes
					}
					if iNdEx >= l {
						return io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					packedLen |= (int(b) & 0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if packedLen < 0 {
					return ErrInvalidLengthTypes
				}
				postIndex := iNdEx + packedLen
				if postIndex > l {
					return io.ErrUnexpectedEOF
				}
				var elementCount int
				var count int
				for _, integer := range dAtA {
					if integer < 128 {
						count++
					}
				}
				elementCount = count
				if elementCount != 0 && len(m.ArrayDimensions) == 0 {
					m.ArrayDimensions = make([]int32, 0, elementCount)
				}
				for iNdEx < postIndex {
					var v int32
					for shift := uint(0); ; shift += 7 {
						if shift >= 64 {
							return ErrIntOverflowTypes
						}
						if iNdEx >= l {
							return io.ErrUnexpectedEOF
						}
						b := dAtA[iNdEx]
						iNdEx++
						v |= (int32(b) & 0x7F) << shift
						if b < 0x80 {
							break
						}
					}
					m.ArrayDimensions = append(m.ArrayDimensions, v)
				}
			} else {
				return fmt.Errorf("proto: wrong wireType = %d for field ArrayDimensions", wireType)
			}
		case 5:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Locale", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= (uint64(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthTypes
			}
			postIndex := iNdEx + intStringLen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			s := string(dAtA[iNdEx:postIndex])
			m.Locale = &s
			iNdEx = postIndex
		case 6:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field VisibleType", wireType)
			}
			m.VisibleType = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.VisibleType |= (int32(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 7:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field ArrayElemType", wireType)
			}
			var v Family
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= (Family(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.ArrayElemType = &v
		case 8:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field TupleContents", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthTypes
			}
			postIndex := iNdEx + byteLen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			var v T
			m.TupleContents = append(m.TupleContents, v)
			if err := m.TupleContents[len(m.TupleContents)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 9:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field TupleLabels", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= (uint64(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthTypes
			}
			postIndex := iNdEx + intStringLen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.TupleLabels = append(m.TupleLabels, string(dAtA[iNdEx:postIndex]))
			iNdEx = postIndex
		case 10:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Oid", wireType)
			}
			m.Oid = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Oid |= (github_com_lib_pq_oid.Oid(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 11:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ArrayContents", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthTypes
			}
			postIndex := iNdEx + byteLen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			var v T
			m.ArrayContents = &v
			if err := m.ArrayContents.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 12:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field TimePrecisionIsSet", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.TimePrecisionIsSet = bool(v != 0)
		case 13:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field IntervalDurationField", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthTypes
			}
			postIndex := iNdEx + msglen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.IntervalDurationField == nil {
				m.IntervalDurationField = &IntervalDurationField{}
			}
			if err := m.IntervalDurationField.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		default:
			iNdEx = preIndex
			skippy, err := skipTypes(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthTypes
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func skipTypes(dAtA []byte) (n int, err error) {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return 0, ErrIntOverflowTypes
			}
			if iNdEx >= l {
				return 0, io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= (uint64(b) & 0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		wireType := int(wire & 0x7)
		switch wireType {
		case 0:
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return 0, ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return 0, io.ErrUnexpectedEOF
				}
				iNdEx++
				if dAtA[iNdEx-1] < 0x80 {
					break
				}
			}
			return iNdEx, nil
		case 1:
			iNdEx += 8
			return iNdEx, nil
		case 2:
			var length int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return 0, ErrIntOverflowTypes
				}
				if iNdEx >= l {
					return 0, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				length |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			iNdEx += length
			if length < 0 {
				return 0, ErrInvalidLengthTypes
			}
			return iNdEx, nil
		case 3:
			for {
				var innerWire uint64
				var start int = iNdEx
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return 0, ErrIntOverflowTypes
					}
					if iNdEx >= l {
						return 0, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					innerWire |= (uint64(b) & 0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				innerWireType := int(innerWire & 0x7)
				if innerWireType == 4 {
					break
				}
				next, err := skipTypes(dAtA[start:])
				if err != nil {
					return 0, err
				}
				iNdEx = start + next
			}
			return iNdEx, nil
		case 4:
			return iNdEx, nil
		case 5:
			iNdEx += 4
			return iNdEx, nil
		default:
			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
		}
	}
	panic("unreachable")
}

var (
	ErrInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowTypes   = fmt.Errorf("proto: integer overflow")
)

func init() { proto.RegisterFile("sql/types/types.proto", fileDescriptor_types_b295a445183f7b1c) }

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