Repository: open-reaction-database/ord-schema (language: python)

Issue:
update protobuf version



Discussion / hints:
# [Codecov](https://codecov.io/gh/open-reaction-database/ord-schema/pull/660?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-reaction-database) Report
> Merging [#660](https://codecov.io/gh/open-reaction-database/ord-schema/pull/660?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-reaction-database) (441d81c) into [main](https://codecov.io/gh/open-reaction-database/ord-schema/commit/842fa391b1758fecee6445a028cb884d372bffd7?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-reaction-database) (842fa39) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/open-reaction-database/ord-schema/pull/660/graphs/tree.svg?width=650&height=150&src=pr&token=FXNSW5E3HQ&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-reaction-database)](https://codecov.io/gh/open-reaction-database/ord-schema/pull/660?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-reaction-database)

```diff
@@           Coverage Diff           @@
##             main     #660   +/-   ##
=======================================
  Coverage   74.58%   74.58%           
=======================================
  Files          23       23           
  Lines        2723     2723           
  Branches      559      559           
=======================================
  Hits         2031     2031           
  Misses        583      583           
  Partials      109      109           
```



Looks like the reason we pin to <3.20 is for compatibility with TensorFlow: https://github.com/tensorflow/tensorflow/blob/b59935d3b349e752eed4729606e5d64a17e48015/tensorflow/tools/pip_package/setup.py#L105
> Looks like the reason we pin to <3.20 is for compatibility with TensorFlow: https://github.com/tensorflow/tensorflow/blob/b59935d3b349e752eed4729606e5d64a17e48015/tensorflow/tools/pip_package/setup.py#L105

FYI @connorcoley @ipendlet @FanwangM we use TF in some of the examples
Is this a reason (or an excuse) to separate out the examples into their own repo? Seems like a complex dependency to have when it's not essential for many use cases
> Is this a reason (or an excuse) to separate out the examples into their own repo? Seems like a complex dependency to have when it's not essential for many use cases

That wouldn't fix the issue; if until TF supports protobuf>=3.20 we won't be able to use TF and ord-schema in the same interpreter since both require the proto libraries. I think our choices are (1) pin to whatever version of protobuf TF supports so that people can use TF, or (2) upgrade protobuf and declare that ord-schema cannot be used with TF.
I think it's not worth it to lose the support of TF because of version updating. We can just keep the current version and wait for TF to support `protobug>=3.20`.

Fix patch:
diff --git a/examples/submissions/9_Ahneman_Science_CN_Coupling/example_Ahenman.ipynb b/examples/submissions/9_Ahneman_Science_CN_Coupling/example_Ahenman.ipynb
index 61c31b8b..f8d72976 100644
--- a/examples/submissions/9_Ahneman_Science_CN_Coupling/example_Ahenman.ipynb
+++ b/examples/submissions/9_Ahneman_Science_CN_Coupling/example_Ahenman.ipynb
@@ -103,7 +103,7 @@
     "\n",
     "        # Add solute and ID\n",
     "        self.solute = self.stock.components.add()\n",
-    "        self.solute.reaction_role = reaction_pb2.ReactionRole.__dict__[role]\n",
+    "        self.solute.reaction_role = role\n",
     "        self.solute.identifiers.add(value=name, type=\"NAME\")\n",
     "        if SMILES != None:\n",
     "            self.solute.identifiers.add(value=SMILES, type=\"SMILES\")\n",
diff --git a/js/ord-schema/proto/dataset_pb.js b/js/ord-schema/proto/dataset_pb.js
index 6e4bb2b3..056d50fb 100644
--- a/js/ord-schema/proto/dataset_pb.js
+++ b/js/ord-schema/proto/dataset_pb.js
@@ -29,13 +29,13 @@
 
 var jspb = require('google-protobuf');
 var goog = jspb;
-var global = (function() {
-  if (this) { return this; }
-  if (typeof window !== 'undefined') { return window; }
-  if (typeof global !== 'undefined') { return global; }
-  if (typeof self !== 'undefined') { return self; }
-  return Function('return this')();
-}.call(null));
+var global =
+    (typeof globalThis !== 'undefined' && globalThis) ||
+    (typeof window !== 'undefined' && window) ||
+    (typeof global !== 'undefined' && global) ||
+    (typeof self !== 'undefined' && self) ||
+    (function () { return this; }).call(null) ||
+    Function('return this')();
 
 var ord$schema_proto_reaction_pb = require('../../ord-schema/proto/reaction_pb.js');
 goog.object.extend(proto, ord$schema_proto_reaction_pb);
diff --git a/js/ord-schema/proto/reaction_pb.js b/js/ord-schema/proto/reaction_pb.js
index 6f6274da..a35949a7 100644
--- a/js/ord-schema/proto/reaction_pb.js
+++ b/js/ord-schema/proto/reaction_pb.js
@@ -29,13 +29,13 @@
 
 var jspb = require('google-protobuf');
 var goog = jspb;
-var global = (function() {
-  if (this) { return this; }
-  if (typeof window !== 'undefined') { return window; }
-  if (typeof global !== 'undefined') { return global; }
-  if (typeof self !== 'undefined') { return self; }
-  return Function('return this')();
-}.call(null));
+var global =
+    (typeof globalThis !== 'undefined' && globalThis) ||
+    (typeof window !== 'undefined' && window) ||
+    (typeof global !== 'undefined' && global) ||
+    (typeof self !== 'undefined' && self) ||
+    (function () { return this; }).call(null) ||
+    Function('return this')();
 
 goog.exportSymbol('proto.ord.Amount', null, global);
 goog.exportSymbol('proto.ord.Amount.KindCase', null, global);
@@ -1793,7 +1793,8 @@ proto.ord.Reaction.prototype.getInputsMap = function(opt_noLazyCreate) {
  */
 proto.ord.Reaction.prototype.clearInputsMap = function() {
   this.getInputsMap().clear();
-  return this;};
+  return this;
+};
 
 
 /**
@@ -4673,7 +4674,8 @@ proto.ord.Compound.prototype.getFeaturesMap = function(opt_noLazyCreate) {
  */
 proto.ord.Compound.prototype.clearFeaturesMap = function() {
   this.getFeaturesMap().clear();
-  return this;};
+  return this;
+};
 
 
 /**
@@ -4695,7 +4697,8 @@ proto.ord.Compound.prototype.getAnalysesMap = function(opt_noLazyCreate) {
  */
 proto.ord.Compound.prototype.clearAnalysesMap = function() {
   this.getAnalysesMap().clear();
-  return this;};
+  return this;
+};
 
 
 
@@ -6719,7 +6722,8 @@ proto.ord.ReactionSetup.prototype.getAutomationCodeMap = function(opt_noLazyCrea
  */
 proto.ord.ReactionSetup.prototype.clearAutomationCodeMap = function() {
   this.getAutomationCodeMap().clear();
-  return this;};
+  return this;
+};
 
 
 /**
@@ -12704,7 +12708,8 @@ proto.ord.ReactionOutcome.prototype.getAnalysesMap = function(opt_noLazyCreate)
  */
 proto.ord.ReactionOutcome.prototype.clearAnalysesMap = function() {
   this.getAnalysesMap().clear();
-  return this;};
+  return this;
+};
 
 
 
@@ -13268,7 +13273,8 @@ proto.ord.ProductCompound.prototype.getFeaturesMap = function(opt_noLazyCreate)
  */
 proto.ord.ProductCompound.prototype.clearFeaturesMap = function() {
   this.getFeaturesMap().clear();
-  return this;};
+  return this;
+};
 
 
 /**
@@ -15076,7 +15082,8 @@ proto.ord.Analysis.prototype.getDataMap = function(opt_noLazyCreate) {
  */
 proto.ord.Analysis.prototype.clearDataMap = function() {
   this.getDataMap().clear();
-  return this;};
+  return this;
+};
 
 
 /**
@@ -15597,7 +15604,8 @@ proto.ord.ReactionProvenance.prototype.getReactionMetadataMap = function(opt_noL
  */
 proto.ord.ReactionProvenance.prototype.clearReactionMetadataMap = function() {
   this.getReactionMetadataMap().clear();
-  return this;};
+  return this;
+};
 
 
 
diff --git a/ord_schema/orm/add_datasets.py b/ord_schema/orm/add_datasets.py
index 8b86002b..d3c0ff84 100644
--- a/ord_schema/orm/add_datasets.py
+++ b/ord_schema/orm/add_datasets.py
@@ -42,7 +42,7 @@
 from ord_schema.logging import get_logger
 from ord_schema.message_helpers import load_message
 from ord_schema.orm.database import add_dataset, add_rdkit, delete_dataset, get_connection_string
-from ord_schema.proto.dataset_pb2 import Dataset
+from ord_schema.proto import dataset_pb2
 
 logger = get_logger(__name__)
 
