// Code generated by protoc-gen-go. DO NOT EDIT.
// source: proto2/fields.proto

package proto2

import (
	proto "github.com/golang/protobuf/proto"
	math "math"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

type FieldTestMessage_Enum int32

const (
	FieldTestMessage_ZERO FieldTestMessage_Enum = 0
	FieldTestMessage_ONE  FieldTestMessage_Enum = 1
)

var FieldTestMessage_Enum_name = map[int32]string{
	0: "ZERO",
	1: "ONE",
}

var FieldTestMessage_Enum_value = map[string]int32{
	"ZERO": 0,
	"ONE":  1,
}

func (x FieldTestMessage_Enum) Enum() *FieldTestMessage_Enum {
	p := new(FieldTestMessage_Enum)
	*p = x
	return p
}

func (x FieldTestMessage_Enum) String() string {
	return proto.EnumName(FieldTestMessage_Enum_name, int32(x))
}

func (x *FieldTestMessage_Enum) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(FieldTestMessage_Enum_value, data, "FieldTestMessage_Enum")
	if err != nil {
		return err
	}
	*x = FieldTestMessage_Enum(value)
	return nil
}

func (FieldTestMessage_Enum) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 0}
}

type FieldTestMessage struct {
	OptionalBool         *bool                             `protobuf:"varint,1,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
	OptionalEnum         *FieldTestMessage_Enum            `protobuf:"varint,2,opt,name=optional_enum,json=optionalEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"optional_enum,omitempty"`
	OptionalInt32        *int32                            `protobuf:"varint,3,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
	OptionalSint32       *int32                            `protobuf:"zigzag32,4,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
	OptionalUint32       *uint32                           `protobuf:"varint,5,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
	OptionalInt64        *int64                            `protobuf:"varint,6,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
	OptionalSint64       *int64                            `protobuf:"zigzag64,7,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
	OptionalUint64       *uint64                           `protobuf:"varint,8,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
	OptionalSfixed32     *int32                            `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
	OptionalFixed32      *uint32                           `protobuf:"fixed32,10,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
	OptionalFloat        *float32                          `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
	OptionalSfixed64     *int64                            `protobuf:"fixed64,12,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
	OptionalFixed64      *uint64                           `protobuf:"fixed64,13,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
	OptionalDouble       *float64                          `protobuf:"fixed64,14,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
	OptionalString       *string                           `protobuf:"bytes,15,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
	OptionalBytes        []byte                            `protobuf:"bytes,16,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
	Optional_Message     *FieldTestMessage_Message         `protobuf:"bytes,17,opt,name=optional_Message,json=optionalMessage" json:"optional_Message,omitempty"`
	Optionalgroup        *FieldTestMessage_OptionalGroup   `protobuf:"group,18,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
	RequiredBool         *bool                             `protobuf:"varint,101,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
	RequiredEnum         *FieldTestMessage_Enum            `protobuf:"varint,102,req,name=required_enum,json=requiredEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"required_enum,omitempty"`
	RequiredInt32        *int32                            `protobuf:"varint,103,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
	RequiredSint32       *int32                            `protobuf:"zigzag32,104,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
	RequiredUint32       *uint32                           `protobuf:"varint,105,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
	RequiredInt64        *int64                            `protobuf:"varint,106,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
	RequiredSint64       *int64                            `protobuf:"zigzag64,107,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
	RequiredUint64       *uint64                           `protobuf:"varint,108,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
	RequiredSfixed32     *int32                            `protobuf:"fixed32,109,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
	RequiredFixed32      *uint32                           `protobuf:"fixed32,110,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
	RequiredFloat        *float32                          `protobuf:"fixed32,111,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
	RequiredSfixed64     *int64                            `protobuf:"fixed64,112,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
	RequiredFixed64      *uint64                           `protobuf:"fixed64,113,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
	RequiredDouble       *float64                          `protobuf:"fixed64,114,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
	RequiredString       *string                           `protobuf:"bytes,115,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
	RequiredBytes        []byte                            `protobuf:"bytes,116,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
	Required_Message     *FieldTestMessage_Message         `protobuf:"bytes,117,req,name=required_Message,json=requiredMessage" json:"required_Message,omitempty"`
	Requiredgroup        *FieldTestMessage_RequiredGroup   `protobuf:"group,118,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
	RepeatedBool         []bool                            `protobuf:"varint,201,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
	RepeatedEnum         []FieldTestMessage_Enum           `protobuf:"varint,202,rep,name=repeated_enum,json=repeatedEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"repeated_enum,omitempty"`
	RepeatedInt32        []int32                           `protobuf:"varint,203,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
	RepeatedSint32       []int32                           `protobuf:"zigzag32,204,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
	RepeatedUint32       []uint32                          `protobuf:"varint,205,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
	RepeatedInt64        []int64                           `protobuf:"varint,206,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
	RepeatedSint64       []int64                           `protobuf:"zigzag64,207,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
	RepeatedUint64       []uint64                          `protobuf:"varint,208,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
	RepeatedSfixed32     []int32                           `protobuf:"fixed32,209,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
	RepeatedFixed32      []uint32                          `protobuf:"fixed32,210,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
	RepeatedFloat        []float32                         `protobuf:"fixed32,211,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
	RepeatedSfixed64     []int64                           `protobuf:"fixed64,212,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
	RepeatedFixed64      []uint64                          `protobuf:"fixed64,213,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
	RepeatedDouble       []float64                         `protobuf:"fixed64,214,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
	RepeatedString       []string                          `protobuf:"bytes,215,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
	RepeatedBytes        [][]byte                          `protobuf:"bytes,216,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
	Repeated_Message     []*FieldTestMessage_Message       `protobuf:"bytes,217,rep,name=repeated_Message,json=repeatedMessage" json:"repeated_Message,omitempty"`
	Repeatedgroup        []*FieldTestMessage_RepeatedGroup `protobuf:"group,218,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
	DefaultBool          *bool                             `protobuf:"varint,301,opt,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
	DefaultEnum          *FieldTestMessage_Enum            `protobuf:"varint,302,opt,name=default_enum,json=defaultEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum,def=1" json:"default_enum,omitempty"`
	DefaultInt32         *int32                            `protobuf:"varint,303,opt,name=default_int32,json=defaultInt32,def=1" json:"default_int32,omitempty"`
	DefaultSint32        *int32                            `protobuf:"zigzag32,304,opt,name=default_sint32,json=defaultSint32,def=1" json:"default_sint32,omitempty"`
	DefaultUint32        *uint32                           `protobuf:"varint,305,opt,name=default_uint32,json=defaultUint32,def=1" json:"default_uint32,omitempty"`
	DefaultInt64         *int64                            `protobuf:"varint,306,opt,name=default_int64,json=defaultInt64,def=1" json:"default_int64,omitempty"`
	DefaultSint64        *int64                            `protobuf:"zigzag64,307,opt,name=default_sint64,json=defaultSint64,def=1" json:"default_sint64,omitempty"`
	DefaultUint64        *uint64                           `protobuf:"varint,308,opt,name=default_uint64,json=defaultUint64,def=1" json:"default_uint64,omitempty"`
	DefaultSfixed32      *int32                            `protobuf:"fixed32,309,opt,name=default_sfixed32,json=defaultSfixed32,def=1" json:"default_sfixed32,omitempty"`
	DefaultFixed32       *uint32                           `protobuf:"fixed32,310,opt,name=default_fixed32,json=defaultFixed32,def=1" json:"default_fixed32,omitempty"`
	DefaultFloat         *float32                          `protobuf:"fixed32,311,opt,name=default_float,json=defaultFloat,def=1.5" json:"default_float,omitempty"`
	DefaultSfixed64      *int64                            `protobuf:"fixed64,312,opt,name=default_sfixed64,json=defaultSfixed64,def=1" json:"default_sfixed64,omitempty"`
	DefaultFixed64       *uint64                           `protobuf:"fixed64,313,opt,name=default_fixed64,json=defaultFixed64,def=1" json:"default_fixed64,omitempty"`
	DefaultDouble        *float64                          `protobuf:"fixed64,314,opt,name=default_double,json=defaultDouble,def=1.5" json:"default_double,omitempty"`
	DefaultString        *string                           `protobuf:"bytes,315,opt,name=default_string,json=defaultString,def=x,y" json:"default_string,omitempty"`
	DefaultBytes         []byte                            `protobuf:"bytes,316,opt,name=default_bytes,json=defaultBytes,def=x,y" json:"default_bytes,omitempty"`
	DefaultFloatNeginf   *float32                          `protobuf:"fixed32,400,opt,name=default_float_neginf,json=defaultFloatNeginf,def=-inf" json:"default_float_neginf,omitempty"`
	DefaultFloatPosinf   *float32                          `protobuf:"fixed32,401,opt,name=default_float_posinf,json=defaultFloatPosinf,def=inf" json:"default_float_posinf,omitempty"`
	DefaultFloatNan      *float32                          `protobuf:"fixed32,402,opt,name=default_float_nan,json=defaultFloatNan,def=nan" json:"default_float_nan,omitempty"`
	DefaultDoubleNeginf  *float64                          `protobuf:"fixed64,403,opt,name=default_double_neginf,json=defaultDoubleNeginf,def=-inf" json:"default_double_neginf,omitempty"`
	DefaultDoublePosinf  *float64                          `protobuf:"fixed64,404,opt,name=default_double_posinf,json=defaultDoublePosinf,def=inf" json:"default_double_posinf,omitempty"`
	DefaultDoubleNan     *float64                          `protobuf:"fixed64,405,opt,name=default_double_nan,json=defaultDoubleNan,def=nan" json:"default_double_nan,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
	XXX_unrecognized     []byte                            `json:"-"`
	XXX_sizecache        int32                             `json:"-"`
}

func (m *FieldTestMessage) Reset()         { *m = FieldTestMessage{} }
func (m *FieldTestMessage) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage) ProtoMessage()    {}
func (*FieldTestMessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0}
}
func (m *FieldTestMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage.Unmarshal(m, b)
}
func (m *FieldTestMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage.Merge(m, src)
}
func (m *FieldTestMessage) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage.Size(m)
}
func (m *FieldTestMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage proto.InternalMessageInfo

const Default_FieldTestMessage_DefaultBool bool = true
const Default_FieldTestMessage_DefaultEnum FieldTestMessage_Enum = FieldTestMessage_ONE
const Default_FieldTestMessage_DefaultInt32 int32 = 1
const Default_FieldTestMessage_DefaultSint32 int32 = 1
const Default_FieldTestMessage_DefaultUint32 uint32 = 1
const Default_FieldTestMessage_DefaultInt64 int64 = 1
const Default_FieldTestMessage_DefaultSint64 int64 = 1
const Default_FieldTestMessage_DefaultUint64 uint64 = 1
const Default_FieldTestMessage_DefaultSfixed32 int32 = 1
const Default_FieldTestMessage_DefaultFixed32 uint32 = 1
const Default_FieldTestMessage_DefaultFloat float32 = 1.5
const Default_FieldTestMessage_DefaultSfixed64 int64 = 1
const Default_FieldTestMessage_DefaultFixed64 uint64 = 1
const Default_FieldTestMessage_DefaultDouble float64 = 1.5
const Default_FieldTestMessage_DefaultString string = "x,y"

var Default_FieldTestMessage_DefaultBytes []byte = []byte("x,y")
var Default_FieldTestMessage_DefaultFloatNeginf float32 = float32(math.Inf(-1))
var Default_FieldTestMessage_DefaultFloatPosinf float32 = float32(math.Inf(1))
var Default_FieldTestMessage_DefaultFloatNan float32 = float32(math.NaN())
var Default_FieldTestMessage_DefaultDoubleNeginf float64 = math.Inf(-1)
var Default_FieldTestMessage_DefaultDoublePosinf float64 = math.Inf(1)
var Default_FieldTestMessage_DefaultDoubleNan float64 = math.NaN()

type FieldTestMessage_OptionalGroup struct {
	OptionalGroup        *string  `protobuf:"bytes,19,opt,name=optional_group,json=optionalGroup" json:"optional_group,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *FieldTestMessage_OptionalGroup) Reset()         { *m = FieldTestMessage_OptionalGroup{} }
func (m *FieldTestMessage_OptionalGroup) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_OptionalGroup) ProtoMessage()    {}
func (*FieldTestMessage_OptionalGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 0}
}
func (m *FieldTestMessage_OptionalGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_OptionalGroup.Unmarshal(m, b)
}
func (m *FieldTestMessage_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_OptionalGroup.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_OptionalGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_OptionalGroup.Merge(m, src)
}
func (m *FieldTestMessage_OptionalGroup) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_OptionalGroup.Size(m)
}
func (m *FieldTestMessage_OptionalGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_OptionalGroup.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_OptionalGroup proto.InternalMessageInfo

type FieldTestMessage_RequiredGroup struct {
	RequiredGroup        *string  `protobuf:"bytes,119,req,name=required_group,json=requiredGroup" json:"required_group,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *FieldTestMessage_RequiredGroup) Reset()         { *m = FieldTestMessage_RequiredGroup{} }
func (m *FieldTestMessage_RequiredGroup) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_RequiredGroup) ProtoMessage()    {}
func (*FieldTestMessage_RequiredGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 1}
}
func (m *FieldTestMessage_RequiredGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_RequiredGroup.Unmarshal(m, b)
}
func (m *FieldTestMessage_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_RequiredGroup.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_RequiredGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_RequiredGroup.Merge(m, src)
}
func (m *FieldTestMessage_RequiredGroup) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_RequiredGroup.Size(m)
}
func (m *FieldTestMessage_RequiredGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_RequiredGroup.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_RequiredGroup proto.InternalMessageInfo

type FieldTestMessage_RepeatedGroup struct {
	RepeatedGroup        []string `protobuf:"bytes,219,rep,name=repeated_group,json=repeatedGroup" json:"repeated_group,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *FieldTestMessage_RepeatedGroup) Reset()         { *m = FieldTestMessage_RepeatedGroup{} }
func (m *FieldTestMessage_RepeatedGroup) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_RepeatedGroup) ProtoMessage()    {}
func (*FieldTestMessage_RepeatedGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 2}
}
func (m *FieldTestMessage_RepeatedGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_RepeatedGroup.Unmarshal(m, b)
}
func (m *FieldTestMessage_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_RepeatedGroup.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_RepeatedGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_RepeatedGroup.Merge(m, src)
}
func (m *FieldTestMessage_RepeatedGroup) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_RepeatedGroup.Size(m)
}
func (m *FieldTestMessage_RepeatedGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_RepeatedGroup.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_RepeatedGroup proto.InternalMessageInfo

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

func (m *FieldTestMessage_Message) Reset()         { *m = FieldTestMessage_Message{} }
func (m *FieldTestMessage_Message) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_Message) ProtoMessage()    {}
func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
	return fileDescriptor_fd8a9d72b841fd68, []int{0, 3}
}
func (m *FieldTestMessage_Message) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_Message.Unmarshal(m, b)
}
func (m *FieldTestMessage_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_Message.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_Message) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_Message.Merge(m, src)
}
func (m *FieldTestMessage_Message) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_Message.Size(m)
}
func (m *FieldTestMessage_Message) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_Message.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_Message proto.InternalMessageInfo

func init() {
	proto.RegisterEnum("goproto.protoc.proto2.FieldTestMessage_Enum", FieldTestMessage_Enum_name, FieldTestMessage_Enum_value)
}

func init() { proto.RegisterFile("proto2/fields.proto", fileDescriptor_fd8a9d72b841fd68) }

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