# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/branch.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()




DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x63hromiumos/branch.proto\x12\nchromiumos\"\xb9\x01\n\x06\x42ranch\x12+\n\x04type\x18\x01 \x01(\x0e\x32\x1d.chromiumos.Branch.BranchType\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\ndescriptor\x18\x03 \x01(\t\"`\n\nBranchType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0b\n\x07RELEASE\x10\x01\x12\x0b\n\x07\x46\x41\x43TORY\x10\x02\x12\x0c\n\x08\x46IRMWARE\x10\x03\x12\r\n\tSTABILIZE\x10\x04\x12\n\n\x06\x43USTOM\x10\x05\x42Y\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3')

_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromiumos.branch_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumos'
  _globals['_BRANCH']._serialized_start=40
  _globals['_BRANCH']._serialized_end=225
  _globals['_BRANCH_BRANCHTYPE']._serialized_start=129
  _globals['_BRANCH_BRANCHTYPE']._serialized_end=225
# @@protoc_insertion_point(module_scope)
