/**
 * @fileoverview
 * @enhanceable
 * @suppress {messageConventions} JS Compiler reports an error if a variable or
 *     field starts with 'MSG_' and isn't a translatable message.
 * @public
 */
// GENERATED CODE -- DO NOT EDIT!

var jspb = require('google-protobuf');
var goog = jspb;
var global = Function('return this')();

var teletype$crdt_pb = require('./teletype-crdt_pb.js');
goog.exportSymbol('proto.BufferProxy', null, global);
goog.exportSymbol('proto.BufferProxyUpdate', null, global);
goog.exportSymbol('proto.BufferProxyUpdate.OperationsUpdate', null, global);
goog.exportSymbol('proto.BufferProxyUpdate.URIUpdate', null, global);
goog.exportSymbol('proto.EditorProxy', null, global);
goog.exportSymbol('proto.EditorProxyMetadata', null, global);
goog.exportSymbol('proto.EditorProxyUpdate', null, global);
goog.exportSymbol('proto.EditorProxyUpdate.SelectionsUpdate', null, global);
goog.exportSymbol('proto.NetworkMessage', null, global);
goog.exportSymbol('proto.NetworkMessage.StarBroadcast', null, global);
goog.exportSymbol('proto.NetworkMessage.StarJoinNotification', null, global);
goog.exportSymbol('proto.NetworkMessage.StarJoinRequest', null, global);
goog.exportSymbol('proto.NetworkMessage.StarJoinResponse', null, global);
goog.exportSymbol('proto.NetworkMessage.StarLeaveNotification', null, global);
goog.exportSymbol('proto.NetworkMessage.StarUnicast', null, global);
goog.exportSymbol('proto.PeerIdentity', null, global);
goog.exportSymbol('proto.PortalSubscriptionResponse', null, global);
goog.exportSymbol('proto.PortalUpdate', null, global);
goog.exportSymbol('proto.PortalUpdate.EditorProxyCreation', null, global);
goog.exportSymbol('proto.PortalUpdate.EditorProxyRemoval', null, global);
goog.exportSymbol('proto.PortalUpdate.EditorProxySwitch', null, global);
goog.exportSymbol('proto.PortalUpdate.SiteAssignment', null, global);
goog.exportSymbol('proto.RouterMessage', null, global);
goog.exportSymbol('proto.RouterMessage.Notification', null, global);
goog.exportSymbol('proto.RouterMessage.Request', null, global);
goog.exportSymbol('proto.RouterMessage.Response', null, global);
goog.exportSymbol('proto.Tether', null, global);

/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.PortalSubscriptionResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.PortalSubscriptionResponse.repeatedFields_, null);
};
goog.inherits(proto.PortalSubscriptionResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.PortalSubscriptionResponse.displayName = 'proto.PortalSubscriptionResponse';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.PortalSubscriptionResponse.repeatedFields_ = [4,5,6,8];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.PortalSubscriptionResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.PortalSubscriptionResponse.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.PortalSubscriptionResponse} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalSubscriptionResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    siteIdsByPeerIdMap: (f = msg.getSiteIdsByPeerIdMap()) ? f.toObject(includeInstance, undefined) : [],
    tethersList: jspb.Message.toObjectList(msg.getTethersList(),
    proto.Tether.toObject, includeInstance),
    activeBufferProxiesList: jspb.Message.toObjectList(msg.getActiveBufferProxiesList(),
    proto.BufferProxy.toObject, includeInstance),
    activeEditorProxiesList: jspb.Message.toObjectList(msg.getActiveEditorProxiesList(),
    proto.EditorProxy.toObject, includeInstance),
    activeEditorProxyIdsBySiteIdMap: (f = msg.getActiveEditorProxyIdsBySiteIdMap()) ? f.toObject(includeInstance, undefined) : [],
    editorProxiesMetadataList: jspb.Message.toObjectList(msg.getEditorProxiesMetadataList(),
    proto.EditorProxyMetadata.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.PortalSubscriptionResponse}
 */
proto.PortalSubscriptionResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.PortalSubscriptionResponse;
  return proto.PortalSubscriptionResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.PortalSubscriptionResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.PortalSubscriptionResponse}
 */
proto.PortalSubscriptionResponse.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = msg.getSiteIdsByPeerIdMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readUint32);
         });
      break;
    case 4:
      var value = new proto.Tether;
      reader.readMessage(value,proto.Tether.deserializeBinaryFromReader);
      msg.addTethers(value);
      break;
    case 5:
      var value = new proto.BufferProxy;
      reader.readMessage(value,proto.BufferProxy.deserializeBinaryFromReader);
      msg.addActiveBufferProxies(value);
      break;
    case 6:
      var value = new proto.EditorProxy;
      reader.readMessage(value,proto.EditorProxy.deserializeBinaryFromReader);
      msg.addActiveEditorProxies(value);
      break;
    case 7:
      var value = msg.getActiveEditorProxyIdsBySiteIdMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readUint32, jspb.BinaryReader.prototype.readUint32);
         });
      break;
    case 8:
      var value = new proto.EditorProxyMetadata;
      reader.readMessage(value,proto.EditorProxyMetadata.deserializeBinaryFromReader);
      msg.addEditorProxiesMetadata(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.PortalSubscriptionResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.PortalSubscriptionResponse.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.PortalSubscriptionResponse} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalSubscriptionResponse.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getSiteIdsByPeerIdMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(1, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeUint32);
  }
  f = message.getTethersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      4,
      f,
      proto.Tether.serializeBinaryToWriter
    );
  }
  f = message.getActiveBufferProxiesList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      5,
      f,
      proto.BufferProxy.serializeBinaryToWriter
    );
  }
  f = message.getActiveEditorProxiesList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      6,
      f,
      proto.EditorProxy.serializeBinaryToWriter
    );
  }
  f = message.getActiveEditorProxyIdsBySiteIdMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(7, writer, jspb.BinaryWriter.prototype.writeUint32, jspb.BinaryWriter.prototype.writeUint32);
  }
  f = message.getEditorProxiesMetadataList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      8,
      f,
      proto.EditorProxyMetadata.serializeBinaryToWriter
    );
  }
};


/**
 * map<string, uint32> site_ids_by_peer_id = 1;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<string,number>}
 */
proto.PortalSubscriptionResponse.prototype.getSiteIdsByPeerIdMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<string,number>} */ (
      jspb.Message.getMapField(this, 1, opt_noLazyCreate,
      null));
};


proto.PortalSubscriptionResponse.prototype.clearSiteIdsByPeerIdMap = function() {
  this.getSiteIdsByPeerIdMap().clear();
};


/**
 * repeated Tether tethers = 4;
 * @return {!Array.<!proto.Tether>}
 */
proto.PortalSubscriptionResponse.prototype.getTethersList = function() {
  return /** @type{!Array.<!proto.Tether>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.Tether, 4));
};


/** @param {!Array.<!proto.Tether>} value */
proto.PortalSubscriptionResponse.prototype.setTethersList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 4, value);
};


/**
 * @param {!proto.Tether=} opt_value
 * @param {number=} opt_index
 * @return {!proto.Tether}
 */
proto.PortalSubscriptionResponse.prototype.addTethers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.Tether, opt_index);
};


proto.PortalSubscriptionResponse.prototype.clearTethersList = function() {
  this.setTethersList([]);
};


/**
 * repeated BufferProxy active_buffer_proxies = 5;
 * @return {!Array.<!proto.BufferProxy>}
 */
proto.PortalSubscriptionResponse.prototype.getActiveBufferProxiesList = function() {
  return /** @type{!Array.<!proto.BufferProxy>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.BufferProxy, 5));
};


/** @param {!Array.<!proto.BufferProxy>} value */
proto.PortalSubscriptionResponse.prototype.setActiveBufferProxiesList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 5, value);
};


/**
 * @param {!proto.BufferProxy=} opt_value
 * @param {number=} opt_index
 * @return {!proto.BufferProxy}
 */
proto.PortalSubscriptionResponse.prototype.addActiveBufferProxies = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.BufferProxy, opt_index);
};


proto.PortalSubscriptionResponse.prototype.clearActiveBufferProxiesList = function() {
  this.setActiveBufferProxiesList([]);
};


/**
 * repeated EditorProxy active_editor_proxies = 6;
 * @return {!Array.<!proto.EditorProxy>}
 */
proto.PortalSubscriptionResponse.prototype.getActiveEditorProxiesList = function() {
  return /** @type{!Array.<!proto.EditorProxy>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.EditorProxy, 6));
};


/** @param {!Array.<!proto.EditorProxy>} value */
proto.PortalSubscriptionResponse.prototype.setActiveEditorProxiesList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 6, value);
};


/**
 * @param {!proto.EditorProxy=} opt_value
 * @param {number=} opt_index
 * @return {!proto.EditorProxy}
 */
proto.PortalSubscriptionResponse.prototype.addActiveEditorProxies = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.EditorProxy, opt_index);
};


proto.PortalSubscriptionResponse.prototype.clearActiveEditorProxiesList = function() {
  this.setActiveEditorProxiesList([]);
};


/**
 * map<uint32, uint32> active_editor_proxy_ids_by_site_id = 7;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<number,number>}
 */
proto.PortalSubscriptionResponse.prototype.getActiveEditorProxyIdsBySiteIdMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<number,number>} */ (
      jspb.Message.getMapField(this, 7, opt_noLazyCreate,
      null));
};


proto.PortalSubscriptionResponse.prototype.clearActiveEditorProxyIdsBySiteIdMap = function() {
  this.getActiveEditorProxyIdsBySiteIdMap().clear();
};


/**
 * repeated EditorProxyMetadata editor_proxies_metadata = 8;
 * @return {!Array.<!proto.EditorProxyMetadata>}
 */
proto.PortalSubscriptionResponse.prototype.getEditorProxiesMetadataList = function() {
  return /** @type{!Array.<!proto.EditorProxyMetadata>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.EditorProxyMetadata, 8));
};


/** @param {!Array.<!proto.EditorProxyMetadata>} value */
proto.PortalSubscriptionResponse.prototype.setEditorProxiesMetadataList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 8, value);
};


/**
 * @param {!proto.EditorProxyMetadata=} opt_value
 * @param {number=} opt_index
 * @return {!proto.EditorProxyMetadata}
 */