@@ -57,7 +57,7 @@ def _add_dataset(filename: str, url: str, overwrite: bool) -> None:
     """
     logger.info(f"Loading {filename}")
     start = time.time()
-    dataset = load_message(filename, Dataset)
+    dataset = load_message(filename, dataset_pb2.Dataset)
     logger.info(f"load_message() took {time.time() - start}s")
     engine = create_engine(url, future=True)
     with Session(engine) as session:
diff --git a/ord_schema/proto/dataset_pb2.py b/ord_schema/proto/dataset_pb2.py
index aae692d7..7631dd23 100644
--- a/ord_schema/proto/dataset_pb2.py
+++ b/ord_schema/proto/dataset_pb2.py
@@ -16,10 +16,9 @@
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: ord-schema/proto/dataset.proto
 """Generated protocol buffer code."""
+from google.protobuf.internal import builder as _builder
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
 from google.protobuf import symbol_database as _symbol_database
 # @@protoc_insertion_point(imports)
 
@@ -31,29 +30,14 @@
 
 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eord-schema/proto/dataset.proto\x12\x03ord\x1a\x1ford-schema/proto/reaction.proto\"x\n\x07\x44\x61taset\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12 \n\treactions\x18\x03 \x03(\x0b\x32\r.ord.Reaction\x12\x14\n\x0creaction_ids\x18\x04 \x03(\t\x12\x12\n\ndataset_id\x18\x05 \x01(\t\"i\n\x0e\x44\x61tasetExample\x12\x12\n\ndataset_id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\x12!\n\x07\x63reated\x18\x04 \x01(\x0b\x32\x10.ord.RecordEventb\x06proto3')
 
-
-
-_DATASET = DESCRIPTOR.message_types_by_name['Dataset']
-_DATASETEXAMPLE = DESCRIPTOR.message_types_by_name['DatasetExample']
-Dataset = _reflection.GeneratedProtocolMessageType('Dataset', (_message.Message,), {
-  'DESCRIPTOR' : _DATASET,
-  '__module__' : 'ord_schema.proto.dataset_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Dataset)
-  })
-_sym_db.RegisterMessage(Dataset)
-
-DatasetExample = _reflection.GeneratedProtocolMessageType('DatasetExample', (_message.Message,), {
-  'DESCRIPTOR' : _DATASETEXAMPLE,
-  '__module__' : 'ord_schema.proto.dataset_pb2'
-  # @@protoc_insertion_point(class_scope:ord.DatasetExample)
-  })
-_sym_db.RegisterMessage(DatasetExample)
-
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ord_schema.proto.dataset_pb2', _globals)
 if _descriptor._USE_C_DESCRIPTORS == False:
 
   DESCRIPTOR._options = None
-  _DATASET._serialized_start=72
-  _DATASET._serialized_end=192
-  _DATASETEXAMPLE._serialized_start=194
-  _DATASETEXAMPLE._serialized_end=299
+  _globals['_DATASET']._serialized_start=72
+  _globals['_DATASET']._serialized_end=192
+  _globals['_DATASETEXAMPLE']._serialized_start=194
+  _globals['_DATASETEXAMPLE']._serialized_end=299
 # @@protoc_insertion_point(module_scope)
diff --git a/ord_schema/proto/reaction_pb2.py b/ord_schema/proto/reaction_pb2.py
index aebc0df2..f82d0a61 100644
--- a/ord_schema/proto/reaction_pb2.py
+++ b/ord_schema/proto/reaction_pb2.py
@@ -16,10 +16,9 @@
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: ord-schema/proto/reaction.proto
 """Generated protocol buffer code."""
+from google.protobuf.internal import builder as _builder
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
 from google.protobuf import symbol_database as _symbol_database
 # @@protoc_insertion_point(imports)
 
@@ -30,650 +29,9 @@
 
 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ford-schema/proto/reaction.proto\x12\x03ord\"\xd9\x03\n\x08Reaction\x12,\n\x0bidentifiers\x18\x01 \x03(\x0b\x32\x17.ord.ReactionIdentifier\x12)\n\x06inputs\x18\x02 \x03(\x0b\x32\x19.ord.Reaction.InputsEntry\x12!\n\x05setup\x18\x03 \x01(\x0b\x32\x12.ord.ReactionSetup\x12+\n\nconditions\x18\x04 \x01(\x0b\x32\x17.ord.ReactionConditions\x12!\n\x05notes\x18\x05 \x01(\x0b\x32\x12.ord.ReactionNotes\x12.\n\x0cobservations\x18\x06 \x03(\x0b\x32\x18.ord.ReactionObservation\x12$\n\x07workups\x18\x07 \x03(\x0b\x32\x13.ord.ReactionWorkup\x12&\n\x08outcomes\x18\x08 \x03(\x0b\x32\x14.ord.ReactionOutcome\x12+\n\nprovenance\x18\t \x01(\x0b\x32\x17.ord.ReactionProvenance\x12\x13\n\x0breaction_id\x18\n \x01(\t\x1a\x41\n\x0bInputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.ord.ReactionInput:\x02\x38\x01\"\xa7\x02\n\x12ReactionIdentifier\x12<\n\x04type\x18\x01 \x01(\x0e\x32..ord.ReactionIdentifier.ReactionIdentifierType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x16\n\tis_mapped\x18\x04 \x01(\x08H\x00\x88\x01\x01\"\x8c\x01\n\x16ReactionIdentifierType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x13\n\x0fREACTION_SMILES\x10\x02\x12\x15\n\x11REACTION_CXSMILES\x10\x06\x12\n\n\x06RDFILE\x10\x03\x12\n\n\x06RINCHI\x10\x04\x12\x11\n\rREACTION_TYPE\x10\x05\x42\x0c\n\n_is_mapped\"\xbc\x06\n\rReactionInput\x12!\n\ncomponents\x18\x01 \x03(\x0b\x32\r.ord.Compound\x12-\n\x10\x63rude_components\x18\x02 \x03(\x0b\x32\x13.ord.CrudeComponent\x12\x16\n\x0e\x61\x64\x64ition_order\x18\x03 \x01(\x05\x12 \n\raddition_time\x18\x04 \x01(\x0b\x32\t.ord.Time\x12\x38\n\x0e\x61\x64\x64ition_speed\x18\x05 \x01(\x0b\x32 .ord.ReactionInput.AdditionSpeed\x12$\n\x11\x61\x64\x64ition_duration\x18\x06 \x01(\x0b\x32\t.ord.Time\x12 \n\tflow_rate\x18\x07 \x01(\x0b\x32\r.ord.FlowRate\x12:\n\x0f\x61\x64\x64ition_device\x18\x08 \x01(\x0b\x32!.ord.ReactionInput.AdditionDevice\x12.\n\x14\x61\x64\x64ition_temperature\x18\t \x01(\x0b\x32\x10.ord.Temperature\x1a\xdc\x01\n\rAdditionSpeed\x12@\n\x04type\x18\x01 \x01(\x0e\x32\x32.ord.ReactionInput.AdditionSpeed.AdditionSpeedType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"x\n\x11\x41\x64\x64itionSpeedType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0f\n\x0b\x41LL_AT_ONCE\x10\x01\x12\x08\n\x04\x46\x41ST\x10\x02\x12\x08\n\x04SLOW\x10\x03\x12\x0c\n\x08\x44ROPWISE\x10\x04\x12\x0e\n\nCONTINUOUS\x10\x05\x12\x0f\n\x0bPORTIONWISE\x10\x06\x1a\xd1\x01\n\x0e\x41\x64\x64itionDevice\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.ord.ReactionInput.AdditionDevice.AdditionDeviceType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"j\n\x12\x41\x64\x64itionDeviceType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0b\n\x07SYRINGE\x10\x03\x12\x0b\n\x07\x43\x41NNULA\x10\x04\x12\x13\n\x0f\x41\x44\x44ITION_FUNNEL\x10\x05\"\xd6\x01\n\x06\x41mount\x12\x19\n\x04mass\x18\x01 \x01(\x0b\x32\t.ord.MassH\x00\x12\x1b\n\x05moles\x18\x02 \x01(\x0b\x32\n.ord.MolesH\x00\x12\x1d\n\x06volume\x18\x03 \x01(\x0b\x32\x0b.ord.VolumeH\x00\x12+\n\nunmeasured\x18\x05 \x01(\x0b\x32\x15.ord.UnmeasuredAmountH\x00\x12$\n\x17volume_includes_solutes\x18\x04 \x01(\x08H\x01\x88\x01\x01\x42\x06\n\x04kindB\x1a\n\x18_volume_includes_solutes\"\xbe\x01\n\x10UnmeasuredAmount\x12\x38\n\x04type\x18\x01 \x01(\x0e\x32*.ord.UnmeasuredAmount.UnmeasuredAmountType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"_\n\x14UnmeasuredAmountType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\r\n\tSATURATED\x10\x02\x12\r\n\tCATALYTIC\x10\x03\x12\x0c\n\x08TITRATED\x10\x04\"\xac\x01\n\x0e\x43rudeComponent\x12\x13\n\x0breaction_id\x18\x01 \x01(\t\x12\x1c\n\x0fincludes_workup\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x1f\n\x12has_derived_amount\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x1b\n\x06\x61mount\x18\x04 \x01(\x0b\x32\x0b.ord.AmountB\x12\n\x10_includes_workupB\x15\n\x13_has_derived_amount\"\xa5\x04\n\x08\x43ompound\x12,\n\x0bidentifiers\x18\x01 \x03(\x0b\x32\x17.ord.CompoundIdentifier\x12\x1b\n\x06\x61mount\x18\x02 \x01(\x0b\x32\x0b.ord.Amount\x12\x39\n\rreaction_role\x18\x03 \x01(\x0e\x32\".ord.ReactionRole.ReactionRoleType\x12\x18\n\x0bis_limiting\x18\x04 \x01(\x08H\x00\x88\x01\x01\x12.\n\x0cpreparations\x18\x05 \x03(\x0b\x32\x18.ord.CompoundPreparation\x12$\n\x06source\x18\x06 \x01(\x0b\x32\x14.ord.Compound.Source\x12-\n\x08\x66\x65\x61tures\x18\x07 \x03(\x0b\x32\x1b.ord.Compound.FeaturesEntry\x12-\n\x08\x61nalyses\x18\x08 \x03(\x0b\x32\x1b.ord.Compound.AnalysesEntry\x1a\x39\n\x06Source\x12\x0e\n\x06vendor\x18\x01 \x01(\t\x12\x12\n\ncatalog_id\x18\x02 \x01(\t\x12\x0b\n\x03lot\x18\x03 \x01(\t\x1a:\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x18\n\x05value\x18\x02 \x01(\x0b\x32\t.ord.Data:\x02\x38\x01\x1a>\n\rAnalysesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1c\n\x05value\x18\x02 \x01(\x0b\x32\r.ord.Analysis:\x02\x38\x01\x42\x0e\n\x0c_is_limiting\"\xb2\x01\n\x0cReactionRole\"\xa1\x01\n\x10ReactionRoleType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0c\n\x08REACTANT\x10\x01\x12\x0b\n\x07REAGENT\x10\x02\x12\x0b\n\x07SOLVENT\x10\x03\x12\x0c\n\x08\x43\x41TALYST\x10\x04\x12\n\n\x06WORKUP\x10\x05\x12\x15\n\x11INTERNAL_STANDARD\x10\x06\x12\x16\n\x12\x41UTHENTIC_STANDARD\x10\x07\x12\x0b\n\x07PRODUCT\x10\x08\"\xf6\x01\n\x13\x43ompoundPreparation\x12>\n\x04type\x18\x01 \x01(\x0e\x32\x30.ord.CompoundPreparation.CompoundPreparationType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x13\n\x0breaction_id\x18\x03 \x01(\t\"y\n\x17\x43ompoundPreparationType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nREPURIFIED\x10\x03\x12\x0b\n\x07SPARGED\x10\x04\x12\t\n\x05\x44RIED\x10\x05\x12\x0f\n\x0bSYNTHESIZED\x10\x06\"\x82\x03\n\x12\x43ompoundIdentifier\x12<\n\x04type\x18\x01 \x01(\x0e\x32..ord.CompoundIdentifier.CompoundIdentifierType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"\x8d\x02\n\x16\x43ompoundIdentifierType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\n\n\x06SMILES\x10\x02\x12\t\n\x05INCHI\x10\x03\x12\x0c\n\x08MOLBLOCK\x10\x04\x12\x0e\n\nIUPAC_NAME\x10\x05\x12\x08\n\x04NAME\x10\x06\x12\x0e\n\nCAS_NUMBER\x10\x07\x12\x0f\n\x0bPUBCHEM_CID\x10\x08\x12\x11\n\rCHEMSPIDER_ID\x10\t\x12\x0c\n\x08\x43XSMILES\x10\n\x12\r\n\tINCHI_KEY\x10\x0b\x12\x07\n\x03XYZ\x10\x0c\x12\x0e\n\nUNIPROT_ID\x10\r\x12\n\n\x06PDB_ID\x10\x0e\x12\x17\n\x13\x41MINO_ACID_SEQUENCE\x10\x0f\x12\x08\n\x04HELM\x10\x10\"\xa7\x04\n\x06Vessel\x12$\n\x04type\x18\x01 \x01(\x0e\x32\x16.ord.Vessel.VesselType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12%\n\x08material\x18\x03 \x01(\x0b\x32\x13.ord.VesselMaterial\x12,\n\x0cpreparations\x18\x04 \x03(\x0b\x32\x16.ord.VesselPreparation\x12*\n\x0b\x61ttachments\x18\x05 \x03(\x0b\x32\x15.ord.VesselAttachment\x12\x1b\n\x06volume\x18\x06 \x01(\x0b\x32\x0b.ord.Volume\x12\x11\n\tvessel_id\x18\x07 \x01(\t\x12\x10\n\x08position\x18\x08 \x01(\t\x12\x0b\n\x03row\x18\t \x01(\t\x12\x0b\n\x03\x63ol\x18\n \x01(\t\"\x88\x02\n\nVesselType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x16\n\x12ROUND_BOTTOM_FLASK\x10\x02\x12\x08\n\x04VIAL\x10\x03\x12\x0e\n\nWELL_PLATE\x10\x04\x12\x12\n\x0eMICROWAVE_VIAL\x10\x05\x12\x08\n\x04TUBE\x10\x06\x12#\n\x1f\x43ONTINUOUS_STIRRED_TANK_REACTOR\x10\x07\x12\x16\n\x12PACKED_BED_REACTOR\x10\x08\x12\x0c\n\x08NMR_TUBE\x10\t\x12\x12\n\x0ePRESSURE_FLASK\x10\n\x12\x14\n\x10PRESSURE_REACTOR\x10\x0b\x12\x18\n\x14\x45LECTROCHEMICAL_CELL\x10\x0c\"\xcc\x01\n\x0eVesselMaterial\x12\x34\n\x04type\x18\x01 \x01(\x0e\x32&.ord.VesselMaterial.VesselMaterialType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"s\n\x12VesselMaterialType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\t\n\x05GLASS\x10\x02\x12\x11\n\rPOLYPROPYLENE\x10\x03\x12\x0b\n\x07PLASTIC\x10\x04\x12\t\n\x05METAL\x10\x05\x12\n\n\x06QUARTZ\x10\x06\"\x97\x03\n\x10VesselAttachment\x12\x38\n\x04type\x18\x01 \x01(\x0e\x32*.ord.VesselAttachment.VesselAttachmentType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"\xb7\x02\n\x14VesselAttachmentType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\n\n\x06\x43USTOM\x10\x02\x12\n\n\x06SEPTUM\x10\x03\x12\x07\n\x03\x43\x41P\x10\x04\x12\x07\n\x03MAT\x10\x05\x12\x14\n\x10REFLUX_CONDENSER\x10\x06\x12\x0f\n\x0bVENT_NEEDLE\x10\x07\x12\x0e\n\nDEAN_STARK\x10\x08\x12\x0f\n\x0bVACUUM_TUBE\x10\t\x12\x13\n\x0f\x41\x44\x44ITION_FUNNEL\x10\n\x12\x0f\n\x0b\x44RYING_TUBE\x10\x0b\x12\x11\n\rALUMINUM_FOIL\x10\x0c\x12\x10\n\x0cTHERMOCOUPLE\x10\r\x12\x0b\n\x07\x42\x41LLOON\x10\x0e\x12\x0f\n\x0bGAS_ADAPTER\x10\x0f\x12\x16\n\x12PRESSURE_REGULATOR\x10\x10\x12\x11\n\rRELEASE_VALVE\x10\x11\"\xe8\x01\n\x11VesselPreparation\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.ord.VesselPreparation.VesselPreparationType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"\x85\x01\n\x15VesselPreparationType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nOVEN_DRIED\x10\x03\x12\x0f\n\x0b\x46LAME_DRIED\x10\x04\x12\x18\n\x14\x45VACUATED_BACKFILLED\x10\x05\x12\n\n\x06PURGED\x10\x06\"\xa0\x04\n\rReactionSetup\x12\x1b\n\x06vessel\x18\x01 \x01(\x0b\x32\x0b.ord.Vessel\x12\x19\n\x0cis_automated\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x1b\n\x13\x61utomation_platform\x18\x03 \x01(\t\x12?\n\x0f\x61utomation_code\x18\x04 \x03(\x0b\x32&.ord.ReactionSetup.AutomationCodeEntry\x12;\n\x0b\x65nvironment\x18\x05 \x01(\x0b\x32&.ord.ReactionSetup.ReactionEnvironment\x1a@\n\x13\x41utomationCodeEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x18\n\x05value\x18\x02 \x01(\x0b\x32\t.ord.Data:\x02\x38\x01\x1a\xe8\x01\n\x13ReactionEnvironment\x12L\n\x04type\x18\x01 \x01(\x0e\x32>.ord.ReactionSetup.ReactionEnvironment.ReactionEnvironmentType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"r\n\x17ReactionEnvironmentType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\r\n\tFUME_HOOD\x10\x02\x12\r\n\tBENCH_TOP\x10\x03\x12\r\n\tGLOVE_BOX\x10\x04\x12\r\n\tGLOVE_BAG\x10\x05\x42\x0f\n\r_is_automated\"\xb5\x03\n\x12ReactionConditions\x12/\n\x0btemperature\x18\x01 \x01(\x0b\x32\x1a.ord.TemperatureConditions\x12)\n\x08pressure\x18\x02 \x01(\x0b\x32\x17.ord.PressureConditions\x12)\n\x08stirring\x18\x03 \x01(\x0b\x32\x17.ord.StirringConditions\x12\x31\n\x0cillumination\x18\x04 \x01(\x0b\x32\x1b.ord.IlluminationConditions\x12\x39\n\x10\x65lectrochemistry\x18\x05 \x01(\x0b\x32\x1f.ord.ElectrochemistryConditions\x12!\n\x04\x66low\x18\x06 \x01(\x0b\x32\x13.ord.FlowConditions\x12\x13\n\x06reflux\x18\x07 \x01(\x08H\x00\x88\x01\x01\x12\x0f\n\x02ph\x18\x08 \x01(\x02H\x01\x88\x01\x01\x12#\n\x16\x63onditions_are_dynamic\x18\t \x01(\x08H\x02\x88\x01\x01\x12\x0f\n\x07\x64\x65tails\x18\n \x01(\tB\t\n\x07_refluxB\x05\n\x03_phB\x19\n\x17_conditions_are_dynamic\"\xe2\x06\n\x15TemperatureConditions\x12>\n\x07\x63ontrol\x18\x01 \x01(\x0b\x32-.ord.TemperatureConditions.TemperatureControl\x12\"\n\x08setpoint\x18\x02 \x01(\x0b\x32\x10.ord.Temperature\x12G\n\x0cmeasurements\x18\x03 \x03(\x0b\x32\x31.ord.TemperatureConditions.TemperatureMeasurement\x1a\xd4\x02\n\x12TemperatureControl\x12R\n\x04type\x18\x01 \x01(\x0e\x32\x44.ord.TemperatureConditions.TemperatureControl.TemperatureControlType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"\xd8\x01\n\x16TemperatureControlType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x0b\n\x07\x41MBIENT\x10\x02\x12\x0c\n\x08OIL_BATH\x10\x03\x12\x0e\n\nWATER_BATH\x10\x04\x12\r\n\tSAND_BATH\x10\x05\x12\x0c\n\x08ICE_BATH\x10\x06\x12\x16\n\x12\x44RY_ALUMINUM_PLATE\x10\x07\x12\r\n\tMICROWAVE\x10\x08\x12\x10\n\x0c\x44RY_ICE_BATH\x10\t\x12\x0b\n\x07\x41IR_FAN\x10\n\x12\x13\n\x0fLIQUID_NITROGEN\x10\x0b\x1a\xc4\x02\n\x16TemperatureMeasurement\x12Z\n\x04type\x18\x01 \x01(\x0e\x32L.ord.TemperatureConditions.TemperatureMeasurement.TemperatureMeasurementType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x17\n\x04time\x18\x03 \x01(\x0b\x32\t.ord.Time\x12%\n\x0btemperature\x18\x04 \x01(\x0b\x32\x10.ord.Temperature\"}\n\x1aTemperatureMeasurementType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x19\n\x15THERMOCOUPLE_INTERNAL\x10\x02\x12\x19\n\x15THERMOCOUPLE_EXTERNAL\x10\x03\x12\x0c\n\x08INFRARED\x10\x04\"\x8c\x08\n\x12PressureConditions\x12\x38\n\x07\x63ontrol\x18\x01 \x01(\x0b\x32\'.ord.PressureConditions.PressureControl\x12\x1f\n\x08setpoint\x18\x02 \x01(\x0b\x32\r.ord.Pressure\x12\x36\n\natmosphere\x18\x03 \x01(\x0b\x32\".ord.PressureConditions.Atmosphere\x12\x41\n\x0cmeasurements\x18\x04 \x03(\x0b\x32+.ord.PressureConditions.PressureMeasurement\x1a\xe0\x01\n\x0fPressureControl\x12I\n\x04type\x18\x01 \x01(\x0e\x32;.ord.PressureConditions.PressureControl.PressureControlType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"q\n\x13PressureControlType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x0b\n\x07\x41MBIENT\x10\x02\x12\x13\n\x0fSLIGHT_POSITIVE\x10\x03\x12\n\n\x06SEALED\x10\x04\x12\x0f\n\x0bPRESSURIZED\x10\x05\x1a\xb5\x02\n\nAtmosphere\x12?\n\x04type\x18\x01 \x01(\x0e\x32\x31.ord.PressureConditions.Atmosphere.AtmosphereType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"\xd4\x01\n\x0e\x41tmosphereType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x07\n\x03\x41IR\x10\x02\x12\x0c\n\x08NITROGEN\x10\x03\x12\t\n\x05\x41RGON\x10\x04\x12\n\n\x06OXYGEN\x10\x05\x12\x0c\n\x08HYDROGEN\x10\x06\x12\x13\n\x0f\x43\x41RBON_MONOXIDE\x10\x07\x12\x12\n\x0e\x43\x41RBON_DIOXIDE\x10\x08\x12\x0b\n\x07METHANE\x10\t\x12\x0b\n\x07\x41MMONIA\x10\n\x12\t\n\x05OZONE\x10\x0b\x12\x0c\n\x08\x45THYLENE\x10\x0c\x12\r\n\tACETYLENE\x10\r\x1a\x84\x02\n\x13PressureMeasurement\x12Q\n\x04type\x18\x01 \x01(\x0e\x32\x43.ord.PressureConditions.PressureMeasurement.PressureMeasurementType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x17\n\x04time\x18\x03 \x01(\x0b\x32\t.ord.Time\x12\x1f\n\x08pressure\x18\x04 \x01(\x0b\x32\r.ord.Pressure\"O\n\x17PressureMeasurementType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x17\n\x13PRESSURE_TRANSDUCER\x10\x02\"\xdc\x03\n\x12StirringConditions\x12\x38\n\x04type\x18\x01 \x01(\x0e\x32*.ord.StirringConditions.StirringMethodType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x32\n\x04rate\x18\x03 \x01(\x0b\x32$.ord.StirringConditions.StirringRate\x1a\xb5\x01\n\x0cStirringRate\x12\x43\n\x04type\x18\x01 \x01(\x0e\x32\x35.ord.StirringConditions.StirringRate.StirringRateType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x0b\n\x03rpm\x18\x03 \x01(\x05\"B\n\x10StirringRateType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04HIGH\x10\x01\x12\n\n\x06MEDIUM\x10\x02\x12\x07\n\x03LOW\x10\x03\"\x8e\x01\n\x12StirringMethodType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0c\n\x08STIR_BAR\x10\x03\x12\x12\n\x0eOVERHEAD_MIXER\x10\x04\x12\r\n\tAGITATION\x10\x05\x12\x10\n\x0c\x42\x41LL_MILLING\x10\x06\x12\x0e\n\nSONICATION\x10\x07\"\xe8\x02\n\x16IlluminationConditions\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.ord.IlluminationConditions.IlluminationType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12(\n\x0fpeak_wavelength\x18\x03 \x01(\x0b\x32\x0f.ord.Wavelength\x12\r\n\x05\x63olor\x18\x04 \x01(\t\x12\'\n\x12\x64istance_to_vessel\x18\x05 \x01(\x0b\x32\x0b.ord.Length\"\x9e\x01\n\x10IlluminationType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x0b\n\x07\x41MBIENT\x10\x02\x12\x08\n\x04\x44\x41RK\x10\x03\x12\x07\n\x03LED\x10\x04\x12\x10\n\x0cHALOGEN_LAMP\x10\x05\x12\x12\n\x0e\x44\x45UTERIUM_LAMP\x10\x06\x12\x13\n\x0fSOLAR_SIMULATOR\x10\x07\x12\x12\n\x0e\x42ROAD_SPECTRUM\x10\x08\"\xe0\x06\n\x1a\x45lectrochemistryConditions\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.ord.ElectrochemistryConditions.ElectrochemistryType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x1d\n\x07\x63urrent\x18\x03 \x01(\x0b\x32\x0c.ord.Current\x12\x1d\n\x07voltage\x18\x04 \x01(\x0b\x32\x0c.ord.Voltage\x12\x16\n\x0e\x61node_material\x18\x05 \x01(\t\x12\x18\n\x10\x63\x61thode_material\x18\x06 \x01(\t\x12)\n\x14\x65lectrode_separation\x18\x07 \x01(\x0b\x32\x0b.ord.Length\x12Q\n\x0cmeasurements\x18\x08 \x03(\x0b\x32;.ord.ElectrochemistryConditions.ElectrochemistryMeasurement\x12\x42\n\x04\x63\x65ll\x18\t \x01(\x0b\x32\x34.ord.ElectrochemistryConditions.ElectrochemistryCell\x1at\n\x1b\x45lectrochemistryMeasurement\x12\x17\n\x04time\x18\x01 \x01(\x0b\x32\t.ord.Time\x12\x1d\n\x07\x63urrent\x18\x02 \x01(\x0b\x32\x0c.ord.Current\x12\x1d\n\x07voltage\x18\x03 \x01(\x0b\x32\x0c.ord.Voltage\x1a\xe3\x01\n\x14\x45lectrochemistryCell\x12[\n\x04type\x18\x01 \x01(\x0e\x32M.ord.ElectrochemistryConditions.ElectrochemistryCell.ElectrochemistryCellType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"]\n\x18\x45lectrochemistryCellType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x10\n\x0c\x44IVIDED_CELL\x10\x02\x12\x12\n\x0eUNDIVIDED_CELL\x10\x03\"_\n\x14\x45lectrochemistryType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x14\n\x10\x43ONSTANT_CURRENT\x10\x02\x12\x14\n\x10\x43ONSTANT_VOLTAGE\x10\x03\"\x94\x04\n\x0e\x46lowConditions\x12*\n\x04type\x18\x01 \x01(\x0e\x32\x1c.ord.FlowConditions.FlowType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x11\n\tpump_type\x18\x03 \x01(\t\x12*\n\x06tubing\x18\x04 \x01(\x0b\x32\x1a.ord.FlowConditions.Tubing\x1a\x88\x02\n\x06Tubing\x12\x33\n\x04type\x18\x01 \x01(\x0e\x32%.ord.FlowConditions.Tubing.TubingType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x1d\n\x08\x64iameter\x18\x03 \x01(\x0b\x32\x0b.ord.Length\"\x98\x01\n\nTubingType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\t\n\x05STEEL\x10\x02\x12\n\n\x06\x43OPPER\x10\x03\x12\x07\n\x03PFA\x10\x04\x12\x07\n\x03\x46\x45P\x10\x05\x12\x0c\n\x08TEFLONAF\x10\x06\x12\x08\n\x04PTFE\x10\x07\x12\t\n\x05GLASS\x10\x08\x12\n\n\x06QUARTZ\x10\t\x12\x0b\n\x07SILICON\x10\n\x12\x08\n\x04PDMS\x10\x0b\"{\n\x08\x46lowType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x15\n\x11PLUG_FLOW_REACTOR\x10\x02\x12#\n\x1f\x43ONTINUOUS_STIRRED_TANK_REACTOR\x10\x03\x12\x16\n\x12PACKED_BED_REACTOR\x10\x04\"\xc0\x03\n\rReactionNotes\x12\x1d\n\x10is_heterogeneous\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1e\n\x11\x66orms_precipitate\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x1a\n\ris_exothermic\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x16\n\toffgasses\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12%\n\x18is_sensitive_to_moisture\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12#\n\x16is_sensitive_to_oxygen\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\"\n\x15is_sensitive_to_light\x18\x07 \x01(\x08H\x06\x88\x01\x01\x12\x14\n\x0csafety_notes\x18\x08 \x01(\t\x12\x19\n\x11procedure_details\x18\t \x01(\tB\x13\n\x11_is_heterogeneousB\x14\n\x12_forms_precipitateB\x10\n\x0e_is_exothermicB\x0c\n\n_offgassesB\x1b\n\x19_is_sensitive_to_moistureB\x19\n\x17_is_sensitive_to_oxygenB\x18\n\x16_is_sensitive_to_light\"Y\n\x13ReactionObservation\x12\x17\n\x04time\x18\x01 \x01(\x0b\x32\t.ord.Time\x12\x0f\n\x07\x63omment\x18\x02 \x01(\t\x12\x18\n\x05image\x18\x03 \x01(\x0b\x32\t.ord.Data\"\xcb\x05\n\x0eReactionWorkup\x12\x34\n\x04type\x18\x01 \x01(\x0e\x32&.ord.ReactionWorkup.ReactionWorkupType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x1b\n\x08\x64uration\x18\x03 \x01(\x0b\x32\t.ord.Time\x12!\n\x05input\x18\x04 \x01(\x0b\x32\x12.ord.ReactionInput\x12\x1b\n\x06\x61mount\x18\x05 \x01(\x0b\x32\x0b.ord.Amount\x12/\n\x0btemperature\x18\x06 \x01(\x0b\x32\x1a.ord.TemperatureConditions\x12\x12\n\nkeep_phase\x18\x07 \x01(\t\x12)\n\x08stirring\x18\x08 \x01(\x0b\x32\x17.ord.StirringConditions\x12\x16\n\ttarget_ph\x18\t \x01(\x02H\x00\x88\x01\x01\x12\x19\n\x0cis_automated\x18\n \x01(\x08H\x01\x88\x01\x01\"\xd2\x02\n\x12ReactionWorkupType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x0c\n\x08\x41\x44\x44ITION\x10\x02\x12\x0b\n\x07\x41LIQUOT\x10\x03\x12\x0f\n\x0bTEMPERATURE\x10\x04\x12\x11\n\rCONCENTRATION\x10\x05\x12\x0e\n\nEXTRACTION\x10\x06\x12\x0e\n\nFILTRATION\x10\x07\x12\x08\n\x04WASH\x10\x08\x12\x11\n\rDRY_IN_VACUUM\x10\t\x12\x15\n\x11\x44RY_WITH_MATERIAL\x10\n\x12\x18\n\x14\x46LASH_CHROMATOGRAPHY\x10\x0b\x12\x18\n\x14OTHER_CHROMATOGRAPHY\x10\x0c\x12\x0e\n\nSCAVENGING\x10\r\x12\x08\n\x04WAIT\x10\x0e\x12\x0c\n\x08STIRRING\x10\x0f\x12\r\n\tPH_ADJUST\x10\x10\x12\x0f\n\x0b\x44ISSOLUTION\x10\x11\x12\x10\n\x0c\x44ISTILLATION\x10\x12\x42\x0c\n\n_target_phB\x0f\n\r_is_automated\"\xf6\x01\n\x0fReactionOutcome\x12 \n\rreaction_time\x18\x01 \x01(\x0b\x32\t.ord.Time\x12#\n\nconversion\x18\x02 \x01(\x0b\x32\x0f.ord.Percentage\x12&\n\x08products\x18\x03 \x03(\x0b\x32\x14.ord.ProductCompound\x12\x34\n\x08\x61nalyses\x18\x04 \x03(\x0b\x32\".ord.ReactionOutcome.AnalysesEntry\x1a>\n\rAnalysesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1c\n\x05value\x18\x02 \x01(\x0b\x32\r.ord.Analysis:\x02\x38\x01\"\x8d\x05\n\x0fProductCompound\x12,\n\x0bidentifiers\x18\x01 \x03(\x0b\x32\x17.ord.CompoundIdentifier\x12\x1f\n\x12is_desired_product\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12-\n\x0cmeasurements\x18\x03 \x03(\x0b\x32\x17.ord.ProductMeasurement\x12\x16\n\x0eisolated_color\x18\x04 \x01(\t\x12-\n\x07texture\x18\x05 \x01(\x0b\x32\x1c.ord.ProductCompound.Texture\x12\x34\n\x08\x66\x65\x61tures\x18\x06 \x03(\x0b\x32\".ord.ProductCompound.FeaturesEntry\x12\x39\n\rreaction_role\x18\x07 \x01(\x0e\x32\".ord.ReactionRole.ReactionRoleType\x1a\xf0\x01\n\x07Texture\x12\x36\n\x04type\x18\x01 \x01(\x0e\x32(.ord.ProductCompound.Texture.TextureType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"\x9b\x01\n\x0bTextureType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\n\n\x06POWDER\x10\x02\x12\x0b\n\x07\x43RYSTAL\x10\x03\x12\x07\n\x03OIL\x10\x04\x12\x13\n\x0f\x41MORPHOUS_SOLID\x10\x05\x12\x08\n\x04\x46OAM\x10\x06\x12\x07\n\x03WAX\x10\x07\x12\x0e\n\nSEMI_SOLID\x10\x08\x12\t\n\x05SOLID\x10\t\x12\n\n\x06LIQUID\x10\n\x1a:\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x18\n\x05value\x18\x02 \x01(\x0b\x32\t.ord.Data:\x02\x38\x01\x42\x15\n\x13_is_desired_product\"\xfb\n\n\x12ProductMeasurement\x12\x14\n\x0c\x61nalysis_key\x18\x01 \x01(\t\x12<\n\x04type\x18\x02 \x01(\x0e\x32..ord.ProductMeasurement.ProductMeasurementType\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t\x12#\n\x16uses_internal_standard\x18\x04 \x01(\x08H\x01\x88\x01\x01\x12\x1a\n\ris_normalized\x18\x05 \x01(\x08H\x02\x88\x01\x01\x12$\n\x17uses_authentic_standard\x18\x06 \x01(\x08H\x03\x88\x01\x01\x12)\n\x12\x61uthentic_standard\x18\x07 \x01(\x0b\x32\r.ord.Compound\x12%\n\npercentage\x18\x08 \x01(\x0b\x32\x0f.ord.PercentageH\x00\x12&\n\x0b\x66loat_value\x18\t \x01(\x0b\x32\x0f.ord.FloatValueH\x00\x12\x16\n\x0cstring_value\x18\n \x01(\tH\x00\x12\x1d\n\x06\x61mount\x18\x0b \x01(\x0b\x32\x0b.ord.AmountH\x00\x12!\n\x0eretention_time\x18\x0c \x01(\x0b\x32\t.ord.Time\x12M\n\x11mass_spec_details\x18\r \x01(\x0b\x32\x32.ord.ProductMeasurement.MassSpecMeasurementDetails\x12\x38\n\x0bselectivity\x18\x0e \x01(\x0b\x32#.ord.ProductMeasurement.Selectivity\x12#\n\nwavelength\x18\x0f \x01(\x0b\x32\x0f.ord.Wavelength\x1a\xe9\x02\n\x1aMassSpecMeasurementDetails\x12X\n\x04type\x18\x01 \x01(\x0e\x32J.ord.ProductMeasurement.MassSpecMeasurementDetails.MassSpecMeasurementType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x1b\n\x0etic_minimum_mz\x18\x03 \x01(\x02H\x00\x88\x01\x01\x12\x1b\n\x0etic_maximum_mz\x18\x04 \x01(\x02H\x01\x88\x01\x01\x12\x12\n\neic_masses\x18\x05 \x03(\x02\"l\n\x17MassSpecMeasurementType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x07\n\x03TIC\x10\x02\x12\x10\n\x0cTIC_POSITIVE\x10\x03\x12\x10\n\x0cTIC_NEGATIVE\x10\x04\x12\x07\n\x03\x45IC\x10\x05\x42\x11\n\x0f_tic_minimum_mzB\x11\n\x0f_tic_maximum_mz\x1a\xb9\x01\n\x0bSelectivity\x12\x41\n\x04type\x18\x01 \x01(\x0e\x32\x33.ord.ProductMeasurement.Selectivity.SelectivityType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\"V\n\x0fSelectivityType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x06\n\x02\x45\x45\x10\x02\x12\x06\n\x02\x45R\x10\x03\x12\x06\n\x02\x44R\x10\x04\x12\x06\n\x02\x45Z\x10\x05\x12\x06\n\x02ZE\x10\x06\"\x9c\x01\n\x16ProductMeasurementType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x0c\n\x08IDENTITY\x10\x02\x12\t\n\x05YIELD\x10\x03\x12\x0f\n\x0bSELECTIVITY\x10\x04\x12\n\n\x06PURITY\x10\x05\x12\x08\n\x04\x41REA\x10\x06\x12\n\n\x06\x43OUNTS\x10\x07\x12\r\n\tINTENSITY\x10\x08\x12\n\n\x06\x41MOUNT\x10\tB\x07\n\x05valueB\x19\n\x17_uses_internal_standardB\x10\n\x0e_is_normalizedB\x1a\n\x18_uses_authentic_standard\"\x19\n\x08\x44\x61teTime\x12\r\n\x05value\x18\x01 \x01(\t\"\xcc\x04\n\x08\x41nalysis\x12(\n\x04type\x18\x01 \x01(\x0e\x32\x1a.ord.Analysis.AnalysisType\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\x12\x0f\n\x07\x63hmo_id\x18\x03 \x01(\x05\x12#\n\x16is_of_isolated_species\x18\x04 \x01(\x08H\x00\x88\x01\x01\x12%\n\x04\x64\x61ta\x18\x05 \x03(\x0b\x32\x17.ord.Analysis.DataEntry\x12\x1f\n\x17instrument_manufacturer\x18\x06 \x01(\t\x12\x31\n\x1ainstrument_last_calibrated\x18\x07 \x01(\x0b\x32\r.ord.DateTime\x1a\x36\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x18\n\x05value\x18\x02 \x01(\x0b\x32\t.ord.Data:\x02\x38\x01\"\x80\x02\n\x0c\x41nalysisType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x43USTOM\x10\x01\x12\x06\n\x02LC\x10\x02\x12\x06\n\x02GC\x10\x03\x12\x06\n\x02IR\x10\x04\x12\n\n\x06NMR_1H\x10\x05\x12\x0b\n\x07NMR_13C\x10\x06\x12\r\n\tNMR_OTHER\x10\x07\x12\x06\n\x02MP\x10\x08\x12\x06\n\x02UV\x10\t\x12\x07\n\x03TLC\x10\n\x12\x06\n\x02MS\x10\x0b\x12\x08\n\x04HRMS\x10\x0c\x12\x08\n\x04MSMS\x10\r\x12\n\n\x06WEIGHT\x10\x0e\x12\x08\n\x04LCMS\x10\x0f\x12\x08\n\x04GCMS\x10\x10\x12\x08\n\x04\x45LSD\x10\x11\x12\x06\n\x02\x43\x44\x10\x12\x12\x07\n\x03SFC\x10\x13\x12\x07\n\x03\x45PR\x10\x14\x12\x07\n\x03XRD\x10\x15\x12\t\n\x05RAMAN\x10\x16\x12\x06\n\x02\x45\x44\x10\x17\x42\x19\n\x17_is_of_isolated_species\"\x87\x03\n\x12ReactionProvenance\x12!\n\x0c\x65xperimenter\x18\x01 \x01(\x0b\x32\x0b.ord.Person\x12\x0c\n\x04\x63ity\x18\x02 \x01(\t\x12\'\n\x10\x65xperiment_start\x18\x03 \x01(\x0b\x32\r.ord.DateTime\x12\x0b\n\x03\x64oi\x18\x04 \x01(\t\x12\x0e\n\x06patent\x18\x05 \x01(\t\x12\x17\n\x0fpublication_url\x18\x06 \x01(\t\x12(\n\x0erecord_created\x18\x07 \x01(\x0b\x32\x10.ord.RecordEvent\x12)\n\x0frecord_modified\x18\x08 \x03(\x0b\x32\x10.ord.RecordEvent\x12H\n\x11reaction_metadata\x18\t \x03(\x0b\x32-.ord.ReactionProvenance.ReactionMetadataEntry\x1a\x42\n\x15ReactionMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x18\n\x05value\x18\x02 \x01(\x0b\x32\t.ord.Data:\x02\x38\x01\"\\\n\x06Person\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05orcid\x18\x03 \x01(\t\x12\x14\n\x0corganization\x18\x04 \x01(\t\x12\r\n\x05\x65mail\x18\x05 \x01(\t\"X\n\x0bRecordEvent\x12\x1b\n\x04time\x18\x01 \x01(\x0b\x32\r.ord.DateTime\x12\x1b\n\x06person\x18\x02 \x01(\x0b\x32\x0b.ord.Person\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t\"\xb5\x01\n\x04Time\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12!\n\x05units\x18\x03 \x01(\x0e\x32\x12.ord.Time.TimeUnit\"F\n\x08TimeUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x07\n\x03\x44\x41Y\x10\x04\x12\x08\n\x04HOUR\x10\x01\x12\n\n\x06MINUTE\x10\x02\x12\n\n\x06SECOND\x10\x03\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xc0\x01\n\x04Mass\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12!\n\x05units\x18\x03 \x01(\x0e\x32\x12.ord.Mass.MassUnit\"Q\n\x08MassUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0c\n\x08KILOGRAM\x10\x01\x12\x08\n\x04GRAM\x10\x02\x12\r\n\tMILLIGRAM\x10\x03\x12\r\n\tMICROGRAM\x10\x04\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xc4\x01\n\x05Moles\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12#\n\x05units\x18\x03 \x01(\x0e\x32\x14.ord.Moles.MolesUnit\"R\n\tMolesUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04MOLE\x10\x01\x12\r\n\tMILLIMOLE\x10\x02\x12\r\n\tMICROMOLE\x10\x03\x12\x0c\n\x08NANOMOLE\x10\x04\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xcc\x01\n\x06Volume\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12%\n\x05units\x18\x03 \x01(\x0e\x32\x16.ord.Volume.VolumeUnit\"W\n\nVolumeUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05LITER\x10\x01\x12\x0e\n\nMILLILITER\x10\x02\x12\x0e\n\nMICROLITER\x10\x03\x12\r\n\tNANOLITER\x10\x04\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xd9\x01\n\rConcentration\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x33\n\x05units\x18\x03 \x01(\x0e\x32$.ord.Concentration.ConcentrationUnit\"O\n\x11\x43oncentrationUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05MOLAR\x10\x01\x12\x0e\n\nMILLIMOLAR\x10\x02\x12\x0e\n\nMICROMOLAR\x10\x03\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xf7\x01\n\x08Pressure\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12)\n\x05units\x18\x03 \x01(\x0e\x32\x1a.ord.Pressure.PressureUnit\"|\n\x0cPressureUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x07\n\x03\x42\x41R\x10\x01\x12\x0e\n\nATMOSPHERE\x10\x02\x12\x07\n\x03PSI\x10\x03\x12\x08\n\x04KPSI\x10\x04\x12\n\n\x06PASCAL\x10\x05\x12\x0e\n\nKILOPASCAL\x10\x06\x12\x08\n\x04TORR\x10\x07\x12\t\n\x05MM_HG\x10\x08\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xcf\x01\n\x0bTemperature\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12/\n\x05units\x18\x03 \x01(\x0e\x32 .ord.Temperature.TemperatureUnit\"K\n\x0fTemperatureUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0b\n\x07\x43\x45LSIUS\x10\x01\x12\x0e\n\nFAHRENHEIT\x10\x02\x12\n\n\x06KELVIN\x10\x03\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xb3\x01\n\x07\x43urrent\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\'\n\x05units\x18\x03 \x01(\x0e\x32\x18.ord.Current.CurrentUnit\";\n\x0b\x43urrentUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x41MPERE\x10\x01\x12\x0f\n\x0bMILLIAMPERE\x10\x02\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xaf\x01\n\x07Voltage\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\'\n\x05units\x18\x03 \x01(\x0e\x32\x18.ord.Voltage.VoltageUnit\"7\n\x0bVoltageUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x08\n\x04VOLT\x10\x01\x12\r\n\tMILLIVOLT\x10\x02\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xd1\x01\n\x06Length\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12%\n\x05units\x18\x03 \x01(\x0e\x32\x16.ord.Length.LengthUnit\"\\\n\nLengthUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nCENTIMETER\x10\x01\x12\x0e\n\nMILLIMETER\x10\x02\x12\t\n\x05METER\x10\x03\x12\x08\n\x04INCH\x10\x04\x12\x08\n\x04\x46OOT\x10\x05\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xc1\x01\n\nWavelength\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12-\n\x05units\x18\x03 \x01(\x0e\x32\x1e.ord.Wavelength.WavelengthUnit\"@\n\x0eWavelengthUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\r\n\tNANOMETER\x10\x01\x12\x0e\n\nWAVENUMBER\x10\x02\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xa0\x02\n\x08\x46lowRate\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12)\n\x05units\x18\x03 \x01(\x0e\x32\x1a.ord.FlowRate.FlowRateUnit\"\xa4\x01\n\x0c\x46lowRateUnit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x19\n\x15MICROLITER_PER_MINUTE\x10\x01\x12\x19\n\x15MICROLITER_PER_SECOND\x10\x02\x12\x19\n\x15MILLILITER_PER_MINUTE\x10\x03\x12\x19\n\x15MILLILITER_PER_SECOND\x10\x04\x12\x17\n\x13MICROLITER_PER_HOUR\x10\x05\x42\x08\n\x06_valueB\x0c\n\n_precision\"P\n\nPercentage\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x42\x08\n\x06_valueB\x0c\n\n_precision\"P\n\nFloatValue\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x16\n\tprecision\x18\x02 \x01(\x02H\x01\x88\x01\x01\x42\x08\n\x06_valueB\x0c\n\n_precision\"\xa1\x01\n\x04\x44\x61ta\x12\x15\n\x0b\x66loat_value\x18\x01 \x01(\x02H\x00\x12\x17\n\rinteger_value\x18\x02 \x01(\x05H\x00\x12\x15\n\x0b\x62ytes_value\x18\x03 \x01(\x0cH\x00\x12\x16\n\x0cstring_value\x18\x04 \x01(\tH\x00\x12\r\n\x03url\x18\x05 \x01(\tH\x00\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x0e\n\x06\x66ormat\x18\x07 \x01(\tB\x06\n\x04kindb\x06proto3')
 
-
-
-_REACTION = DESCRIPTOR.message_types_by_name['Reaction']
-_REACTION_INPUTSENTRY = _REACTION.nested_types_by_name['InputsEntry']
-_REACTIONIDENTIFIER = DESCRIPTOR.message_types_by_name['ReactionIdentifier']
-_REACTIONINPUT = DESCRIPTOR.message_types_by_name['ReactionInput']
-_REACTIONINPUT_ADDITIONSPEED = _REACTIONINPUT.nested_types_by_name['AdditionSpeed']
-_REACTIONINPUT_ADDITIONDEVICE = _REACTIONINPUT.nested_types_by_name['AdditionDevice']
-_AMOUNT = DESCRIPTOR.message_types_by_name['Amount']
-_UNMEASUREDAMOUNT = DESCRIPTOR.message_types_by_name['UnmeasuredAmount']
-_CRUDECOMPONENT = DESCRIPTOR.message_types_by_name['CrudeComponent']
-_COMPOUND = DESCRIPTOR.message_types_by_name['Compound']
-_COMPOUND_SOURCE = _COMPOUND.nested_types_by_name['Source']
-_COMPOUND_FEATURESENTRY = _COMPOUND.nested_types_by_name['FeaturesEntry']
-_COMPOUND_ANALYSESENTRY = _COMPOUND.nested_types_by_name['AnalysesEntry']
-_REACTIONROLE = DESCRIPTOR.message_types_by_name['ReactionRole']
-_COMPOUNDPREPARATION = DESCRIPTOR.message_types_by_name['CompoundPreparation']
-_COMPOUNDIDENTIFIER = DESCRIPTOR.message_types_by_name['CompoundIdentifier']
-_VESSEL = DESCRIPTOR.message_types_by_name['Vessel']
-_VESSELMATERIAL = DESCRIPTOR.message_types_by_name['VesselMaterial']
-_VESSELATTACHMENT = DESCRIPTOR.message_types_by_name['VesselAttachment']
-_VESSELPREPARATION = DESCRIPTOR.message_types_by_name['VesselPreparation']
-_REACTIONSETUP = DESCRIPTOR.message_types_by_name['ReactionSetup']
-_REACTIONSETUP_AUTOMATIONCODEENTRY = _REACTIONSETUP.nested_types_by_name['AutomationCodeEntry']
-_REACTIONSETUP_REACTIONENVIRONMENT = _REACTIONSETUP.nested_types_by_name['ReactionEnvironment']
-_REACTIONCONDITIONS = DESCRIPTOR.message_types_by_name['ReactionConditions']
-_TEMPERATURECONDITIONS = DESCRIPTOR.message_types_by_name['TemperatureConditions']
-_TEMPERATURECONDITIONS_TEMPERATURECONTROL = _TEMPERATURECONDITIONS.nested_types_by_name['TemperatureControl']
-_TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT = _TEMPERATURECONDITIONS.nested_types_by_name['TemperatureMeasurement']
-_PRESSURECONDITIONS = DESCRIPTOR.message_types_by_name['PressureConditions']
-_PRESSURECONDITIONS_PRESSURECONTROL = _PRESSURECONDITIONS.nested_types_by_name['PressureControl']
-_PRESSURECONDITIONS_ATMOSPHERE = _PRESSURECONDITIONS.nested_types_by_name['Atmosphere']
-_PRESSURECONDITIONS_PRESSUREMEASUREMENT = _PRESSURECONDITIONS.nested_types_by_name['PressureMeasurement']
-_STIRRINGCONDITIONS = DESCRIPTOR.message_types_by_name['StirringConditions']
-_STIRRINGCONDITIONS_STIRRINGRATE = _STIRRINGCONDITIONS.nested_types_by_name['StirringRate']
-_ILLUMINATIONCONDITIONS = DESCRIPTOR.message_types_by_name['IlluminationConditions']
-_ELECTROCHEMISTRYCONDITIONS = DESCRIPTOR.message_types_by_name['ElectrochemistryConditions']
-_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYMEASUREMENT = _ELECTROCHEMISTRYCONDITIONS.nested_types_by_name['ElectrochemistryMeasurement']
-_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL = _ELECTROCHEMISTRYCONDITIONS.nested_types_by_name['ElectrochemistryCell']
-_FLOWCONDITIONS = DESCRIPTOR.message_types_by_name['FlowConditions']
-_FLOWCONDITIONS_TUBING = _FLOWCONDITIONS.nested_types_by_name['Tubing']
-_REACTIONNOTES = DESCRIPTOR.message_types_by_name['ReactionNotes']
-_REACTIONOBSERVATION = DESCRIPTOR.message_types_by_name['ReactionObservation']
-_REACTIONWORKUP = DESCRIPTOR.message_types_by_name['ReactionWorkup']
-_REACTIONOUTCOME = DESCRIPTOR.message_types_by_name['ReactionOutcome']
-_REACTIONOUTCOME_ANALYSESENTRY = _REACTIONOUTCOME.nested_types_by_name['AnalysesEntry']
-_PRODUCTCOMPOUND = DESCRIPTOR.message_types_by_name['ProductCompound']
-_PRODUCTCOMPOUND_TEXTURE = _PRODUCTCOMPOUND.nested_types_by_name['Texture']
-_PRODUCTCOMPOUND_FEATURESENTRY = _PRODUCTCOMPOUND.nested_types_by_name['FeaturesEntry']
-_PRODUCTMEASUREMENT = DESCRIPTOR.message_types_by_name['ProductMeasurement']
-_PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS = _PRODUCTMEASUREMENT.nested_types_by_name['MassSpecMeasurementDetails']
-_PRODUCTMEASUREMENT_SELECTIVITY = _PRODUCTMEASUREMENT.nested_types_by_name['Selectivity']
-_DATETIME = DESCRIPTOR.message_types_by_name['DateTime']
-_ANALYSIS = DESCRIPTOR.message_types_by_name['Analysis']
-_ANALYSIS_DATAENTRY = _ANALYSIS.nested_types_by_name['DataEntry']
-_REACTIONPROVENANCE = DESCRIPTOR.message_types_by_name['ReactionProvenance']
-_REACTIONPROVENANCE_REACTIONMETADATAENTRY = _REACTIONPROVENANCE.nested_types_by_name['ReactionMetadataEntry']
-_PERSON = DESCRIPTOR.message_types_by_name['Person']
-_RECORDEVENT = DESCRIPTOR.message_types_by_name['RecordEvent']
-_TIME = DESCRIPTOR.message_types_by_name['Time']
-_MASS = DESCRIPTOR.message_types_by_name['Mass']
-_MOLES = DESCRIPTOR.message_types_by_name['Moles']
-_VOLUME = DESCRIPTOR.message_types_by_name['Volume']
-_CONCENTRATION = DESCRIPTOR.message_types_by_name['Concentration']
-_PRESSURE = DESCRIPTOR.message_types_by_name['Pressure']
-_TEMPERATURE = DESCRIPTOR.message_types_by_name['Temperature']
-_CURRENT = DESCRIPTOR.message_types_by_name['Current']
-_VOLTAGE = DESCRIPTOR.message_types_by_name['Voltage']
-_LENGTH = DESCRIPTOR.message_types_by_name['Length']
-_WAVELENGTH = DESCRIPTOR.message_types_by_name['Wavelength']
-_FLOWRATE = DESCRIPTOR.message_types_by_name['FlowRate']
-_PERCENTAGE = DESCRIPTOR.message_types_by_name['Percentage']
-_FLOATVALUE = DESCRIPTOR.message_types_by_name['FloatValue']
-_DATA = DESCRIPTOR.message_types_by_name['Data']
-_REACTIONIDENTIFIER_REACTIONIDENTIFIERTYPE = _REACTIONIDENTIFIER.enum_types_by_name['ReactionIdentifierType']
-_REACTIONINPUT_ADDITIONSPEED_ADDITIONSPEEDTYPE = _REACTIONINPUT_ADDITIONSPEED.enum_types_by_name['AdditionSpeedType']
-_REACTIONINPUT_ADDITIONDEVICE_ADDITIONDEVICETYPE = _REACTIONINPUT_ADDITIONDEVICE.enum_types_by_name['AdditionDeviceType']
-_UNMEASUREDAMOUNT_UNMEASUREDAMOUNTTYPE = _UNMEASUREDAMOUNT.enum_types_by_name['UnmeasuredAmountType']
-_REACTIONROLE_REACTIONROLETYPE = _REACTIONROLE.enum_types_by_name['ReactionRoleType']
-_COMPOUNDPREPARATION_COMPOUNDPREPARATIONTYPE = _COMPOUNDPREPARATION.enum_types_by_name['CompoundPreparationType']
-_COMPOUNDIDENTIFIER_COMPOUNDIDENTIFIERTYPE = _COMPOUNDIDENTIFIER.enum_types_by_name['CompoundIdentifierType']
-_VESSEL_VESSELTYPE = _VESSEL.enum_types_by_name['VesselType']
-_VESSELMATERIAL_VESSELMATERIALTYPE = _VESSELMATERIAL.enum_types_by_name['VesselMaterialType']
-_VESSELATTACHMENT_VESSELATTACHMENTTYPE = _VESSELATTACHMENT.enum_types_by_name['VesselAttachmentType']
-_VESSELPREPARATION_VESSELPREPARATIONTYPE = _VESSELPREPARATION.enum_types_by_name['VesselPreparationType']
-_REACTIONSETUP_REACTIONENVIRONMENT_REACTIONENVIRONMENTTYPE = _REACTIONSETUP_REACTIONENVIRONMENT.enum_types_by_name['ReactionEnvironmentType']
-_TEMPERATURECONDITIONS_TEMPERATURECONTROL_TEMPERATURECONTROLTYPE = _TEMPERATURECONDITIONS_TEMPERATURECONTROL.enum_types_by_name['TemperatureControlType']
-_TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT_TEMPERATUREMEASUREMENTTYPE = _TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT.enum_types_by_name['TemperatureMeasurementType']
-_PRESSURECONDITIONS_PRESSURECONTROL_PRESSURECONTROLTYPE = _PRESSURECONDITIONS_PRESSURECONTROL.enum_types_by_name['PressureControlType']
-_PRESSURECONDITIONS_ATMOSPHERE_ATMOSPHERETYPE = _PRESSURECONDITIONS_ATMOSPHERE.enum_types_by_name['AtmosphereType']
-_PRESSURECONDITIONS_PRESSUREMEASUREMENT_PRESSUREMEASUREMENTTYPE = _PRESSURECONDITIONS_PRESSUREMEASUREMENT.enum_types_by_name['PressureMeasurementType']
-_STIRRINGCONDITIONS_STIRRINGRATE_STIRRINGRATETYPE = _STIRRINGCONDITIONS_STIRRINGRATE.enum_types_by_name['StirringRateType']
-_STIRRINGCONDITIONS_STIRRINGMETHODTYPE = _STIRRINGCONDITIONS.enum_types_by_name['StirringMethodType']
-_ILLUMINATIONCONDITIONS_ILLUMINATIONTYPE = _ILLUMINATIONCONDITIONS.enum_types_by_name['IlluminationType']
-_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL_ELECTROCHEMISTRYCELLTYPE = _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL.enum_types_by_name['ElectrochemistryCellType']
-_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYTYPE = _ELECTROCHEMISTRYCONDITIONS.enum_types_by_name['ElectrochemistryType']
-_FLOWCONDITIONS_TUBING_TUBINGTYPE = _FLOWCONDITIONS_TUBING.enum_types_by_name['TubingType']
-_FLOWCONDITIONS_FLOWTYPE = _FLOWCONDITIONS.enum_types_by_name['FlowType']
-_REACTIONWORKUP_REACTIONWORKUPTYPE = _REACTIONWORKUP.enum_types_by_name['ReactionWorkupType']
-_PRODUCTCOMPOUND_TEXTURE_TEXTURETYPE = _PRODUCTCOMPOUND_TEXTURE.enum_types_by_name['TextureType']
-_PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS_MASSSPECMEASUREMENTTYPE = _PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS.enum_types_by_name['MassSpecMeasurementType']
-_PRODUCTMEASUREMENT_SELECTIVITY_SELECTIVITYTYPE = _PRODUCTMEASUREMENT_SELECTIVITY.enum_types_by_name['SelectivityType']
-_PRODUCTMEASUREMENT_PRODUCTMEASUREMENTTYPE = _PRODUCTMEASUREMENT.enum_types_by_name['ProductMeasurementType']
-_ANALYSIS_ANALYSISTYPE = _ANALYSIS.enum_types_by_name['AnalysisType']
-_TIME_TIMEUNIT = _TIME.enum_types_by_name['TimeUnit']
-_MASS_MASSUNIT = _MASS.enum_types_by_name['MassUnit']
-_MOLES_MOLESUNIT = _MOLES.enum_types_by_name['MolesUnit']
-_VOLUME_VOLUMEUNIT = _VOLUME.enum_types_by_name['VolumeUnit']
-_CONCENTRATION_CONCENTRATIONUNIT = _CONCENTRATION.enum_types_by_name['ConcentrationUnit']
-_PRESSURE_PRESSUREUNIT = _PRESSURE.enum_types_by_name['PressureUnit']
-_TEMPERATURE_TEMPERATUREUNIT = _TEMPERATURE.enum_types_by_name['TemperatureUnit']
-_CURRENT_CURRENTUNIT = _CURRENT.enum_types_by_name['CurrentUnit']
-_VOLTAGE_VOLTAGEUNIT = _VOLTAGE.enum_types_by_name['VoltageUnit']
-_LENGTH_LENGTHUNIT = _LENGTH.enum_types_by_name['LengthUnit']
-_WAVELENGTH_WAVELENGTHUNIT = _WAVELENGTH.enum_types_by_name['WavelengthUnit']
-_FLOWRATE_FLOWRATEUNIT = _FLOWRATE.enum_types_by_name['FlowRateUnit']
-Reaction = _reflection.GeneratedProtocolMessageType('Reaction', (_message.Message,), {
-
-  'InputsEntry' : _reflection.GeneratedProtocolMessageType('InputsEntry', (_message.Message,), {
-    'DESCRIPTOR' : _REACTION_INPUTSENTRY,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.Reaction.InputsEntry)
-    })
-  ,
-  'DESCRIPTOR' : _REACTION,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Reaction)
-  })
-_sym_db.RegisterMessage(Reaction)
-_sym_db.RegisterMessage(Reaction.InputsEntry)
-
-ReactionIdentifier = _reflection.GeneratedProtocolMessageType('ReactionIdentifier', (_message.Message,), {
-  'DESCRIPTOR' : _REACTIONIDENTIFIER,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionIdentifier)
-  })
-_sym_db.RegisterMessage(ReactionIdentifier)
-
-ReactionInput = _reflection.GeneratedProtocolMessageType('ReactionInput', (_message.Message,), {
-
-  'AdditionSpeed' : _reflection.GeneratedProtocolMessageType('AdditionSpeed', (_message.Message,), {
-    'DESCRIPTOR' : _REACTIONINPUT_ADDITIONSPEED,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ReactionInput.AdditionSpeed)
-    })
-  ,
-
-  'AdditionDevice' : _reflection.GeneratedProtocolMessageType('AdditionDevice', (_message.Message,), {
-    'DESCRIPTOR' : _REACTIONINPUT_ADDITIONDEVICE,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ReactionInput.AdditionDevice)
-    })
-  ,
-  'DESCRIPTOR' : _REACTIONINPUT,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionInput)
-  })
-_sym_db.RegisterMessage(ReactionInput)
-_sym_db.RegisterMessage(ReactionInput.AdditionSpeed)
-_sym_db.RegisterMessage(ReactionInput.AdditionDevice)
-
-Amount = _reflection.GeneratedProtocolMessageType('Amount', (_message.Message,), {
-  'DESCRIPTOR' : _AMOUNT,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Amount)
-  })
-_sym_db.RegisterMessage(Amount)
-
-UnmeasuredAmount = _reflection.GeneratedProtocolMessageType('UnmeasuredAmount', (_message.Message,), {
-  'DESCRIPTOR' : _UNMEASUREDAMOUNT,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.UnmeasuredAmount)
-  })
-_sym_db.RegisterMessage(UnmeasuredAmount)
-
-CrudeComponent = _reflection.GeneratedProtocolMessageType('CrudeComponent', (_message.Message,), {
-  'DESCRIPTOR' : _CRUDECOMPONENT,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.CrudeComponent)
-  })
-_sym_db.RegisterMessage(CrudeComponent)
-
-Compound = _reflection.GeneratedProtocolMessageType('Compound', (_message.Message,), {
-
-  'Source' : _reflection.GeneratedProtocolMessageType('Source', (_message.Message,), {
-    'DESCRIPTOR' : _COMPOUND_SOURCE,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.Compound.Source)
-    })
-  ,
-
-  'FeaturesEntry' : _reflection.GeneratedProtocolMessageType('FeaturesEntry', (_message.Message,), {
-    'DESCRIPTOR' : _COMPOUND_FEATURESENTRY,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.Compound.FeaturesEntry)
-    })
-  ,
-
-  'AnalysesEntry' : _reflection.GeneratedProtocolMessageType('AnalysesEntry', (_message.Message,), {
-    'DESCRIPTOR' : _COMPOUND_ANALYSESENTRY,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.Compound.AnalysesEntry)
-    })
-  ,
-  'DESCRIPTOR' : _COMPOUND,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Compound)
-  })
-_sym_db.RegisterMessage(Compound)
-_sym_db.RegisterMessage(Compound.Source)
-_sym_db.RegisterMessage(Compound.FeaturesEntry)
-_sym_db.RegisterMessage(Compound.AnalysesEntry)
-
-ReactionRole = _reflection.GeneratedProtocolMessageType('ReactionRole', (_message.Message,), {
-  'DESCRIPTOR' : _REACTIONROLE,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionRole)
-  })
-_sym_db.RegisterMessage(ReactionRole)
-
-CompoundPreparation = _reflection.GeneratedProtocolMessageType('CompoundPreparation', (_message.Message,), {
-  'DESCRIPTOR' : _COMPOUNDPREPARATION,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.CompoundPreparation)
-  })
-_sym_db.RegisterMessage(CompoundPreparation)
-
-CompoundIdentifier = _reflection.GeneratedProtocolMessageType('CompoundIdentifier', (_message.Message,), {
-  'DESCRIPTOR' : _COMPOUNDIDENTIFIER,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.CompoundIdentifier)
-  })
-_sym_db.RegisterMessage(CompoundIdentifier)
-
-Vessel = _reflection.GeneratedProtocolMessageType('Vessel', (_message.Message,), {
-  'DESCRIPTOR' : _VESSEL,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Vessel)
-  })
-_sym_db.RegisterMessage(Vessel)
-
-VesselMaterial = _reflection.GeneratedProtocolMessageType('VesselMaterial', (_message.Message,), {
-  'DESCRIPTOR' : _VESSELMATERIAL,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.VesselMaterial)
-  })
-_sym_db.RegisterMessage(VesselMaterial)
-
-VesselAttachment = _reflection.GeneratedProtocolMessageType('VesselAttachment', (_message.Message,), {
-  'DESCRIPTOR' : _VESSELATTACHMENT,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.VesselAttachment)
-  })
-_sym_db.RegisterMessage(VesselAttachment)
-
-VesselPreparation = _reflection.GeneratedProtocolMessageType('VesselPreparation', (_message.Message,), {
-  'DESCRIPTOR' : _VESSELPREPARATION,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.VesselPreparation)
-  })
-_sym_db.RegisterMessage(VesselPreparation)
-
-ReactionSetup = _reflection.GeneratedProtocolMessageType('ReactionSetup', (_message.Message,), {
-
-  'AutomationCodeEntry' : _reflection.GeneratedProtocolMessageType('AutomationCodeEntry', (_message.Message,), {
-    'DESCRIPTOR' : _REACTIONSETUP_AUTOMATIONCODEENTRY,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ReactionSetup.AutomationCodeEntry)
-    })
-  ,
-
-  'ReactionEnvironment' : _reflection.GeneratedProtocolMessageType('ReactionEnvironment', (_message.Message,), {
-    'DESCRIPTOR' : _REACTIONSETUP_REACTIONENVIRONMENT,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ReactionSetup.ReactionEnvironment)
-    })
-  ,
-  'DESCRIPTOR' : _REACTIONSETUP,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionSetup)
-  })
-_sym_db.RegisterMessage(ReactionSetup)
-_sym_db.RegisterMessage(ReactionSetup.AutomationCodeEntry)
-_sym_db.RegisterMessage(ReactionSetup.ReactionEnvironment)
-
-ReactionConditions = _reflection.GeneratedProtocolMessageType('ReactionConditions', (_message.Message,), {
-  'DESCRIPTOR' : _REACTIONCONDITIONS,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionConditions)
-  })
-_sym_db.RegisterMessage(ReactionConditions)
-
-TemperatureConditions = _reflection.GeneratedProtocolMessageType('TemperatureConditions', (_message.Message,), {
-
-  'TemperatureControl' : _reflection.GeneratedProtocolMessageType('TemperatureControl', (_message.Message,), {
-    'DESCRIPTOR' : _TEMPERATURECONDITIONS_TEMPERATURECONTROL,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.TemperatureConditions.TemperatureControl)
-    })
-  ,
-
-  'TemperatureMeasurement' : _reflection.GeneratedProtocolMessageType('TemperatureMeasurement', (_message.Message,), {
-    'DESCRIPTOR' : _TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.TemperatureConditions.TemperatureMeasurement)
-    })
-  ,
-  'DESCRIPTOR' : _TEMPERATURECONDITIONS,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.TemperatureConditions)
-  })
-_sym_db.RegisterMessage(TemperatureConditions)
-_sym_db.RegisterMessage(TemperatureConditions.TemperatureControl)
-_sym_db.RegisterMessage(TemperatureConditions.TemperatureMeasurement)
-
-PressureConditions = _reflection.GeneratedProtocolMessageType('PressureConditions', (_message.Message,), {
-
-  'PressureControl' : _reflection.GeneratedProtocolMessageType('PressureControl', (_message.Message,), {
-    'DESCRIPTOR' : _PRESSURECONDITIONS_PRESSURECONTROL,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.PressureConditions.PressureControl)
-    })
-  ,
-
-  'Atmosphere' : _reflection.GeneratedProtocolMessageType('Atmosphere', (_message.Message,), {
-    'DESCRIPTOR' : _PRESSURECONDITIONS_ATMOSPHERE,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.PressureConditions.Atmosphere)
-    })
-  ,
-
-  'PressureMeasurement' : _reflection.GeneratedProtocolMessageType('PressureMeasurement', (_message.Message,), {
-    'DESCRIPTOR' : _PRESSURECONDITIONS_PRESSUREMEASUREMENT,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.PressureConditions.PressureMeasurement)
-    })
-  ,
-  'DESCRIPTOR' : _PRESSURECONDITIONS,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.PressureConditions)
-  })
-_sym_db.RegisterMessage(PressureConditions)
-_sym_db.RegisterMessage(PressureConditions.PressureControl)
-_sym_db.RegisterMessage(PressureConditions.Atmosphere)
-_sym_db.RegisterMessage(PressureConditions.PressureMeasurement)
-
-StirringConditions = _reflection.GeneratedProtocolMessageType('StirringConditions', (_message.Message,), {
-
-  'StirringRate' : _reflection.GeneratedProtocolMessageType('StirringRate', (_message.Message,), {
-    'DESCRIPTOR' : _STIRRINGCONDITIONS_STIRRINGRATE,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.StirringConditions.StirringRate)
-    })
-  ,
-  'DESCRIPTOR' : _STIRRINGCONDITIONS,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.StirringConditions)
-  })
-_sym_db.RegisterMessage(StirringConditions)
-_sym_db.RegisterMessage(StirringConditions.StirringRate)
-
-IlluminationConditions = _reflection.GeneratedProtocolMessageType('IlluminationConditions', (_message.Message,), {
-  'DESCRIPTOR' : _ILLUMINATIONCONDITIONS,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.IlluminationConditions)
-  })
-_sym_db.RegisterMessage(IlluminationConditions)
-
-ElectrochemistryConditions = _reflection.GeneratedProtocolMessageType('ElectrochemistryConditions', (_message.Message,), {
-
-  'ElectrochemistryMeasurement' : _reflection.GeneratedProtocolMessageType('ElectrochemistryMeasurement', (_message.Message,), {
-    'DESCRIPTOR' : _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYMEASUREMENT,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ElectrochemistryConditions.ElectrochemistryMeasurement)
-    })
-  ,
-
-  'ElectrochemistryCell' : _reflection.GeneratedProtocolMessageType('ElectrochemistryCell', (_message.Message,), {
-    'DESCRIPTOR' : _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ElectrochemistryConditions.ElectrochemistryCell)
-    })
-  ,
-  'DESCRIPTOR' : _ELECTROCHEMISTRYCONDITIONS,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ElectrochemistryConditions)
-  })
-_sym_db.RegisterMessage(ElectrochemistryConditions)
-_sym_db.RegisterMessage(ElectrochemistryConditions.ElectrochemistryMeasurement)
-_sym_db.RegisterMessage(ElectrochemistryConditions.ElectrochemistryCell)
-
-FlowConditions = _reflection.GeneratedProtocolMessageType('FlowConditions', (_message.Message,), {
-
-  'Tubing' : _reflection.GeneratedProtocolMessageType('Tubing', (_message.Message,), {
-    'DESCRIPTOR' : _FLOWCONDITIONS_TUBING,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.FlowConditions.Tubing)
-    })
-  ,
-  'DESCRIPTOR' : _FLOWCONDITIONS,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.FlowConditions)
-  })
-_sym_db.RegisterMessage(FlowConditions)
-_sym_db.RegisterMessage(FlowConditions.Tubing)
-
-ReactionNotes = _reflection.GeneratedProtocolMessageType('ReactionNotes', (_message.Message,), {
-  'DESCRIPTOR' : _REACTIONNOTES,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionNotes)
-  })
-_sym_db.RegisterMessage(ReactionNotes)
-
-ReactionObservation = _reflection.GeneratedProtocolMessageType('ReactionObservation', (_message.Message,), {
-  'DESCRIPTOR' : _REACTIONOBSERVATION,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionObservation)
-  })
-_sym_db.RegisterMessage(ReactionObservation)
-
-ReactionWorkup = _reflection.GeneratedProtocolMessageType('ReactionWorkup', (_message.Message,), {
-  'DESCRIPTOR' : _REACTIONWORKUP,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionWorkup)
-  })
-_sym_db.RegisterMessage(ReactionWorkup)
-
-ReactionOutcome = _reflection.GeneratedProtocolMessageType('ReactionOutcome', (_message.Message,), {
-
-  'AnalysesEntry' : _reflection.GeneratedProtocolMessageType('AnalysesEntry', (_message.Message,), {
-    'DESCRIPTOR' : _REACTIONOUTCOME_ANALYSESENTRY,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ReactionOutcome.AnalysesEntry)
-    })
-  ,
-  'DESCRIPTOR' : _REACTIONOUTCOME,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionOutcome)
-  })
-_sym_db.RegisterMessage(ReactionOutcome)
-_sym_db.RegisterMessage(ReactionOutcome.AnalysesEntry)
-
-ProductCompound = _reflection.GeneratedProtocolMessageType('ProductCompound', (_message.Message,), {
-
-  'Texture' : _reflection.GeneratedProtocolMessageType('Texture', (_message.Message,), {
-    'DESCRIPTOR' : _PRODUCTCOMPOUND_TEXTURE,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ProductCompound.Texture)
-    })
-  ,
-
-  'FeaturesEntry' : _reflection.GeneratedProtocolMessageType('FeaturesEntry', (_message.Message,), {
-    'DESCRIPTOR' : _PRODUCTCOMPOUND_FEATURESENTRY,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ProductCompound.FeaturesEntry)
-    })
-  ,
-  'DESCRIPTOR' : _PRODUCTCOMPOUND,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ProductCompound)
-  })
-_sym_db.RegisterMessage(ProductCompound)
-_sym_db.RegisterMessage(ProductCompound.Texture)
-_sym_db.RegisterMessage(ProductCompound.FeaturesEntry)
-
-ProductMeasurement = _reflection.GeneratedProtocolMessageType('ProductMeasurement', (_message.Message,), {
-
-  'MassSpecMeasurementDetails' : _reflection.GeneratedProtocolMessageType('MassSpecMeasurementDetails', (_message.Message,), {
-    'DESCRIPTOR' : _PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ProductMeasurement.MassSpecMeasurementDetails)
-    })
-  ,
-
-  'Selectivity' : _reflection.GeneratedProtocolMessageType('Selectivity', (_message.Message,), {
-    'DESCRIPTOR' : _PRODUCTMEASUREMENT_SELECTIVITY,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ProductMeasurement.Selectivity)
-    })
-  ,
-  'DESCRIPTOR' : _PRODUCTMEASUREMENT,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ProductMeasurement)
-  })
-_sym_db.RegisterMessage(ProductMeasurement)
-_sym_db.RegisterMessage(ProductMeasurement.MassSpecMeasurementDetails)
-_sym_db.RegisterMessage(ProductMeasurement.Selectivity)
-
-DateTime = _reflection.GeneratedProtocolMessageType('DateTime', (_message.Message,), {
-  'DESCRIPTOR' : _DATETIME,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.DateTime)
-  })
-_sym_db.RegisterMessage(DateTime)
-
-Analysis = _reflection.GeneratedProtocolMessageType('Analysis', (_message.Message,), {
-
-  'DataEntry' : _reflection.GeneratedProtocolMessageType('DataEntry', (_message.Message,), {
-    'DESCRIPTOR' : _ANALYSIS_DATAENTRY,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.Analysis.DataEntry)
-    })
-  ,
-  'DESCRIPTOR' : _ANALYSIS,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Analysis)
-  })
-_sym_db.RegisterMessage(Analysis)
-_sym_db.RegisterMessage(Analysis.DataEntry)
-
-ReactionProvenance = _reflection.GeneratedProtocolMessageType('ReactionProvenance', (_message.Message,), {
-
-  'ReactionMetadataEntry' : _reflection.GeneratedProtocolMessageType('ReactionMetadataEntry', (_message.Message,), {
-    'DESCRIPTOR' : _REACTIONPROVENANCE_REACTIONMETADATAENTRY,
-    '__module__' : 'ord_schema.proto.reaction_pb2'
-    # @@protoc_insertion_point(class_scope:ord.ReactionProvenance.ReactionMetadataEntry)
-    })
-  ,
-  'DESCRIPTOR' : _REACTIONPROVENANCE,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.ReactionProvenance)
-  })
-_sym_db.RegisterMessage(ReactionProvenance)
-_sym_db.RegisterMessage(ReactionProvenance.ReactionMetadataEntry)
-
-Person = _reflection.GeneratedProtocolMessageType('Person', (_message.Message,), {
-  'DESCRIPTOR' : _PERSON,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Person)
-  })
-_sym_db.RegisterMessage(Person)
-
-RecordEvent = _reflection.GeneratedProtocolMessageType('RecordEvent', (_message.Message,), {
-  'DESCRIPTOR' : _RECORDEVENT,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.RecordEvent)
-  })
-_sym_db.RegisterMessage(RecordEvent)
-
-Time = _reflection.GeneratedProtocolMessageType('Time', (_message.Message,), {
-  'DESCRIPTOR' : _TIME,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Time)
-  })
-_sym_db.RegisterMessage(Time)
-
-Mass = _reflection.GeneratedProtocolMessageType('Mass', (_message.Message,), {
-  'DESCRIPTOR' : _MASS,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Mass)
-  })
-_sym_db.RegisterMessage(Mass)
-
-Moles = _reflection.GeneratedProtocolMessageType('Moles', (_message.Message,), {
-  'DESCRIPTOR' : _MOLES,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Moles)
-  })
-_sym_db.RegisterMessage(Moles)
-
-Volume = _reflection.GeneratedProtocolMessageType('Volume', (_message.Message,), {
-  'DESCRIPTOR' : _VOLUME,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Volume)
-  })
-_sym_db.RegisterMessage(Volume)
-
-Concentration = _reflection.GeneratedProtocolMessageType('Concentration', (_message.Message,), {
-  'DESCRIPTOR' : _CONCENTRATION,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Concentration)
-  })
-_sym_db.RegisterMessage(Concentration)
-
-Pressure = _reflection.GeneratedProtocolMessageType('Pressure', (_message.Message,), {
-  'DESCRIPTOR' : _PRESSURE,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Pressure)
-  })
-_sym_db.RegisterMessage(Pressure)
-
-Temperature = _reflection.GeneratedProtocolMessageType('Temperature', (_message.Message,), {
-  'DESCRIPTOR' : _TEMPERATURE,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Temperature)
-  })
-_sym_db.RegisterMessage(Temperature)
-
-Current = _reflection.GeneratedProtocolMessageType('Current', (_message.Message,), {
-  'DESCRIPTOR' : _CURRENT,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Current)
-  })
-_sym_db.RegisterMessage(Current)
-
-Voltage = _reflection.GeneratedProtocolMessageType('Voltage', (_message.Message,), {
-  'DESCRIPTOR' : _VOLTAGE,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Voltage)
-  })
-_sym_db.RegisterMessage(Voltage)
-
-Length = _reflection.GeneratedProtocolMessageType('Length', (_message.Message,), {
-  'DESCRIPTOR' : _LENGTH,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Length)
-  })
-_sym_db.RegisterMessage(Length)
-
-Wavelength = _reflection.GeneratedProtocolMessageType('Wavelength', (_message.Message,), {
-  'DESCRIPTOR' : _WAVELENGTH,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Wavelength)
-  })
-_sym_db.RegisterMessage(Wavelength)
-
-FlowRate = _reflection.GeneratedProtocolMessageType('FlowRate', (_message.Message,), {
-  'DESCRIPTOR' : _FLOWRATE,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.FlowRate)
-  })
-_sym_db.RegisterMessage(FlowRate)
-
-Percentage = _reflection.GeneratedProtocolMessageType('Percentage', (_message.Message,), {
-  'DESCRIPTOR' : _PERCENTAGE,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Percentage)
-  })
-_sym_db.RegisterMessage(Percentage)
-
-FloatValue = _reflection.GeneratedProtocolMessageType('FloatValue', (_message.Message,), {
-  'DESCRIPTOR' : _FLOATVALUE,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.FloatValue)
-  })
-_sym_db.RegisterMessage(FloatValue)
-
-Data = _reflection.GeneratedProtocolMessageType('Data', (_message.Message,), {
-  'DESCRIPTOR' : _DATA,
-  '__module__' : 'ord_schema.proto.reaction_pb2'
-  # @@protoc_insertion_point(class_scope:ord.Data)
-  })
-_sym_db.RegisterMessage(Data)
-
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ord_schema.proto.reaction_pb2', _globals)
 if _descriptor._USE_C_DESCRIPTORS == False:
 
   DESCRIPTOR._options = None
@@ -693,232 +51,232 @@
   _ANALYSIS_DATAENTRY._serialized_options = b'8\001'
   _REACTIONPROVENANCE_REACTIONMETADATAENTRY._options = None
   _REACTIONPROVENANCE_REACTIONMETADATAENTRY._serialized_options = b'8\001'
-  _REACTION._serialized_start=41
-  _REACTION._serialized_end=514
-  _REACTION_INPUTSENTRY._serialized_start=449
-  _REACTION_INPUTSENTRY._serialized_end=514
-  _REACTIONIDENTIFIER._serialized_start=517
-  _REACTIONIDENTIFIER._serialized_end=812
-  _REACTIONIDENTIFIER_REACTIONIDENTIFIERTYPE._serialized_start=658
-  _REACTIONIDENTIFIER_REACTIONIDENTIFIERTYPE._serialized_end=798
-  _REACTIONINPUT._serialized_start=815
-  _REACTIONINPUT._serialized_end=1643
-  _REACTIONINPUT_ADDITIONSPEED._serialized_start=1211
-  _REACTIONINPUT_ADDITIONSPEED._serialized_end=1431
-  _REACTIONINPUT_ADDITIONSPEED_ADDITIONSPEEDTYPE._serialized_start=1311
-  _REACTIONINPUT_ADDITIONSPEED_ADDITIONSPEEDTYPE._serialized_end=1431
-  _REACTIONINPUT_ADDITIONDEVICE._serialized_start=1434
-  _REACTIONINPUT_ADDITIONDEVICE._serialized_end=1643
-  _REACTIONINPUT_ADDITIONDEVICE_ADDITIONDEVICETYPE._serialized_start=1537
-  _REACTIONINPUT_ADDITIONDEVICE_ADDITIONDEVICETYPE._serialized_end=1643
-  _AMOUNT._serialized_start=1646
-  _AMOUNT._serialized_end=1860
-  _UNMEASUREDAMOUNT._serialized_start=1863
-  _UNMEASUREDAMOUNT._serialized_end=2053
-  _UNMEASUREDAMOUNT_UNMEASUREDAMOUNTTYPE._serialized_start=1958
-  _UNMEASUREDAMOUNT_UNMEASUREDAMOUNTTYPE._serialized_end=2053
-  _CRUDECOMPONENT._serialized_start=2056
-  _CRUDECOMPONENT._serialized_end=2228
-  _COMPOUND._serialized_start=2231
-  _COMPOUND._serialized_end=2780
-  _COMPOUND_SOURCE._serialized_start=2583
-  _COMPOUND_SOURCE._serialized_end=2640
-  _COMPOUND_FEATURESENTRY._serialized_start=2642
-  _COMPOUND_FEATURESENTRY._serialized_end=2700
-  _COMPOUND_ANALYSESENTRY._serialized_start=2702
-  _COMPOUND_ANALYSESENTRY._serialized_end=2764
-  _REACTIONROLE._serialized_start=2783
-  _REACTIONROLE._serialized_end=2961
-  _REACTIONROLE_REACTIONROLETYPE._serialized_start=2800
-  _REACTIONROLE_REACTIONROLETYPE._serialized_end=2961
-  _COMPOUNDPREPARATION._serialized_start=2964
-  _COMPOUNDPREPARATION._serialized_end=3210
-  _COMPOUNDPREPARATION_COMPOUNDPREPARATIONTYPE._serialized_start=3089
-  _COMPOUNDPREPARATION_COMPOUNDPREPARATIONTYPE._serialized_end=3210
-  _COMPOUNDIDENTIFIER._serialized_start=3213
-  _COMPOUNDIDENTIFIER._serialized_end=3599
-  _COMPOUNDIDENTIFIER_COMPOUNDIDENTIFIERTYPE._serialized_start=3330
-  _COMPOUNDIDENTIFIER_COMPOUNDIDENTIFIERTYPE._serialized_end=3599
-  _VESSEL._serialized_start=3602
-  _VESSEL._serialized_end=4153
-  _VESSEL_VESSELTYPE._serialized_start=3889
-  _VESSEL_VESSELTYPE._serialized_end=4153
-  _VESSELMATERIAL._serialized_start=4156
-  _VESSELMATERIAL._serialized_end=4360
-  _VESSELMATERIAL_VESSELMATERIALTYPE._serialized_start=4245
-  _VESSELMATERIAL_VESSELMATERIALTYPE._serialized_end=4360
-  _VESSELATTACHMENT._serialized_start=4363
-  _VESSELATTACHMENT._serialized_end=4770
-  _VESSELATTACHMENT_VESSELATTACHMENTTYPE._serialized_start=4459
-  _VESSELATTACHMENT_VESSELATTACHMENTTYPE._serialized_end=4770
-  _VESSELPREPARATION._serialized_start=4773
-  _VESSELPREPARATION._serialized_end=5005
-  _VESSELPREPARATION_VESSELPREPARATIONTYPE._serialized_start=4872
-  _VESSELPREPARATION_VESSELPREPARATIONTYPE._serialized_end=5005
-  _REACTIONSETUP._serialized_start=5008
-  _REACTIONSETUP._serialized_end=5552
-  _REACTIONSETUP_AUTOMATIONCODEENTRY._serialized_start=5236
-  _REACTIONSETUP_AUTOMATIONCODEENTRY._serialized_end=5300
-  _REACTIONSETUP_REACTIONENVIRONMENT._serialized_start=5303
-  _REACTIONSETUP_REACTIONENVIRONMENT._serialized_end=5535
-  _REACTIONSETUP_REACTIONENVIRONMENT_REACTIONENVIRONMENTTYPE._serialized_start=5421
-  _REACTIONSETUP_REACTIONENVIRONMENT_REACTIONENVIRONMENTTYPE._serialized_end=5535
-  _REACTIONCONDITIONS._serialized_start=5555
-  _REACTIONCONDITIONS._serialized_end=5992
-  _TEMPERATURECONDITIONS._serialized_start=5995
-  _TEMPERATURECONDITIONS._serialized_end=6861
-  _TEMPERATURECONDITIONS_TEMPERATURECONTROL._serialized_start=6194
-  _TEMPERATURECONDITIONS_TEMPERATURECONTROL._serialized_end=6534
-  _TEMPERATURECONDITIONS_TEMPERATURECONTROL_TEMPERATURECONTROLTYPE._serialized_start=6318
-  _TEMPERATURECONDITIONS_TEMPERATURECONTROL_TEMPERATURECONTROLTYPE._serialized_end=6534
-  _TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT._serialized_start=6537
-  _TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT._serialized_end=6861
-  _TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT_TEMPERATUREMEASUREMENTTYPE._serialized_start=6736
-  _TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT_TEMPERATUREMEASUREMENTTYPE._serialized_end=6861
-  _PRESSURECONDITIONS._serialized_start=6864
-  _PRESSURECONDITIONS._serialized_end=7900
-  _PRESSURECONDITIONS_PRESSURECONTROL._serialized_start=7101
-  _PRESSURECONDITIONS_PRESSURECONTROL._serialized_end=7325
-  _PRESSURECONDITIONS_PRESSURECONTROL_PRESSURECONTROLTYPE._serialized_start=7212
-  _PRESSURECONDITIONS_PRESSURECONTROL_PRESSURECONTROLTYPE._serialized_end=7325
-  _PRESSURECONDITIONS_ATMOSPHERE._serialized_start=7328
-  _PRESSURECONDITIONS_ATMOSPHERE._serialized_end=7637
-  _PRESSURECONDITIONS_ATMOSPHERE_ATMOSPHERETYPE._serialized_start=7425
-  _PRESSURECONDITIONS_ATMOSPHERE_ATMOSPHERETYPE._serialized_end=7637
-  _PRESSURECONDITIONS_PRESSUREMEASUREMENT._serialized_start=7640
-  _PRESSURECONDITIONS_PRESSUREMEASUREMENT._serialized_end=7900
-  _PRESSURECONDITIONS_PRESSUREMEASUREMENT_PRESSUREMEASUREMENTTYPE._serialized_start=7821
-  _PRESSURECONDITIONS_PRESSUREMEASUREMENT_PRESSUREMEASUREMENTTYPE._serialized_end=7900
-  _STIRRINGCONDITIONS._serialized_start=7903
-  _STIRRINGCONDITIONS._serialized_end=8379
-  _STIRRINGCONDITIONS_STIRRINGRATE._serialized_start=8053
-  _STIRRINGCONDITIONS_STIRRINGRATE._serialized_end=8234
-  _STIRRINGCONDITIONS_STIRRINGRATE_STIRRINGRATETYPE._serialized_start=8168
-  _STIRRINGCONDITIONS_STIRRINGRATE_STIRRINGRATETYPE._serialized_end=8234
-  _STIRRINGCONDITIONS_STIRRINGMETHODTYPE._serialized_start=8237
-  _STIRRINGCONDITIONS_STIRRINGMETHODTYPE._serialized_end=8379
-  _ILLUMINATIONCONDITIONS._serialized_start=8382
-  _ILLUMINATIONCONDITIONS._serialized_end=8742
-  _ILLUMINATIONCONDITIONS_ILLUMINATIONTYPE._serialized_start=8584
-  _ILLUMINATIONCONDITIONS_ILLUMINATIONTYPE._serialized_end=8742
-  _ELECTROCHEMISTRYCONDITIONS._serialized_start=8745
-  _ELECTROCHEMISTRYCONDITIONS._serialized_end=9609
-  _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYMEASUREMENT._serialized_start=9166
-  _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYMEASUREMENT._serialized_end=9282
-  _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL._serialized_start=9285
-  _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL._serialized_end=9512
-  _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL_ELECTROCHEMISTRYCELLTYPE._serialized_start=9419
-  _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL_ELECTROCHEMISTRYCELLTYPE._serialized_end=9512
-  _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYTYPE._serialized_start=9514
-  _ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYTYPE._serialized_end=9609
-  _FLOWCONDITIONS._serialized_start=9612
-  _FLOWCONDITIONS._serialized_end=10144
-  _FLOWCONDITIONS_TUBING._serialized_start=9755
-  _FLOWCONDITIONS_TUBING._serialized_end=10019
-  _FLOWCONDITIONS_TUBING_TUBINGTYPE._serialized_start=9867
-  _FLOWCONDITIONS_TUBING_TUBINGTYPE._serialized_end=10019
-  _FLOWCONDITIONS_FLOWTYPE._serialized_start=10021
-  _FLOWCONDITIONS_FLOWTYPE._serialized_end=10144
-  _REACTIONNOTES._serialized_start=10147
-  _REACTIONNOTES._serialized_end=10595
-  _REACTIONOBSERVATION._serialized_start=10597
-  _REACTIONOBSERVATION._serialized_end=10686
-  _REACTIONWORKUP._serialized_start=10689
-  _REACTIONWORKUP._serialized_end=11404
-  _REACTIONWORKUP_REACTIONWORKUPTYPE._serialized_start=11035
-  _REACTIONWORKUP_REACTIONWORKUPTYPE._serialized_end=11373
-  _REACTIONOUTCOME._serialized_start=11407
-  _REACTIONOUTCOME._serialized_end=11653
-  _REACTIONOUTCOME_ANALYSESENTRY._serialized_start=2702
-  _REACTIONOUTCOME_ANALYSESENTRY._serialized_end=2764
-  _PRODUCTCOMPOUND._serialized_start=11656
-  _PRODUCTCOMPOUND._serialized_end=12309
-  _PRODUCTCOMPOUND_TEXTURE._serialized_start=11986
-  _PRODUCTCOMPOUND_TEXTURE._serialized_end=12226
-  _PRODUCTCOMPOUND_TEXTURE_TEXTURETYPE._serialized_start=12071
-  _PRODUCTCOMPOUND_TEXTURE_TEXTURETYPE._serialized_end=12226
-  _PRODUCTCOMPOUND_FEATURESENTRY._serialized_start=2642
-  _PRODUCTCOMPOUND_FEATURESENTRY._serialized_end=2700
-  _PRODUCTMEASUREMENT._serialized_start=12312
-  _PRODUCTMEASUREMENT._serialized_end=13715
-  _PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS._serialized_start=12925
-  _PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS._serialized_end=13286
-  _PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS_MASSSPECMEASUREMENTTYPE._serialized_start=13140
-  _PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS_MASSSPECMEASUREMENTTYPE._serialized_end=13248
-  _PRODUCTMEASUREMENT_SELECTIVITY._serialized_start=13289
-  _PRODUCTMEASUREMENT_SELECTIVITY._serialized_end=13474
-  _PRODUCTMEASUREMENT_SELECTIVITY_SELECTIVITYTYPE._serialized_start=13388
-  _PRODUCTMEASUREMENT_SELECTIVITY_SELECTIVITYTYPE._serialized_end=13474
-  _PRODUCTMEASUREMENT_PRODUCTMEASUREMENTTYPE._serialized_start=13477
-  _PRODUCTMEASUREMENT_PRODUCTMEASUREMENTTYPE._serialized_end=13633
-  _DATETIME._serialized_start=13717
-  _DATETIME._serialized_end=13742
-  _ANALYSIS._serialized_start=13745
-  _ANALYSIS._serialized_end=14333
-  _ANALYSIS_DATAENTRY._serialized_start=13993
-  _ANALYSIS_DATAENTRY._serialized_end=14047
-  _ANALYSIS_ANALYSISTYPE._serialized_start=14050
-  _ANALYSIS_ANALYSISTYPE._serialized_end=14306
-  _REACTIONPROVENANCE._serialized_start=14336
-  _REACTIONPROVENANCE._serialized_end=14727
-  _REACTIONPROVENANCE_REACTIONMETADATAENTRY._serialized_start=14661
-  _REACTIONPROVENANCE_REACTIONMETADATAENTRY._serialized_end=14727
-  _PERSON._serialized_start=14729
-  _PERSON._serialized_end=14821
-  _RECORDEVENT._serialized_start=14823
-  _RECORDEVENT._serialized_end=14911
-  _TIME._serialized_start=14914
-  _TIME._serialized_end=15095
-  _TIME_TIMEUNIT._serialized_start=15001
-  _TIME_TIMEUNIT._serialized_end=15071
-  _MASS._serialized_start=15098
-  _MASS._serialized_end=15290
-  _MASS_MASSUNIT._serialized_start=15185
-  _MASS_MASSUNIT._serialized_end=15266
-  _MOLES._serialized_start=15293
-  _MOLES._serialized_end=15489
-  _MOLES_MOLESUNIT._serialized_start=15383
-  _MOLES_MOLESUNIT._serialized_end=15465
-  _VOLUME._serialized_start=15492
-  _VOLUME._serialized_end=15696
-  _VOLUME_VOLUMEUNIT._serialized_start=15585
-  _VOLUME_VOLUMEUNIT._serialized_end=15672
-  _CONCENTRATION._serialized_start=15699
-  _CONCENTRATION._serialized_end=15916
-  _CONCENTRATION_CONCENTRATIONUNIT._serialized_start=15813
-  _CONCENTRATION_CONCENTRATIONUNIT._serialized_end=15892
-  _PRESSURE._serialized_start=15919
-  _PRESSURE._serialized_end=16166
-  _PRESSURE_PRESSUREUNIT._serialized_start=16018
-  _PRESSURE_PRESSUREUNIT._serialized_end=16142
-  _TEMPERATURE._serialized_start=16169
-  _TEMPERATURE._serialized_end=16376
-  _TEMPERATURE_TEMPERATUREUNIT._serialized_start=16277
-  _TEMPERATURE_TEMPERATUREUNIT._serialized_end=16352
-  _CURRENT._serialized_start=16379
-  _CURRENT._serialized_end=16558
-  _CURRENT_CURRENTUNIT._serialized_start=16475
-  _CURRENT_CURRENTUNIT._serialized_end=16534
-  _VOLTAGE._serialized_start=16561
-  _VOLTAGE._serialized_end=16736
-  _VOLTAGE_VOLTAGEUNIT._serialized_start=16657
-  _VOLTAGE_VOLTAGEUNIT._serialized_end=16712
-  _LENGTH._serialized_start=16739
-  _LENGTH._serialized_end=16948
-  _LENGTH_LENGTHUNIT._serialized_start=16832
-  _LENGTH_LENGTHUNIT._serialized_end=16924
-  _WAVELENGTH._serialized_start=16951
-  _WAVELENGTH._serialized_end=17144
-  _WAVELENGTH_WAVELENGTHUNIT._serialized_start=17056
-  _WAVELENGTH_WAVELENGTHUNIT._serialized_end=17120
-  _FLOWRATE._serialized_start=17147
-  _FLOWRATE._serialized_end=17435
-  _FLOWRATE_FLOWRATEUNIT._serialized_start=17247
-  _FLOWRATE_FLOWRATEUNIT._serialized_end=17411
-  _PERCENTAGE._serialized_start=17437
-  _PERCENTAGE._serialized_end=17517
-  _FLOATVALUE._serialized_start=17519
-  _FLOATVALUE._serialized_end=17599
-  _DATA._serialized_start=17602
-  _DATA._serialized_end=17763
+  _globals['_REACTION']._serialized_start=41
+  _globals['_REACTION']._serialized_end=514
+  _globals['_REACTION_INPUTSENTRY']._serialized_start=449
+  _globals['_REACTION_INPUTSENTRY']._serialized_end=514
+  _globals['_REACTIONIDENTIFIER']._serialized_start=517
+  _globals['_REACTIONIDENTIFIER']._serialized_end=812
+  _globals['_REACTIONIDENTIFIER_REACTIONIDENTIFIERTYPE']._serialized_start=658
+  _globals['_REACTIONIDENTIFIER_REACTIONIDENTIFIERTYPE']._serialized_end=798
+  _globals['_REACTIONINPUT']._serialized_start=815
+  _globals['_REACTIONINPUT']._serialized_end=1643
+  _globals['_REACTIONINPUT_ADDITIONSPEED']._serialized_start=1211
+  _globals['_REACTIONINPUT_ADDITIONSPEED']._serialized_end=1431
+  _globals['_REACTIONINPUT_ADDITIONSPEED_ADDITIONSPEEDTYPE']._serialized_start=1311
+  _globals['_REACTIONINPUT_ADDITIONSPEED_ADDITIONSPEEDTYPE']._serialized_end=1431
+  _globals['_REACTIONINPUT_ADDITIONDEVICE']._serialized_start=1434
+  _globals['_REACTIONINPUT_ADDITIONDEVICE']._serialized_end=1643
+  _globals['_REACTIONINPUT_ADDITIONDEVICE_ADDITIONDEVICETYPE']._serialized_start=1537
+  _globals['_REACTIONINPUT_ADDITIONDEVICE_ADDITIONDEVICETYPE']._serialized_end=1643
+  _globals['_AMOUNT']._serialized_start=1646
+  _globals['_AMOUNT']._serialized_end=1860
+  _globals['_UNMEASUREDAMOUNT']._serialized_start=1863
+  _globals['_UNMEASUREDAMOUNT']._serialized_end=2053
+  _globals['_UNMEASUREDAMOUNT_UNMEASUREDAMOUNTTYPE']._serialized_start=1958
+  _globals['_UNMEASUREDAMOUNT_UNMEASUREDAMOUNTTYPE']._serialized_end=2053
+  _globals['_CRUDECOMPONENT']._serialized_start=2056
+  _globals['_CRUDECOMPONENT']._serialized_end=2228
+  _globals['_COMPOUND']._serialized_start=2231
+  _globals['_COMPOUND']._serialized_end=2780
+  _globals['_COMPOUND_SOURCE']._serialized_start=2583
+  _globals['_COMPOUND_SOURCE']._serialized_end=2640
+  _globals['_COMPOUND_FEATURESENTRY']._serialized_start=2642
+  _globals['_COMPOUND_FEATURESENTRY']._serialized_end=2700
+  _globals['_COMPOUND_ANALYSESENTRY']._serialized_start=2702
+  _globals['_COMPOUND_ANALYSESENTRY']._serialized_end=2764
+  _globals['_REACTIONROLE']._serialized_start=2783
+  _globals['_REACTIONROLE']._serialized_end=2961
+  _globals['_REACTIONROLE_REACTIONROLETYPE']._serialized_start=2800
+  _globals['_REACTIONROLE_REACTIONROLETYPE']._serialized_end=2961
+  _globals['_COMPOUNDPREPARATION']._serialized_start=2964
+  _globals['_COMPOUNDPREPARATION']._serialized_end=3210
+  _globals['_COMPOUNDPREPARATION_COMPOUNDPREPARATIONTYPE']._serialized_start=3089
+  _globals['_COMPOUNDPREPARATION_COMPOUNDPREPARATIONTYPE']._serialized_end=3210
+  _globals['_COMPOUNDIDENTIFIER']._serialized_start=3213
+  _globals['_COMPOUNDIDENTIFIER']._serialized_end=3599
+  _globals['_COMPOUNDIDENTIFIER_COMPOUNDIDENTIFIERTYPE']._serialized_start=3330
+  _globals['_COMPOUNDIDENTIFIER_COMPOUNDIDENTIFIERTYPE']._serialized_end=3599
+  _globals['_VESSEL']._serialized_start=3602
+  _globals['_VESSEL']._serialized_end=4153
+  _globals['_VESSEL_VESSELTYPE']._serialized_start=3889
+  _globals['_VESSEL_VESSELTYPE']._serialized_end=4153
+  _globals['_VESSELMATERIAL']._serialized_start=4156
+  _globals['_VESSELMATERIAL']._serialized_end=4360
+  _globals['_VESSELMATERIAL_VESSELMATERIALTYPE']._serialized_start=4245
+  _globals['_VESSELMATERIAL_VESSELMATERIALTYPE']._serialized_end=4360
+  _globals['_VESSELATTACHMENT']._serialized_start=4363
+  _globals['_VESSELATTACHMENT']._serialized_end=4770
+  _globals['_VESSELATTACHMENT_VESSELATTACHMENTTYPE']._serialized_start=4459
+  _globals['_VESSELATTACHMENT_VESSELATTACHMENTTYPE']._serialized_end=4770
+  _globals['_VESSELPREPARATION']._serialized_start=4773
+  _globals['_VESSELPREPARATION']._serialized_end=5005
+  _globals['_VESSELPREPARATION_VESSELPREPARATIONTYPE']._serialized_start=4872
+  _globals['_VESSELPREPARATION_VESSELPREPARATIONTYPE']._serialized_end=5005
+  _globals['_REACTIONSETUP']._serialized_start=5008
+  _globals['_REACTIONSETUP']._serialized_end=5552
+  _globals['_REACTIONSETUP_AUTOMATIONCODEENTRY']._serialized_start=5236
+  _globals['_REACTIONSETUP_AUTOMATIONCODEENTRY']._serialized_end=5300
+  _globals['_REACTIONSETUP_REACTIONENVIRONMENT']._serialized_start=5303
+  _globals['_REACTIONSETUP_REACTIONENVIRONMENT']._serialized_end=5535
+  _globals['_REACTIONSETUP_REACTIONENVIRONMENT_REACTIONENVIRONMENTTYPE']._serialized_start=5421
+  _globals['_REACTIONSETUP_REACTIONENVIRONMENT_REACTIONENVIRONMENTTYPE']._serialized_end=5535
+  _globals['_REACTIONCONDITIONS']._serialized_start=5555
+  _globals['_REACTIONCONDITIONS']._serialized_end=5992
+  _globals['_TEMPERATURECONDITIONS']._serialized_start=5995
+  _globals['_TEMPERATURECONDITIONS']._serialized_end=6861
+  _globals['_TEMPERATURECONDITIONS_TEMPERATURECONTROL']._serialized_start=6194
+  _globals['_TEMPERATURECONDITIONS_TEMPERATURECONTROL']._serialized_end=6534
+  _globals['_TEMPERATURECONDITIONS_TEMPERATURECONTROL_TEMPERATURECONTROLTYPE']._serialized_start=6318
+  _globals['_TEMPERATURECONDITIONS_TEMPERATURECONTROL_TEMPERATURECONTROLTYPE']._serialized_end=6534
+  _globals['_TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT']._serialized_start=6537
+  _globals['_TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT']._serialized_end=6861
+  _globals['_TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT_TEMPERATUREMEASUREMENTTYPE']._serialized_start=6736
+  _globals['_TEMPERATURECONDITIONS_TEMPERATUREMEASUREMENT_TEMPERATUREMEASUREMENTTYPE']._serialized_end=6861
+  _globals['_PRESSURECONDITIONS']._serialized_start=6864
+  _globals['_PRESSURECONDITIONS']._serialized_end=7900
+  _globals['_PRESSURECONDITIONS_PRESSURECONTROL']._serialized_start=7101
+  _globals['_PRESSURECONDITIONS_PRESSURECONTROL']._serialized_end=7325
+  _globals['_PRESSURECONDITIONS_PRESSURECONTROL_PRESSURECONTROLTYPE']._serialized_start=7212
+  _globals['_PRESSURECONDITIONS_PRESSURECONTROL_PRESSURECONTROLTYPE']._serialized_end=7325
+  _globals['_PRESSURECONDITIONS_ATMOSPHERE']._serialized_start=7328
+  _globals['_PRESSURECONDITIONS_ATMOSPHERE']._serialized_end=7637
+  _globals['_PRESSURECONDITIONS_ATMOSPHERE_ATMOSPHERETYPE']._serialized_start=7425
+  _globals['_PRESSURECONDITIONS_ATMOSPHERE_ATMOSPHERETYPE']._serialized_end=7637
+  _globals['_PRESSURECONDITIONS_PRESSUREMEASUREMENT']._serialized_start=7640
+  _globals['_PRESSURECONDITIONS_PRESSUREMEASUREMENT']._serialized_end=7900
+  _globals['_PRESSURECONDITIONS_PRESSUREMEASUREMENT_PRESSUREMEASUREMENTTYPE']._serialized_start=7821
+  _globals['_PRESSURECONDITIONS_PRESSUREMEASUREMENT_PRESSUREMEASUREMENTTYPE']._serialized_end=7900
+  _globals['_STIRRINGCONDITIONS']._serialized_start=7903
+  _globals['_STIRRINGCONDITIONS']._serialized_end=8379
+  _globals['_STIRRINGCONDITIONS_STIRRINGRATE']._serialized_start=8053
+  _globals['_STIRRINGCONDITIONS_STIRRINGRATE']._serialized_end=8234
+  _globals['_STIRRINGCONDITIONS_STIRRINGRATE_STIRRINGRATETYPE']._serialized_start=8168
+  _globals['_STIRRINGCONDITIONS_STIRRINGRATE_STIRRINGRATETYPE']._serialized_end=8234
+  _globals['_STIRRINGCONDITIONS_STIRRINGMETHODTYPE']._serialized_start=8237
+  _globals['_STIRRINGCONDITIONS_STIRRINGMETHODTYPE']._serialized_end=8379
+  _globals['_ILLUMINATIONCONDITIONS']._serialized_start=8382
+  _globals['_ILLUMINATIONCONDITIONS']._serialized_end=8742
+  _globals['_ILLUMINATIONCONDITIONS_ILLUMINATIONTYPE']._serialized_start=8584
+  _globals['_ILLUMINATIONCONDITIONS_ILLUMINATIONTYPE']._serialized_end=8742
+  _globals['_ELECTROCHEMISTRYCONDITIONS']._serialized_start=8745
+  _globals['_ELECTROCHEMISTRYCONDITIONS']._serialized_end=9609
+  _globals['_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYMEASUREMENT']._serialized_start=9166
+  _globals['_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYMEASUREMENT']._serialized_end=9282
+  _globals['_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL']._serialized_start=9285
+  _globals['_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL']._serialized_end=9512
+  _globals['_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL_ELECTROCHEMISTRYCELLTYPE']._serialized_start=9419
+  _globals['_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYCELL_ELECTROCHEMISTRYCELLTYPE']._serialized_end=9512
+  _globals['_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYTYPE']._serialized_start=9514
+  _globals['_ELECTROCHEMISTRYCONDITIONS_ELECTROCHEMISTRYTYPE']._serialized_end=9609
+  _globals['_FLOWCONDITIONS']._serialized_start=9612
+  _globals['_FLOWCONDITIONS']._serialized_end=10144
+  _globals['_FLOWCONDITIONS_TUBING']._serialized_start=9755
+  _globals['_FLOWCONDITIONS_TUBING']._serialized_end=10019
+  _globals['_FLOWCONDITIONS_TUBING_TUBINGTYPE']._serialized_start=9867
+  _globals['_FLOWCONDITIONS_TUBING_TUBINGTYPE']._serialized_end=10019
+  _globals['_FLOWCONDITIONS_FLOWTYPE']._serialized_start=10021
+  _globals['_FLOWCONDITIONS_FLOWTYPE']._serialized_end=10144
+  _globals['_REACTIONNOTES']._serialized_start=10147
+  _globals['_REACTIONNOTES']._serialized_end=10595
+  _globals['_REACTIONOBSERVATION']._serialized_start=10597
+  _globals['_REACTIONOBSERVATION']._serialized_end=10686
+  _globals['_REACTIONWORKUP']._serialized_start=10689
+  _globals['_REACTIONWORKUP']._serialized_end=11404
+  _globals['_REACTIONWORKUP_REACTIONWORKUPTYPE']._serialized_start=11035
+  _globals['_REACTIONWORKUP_REACTIONWORKUPTYPE']._serialized_end=11373
+  _globals['_REACTIONOUTCOME']._serialized_start=11407
+  _globals['_REACTIONOUTCOME']._serialized_end=11653
+  _globals['_REACTIONOUTCOME_ANALYSESENTRY']._serialized_start=2702
+  _globals['_REACTIONOUTCOME_ANALYSESENTRY']._serialized_end=2764
+  _globals['_PRODUCTCOMPOUND']._serialized_start=11656
+  _globals['_PRODUCTCOMPOUND']._serialized_end=12309
+  _globals['_PRODUCTCOMPOUND_TEXTURE']._serialized_start=11986
+  _globals['_PRODUCTCOMPOUND_TEXTURE']._serialized_end=12226
+  _globals['_PRODUCTCOMPOUND_TEXTURE_TEXTURETYPE']._serialized_start=12071
+  _globals['_PRODUCTCOMPOUND_TEXTURE_TEXTURETYPE']._serialized_end=12226
+  _globals['_PRODUCTCOMPOUND_FEATURESENTRY']._serialized_start=2642
+  _globals['_PRODUCTCOMPOUND_FEATURESENTRY']._serialized_end=2700
+  _globals['_PRODUCTMEASUREMENT']._serialized_start=12312
+  _globals['_PRODUCTMEASUREMENT']._serialized_end=13715
+  _globals['_PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS']._serialized_start=12925
+  _globals['_PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS']._serialized_end=13286
+  _globals['_PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS_MASSSPECMEASUREMENTTYPE']._serialized_start=13140
+  _globals['_PRODUCTMEASUREMENT_MASSSPECMEASUREMENTDETAILS_MASSSPECMEASUREMENTTYPE']._serialized_end=13248
+  _globals['_PRODUCTMEASUREMENT_SELECTIVITY']._serialized_start=13289
+  _globals['_PRODUCTMEASUREMENT_SELECTIVITY']._serialized_end=13474
+  _globals['_PRODUCTMEASUREMENT_SELECTIVITY_SELECTIVITYTYPE']._serialized_start=13388
+  _globals['_PRODUCTMEASUREMENT_SELECTIVITY_SELECTIVITYTYPE']._serialized_end=13474
+  _globals['_PRODUCTMEASUREMENT_PRODUCTMEASUREMENTTYPE']._serialized_start=13477
+  _globals['_PRODUCTMEASUREMENT_PRODUCTMEASUREMENTTYPE']._serialized_end=13633
+  _globals['_DATETIME']._serialized_start=13717
+  _globals['_DATETIME']._serialized_end=13742
+  _globals['_ANALYSIS']._serialized_start=13745
+  _globals['_ANALYSIS']._serialized_end=14333
+  _globals['_ANALYSIS_DATAENTRY']._serialized_start=13993
+  _globals['_ANALYSIS_DATAENTRY']._serialized_end=14047
+  _globals['_ANALYSIS_ANALYSISTYPE']._serialized_start=14050
+  _globals['_ANALYSIS_ANALYSISTYPE']._serialized_end=14306
+  _globals['_REACTIONPROVENANCE']._serialized_start=14336
+  _globals['_REACTIONPROVENANCE']._serialized_end=14727
+  _globals['_REACTIONPROVENANCE_REACTIONMETADATAENTRY']._serialized_start=14661
+  _globals['_REACTIONPROVENANCE_REACTIONMETADATAENTRY']._serialized_end=14727
+  _globals['_PERSON']._serialized_start=14729
+  _globals['_PERSON']._serialized_end=14821
+  _globals['_RECORDEVENT']._serialized_start=14823
+  _globals['_RECORDEVENT']._serialized_end=14911
+  _globals['_TIME']._serialized_start=14914
+  _globals['_TIME']._serialized_end=15095
+  _globals['_TIME_TIMEUNIT']._serialized_start=15001
+  _globals['_TIME_TIMEUNIT']._serialized_end=15071
+  _globals['_MASS']._serialized_start=15098
+  _globals['_MASS']._serialized_end=15290
+  _globals['_MASS_MASSUNIT']._serialized_start=15185
+  _globals['_MASS_MASSUNIT']._serialized_end=15266
+  _globals['_MOLES']._serialized_start=15293
+  _globals['_MOLES']._serialized_end=15489
+  _globals['_MOLES_MOLESUNIT']._serialized_start=15383
+  _globals['_MOLES_MOLESUNIT']._serialized_end=15465
+  _globals['_VOLUME']._serialized_start=15492
+  _globals['_VOLUME']._serialized_end=15696
+  _globals['_VOLUME_VOLUMEUNIT']._serialized_start=15585
+  _globals['_VOLUME_VOLUMEUNIT']._serialized_end=15672
+  _globals['_CONCENTRATION']._serialized_start=15699
+  _globals['_CONCENTRATION']._serialized_end=15916
+  _globals['_CONCENTRATION_CONCENTRATIONUNIT']._serialized_start=15813
+  _globals['_CONCENTRATION_CONCENTRATIONUNIT']._serialized_end=15892
+  _globals['_PRESSURE']._serialized_start=15919
+  _globals['_PRESSURE']._serialized_end=16166
+  _globals['_PRESSURE_PRESSUREUNIT']._serialized_start=16018
+  _globals['_PRESSURE_PRESSUREUNIT']._serialized_end=16142
+  _globals['_TEMPERATURE']._serialized_start=16169
+  _globals['_TEMPERATURE']._serialized_end=16376
+  _globals['_TEMPERATURE_TEMPERATUREUNIT']._serialized_start=16277
+  _globals['_TEMPERATURE_TEMPERATUREUNIT']._serialized_end=16352
+  _globals['_CURRENT']._serialized_start=16379
+  _globals['_CURRENT']._serialized_end=16558
+  _globals['_CURRENT_CURRENTUNIT']._serialized_start=16475
+  _globals['_CURRENT_CURRENTUNIT']._serialized_end=16534
+  _globals['_VOLTAGE']._serialized_start=16561
+  _globals['_VOLTAGE']._serialized_end=16736
+  _globals['_VOLTAGE_VOLTAGEUNIT']._serialized_start=16657
+  _globals['_VOLTAGE_VOLTAGEUNIT']._serialized_end=16712
+  _globals['_LENGTH']._serialized_start=16739
+  _globals['_LENGTH']._serialized_end=16948
+  _globals['_LENGTH_LENGTHUNIT']._serialized_start=16832
+  _globals['_LENGTH_LENGTHUNIT']._serialized_end=16924
+  _globals['_WAVELENGTH']._serialized_start=16951
+  _globals['_WAVELENGTH']._serialized_end=17144
+  _globals['_WAVELENGTH_WAVELENGTHUNIT']._serialized_start=17056
+  _globals['_WAVELENGTH_WAVELENGTHUNIT']._serialized_end=17120
+  _globals['_FLOWRATE']._serialized_start=17147
+  _globals['_FLOWRATE']._serialized_end=17435
+  _globals['_FLOWRATE_FLOWRATEUNIT']._serialized_start=17247
+  _globals['_FLOWRATE_FLOWRATEUNIT']._serialized_end=17411
+  _globals['_PERCENTAGE']._serialized_start=17437
+  _globals['_PERCENTAGE']._serialized_end=17517
+  _globals['_FLOATVALUE']._serialized_start=17519
+  _globals['_FLOATVALUE']._serialized_end=17599
+  _globals['_DATA']._serialized_start=17602
+  _globals['_DATA']._serialized_end=17763
 # @@protoc_insertion_point(module_scope)
diff --git a/setup.py b/setup.py
index e598f61a..83c5e4c5 100644
--- a/setup.py
+++ b/setup.py
@@ -42,7 +42,7 @@
         "numpy>=1.18.1",
         "openpyxl>=3.0.5",
         "pandas>=1.0.4",
-        "protobuf<3.20,>=3.13.0",
+        "protobuf==4.22.3",
         "psycopg2>=2.8.5",
         "pygithub>=1.51",
         "python-dateutil>=1.10.0",


Test patch:
diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml
index 3cd1648b..c89a0695 100644
--- a/.github/workflows/run_tests.yml
+++ b/.github/workflows/run_tests.yml
@@ -73,11 +73,16 @@ jobs:
         run: |
           python -m pip install --upgrade pip
           python -m pip install wheel
-          python -m pip install "protoc-wheel-0>=3.13.0,<3.20.0"
-          protoc --version
+          mkdir protoc
+          cd protoc
+          wget https://github.com/protocolbuffers/protobuf/releases/download/v22.3/protoc-22.3-linux-x86_64.zip
+          unzip protoc-22.3-linux-x86_64.zip
+          wget https://github.com/protocolbuffers/protobuf-javascript/releases/download/v3.21.2/protobuf-javascript-3.21.2-linux-x86_64.zip
+          unzip protobuf-javascript-3.21.2-linux-x86_64.zip
+          PATH=$GITHUB_WORKSPACE/protoc/bin:$PATH protoc --version
       - name: Run protoc
         run: |
-          ./compile_proto_wrappers.sh
+          PATH=$GITHUB_WORKSPACE/protoc/bin:$PATH ./compile_proto_wrappers.sh
           ./format.sh  # Add license headers.
       - name: Check for drift
         run: |
diff --git a/js/ord-schema/proto/test_pb.js b/js/ord-schema/proto/test_pb.js
index 19c9bc62..4109ceaf 100644
--- a/js/ord-schema/proto/test_pb.js
+++ b/js/ord-schema/proto/test_pb.js
@@ -29,13 +29,13 @@
 
 var jspb = require('google-protobuf');
 var goog = jspb;
-var global = (function() {
-  if (this) { return this; }
-  if (typeof window !== 'undefined') { return window; }
-  if (typeof global !== 'undefined') { return global; }
-  if (typeof self !== 'undefined') { return self; }
-  return Function('return this')();
-}.call(null));
+var global =
+    (typeof globalThis !== 'undefined' && globalThis) ||
+    (typeof window !== 'undefined' && window) ||
+    (typeof global !== 'undefined' && global) ||
+    (typeof self !== 'undefined' && self) ||
+    (function () { return this; }).call(null) ||
+    Function('return this')();
 
 goog.exportSymbol('proto.ord_test.Enum', null, global);
 goog.exportSymbol('proto.ord_test.Enum.EnumValues', null, global);
@@ -1822,7 +1822,8 @@ proto.ord_test.Map.prototype.getValuesMap = function(opt_noLazyCreate) {
  */
 proto.ord_test.Map.prototype.clearValuesMap = function() {
   this.getValuesMap().clear();
-  return this;};
+  return this;
+};
 
 
 
@@ -2103,7 +2104,8 @@ proto.ord_test.MapNested.prototype.getChildrenMap = function(opt_noLazyCreate) {
  */
 proto.ord_test.MapNested.prototype.clearChildrenMap = function() {
   this.getChildrenMap().clear();
-  return this;};
+  return this;
+};
 
 
 goog.object.extend(exports, proto.ord_test);
diff --git a/ord_schema/orm/conftest.py b/ord_schema/orm/conftest.py
index 515f2bbe..be39a8c7 100644
--- a/ord_schema/orm/conftest.py
+++ b/ord_schema/orm/conftest.py
@@ -23,12 +23,14 @@
 
 from ord_schema.message_helpers import load_message
 from ord_schema.orm.database import add_dataset, add_rdkit, prepare_database
-from ord_schema.proto.dataset_pb2 import Dataset
+from ord_schema.proto import dataset_pb2
 
 
 @pytest.fixture
 def test_session() -> Iterator[Session]:
-    dataset = load_message(os.path.join(os.path.dirname(__file__), "testdata", "ord-nielsen-example.pbtxt"), Dataset)
+    dataset = load_message(
+        os.path.join(os.path.dirname(__file__), "testdata", "ord-nielsen-example.pbtxt"), dataset_pb2.Dataset
+    )
     with Postgresql() as postgres:
         engine = create_engine(postgres.url(), future=True, echo=True)
         rdkit_cartridge = prepare_database(engine)
diff --git a/ord_schema/proto/test_pb2.py b/ord_schema/proto/test_pb2.py
index b2b8cfc5..9a8e9cfe 100644
--- a/ord_schema/proto/test_pb2.py
+++ b/ord_schema/proto/test_pb2.py
@@ -16,10 +16,9 @@
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: ord-schema/proto/test.proto
 """Generated protocol buffer code."""
+from google.protobuf.internal import builder as _builder
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
 from google.protobuf import symbol_database as _symbol_database
 # @@protoc_insertion_point(imports)
 
@@ -30,119 +29,9 @@
 
 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bord-schema/proto/test.proto\x12\x08ord_test\"\xaf\x01\n\x06Scalar\x12\x13\n\x0bint32_value\x18\x01 \x01(\x05\x12\x13\n\x0bint64_value\x18\x02 \x01(\x03\x12\x18\n\x0b\x66loat_value\x18\x03 \x01(\x02H\x00\x88\x01\x01\x12\x14\n\x0cstring_value\x18\x04 \x01(\t\x12\x13\n\x0b\x62ytes_value\x18\x05 \x01(\x0c\x12\x17\n\nbool_value\x18\x06 \x01(\x08H\x01\x88\x01\x01\x42\x0e\n\x0c_float_valueB\r\n\x0b_bool_value\" \n\x0eRepeatedScalar\x12\x0e\n\x06values\x18\x01 \x03(\x02\"f\n\x04\x45num\x12(\n\x05value\x18\x01 \x01(\x0e\x32\x19.ord_test.Enum.EnumValues\"4\n\nEnumValues\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x46IRST\x10\x01\x12\n\n\x06SECOND\x10\x02\"w\n\x0cRepeatedEnum\x12\x31\n\x06values\x18\x01 \x03(\x0e\x32!.ord_test.RepeatedEnum.EnumValues\"4\n\nEnumValues\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x46IRST\x10\x01\x12\n\n\x06SECOND\x10\x02\"V\n\x06Nested\x12%\n\x05\x63hild\x18\x01 \x01(\x0b\x32\x16.ord_test.Nested.Child\x1a%\n\x05\x43hild\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x42\x08\n\x06_value\"i\n\x0eRepeatedNested\x12\x30\n\x08\x63hildren\x18\x01 \x03(\x0b\x32\x1e.ord_test.RepeatedNested.Child\x1a%\n\x05\x43hild\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x42\x08\n\x06_value\"_\n\x03Map\x12)\n\x06values\x18\x01 \x03(\x0b\x32\x19.ord_test.Map.ValuesEntry\x1a-\n\x0bValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\"\xb3\x01\n\tMapNested\x12\x33\n\x08\x63hildren\x18\x01 \x03(\x0b\x32!.ord_test.MapNested.ChildrenEntry\x1a%\n\x05\x43hild\x12\x12\n\x05value\x18\x01 \x01(\x02H\x00\x88\x01\x01\x42\x08\n\x06_value\x1aJ\n\rChildrenEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.ord_test.MapNested.Child:\x02\x38\x01\x62\x06proto3')
 
-
-
-_SCALAR = DESCRIPTOR.message_types_by_name['Scalar']
-_REPEATEDSCALAR = DESCRIPTOR.message_types_by_name['RepeatedScalar']
-_ENUM = DESCRIPTOR.message_types_by_name['Enum']
-_REPEATEDENUM = DESCRIPTOR.message_types_by_name['RepeatedEnum']
-_NESTED = DESCRIPTOR.message_types_by_name['Nested']
-_NESTED_CHILD = _NESTED.nested_types_by_name['Child']
-_REPEATEDNESTED = DESCRIPTOR.message_types_by_name['RepeatedNested']
-_REPEATEDNESTED_CHILD = _REPEATEDNESTED.nested_types_by_name['Child']
-_MAP = DESCRIPTOR.message_types_by_name['Map']
-_MAP_VALUESENTRY = _MAP.nested_types_by_name['ValuesEntry']
-_MAPNESTED = DESCRIPTOR.message_types_by_name['MapNested']
-_MAPNESTED_CHILD = _MAPNESTED.nested_types_by_name['Child']
-_MAPNESTED_CHILDRENENTRY = _MAPNESTED.nested_types_by_name['ChildrenEntry']
-_ENUM_ENUMVALUES = _ENUM.enum_types_by_name['EnumValues']
-_REPEATEDENUM_ENUMVALUES = _REPEATEDENUM.enum_types_by_name['EnumValues']
-Scalar = _reflection.GeneratedProtocolMessageType('Scalar', (_message.Message,), {
-  'DESCRIPTOR' : _SCALAR,
-  '__module__' : 'ord_schema.proto.test_pb2'
-  # @@protoc_insertion_point(class_scope:ord_test.Scalar)
-  })
-_sym_db.RegisterMessage(Scalar)
-
-RepeatedScalar = _reflection.GeneratedProtocolMessageType('RepeatedScalar', (_message.Message,), {
-  'DESCRIPTOR' : _REPEATEDSCALAR,
-  '__module__' : 'ord_schema.proto.test_pb2'
-  # @@protoc_insertion_point(class_scope:ord_test.RepeatedScalar)
-  })
-_sym_db.RegisterMessage(RepeatedScalar)
-
-Enum = _reflection.GeneratedProtocolMessageType('Enum', (_message.Message,), {
-  'DESCRIPTOR' : _ENUM,
-  '__module__' : 'ord_schema.proto.test_pb2'
-  # @@protoc_insertion_point(class_scope:ord_test.Enum)
-  })
-_sym_db.RegisterMessage(Enum)
-
-RepeatedEnum = _reflection.GeneratedProtocolMessageType('RepeatedEnum', (_message.Message,), {
-  'DESCRIPTOR' : _REPEATEDENUM,
-  '__module__' : 'ord_schema.proto.test_pb2'
-  # @@protoc_insertion_point(class_scope:ord_test.RepeatedEnum)
-  })
-_sym_db.RegisterMessage(RepeatedEnum)
-
-Nested = _reflection.GeneratedProtocolMessageType('Nested', (_message.Message,), {
-
-  'Child' : _reflection.GeneratedProtocolMessageType('Child', (_message.Message,), {
-    'DESCRIPTOR' : _NESTED_CHILD,
-    '__module__' : 'ord_schema.proto.test_pb2'
-    # @@protoc_insertion_point(class_scope:ord_test.Nested.Child)
-    })
-  ,
-  'DESCRIPTOR' : _NESTED,
-  '__module__' : 'ord_schema.proto.test_pb2'
-  # @@protoc_insertion_point(class_scope:ord_test.Nested)
-  })
-_sym_db.RegisterMessage(Nested)
-_sym_db.RegisterMessage(Nested.Child)
-
-RepeatedNested = _reflection.GeneratedProtocolMessageType('RepeatedNested', (_message.Message,), {
-
-  'Child' : _reflection.GeneratedProtocolMessageType('Child', (_message.Message,), {
-    'DESCRIPTOR' : _REPEATEDNESTED_CHILD,
-    '__module__' : 'ord_schema.proto.test_pb2'
-    # @@protoc_insertion_point(class_scope:ord_test.RepeatedNested.Child)
-    })
-  ,
-  'DESCRIPTOR' : _REPEATEDNESTED,
-  '__module__' : 'ord_schema.proto.test_pb2'
-  # @@protoc_insertion_point(class_scope:ord_test.RepeatedNested)
-  })
-_sym_db.RegisterMessage(RepeatedNested)
-_sym_db.RegisterMessage(RepeatedNested.Child)
-
-Map = _reflection.GeneratedProtocolMessageType('Map', (_message.Message,), {
-
-  'ValuesEntry' : _reflection.GeneratedProtocolMessageType('ValuesEntry', (_message.Message,), {
-    'DESCRIPTOR' : _MAP_VALUESENTRY,
-    '__module__' : 'ord_schema.proto.test_pb2'
-    # @@protoc_insertion_point(class_scope:ord_test.Map.ValuesEntry)
-    })
-  ,
-  'DESCRIPTOR' : _MAP,
-  '__module__' : 'ord_schema.proto.test_pb2'
-  # @@protoc_insertion_point(class_scope:ord_test.Map)
-  })
-_sym_db.RegisterMessage(Map)
-_sym_db.RegisterMessage(Map.ValuesEntry)
-
-MapNested = _reflection.GeneratedProtocolMessageType('MapNested', (_message.Message,), {
-
-  'Child' : _reflection.GeneratedProtocolMessageType('Child', (_message.Message,), {
-    'DESCRIPTOR' : _MAPNESTED_CHILD,
-    '__module__' : 'ord_schema.proto.test_pb2'
-    # @@protoc_insertion_point(class_scope:ord_test.MapNested.Child)
-    })
-  ,
-
-  'ChildrenEntry' : _reflection.GeneratedProtocolMessageType('ChildrenEntry', (_message.Message,), {
-    'DESCRIPTOR' : _MAPNESTED_CHILDRENENTRY,
-    '__module__' : 'ord_schema.proto.test_pb2'
-    # @@protoc_insertion_point(class_scope:ord_test.MapNested.ChildrenEntry)
-    })
-  ,
-  'DESCRIPTOR' : _MAPNESTED,
-  '__module__' : 'ord_schema.proto.test_pb2'
-  # @@protoc_insertion_point(class_scope:ord_test.MapNested)
-  })
-_sym_db.RegisterMessage(MapNested)
-_sym_db.RegisterMessage(MapNested.Child)
-_sym_db.RegisterMessage(MapNested.ChildrenEntry)
-
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ord_schema.proto.test_pb2', _globals)
 if _descriptor._USE_C_DESCRIPTORS == False:
 
   DESCRIPTOR._options = None
@@ -150,34 +39,34 @@
   _MAP_VALUESENTRY._serialized_options = b'8\001'
   _MAPNESTED_CHILDRENENTRY._options = None
   _MAPNESTED_CHILDRENENTRY._serialized_options = b'8\001'
-  _SCALAR._serialized_start=42
-  _SCALAR._serialized_end=217
-  _REPEATEDSCALAR._serialized_start=219
-  _REPEATEDSCALAR._serialized_end=251
-  _ENUM._serialized_start=253
-  _ENUM._serialized_end=355
-  _ENUM_ENUMVALUES._serialized_start=303
-  _ENUM_ENUMVALUES._serialized_end=355
-  _REPEATEDENUM._serialized_start=357
-  _REPEATEDENUM._serialized_end=476
-  _REPEATEDENUM_ENUMVALUES._serialized_start=303
-  _REPEATEDENUM_ENUMVALUES._serialized_end=355
-  _NESTED._serialized_start=478
-  _NESTED._serialized_end=564
-  _NESTED_CHILD._serialized_start=527
-  _NESTED_CHILD._serialized_end=564
-  _REPEATEDNESTED._serialized_start=566
-  _REPEATEDNESTED._serialized_end=671
-  _REPEATEDNESTED_CHILD._serialized_start=527
-  _REPEATEDNESTED_CHILD._serialized_end=564
-  _MAP._serialized_start=673
-  _MAP._serialized_end=768
-  _MAP_VALUESENTRY._serialized_start=723
-  _MAP_VALUESENTRY._serialized_end=768
-  _MAPNESTED._serialized_start=771
-  _MAPNESTED._serialized_end=950
-  _MAPNESTED_CHILD._serialized_start=527
-  _MAPNESTED_CHILD._serialized_end=564
-  _MAPNESTED_CHILDRENENTRY._serialized_start=876
-  _MAPNESTED_CHILDRENENTRY._serialized_end=950
+  _globals['_SCALAR']._serialized_start=42
+  _globals['_SCALAR']._serialized_end=217
+  _globals['_REPEATEDSCALAR']._serialized_start=219
+  _globals['_REPEATEDSCALAR']._serialized_end=251
+  _globals['_ENUM']._serialized_start=253
+  _globals['_ENUM']._serialized_end=355
+  _globals['_ENUM_ENUMVALUES']._serialized_start=303
+  _globals['_ENUM_ENUMVALUES']._serialized_end=355
+  _globals['_REPEATEDENUM']._serialized_start=357
+  _globals['_REPEATEDENUM']._serialized_end=476
+  _globals['_REPEATEDENUM_ENUMVALUES']._serialized_start=303
+  _globals['_REPEATEDENUM_ENUMVALUES']._serialized_end=355
+  _globals['_NESTED']._serialized_start=478
+  _globals['_NESTED']._serialized_end=564
+  _globals['_NESTED_CHILD']._serialized_start=527
+  _globals['_NESTED_CHILD']._serialized_end=564
+  _globals['_REPEATEDNESTED']._serialized_start=566
+  _globals['_REPEATEDNESTED']._serialized_end=671
+  _globals['_REPEATEDNESTED_CHILD']._serialized_start=527
+  _globals['_REPEATEDNESTED_CHILD']._serialized_end=564
+  _globals['_MAP']._serialized_start=673
+  _globals['_MAP']._serialized_end=768
+  _globals['_MAP_VALUESENTRY']._serialized_start=723
+  _globals['_MAP_VALUESENTRY']._serialized_end=768
+  _globals['_MAPNESTED']._serialized_start=771
+  _globals['_MAPNESTED']._serialized_end=950
+  _globals['_MAPNESTED_CHILD']._serialized_start=527
+  _globals['_MAPNESTED_CHILD']._serialized_end=564
+  _globals['_MAPNESTED_CHILDRENENTRY']._serialized_start=876
+  _globals['_MAPNESTED_CHILDRENENTRY']._serialized_end=950
 # @@protoc_insertion_point(module_scope)