proto.PortalSubscriptionResponse.prototype.addEditorProxiesMetadata = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 8, opt_value, proto.EditorProxyMetadata, opt_index);
};


proto.PortalSubscriptionResponse.prototype.clearEditorProxiesMetadataList = function() {
  this.setEditorProxiesMetadataList([]);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.PortalUpdate = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.PortalUpdate.oneofGroups_);
};
goog.inherits(proto.PortalUpdate, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.PortalUpdate.displayName = 'proto.PortalUpdate';
}
/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.PortalUpdate.oneofGroups_ = [[1,2,4,5]];

/**
 * @enum {number}
 */
proto.PortalUpdate.VariantCase = {
  VARIANT_NOT_SET: 0,
  EDITOR_PROXY_SWITCH: 1,
  SITE_ASSIGNMENT: 2,
  TETHER_UPDATE: 4,
  EDITOR_PROXY_CREATION: 5
};

/**
 * @return {proto.PortalUpdate.VariantCase}
 */
proto.PortalUpdate.prototype.getVariantCase = function() {
  return /** @type {proto.PortalUpdate.VariantCase} */(jspb.Message.computeOneofCase(this, proto.PortalUpdate.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.PortalUpdate.prototype.toObject = function(opt_includeInstance) {
  return proto.PortalUpdate.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.PortalUpdate} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.toObject = function(includeInstance, msg) {
  var f, obj = {
    editorProxySwitch: (f = msg.getEditorProxySwitch()) && proto.PortalUpdate.EditorProxySwitch.toObject(includeInstance, f),
    siteAssignment: (f = msg.getSiteAssignment()) && proto.PortalUpdate.SiteAssignment.toObject(includeInstance, f),
    tetherUpdate: (f = msg.getTetherUpdate()) && proto.Tether.toObject(includeInstance, f),
    editorProxyCreation: (f = msg.getEditorProxyCreation()) && proto.PortalUpdate.EditorProxyCreation.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.PortalUpdate}
 */
proto.PortalUpdate.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.PortalUpdate;
  return proto.PortalUpdate.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.PortalUpdate} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.PortalUpdate}
 */
proto.PortalUpdate.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.PortalUpdate.EditorProxySwitch;
      reader.readMessage(value,proto.PortalUpdate.EditorProxySwitch.deserializeBinaryFromReader);
      msg.setEditorProxySwitch(value);
      break;
    case 2:
      var value = new proto.PortalUpdate.SiteAssignment;
      reader.readMessage(value,proto.PortalUpdate.SiteAssignment.deserializeBinaryFromReader);
      msg.setSiteAssignment(value);
      break;
    case 4:
      var value = new proto.Tether;
      reader.readMessage(value,proto.Tether.deserializeBinaryFromReader);
      msg.setTetherUpdate(value);
      break;
    case 5:
      var value = new proto.PortalUpdate.EditorProxyCreation;
      reader.readMessage(value,proto.PortalUpdate.EditorProxyCreation.deserializeBinaryFromReader);
      msg.setEditorProxyCreation(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.PortalUpdate.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.PortalUpdate.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.PortalUpdate} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getEditorProxySwitch();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.PortalUpdate.EditorProxySwitch.serializeBinaryToWriter
    );
  }
  f = message.getSiteAssignment();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.PortalUpdate.SiteAssignment.serializeBinaryToWriter
    );
  }
  f = message.getTetherUpdate();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.Tether.serializeBinaryToWriter
    );
  }
  f = message.getEditorProxyCreation();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.PortalUpdate.EditorProxyCreation.serializeBinaryToWriter
    );
  }
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.PortalUpdate.EditorProxySwitch = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.PortalUpdate.EditorProxySwitch, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.PortalUpdate.EditorProxySwitch.displayName = 'proto.PortalUpdate.EditorProxySwitch';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.PortalUpdate.EditorProxySwitch.prototype.toObject = function(opt_includeInstance) {
  return proto.PortalUpdate.EditorProxySwitch.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.PortalUpdate.EditorProxySwitch} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.EditorProxySwitch.toObject = function(includeInstance, msg) {
  var f, obj = {
    editorProxyId: jspb.Message.getFieldWithDefault(msg, 1, 0)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.PortalUpdate.EditorProxySwitch}
 */
proto.PortalUpdate.EditorProxySwitch.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.PortalUpdate.EditorProxySwitch;
  return proto.PortalUpdate.EditorProxySwitch.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.PortalUpdate.EditorProxySwitch} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.PortalUpdate.EditorProxySwitch}
 */
proto.PortalUpdate.EditorProxySwitch.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setEditorProxyId(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.PortalUpdate.EditorProxySwitch.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.PortalUpdate.EditorProxySwitch.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.PortalUpdate.EditorProxySwitch} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.EditorProxySwitch.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getEditorProxyId();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
};


/**
 * optional uint32 editor_proxy_id = 1;
 * @return {number}
 */
proto.PortalUpdate.EditorProxySwitch.prototype.getEditorProxyId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.PortalUpdate.EditorProxySwitch.prototype.setEditorProxyId = function(value) {
  jspb.Message.setProto3IntField(this, 1, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.PortalUpdate.SiteAssignment = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.PortalUpdate.SiteAssignment, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.PortalUpdate.SiteAssignment.displayName = 'proto.PortalUpdate.SiteAssignment';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.PortalUpdate.SiteAssignment.prototype.toObject = function(opt_includeInstance) {
  return proto.PortalUpdate.SiteAssignment.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.PortalUpdate.SiteAssignment} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.SiteAssignment.toObject = function(includeInstance, msg) {
  var f, obj = {
    peerId: jspb.Message.getFieldWithDefault(msg, 1, ""),
    siteId: jspb.Message.getFieldWithDefault(msg, 2, 0)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.PortalUpdate.SiteAssignment}
 */
proto.PortalUpdate.SiteAssignment.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.PortalUpdate.SiteAssignment;
  return proto.PortalUpdate.SiteAssignment.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.PortalUpdate.SiteAssignment} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.PortalUpdate.SiteAssignment}
 */
proto.PortalUpdate.SiteAssignment.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setPeerId(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setSiteId(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.PortalUpdate.SiteAssignment.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.PortalUpdate.SiteAssignment.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.PortalUpdate.SiteAssignment} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.SiteAssignment.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getPeerId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getSiteId();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
};


/**
 * optional string peer_id = 1;
 * @return {string}
 */
proto.PortalUpdate.SiteAssignment.prototype.getPeerId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.PortalUpdate.SiteAssignment.prototype.setPeerId = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional uint32 site_id = 2;
 * @return {number}
 */
proto.PortalUpdate.SiteAssignment.prototype.getSiteId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/** @param {number} value */
proto.PortalUpdate.SiteAssignment.prototype.setSiteId = function(value) {
  jspb.Message.setProto3IntField(this, 2, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.PortalUpdate.EditorProxyRemoval = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.PortalUpdate.EditorProxyRemoval, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.PortalUpdate.EditorProxyRemoval.displayName = 'proto.PortalUpdate.EditorProxyRemoval';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.PortalUpdate.EditorProxyRemoval.prototype.toObject = function(opt_includeInstance) {
  return proto.PortalUpdate.EditorProxyRemoval.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.PortalUpdate.EditorProxyRemoval} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.EditorProxyRemoval.toObject = function(includeInstance, msg) {
  var f, obj = {
    editorProxyId: jspb.Message.getFieldWithDefault(msg, 1, 0)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.PortalUpdate.EditorProxyRemoval}
 */
proto.PortalUpdate.EditorProxyRemoval.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.PortalUpdate.EditorProxyRemoval;
  return proto.PortalUpdate.EditorProxyRemoval.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.PortalUpdate.EditorProxyRemoval} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.PortalUpdate.EditorProxyRemoval}
 */
proto.PortalUpdate.EditorProxyRemoval.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setEditorProxyId(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.PortalUpdate.EditorProxyRemoval.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.PortalUpdate.EditorProxyRemoval.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.PortalUpdate.EditorProxyRemoval} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.EditorProxyRemoval.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getEditorProxyId();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
};


/**
 * optional uint32 editor_proxy_id = 1;
 * @return {number}
 */
proto.PortalUpdate.EditorProxyRemoval.prototype.getEditorProxyId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.PortalUpdate.EditorProxyRemoval.prototype.setEditorProxyId = function(value) {
  jspb.Message.setProto3IntField(this, 1, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.PortalUpdate.EditorProxyCreation = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.PortalUpdate.EditorProxyCreation, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.PortalUpdate.EditorProxyCreation.displayName = 'proto.PortalUpdate.EditorProxyCreation';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.PortalUpdate.EditorProxyCreation.prototype.toObject = function(opt_includeInstance) {
  return proto.PortalUpdate.EditorProxyCreation.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.PortalUpdate.EditorProxyCreation} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.EditorProxyCreation.toObject = function(includeInstance, msg) {
  var f, obj = {
    editorProxyMetadata: (f = msg.getEditorProxyMetadata()) && proto.EditorProxyMetadata.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.PortalUpdate.EditorProxyCreation}
 */
proto.PortalUpdate.EditorProxyCreation.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.PortalUpdate.EditorProxyCreation;
  return proto.PortalUpdate.EditorProxyCreation.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.PortalUpdate.EditorProxyCreation} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.PortalUpdate.EditorProxyCreation}
 */
proto.PortalUpdate.EditorProxyCreation.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.EditorProxyMetadata;
      reader.readMessage(value,proto.EditorProxyMetadata.deserializeBinaryFromReader);
      msg.setEditorProxyMetadata(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.PortalUpdate.EditorProxyCreation.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.PortalUpdate.EditorProxyCreation.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.PortalUpdate.EditorProxyCreation} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PortalUpdate.EditorProxyCreation.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getEditorProxyMetadata();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.EditorProxyMetadata.serializeBinaryToWriter
    );
  }
};


/**
 * optional EditorProxyMetadata editor_proxy_metadata = 1;
 * @return {?proto.EditorProxyMetadata}
 */
proto.PortalUpdate.EditorProxyCreation.prototype.getEditorProxyMetadata = function() {
  return /** @type{?proto.EditorProxyMetadata} */ (
    jspb.Message.getWrapperField(this, proto.EditorProxyMetadata, 1));
};


/** @param {?proto.EditorProxyMetadata|undefined} value */
proto.PortalUpdate.EditorProxyCreation.prototype.setEditorProxyMetadata = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.PortalUpdate.EditorProxyCreation.prototype.clearEditorProxyMetadata = function() {
  this.setEditorProxyMetadata(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.PortalUpdate.EditorProxyCreation.prototype.hasEditorProxyMetadata = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional EditorProxySwitch editor_proxy_switch = 1;
 * @return {?proto.PortalUpdate.EditorProxySwitch}
 */
proto.PortalUpdate.prototype.getEditorProxySwitch = function() {
  return /** @type{?proto.PortalUpdate.EditorProxySwitch} */ (
    jspb.Message.getWrapperField(this, proto.PortalUpdate.EditorProxySwitch, 1));
};


/** @param {?proto.PortalUpdate.EditorProxySwitch|undefined} value */
proto.PortalUpdate.prototype.setEditorProxySwitch = function(value) {
  jspb.Message.setOneofWrapperField(this, 1, proto.PortalUpdate.oneofGroups_[0], value);
};


proto.PortalUpdate.prototype.clearEditorProxySwitch = function() {
  this.setEditorProxySwitch(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.PortalUpdate.prototype.hasEditorProxySwitch = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional SiteAssignment site_assignment = 2;
 * @return {?proto.PortalUpdate.SiteAssignment}
 */
proto.PortalUpdate.prototype.getSiteAssignment = function() {
  return /** @type{?proto.PortalUpdate.SiteAssignment} */ (
    jspb.Message.getWrapperField(this, proto.PortalUpdate.SiteAssignment, 2));
};


/** @param {?proto.PortalUpdate.SiteAssignment|undefined} value */
proto.PortalUpdate.prototype.setSiteAssignment = function(value) {
  jspb.Message.setOneofWrapperField(this, 2, proto.PortalUpdate.oneofGroups_[0], value);
};


proto.PortalUpdate.prototype.clearSiteAssignment = function() {
  this.setSiteAssignment(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.PortalUpdate.prototype.hasSiteAssignment = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional Tether tether_update = 4;
 * @return {?proto.Tether}
 */
proto.PortalUpdate.prototype.getTetherUpdate = function() {
  return /** @type{?proto.Tether} */ (
    jspb.Message.getWrapperField(this, proto.Tether, 4));
};


/** @param {?proto.Tether|undefined} value */
proto.PortalUpdate.prototype.setTetherUpdate = function(value) {
  jspb.Message.setOneofWrapperField(this, 4, proto.PortalUpdate.oneofGroups_[0], value);
};


proto.PortalUpdate.prototype.clearTetherUpdate = function() {
  this.setTetherUpdate(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.PortalUpdate.prototype.hasTetherUpdate = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional EditorProxyCreation editor_proxy_creation = 5;
 * @return {?proto.PortalUpdate.EditorProxyCreation}
 */
proto.PortalUpdate.prototype.getEditorProxyCreation = function() {
  return /** @type{?proto.PortalUpdate.EditorProxyCreation} */ (
    jspb.Message.getWrapperField(this, proto.PortalUpdate.EditorProxyCreation, 5));
};


/** @param {?proto.PortalUpdate.EditorProxyCreation|undefined} value */
proto.PortalUpdate.prototype.setEditorProxyCreation = function(value) {
  jspb.Message.setOneofWrapperField(this, 5, proto.PortalUpdate.oneofGroups_[0], value);
};


proto.PortalUpdate.prototype.clearEditorProxyCreation = function() {
  this.setEditorProxyCreation(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.PortalUpdate.prototype.hasEditorProxyCreation = function() {
  return jspb.Message.getField(this, 5) != null;
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.Tether = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.Tether, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.Tether.displayName = 'proto.Tether';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.Tether.prototype.toObject = function(opt_includeInstance) {
  return proto.Tether.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.Tether} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Tether.toObject = function(includeInstance, msg) {
  var f, obj = {
    followerSiteId: jspb.Message.getFieldWithDefault(msg, 1, 0),
    leaderSiteId: jspb.Message.getFieldWithDefault(msg, 2, 0),
    state: jspb.Message.getFieldWithDefault(msg, 3, 0)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.Tether}
 */
proto.Tether.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.Tether;
  return proto.Tether.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.Tether} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.Tether}
 */
proto.Tether.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setFollowerSiteId(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setLeaderSiteId(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setState(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.Tether.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.Tether.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.Tether} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Tether.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getFollowerSiteId();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = message.getLeaderSiteId();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
  f = message.getState();
  if (f !== 0) {
    writer.writeUint32(
      3,
      f
    );
  }
};


/**
 * optional uint32 follower_site_id = 1;
 * @return {number}
 */
proto.Tether.prototype.getFollowerSiteId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.Tether.prototype.setFollowerSiteId = function(value) {
  jspb.Message.setProto3IntField(this, 1, value);
};


/**
 * optional uint32 leader_site_id = 2;
 * @return {number}
 */
proto.Tether.prototype.getLeaderSiteId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/** @param {number} value */
proto.Tether.prototype.setLeaderSiteId = function(value) {
  jspb.Message.setProto3IntField(this, 2, value);
};


/**
 * optional uint32 state = 3;
 * @return {number}
 */
proto.Tether.prototype.getState = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};


/** @param {number} value */
proto.Tether.prototype.setState = function(value) {
  jspb.Message.setProto3IntField(this, 3, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.EditorProxy = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.EditorProxy, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.EditorProxy.displayName = 'proto.EditorProxy';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.EditorProxy.prototype.toObject = function(opt_includeInstance) {
  return proto.EditorProxy.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.EditorProxy} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.EditorProxy.toObject = function(includeInstance, msg) {
  var f, obj = {
    id: jspb.Message.getFieldWithDefault(msg, 1, 0),
    bufferProxyId: jspb.Message.getFieldWithDefault(msg, 2, 0),
    selectionLayerIdsBySiteIdMap: (f = msg.getSelectionLayerIdsBySiteIdMap()) ? f.toObject(includeInstance, undefined) : []
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.EditorProxy}
 */
proto.EditorProxy.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.EditorProxy;
  return proto.EditorProxy.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.EditorProxy} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.EditorProxy}
 */
proto.EditorProxy.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setId(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setBufferProxyId(value);
      break;
    case 3:
      var value = msg.getSelectionLayerIdsBySiteIdMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readUint32, jspb.BinaryReader.prototype.readUint32);
         });
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.EditorProxy.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.EditorProxy.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.EditorProxy} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.EditorProxy.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getId();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = message.getBufferProxyId();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
  f = message.getSelectionLayerIdsBySiteIdMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeUint32, jspb.BinaryWriter.prototype.writeUint32);
  }
};


/**
 * optional uint32 id = 1;
 * @return {number}
 */
proto.EditorProxy.prototype.getId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.EditorProxy.prototype.setId = function(value) {
  jspb.Message.setProto3IntField(this, 1, value);
};


/**
 * optional uint32 buffer_proxy_id = 2;
 * @return {number}
 */
proto.EditorProxy.prototype.getBufferProxyId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/** @param {number} value */
proto.EditorProxy.prototype.setBufferProxyId = function(value) {
  jspb.Message.setProto3IntField(this, 2, value);
};


/**
 * map<uint32, uint32> selection_layer_ids_by_site_id = 3;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<number,number>}
 */
proto.EditorProxy.prototype.getSelectionLayerIdsBySiteIdMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<number,number>} */ (
      jspb.Message.getMapField(this, 3, opt_noLazyCreate,
      null));
};


proto.EditorProxy.prototype.clearSelectionLayerIdsBySiteIdMap = function() {
  this.getSelectionLayerIdsBySiteIdMap().clear();
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.EditorProxyMetadata = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.EditorProxyMetadata, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.EditorProxyMetadata.displayName = 'proto.EditorProxyMetadata';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.EditorProxyMetadata.prototype.toObject = function(opt_includeInstance) {
  return proto.EditorProxyMetadata.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.EditorProxyMetadata} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.EditorProxyMetadata.toObject = function(includeInstance, msg) {
  var f, obj = {
    id: jspb.Message.getFieldWithDefault(msg, 1, 0),
    bufferProxyId: jspb.Message.getFieldWithDefault(msg, 2, 0),
    bufferProxyUri: jspb.Message.getFieldWithDefault(msg, 3, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.EditorProxyMetadata}
 */
proto.EditorProxyMetadata.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.EditorProxyMetadata;
  return proto.EditorProxyMetadata.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.EditorProxyMetadata} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.EditorProxyMetadata}
 */
proto.EditorProxyMetadata.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setId(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setBufferProxyId(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setBufferProxyUri(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.EditorProxyMetadata.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.EditorProxyMetadata.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.EditorProxyMetadata} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.EditorProxyMetadata.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getId();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = message.getBufferProxyId();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
  f = message.getBufferProxyUri();
  if (f.length > 0) {
    writer.writeString(
      3,
      f
    );
  }
};


/**
 * optional uint32 id = 1;
 * @return {number}
 */
proto.EditorProxyMetadata.prototype.getId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.EditorProxyMetadata.prototype.setId = function(value) {
  jspb.Message.setProto3IntField(this, 1, value);
};


/**
 * optional uint32 buffer_proxy_id = 2;
 * @return {number}
 */
proto.EditorProxyMetadata.prototype.getBufferProxyId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/** @param {number} value */
proto.EditorProxyMetadata.prototype.setBufferProxyId = function(value) {
  jspb.Message.setProto3IntField(this, 2, value);
};


/**
 * optional string buffer_proxy_uri = 3;
 * @return {string}
 */
proto.EditorProxyMetadata.prototype.getBufferProxyUri = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/** @param {string} value */
proto.EditorProxyMetadata.prototype.setBufferProxyUri = function(value) {
  jspb.Message.setProto3StringField(this, 3, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.EditorProxyUpdate = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.EditorProxyUpdate.oneofGroups_);
};
goog.inherits(proto.EditorProxyUpdate, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.EditorProxyUpdate.displayName = 'proto.EditorProxyUpdate';
}
/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.EditorProxyUpdate.oneofGroups_ = [[1]];

/**
 * @enum {number}
 */
proto.EditorProxyUpdate.VariantCase = {
  VARIANT_NOT_SET: 0,
  SELECTIONS_UPDATE: 1
};

/**
 * @return {proto.EditorProxyUpdate.VariantCase}
 */
proto.EditorProxyUpdate.prototype.getVariantCase = function() {
  return /** @type {proto.EditorProxyUpdate.VariantCase} */(jspb.Message.computeOneofCase(this, proto.EditorProxyUpdate.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.EditorProxyUpdate.prototype.toObject = function(opt_includeInstance) {
  return proto.EditorProxyUpdate.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.EditorProxyUpdate} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.EditorProxyUpdate.toObject = function(includeInstance, msg) {
  var f, obj = {
    selectionsUpdate: (f = msg.getSelectionsUpdate()) && proto.EditorProxyUpdate.SelectionsUpdate.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.EditorProxyUpdate}
 */
proto.EditorProxyUpdate.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.EditorProxyUpdate;
  return proto.EditorProxyUpdate.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.EditorProxyUpdate} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.EditorProxyUpdate}
 */
proto.EditorProxyUpdate.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.EditorProxyUpdate.SelectionsUpdate;
      reader.readMessage(value,proto.EditorProxyUpdate.SelectionsUpdate.deserializeBinaryFromReader);
      msg.setSelectionsUpdate(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.EditorProxyUpdate.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.EditorProxyUpdate.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.EditorProxyUpdate} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.EditorProxyUpdate.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getSelectionsUpdate();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.EditorProxyUpdate.SelectionsUpdate.serializeBinaryToWriter
    );
  }
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.EditorProxyUpdate.SelectionsUpdate = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.EditorProxyUpdate.SelectionsUpdate, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.EditorProxyUpdate.SelectionsUpdate.displayName = 'proto.EditorProxyUpdate.SelectionsUpdate';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.EditorProxyUpdate.SelectionsUpdate.prototype.toObject = function(opt_includeInstance) {
  return proto.EditorProxyUpdate.SelectionsUpdate.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.EditorProxyUpdate.SelectionsUpdate} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.EditorProxyUpdate.SelectionsUpdate.toObject = function(includeInstance, msg) {
  var f, obj = {
    selectionLayerIdsBySiteIdMap: (f = msg.getSelectionLayerIdsBySiteIdMap()) ? f.toObject(includeInstance, undefined) : []
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.EditorProxyUpdate.SelectionsUpdate}
 */
proto.EditorProxyUpdate.SelectionsUpdate.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.EditorProxyUpdate.SelectionsUpdate;
  return proto.EditorProxyUpdate.SelectionsUpdate.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.EditorProxyUpdate.SelectionsUpdate} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.EditorProxyUpdate.SelectionsUpdate}
 */
proto.EditorProxyUpdate.SelectionsUpdate.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = msg.getSelectionLayerIdsBySiteIdMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readUint32, jspb.BinaryReader.prototype.readUint32);
         });
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.EditorProxyUpdate.SelectionsUpdate.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.EditorProxyUpdate.SelectionsUpdate.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.EditorProxyUpdate.SelectionsUpdate} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.EditorProxyUpdate.SelectionsUpdate.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getSelectionLayerIdsBySiteIdMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(1, writer, jspb.BinaryWriter.prototype.writeUint32, jspb.BinaryWriter.prototype.writeUint32);
  }
};


/**
 * map<uint32, uint32> selection_layer_ids_by_site_id = 1;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<number,number>}
 */
proto.EditorProxyUpdate.SelectionsUpdate.prototype.getSelectionLayerIdsBySiteIdMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<number,number>} */ (
      jspb.Message.getMapField(this, 1, opt_noLazyCreate,
      null));
};


proto.EditorProxyUpdate.SelectionsUpdate.prototype.clearSelectionLayerIdsBySiteIdMap = function() {
  this.getSelectionLayerIdsBySiteIdMap().clear();
};


/**
 * optional SelectionsUpdate selections_update = 1;
 * @return {?proto.EditorProxyUpdate.SelectionsUpdate}
 */
proto.EditorProxyUpdate.prototype.getSelectionsUpdate = function() {
  return /** @type{?proto.EditorProxyUpdate.SelectionsUpdate} */ (
    jspb.Message.getWrapperField(this, proto.EditorProxyUpdate.SelectionsUpdate, 1));
};


/** @param {?proto.EditorProxyUpdate.SelectionsUpdate|undefined} value */
proto.EditorProxyUpdate.prototype.setSelectionsUpdate = function(value) {
  jspb.Message.setOneofWrapperField(this, 1, proto.EditorProxyUpdate.oneofGroups_[0], value);
};


proto.EditorProxyUpdate.prototype.clearSelectionsUpdate = function() {
  this.setSelectionsUpdate(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.EditorProxyUpdate.prototype.hasSelectionsUpdate = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.BufferProxy = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.BufferProxy.repeatedFields_, null);
};
goog.inherits(proto.BufferProxy, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.BufferProxy.displayName = 'proto.BufferProxy';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.BufferProxy.repeatedFields_ = [3];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.BufferProxy.prototype.toObject = function(opt_includeInstance) {
  return proto.BufferProxy.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.BufferProxy} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.BufferProxy.toObject = function(includeInstance, msg) {
  var f, obj = {
    id: jspb.Message.getFieldWithDefault(msg, 1, 0),
    uri: jspb.Message.getFieldWithDefault(msg, 2, ""),
    operationsList: jspb.Message.toObjectList(msg.getOperationsList(),
    teletype$crdt_pb.Operation.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.BufferProxy}
 */
proto.BufferProxy.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.BufferProxy;
  return proto.BufferProxy.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.BufferProxy} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.BufferProxy}
 */
proto.BufferProxy.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setId(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setUri(value);
      break;
    case 3:
      var value = new teletype$crdt_pb.Operation;
      reader.readMessage(value,teletype$crdt_pb.Operation.deserializeBinaryFromReader);
      msg.addOperations(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.BufferProxy.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.BufferProxy.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.BufferProxy} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.BufferProxy.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getId();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = message.getUri();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
  f = message.getOperationsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      teletype$crdt_pb.Operation.serializeBinaryToWriter
    );
  }
};


/**
 * optional uint32 id = 1;
 * @return {number}
 */
proto.BufferProxy.prototype.getId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.BufferProxy.prototype.setId = function(value) {
  jspb.Message.setProto3IntField(this, 1, value);
};


/**
 * optional string uri = 2;
 * @return {string}
 */
proto.BufferProxy.prototype.getUri = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/** @param {string} value */
proto.BufferProxy.prototype.setUri = function(value) {
  jspb.Message.setProto3StringField(this, 2, value);
};


/**
 * repeated Operation operations = 3;
 * @return {!Array.<!proto.Operation>}
 */
proto.BufferProxy.prototype.getOperationsList = function() {
  return /** @type{!Array.<!proto.Operation>} */ (
    jspb.Message.getRepeatedWrapperField(this, teletype$crdt_pb.Operation, 3));
};


/** @param {!Array.<!proto.Operation>} value */
proto.BufferProxy.prototype.setOperationsList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.Operation=} opt_value
 * @param {number=} opt_index
 * @return {!proto.Operation}
 */
proto.BufferProxy.prototype.addOperations = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Operation, opt_index);
};


proto.BufferProxy.prototype.clearOperationsList = function() {
  this.setOperationsList([]);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.BufferProxyUpdate = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.BufferProxyUpdate.oneofGroups_);
};
goog.inherits(proto.BufferProxyUpdate, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.BufferProxyUpdate.displayName = 'proto.BufferProxyUpdate';
}
/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.BufferProxyUpdate.oneofGroups_ = [[2,3]];

/**
 * @enum {number}
 */
proto.BufferProxyUpdate.VariantCase = {
  VARIANT_NOT_SET: 0,
  OPERATIONS_UPDATE: 2,
  URI_UPDATE: 3
};

/**
 * @return {proto.BufferProxyUpdate.VariantCase}
 */
proto.BufferProxyUpdate.prototype.getVariantCase = function() {
  return /** @type {proto.BufferProxyUpdate.VariantCase} */(jspb.Message.computeOneofCase(this, proto.BufferProxyUpdate.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.BufferProxyUpdate.prototype.toObject = function(opt_includeInstance) {
  return proto.BufferProxyUpdate.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.BufferProxyUpdate} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.BufferProxyUpdate.toObject = function(includeInstance, msg) {
  var f, obj = {
    operationsUpdate: (f = msg.getOperationsUpdate()) && proto.BufferProxyUpdate.OperationsUpdate.toObject(includeInstance, f),
    uriUpdate: (f = msg.getUriUpdate()) && proto.BufferProxyUpdate.URIUpdate.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.BufferProxyUpdate}
 */
proto.BufferProxyUpdate.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.BufferProxyUpdate;
  return proto.BufferProxyUpdate.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.BufferProxyUpdate} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.BufferProxyUpdate}
 */
proto.BufferProxyUpdate.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 2:
      var value = new proto.BufferProxyUpdate.OperationsUpdate;
      reader.readMessage(value,proto.BufferProxyUpdate.OperationsUpdate.deserializeBinaryFromReader);
      msg.setOperationsUpdate(value);
      break;
    case 3:
      var value = new proto.BufferProxyUpdate.URIUpdate;
      reader.readMessage(value,proto.BufferProxyUpdate.URIUpdate.deserializeBinaryFromReader);
      msg.setUriUpdate(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.BufferProxyUpdate.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.BufferProxyUpdate.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.BufferProxyUpdate} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.BufferProxyUpdate.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getOperationsUpdate();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.BufferProxyUpdate.OperationsUpdate.serializeBinaryToWriter
    );
  }
  f = message.getUriUpdate();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.BufferProxyUpdate.URIUpdate.serializeBinaryToWriter
    );
  }
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.BufferProxyUpdate.OperationsUpdate = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.BufferProxyUpdate.OperationsUpdate.repeatedFields_, null);
};
goog.inherits(proto.BufferProxyUpdate.OperationsUpdate, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.BufferProxyUpdate.OperationsUpdate.displayName = 'proto.BufferProxyUpdate.OperationsUpdate';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.BufferProxyUpdate.OperationsUpdate.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.BufferProxyUpdate.OperationsUpdate.prototype.toObject = function(opt_includeInstance) {
  return proto.BufferProxyUpdate.OperationsUpdate.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.BufferProxyUpdate.OperationsUpdate} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.BufferProxyUpdate.OperationsUpdate.toObject = function(includeInstance, msg) {
  var f, obj = {
    operationsList: jspb.Message.toObjectList(msg.getOperationsList(),
    teletype$crdt_pb.Operation.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.BufferProxyUpdate.OperationsUpdate}
 */
proto.BufferProxyUpdate.OperationsUpdate.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.BufferProxyUpdate.OperationsUpdate;
  return proto.BufferProxyUpdate.OperationsUpdate.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.BufferProxyUpdate.OperationsUpdate} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.BufferProxyUpdate.OperationsUpdate}
 */
proto.BufferProxyUpdate.OperationsUpdate.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new teletype$crdt_pb.Operation;
      reader.readMessage(value,teletype$crdt_pb.Operation.deserializeBinaryFromReader);
      msg.addOperations(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.BufferProxyUpdate.OperationsUpdate.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.BufferProxyUpdate.OperationsUpdate.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.BufferProxyUpdate.OperationsUpdate} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.BufferProxyUpdate.OperationsUpdate.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getOperationsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      teletype$crdt_pb.Operation.serializeBinaryToWriter
    );
  }
};


/**
 * repeated Operation operations = 1;
 * @return {!Array.<!proto.Operation>}
 */
proto.BufferProxyUpdate.OperationsUpdate.prototype.getOperationsList = function() {
  return /** @type{!Array.<!proto.Operation>} */ (
    jspb.Message.getRepeatedWrapperField(this, teletype$crdt_pb.Operation, 1));
};


/** @param {!Array.<!proto.Operation>} value */
proto.BufferProxyUpdate.OperationsUpdate.prototype.setOperationsList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.Operation=} opt_value
 * @param {number=} opt_index
 * @return {!proto.Operation}
 */
proto.BufferProxyUpdate.OperationsUpdate.prototype.addOperations = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.Operation, opt_index);
};


proto.BufferProxyUpdate.OperationsUpdate.prototype.clearOperationsList = function() {
  this.setOperationsList([]);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.BufferProxyUpdate.URIUpdate = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.BufferProxyUpdate.URIUpdate, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.BufferProxyUpdate.URIUpdate.displayName = 'proto.BufferProxyUpdate.URIUpdate';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.BufferProxyUpdate.URIUpdate.prototype.toObject = function(opt_includeInstance) {
  return proto.BufferProxyUpdate.URIUpdate.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.BufferProxyUpdate.URIUpdate} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.BufferProxyUpdate.URIUpdate.toObject = function(includeInstance, msg) {
  var f, obj = {
    uri: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.BufferProxyUpdate.URIUpdate}
 */
proto.BufferProxyUpdate.URIUpdate.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.BufferProxyUpdate.URIUpdate;
  return proto.BufferProxyUpdate.URIUpdate.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.BufferProxyUpdate.URIUpdate} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.BufferProxyUpdate.URIUpdate}
 */
proto.BufferProxyUpdate.URIUpdate.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setUri(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.BufferProxyUpdate.URIUpdate.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.BufferProxyUpdate.URIUpdate.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.BufferProxyUpdate.URIUpdate} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.BufferProxyUpdate.URIUpdate.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getUri();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string uri = 1;
 * @return {string}
 */
proto.BufferProxyUpdate.URIUpdate.prototype.getUri = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.BufferProxyUpdate.URIUpdate.prototype.setUri = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional OperationsUpdate operations_update = 2;
 * @return {?proto.BufferProxyUpdate.OperationsUpdate}
 */
proto.BufferProxyUpdate.prototype.getOperationsUpdate = function() {
  return /** @type{?proto.BufferProxyUpdate.OperationsUpdate} */ (
    jspb.Message.getWrapperField(this, proto.BufferProxyUpdate.OperationsUpdate, 2));
};


/** @param {?proto.BufferProxyUpdate.OperationsUpdate|undefined} value */
proto.BufferProxyUpdate.prototype.setOperationsUpdate = function(value) {
  jspb.Message.setOneofWrapperField(this, 2, proto.BufferProxyUpdate.oneofGroups_[0], value);
};


proto.BufferProxyUpdate.prototype.clearOperationsUpdate = function() {
  this.setOperationsUpdate(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.BufferProxyUpdate.prototype.hasOperationsUpdate = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional URIUpdate uri_update = 3;
 * @return {?proto.BufferProxyUpdate.URIUpdate}
 */
proto.BufferProxyUpdate.prototype.getUriUpdate = function() {
  return /** @type{?proto.BufferProxyUpdate.URIUpdate} */ (
    jspb.Message.getWrapperField(this, proto.BufferProxyUpdate.URIUpdate, 3));
};


/** @param {?proto.BufferProxyUpdate.URIUpdate|undefined} value */
proto.BufferProxyUpdate.prototype.setUriUpdate = function(value) {
  jspb.Message.setOneofWrapperField(this, 3, proto.BufferProxyUpdate.oneofGroups_[0], value);
};


proto.BufferProxyUpdate.prototype.clearUriUpdate = function() {
  this.setUriUpdate(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.BufferProxyUpdate.prototype.hasUriUpdate = function() {
  return jspb.Message.getField(this, 3) != null;
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.RouterMessage = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.RouterMessage.oneofGroups_);
};
goog.inherits(proto.RouterMessage, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.RouterMessage.displayName = 'proto.RouterMessage';
}
/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.RouterMessage.oneofGroups_ = [[2,3,4]];

/**
 * @enum {number}
 */
proto.RouterMessage.VariantCase = {
  VARIANT_NOT_SET: 0,
  NOTIFICATION: 2,
  REQUEST: 3,
  RESPONSE: 4
};

/**
 * @return {proto.RouterMessage.VariantCase}
 */
proto.RouterMessage.prototype.getVariantCase = function() {
  return /** @type {proto.RouterMessage.VariantCase} */(jspb.Message.computeOneofCase(this, proto.RouterMessage.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.RouterMessage.prototype.toObject = function(opt_includeInstance) {
  return proto.RouterMessage.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.RouterMessage} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.RouterMessage.toObject = function(includeInstance, msg) {
  var f, obj = {
    notification: (f = msg.getNotification()) && proto.RouterMessage.Notification.toObject(includeInstance, f),
    request: (f = msg.getRequest()) && proto.RouterMessage.Request.toObject(includeInstance, f),
    response: (f = msg.getResponse()) && proto.RouterMessage.Response.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.RouterMessage}
 */
proto.RouterMessage.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.RouterMessage;
  return proto.RouterMessage.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.RouterMessage} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.RouterMessage}
 */
proto.RouterMessage.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 2:
      var value = new proto.RouterMessage.Notification;
      reader.readMessage(value,proto.RouterMessage.Notification.deserializeBinaryFromReader);
      msg.setNotification(value);
      break;
    case 3:
      var value = new proto.RouterMessage.Request;
      reader.readMessage(value,proto.RouterMessage.Request.deserializeBinaryFromReader);
      msg.setRequest(value);
      break;
    case 4:
      var value = new proto.RouterMessage.Response;
      reader.readMessage(value,proto.RouterMessage.Response.deserializeBinaryFromReader);
      msg.setResponse(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.RouterMessage.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.RouterMessage.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.RouterMessage} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.RouterMessage.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getNotification();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.RouterMessage.Notification.serializeBinaryToWriter
    );
  }
  f = message.getRequest();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.RouterMessage.Request.serializeBinaryToWriter
    );
  }
  f = message.getResponse();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.RouterMessage.Response.serializeBinaryToWriter
    );
  }
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.RouterMessage.Notification = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.RouterMessage.Notification, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.RouterMessage.Notification.displayName = 'proto.RouterMessage.Notification';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.RouterMessage.Notification.prototype.toObject = function(opt_includeInstance) {
  return proto.RouterMessage.Notification.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.RouterMessage.Notification} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.RouterMessage.Notification.toObject = function(includeInstance, msg) {
  var f, obj = {
    channelId: jspb.Message.getFieldWithDefault(msg, 1, ""),
    body: msg.getBody_asB64()
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.RouterMessage.Notification}
 */
proto.RouterMessage.Notification.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.RouterMessage.Notification;
  return proto.RouterMessage.Notification.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.RouterMessage.Notification} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.RouterMessage.Notification}
 */
proto.RouterMessage.Notification.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setChannelId(value);
      break;
    case 2:
      var value = /** @type {!Uint8Array} */ (reader.readBytes());
      msg.setBody(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.RouterMessage.Notification.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.RouterMessage.Notification.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.RouterMessage.Notification} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.RouterMessage.Notification.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getChannelId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getBody_asU8();
  if (f.length > 0) {
    writer.writeBytes(
      2,
      f
    );
  }
};


/**
 * optional string channel_id = 1;
 * @return {string}
 */
proto.RouterMessage.Notification.prototype.getChannelId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.RouterMessage.Notification.prototype.setChannelId = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional bytes body = 2;
 * @return {!(string|Uint8Array)}
 */
proto.RouterMessage.Notification.prototype.getBody = function() {
  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * optional bytes body = 2;
 * This is a type-conversion wrapper around `getBody()`
 * @return {string}
 */
proto.RouterMessage.Notification.prototype.getBody_asB64 = function() {
  return /** @type {string} */ (jspb.Message.bytesAsB64(
      this.getBody()));
};


/**
 * optional bytes body = 2;
 * Note that Uint8Array is not supported on all browsers.
 * @see http://caniuse.com/Uint8Array
 * This is a type-conversion wrapper around `getBody()`
 * @return {!Uint8Array}
 */
proto.RouterMessage.Notification.prototype.getBody_asU8 = function() {
  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
      this.getBody()));
};


/** @param {!(string|Uint8Array)} value */
proto.RouterMessage.Notification.prototype.setBody = function(value) {
  jspb.Message.setProto3BytesField(this, 2, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.RouterMessage.Request = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.RouterMessage.Request, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.RouterMessage.Request.displayName = 'proto.RouterMessage.Request';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.RouterMessage.Request.prototype.toObject = function(opt_includeInstance) {
  return proto.RouterMessage.Request.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.RouterMessage.Request} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.RouterMessage.Request.toObject = function(includeInstance, msg) {
  var f, obj = {
    channelId: jspb.Message.getFieldWithDefault(msg, 1, ""),
    requestId: jspb.Message.getFieldWithDefault(msg, 2, 0),
    body: msg.getBody_asB64()
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.RouterMessage.Request}
 */
proto.RouterMessage.Request.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.RouterMessage.Request;
  return proto.RouterMessage.Request.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.RouterMessage.Request} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.RouterMessage.Request}
 */
proto.RouterMessage.Request.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setChannelId(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setRequestId(value);
      break;
    case 3:
      var value = /** @type {!Uint8Array} */ (reader.readBytes());
      msg.setBody(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.RouterMessage.Request.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.RouterMessage.Request.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.RouterMessage.Request} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.RouterMessage.Request.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getChannelId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getRequestId();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
  f = message.getBody_asU8();
  if (f.length > 0) {
    writer.writeBytes(
      3,
      f
    );
  }
};


/**
 * optional string channel_id = 1;
 * @return {string}
 */
proto.RouterMessage.Request.prototype.getChannelId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.RouterMessage.Request.prototype.setChannelId = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional uint32 request_id = 2;
 * @return {number}
 */
proto.RouterMessage.Request.prototype.getRequestId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/** @param {number} value */
proto.RouterMessage.Request.prototype.setRequestId = function(value) {
  jspb.Message.setProto3IntField(this, 2, value);
};


/**
 * optional bytes body = 3;
 * @return {!(string|Uint8Array)}
 */
proto.RouterMessage.Request.prototype.getBody = function() {
  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/**
 * optional bytes body = 3;
 * This is a type-conversion wrapper around `getBody()`
 * @return {string}
 */
proto.RouterMessage.Request.prototype.getBody_asB64 = function() {
  return /** @type {string} */ (jspb.Message.bytesAsB64(
      this.getBody()));
};


/**
 * optional bytes body = 3;
 * Note that Uint8Array is not supported on all browsers.
 * @see http://caniuse.com/Uint8Array
 * This is a type-conversion wrapper around `getBody()`
 * @return {!Uint8Array}
 */
proto.RouterMessage.Request.prototype.getBody_asU8 = function() {
  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
      this.getBody()));
};


/** @param {!(string|Uint8Array)} value */
proto.RouterMessage.Request.prototype.setBody = function(value) {
  jspb.Message.setProto3BytesField(this, 3, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.RouterMessage.Response = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.RouterMessage.Response, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.RouterMessage.Response.displayName = 'proto.RouterMessage.Response';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.RouterMessage.Response.prototype.toObject = function(opt_includeInstance) {
  return proto.RouterMessage.Response.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.RouterMessage.Response} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.RouterMessage.Response.toObject = function(includeInstance, msg) {
  var f, obj = {
    requestId: jspb.Message.getFieldWithDefault(msg, 1, 0),
    body: msg.getBody_asB64(),
    ok: jspb.Message.getFieldWithDefault(msg, 3, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.RouterMessage.Response}
 */
proto.RouterMessage.Response.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.RouterMessage.Response;
  return proto.RouterMessage.Response.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.RouterMessage.Response} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.RouterMessage.Response}
 */
proto.RouterMessage.Response.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setRequestId(value);
      break;
    case 2:
      var value = /** @type {!Uint8Array} */ (reader.readBytes());
      msg.setBody(value);
      break;
    case 3:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setOk(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.RouterMessage.Response.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.RouterMessage.Response.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.RouterMessage.Response} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.RouterMessage.Response.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getRequestId();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = message.getBody_asU8();
  if (f.length > 0) {
    writer.writeBytes(
      2,
      f
    );
  }
  f = message.getOk();
  if (f) {
    writer.writeBool(
      3,
      f
    );
  }
};


/**
 * optional uint32 request_id = 1;
 * @return {number}
 */
proto.RouterMessage.Response.prototype.getRequestId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.RouterMessage.Response.prototype.setRequestId = function(value) {
  jspb.Message.setProto3IntField(this, 1, value);
};


/**
 * optional bytes body = 2;
 * @return {!(string|Uint8Array)}
 */
proto.RouterMessage.Response.prototype.getBody = function() {
  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * optional bytes body = 2;
 * This is a type-conversion wrapper around `getBody()`
 * @return {string}
 */
proto.RouterMessage.Response.prototype.getBody_asB64 = function() {
  return /** @type {string} */ (jspb.Message.bytesAsB64(
      this.getBody()));
};


/**
 * optional bytes body = 2;
 * Note that Uint8Array is not supported on all browsers.
 * @see http://caniuse.com/Uint8Array
 * This is a type-conversion wrapper around `getBody()`
 * @return {!Uint8Array}
 */
proto.RouterMessage.Response.prototype.getBody_asU8 = function() {
  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
      this.getBody()));
};


/** @param {!(string|Uint8Array)} value */
proto.RouterMessage.Response.prototype.setBody = function(value) {
  jspb.Message.setProto3BytesField(this, 2, value);
};


/**
 * optional bool ok = 3;
 * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
 * You should avoid comparisons like {@code val === true/false} in those cases.
 * @return {boolean}
 */
proto.RouterMessage.Response.prototype.getOk = function() {
  return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 3, false));
};


/** @param {boolean} value */
proto.RouterMessage.Response.prototype.setOk = function(value) {
  jspb.Message.setProto3BooleanField(this, 3, value);
};


/**
 * optional Notification notification = 2;
 * @return {?proto.RouterMessage.Notification}
 */
proto.RouterMessage.prototype.getNotification = function() {
  return /** @type{?proto.RouterMessage.Notification} */ (
    jspb.Message.getWrapperField(this, proto.RouterMessage.Notification, 2));
};


/** @param {?proto.RouterMessage.Notification|undefined} value */
proto.RouterMessage.prototype.setNotification = function(value) {
  jspb.Message.setOneofWrapperField(this, 2, proto.RouterMessage.oneofGroups_[0], value);
};


proto.RouterMessage.prototype.clearNotification = function() {
  this.setNotification(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.RouterMessage.prototype.hasNotification = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional Request request = 3;
 * @return {?proto.RouterMessage.Request}
 */
proto.RouterMessage.prototype.getRequest = function() {
  return /** @type{?proto.RouterMessage.Request} */ (
    jspb.Message.getWrapperField(this, proto.RouterMessage.Request, 3));
};


/** @param {?proto.RouterMessage.Request|undefined} value */
proto.RouterMessage.prototype.setRequest = function(value) {
  jspb.Message.setOneofWrapperField(this, 3, proto.RouterMessage.oneofGroups_[0], value);
};


proto.RouterMessage.prototype.clearRequest = function() {
  this.setRequest(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.RouterMessage.prototype.hasRequest = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional Response response = 4;
 * @return {?proto.RouterMessage.Response}
 */
proto.RouterMessage.prototype.getResponse = function() {
  return /** @type{?proto.RouterMessage.Response} */ (
    jspb.Message.getWrapperField(this, proto.RouterMessage.Response, 4));
};


/** @param {?proto.RouterMessage.Response|undefined} value */
proto.RouterMessage.prototype.setResponse = function(value) {
  jspb.Message.setOneofWrapperField(this, 4, proto.RouterMessage.oneofGroups_[0], value);
};


proto.RouterMessage.prototype.clearResponse = function() {
  this.setResponse(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.RouterMessage.prototype.hasResponse = function() {
  return jspb.Message.getField(this, 4) != null;
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.NetworkMessage = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.NetworkMessage.oneofGroups_);
};
goog.inherits(proto.NetworkMessage, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.NetworkMessage.displayName = 'proto.NetworkMessage';
}
/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.NetworkMessage.oneofGroups_ = [[2,3,4,5,6,7]];

/**
 * @enum {number}
 */
proto.NetworkMessage.VariantCase = {
  VARIANT_NOT_SET: 0,
  STAR_JOIN_REQUEST: 2,
  STAR_JOIN_RESPONSE: 3,
  STAR_JOIN_NOTIFICATION: 4,
  STAR_LEAVE_NOTIFICATION: 5,
  STAR_UNICAST: 6,
  STAR_BROADCAST: 7
};

/**
 * @return {proto.NetworkMessage.VariantCase}
 */
proto.NetworkMessage.prototype.getVariantCase = function() {
  return /** @type {proto.NetworkMessage.VariantCase} */(jspb.Message.computeOneofCase(this, proto.NetworkMessage.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.NetworkMessage.prototype.toObject = function(opt_includeInstance) {
  return proto.NetworkMessage.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.NetworkMessage} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.toObject = function(includeInstance, msg) {
  var f, obj = {
    networkId: jspb.Message.getFieldWithDefault(msg, 1, ""),
    starJoinRequest: (f = msg.getStarJoinRequest()) && proto.NetworkMessage.StarJoinRequest.toObject(includeInstance, f),
    starJoinResponse: (f = msg.getStarJoinResponse()) && proto.NetworkMessage.StarJoinResponse.toObject(includeInstance, f),
    starJoinNotification: (f = msg.getStarJoinNotification()) && proto.NetworkMessage.StarJoinNotification.toObject(includeInstance, f),
    starLeaveNotification: (f = msg.getStarLeaveNotification()) && proto.NetworkMessage.StarLeaveNotification.toObject(includeInstance, f),
    starUnicast: (f = msg.getStarUnicast()) && proto.NetworkMessage.StarUnicast.toObject(includeInstance, f),
    starBroadcast: (f = msg.getStarBroadcast()) && proto.NetworkMessage.StarBroadcast.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.NetworkMessage}
 */
proto.NetworkMessage.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.NetworkMessage;
  return proto.NetworkMessage.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.NetworkMessage} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.NetworkMessage}
 */
proto.NetworkMessage.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setNetworkId(value);
      break;
    case 2:
      var value = new proto.NetworkMessage.StarJoinRequest;
      reader.readMessage(value,proto.NetworkMessage.StarJoinRequest.deserializeBinaryFromReader);
      msg.setStarJoinRequest(value);
      break;
    case 3:
      var value = new proto.NetworkMessage.StarJoinResponse;
      reader.readMessage(value,proto.NetworkMessage.StarJoinResponse.deserializeBinaryFromReader);
      msg.setStarJoinResponse(value);
      break;
    case 4:
      var value = new proto.NetworkMessage.StarJoinNotification;
      reader.readMessage(value,proto.NetworkMessage.StarJoinNotification.deserializeBinaryFromReader);
      msg.setStarJoinNotification(value);
      break;
    case 5:
      var value = new proto.NetworkMessage.StarLeaveNotification;
      reader.readMessage(value,proto.NetworkMessage.StarLeaveNotification.deserializeBinaryFromReader);
      msg.setStarLeaveNotification(value);
      break;
    case 6:
      var value = new proto.NetworkMessage.StarUnicast;
      reader.readMessage(value,proto.NetworkMessage.StarUnicast.deserializeBinaryFromReader);
      msg.setStarUnicast(value);
      break;
    case 7:
      var value = new proto.NetworkMessage.StarBroadcast;
      reader.readMessage(value,proto.NetworkMessage.StarBroadcast.deserializeBinaryFromReader);
      msg.setStarBroadcast(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.NetworkMessage.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.NetworkMessage.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.NetworkMessage} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getNetworkId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getStarJoinRequest();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.NetworkMessage.StarJoinRequest.serializeBinaryToWriter
    );
  }
  f = message.getStarJoinResponse();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.NetworkMessage.StarJoinResponse.serializeBinaryToWriter
    );
  }
  f = message.getStarJoinNotification();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.NetworkMessage.StarJoinNotification.serializeBinaryToWriter
    );
  }
  f = message.getStarLeaveNotification();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.NetworkMessage.StarLeaveNotification.serializeBinaryToWriter
    );
  }
  f = message.getStarUnicast();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.NetworkMessage.StarUnicast.serializeBinaryToWriter
    );
  }
  f = message.getStarBroadcast();
  if (f != null) {
    writer.writeMessage(
      7,
      f,
      proto.NetworkMessage.StarBroadcast.serializeBinaryToWriter
    );
  }
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.NetworkMessage.StarJoinRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.NetworkMessage.StarJoinRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.NetworkMessage.StarJoinRequest.displayName = 'proto.NetworkMessage.StarJoinRequest';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.NetworkMessage.StarJoinRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.NetworkMessage.StarJoinRequest.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.NetworkMessage.StarJoinRequest} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarJoinRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    senderId: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.NetworkMessage.StarJoinRequest}
 */
proto.NetworkMessage.StarJoinRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.NetworkMessage.StarJoinRequest;
  return proto.NetworkMessage.StarJoinRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.NetworkMessage.StarJoinRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.NetworkMessage.StarJoinRequest}
 */
proto.NetworkMessage.StarJoinRequest.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setSenderId(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.NetworkMessage.StarJoinRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.NetworkMessage.StarJoinRequest.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.NetworkMessage.StarJoinRequest} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarJoinRequest.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getSenderId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string sender_id = 1;
 * @return {string}
 */
proto.NetworkMessage.StarJoinRequest.prototype.getSenderId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.NetworkMessage.StarJoinRequest.prototype.setSenderId = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.NetworkMessage.StarJoinResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.NetworkMessage.StarJoinResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.NetworkMessage.StarJoinResponse.displayName = 'proto.NetworkMessage.StarJoinResponse';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.NetworkMessage.StarJoinResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.NetworkMessage.StarJoinResponse.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.NetworkMessage.StarJoinResponse} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarJoinResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    memberIdentitiesByIdMap: (f = msg.getMemberIdentitiesByIdMap()) ? f.toObject(includeInstance, proto.PeerIdentity.toObject) : []
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.NetworkMessage.StarJoinResponse}
 */
proto.NetworkMessage.StarJoinResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.NetworkMessage.StarJoinResponse;
  return proto.NetworkMessage.StarJoinResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.NetworkMessage.StarJoinResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.NetworkMessage.StarJoinResponse}
 */
proto.NetworkMessage.StarJoinResponse.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = msg.getMemberIdentitiesByIdMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.PeerIdentity.deserializeBinaryFromReader);
         });
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.NetworkMessage.StarJoinResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.NetworkMessage.StarJoinResponse.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.NetworkMessage.StarJoinResponse} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarJoinResponse.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getMemberIdentitiesByIdMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(1, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.PeerIdentity.serializeBinaryToWriter);
  }
};


/**
 * map<string, PeerIdentity> member_identities_by_id = 1;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<string,!proto.PeerIdentity>}
 */
proto.NetworkMessage.StarJoinResponse.prototype.getMemberIdentitiesByIdMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<string,!proto.PeerIdentity>} */ (
      jspb.Message.getMapField(this, 1, opt_noLazyCreate,
      proto.PeerIdentity));
};


proto.NetworkMessage.StarJoinResponse.prototype.clearMemberIdentitiesByIdMap = function() {
  this.getMemberIdentitiesByIdMap().clear();
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.NetworkMessage.StarJoinNotification = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.NetworkMessage.StarJoinNotification, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.NetworkMessage.StarJoinNotification.displayName = 'proto.NetworkMessage.StarJoinNotification';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.NetworkMessage.StarJoinNotification.prototype.toObject = function(opt_includeInstance) {
  return proto.NetworkMessage.StarJoinNotification.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.NetworkMessage.StarJoinNotification} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarJoinNotification.toObject = function(includeInstance, msg) {
  var f, obj = {
    memberId: jspb.Message.getFieldWithDefault(msg, 1, ""),
    memberIdentity: (f = msg.getMemberIdentity()) && proto.PeerIdentity.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.NetworkMessage.StarJoinNotification}
 */
proto.NetworkMessage.StarJoinNotification.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.NetworkMessage.StarJoinNotification;
  return proto.NetworkMessage.StarJoinNotification.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.NetworkMessage.StarJoinNotification} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.NetworkMessage.StarJoinNotification}
 */
proto.NetworkMessage.StarJoinNotification.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setMemberId(value);
      break;
    case 2:
      var value = new proto.PeerIdentity;
      reader.readMessage(value,proto.PeerIdentity.deserializeBinaryFromReader);
      msg.setMemberIdentity(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.NetworkMessage.StarJoinNotification.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.NetworkMessage.StarJoinNotification.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.NetworkMessage.StarJoinNotification} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarJoinNotification.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getMemberId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getMemberIdentity();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.PeerIdentity.serializeBinaryToWriter
    );
  }
};


/**
 * optional string member_id = 1;
 * @return {string}
 */
proto.NetworkMessage.StarJoinNotification.prototype.getMemberId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.NetworkMessage.StarJoinNotification.prototype.setMemberId = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional PeerIdentity member_identity = 2;
 * @return {?proto.PeerIdentity}
 */
proto.NetworkMessage.StarJoinNotification.prototype.getMemberIdentity = function() {
  return /** @type{?proto.PeerIdentity} */ (
    jspb.Message.getWrapperField(this, proto.PeerIdentity, 2));
};


/** @param {?proto.PeerIdentity|undefined} value */
proto.NetworkMessage.StarJoinNotification.prototype.setMemberIdentity = function(value) {
  jspb.Message.setWrapperField(this, 2, value);
};


proto.NetworkMessage.StarJoinNotification.prototype.clearMemberIdentity = function() {
  this.setMemberIdentity(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.NetworkMessage.StarJoinNotification.prototype.hasMemberIdentity = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.NetworkMessage.StarLeaveNotification = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.NetworkMessage.StarLeaveNotification, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.NetworkMessage.StarLeaveNotification.displayName = 'proto.NetworkMessage.StarLeaveNotification';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.NetworkMessage.StarLeaveNotification.prototype.toObject = function(opt_includeInstance) {
  return proto.NetworkMessage.StarLeaveNotification.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.NetworkMessage.StarLeaveNotification} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarLeaveNotification.toObject = function(includeInstance, msg) {
  var f, obj = {
    memberId: jspb.Message.getFieldWithDefault(msg, 1, ""),
    connectionLost: jspb.Message.getFieldWithDefault(msg, 2, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.NetworkMessage.StarLeaveNotification}
 */
proto.NetworkMessage.StarLeaveNotification.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.NetworkMessage.StarLeaveNotification;
  return proto.NetworkMessage.StarLeaveNotification.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.NetworkMessage.StarLeaveNotification} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.NetworkMessage.StarLeaveNotification}
 */
proto.NetworkMessage.StarLeaveNotification.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setMemberId(value);
      break;
    case 2:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setConnectionLost(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.NetworkMessage.StarLeaveNotification.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.NetworkMessage.StarLeaveNotification.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.NetworkMessage.StarLeaveNotification} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarLeaveNotification.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getMemberId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getConnectionLost();
  if (f) {
    writer.writeBool(
      2,
      f
    );
  }
};


/**
 * optional string member_id = 1;
 * @return {string}
 */
proto.NetworkMessage.StarLeaveNotification.prototype.getMemberId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.NetworkMessage.StarLeaveNotification.prototype.setMemberId = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional bool connection_lost = 2;
 * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
 * You should avoid comparisons like {@code val === true/false} in those cases.
 * @return {boolean}
 */
proto.NetworkMessage.StarLeaveNotification.prototype.getConnectionLost = function() {
  return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 2, false));
};


/** @param {boolean} value */
proto.NetworkMessage.StarLeaveNotification.prototype.setConnectionLost = function(value) {
  jspb.Message.setProto3BooleanField(this, 2, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.NetworkMessage.StarUnicast = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.NetworkMessage.StarUnicast, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.NetworkMessage.StarUnicast.displayName = 'proto.NetworkMessage.StarUnicast';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.NetworkMessage.StarUnicast.prototype.toObject = function(opt_includeInstance) {
  return proto.NetworkMessage.StarUnicast.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.NetworkMessage.StarUnicast} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarUnicast.toObject = function(includeInstance, msg) {
  var f, obj = {
    senderId: jspb.Message.getFieldWithDefault(msg, 1, ""),
    recipientId: jspb.Message.getFieldWithDefault(msg, 2, ""),
    body: msg.getBody_asB64()
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.NetworkMessage.StarUnicast}
 */
proto.NetworkMessage.StarUnicast.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.NetworkMessage.StarUnicast;
  return proto.NetworkMessage.StarUnicast.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.NetworkMessage.StarUnicast} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.NetworkMessage.StarUnicast}
 */
proto.NetworkMessage.StarUnicast.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setSenderId(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setRecipientId(value);
      break;
    case 3:
      var value = /** @type {!Uint8Array} */ (reader.readBytes());
      msg.setBody(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.NetworkMessage.StarUnicast.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.NetworkMessage.StarUnicast.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.NetworkMessage.StarUnicast} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarUnicast.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getSenderId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getRecipientId();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
  f = message.getBody_asU8();
  if (f.length > 0) {
    writer.writeBytes(
      3,
      f
    );
  }
};


/**
 * optional string sender_id = 1;
 * @return {string}
 */
proto.NetworkMessage.StarUnicast.prototype.getSenderId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.NetworkMessage.StarUnicast.prototype.setSenderId = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional string recipient_id = 2;
 * @return {string}
 */
proto.NetworkMessage.StarUnicast.prototype.getRecipientId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/** @param {string} value */
proto.NetworkMessage.StarUnicast.prototype.setRecipientId = function(value) {
  jspb.Message.setProto3StringField(this, 2, value);
};


/**
 * optional bytes body = 3;
 * @return {!(string|Uint8Array)}
 */
proto.NetworkMessage.StarUnicast.prototype.getBody = function() {
  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/**
 * optional bytes body = 3;
 * This is a type-conversion wrapper around `getBody()`
 * @return {string}
 */
proto.NetworkMessage.StarUnicast.prototype.getBody_asB64 = function() {
  return /** @type {string} */ (jspb.Message.bytesAsB64(
      this.getBody()));
};


/**
 * optional bytes body = 3;
 * Note that Uint8Array is not supported on all browsers.
 * @see http://caniuse.com/Uint8Array
 * This is a type-conversion wrapper around `getBody()`
 * @return {!Uint8Array}
 */
proto.NetworkMessage.StarUnicast.prototype.getBody_asU8 = function() {
  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
      this.getBody()));
};


/** @param {!(string|Uint8Array)} value */
proto.NetworkMessage.StarUnicast.prototype.setBody = function(value) {
  jspb.Message.setProto3BytesField(this, 3, value);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.NetworkMessage.StarBroadcast = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.NetworkMessage.StarBroadcast, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.NetworkMessage.StarBroadcast.displayName = 'proto.NetworkMessage.StarBroadcast';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.NetworkMessage.StarBroadcast.prototype.toObject = function(opt_includeInstance) {
  return proto.NetworkMessage.StarBroadcast.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.NetworkMessage.StarBroadcast} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarBroadcast.toObject = function(includeInstance, msg) {
  var f, obj = {
    senderId: jspb.Message.getFieldWithDefault(msg, 1, ""),
    body: msg.getBody_asB64()
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.NetworkMessage.StarBroadcast}
 */
proto.NetworkMessage.StarBroadcast.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.NetworkMessage.StarBroadcast;
  return proto.NetworkMessage.StarBroadcast.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.NetworkMessage.StarBroadcast} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.NetworkMessage.StarBroadcast}
 */
proto.NetworkMessage.StarBroadcast.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setSenderId(value);
      break;
    case 2:
      var value = /** @type {!Uint8Array} */ (reader.readBytes());
      msg.setBody(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.NetworkMessage.StarBroadcast.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.NetworkMessage.StarBroadcast.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.NetworkMessage.StarBroadcast} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.NetworkMessage.StarBroadcast.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getSenderId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getBody_asU8();
  if (f.length > 0) {
    writer.writeBytes(
      2,
      f
    );
  }
};


/**
 * optional string sender_id = 1;
 * @return {string}
 */
proto.NetworkMessage.StarBroadcast.prototype.getSenderId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.NetworkMessage.StarBroadcast.prototype.setSenderId = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional bytes body = 2;
 * @return {!(string|Uint8Array)}
 */
proto.NetworkMessage.StarBroadcast.prototype.getBody = function() {
  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * optional bytes body = 2;
 * This is a type-conversion wrapper around `getBody()`
 * @return {string}
 */
proto.NetworkMessage.StarBroadcast.prototype.getBody_asB64 = function() {
  return /** @type {string} */ (jspb.Message.bytesAsB64(
      this.getBody()));
};


/**
 * optional bytes body = 2;
 * Note that Uint8Array is not supported on all browsers.
 * @see http://caniuse.com/Uint8Array
 * This is a type-conversion wrapper around `getBody()`
 * @return {!Uint8Array}
 */
proto.NetworkMessage.StarBroadcast.prototype.getBody_asU8 = function() {
  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
      this.getBody()));
};


/** @param {!(string|Uint8Array)} value */
proto.NetworkMessage.StarBroadcast.prototype.setBody = function(value) {
  jspb.Message.setProto3BytesField(this, 2, value);
};


/**
 * optional string network_id = 1;
 * @return {string}
 */
proto.NetworkMessage.prototype.getNetworkId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.NetworkMessage.prototype.setNetworkId = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional StarJoinRequest star_join_request = 2;
 * @return {?proto.NetworkMessage.StarJoinRequest}
 */
proto.NetworkMessage.prototype.getStarJoinRequest = function() {
  return /** @type{?proto.NetworkMessage.StarJoinRequest} */ (
    jspb.Message.getWrapperField(this, proto.NetworkMessage.StarJoinRequest, 2));
};


/** @param {?proto.NetworkMessage.StarJoinRequest|undefined} value */
proto.NetworkMessage.prototype.setStarJoinRequest = function(value) {
  jspb.Message.setOneofWrapperField(this, 2, proto.NetworkMessage.oneofGroups_[0], value);
};


proto.NetworkMessage.prototype.clearStarJoinRequest = function() {
  this.setStarJoinRequest(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.NetworkMessage.prototype.hasStarJoinRequest = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional StarJoinResponse star_join_response = 3;
 * @return {?proto.NetworkMessage.StarJoinResponse}
 */
proto.NetworkMessage.prototype.getStarJoinResponse = function() {
  return /** @type{?proto.NetworkMessage.StarJoinResponse} */ (
    jspb.Message.getWrapperField(this, proto.NetworkMessage.StarJoinResponse, 3));
};


/** @param {?proto.NetworkMessage.StarJoinResponse|undefined} value */
proto.NetworkMessage.prototype.setStarJoinResponse = function(value) {
  jspb.Message.setOneofWrapperField(this, 3, proto.NetworkMessage.oneofGroups_[0], value);
};


proto.NetworkMessage.prototype.clearStarJoinResponse = function() {
  this.setStarJoinResponse(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.NetworkMessage.prototype.hasStarJoinResponse = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional StarJoinNotification star_join_notification = 4;
 * @return {?proto.NetworkMessage.StarJoinNotification}
 */
proto.NetworkMessage.prototype.getStarJoinNotification = function() {
  return /** @type{?proto.NetworkMessage.StarJoinNotification} */ (
    jspb.Message.getWrapperField(this, proto.NetworkMessage.StarJoinNotification, 4));
};


/** @param {?proto.NetworkMessage.StarJoinNotification|undefined} value */
proto.NetworkMessage.prototype.setStarJoinNotification = function(value) {
  jspb.Message.setOneofWrapperField(this, 4, proto.NetworkMessage.oneofGroups_[0], value);
};


proto.NetworkMessage.prototype.clearStarJoinNotification = function() {
  this.setStarJoinNotification(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.NetworkMessage.prototype.hasStarJoinNotification = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional StarLeaveNotification star_leave_notification = 5;
 * @return {?proto.NetworkMessage.StarLeaveNotification}
 */
proto.NetworkMessage.prototype.getStarLeaveNotification = function() {
  return /** @type{?proto.NetworkMessage.StarLeaveNotification} */ (
    jspb.Message.getWrapperField(this, proto.NetworkMessage.StarLeaveNotification, 5));
};


/** @param {?proto.NetworkMessage.StarLeaveNotification|undefined} value */
proto.NetworkMessage.prototype.setStarLeaveNotification = function(value) {
  jspb.Message.setOneofWrapperField(this, 5, proto.NetworkMessage.oneofGroups_[0], value);
};


proto.NetworkMessage.prototype.clearStarLeaveNotification = function() {
  this.setStarLeaveNotification(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.NetworkMessage.prototype.hasStarLeaveNotification = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional StarUnicast star_unicast = 6;
 * @return {?proto.NetworkMessage.StarUnicast}
 */
proto.NetworkMessage.prototype.getStarUnicast = function() {
  return /** @type{?proto.NetworkMessage.StarUnicast} */ (
    jspb.Message.getWrapperField(this, proto.NetworkMessage.StarUnicast, 6));
};


/** @param {?proto.NetworkMessage.StarUnicast|undefined} value */
proto.NetworkMessage.prototype.setStarUnicast = function(value) {
  jspb.Message.setOneofWrapperField(this, 6, proto.NetworkMessage.oneofGroups_[0], value);
};


proto.NetworkMessage.prototype.clearStarUnicast = function() {
  this.setStarUnicast(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.NetworkMessage.prototype.hasStarUnicast = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional StarBroadcast star_broadcast = 7;
 * @return {?proto.NetworkMessage.StarBroadcast}
 */
proto.NetworkMessage.prototype.getStarBroadcast = function() {
  return /** @type{?proto.NetworkMessage.StarBroadcast} */ (
    jspb.Message.getWrapperField(this, proto.NetworkMessage.StarBroadcast, 7));
};


/** @param {?proto.NetworkMessage.StarBroadcast|undefined} value */
proto.NetworkMessage.prototype.setStarBroadcast = function(value) {
  jspb.Message.setOneofWrapperField(this, 7, proto.NetworkMessage.oneofGroups_[0], value);
};


proto.NetworkMessage.prototype.clearStarBroadcast = function() {
  this.setStarBroadcast(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.NetworkMessage.prototype.hasStarBroadcast = function() {
  return jspb.Message.getField(this, 7) != null;
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.PeerIdentity = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.PeerIdentity, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.PeerIdentity.displayName = 'proto.PeerIdentity';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.PeerIdentity.prototype.toObject = function(opt_includeInstance) {
  return proto.PeerIdentity.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.PeerIdentity} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PeerIdentity.toObject = function(includeInstance, msg) {
  var f, obj = {
    login: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.PeerIdentity}
 */
proto.PeerIdentity.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.PeerIdentity;
  return proto.PeerIdentity.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.PeerIdentity} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.PeerIdentity}
 */
proto.PeerIdentity.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setLogin(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.PeerIdentity.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.PeerIdentity.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.PeerIdentity} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.PeerIdentity.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getLogin();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string login = 1;
 * @return {string}
 */
proto.PeerIdentity.prototype.getLogin = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.PeerIdentity.prototype.setLogin = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


goog.object.extend(exports, proto);
