From 23d664384900eb65e44910def45f04be996fbba1 Mon Sep 17 00:00:00 2001 From: dcodeIO Date: Fri, 2 Dec 2016 12:23:35 +0100 Subject: [PATCH] Refactor runtime util into separate file, reader/writer uses runtime util, fix packable float/double see #513 --- dist/protobuf.js | 263 +++++++++++++++++---------------------- dist/protobuf.js.map | 2 +- dist/protobuf.min.js | 6 +- dist/protobuf.min.js.gz | Bin 15771 -> 15763 bytes dist/protobuf.min.js.map | 2 +- runtime.js | 31 +---- src/reader.js | 2 +- src/types.js | 4 +- src/util.js | 72 +---------- src/util/runtime.js | 72 +++++++++++ src/writer.js | 2 +- 11 files changed, 203 insertions(+), 253 deletions(-) create mode 100644 src/util/runtime.js diff --git a/dist/protobuf.js b/dist/protobuf.js index 8b9e3a2fd..6f810d7f4 100644 --- a/dist/protobuf.js +++ b/dist/protobuf.js @@ -1,6 +1,6 @@ /*! * protobuf.js v6.0.1 (c) 2016 Daniel Wirtz - * Compiled Thu, 01 Dec 2016 15:54:29 UTC + * Compiled Fri, 02 Dec 2016 11:19:57 UTC * Licensed under the Apache License, Version 2.0 * see: https://github.com/dcodeIO/protobuf.js for details */ @@ -443,7 +443,7 @@ decoder.generate = function generate(mtype) { var encoder = exports; var Enum = require(5), - Writer = require(25), + Writer = require(26), types = require(20), util = require(21); @@ -622,7 +622,7 @@ encoder.generate = function generate(mtype) { /* eslint-enable no-unexpected-multiline */ }; -},{"20":20,"21":21,"25":25,"5":5}],5:[function(require,module,exports){ +},{"20":20,"21":21,"26":26,"5":5}],5:[function(require,module,exports){ "use strict"; module.exports = Enum; @@ -2706,7 +2706,7 @@ module.exports = Reader; Reader.BufferReader = BufferReader; -var util = require(21), +var util = require(24), ieee754 = require(1); var LongBits = util.LongBits, Long = util.Long; @@ -3215,7 +3215,7 @@ BufferReaderPrototype.finish = function finish_buffer(buffer) { return remain; }; -},{"1":1,"21":21}],16:[function(require,module,exports){ +},{"1":1,"24":24}],16:[function(require,module,exports){ "use strict"; module.exports = Root; @@ -3871,10 +3871,10 @@ var Enum = require(5), Service = require(17), Prototype = require(14), Reader = require(15), - Writer = require(25), + Writer = require(26), encoder = require(4), decoder = require(3), - Verifier = require(24), + verifier = require(25), inherits = require(7), util = require(21); @@ -4245,14 +4245,15 @@ TypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) { * @returns {?string} `null` if valid, otherwise the reason why it is not */ TypePrototype.verify = function verify(message) { - var verifier = new Verifier(this); - this.verify = codegen.supported - ? verifier.generate() - : verifier.verify; - return this.verify(message); + return (this.verify = codegen.supported + ? verifier.generate(this).eof(this.getFullName() + "$verify", { + types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }) + }) + : verifier.fallback + ).call(this, message); }; -},{"10":10,"12":12,"14":14,"15":15,"17":17,"21":21,"24":24,"25":25,"3":3,"4":4,"5":5,"6":6,"7":7}],20:[function(require,module,exports){ +},{"10":10,"12":12,"14":14,"15":15,"17":17,"21":21,"25":25,"26":26,"3":3,"4":4,"5":5,"6":6,"7":7}],20:[function(require,module,exports){ "use strict"; /** @@ -4370,6 +4371,8 @@ types.mapKey = bake([ * @type {Object.} */ types.packed = bake([ + /* double */ 1, + /* float */ 5, /* int32 */ 0, /* uint32 */ 0, /* sint32 */ 0, @@ -4381,10 +4384,9 @@ types.packed = bake([ /* fixed64 */ 1, /* sfixed64 */ 1, /* bool */ 0 -], 2); +]); },{}],21:[function(require,module,exports){ -(function (global){ "use strict"; /** @@ -4393,37 +4395,8 @@ types.packed = bake([ */ var util = exports; -var LongBits = -util.LongBits = require(23); util.codegen = require(22); -/** - * Whether running within node or not. - * @memberof util - * @type {boolean} - */ -var isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node); - -/** - * Optional buffer class to use. - * If you assign any compatible buffer implementation to this property, the library will use it. - * @type {?Function} - */ -util.Buffer = null; - -if (isNode) - try { util.Buffer = require("buffer").Buffer; } catch (e) {} // eslint-disable-line no-empty - -/** - * Optional Long class to use. - * If you assign any compatible long implementation to this property, the library will use it. - * @type {?Function} - */ -util.Long = global.dcodeIO && global.dcodeIO.Long || null; - -if (!util.Long) - try { util.Long = require("long"); } catch (e) {} // eslint-disable-line no-empty - /** * Tests if the specified value is a string. * @memberof util @@ -4600,46 +4573,6 @@ util.resolvePath = function resolvePath(originPath, importPath, alreadyNormalize return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath; }; -/** - * Converts a number or long to an 8 characters long hash string. - * @param {Long|number} value Value to convert - * @returns {string} Hash - */ -util.longToHash = function longToHash(value) { - return value - ? LongBits.from(value).toHash() - : '\0\0\0\0\0\0\0\0'; -}; - -/** - * Converts an 8 characters long hash string to a long or number. - * @param {string} hash Hash - * @param {boolean} [unsigned=false] Whether unsigned or not - * @returns {Long|number} Original value - */ -util.longFromHash = function longFromHash(hash, unsigned) { - var bits = LongBits.fromHash(hash); - if (util.Long) - return util.Long.fromBits(bits.lo, bits.hi, unsigned); - return bits.toNumber(Boolean(unsigned)); -}; - -/** - * Tests if two possibly long values are not equal. - * @param {number|Long} a First value - * @param {number|Long} b Second value - * @returns {boolean} `true` if not equal - */ -util.longNeq = function longNeq(a, b) { - return typeof a === 'number' - ? typeof b === 'number' - ? a !== b - : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high - : typeof b === 'number' - ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high - : a.low !== b.low || a.high !== b.high; -}; - /** * Merges the properties of the source object into the destination object. * @param {Object} dst Destination object @@ -4680,9 +4613,10 @@ util.newBuffer = function newBuffer(size) { return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0); }; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +// Merge in runtime utility +util.merge(util, require(24)); -},{"22":22,"23":23,"buffer":"buffer","long":"long","undefined":undefined}],22:[function(require,module,exports){ +},{"22":22,"24":24,"undefined":undefined}],22:[function(require,module,exports){ "use strict"; module.exports = codegen; @@ -5007,65 +4941,102 @@ LongBitsPrototype.length = function length() { }; },{"21":21}],24:[function(require,module,exports){ +(function (global){ "use strict"; -module.exports = Verifier; -var Enum = require(5), - Type = require(19), - util = require(21); +var util = exports; + +var LongBits = util.LongBits = require(23); /** - * Constructs a new verifier for the specified message type. - * @classdesc Runtime message verifier using code generation on top of reflection. - * @constructor - * @param {Type} type Message type + * Whether running within node or not. + * @memberof util + * @type {boolean} */ -function Verifier(type) { +var isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node); - /** - * Message type. - * @type {Type} - */ - this.type = type; -} +/** + * Optional buffer class to use. + * If you assign any compatible buffer implementation to this property, the library will use it. + * @type {?Function} + */ +util.Buffer = null; -/** @alias Verifier.prototype */ -var VerifierPrototype = Verifier.prototype; +if (isNode) + try { util.Buffer = require("buffer").Buffer; } catch (e) {} // eslint-disable-line no-empty -// This is here to mimic Type so that fallback functions work without having to bind() -Object.defineProperties(VerifierPrototype, { +/** + * Optional Long class to use. + * If you assign any compatible long implementation to this property, the library will use it. + * @type {?Function} + */ +util.Long = global.dcodeIO && global.dcodeIO.Long || null; - /** - * Fields of this verifier's message type as an array for iteration. - * @name Verifier#fieldsArray - * @type {Field[]} - * @readonly - */ - fieldsArray: { - get: VerifierPrototype.getFieldsArray = function getFieldsArray() { - return this.type.getFieldsArray(); - } - }, +if (!util.Long && isNode) + try { util.Long = require("long"); } catch (e) {} // eslint-disable-line no-empty - /** - * Full name of this verifier's message type. - * @name Verifier#fullName - * @type {string} - * @readonly - */ - fullName: { - get: VerifierPrototype.getFullName = function getFullName() { - return this.type.getFullName(); - } - } -}); +/** + * Converts a number or long to an 8 characters long hash string. + * @param {Long|number} value Value to convert + * @returns {string} Hash + */ +util.longToHash = function longToHash(value) { + return value + ? LongBits.from(value).toHash() + : '\0\0\0\0\0\0\0\0'; +}; + +/** + * Converts an 8 characters long hash string to a long or number. + * @param {string} hash Hash + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {Long|number} Original value + */ +util.longFromHash = function longFromHash(hash, unsigned) { + var bits = LongBits.fromHash(hash); + if (util.Long) + return util.Long.fromBits(bits.lo, bits.hi, unsigned); + return bits.toNumber(Boolean(unsigned)); +}; /** - * Verifies a runtime message of this verifier's message type. + * Tests if two possibly long values are not equal. + * @param {number|Long} a First value + * @param {number|Long} b Second value + * @returns {boolean} `true` if not equal + */ +util.longNeq = function longNeq(a, b) { + return typeof a === 'number' + ? typeof b === 'number' + ? a !== b + : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high + : typeof b === 'number' + ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high + : a.low !== b.low || a.high !== b.high; +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"23":23,"buffer":"buffer","long":"long"}],25:[function(require,module,exports){ +"use strict"; + +/** + * Runtime message verifier using code generation on top of reflection. + * @namespace + */ +var verifier = exports; + +var Enum = require(5), + Type = require(19), + util = require(21); + +/** + * Verifies a runtime message of `this` message type. * @param {Prototype|Object} message Runtime message or plain object to verify * @returns {?string} `null` if valid, otherwise the reason why it is not + * @this {Type} */ -VerifierPrototype.verify = function verify_fallback(message) { +verifier.fallback = function fallback(message) { var fields = this.getFieldsArray(), i = 0; while (i < fields.length) { @@ -5091,12 +5062,13 @@ VerifierPrototype.verify = function verify_fallback(message) { }; /** - * Generates a verifier specific to this verifier's message type. - * @returns {function} Verifier function with an identical signature to {@link Verifier#verify} + * Generates a verifier specific to the specified message type. + * @param {Type} mtype Message type + * @returns {util.CodegenAppender} Unscoped codegen instance */ -VerifierPrototype.generate = function generate() { +verifier.generate = function generate(mtype) { /* eslint-disable no-unexpected-multiline */ - var fields = this.type.getFieldsArray(); + var fields = mtype.getFieldsArray(); var gen = util.codegen("m"); var hasReasonVar = false; @@ -5106,14 +5078,14 @@ VerifierPrototype.generate = function generate() { if (field.required) { gen ("if(m%s===undefined)", prop) - ("return 'missing required field %s in %s'", field.name, this.type.getFullName()); + ("return 'missing required field %s in %s'", field.name, mtype.getFullName()); } else if (field.resolvedType instanceof Enum) { var values = util.toArray(field.resolvedType.values); gen ("switch(m%s){", prop) ("default:") - ("return 'invalid enum value %s = '+m%s+' in %s'", field.name, prop, this.type.getFullName()); + ("return 'invalid enum value %s = '+m%s+' in %s'", field.name, prop, mtype.getFullName()); for (var j = 0, l = values.length; j < l; ++j) gen ("case %d:", values[j]); gen @@ -5123,7 +5095,7 @@ VerifierPrototype.generate = function generate() { if (field.required) gen ("if(!m%s)", prop) - ("return 'missing required field %s in %s'", field.name, this.type.getFullName()); + ("return 'missing required field %s in %s'", field.name, mtype.getFullName()); if (!hasReasonVar) { gen("var r"); hasReasonVar = true; } gen @@ -5132,21 +5104,17 @@ VerifierPrototype.generate = function generate() { } } return gen - ("return null") - - .eof(this.type.getFullName() + "$verify", { - types : fields.map(function(fld) { return fld.resolvedType; }) - }); + ("return null"); /* eslint-enable no-unexpected-multiline */ }; -},{"19":19,"21":21,"5":5}],25:[function(require,module,exports){ +},{"19":19,"21":21,"5":5}],26:[function(require,module,exports){ "use strict"; module.exports = Writer; Writer.BufferWriter = BufferWriter; -var util = require(21), +var util = require(24), ieee754 = require(1); var LongBits = util.LongBits; @@ -5689,7 +5657,7 @@ BufferWriterPrototype.finish = function finish_buffer() { return buf; }; -},{"1":1,"21":21}],26:[function(require,module,exports){ +},{"1":1,"24":24}],27:[function(require,module,exports){ (function (global){ "use strict"; var protobuf = global.protobuf = exports; @@ -5720,12 +5688,13 @@ protobuf.tokenize = require(18); protobuf.parse = require(13); // Serialization -protobuf.Writer = require(25); +protobuf.Writer = require(26); protobuf.BufferWriter = protobuf.Writer.BufferWriter; protobuf.Reader = require(15); protobuf.BufferReader = protobuf.Reader.BufferReader; protobuf.encoder = require(4); protobuf.decoder = require(3); +protobuf.verifier = require(25); // Reflection protobuf.ReflectionObject = require(11); @@ -5750,7 +5719,7 @@ protobuf.util = util; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"2":2,"20":20,"21":21,"25":25,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}]},{},[26]) +},{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"2":2,"20":20,"21":21,"25":25,"26":26,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}]},{},[27]) //# sourceMappingURL=protobuf.js.map diff --git a/dist/protobuf.js.map b/dist/protobuf.js.map index 2a9e71d56..d2029174f 100644 --- a/dist/protobuf.js.map +++ b/dist/protobuf.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/common.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/inherits.js","src/mapfield.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/prototype.js","src/reader.js","src/root.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen.js","src/util/longbits.js","src/verifier.js","src/writer.js","src/index.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACniBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 1,\r\n nBits = -7,\r\n i = isBE ? 0 : (nBytes - 1),\r\n d = isBE ? 1 : -1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n};\r\n\r\nexports.write = function writeIEEE754(buffer, value, offset, isBE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isBE ? (nBytes - 1) : 0,\r\n d = isBE ? -1 : 1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object} google/protobuf/any.proto Any\r\n * @property {Object} google/protobuf/duration.proto Duration\r\n * @property {Object} google/protobuf/empty.proto Empty\r\n * @property {Object} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object} google/protobuf/timestamp.proto Timestamp\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.test(name)) {\r\n name = \"google/protobuf/\" + name + \".proto\";\r\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n }\r\n common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n// - google/protobuf/wrappers.proto\r\n\r\ncommon(\"any\", {\r\n Any: {\r\n fields: {\r\n type_url: {\r\n type: \"string\",\r\n id: 1\r\n },\r\n value: {\r\n type: \"bytes\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n Duration: timeType = {\r\n fields: {\r\n seconds: {\r\n type: \"int64\",\r\n id: 1\r\n },\r\n nanos: {\r\n type: \"int32\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\r\n Struct: {\r\n fields: {\r\n fields: {\r\n keyType: \"string\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n },\r\n Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\r\n }\r\n },\r\n fields: {\r\n nullValue: {\r\n type: \"NullValue\",\r\n id: 1\r\n },\r\n numberValue: {\r\n type: \"double\",\r\n id: 2\r\n },\r\n stringValue: {\r\n type: \"string\",\r\n id: 3\r\n },\r\n boolValue: {\r\n type: \"bool\",\r\n id: 4\r\n },\r\n structValue: {\r\n type: \"Struct\",\r\n id: 5\r\n },\r\n listValue: {\r\n type: \"ListValue\",\r\n id: 6\r\n }\r\n }\r\n },\r\n NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\r\n },\r\n ListValue: {\r\n fields: {\r\n values: {\r\n rule: \"repeated\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\n\r\n/**\r\n * Wire format decoder using code generation on top of reflection.\r\n * @namespace\r\n */\r\nvar decoder = exports;\r\n\r\nvar Enum = require(5),\r\n Reader = require(15),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Decodes a message of `this` message's type.\r\n * @param {Reader} reader Reader to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Populated runtime message\r\n * @this Type\r\n */\r\ndecoder.fallback = function fallback(reader, length) {\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = reader instanceof Reader ? reader : Reader(reader),\r\n limit = length === undefined ? reader.len : reader.pos + length,\r\n message = new (this.getCtor())();\r\n while (reader.pos < limit) {\r\n var tag = reader.tag(),\r\n field = fields[tag.id].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type;\r\n \r\n // Known fields\r\n if (field) {\r\n\r\n // Map fields\r\n if (field.map) {\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType,\r\n length = reader.uint32();\r\n var map = message[field.name] = {};\r\n if (length) {\r\n length += reader.pos;\r\n var ks = [], vs = [];\r\n while (reader.pos < length) {\r\n if (reader.tag().id === 1)\r\n ks[ks.length] = reader[keyType]();\r\n else if (types.basic[type] !== undefined)\r\n vs[vs.length] = reader[type]();\r\n else\r\n vs[vs.length] = field.resolvedType.decode(reader, reader.uint32());\r\n }\r\n for (var i = 0; i < ks.length; ++i)\r\n map[typeof ks[i] === 'object' ? util.longToHash(ks[i]) : ks[i]] = vs[i];\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n var values = message[field.name] || (message[field.name] = []);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined && tag.wireType === 2) {\r\n var plimit = reader.uint32() + reader.pos;\r\n while (reader.pos < plimit)\r\n values[values.length] = reader[type]();\r\n\r\n // Non-packed\r\n } else if (types.basic[type] !== undefined)\r\n values[values.length] = reader[type]();\r\n else\r\n values[values.length] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Non-repeated\r\n } else if (types.basic[type] !== undefined)\r\n message[field.name] = reader[type]();\r\n else\r\n message[field.name] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Unknown fields\r\n } else\r\n reader.skipType(tag.wireType);\r\n }\r\n return message;\r\n /* eslint-enable no-invalid-this, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {util.CodegenAppender} Unscoped codegen instance\r\n */\r\ndecoder.generate = function generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray(); \r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())\")\r\n (\"while(r.pos} [values] Enum values as an object, by name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nObject.defineProperties(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: EnumPrototype.getValuesById = function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\r\n };\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (this.values[name] !== undefined)\r\n throw Error('duplicate name \"' + name + '\" in ' + this);\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error('\"' + name + '\" is not a name of ' + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(19),\r\n Enum = require(5),\r\n MapField = require(8),\r\n types = require(20),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string} [rule=optional] Field rule\r\n * @param {string} [extend] Extended type if different from parent\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (extend !== undefined && !util.isString(extend))\r\n throw _TypeError(\"extend\");\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw _TypeError(\"rule\", \"a valid rule string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== 'optional' ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {?Type}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : false;\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {?(Type|Enum)}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {?Field}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {?Field}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nObject.defineProperties(FieldPrototype, {\r\n\r\n /**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n packed: {\r\n get: FieldPrototype.isPacked = function() {\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n if (json.keyType !== undefined)\r\n return MapField.fromJSON(name, json);\r\n return new Field(name, json.id, json.type, json.role, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n rule : this.rule !== \"optional\" && this.rule || undefined,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n var resolved = this.parent.lookup(this.type);\r\n if (resolved instanceof Type) {\r\n this.resolvedType = resolved;\r\n typeDefault = null;\r\n } else if (resolved instanceof Enum) {\r\n this.resolvedType = resolved;\r\n typeDefault = 0;\r\n } else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved determine the default value\r\n var optionDefault;\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else if (this.options && (optionDefault = this.options['default']) !== undefined) // eslint-disable-line dot-notation\r\n this.defaultValue = optionDefault;\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long)\r\n this.defaultValue = util.Long.fromValue(this.defaultValue);\r\n \r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Converts a field value to JSON using the specified options. Note that this method does not account for repeated fields and must be called once for each repeated element instead.\r\n * @param {*} value Field value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {*} Converted value\r\n * @see {@link Prototype#asJSON}\r\n */\r\nFieldPrototype.jsonConvert = function(value, options) {\r\n if (options) {\r\n if (this.resolvedType instanceof Enum && options['enum'] === String) // eslint-disable-line dot-notation\r\n return this.resolvedType.getValuesById()[value];\r\n else if (this.long && options.long)\r\n return options.long === Number\r\n ? typeof value === 'number'\r\n ? value\r\n : util.Long.fromValue(value).toNumber()\r\n : util.Long.fromValue(value, this.type.charAt(0) === 'u').toString();\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = inherits;\r\n\r\nvar Prototype = require(14),\r\n Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Options passed to {@link inherits}, modifying its behavior.\r\n * @typedef InheritanceOptions\r\n * @type {Object}\r\n * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor\r\n * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type\r\n */\r\n\r\n/**\r\n * Inherits a custom class from the message prototype of the specified message type.\r\n * @param {Function} clazz Inheriting class\r\n * @param {Type} type Inherited message type\r\n * @param {InheritanceOptions} [options] Inheritance options\r\n * @returns {Prototype} Created prototype\r\n */\r\nfunction inherits(clazz, type, options) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"clazz\", \"a function\");\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n if (!options)\r\n options = {};\r\n\r\n /**\r\n * This is not an actual type but stands as a reference for any constructor of a custom message class that you pass to the library.\r\n * @name Class\r\n * @extends Prototype\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set on the message\r\n * @see {@link inherits}\r\n */\r\n\r\n var classProperties = {\r\n \r\n /**\r\n * Reference to the reflected type.\r\n * @name Class.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n if (!options.noStatics)\r\n util.merge(classProperties, {\r\n\r\n /**\r\n * Encodes a message of this type to a buffer.\r\n * @name Class.encode\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Encodes a message of this type preceeded by its length as a varint to a buffer.\r\n * @name Class.encodeDelimited\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type from a buffer.\r\n * @name Class.decode\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decode: {\r\n value: function decode(buffer) {\r\n return this.$type.decode(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type preceeded by its length as a varint from a buffer.\r\n * @name Class.decodeDelimited\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decodeDelimited: {\r\n value: function decodeDelimited(buffer) {\r\n return this.$type.decodeDelimited(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Verifies a message of this type.\r\n * @name Class.verify\r\n * @function\r\n * @param {Prototype|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n verify: {\r\n value: function verify(message) {\r\n return this.$type.verify(message);\r\n }\r\n }\r\n\r\n }, true);\r\n\r\n Object.defineProperties(clazz, classProperties);\r\n var prototype = inherits.defineProperties(new Prototype(), type);\r\n clazz.prototype = prototype;\r\n prototype.constructor = clazz;\r\n\r\n if (!options.noRegister)\r\n type.setCtor(clazz);\r\n\r\n return prototype;\r\n}\r\n\r\n/**\r\n * Defines the reflected type's default values and virtual oneof properties on the specified prototype.\r\n * @memberof inherits\r\n * @param {Prototype} prototype Prototype to define properties upon\r\n * @param {Type} type Reflected message type\r\n * @returns {Prototype} The specified prototype\r\n */\r\ninherits.defineProperties = function defineProperties(prototype, type) {\r\n\r\n var prototypeProperties = {\r\n\r\n /**\r\n * Reference to the reflected type.\r\n * @name Prototype#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n // Initialize default values\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n if (!util.isObject(field.defaultValue))\r\n // objects are mutable (i.e. would modify the array on the prototype, not the instance)\r\n prototype[field.name] = field.defaultValue;\r\n });\r\n\r\n // Define each oneof with a non-enumerable getter and setter for the present field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n prototypeProperties[oneof.resolve().name] = {\r\n get: function() {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n var field = oneof.parent.fields[keys[i]];\r\n if (this[keys[i]] != field.defaultValue) // eslint-disable-line eqeqeq\r\n return keys[i];\r\n }\r\n return undefined;\r\n },\r\n set: function(value) {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperties(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(6);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nvar Enum = require(5),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new map field.\r\n * @classdesc Reflected map field.\r\n * @extends Field\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\r\n \r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {?ReflectionObject}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a map field.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n keyType : this.keyType,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n \r\n // Besides a value type, map fields have a key type to resolve\r\n var keyWireType = types.mapKey[this.keyType];\r\n if (keyWireType === undefined) {\r\n var resolved = this.parent.lookup(this.keyType);\r\n if (!(resolved instanceof Enum))\r\n throw Error(\"unresolvable map key type: \" + this.keyType);\r\n this.resolvedKeyType = resolved;\r\n }\r\n\r\n return FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean} [requestStream] Whether the request is streamed\r\n * @param {boolean} [responseStream] Whether the response is streamed\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (!util.isString(requestType))\r\n throw _TypeError(\"requestType\");\r\n if (!util.isString(responseType))\r\n throw _TypeError(\"responseType\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {?Type}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {Object} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object} json JSON object\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var resolved = this.parent.lookup(this.requestType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n this.resolvedRequestType = resolved;\r\n resolved = this.parent.lookup(this.responseType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n this.resolvedResponseType = resolved;\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n Field = require(6),\r\n Service = require(17),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\nvar nestedTypes = [ Enum, Type, Service, Field, Namespace ],\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');\r\n\r\n/**\r\n * Constructs a new namespace.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {?ReflectionObject[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\nObject.defineProperties(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: NamespacePrototype.getNestedArray = function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson)\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw _TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {?ReflectionObject} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespacePrototype.add = function add(object) {\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw _TypeError(\"object\", nestedError);\r\n if (object instanceof Field && object.extend === undefined)\r\n throw _TypeError(\"object\", \"an extension field when not part of a type\");\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespacePrototype.remove = function remove(object) {\r\n if (!(object instanceof ReflectionObject))\r\n throw _TypeError(\"object\", \"a ReflectionObject\");\r\n if (object.parent !== this || !this.nested)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split('.');\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolve() {\r\n var nested = this.getNestedArray(), i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, parentAlreadyChecked) {\r\n if (util.isString(path)) {\r\n if (!path.length)\r\n return null;\r\n path = path.split('.');\r\n } else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1));\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found && (path.length === 1 || found instanceof Namespace && (found = found.lookup(path.slice(1), true))))\r\n return found;\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path);\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.extend = extend;\r\n\r\nvar Root = require(16),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (options && !util.isObject(options))\r\n throw _TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {?Namespace}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(ReflectionObjectPrototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: ReflectionObjectPrototype.getRoot = function getRoot() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: ReflectionObjectPrototype.getFullName = function getFullName() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join('.');\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Lets the specified constructor extend this class.\r\n * @memberof ReflectionObject\r\n * @param {Function} constructor Extending constructor\r\n * @returns {Object} Prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var proto = constructor.prototype = Object.create(this.prototype);\r\n proto.constructor = constructor;\r\n constructor.extend = extend;\r\n return proto;\r\n}\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObjectPrototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Constructor name, space, full name\r\n */\r\nReflectionObjectPrototype.toString = function toString() {\r\n return this.constructor.name + \" \" + this.getFullName();\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(6),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]} [fieldNames] Field names\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw _TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {Array.}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof and are possibly not yet added to its parent.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._fields = [];\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n oneof._fields.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n if (field.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this._fields.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n var index = this._fields.indexOf(field);\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n this._fields.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fields.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(18),\r\n Root = require(16),\r\n Type = require(19),\r\n Field = require(6),\r\n MapField = require(8),\r\n OneOf = require(12),\r\n Enum = require(5),\r\n Service = require(17),\r\n Method = require(9),\r\n types = require(20);\r\n\r\nvar nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n fqTypeRefRe = /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/;\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(name) {\r\n return name.substring(0,1)\r\n + name.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\nvar s_required = \"required\",\r\n s_repeated = \"repeated\",\r\n s_optional = \"optional\",\r\n s_option = \"option\",\r\n s_name = \"name\",\r\n s_type = \"type\";\r\nvar s_open = \"{\",\r\n s_close = \"}\",\r\n s_bopen = '(',\r\n s_bclose = ')',\r\n s_semi = \";\",\r\n s_dq = '\"',\r\n s_sq = \"'\";\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object}\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} [root] Root to populate\r\n * @returns {ParserResult} Parser result\r\n */\r\nfunction parse(source, root) {\r\n /* eslint-disable default-case, callback-return */\r\n if (!root)\r\n root = new Root();\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\r\n\r\n var head = true,\r\n pkg,\r\n imports,\r\n weakImports,\r\n syntax,\r\n isProto3 = false;\r\n\r\n if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n function illegal(token, name) {\r\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (line \" + tn.line() + s_bclose);\r\n }\r\n\r\n function readString() {\r\n var values = [],\r\n token;\r\n do {\r\n if ((token = next()) !== s_dq && token !== s_sq)\r\n throw illegal(token);\r\n values.push(next());\r\n skip(token);\r\n token = peek();\r\n } while (token === s_dq || token === s_sq);\r\n return values.join('');\r\n }\r\n\r\n function readValue(acceptTypeRef) {\r\n var token = next();\r\n switch (lower(token)) {\r\n case s_sq:\r\n case s_dq:\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && typeRefRe.test(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(s_semi);\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\r\n var sign = 1;\r\n if (token.charAt(0) === '-') {\r\n sign = -1;\r\n token = token.substring(1);\r\n }\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, 'number');\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"min\": return 1;\r\n case \"max\": return 0x1FFFFFFF;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === '-' && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!typeRefRe.test(pkg))\r\n throw illegal(pkg, s_name);\r\n ptr = ptr.define(pkg);\r\n skip(s_semi);\r\n }\r\n\r\n function parseImport() {\r\n var token = peek();\r\n var whichImports;\r\n switch (token) {\r\n case \"weak\":\r\n whichImports = weakImports || (weakImports = []);\r\n next();\r\n break;\r\n case \"public\":\r\n next();\r\n // eslint-disable-line no-fallthrough\r\n default:\r\n whichImports = imports || (imports = []);\r\n break;\r\n }\r\n token = readString();\r\n skip(s_semi);\r\n whichImports.push(token);\r\n }\r\n\r\n function parseSyntax() {\r\n skip(\"=\");\r\n syntax = lower(readString());\r\n var p3;\r\n if ([ \"proto2\", p3 = \"proto3\" ].indexOf(syntax) < 0)\r\n throw illegal(syntax, \"syntax\");\r\n isProto3 = syntax === p3;\r\n skip(s_semi);\r\n }\r\n\r\n function parseCommon(parent, token) {\r\n switch (token) {\r\n\r\n case s_option:\r\n parseOption(parent, token);\r\n skip(s_semi);\r\n return true;\r\n\r\n case \"message\":\r\n parseType(parent, token);\r\n return true;\r\n\r\n case \"enum\":\r\n parseEnum(parent, token);\r\n return true;\r\n\r\n case \"service\":\r\n parseService(parent, token);\r\n return true;\r\n\r\n case \"extend\":\r\n parseExtension(parent, token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function parseType(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n case s_required:\r\n case s_optional:\r\n case s_repeated:\r\n parseField(type, tokenLower);\r\n break;\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, s_optional);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (!typeRefRe.test(type))\r\n throw illegal(type, s_type);\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\r\n if (field.repeated)\r\n field.setOption(\"packed\", isProto3, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseMapField(parent) {\r\n skip(\"<\");\r\n var keyType = next();\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, s_type);\r\n skip(\",\");\r\n var valueType = next();\r\n if (!typeRefRe.test(valueType))\r\n throw illegal(valueType, s_type);\r\n skip(\">\");\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (token === s_option) {\r\n parseOption(oneof, token);\r\n skip(s_semi);\r\n } else {\r\n push(token);\r\n parseField(oneof, s_optional);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (lower(token) === s_option)\r\n parseOption(enm);\r\n else\r\n parseEnumField(enm, token);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(s_bopen, true);\r\n var name = next();\r\n if (!typeRefRe.test(name))\r\n throw illegal(name, s_name);\r\n if (custom) {\r\n skip(s_bclose);\r\n name = s_bopen + name + s_bclose;\r\n token = peek();\r\n if (fqTypeRefRe.test(token)) {\r\n name += token;\r\n next();\r\n }\r\n }\r\n skip(\"=\");\r\n parseOptionValue(parent, name);\r\n }\r\n\r\n function parseOptionValue(parent, name) {\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n setOption(parent, name, readValue(true));\r\n // Does not enforce a delimiter to be universal\r\n }\r\n\r\n function setOption(parent, name, value) {\r\n if (parent.setOption)\r\n parent.setOption(name, value);\r\n else\r\n parent[name] = value;\r\n }\r\n\r\n function parseInlineOptions(parent) {\r\n if (skip(\"[\", true)) {\r\n do {\r\n parseOption(parent, s_option);\r\n } while (skip(\",\", true));\r\n skip(\"]\");\r\n }\r\n skip(s_semi);\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n if (!nameRe.test(token))\r\n throw illegal(token, \"service name\");\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(service, tokenLower);\r\n skip(s_semi);\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(s_bopen);\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(s_bclose); skip(\"returns\"); skip(s_bopen);\r\n if (skip(st, true))\r\n responseStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n responseType = token;\r\n skip(s_bclose);\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(method, tokenLower);\r\n skip(s_semi);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n if (!typeRefRe.test(reference))\r\n throw illegal(reference, \"reference\");\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_required:\r\n case s_repeated:\r\n case s_optional:\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(parent, s_optional, reference);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case s_option:\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(s_semi);\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\r\n }\r\n throw illegal(token);\r\n }\r\n }\r\n\r\n return {\r\n 'package' : pkg,\r\n 'imports' : imports,\r\n 'weakImports' : weakImports,\r\n 'syntax' : syntax,\r\n 'root' : root\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Prototype;\r\n\r\n/**\r\n * Options passed to the {@link Prototype|prototype constructor}, modifying its behavior.\r\n * @typedef PrototypeOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Sets only properties that reference a field\r\n */\r\n\r\n/**\r\n * Constructs a new prototype.\r\n * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.\r\n * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @param {PrototypeOptions} [options] Prototype options\r\n * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties, options) {\r\n if (properties) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (fields[keys[i]] || any)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/**\r\n * Converts a runtime message to a JSON object.\r\n * @param {Object.} [options] Conversion options\r\n * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field\r\n * @param {Function} [options.long] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @param {Function} [options.enum=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys = Object.keys(this);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = fields[key = keys[i]],\r\n value = this[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value && value.length) {\r\n var array = new Array(value.length);\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n array[j] = field.jsonConvert(value[j], options);\r\n json[key] = array;\r\n }\r\n } else\r\n json[key] = field.jsonConvert(value, options);\r\n } else if (any)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n Long = util.Long;\r\n\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader using the specified buffer.\r\n * When called as a function, returns an appropriate reader for the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n if (!(this instanceof Reader))\r\n return util.Buffer && (!buffer || util.Buffer.isBuffer(buffer)) && new BufferReader(buffer) || new Reader(buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\nReaderPrototype._slice = ArrayImpl.prototype.slice || ArrayImpl.prototype.subarray;\r\n\r\n/**\r\n * Tag read.\r\n * @constructor\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @ignore\r\n */\r\nfunction Tag(id, wireType) {\r\n this.id = id;\r\n this.wireType = wireType;\r\n}\r\n\r\n/**\r\n * Reads a tag.\r\n * @returns {{id: number, wireType: number}} Field id and wire type\r\n */\r\nReaderPrototype.tag = function read_tag() {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n return new Tag(this.buf[this.pos] >>> 3, this.buf[this.pos++] & 7);\r\n};\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.int32 = function read_int32() {\r\n var value = 0,\r\n shift = 0,\r\n octet = 0;\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n octet = this.buf[this.pos++];\r\n if (shift < 32)\r\n value |= (octet & 127) << shift;\r\n shift += 7;\r\n } while (octet & 128);\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.uint32 = function read_uint32() {\r\n return this.int32() >>> 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sint32 = function read_sint32() {\r\n var value = this.int32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a possibly 64 bits varint.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction readLongVarint() {\r\n var lo = 0, hi = 0,\r\n i = 0, b = 0;\r\n if (this.len - this.pos > 9) { // fast route\r\n for (i = 0; i < 4; ++i) {\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n } else {\r\n for (i = 0; i < 4; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n }\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.int64 = Long && read_int64_long || read_int64_number;\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.uint64 = Long && read_uint64_long || read_uint64_number;\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sint64 = Long && read_sint64_long || read_sint64_number;\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReaderPrototype.bool = function read_bool() {\r\n return this.int32() !== 0;\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n this.pos += 4;\r\n return this.buf[this.pos - 4]\r\n | this.buf[this.pos - 3] << 8\r\n | this.buf[this.pos - 2] << 16\r\n | this.buf[this.pos - 1] << 24;\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a 64 bit value.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner \r\n * @ignore\r\n */\r\nfunction readLongFixed() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n return new LongBits(\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n ,\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n );\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readLongFixed.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.fixed64 = Long && read_fixed64_long || read_fixed64_number;\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sfixed64 = Long && read_sfixed64_long || read_sfixed64_number;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 23, 4);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 52, 8);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReaderPrototype.bytes = function read_bytes() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReaderPrototype.string = function read_string() {\r\n // ref: https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\r\n var bytes = this.bytes(),\r\n len = bytes.length;\r\n if (len) {\r\n var out = new Array(len), p = 0, c = 0;\r\n while (p < len) {\r\n var c1 = bytes[p++];\r\n if (c1 < 128)\r\n out[c++] = c1;\r\n else if (c1 > 191 && c1 < 224)\r\n out[c++] = (c1 & 31) << 6 | bytes[p++] & 63;\r\n else if (c1 > 239 && c1 < 365) {\r\n var u = ((c1 & 7) << 18 | (bytes[p++] & 63) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63) - 0x10000;\r\n out[c++] = 0xD800 + (u >> 10);\r\n out[c++] = 0xDC00 + (u & 1023);\r\n } else\r\n out[c++] = (c1 & 15) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63;\r\n }\r\n return String.fromCharCode.apply(String, out.slice(0, c));\r\n }\r\n return \"\";\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skip = function skip(length) {\r\n if (length === undefined) {\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n } else {\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n var tag = this.tag();\r\n if (tag.wireType === 4)\r\n break;\r\n this.skipType(tag.wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n default:\r\n throw Error(\"invalid wire type: \" + wireType);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance and frees all resources.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.reset = function reset(buffer) {\r\n if (buffer) {\r\n this.buf = buffer;\r\n this.len = buffer.length;\r\n } else {\r\n this.buf = null; // makes it throw\r\n this.len = 0;\r\n }\r\n this.pos = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nReaderPrototype.finish = function finish(buffer) {\r\n var remain = this.pos\r\n ? this._slice.call(this.buf, this.pos)\r\n : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n\r\n// One time function to initialize BufferReader with the now-known buffer implementation's slice method\r\nvar initBufferReader = function() {\r\n if (!util.Buffer)\r\n throw Error(\"Buffer is not supported\");\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n if (initBufferReader)\r\n initBufferReader();\r\n Reader.call(this, buffer);\r\n}\r\n\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\n\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.float = function read_float_buffer() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = this.buf.readFloatLE(this.pos, true);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.double = function read_double_buffer() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n var value = this.buf.readDoubleLE(this.pos, true);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.string = function read_string_buffer() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return this.buf.toString(\"utf8\", start, end);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.finish = function finish_buffer(buffer) {\r\n var remain = this.pos ? this.buf.slice(this.pos) : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(6),\r\n util = require(21),\r\n common = require(2);\r\n\r\n/**\r\n * Constructs a new root namespace.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {Object} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files. \r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {*} json JSON definition\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string} Resolved path to `target`\r\n */\r\nRootPrototype.resolvePath = util.resolvePath;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {function(?Error, Root=)} [callback] Node-style callback function\r\n * @returns {Promise|undefined} A promise if `callback` has been omitted\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nRootPrototype.load = function load(filename, callback) {\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n var parsed = require(13)(source, self);\r\n if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!queued)\r\n finish(null, self);\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.indexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\r\n\r\n if (!queued)\r\n finish(null);\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.toString = function toString() {\r\n return this.constructor.name;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nvar Method = require(9),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new service.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nObject.defineProperties(ServicePrototype, {\r\n\r\n /**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\n methodsArray: {\r\n get: ServicePrototype.getMethodsArray = function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object} json JSON object\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolve() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @function\r\n * @param {Method} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {function(?Error, Uint8Array=)} callback Node-style callback called with the error, if any, and the response data\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpc RPC implementation ({@link RPCImpl|see})\r\n * @param {boolean} [requestDelimited=false] Whether request data is length delimited\r\n * @param {boolean} [responseDelimited=false] Whether response data is length delimited\r\n * @returns {Object} Runtime service\r\n */\r\nServicePrototype.create = function create(rpc, requestDelimited, responseDelimited) {\r\n var rpcService = {};\r\n Object.defineProperty(rpcService, \"$rpc\", {\r\n value: rpc\r\n });\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[method.name] = function(request, callback) {\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited && method.resolvedRequestType.encodeDelimited(request) || method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === 'function' && setImmediate || setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpc(method, requestData, function(err, responseData) {\r\n if (err) {\r\n callback(err);\r\n return;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited && method.resolvedResponseType.decodeDelimited(responseData) || method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n callback(err2);\r\n return;\r\n }\r\n callback(null, response);\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\r\n","\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\r\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\r\n\r\nvar s_nl = \"\\n\",\r\n s_sl = '/',\r\n s_as = '*';\r\n\r\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\r\n /* eslint-disable default-case, callback-return */\r\n source = source.toString();\r\n \r\n var offset = 0,\r\n length = source.length,\r\n line = 1;\r\n \r\n var stack = [];\r\n\r\n var stringDelim = null;\r\n\r\n /**\r\n * Creates an error for illegal syntax.\r\n * @param {string} subject Subject\r\n * @returns {Error} Error created\r\n * @inner\r\n */\r\n function illegal(subject) {\r\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n }\r\n\r\n /**\r\n * Reads a string till its end.\r\n * @returns {string} String read\r\n * @inner\r\n */\r\n function readString() {\r\n var re = stringDelim === '\"' ? stringDoubleRe : stringSingleRe;\r\n re.lastIndex = offset - 1;\r\n var match = re.exec(source);\r\n if (!match)\r\n throw illegal(\"string\");\r\n offset = re.lastIndex;\r\n push(stringDelim);\r\n stringDelim = null;\r\n return unescape(match[1]);\r\n }\r\n\r\n /**\r\n * Gets the character at `pos` within the source.\r\n * @param {number} pos Position\r\n * @returns {string} Character\r\n * @inner\r\n */\r\n function charAt(pos) {\r\n return source.charAt(pos);\r\n }\r\n\r\n /**\r\n * Obtains the next token.\r\n * @returns {?string} Next token or `null` on eof\r\n * @inner\r\n */\r\n function next() {\r\n if (stack.length > 0)\r\n return stack.shift();\r\n if (stringDelim)\r\n return readString();\r\n var repeat,\r\n prev,\r\n curr;\r\n do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.test(curr = charAt(offset))) {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n }\r\n if (charAt(offset) === s_sl) {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === s_sl) { // Line\r\n while (charAt(++offset) !== s_nl)\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === s_as) { /* Block */\r\n do {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== s_as || curr !== s_sl);\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return s_sl;\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\r\n var end = offset;\r\n delimRe.lastIndex = 0;\r\n var delim = delimRe.test(charAt(end++));\r\n if (!delim)\r\n while (end < length && !delimRe.test(charAt(end)))\r\n ++end;\r\n var token = source.substring(offset, offset = end);\r\n if (token === '\"' || token === \"'\")\r\n stringDelim = token;\r\n return token;\r\n }\r\n\r\n /**\r\n * Pushes a token back to the stack.\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function push(token) {\r\n stack.push(token);\r\n }\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @returns {?string} Token or `null` on eof\r\n * @inner\r\n */\r\n function peek() {\r\n if (!stack.length) {\r\n var token = next();\r\n if (token === null)\r\n return null;\r\n push(token);\r\n }\r\n return stack[0];\r\n }\r\n\r\n /**\r\n * Skips a token.\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] Whether the token is optional\r\n * @returns {boolean} `true` when skipped, `false` if not\r\n * @throws {Error} When a required token is not present\r\n * @inner\r\n */\r\n function skip(expected, optional) {\r\n var actual = peek(),\r\n equals = actual === expected;\r\n if (equals) {\r\n next();\r\n return true;\r\n }\r\n if (!optional)\r\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n return false;\r\n }\r\n\r\n return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable default-case, callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type; \r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nvar Enum = require(5),\r\n OneOf = require(12),\r\n Field = require(6),\r\n Service = require(17),\r\n Prototype = require(14),\r\n Reader = require(15),\r\n Writer = require(25),\r\n encoder = require(4),\r\n decoder = require(3),\r\n Verifier = require(24),\r\n inherits = require(7),\r\n util = require(21);\r\n\r\nvar codegen = util.codegen;\r\n\r\n/**\r\n * Constructs a new message type.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {?Function}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: TypePrototype.getFieldsById = function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: TypePrototype.getFieldsArray = function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: TypePrototype.getOneofsArray = function getOneofsArray() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Type#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: TypePrototype.getCtor = function getCtor() {\r\n if (this._ctor)\r\n return this._ctor;\r\n var ctor;\r\n if (codegen.supported)\r\n ctor = codegen(\"p\")(\"P.call(this,p)\").eof(this.getFullName() + \"$ctor\", {\r\n P: Prototype\r\n });\r\n else\r\n ctor = function GenericMessage(properties) {\r\n Prototype.call(this, properties);\r\n };\r\n ctor.prototype = inherits(ctor, this);\r\n this._ctor = ctor;\r\n return ctor;\r\n },\r\n set: TypePrototype.setCtor = function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = null;\r\n delete type.encode;\r\n delete type.decode;\r\n return type;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object} json JSON object\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\r\n });\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\r\n extensions : this.extensions && this.extensions.length ? this.extensions : undefined,\r\n reserved : this.reserved && this.reserved.length ? this.reserved : undefined,\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolve() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nTypePrototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object} [properties] Properties to set\r\n * @param {?Function} [ctor] Constructor to use.\r\n * Defaults to use the internal constuctor.\r\n * @returns {Prototype} Message instance\r\n */\r\nTypePrototype.create = function create(properties, ctor) {\r\n if (typeof properties === 'function') {\r\n ctor = properties;\r\n properties = undefined;\r\n } else if (properties /* already */ instanceof Prototype)\r\n return properties;\r\n if (ctor) {\r\n if (!(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n } else\r\n ctor = this.getCtor();\r\n return new ctor(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encode = function encode(message, writer) {\r\n return (this.encode = codegen.supported\r\n ? encoder.generate(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : encoder.fallback\r\n ).call(this, message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n return (this.decode = codegen.supported\r\n ? decoder.generate(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : decoder.fallback\r\n ).call(this, readerOrBuffer, length);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that enum values are valid and that any required fields are present.\r\n * @param {Prototype|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify(message) {\r\n var verifier = new Verifier(this);\r\n this.verify = codegen.supported\r\n ? verifier.generate()\r\n : verifier.verify;\r\n return this.verify(message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\nvar emptyArray = [];\r\nif (Object.freeze)\r\n Object.freeze(emptyArray);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ emptyArray\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.packed = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n], 2);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = exports;\r\n\r\nvar LongBits =\r\nutil.LongBits = require(\"./util/longbits\");\r\nutil.codegen = require(\"./util/codegen\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nvar isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Optional buffer class to use.\r\n * If you assign any compatible buffer implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Buffer = null;\r\n\r\nif (isNode)\r\n try { util.Buffer = require(\"buffer\").Buffer; } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Optional Long class to use.\r\n * If you assign any compatible long implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @memberof util\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nfunction isString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\n\r\nutil.isString = isString;\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return Boolean(value && typeof value === 'object');\r\n};\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || function isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=a string] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Returns a promise from a node-style function.\r\n * @memberof util\r\n * @param {function(Error, ...*)} fn Function to call\r\n * @param {Object} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var args = [];\r\n for (var i = 2; i < arguments.length; ++i)\r\n args.push(arguments[i]);\r\n return new Promise(function(resolve, reject) {\r\n fn.apply(ctx, args.concat(\r\n function(err/*, varargs */) {\r\n if (err) reject(err);\r\n else resolve.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n ));\r\n });\r\n}\r\n\r\nutil.asPromise = asPromise;\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {function(?Error, string=)} [callback] Node-style callback\r\n * @returns {Promise|undefined} Promise if callback has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, util, path);\r\n var fs; try { fs = require(\"fs\"); } catch (e) {} // eslint-disable-line no-empty\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", callback);\r\n var xhr = new XMLHttpRequest();\r\n function onload() {\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n if (isString(xhr.responseText))\r\n return callback(null, xhr.responseText);\r\n return callback(Error(\"request failed\"));\r\n }\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState === 4)\r\n onload();\r\n };\r\n xhr.open(\"GET\", path, true);\r\n xhr.send();\r\n return undefined;\r\n}\r\n\r\nutil.fetch = fetch;\r\n\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @memberof util\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\nfunction isAbsolutePath(path) {\r\n return /^(?:\\/|[a-zA-Z0-9]+:)/.test(path);\r\n}\r\n\r\nutil.isAbsolutePath = isAbsolutePath;\r\n\r\n/**\r\n * Normalizes the specified path.\r\n * @memberof util\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\nfunction normalizePath(path) {\r\n path = path.replace(/\\\\/g, '/')\r\n .replace(/\\/{2,}/g, '/');\r\n var parts = path.split('/');\r\n var abs = isAbsolutePath(path);\r\n var prefix = \"\";\r\n if (abs)\r\n prefix = parts.shift() + '/';\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === '..') {\r\n if (i > 0)\r\n parts.splice(--i, 2);\r\n else if (abs)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === '.')\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join('/');\r\n}\r\n\r\nutil.normalizePath = normalizePath;\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path that was used to fetch the origin file\r\n * @param {string} importPath Import path specified in the origin file\r\n * @param {boolean} [alreadyNormalized] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the imported file\r\n */\r\nutil.resolvePath = function resolvePath(originPath, importPath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n importPath = normalizePath(importPath);\r\n if (isAbsolutePath(importPath))\r\n return importPath;\r\n if (!alreadyNormalized)\r\n originPath = normalizePath(originPath);\r\n originPath = originPath.replace(/(?:\\/|^)[^/]+$/, '');\r\n return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath;\r\n};\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? LongBits.from(value).toHash()\r\n : '\\0\\0\\0\\0\\0\\0\\0\\0';\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === 'number'\r\n ? typeof b === 'number'\r\n ? a !== b\r\n : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === 'number'\r\n ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object} dst Destination object\r\n * @param {Object} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n// Reserved words, ref: https://msdn.microsoft.com/en-us/library/ttyab5c8.aspx\r\n// var reserved = \"break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,protected,return,super,switch,this,throw,true,try,typeof,var,while,with,abstract,boolean,byte,char,decimal,double,enum,final,float,get,implements,int,interface,internal,long,package,private,protected,public,sbyte,set,short,static,uint,ulong,ushort,void,assert,ensure,event,goto,invariant,namespace,native,require,synchronized,throws,transient,use,volatile\".split(',');\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n // NOTE: While dot notation looks cleaner it doesn't seem to have a significant impact on performance.\r\n // Hence, we can safe the extra bytes from providing the reserved keywords above for pre-ES5 envs.\r\n return /* /^[a-z_$][a-z0-9_$]*$/i.test(prop) && !reserved.indexOf(prop) ? \".\" + prop : */ \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * Programmatically generates a function.\r\n * @memberof util\r\n * @param {...string} params Function parameter names\r\n * @returns {util.CodegenAppender} Printf-like appender function\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen(/* varargs */) {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'];\r\n\r\n var indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * Appends a printf-like formatted line to the generated source. Returned when calling {@link util.codegen}.\r\n * @typedef CodegenAppender\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} format A printf-like format string\r\n * @param {...*} params Format replacements\r\n * @returns {util.CodegenAppender} Itself\r\n * @property {util.CodegenStringer} str\r\n * @property {util.CodegenEnder} eof\r\n * @see {@link https://nodejs.org/docs/latest/api/util.html#util_util_format_format_args}\r\n */\r\n /**/\r\n function gen() {\r\n var fmt = [];\r\n for (var i = 0; i < arguments.length; ++i)\r\n fmt[i] = arguments[i];\r\n var line = gen.fmt.apply(null, fmt);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (var index = 0; index < level; ++index)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n gen.fmt = function fmt(format) {\r\n var params = Array.prototype.slice.call(arguments, 1),\r\n index = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var param = params[index++];\r\n return $1 === \"j\"\r\n ? JSON.stringify(param)\r\n : String(param);\r\n });\r\n };\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @typedef CodegenStringer\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n */\r\n /**/\r\n gen.str = function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + args.join(\",\") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n };\r\n\r\n /**\r\n * Ends generation and builds the function.\r\n * @typedef CodegenEnder\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object|Array.} [scope] Function scope\r\n * @returns {function} A function to apply the scope manually when `scope` is an array, otherwise the generated function with scope applied\r\n */\r\n /**/\r\n gen.eof = function eof(name, scope) {\r\n if (name && typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var code = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + code.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n code = \"return \" + code;\r\n var params, values = [];\r\n if (Array.isArray(scope)) {\r\n params = scope.slice();\r\n } else if (scope) {\r\n params = Object.keys(scope);\r\n values = params.map(function(key) { return scope[key]; });\r\n } else\r\n params = [];\r\n var fn = Function.apply(null, params.concat(code)); // eslint-disable-line no-new-func\r\n return values ? fn.apply(null, values) : fn();\r\n };\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false;\r\ntry { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\n\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(21);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n value = Math.abs(value);\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nLongBits.from = function from(value) {\r\n switch (typeof value) { // eslint-disable-line default-case\r\n case 'number':\r\n return LongBits.fromNumber(value);\r\n case 'string':\r\n value = util.Long.fromString(value); // throws without a long lib\r\n }\r\n return (value.low || value.high) && new LongBits(value.low >>> 0, value.high >>> 0) || zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBitsPrototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n this.lo = ~this.lo + 1 >>> 0;\r\n this.hi = ~this.hi >>> 0;\r\n if (!this.lo)\r\n this.hi = this.hi + 1 >>> 0;\r\n return -(this.lo + this.hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBitsPrototype.toLong = function toLong(unsigned) {\r\n return new util.Long(this.lo, this.hi, unsigned);\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBitsPrototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 & 255,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24 & 255\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBitsPrototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n if (part2 === 0) {\r\n if (part1 === 0)\r\n return part0 < 1 << 14\r\n ? part0 < 1 << 7 ? 1 : 2\r\n : part0 < 1 << 21 ? 3 : 4;\r\n return part1 < 1 << 14\r\n ? part1 < 1 << 7 ? 5 : 6\r\n : part1 < 1 << 21 ? 7 : 8;\r\n }\r\n return part2 < 1 << 7 ? 9 : 10;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Verifier;\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new verifier for the specified message type.\r\n * @classdesc Runtime message verifier using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Verifier(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Verifier.prototype */\r\nvar VerifierPrototype = Verifier.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(VerifierPrototype, {\r\n\r\n /**\r\n * Fields of this verifier's message type as an array for iteration.\r\n * @name Verifier#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: VerifierPrototype.getFieldsArray = function getFieldsArray() {\r\n return this.type.getFieldsArray();\r\n }\r\n },\r\n\r\n /**\r\n * Full name of this verifier's message type.\r\n * @name Verifier#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: VerifierPrototype.getFullName = function getFullName() {\r\n return this.type.getFullName();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Verifies a runtime message of this verifier's message type.\r\n * @param {Prototype|Object} message Runtime message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nVerifierPrototype.verify = function verify_fallback(message) {\r\n var fields = this.getFieldsArray(),\r\n i = 0;\r\n while (i < fields.length) {\r\n var field = fields[i++].resolve(),\r\n value = message[field.name];\r\n\r\n if (value === undefined) {\r\n if (field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Enum && field.resolvedType.getValuesById()[value] === undefined) {\r\n return \"invalid enum value \" + field.name + \" = \" + value + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (!value && field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n var reason;\r\n if ((reason = field.resolvedType.verify(value)) !== null)\r\n return reason;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Generates a verifier specific to this verifier's message type.\r\n * @returns {function} Verifier function with an identical signature to {@link Verifier#verify}\r\n */\r\nVerifierPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n var hasReasonVar = false;\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n if (field.required) { gen\r\n\r\n (\"if(m%s===undefined)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n } else if (field.resolvedType instanceof Enum) {\r\n var values = util.toArray(field.resolvedType.values); gen\r\n\r\n (\"switch(m%s){\", prop)\r\n (\"default:\")\r\n (\"return 'invalid enum value %s = '+m%s+' in %s'\", field.name, prop, this.type.getFullName());\r\n\r\n for (var j = 0, l = values.length; j < l; ++j) gen\r\n (\"case %d:\", values[j]); gen\r\n (\"}\");\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (field.required) gen\r\n\r\n (\"if(!m%s)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n if (!hasReasonVar) { gen(\"var r\"); hasReasonVar = true; } gen\r\n\r\n (\"if((r=types[%d].verify(m%s))!==null)\", i, prop)\r\n (\"return r\");\r\n }\r\n }\r\n return gen\r\n (\"return null\")\r\n\r\n .eof(this.type.getFullName() + \"$verify\", {\r\n types : fields.map(function(fld) { return fld.resolvedType; })\r\n });\r\n /* eslint-enable no-unexpected-multiline */\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits;\r\n\r\n/**\r\n * Constructs a new writer operation.\r\n * @classdesc Scheduled writer operation.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {*} val Value to write\r\n * @param {number} len Value byte length\r\n * @private\r\n * @ignore\r\n */\r\nfunction Op(fn, val, len) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {?Writer.Op}\r\n */\r\n this.next = null;\r\n}\r\n\r\nWriter.Op = Op;\r\n\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n}\r\n\r\nWriter.State = State;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * When called as a function, returns an appropriate writer for the current environment.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @exports Writer\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n if (!(this instanceof Writer))\r\n return util.Buffer && new BufferWriter() || new Writer();\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * State stack.\r\n * @type {Object[]}\r\n */\r\n this.stack = [];\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling linked operations with already prepared values.\r\n}\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.push = function push(fn, len, val) {\r\n var op = new Op(fn, val, len);\r\n this.tail.next = op;\r\n this.tail = op;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(buf, pos, val) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\n/**\r\n * Writes a tag.\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.tag = function write_tag(id, wireType) {\r\n return this.push(writeByte, 1, id << 3 | wireType & 7);\r\n};\r\n\r\nfunction writeVarint32(buf, pos, val) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value >>>= 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this.push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint32 = function write_sint32(value) {\r\n return this.uint32(value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeVarint64(buf, pos, val) {\r\n // tends to deoptimize. stays optimized when using bits directly.\r\n while (val.hi || val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.int64 = WriterPrototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sint64 = function sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bool = function write_bool(value) {\r\n return this.push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(buf, pos, val) {\r\n buf[pos++] = val & 255;\r\n buf[pos++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24 & 255;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\nfunction writeFloat(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 23, 4);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nfunction writeDouble(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 52, 8);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 8, value);\r\n};\r\n\r\nvar writeBytes = ArrayImpl.prototype.set\r\n ? function writeBytes_set(buf, pos, val) { buf.set(val, pos); }\r\n : function writeBytes_for(buf, pos, val) { for (var i = 0; i < val.length; ++i) buf[pos + i] = val[i]; };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeString(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i) {\r\n var c1 = val.charCodeAt(i), c2;\r\n if (c1 < 128) {\r\n buf[pos++] = c1;\r\n } else if (c1 < 2048) {\r\n buf[pos++] = c1 >> 6 | 192;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < val.length && ((c2 = val.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buf[pos++] = c1 >> 18 | 240;\r\n buf[pos++] = c1 >> 12 & 63 | 128;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else {\r\n buf[pos++] = c1 >> 12 | 224;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n }\r\n }\r\n}\r\n\r\nfunction byteLength(val) {\r\n var strlen = val.length >>> 0;\r\n if (strlen) {\r\n var len = 0;\r\n for (var i = 0, c1; i < strlen; ++i) {\r\n c1 = val.charCodeAt(i);\r\n if (c1 < 128)\r\n len += 1;\r\n else if (c1 < 2048)\r\n len += 2;\r\n else if ((c1 & 0xFC00) === 0xD800 && i + 1 < strlen && (val.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.string = function write_string(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeString, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#ldelim}, {@link Writer#reset} or {@link Writer#finish} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fork = function fork() {\r\n this.stack.push(new State(this));\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.reset = function reset() {\r\n if (this.stack.length) {\r\n var state = this.stack.pop();\r\n this.head = state.head;\r\n this.tail = state.tail;\r\n this.len = state.len;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @param {number} [id] Id with wire type 2 to prepend where applicable\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.ldelim = function ldelim(id) {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset();\r\n if (id !== undefined)\r\n this.tag(id, 2);\r\n this.uint32(len);\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations and frees all resources.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriterPrototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = new ArrayImpl(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer writer.\r\n * @classdesc Wire format writer using node buffers.\r\n * @exports BufferWriter\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nfunction writeFloatBuffer(buf, pos, val) {\r\n buf.writeFloatLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.float = function write_float_buffer(value) {\r\n return this.push(writeFloatBuffer, 4, value);\r\n};\r\n\r\nfunction writeDoubleBuffer(buf, pos, val) {\r\n buf.writeDoubleLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.double = function write_double_buffer(value) {\r\n return this.push(writeDoubleBuffer, 8, value);\r\n};\r\n\r\nfunction writeBytesBuffer(buf, pos, val) {\r\n if (val.length)\r\n val.copy(buf, pos, 0, val.length);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytesBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeStringBuffer(buf, pos, val) {\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeStringBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.finish = function finish_buffer() {\r\n var head = this.head.next, // skip noop\r\n buf = util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(this.len) || new util.Buffer(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @param {function(?Error, Root=)} [callback] Callback function\r\n * @returns {Promise|Object} A promise if callback has been omitted, otherwise the protobuf namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === 'function') {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback) || protobuf;\r\n}\r\n\r\nprotobuf.load = load;\r\n\r\n// Parser\r\nprotobuf.tokenize = require(\"./tokenize\");\r\nprotobuf.parse = require(\"./parse\");\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = protobuf.Writer.BufferWriter;\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = protobuf.Reader.BufferReader;\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Prototype = require(\"./prototype\");\r\nprotobuf.inherits = require(\"./inherits\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.util = util;\r\n"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/common.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/inherits.js","src/mapfield.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/prototype.js","src/reader.js","src/root.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/index.js"],"names":[],"mappings":";;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACniBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"protobuf.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 1,\r\n nBits = -7,\r\n i = isBE ? 0 : (nBytes - 1),\r\n d = isBE ? 1 : -1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n};\r\n\r\nexports.write = function writeIEEE754(buffer, value, offset, isBE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isBE ? (nBytes - 1) : 0,\r\n d = isBE ? -1 : 1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object} google/protobuf/any.proto Any\r\n * @property {Object} google/protobuf/duration.proto Duration\r\n * @property {Object} google/protobuf/empty.proto Empty\r\n * @property {Object} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object} google/protobuf/timestamp.proto Timestamp\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.test(name)) {\r\n name = \"google/protobuf/\" + name + \".proto\";\r\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n }\r\n common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n// - google/protobuf/wrappers.proto\r\n\r\ncommon(\"any\", {\r\n Any: {\r\n fields: {\r\n type_url: {\r\n type: \"string\",\r\n id: 1\r\n },\r\n value: {\r\n type: \"bytes\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n Duration: timeType = {\r\n fields: {\r\n seconds: {\r\n type: \"int64\",\r\n id: 1\r\n },\r\n nanos: {\r\n type: \"int32\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\r\n Struct: {\r\n fields: {\r\n fields: {\r\n keyType: \"string\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n },\r\n Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\r\n }\r\n },\r\n fields: {\r\n nullValue: {\r\n type: \"NullValue\",\r\n id: 1\r\n },\r\n numberValue: {\r\n type: \"double\",\r\n id: 2\r\n },\r\n stringValue: {\r\n type: \"string\",\r\n id: 3\r\n },\r\n boolValue: {\r\n type: \"bool\",\r\n id: 4\r\n },\r\n structValue: {\r\n type: \"Struct\",\r\n id: 5\r\n },\r\n listValue: {\r\n type: \"ListValue\",\r\n id: 6\r\n }\r\n }\r\n },\r\n NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\r\n },\r\n ListValue: {\r\n fields: {\r\n values: {\r\n rule: \"repeated\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\n\r\n/**\r\n * Wire format decoder using code generation on top of reflection.\r\n * @namespace\r\n */\r\nvar decoder = exports;\r\n\r\nvar Enum = require(5),\r\n Reader = require(15),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Decodes a message of `this` message's type.\r\n * @param {Reader} reader Reader to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Populated runtime message\r\n * @this Type\r\n */\r\ndecoder.fallback = function fallback(reader, length) {\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = reader instanceof Reader ? reader : Reader(reader),\r\n limit = length === undefined ? reader.len : reader.pos + length,\r\n message = new (this.getCtor())();\r\n while (reader.pos < limit) {\r\n var tag = reader.tag(),\r\n field = fields[tag.id].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type;\r\n \r\n // Known fields\r\n if (field) {\r\n\r\n // Map fields\r\n if (field.map) {\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType,\r\n length = reader.uint32();\r\n var map = message[field.name] = {};\r\n if (length) {\r\n length += reader.pos;\r\n var ks = [], vs = [];\r\n while (reader.pos < length) {\r\n if (reader.tag().id === 1)\r\n ks[ks.length] = reader[keyType]();\r\n else if (types.basic[type] !== undefined)\r\n vs[vs.length] = reader[type]();\r\n else\r\n vs[vs.length] = field.resolvedType.decode(reader, reader.uint32());\r\n }\r\n for (var i = 0; i < ks.length; ++i)\r\n map[typeof ks[i] === 'object' ? util.longToHash(ks[i]) : ks[i]] = vs[i];\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n var values = message[field.name] || (message[field.name] = []);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined && tag.wireType === 2) {\r\n var plimit = reader.uint32() + reader.pos;\r\n while (reader.pos < plimit)\r\n values[values.length] = reader[type]();\r\n\r\n // Non-packed\r\n } else if (types.basic[type] !== undefined)\r\n values[values.length] = reader[type]();\r\n else\r\n values[values.length] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Non-repeated\r\n } else if (types.basic[type] !== undefined)\r\n message[field.name] = reader[type]();\r\n else\r\n message[field.name] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Unknown fields\r\n } else\r\n reader.skipType(tag.wireType);\r\n }\r\n return message;\r\n /* eslint-enable no-invalid-this, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {util.CodegenAppender} Unscoped codegen instance\r\n */\r\ndecoder.generate = function generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray(); \r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())\")\r\n (\"while(r.pos} [values] Enum values as an object, by name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nObject.defineProperties(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: EnumPrototype.getValuesById = function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\r\n };\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (this.values[name] !== undefined)\r\n throw Error('duplicate name \"' + name + '\" in ' + this);\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error('\"' + name + '\" is not a name of ' + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(19),\r\n Enum = require(5),\r\n MapField = require(8),\r\n types = require(20),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string} [rule=optional] Field rule\r\n * @param {string} [extend] Extended type if different from parent\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (extend !== undefined && !util.isString(extend))\r\n throw _TypeError(\"extend\");\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw _TypeError(\"rule\", \"a valid rule string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== 'optional' ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {?Type}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : false;\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {?(Type|Enum)}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {?Field}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {?Field}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nObject.defineProperties(FieldPrototype, {\r\n\r\n /**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n packed: {\r\n get: FieldPrototype.isPacked = function() {\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n if (json.keyType !== undefined)\r\n return MapField.fromJSON(name, json);\r\n return new Field(name, json.id, json.type, json.role, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n rule : this.rule !== \"optional\" && this.rule || undefined,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n var resolved = this.parent.lookup(this.type);\r\n if (resolved instanceof Type) {\r\n this.resolvedType = resolved;\r\n typeDefault = null;\r\n } else if (resolved instanceof Enum) {\r\n this.resolvedType = resolved;\r\n typeDefault = 0;\r\n } else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved determine the default value\r\n var optionDefault;\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else if (this.options && (optionDefault = this.options['default']) !== undefined) // eslint-disable-line dot-notation\r\n this.defaultValue = optionDefault;\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long)\r\n this.defaultValue = util.Long.fromValue(this.defaultValue);\r\n \r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Converts a field value to JSON using the specified options. Note that this method does not account for repeated fields and must be called once for each repeated element instead.\r\n * @param {*} value Field value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {*} Converted value\r\n * @see {@link Prototype#asJSON}\r\n */\r\nFieldPrototype.jsonConvert = function(value, options) {\r\n if (options) {\r\n if (this.resolvedType instanceof Enum && options['enum'] === String) // eslint-disable-line dot-notation\r\n return this.resolvedType.getValuesById()[value];\r\n else if (this.long && options.long)\r\n return options.long === Number\r\n ? typeof value === 'number'\r\n ? value\r\n : util.Long.fromValue(value).toNumber()\r\n : util.Long.fromValue(value, this.type.charAt(0) === 'u').toString();\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = inherits;\r\n\r\nvar Prototype = require(14),\r\n Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Options passed to {@link inherits}, modifying its behavior.\r\n * @typedef InheritanceOptions\r\n * @type {Object}\r\n * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor\r\n * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type\r\n */\r\n\r\n/**\r\n * Inherits a custom class from the message prototype of the specified message type.\r\n * @param {Function} clazz Inheriting class\r\n * @param {Type} type Inherited message type\r\n * @param {InheritanceOptions} [options] Inheritance options\r\n * @returns {Prototype} Created prototype\r\n */\r\nfunction inherits(clazz, type, options) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"clazz\", \"a function\");\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n if (!options)\r\n options = {};\r\n\r\n /**\r\n * This is not an actual type but stands as a reference for any constructor of a custom message class that you pass to the library.\r\n * @name Class\r\n * @extends Prototype\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set on the message\r\n * @see {@link inherits}\r\n */\r\n\r\n var classProperties = {\r\n \r\n /**\r\n * Reference to the reflected type.\r\n * @name Class.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n if (!options.noStatics)\r\n util.merge(classProperties, {\r\n\r\n /**\r\n * Encodes a message of this type to a buffer.\r\n * @name Class.encode\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Encodes a message of this type preceeded by its length as a varint to a buffer.\r\n * @name Class.encodeDelimited\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type from a buffer.\r\n * @name Class.decode\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decode: {\r\n value: function decode(buffer) {\r\n return this.$type.decode(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type preceeded by its length as a varint from a buffer.\r\n * @name Class.decodeDelimited\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decodeDelimited: {\r\n value: function decodeDelimited(buffer) {\r\n return this.$type.decodeDelimited(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Verifies a message of this type.\r\n * @name Class.verify\r\n * @function\r\n * @param {Prototype|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n verify: {\r\n value: function verify(message) {\r\n return this.$type.verify(message);\r\n }\r\n }\r\n\r\n }, true);\r\n\r\n Object.defineProperties(clazz, classProperties);\r\n var prototype = inherits.defineProperties(new Prototype(), type);\r\n clazz.prototype = prototype;\r\n prototype.constructor = clazz;\r\n\r\n if (!options.noRegister)\r\n type.setCtor(clazz);\r\n\r\n return prototype;\r\n}\r\n\r\n/**\r\n * Defines the reflected type's default values and virtual oneof properties on the specified prototype.\r\n * @memberof inherits\r\n * @param {Prototype} prototype Prototype to define properties upon\r\n * @param {Type} type Reflected message type\r\n * @returns {Prototype} The specified prototype\r\n */\r\ninherits.defineProperties = function defineProperties(prototype, type) {\r\n\r\n var prototypeProperties = {\r\n\r\n /**\r\n * Reference to the reflected type.\r\n * @name Prototype#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n // Initialize default values\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n if (!util.isObject(field.defaultValue))\r\n // objects are mutable (i.e. would modify the array on the prototype, not the instance)\r\n prototype[field.name] = field.defaultValue;\r\n });\r\n\r\n // Define each oneof with a non-enumerable getter and setter for the present field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n prototypeProperties[oneof.resolve().name] = {\r\n get: function() {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n var field = oneof.parent.fields[keys[i]];\r\n if (this[keys[i]] != field.defaultValue) // eslint-disable-line eqeqeq\r\n return keys[i];\r\n }\r\n return undefined;\r\n },\r\n set: function(value) {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperties(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(6);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nvar Enum = require(5),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new map field.\r\n * @classdesc Reflected map field.\r\n * @extends Field\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\r\n \r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {?ReflectionObject}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a map field.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n keyType : this.keyType,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n \r\n // Besides a value type, map fields have a key type to resolve\r\n var keyWireType = types.mapKey[this.keyType];\r\n if (keyWireType === undefined) {\r\n var resolved = this.parent.lookup(this.keyType);\r\n if (!(resolved instanceof Enum))\r\n throw Error(\"unresolvable map key type: \" + this.keyType);\r\n this.resolvedKeyType = resolved;\r\n }\r\n\r\n return FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean} [requestStream] Whether the request is streamed\r\n * @param {boolean} [responseStream] Whether the response is streamed\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (!util.isString(requestType))\r\n throw _TypeError(\"requestType\");\r\n if (!util.isString(responseType))\r\n throw _TypeError(\"responseType\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {?Type}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {Object} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object} json JSON object\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var resolved = this.parent.lookup(this.requestType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n this.resolvedRequestType = resolved;\r\n resolved = this.parent.lookup(this.responseType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n this.resolvedResponseType = resolved;\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n Field = require(6),\r\n Service = require(17),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\nvar nestedTypes = [ Enum, Type, Service, Field, Namespace ],\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');\r\n\r\n/**\r\n * Constructs a new namespace.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {?ReflectionObject[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\nObject.defineProperties(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: NamespacePrototype.getNestedArray = function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson)\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw _TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {?ReflectionObject} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespacePrototype.add = function add(object) {\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw _TypeError(\"object\", nestedError);\r\n if (object instanceof Field && object.extend === undefined)\r\n throw _TypeError(\"object\", \"an extension field when not part of a type\");\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespacePrototype.remove = function remove(object) {\r\n if (!(object instanceof ReflectionObject))\r\n throw _TypeError(\"object\", \"a ReflectionObject\");\r\n if (object.parent !== this || !this.nested)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split('.');\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolve() {\r\n var nested = this.getNestedArray(), i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, parentAlreadyChecked) {\r\n if (util.isString(path)) {\r\n if (!path.length)\r\n return null;\r\n path = path.split('.');\r\n } else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1));\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found && (path.length === 1 || found instanceof Namespace && (found = found.lookup(path.slice(1), true))))\r\n return found;\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path);\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.extend = extend;\r\n\r\nvar Root = require(16),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (options && !util.isObject(options))\r\n throw _TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {?Namespace}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(ReflectionObjectPrototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: ReflectionObjectPrototype.getRoot = function getRoot() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: ReflectionObjectPrototype.getFullName = function getFullName() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join('.');\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Lets the specified constructor extend this class.\r\n * @memberof ReflectionObject\r\n * @param {Function} constructor Extending constructor\r\n * @returns {Object} Prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var proto = constructor.prototype = Object.create(this.prototype);\r\n proto.constructor = constructor;\r\n constructor.extend = extend;\r\n return proto;\r\n}\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObjectPrototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Constructor name, space, full name\r\n */\r\nReflectionObjectPrototype.toString = function toString() {\r\n return this.constructor.name + \" \" + this.getFullName();\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(6),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]} [fieldNames] Field names\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw _TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {Array.}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof and are possibly not yet added to its parent.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._fields = [];\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n oneof._fields.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n if (field.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this._fields.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n var index = this._fields.indexOf(field);\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n this._fields.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fields.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(18),\r\n Root = require(16),\r\n Type = require(19),\r\n Field = require(6),\r\n MapField = require(8),\r\n OneOf = require(12),\r\n Enum = require(5),\r\n Service = require(17),\r\n Method = require(9),\r\n types = require(20);\r\n\r\nvar nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n fqTypeRefRe = /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/;\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(name) {\r\n return name.substring(0,1)\r\n + name.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\nvar s_required = \"required\",\r\n s_repeated = \"repeated\",\r\n s_optional = \"optional\",\r\n s_option = \"option\",\r\n s_name = \"name\",\r\n s_type = \"type\";\r\nvar s_open = \"{\",\r\n s_close = \"}\",\r\n s_bopen = '(',\r\n s_bclose = ')',\r\n s_semi = \";\",\r\n s_dq = '\"',\r\n s_sq = \"'\";\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object}\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} [root] Root to populate\r\n * @returns {ParserResult} Parser result\r\n */\r\nfunction parse(source, root) {\r\n /* eslint-disable default-case, callback-return */\r\n if (!root)\r\n root = new Root();\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\r\n\r\n var head = true,\r\n pkg,\r\n imports,\r\n weakImports,\r\n syntax,\r\n isProto3 = false;\r\n\r\n if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n function illegal(token, name) {\r\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (line \" + tn.line() + s_bclose);\r\n }\r\n\r\n function readString() {\r\n var values = [],\r\n token;\r\n do {\r\n if ((token = next()) !== s_dq && token !== s_sq)\r\n throw illegal(token);\r\n values.push(next());\r\n skip(token);\r\n token = peek();\r\n } while (token === s_dq || token === s_sq);\r\n return values.join('');\r\n }\r\n\r\n function readValue(acceptTypeRef) {\r\n var token = next();\r\n switch (lower(token)) {\r\n case s_sq:\r\n case s_dq:\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && typeRefRe.test(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(s_semi);\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\r\n var sign = 1;\r\n if (token.charAt(0) === '-') {\r\n sign = -1;\r\n token = token.substring(1);\r\n }\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, 'number');\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"min\": return 1;\r\n case \"max\": return 0x1FFFFFFF;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === '-' && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!typeRefRe.test(pkg))\r\n throw illegal(pkg, s_name);\r\n ptr = ptr.define(pkg);\r\n skip(s_semi);\r\n }\r\n\r\n function parseImport() {\r\n var token = peek();\r\n var whichImports;\r\n switch (token) {\r\n case \"weak\":\r\n whichImports = weakImports || (weakImports = []);\r\n next();\r\n break;\r\n case \"public\":\r\n next();\r\n // eslint-disable-line no-fallthrough\r\n default:\r\n whichImports = imports || (imports = []);\r\n break;\r\n }\r\n token = readString();\r\n skip(s_semi);\r\n whichImports.push(token);\r\n }\r\n\r\n function parseSyntax() {\r\n skip(\"=\");\r\n syntax = lower(readString());\r\n var p3;\r\n if ([ \"proto2\", p3 = \"proto3\" ].indexOf(syntax) < 0)\r\n throw illegal(syntax, \"syntax\");\r\n isProto3 = syntax === p3;\r\n skip(s_semi);\r\n }\r\n\r\n function parseCommon(parent, token) {\r\n switch (token) {\r\n\r\n case s_option:\r\n parseOption(parent, token);\r\n skip(s_semi);\r\n return true;\r\n\r\n case \"message\":\r\n parseType(parent, token);\r\n return true;\r\n\r\n case \"enum\":\r\n parseEnum(parent, token);\r\n return true;\r\n\r\n case \"service\":\r\n parseService(parent, token);\r\n return true;\r\n\r\n case \"extend\":\r\n parseExtension(parent, token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function parseType(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n case s_required:\r\n case s_optional:\r\n case s_repeated:\r\n parseField(type, tokenLower);\r\n break;\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, s_optional);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (!typeRefRe.test(type))\r\n throw illegal(type, s_type);\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\r\n if (field.repeated)\r\n field.setOption(\"packed\", isProto3, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseMapField(parent) {\r\n skip(\"<\");\r\n var keyType = next();\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, s_type);\r\n skip(\",\");\r\n var valueType = next();\r\n if (!typeRefRe.test(valueType))\r\n throw illegal(valueType, s_type);\r\n skip(\">\");\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (token === s_option) {\r\n parseOption(oneof, token);\r\n skip(s_semi);\r\n } else {\r\n push(token);\r\n parseField(oneof, s_optional);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (lower(token) === s_option)\r\n parseOption(enm);\r\n else\r\n parseEnumField(enm, token);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(s_bopen, true);\r\n var name = next();\r\n if (!typeRefRe.test(name))\r\n throw illegal(name, s_name);\r\n if (custom) {\r\n skip(s_bclose);\r\n name = s_bopen + name + s_bclose;\r\n token = peek();\r\n if (fqTypeRefRe.test(token)) {\r\n name += token;\r\n next();\r\n }\r\n }\r\n skip(\"=\");\r\n parseOptionValue(parent, name);\r\n }\r\n\r\n function parseOptionValue(parent, name) {\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n setOption(parent, name, readValue(true));\r\n // Does not enforce a delimiter to be universal\r\n }\r\n\r\n function setOption(parent, name, value) {\r\n if (parent.setOption)\r\n parent.setOption(name, value);\r\n else\r\n parent[name] = value;\r\n }\r\n\r\n function parseInlineOptions(parent) {\r\n if (skip(\"[\", true)) {\r\n do {\r\n parseOption(parent, s_option);\r\n } while (skip(\",\", true));\r\n skip(\"]\");\r\n }\r\n skip(s_semi);\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n if (!nameRe.test(token))\r\n throw illegal(token, \"service name\");\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(service, tokenLower);\r\n skip(s_semi);\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(s_bopen);\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(s_bclose); skip(\"returns\"); skip(s_bopen);\r\n if (skip(st, true))\r\n responseStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n responseType = token;\r\n skip(s_bclose);\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(method, tokenLower);\r\n skip(s_semi);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n if (!typeRefRe.test(reference))\r\n throw illegal(reference, \"reference\");\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_required:\r\n case s_repeated:\r\n case s_optional:\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(parent, s_optional, reference);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case s_option:\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(s_semi);\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\r\n }\r\n throw illegal(token);\r\n }\r\n }\r\n\r\n return {\r\n 'package' : pkg,\r\n 'imports' : imports,\r\n 'weakImports' : weakImports,\r\n 'syntax' : syntax,\r\n 'root' : root\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Prototype;\r\n\r\n/**\r\n * Options passed to the {@link Prototype|prototype constructor}, modifying its behavior.\r\n * @typedef PrototypeOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Sets only properties that reference a field\r\n */\r\n\r\n/**\r\n * Constructs a new prototype.\r\n * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.\r\n * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @param {PrototypeOptions} [options] Prototype options\r\n * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties, options) {\r\n if (properties) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (fields[keys[i]] || any)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/**\r\n * Converts a runtime message to a JSON object.\r\n * @param {Object.} [options] Conversion options\r\n * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field\r\n * @param {Function} [options.long] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @param {Function} [options.enum=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys = Object.keys(this);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = fields[key = keys[i]],\r\n value = this[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value && value.length) {\r\n var array = new Array(value.length);\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n array[j] = field.jsonConvert(value[j], options);\r\n json[key] = array;\r\n }\r\n } else\r\n json[key] = field.jsonConvert(value, options);\r\n } else if (any)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(24),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n Long = util.Long;\r\n\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader using the specified buffer.\r\n * When called as a function, returns an appropriate reader for the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n if (!(this instanceof Reader))\r\n return util.Buffer && (!buffer || util.Buffer.isBuffer(buffer)) && new BufferReader(buffer) || new Reader(buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\nReaderPrototype._slice = ArrayImpl.prototype.slice || ArrayImpl.prototype.subarray;\r\n\r\n/**\r\n * Tag read.\r\n * @constructor\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @ignore\r\n */\r\nfunction Tag(id, wireType) {\r\n this.id = id;\r\n this.wireType = wireType;\r\n}\r\n\r\n/**\r\n * Reads a tag.\r\n * @returns {{id: number, wireType: number}} Field id and wire type\r\n */\r\nReaderPrototype.tag = function read_tag() {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n return new Tag(this.buf[this.pos] >>> 3, this.buf[this.pos++] & 7);\r\n};\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.int32 = function read_int32() {\r\n var value = 0,\r\n shift = 0,\r\n octet = 0;\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n octet = this.buf[this.pos++];\r\n if (shift < 32)\r\n value |= (octet & 127) << shift;\r\n shift += 7;\r\n } while (octet & 128);\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.uint32 = function read_uint32() {\r\n return this.int32() >>> 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sint32 = function read_sint32() {\r\n var value = this.int32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a possibly 64 bits varint.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction readLongVarint() {\r\n var lo = 0, hi = 0,\r\n i = 0, b = 0;\r\n if (this.len - this.pos > 9) { // fast route\r\n for (i = 0; i < 4; ++i) {\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n } else {\r\n for (i = 0; i < 4; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n }\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.int64 = Long && read_int64_long || read_int64_number;\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.uint64 = Long && read_uint64_long || read_uint64_number;\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sint64 = Long && read_sint64_long || read_sint64_number;\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReaderPrototype.bool = function read_bool() {\r\n return this.int32() !== 0;\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n this.pos += 4;\r\n return this.buf[this.pos - 4]\r\n | this.buf[this.pos - 3] << 8\r\n | this.buf[this.pos - 2] << 16\r\n | this.buf[this.pos - 1] << 24;\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a 64 bit value.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner \r\n * @ignore\r\n */\r\nfunction readLongFixed() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n return new LongBits(\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n ,\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n );\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readLongFixed.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.fixed64 = Long && read_fixed64_long || read_fixed64_number;\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sfixed64 = Long && read_sfixed64_long || read_sfixed64_number;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 23, 4);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 52, 8);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReaderPrototype.bytes = function read_bytes() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReaderPrototype.string = function read_string() {\r\n // ref: https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\r\n var bytes = this.bytes(),\r\n len = bytes.length;\r\n if (len) {\r\n var out = new Array(len), p = 0, c = 0;\r\n while (p < len) {\r\n var c1 = bytes[p++];\r\n if (c1 < 128)\r\n out[c++] = c1;\r\n else if (c1 > 191 && c1 < 224)\r\n out[c++] = (c1 & 31) << 6 | bytes[p++] & 63;\r\n else if (c1 > 239 && c1 < 365) {\r\n var u = ((c1 & 7) << 18 | (bytes[p++] & 63) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63) - 0x10000;\r\n out[c++] = 0xD800 + (u >> 10);\r\n out[c++] = 0xDC00 + (u & 1023);\r\n } else\r\n out[c++] = (c1 & 15) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63;\r\n }\r\n return String.fromCharCode.apply(String, out.slice(0, c));\r\n }\r\n return \"\";\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skip = function skip(length) {\r\n if (length === undefined) {\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n } else {\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n var tag = this.tag();\r\n if (tag.wireType === 4)\r\n break;\r\n this.skipType(tag.wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n default:\r\n throw Error(\"invalid wire type: \" + wireType);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance and frees all resources.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.reset = function reset(buffer) {\r\n if (buffer) {\r\n this.buf = buffer;\r\n this.len = buffer.length;\r\n } else {\r\n this.buf = null; // makes it throw\r\n this.len = 0;\r\n }\r\n this.pos = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nReaderPrototype.finish = function finish(buffer) {\r\n var remain = this.pos\r\n ? this._slice.call(this.buf, this.pos)\r\n : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n\r\n// One time function to initialize BufferReader with the now-known buffer implementation's slice method\r\nvar initBufferReader = function() {\r\n if (!util.Buffer)\r\n throw Error(\"Buffer is not supported\");\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n if (initBufferReader)\r\n initBufferReader();\r\n Reader.call(this, buffer);\r\n}\r\n\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\n\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.float = function read_float_buffer() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = this.buf.readFloatLE(this.pos, true);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.double = function read_double_buffer() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n var value = this.buf.readDoubleLE(this.pos, true);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.string = function read_string_buffer() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return this.buf.toString(\"utf8\", start, end);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.finish = function finish_buffer(buffer) {\r\n var remain = this.pos ? this.buf.slice(this.pos) : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(6),\r\n util = require(21),\r\n common = require(2);\r\n\r\n/**\r\n * Constructs a new root namespace.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {Object} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files. \r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {*} json JSON definition\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string} Resolved path to `target`\r\n */\r\nRootPrototype.resolvePath = util.resolvePath;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {function(?Error, Root=)} [callback] Node-style callback function\r\n * @returns {Promise|undefined} A promise if `callback` has been omitted\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nRootPrototype.load = function load(filename, callback) {\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n var parsed = require(13)(source, self);\r\n if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!queued)\r\n finish(null, self);\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.indexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\r\n\r\n if (!queued)\r\n finish(null);\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.toString = function toString() {\r\n return this.constructor.name;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nvar Method = require(9),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new service.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nObject.defineProperties(ServicePrototype, {\r\n\r\n /**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\n methodsArray: {\r\n get: ServicePrototype.getMethodsArray = function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object} json JSON object\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolve() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @function\r\n * @param {Method} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {function(?Error, Uint8Array=)} callback Node-style callback called with the error, if any, and the response data\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpc RPC implementation ({@link RPCImpl|see})\r\n * @param {boolean} [requestDelimited=false] Whether request data is length delimited\r\n * @param {boolean} [responseDelimited=false] Whether response data is length delimited\r\n * @returns {Object} Runtime service\r\n */\r\nServicePrototype.create = function create(rpc, requestDelimited, responseDelimited) {\r\n var rpcService = {};\r\n Object.defineProperty(rpcService, \"$rpc\", {\r\n value: rpc\r\n });\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[method.name] = function(request, callback) {\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited && method.resolvedRequestType.encodeDelimited(request) || method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === 'function' && setImmediate || setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpc(method, requestData, function(err, responseData) {\r\n if (err) {\r\n callback(err);\r\n return;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited && method.resolvedResponseType.decodeDelimited(responseData) || method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n callback(err2);\r\n return;\r\n }\r\n callback(null, response);\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\r\n","\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\r\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\r\n\r\nvar s_nl = \"\\n\",\r\n s_sl = '/',\r\n s_as = '*';\r\n\r\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\r\n /* eslint-disable default-case, callback-return */\r\n source = source.toString();\r\n \r\n var offset = 0,\r\n length = source.length,\r\n line = 1;\r\n \r\n var stack = [];\r\n\r\n var stringDelim = null;\r\n\r\n /**\r\n * Creates an error for illegal syntax.\r\n * @param {string} subject Subject\r\n * @returns {Error} Error created\r\n * @inner\r\n */\r\n function illegal(subject) {\r\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n }\r\n\r\n /**\r\n * Reads a string till its end.\r\n * @returns {string} String read\r\n * @inner\r\n */\r\n function readString() {\r\n var re = stringDelim === '\"' ? stringDoubleRe : stringSingleRe;\r\n re.lastIndex = offset - 1;\r\n var match = re.exec(source);\r\n if (!match)\r\n throw illegal(\"string\");\r\n offset = re.lastIndex;\r\n push(stringDelim);\r\n stringDelim = null;\r\n return unescape(match[1]);\r\n }\r\n\r\n /**\r\n * Gets the character at `pos` within the source.\r\n * @param {number} pos Position\r\n * @returns {string} Character\r\n * @inner\r\n */\r\n function charAt(pos) {\r\n return source.charAt(pos);\r\n }\r\n\r\n /**\r\n * Obtains the next token.\r\n * @returns {?string} Next token or `null` on eof\r\n * @inner\r\n */\r\n function next() {\r\n if (stack.length > 0)\r\n return stack.shift();\r\n if (stringDelim)\r\n return readString();\r\n var repeat,\r\n prev,\r\n curr;\r\n do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.test(curr = charAt(offset))) {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n }\r\n if (charAt(offset) === s_sl) {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === s_sl) { // Line\r\n while (charAt(++offset) !== s_nl)\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === s_as) { /* Block */\r\n do {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== s_as || curr !== s_sl);\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return s_sl;\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\r\n var end = offset;\r\n delimRe.lastIndex = 0;\r\n var delim = delimRe.test(charAt(end++));\r\n if (!delim)\r\n while (end < length && !delimRe.test(charAt(end)))\r\n ++end;\r\n var token = source.substring(offset, offset = end);\r\n if (token === '\"' || token === \"'\")\r\n stringDelim = token;\r\n return token;\r\n }\r\n\r\n /**\r\n * Pushes a token back to the stack.\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function push(token) {\r\n stack.push(token);\r\n }\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @returns {?string} Token or `null` on eof\r\n * @inner\r\n */\r\n function peek() {\r\n if (!stack.length) {\r\n var token = next();\r\n if (token === null)\r\n return null;\r\n push(token);\r\n }\r\n return stack[0];\r\n }\r\n\r\n /**\r\n * Skips a token.\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] Whether the token is optional\r\n * @returns {boolean} `true` when skipped, `false` if not\r\n * @throws {Error} When a required token is not present\r\n * @inner\r\n */\r\n function skip(expected, optional) {\r\n var actual = peek(),\r\n equals = actual === expected;\r\n if (equals) {\r\n next();\r\n return true;\r\n }\r\n if (!optional)\r\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n return false;\r\n }\r\n\r\n return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable default-case, callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type; \r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nvar Enum = require(5),\r\n OneOf = require(12),\r\n Field = require(6),\r\n Service = require(17),\r\n Prototype = require(14),\r\n Reader = require(15),\r\n Writer = require(26),\r\n encoder = require(4),\r\n decoder = require(3),\r\n verifier = require(25),\r\n inherits = require(7),\r\n util = require(21);\r\n\r\nvar codegen = util.codegen;\r\n\r\n/**\r\n * Constructs a new message type.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {?Function}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: TypePrototype.getFieldsById = function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: TypePrototype.getFieldsArray = function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: TypePrototype.getOneofsArray = function getOneofsArray() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Type#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: TypePrototype.getCtor = function getCtor() {\r\n if (this._ctor)\r\n return this._ctor;\r\n var ctor;\r\n if (codegen.supported)\r\n ctor = codegen(\"p\")(\"P.call(this,p)\").eof(this.getFullName() + \"$ctor\", {\r\n P: Prototype\r\n });\r\n else\r\n ctor = function GenericMessage(properties) {\r\n Prototype.call(this, properties);\r\n };\r\n ctor.prototype = inherits(ctor, this);\r\n this._ctor = ctor;\r\n return ctor;\r\n },\r\n set: TypePrototype.setCtor = function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = null;\r\n delete type.encode;\r\n delete type.decode;\r\n return type;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object} json JSON object\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\r\n });\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\r\n extensions : this.extensions && this.extensions.length ? this.extensions : undefined,\r\n reserved : this.reserved && this.reserved.length ? this.reserved : undefined,\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolve() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nTypePrototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object} [properties] Properties to set\r\n * @param {?Function} [ctor] Constructor to use.\r\n * Defaults to use the internal constuctor.\r\n * @returns {Prototype} Message instance\r\n */\r\nTypePrototype.create = function create(properties, ctor) {\r\n if (typeof properties === 'function') {\r\n ctor = properties;\r\n properties = undefined;\r\n } else if (properties /* already */ instanceof Prototype)\r\n return properties;\r\n if (ctor) {\r\n if (!(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n } else\r\n ctor = this.getCtor();\r\n return new ctor(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encode = function encode(message, writer) {\r\n return (this.encode = codegen.supported\r\n ? encoder.generate(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : encoder.fallback\r\n ).call(this, message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n return (this.decode = codegen.supported\r\n ? decoder.generate(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : decoder.fallback\r\n ).call(this, readerOrBuffer, length);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that enum values are valid and that any required fields are present.\r\n * @param {Prototype|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify(message) {\r\n return (this.verify = codegen.supported\r\n ? verifier.generate(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; })\r\n })\r\n : verifier.fallback\r\n ).call(this, message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\nvar emptyArray = [];\r\nif (Object.freeze)\r\n Object.freeze(emptyArray);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ emptyArray\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = exports;\r\n\r\nutil.codegen = require(22);\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @memberof util\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nfunction isString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\n\r\nutil.isString = isString;\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return Boolean(value && typeof value === 'object');\r\n};\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || function isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=a string] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Returns a promise from a node-style function.\r\n * @memberof util\r\n * @param {function(Error, ...*)} fn Function to call\r\n * @param {Object} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var args = [];\r\n for (var i = 2; i < arguments.length; ++i)\r\n args.push(arguments[i]);\r\n return new Promise(function(resolve, reject) {\r\n fn.apply(ctx, args.concat(\r\n function(err/*, varargs */) {\r\n if (err) reject(err);\r\n else resolve.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n ));\r\n });\r\n}\r\n\r\nutil.asPromise = asPromise;\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {function(?Error, string=)} [callback] Node-style callback\r\n * @returns {Promise|undefined} Promise if callback has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, util, path);\r\n var fs; try { fs = require(\"fs\"); } catch (e) {} // eslint-disable-line no-empty\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", callback);\r\n var xhr = new XMLHttpRequest();\r\n function onload() {\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n if (isString(xhr.responseText))\r\n return callback(null, xhr.responseText);\r\n return callback(Error(\"request failed\"));\r\n }\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState === 4)\r\n onload();\r\n };\r\n xhr.open(\"GET\", path, true);\r\n xhr.send();\r\n return undefined;\r\n}\r\n\r\nutil.fetch = fetch;\r\n\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @memberof util\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\nfunction isAbsolutePath(path) {\r\n return /^(?:\\/|[a-zA-Z0-9]+:)/.test(path);\r\n}\r\n\r\nutil.isAbsolutePath = isAbsolutePath;\r\n\r\n/**\r\n * Normalizes the specified path.\r\n * @memberof util\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\nfunction normalizePath(path) {\r\n path = path.replace(/\\\\/g, '/')\r\n .replace(/\\/{2,}/g, '/');\r\n var parts = path.split('/');\r\n var abs = isAbsolutePath(path);\r\n var prefix = \"\";\r\n if (abs)\r\n prefix = parts.shift() + '/';\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === '..') {\r\n if (i > 0)\r\n parts.splice(--i, 2);\r\n else if (abs)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === '.')\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join('/');\r\n}\r\n\r\nutil.normalizePath = normalizePath;\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path that was used to fetch the origin file\r\n * @param {string} importPath Import path specified in the origin file\r\n * @param {boolean} [alreadyNormalized] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the imported file\r\n */\r\nutil.resolvePath = function resolvePath(originPath, importPath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n importPath = normalizePath(importPath);\r\n if (isAbsolutePath(importPath))\r\n return importPath;\r\n if (!alreadyNormalized)\r\n originPath = normalizePath(originPath);\r\n originPath = originPath.replace(/(?:\\/|^)[^/]+$/, '');\r\n return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath;\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object} dst Destination object\r\n * @param {Object} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n// Reserved words, ref: https://msdn.microsoft.com/en-us/library/ttyab5c8.aspx\r\n// var reserved = \"break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,protected,return,super,switch,this,throw,true,try,typeof,var,while,with,abstract,boolean,byte,char,decimal,double,enum,final,float,get,implements,int,interface,internal,long,package,private,protected,public,sbyte,set,short,static,uint,ulong,ushort,void,assert,ensure,event,goto,invariant,namespace,native,require,synchronized,throws,transient,use,volatile\".split(',');\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n // NOTE: While dot notation looks cleaner it doesn't seem to have a significant impact on performance.\r\n // Hence, we can safe the extra bytes from providing the reserved keywords above for pre-ES5 envs.\r\n return /* /^[a-z_$][a-z0-9_$]*$/i.test(prop) && !reserved.indexOf(prop) ? \".\" + prop : */ \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0);\r\n};\r\n\r\n// Merge in runtime utility\r\nutil.merge(util, require(24));\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * Programmatically generates a function.\r\n * @memberof util\r\n * @param {...string} params Function parameter names\r\n * @returns {util.CodegenAppender} Printf-like appender function\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen(/* varargs */) {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'];\r\n\r\n var indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * Appends a printf-like formatted line to the generated source. Returned when calling {@link util.codegen}.\r\n * @typedef CodegenAppender\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} format A printf-like format string\r\n * @param {...*} params Format replacements\r\n * @returns {util.CodegenAppender} Itself\r\n * @property {util.CodegenStringer} str\r\n * @property {util.CodegenEnder} eof\r\n * @see {@link https://nodejs.org/docs/latest/api/util.html#util_util_format_format_args}\r\n */\r\n /**/\r\n function gen() {\r\n var fmt = [];\r\n for (var i = 0; i < arguments.length; ++i)\r\n fmt[i] = arguments[i];\r\n var line = gen.fmt.apply(null, fmt);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (var index = 0; index < level; ++index)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n gen.fmt = function fmt(format) {\r\n var params = Array.prototype.slice.call(arguments, 1),\r\n index = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var param = params[index++];\r\n return $1 === \"j\"\r\n ? JSON.stringify(param)\r\n : String(param);\r\n });\r\n };\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @typedef CodegenStringer\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n */\r\n /**/\r\n gen.str = function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + args.join(\",\") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n };\r\n\r\n /**\r\n * Ends generation and builds the function.\r\n * @typedef CodegenEnder\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object|Array.} [scope] Function scope\r\n * @returns {function} A function to apply the scope manually when `scope` is an array, otherwise the generated function with scope applied\r\n */\r\n /**/\r\n gen.eof = function eof(name, scope) {\r\n if (name && typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var code = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + code.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n code = \"return \" + code;\r\n var params, values = [];\r\n if (Array.isArray(scope)) {\r\n params = scope.slice();\r\n } else if (scope) {\r\n params = Object.keys(scope);\r\n values = params.map(function(key) { return scope[key]; });\r\n } else\r\n params = [];\r\n var fn = Function.apply(null, params.concat(code)); // eslint-disable-line no-new-func\r\n return values ? fn.apply(null, values) : fn();\r\n };\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false;\r\ntry { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\n\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(21);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n value = Math.abs(value);\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nLongBits.from = function from(value) {\r\n switch (typeof value) { // eslint-disable-line default-case\r\n case 'number':\r\n return LongBits.fromNumber(value);\r\n case 'string':\r\n value = util.Long.fromString(value); // throws without a long lib\r\n }\r\n return (value.low || value.high) && new LongBits(value.low >>> 0, value.high >>> 0) || zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBitsPrototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n this.lo = ~this.lo + 1 >>> 0;\r\n this.hi = ~this.hi >>> 0;\r\n if (!this.lo)\r\n this.hi = this.hi + 1 >>> 0;\r\n return -(this.lo + this.hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBitsPrototype.toLong = function toLong(unsigned) {\r\n return new util.Long(this.lo, this.hi, unsigned);\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBitsPrototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 & 255,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24 & 255\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBitsPrototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n if (part2 === 0) {\r\n if (part1 === 0)\r\n return part0 < 1 << 14\r\n ? part0 < 1 << 7 ? 1 : 2\r\n : part0 < 1 << 21 ? 3 : 4;\r\n return part1 < 1 << 14\r\n ? part1 < 1 << 7 ? 5 : 6\r\n : part1 < 1 << 21 ? 7 : 8;\r\n }\r\n return part2 < 1 << 7 ? 9 : 10;\r\n};\r\n","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nvar LongBits = util.LongBits = require(\"./longbits\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nvar isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Optional buffer class to use.\r\n * If you assign any compatible buffer implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Buffer = null;\r\n\r\nif (isNode)\r\n try { util.Buffer = require(\"buffer\").Buffer; } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Optional Long class to use.\r\n * If you assign any compatible long implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long && isNode)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? LongBits.from(value).toHash()\r\n : '\\0\\0\\0\\0\\0\\0\\0\\0';\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === 'number'\r\n ? typeof b === 'number'\r\n ? a !== b\r\n : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === 'number'\r\n ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Runtime message verifier using code generation on top of reflection.\r\n * @namespace\r\n */\r\nvar verifier = exports;\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n util = require(21);\r\n\r\n/**\r\n * Verifies a runtime message of `this` message type.\r\n * @param {Prototype|Object} message Runtime message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n * @this {Type}\r\n */\r\nverifier.fallback = function fallback(message) {\r\n var fields = this.getFieldsArray(),\r\n i = 0;\r\n while (i < fields.length) {\r\n var field = fields[i++].resolve(),\r\n value = message[field.name];\r\n\r\n if (value === undefined) {\r\n if (field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Enum && field.resolvedType.getValuesById()[value] === undefined) {\r\n return \"invalid enum value \" + field.name + \" = \" + value + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (!value && field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n var reason;\r\n if ((reason = field.resolvedType.verify(value)) !== null)\r\n return reason;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {util.CodegenAppender} Unscoped codegen instance\r\n */\r\nverifier.generate = function generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n var hasReasonVar = false;\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n if (field.required) { gen\r\n\r\n (\"if(m%s===undefined)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, mtype.getFullName());\r\n\r\n } else if (field.resolvedType instanceof Enum) {\r\n var values = util.toArray(field.resolvedType.values); gen\r\n\r\n (\"switch(m%s){\", prop)\r\n (\"default:\")\r\n (\"return 'invalid enum value %s = '+m%s+' in %s'\", field.name, prop, mtype.getFullName());\r\n\r\n for (var j = 0, l = values.length; j < l; ++j) gen\r\n (\"case %d:\", values[j]); gen\r\n (\"}\");\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (field.required) gen\r\n\r\n (\"if(!m%s)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, mtype.getFullName());\r\n\r\n if (!hasReasonVar) { gen(\"var r\"); hasReasonVar = true; } gen\r\n\r\n (\"if((r=types[%d].verify(m%s))!==null)\", i, prop)\r\n (\"return r\");\r\n }\r\n }\r\n return gen\r\n (\"return null\");\r\n /* eslint-enable no-unexpected-multiline */\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(24),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits;\r\n\r\n/**\r\n * Constructs a new writer operation.\r\n * @classdesc Scheduled writer operation.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {*} val Value to write\r\n * @param {number} len Value byte length\r\n * @private\r\n * @ignore\r\n */\r\nfunction Op(fn, val, len) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {?Writer.Op}\r\n */\r\n this.next = null;\r\n}\r\n\r\nWriter.Op = Op;\r\n\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n}\r\n\r\nWriter.State = State;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * When called as a function, returns an appropriate writer for the current environment.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @exports Writer\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n if (!(this instanceof Writer))\r\n return util.Buffer && new BufferWriter() || new Writer();\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * State stack.\r\n * @type {Object[]}\r\n */\r\n this.stack = [];\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling linked operations with already prepared values.\r\n}\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.push = function push(fn, len, val) {\r\n var op = new Op(fn, val, len);\r\n this.tail.next = op;\r\n this.tail = op;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(buf, pos, val) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\n/**\r\n * Writes a tag.\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.tag = function write_tag(id, wireType) {\r\n return this.push(writeByte, 1, id << 3 | wireType & 7);\r\n};\r\n\r\nfunction writeVarint32(buf, pos, val) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value >>>= 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this.push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint32 = function write_sint32(value) {\r\n return this.uint32(value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeVarint64(buf, pos, val) {\r\n // tends to deoptimize. stays optimized when using bits directly.\r\n while (val.hi || val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.int64 = WriterPrototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sint64 = function sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bool = function write_bool(value) {\r\n return this.push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(buf, pos, val) {\r\n buf[pos++] = val & 255;\r\n buf[pos++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24 & 255;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\nfunction writeFloat(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 23, 4);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nfunction writeDouble(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 52, 8);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 8, value);\r\n};\r\n\r\nvar writeBytes = ArrayImpl.prototype.set\r\n ? function writeBytes_set(buf, pos, val) { buf.set(val, pos); }\r\n : function writeBytes_for(buf, pos, val) { for (var i = 0; i < val.length; ++i) buf[pos + i] = val[i]; };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeString(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i) {\r\n var c1 = val.charCodeAt(i), c2;\r\n if (c1 < 128) {\r\n buf[pos++] = c1;\r\n } else if (c1 < 2048) {\r\n buf[pos++] = c1 >> 6 | 192;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < val.length && ((c2 = val.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buf[pos++] = c1 >> 18 | 240;\r\n buf[pos++] = c1 >> 12 & 63 | 128;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else {\r\n buf[pos++] = c1 >> 12 | 224;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n }\r\n }\r\n}\r\n\r\nfunction byteLength(val) {\r\n var strlen = val.length >>> 0;\r\n if (strlen) {\r\n var len = 0;\r\n for (var i = 0, c1; i < strlen; ++i) {\r\n c1 = val.charCodeAt(i);\r\n if (c1 < 128)\r\n len += 1;\r\n else if (c1 < 2048)\r\n len += 2;\r\n else if ((c1 & 0xFC00) === 0xD800 && i + 1 < strlen && (val.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.string = function write_string(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeString, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#ldelim}, {@link Writer#reset} or {@link Writer#finish} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fork = function fork() {\r\n this.stack.push(new State(this));\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.reset = function reset() {\r\n if (this.stack.length) {\r\n var state = this.stack.pop();\r\n this.head = state.head;\r\n this.tail = state.tail;\r\n this.len = state.len;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @param {number} [id] Id with wire type 2 to prepend where applicable\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.ldelim = function ldelim(id) {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset();\r\n if (id !== undefined)\r\n this.tag(id, 2);\r\n this.uint32(len);\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations and frees all resources.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriterPrototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = new ArrayImpl(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer writer.\r\n * @classdesc Wire format writer using node buffers.\r\n * @exports BufferWriter\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nfunction writeFloatBuffer(buf, pos, val) {\r\n buf.writeFloatLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.float = function write_float_buffer(value) {\r\n return this.push(writeFloatBuffer, 4, value);\r\n};\r\n\r\nfunction writeDoubleBuffer(buf, pos, val) {\r\n buf.writeDoubleLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.double = function write_double_buffer(value) {\r\n return this.push(writeDoubleBuffer, 8, value);\r\n};\r\n\r\nfunction writeBytesBuffer(buf, pos, val) {\r\n if (val.length)\r\n val.copy(buf, pos, 0, val.length);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytesBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeStringBuffer(buf, pos, val) {\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeStringBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.finish = function finish_buffer() {\r\n var head = this.head.next, // skip noop\r\n buf = util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(this.len) || new util.Buffer(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @param {function(?Error, Root=)} [callback] Callback function\r\n * @returns {Promise|Object} A promise if callback has been omitted, otherwise the protobuf namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === 'function') {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback) || protobuf;\r\n}\r\n\r\nprotobuf.load = load;\r\n\r\n// Parser\r\nprotobuf.tokenize = require(\"./tokenize\");\r\nprotobuf.parse = require(\"./parse\");\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = protobuf.Writer.BufferWriter;\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = protobuf.Reader.BufferReader;\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Prototype = require(\"./prototype\");\r\nprotobuf.inherits = require(\"./inherits\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.util = util;\r\n"],"sourceRoot":"."} \ No newline at end of file diff --git a/dist/protobuf.min.js b/dist/protobuf.min.js index ed996e748..d0819e3a4 100644 --- a/dist/protobuf.min.js +++ b/dist/protobuf.min.js @@ -1,9 +1,9 @@ /*! * protobuf.js v6.0.1 (c) 2016 Daniel Wirtz - * Compiled Thu, 01 Dec 2016 15:54:29 UTC + * Compiled Fri, 02 Dec 2016 11:19:57 UTC * Licensed under the Apache License, Version 2.0 * see: https://github.com/dcodeIO/protobuf.js for details */ -!function e(t,i,n){function r(o,u){if(!i[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var h=i[o]={exports:{}};t[o][0].call(h.exports,function(e){var i=t[o][1][e];return r(i?i:e)},h,h.exports,e,t,i,n)}return i[o].exports}for(var s="function"==typeof require&&require,o=0;o>1,h=-7,l=i?0:r-1,c=i?1:-1,d=e[t+l];for(l+=c,s=d&(1<<-h)-1,d>>=-h,h+=u;h>0;s=256*s+e[t+l],l+=c,h-=8);for(o=s&(1<<-h)-1,s>>=-h,h+=n;h>0;o=256*o+e[t+l],l+=c,h-=8);if(0===s)s=1-f;else{if(s===a)return o?NaN:(d?-1:1)*(1/0);o+=Math.pow(2,n),s-=f}return(d?-1:1)*o*Math.pow(2,s-n)},i.write=function(e,t,i,n,r,s){var o,u,a,f=8*s-r-1,h=(1<>1,c=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?s-1:0,p=n?-1:1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,o=h):(o=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-o))<1&&(o--,a*=2),t+=o+l>=1?c/a:c*Math.pow(2,1-l),t*a>=2&&(o++,a/=2),o+l>=h?(u=0,o=h):o+l>=1?(u=(t*a-1)*Math.pow(2,r),o+=l):(u=t*Math.pow(2,l-1)*Math.pow(2,r),o=0));r>=8;e[i+d]=255&u,d+=p,u/=256,r-=8);for(o=o<0;e[i+d]=255&o,d+=p,o/=256,f-=8);e[i+d-p]|=128*v}},{}],2:[function(e,t,i){"use strict";function n(e,t){/\/|\./.test(e)||(e="google/protobuf/"+e+".proto",t={nested:{google:{nested:{protobuf:{nested:t}}}}}),n[e]=t}t.exports=n,n("any",{Any:{fields:{type_url:{type:"string",id:1},value:{type:"bytes",id:2}}}});var r;n("duration",{Duration:r={fields:{seconds:{type:"int64",id:1},nanos:{type:"int32",id:2}}}}),n("timestamp",{Timestamp:r}),n("empty",{Empty:{fields:{}}}),n("struct",{Struct:{fields:{fields:{keyType:"string",type:"Value",id:1}}},Value:{oneofs:{kind:{oneof:["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},fields:{nullValue:{type:"NullValue",id:1},numberValue:{type:"double",id:2},stringValue:{type:"string",id:3},boolValue:{type:"bool",id:4},structValue:{type:"Struct",id:5},listValue:{type:"ListValue",id:6}}},NullValue:{values:{NULL_VALUE:0}},ListValue:{fields:{values:{rule:"repeated",type:"Value",id:1}}}})},{}],3:[function(e,t,i){"use strict";var n=i,r=e(5),s=e(15),o=e(20),u=e(21);n.fallback=function(e,t){for(var i=this.getFieldsById(),e=e instanceof s?e:s(e),n=void 0===t?e.len:e.pos+t,a=new(this.getCtor());e.pos0;){var r=e.shift();if(i.nested&&i.nested[r]){if(i=i.nested[r],!(i instanceof n))throw Error("path conflicts with non-namespace objects")}else i.add(i=new n(r))}return t&&i.addJSON(t),i},u.resolveAll=function(){for(var e=this.getNestedArray(),t=0;t-1&&this.oneof.splice(t,1),e.parent&&e.parent.remove(e),e.partOf=null,this},o.onAdd=function(e){s.prototype.onAdd.call(this,e),r(this)},o.onRemove=function(e){this.g.forEach(function(e){e.parent&&e.parent.remove(e)}),s.prototype.onRemove.call(this,e)}},{11:11,21:21,6:6}],13:[function(e,t,i){"use strict";function n(e){return null===e?null:e.toLowerCase()}function r(e){return e.substring(0,1)+e.substring(1).replace(/_([a-z])(?=[a-z]|$)/g,function(e,t){return t.toUpperCase()})}function s(e,t){function i(e,t){return Error("illegal "+(t||"token")+" '"+e+"' (line "+ne.line()+j)}function s(){var e,t=[];do{if((e=re())!==F&&e!==J)throw i(e);t.push(re()),ue(e),e=oe()}while(e===F||e===J);return t.join("")}function q(e){var t=re();switch(n(t)){case J:case F:return se(t),s();case"true":return!0;case"false":return!1}try{return V(t)}catch(n){if(e&&g.test(t))return t;throw i(t,"value")}}function B(){var e=z(re()),t=e;return ue("to",!0)&&(t=z(re())),ue(E),[e,t]}function V(e){var t=1;"-"===e.charAt(0)&&(t=-1,e=e.substring(1));var r=n(e);switch(r){case"inf":return t*(1/0);case"nan":return NaN;case"0":return 0}if(/^[1-9][0-9]*$/.test(e))return t*parseInt(e,10);if(/^0[x][0-9a-f]+$/.test(r))return t*parseInt(e,16);if(/^0[0-7]+$/.test(e))return t*parseInt(e,8);if(/^(?!e)[0-9]*(?:\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(r))return t*parseFloat(e);throw i(e,"number")}function z(e,t){var r=n(e);switch(r){case"min":return 1;case"max":return 536870911;case"0":return 0}if("-"===e.charAt(0)&&!t)throw i(e,"id");if(/^-?[1-9][0-9]*$/.test(e))return parseInt(e,10);if(/^-?0[x][0-9a-f]+$/.test(r))return parseInt(e,16);if(/^-?0[0-7]+$/.test(e))return parseInt(e,8);throw i(e,"id")}function L(){if(void 0!==Y)throw i("package");if(Y=re(),!g.test(Y))throw i(Y,x);le=le.define(Y),ue(E)}function P(){var e,t=oe();switch(t){case"weak":e=te||(te=[]),re();break;case"public":re();default:e=ee||(ee=[])}t=s(),ue(E),e.push(t)}function R(){ue("="),ie=n(s());var e;if(["proto2",e="proto3"].indexOf(ie)<0)throw i(ie,"syntax");fe=ie===e,ue(E)}function $(e,t){switch(t){case O:return K(e,t),ue(E),!0;case"message":return I(e,t),!0;case"enum":return U(e,t),!0;case"service":return G(e,t),!0;case"extend":return Q(e,t),!0}return!1}function I(e,t){var r=re();if(!y.test(r))throw i(r,"type name");var s=new a(r);if(ue(T,!0)){for(;(t=re())!==S;){var o=n(t);if(!$(s,t))switch(o){case"map":C(s,o);break;case w:case k:case b:M(s,o);break;case"oneof":D(s,o);break;case"extensions":(s.extensions||(s.extensions=[])).push(B(s,o));break;case"reserved":(s.reserved||(s.reserved=[])).push(B(s,o));break;default:if(!fe||!g.test(t))throw i(t);se(t),M(s,k)}}ue(E,!0)}else ue(E);e.add(s)}function M(e,t,n){var s=re();if(!g.test(s))throw i(s,N);var o=re();if(!y.test(o))throw i(o,x);o=r(o),ue("=");var u=z(re()),a=Z(new f(o,u,s,t,n));a.repeated&&a.setOption("packed",fe,!0),e.add(a)}function C(e){ue("<");var t=re();if(void 0===v.mapKey[t])throw i(t,N);ue(",");var n=re();if(!g.test(n))throw i(n,N);ue(">");var s=re();if(!y.test(s))throw i(s,x);s=r(s),ue("=");var o=z(re()),u=Z(new h(s,o,t,n));e.add(u)}function D(e,t){var n=re();if(!y.test(n))throw i(n,x);n=r(n);var s=new l(n);if(ue(T,!0)){for(;(t=re())!==S;)t===O?(K(s,t),ue(E)):(se(t),M(s,k));ue(E,!0)}else ue(E);e.add(s)}function U(e,t){var r=re();if(!y.test(r))throw i(r,x);var s={},o=new c(r,s);if(ue(T,!0)){for(;(t=re())!==S;)n(t)===O?K(o):_(o,t);ue(E,!0)}else ue(E);e.add(o)}function _(e,t){if(!y.test(t))throw i(t,x);var n=t;ue("=");var r=z(re(),!0);e.values[n]=r,Z({})}function K(e,t){var n=ue(A,!0),r=re();if(!g.test(r))throw i(r,x);n&&(ue(j),r=A+r+j,t=oe(),m.test(t)&&(r+=t,re())),ue("="),H(e,r)}function H(e,t){if(ue(T,!0)){for(;(he=re())!==S;){if(!y.test(he))throw i(he,x);t=t+"."+he,ue(":",!0)?W(e,t,q(!0)):H(e,t)}ue(E,!0)}else W(e,t,q(!0))}function W(e,t,i){e.setOption?e.setOption(t,i):e[t]=i}function Z(e){if(ue("[",!0)){do K(e,O);while(ue(",",!0));ue("]")}return ue(E),e}function G(e,t){if(t=re(),!y.test(t))throw i(t,"service name");var r=t,s=new d(r);if(ue(T,!0)){for(;(t=re())!==S;){var o=n(t);switch(o){case O:K(s,o),ue(E);break;case"rpc":X(s,o);break;default:throw i(t)}}ue(E,!0)}else ue(E);e.add(s)}function X(e,t){var r=t,s=re();if(!y.test(s))throw i(s,x);var o,u,a,f;ue(A);var h;if(ue(h="stream",!0)&&(u=!0),!g.test(t=re()))throw i(t);if(o=t,ue(j),ue("returns"),ue(A),ue(h,!0)&&(f=!0),!g.test(t=re()))throw i(t);a=t,ue(j);var l=new p(s,r,o,a,u,f);if(ue(T,!0)){for(;(t=re())!==S;){var c=n(t);switch(c){case O:K(l,c),ue(E);break;default:throw i(t)}}ue(E,!0)}else ue(E);e.add(l)}function Q(e,t){var r=re();if(!g.test(r))throw i(r,"reference");if(ue(T,!0)){for(;(t=re())!==S;){var s=n(t);switch(s){case w:case b:case k:M(e,s,r);break;default:if(!fe||!g.test(t))throw i(t);se(t),M(e,k,r)}}ue(E,!0)}else ue(E)}t||(t=new u);var Y,ee,te,ie,ne=o(e),re=ne.next,se=ne.push,oe=ne.peek,ue=ne.skip,ae=!0,fe=!1;t||(t=new u);for(var he,le=t;null!==(he=re());){var ce=n(he);switch(ce){case"package":if(!ae)throw i(he);L();break;case"import":if(!ae)throw i(he);P();break;case"syntax":if(!ae)throw i(he);R();break;case O:if(!ae)throw i(he);K(le,he),ue(E);break;default:if($(le,he)){ae=!1;continue}throw i(he)}}return{package:Y,imports:ee,weakImports:te,syntax:ie,root:t}}t.exports=s;var o=e(18),u=e(16),a=e(19),f=e(6),h=e(8),l=e(12),c=e(5),d=e(17),p=e(9),v=e(20),y=/^[a-zA-Z_][a-zA-Z_0-9]*$/,g=/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,m=/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/,w="required",b="repeated",k="optional",O="option",x="name",N="type",T="{",S="}",A="(",j=")",E=";",F='"',J="'"},{12:12,16:16,17:17,18:18,19:19,20:20,5:5,6:6,8:8,9:9}],14:[function(e,t,i){"use strict";function n(e,t){if(e)for(var i=!(t&&t.fieldsOnly),n=this.constructor.$type.fields,r=Object.keys(e),s=0;s "+e.len)}function r(e){return this instanceof r?(this.buf=e,this.pos=0,void(this.len=e.length)):w.Buffer&&(!e||w.Buffer.isBuffer(e))&&new m(e)||new r(e)}function s(e,t){this.id=e,this.wireType=t}function o(){var e=0,t=0,i=0,r=0;if(this.len-this.pos>9){for(i=0;i<4;++i)if(r=this.buf[this.pos++],e|=(127&r)<<7*i,r<128)return new k(e>>>0,t>>>0);if(r=this.buf[this.pos++],e|=(127&r)<<28,t|=(127&r)>>4,r<128)return new k(e>>>0,t>>>0);for(i=0;i<5;++i)if(r=this.buf[this.pos++],t|=(127&r)<<7*i+3,r<128)return new k(e>>>0,t>>>0)}else{for(i=0;i<4;++i){if(this.pos>=this.len)throw n(this);if(r=this.buf[this.pos++],e|=(127&r)<<7*i,r<128)return new k(e>>>0,t>>>0)}if(this.pos>=this.len)throw n(this);if(r=this.buf[this.pos++],e|=(127&r)<<28,t|=(127&r)>>4,r<128)return new k(e>>>0,t>>>0);for(i=0;i<5;++i){if(this.pos>=this.len)throw n(this);if(r=this.buf[this.pos++],t|=(127&r)<<7*i+3,r<128)return new k(e>>>0,t>>>0)}}throw Error("invalid varint encoding")}function u(){return o.call(this).toLong()}function a(){return o.call(this).toNumber()}function f(){return o.call(this).toLong(!0)}function h(){return o.call(this).toNumber(!0)}function l(){return o.call(this).zzDecode().toLong()}function c(){return o.call(this).zzDecode().toNumber()}function d(){if(this.pos+8>this.len)throw n(this,8);return new k((this.buf[this.pos++]|this.buf[this.pos++]<<8|this.buf[this.pos++]<<16|this.buf[this.pos++]<<24)>>>0,(this.buf[this.pos++]|this.buf[this.pos++]<<8|this.buf[this.pos++]<<16|this.buf[this.pos++]<<24)>>>0)}function p(){return d.call(this).toLong(!0)}function v(){return d.call(this).toNumber(!0)}function y(){return d.call(this).zzDecode().toLong()}function g(){return d.call(this).zzDecode().toNumber()}function m(e){T&&T(),r.call(this,e)}t.exports=r,r.BufferReader=m;var w=e(21),b=e(1),k=w.LongBits,O=w.Long,x=r.prototype,N="undefined"!=typeof Uint8Array?Uint8Array:Array;x.h=N.prototype.slice||N.prototype.subarray,x.tag=function(){if(this.pos>=this.len)throw n(this);return new s(this.buf[this.pos]>>>3,7&this.buf[this.pos++])},x.int32=function(){var e=0,t=0,i=0;do{if(this.pos>=this.len)throw n(this);i=this.buf[this.pos++],t<32&&(e|=(127&i)<>>0},x.sint32=function(){var e=this.int32();return e>>>1^-(1&e)},x.int64=O&&u||a,x.uint64=O&&f||h,x.sint64=O&&l||c,x.bool=function(){return 0!==this.int32()},x.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return this.pos+=4,this.buf[this.pos-4]|this.buf[this.pos-3]<<8|this.buf[this.pos-2]<<16|this.buf[this.pos-1]<<24},x.sfixed32=function(){var e=this.fixed32();return e>>>1^-(1&e)},x.fixed64=O&&p||v,x.sfixed64=O&&y||g,x.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=b.read(this.buf,this.pos,!1,23,4);return this.pos+=4,e},x.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=b.read(this.buf,this.pos,!1,52,8);return this.pos+=8,e},x.bytes=function(){var e=this.int32()>>>0,t=this.pos,i=this.pos+e;if(i>this.len)throw n(this,e);return this.pos+=e,t===i?new this.buf.constructor(0):this.h.call(this.buf,t,i)},x.string=function(){var e=this.bytes(),t=e.length;if(t){for(var i=new Array(t),n=0,r=0;n191&&s<224)i[r++]=(31&s)<<6|63&e[n++];else if(s>239&&s<365){var o=((7&s)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;i[r++]=55296+(o>>10),i[r++]=56320+(1023&o)}else i[r++]=(15&s)<<12|(63&e[n++])<<6|63&e[n++]}return String.fromCharCode.apply(String,i.slice(0,r))}return""},x.skip=function(e){if(void 0===e){do if(this.pos>=this.len)throw n(this);while(128&this.buf[this.pos++])}else{if(this.pos+e>this.len)throw n(this,e);this.pos+=e}return this},x.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){var t=this.tag();if(4===t.wireType)break;this.skipType(t.wireType)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type: "+e)}return this},x.reset=function(e){return e?(this.buf=e,this.len=e.length):(this.buf=null,this.len=0),this.pos=0,this},x.finish=function(e){var t=this.pos?this.h.call(this.buf,this.pos):this.buf;return this.reset(e),t};var T=function(){if(!w.Buffer)throw Error("Buffer is not supported");S.h=w.Buffer.prototype.slice,T=!1},S=m.prototype=Object.create(r.prototype);S.constructor=m,S.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=this.buf.readFloatLE(this.pos,!0);return this.pos+=4,e},S.double=function(){if(this.pos+8>this.len)throw n(this,8);var e=this.buf.readDoubleLE(this.pos,!0);return this.pos+=8,e},S.string=function(){var e=this.int32()>>>0,t=this.pos,i=this.pos+e;if(i>this.len)throw n(this,e);return this.pos+=e,this.buf.toString("utf8",t,i)},S.finish=function(e){var t=this.pos?this.buf.slice(this.pos):this.buf;return this.reset(e),t}},{1:1,21:21}],16:[function(e,t,i){"use strict";function n(e){s.call(this,"",e),this.deferred=[],this.files=[]}function r(e){var t=e.parent.lookup(e.extend);if(t){var i=new u(e.getFullName(),e.id,e.type,e.rule,(void 0),e.options);return i.declaringField=e,e.extensionField=i,t.add(i),!0}return!1}t.exports=n;var s=e(10),o=s.extend(n),u=e(6),a=e(21),f=e(2);n.fromJSON=function(e,t){return t||(t=new n),t.setOptions(e.options).addJSON(e.nested)},o.resolvePath=a.resolvePath,o.load=function t(i,n){function r(e,t){if(n){var i=n;n=null,i(e,t)}}function s(t,i){try{if(a.isString(i)&&"{"===i.charAt(0)&&(i=JSON.parse(i)),a.isString(i)){var n=e(13)(i,u);n.imports&&n.imports.forEach(function(e){o(u.resolvePath(t,e))}),n.weakImports&&n.weakImports.forEach(function(e){o(u.resolvePath(t,e),!0)})}else u.setOptions(i.options).addJSON(i.nested)}catch(e){return void r(e)}h||r(null,u)}function o(e,t){var i=e.indexOf("google/protobuf/");if(i>-1){var o=e.substring(i);o in f&&(e=o)}if(!(u.files.indexOf(e)>-1)){if(u.files.push(e),e in f)return++h,void setTimeout(function(){--h,s(e,f[e])});++h,a.fetch(e,function(i,o){if(--h,n)return i?void(t||r(i)):void s(e,o)})}}var u=this;if(!n)return a.asPromise(t,u,i);var h=0;a.isString(i)&&(i=[i]),i.forEach(function(e){o(u.resolvePath("",e))}),h||r(null)},o.e=function(e){var t=this.deferred.slice();this.deferred=[];for(var i=0;i-1&&this.deferred.splice(t,1)}e.extensionField&&(e.extensionField.parent.remove(e.extensionField),e.extensionField=null)}else if(e instanceof s)for(var i=e.getNestedArray(),n=0;n0)return m.shift();if(w)return i();var n,o,u;do{if(v===y)return null;for(n=!1;/\s/.test(u=r(v));)if(u===a&&++g,++v===y)return null;if(r(v)===f){if(++v===y)throw t("comment");if(r(v)===f){for(;r(++v)!==a;)if(v===y)return null;++v,++g,n=!0}else{if((u=r(v))!==h)return f;do{if(u===a&&++g,++v===y)return null;o=u,u=r(v)}while(o!==h||u!==f);++v,n=!0}}}while(n);if(v===y)return null;var l=v;s.lastIndex=0;var c=s.test(r(l++));if(!c)for(;l]/g,o=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,u=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,a="\n",f="/",h="*"},{}],19:[function(e,t,i){"use strict";function n(e,t){s.call(this,e,t),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.j=null,this.k=null,this.l=null,this.m=null}function r(e){return e.j=e.k=e.l=e.m=null,delete e.encode,delete e.decode,e}t.exports=n;var s=e(10),o=s.prototype,u=s.extend(n),a=e(5),f=e(12),h=e(6),l=e(17),c=e(14),d=e(15),p=e(25),v=e(4),y=e(3),g=e(24),m=e(7),w=e(21),b=w.codegen;Object.defineProperties(u,{fieldsById:{get:u.getFieldsById=function(){if(this.j)return this.j;this.j={};for(var e=Object.keys(this.fields),t=0;t0?t.splice(--r,2):i?t.splice(r,1):++r:"."===t[r]?t.splice(r,1):++r;return n+t.join("/")}var a=i,f=a.LongBits=e(23);a.codegen=e(22);var h=a.isNode=Boolean(t.process&&t.process.versions&&t.process.versions.node);if(a.Buffer=null,h)try{a.Buffer=e("buffer").Buffer}catch(e){}if(a.Long=t.dcodeIO&&t.dcodeIO.Long||null,!a.Long)try{a.Long=e("long")}catch(e){}a.isString=n,a.isObject=function(e){return Boolean(e&&"object"==typeof e)},a.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},a.toArray=function(e){if(!e)return[];for(var t=Object.keys(e),i=t.length,n=new Array(i),r=0;r ").replace(/\t/g," ")),r="return "+r;var s,o=[];Array.isArray(i)?s=i.slice():i?(s=Object.keys(i),o=s.map(function(e){return i[e]})):s=[];var u=Function.apply(null,s.concat(r));return o?u.apply(null,o):u()},e}t.exports=n;var r=/[{[]$/,s=/^[}\]]/,o=/:$/,u=/^\s*(?:if|else if|while|for)\b|\b(?:else)\s*$/,a=/\b(?:break|continue);?$|^\s*return\b/;n.supported=!1;try{n.supported=1===n("a","b")("return a-b").eof()(2,1)}catch(e){}n.verbose=!1},{}],23:[function(e,t,i){"use strict";function n(e,t){this.lo=e,this.hi=t}t.exports=n;var r=e(21),s=n.prototype,o=n.zero=new n(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1},n.fromNumber=function(e){if(0===e)return o;var t=e<0;e=Math.abs(e);var i=e>>>0,r=(e-i)/4294967296>>>0;return t&&(r=~r>>>0,i=~i>>>0,++i>4294967295&&(i=0,++r>4294967295&&(r=0))),new n(i,r)},n.from=function(e){switch(typeof e){case"number":return n.fromNumber(e);case"string":e=r.Long.fromString(e)}return(e.low||e.high)&&new n(e.low>>>0,e.high>>>0)||o},s.toNumber=function(e){return!e&&this.hi>>>31?(this.lo=~this.lo+1>>>0,this.hi=~this.hi>>>0,this.lo||(this.hi=this.hi+1>>>0),-(this.lo+4294967296*this.hi)):this.lo+4294967296*this.hi},s.toLong=function(e){return new r.Long(this.lo,this.hi,e)};var u=String.prototype.charCodeAt;n.fromHash=function(e){return new n((u.call(e,0)|u.call(e,1)<<8|u.call(e,2)<<16|u.call(e,3)<<24)>>>0,(u.call(e,4)|u.call(e,5)<<8|u.call(e,6)<<16|u.call(e,7)<<24)>>>0)},s.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24&255,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24&255)},s.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},s.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},s.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return 0===i?0===t?e<16384?e<128?1:2:e<1<<21?3:4:t<16384?t<128?5:6:t<1<<21?7:8:i<128?9:10}},{21:21}],24:[function(e,t,i){"use strict";function n(e){this.type=e}t.exports=n;var r=e(5),s=e(19),o=e(21),u=n.prototype;Object.defineProperties(u,{fieldsArray:{get:u.getFieldsArray=function(){return this.type.getFieldsArray()}},fullName:{get:u.getFullName=function(){return this.type.getFullName()}}}),u.verify=function(e){for(var t=this.getFieldsArray(),i=0;i127;)e[t++]=127&i|128,i>>>=7;e[t]=i}function f(e,t,i){for(;i.hi||i.lo>127;)e[t++]=127&i.lo|128,i.lo=(i.lo>>>7|i.hi<<25)>>>0,i.hi>>>=7;e[t++]=i.lo}function h(e,t,i){e[t++]=255&i,e[t++]=i>>>8&255,e[t++]=i>>>16&255,e[t]=i>>>24&255}function l(e,t,i){k.write(e,i,t,!1,23,4)}function c(e,t,i){k.write(e,i,t,!1,52,8)}function d(e,t,i){for(var n=0;n>6|192,e[t++]=63&s|128):55296===(64512&s)&&n+1>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=63&s|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=63&s|128)}}function p(e){var t=e.length>>>0;if(t){for(var i,n=0,r=0;r>>=0,this.push(a,e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)},N.int32=function(e){return e<0?this.push(f,10,O.fromNumber(e)):this.uint32(e)},N.sint32=function(e){return this.uint32(e<<1^e>>31)},N.uint64=function(e){var t=O.from(e);return this.push(f,t.length(),t)},N.int64=N.uint64,N.sint64=function(e){var t=O.from(e).zzEncode();return this.push(f,t.length(),t)},N.bool=function(e){return this.push(u,1,e?1:0)},N.fixed32=function(e){return this.push(h,4,e>>>0)},N.sfixed32=function(e){return this.push(h,4,e<<1^e>>31)},N.fixed64=function(e){var t=O.from(e);return this.push(h,4,t.hi).push(h,4,t.lo)},N.sfixed64=function(e){var t=O.from(e).zzEncode();return this.push(h,4,t.hi).push(h,4,t.lo)},N.float=function(e){return this.push(l,4,e)},N.double=function(e){return this.push(c,8,e)};var T=x.prototype.set?function(e,t,i){e.set(i,t)}:function(e,t,i){for(var n=0;n>>0;return t?this.uint32(t).push(T,t,e):this.push(u,1,0)},N.string=function(e){var t=p(e);return t?this.uint32(t).push(d,t,e):this.push(u,1,0)},N.fork=function(){return this.stack.push(new s(this)),this.head=this.tail=new n(r,0,0),this.len=0,this},N.reset=function(){if(this.stack.length){var e=this.stack.pop();this.head=e.head,this.tail=e.tail,this.len=e.len}else this.head=this.tail=new n(r,0,0),this.len=0;return this},N.ldelim=function(e){var t=this.head,i=this.tail,n=this.len;return this.reset(),void 0!==e&&this.tag(e,2),this.uint32(n),this.tail.next=t.next,this.tail=i,this.len+=n,this},N.finish=function(){var e=this.head.next,t=new x(this.len),i=0;for(this.reset();e;)e.fn(t,i,e.val),i+=e.len,e=e.next;return t};var S=v.prototype=Object.create(o.prototype);S.constructor=v,S.float=function(e){return this.push(y,4,e)},S.double=function(e){return this.push(g,8,e)},S.bytes=function(e){var t=e.length>>>0;return t?this.uint32(t).push(m,t,e):this.push(u,1,0)},S.string=function(e){var t=p(e);return t?this.uint32(t).push(w,t,e):this.push(u,1,0)},S.finish=function(){var e=this.head.next,t=b.Buffer.allocUnsafe&&b.Buffer.allocUnsafe(this.len)||new b.Buffer(this.len),i=0;for(this.reset();e;)e.fn(t,i,e.val),i+=e.len,e=e.next;return t}},{1:1,21:21}],26:[function(e,t,i){(function(t){"use strict";function n(e,t,i){return"function"==typeof t?(i=t,t=new r.Root):t||(t=new r.Root),t.load(e,i)||r}var r=t.protobuf=i,s=e(21);r.load=n,r.tokenize=e(18),r.parse=e(13),r.Writer=e(25),r.BufferWriter=r.Writer.BufferWriter,r.Reader=e(15),r.BufferReader=r.Reader.BufferReader,r.encoder=e(4),r.decoder=e(3),r.ReflectionObject=e(11),r.Namespace=e(10),r.Root=e(16),r.Enum=e(5),r.Type=e(19),r.Field=e(6),r.OneOf=e(12),r.MapField=e(8),r.Service=e(17),r.Method=e(9),r.Prototype=e(14),r.inherits=e(7),r.types=e(20),r.common=e(2),r.util=s}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,2:2,20:20,21:21,25:25,3:3,4:4,5:5,6:6,7:7,8:8,9:9}]},{},[26]); +!function e(t,i,n){function r(o,u){if(!i[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var h=i[o]={exports:{}};t[o][0].call(h.exports,function(e){var i=t[o][1][e];return r(i?i:e)},h,h.exports,e,t,i,n)}return i[o].exports}for(var s="function"==typeof require&&require,o=0;o>1,h=-7,l=i?0:r-1,c=i?1:-1,d=e[t+l];for(l+=c,s=d&(1<<-h)-1,d>>=-h,h+=u;h>0;s=256*s+e[t+l],l+=c,h-=8);for(o=s&(1<<-h)-1,s>>=-h,h+=n;h>0;o=256*o+e[t+l],l+=c,h-=8);if(0===s)s=1-f;else{if(s===a)return o?NaN:(d?-1:1)*(1/0);o+=Math.pow(2,n),s-=f}return(d?-1:1)*o*Math.pow(2,s-n)},i.write=function(e,t,i,n,r,s){var o,u,a,f=8*s-r-1,h=(1<>1,c=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?s-1:0,p=n?-1:1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,o=h):(o=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-o))<1&&(o--,a*=2),t+=o+l>=1?c/a:c*Math.pow(2,1-l),t*a>=2&&(o++,a/=2),o+l>=h?(u=0,o=h):o+l>=1?(u=(t*a-1)*Math.pow(2,r),o+=l):(u=t*Math.pow(2,l-1)*Math.pow(2,r),o=0));r>=8;e[i+d]=255&u,d+=p,u/=256,r-=8);for(o=o<0;e[i+d]=255&o,d+=p,o/=256,f-=8);e[i+d-p]|=128*v}},{}],2:[function(e,t,i){"use strict";function n(e,t){/\/|\./.test(e)||(e="google/protobuf/"+e+".proto",t={nested:{google:{nested:{protobuf:{nested:t}}}}}),n[e]=t}t.exports=n,n("any",{Any:{fields:{type_url:{type:"string",id:1},value:{type:"bytes",id:2}}}});var r;n("duration",{Duration:r={fields:{seconds:{type:"int64",id:1},nanos:{type:"int32",id:2}}}}),n("timestamp",{Timestamp:r}),n("empty",{Empty:{fields:{}}}),n("struct",{Struct:{fields:{fields:{keyType:"string",type:"Value",id:1}}},Value:{oneofs:{kind:{oneof:["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},fields:{nullValue:{type:"NullValue",id:1},numberValue:{type:"double",id:2},stringValue:{type:"string",id:3},boolValue:{type:"bool",id:4},structValue:{type:"Struct",id:5},listValue:{type:"ListValue",id:6}}},NullValue:{values:{NULL_VALUE:0}},ListValue:{fields:{values:{rule:"repeated",type:"Value",id:1}}}})},{}],3:[function(e,t,i){"use strict";var n=i,r=e(5),s=e(15),o=e(20),u=e(21);n.fallback=function(e,t){for(var i=this.getFieldsById(),e=e instanceof s?e:s(e),n=void 0===t?e.len:e.pos+t,a=new(this.getCtor());e.pos0;){var r=e.shift();if(i.nested&&i.nested[r]){if(i=i.nested[r],!(i instanceof n))throw Error("path conflicts with non-namespace objects")}else i.add(i=new n(r))}return t&&i.addJSON(t),i},u.resolveAll=function(){for(var e=this.getNestedArray(),t=0;t-1&&this.oneof.splice(t,1),e.parent&&e.parent.remove(e),e.partOf=null,this},o.onAdd=function(e){s.prototype.onAdd.call(this,e),r(this)},o.onRemove=function(e){this.g.forEach(function(e){e.parent&&e.parent.remove(e)}),s.prototype.onRemove.call(this,e)}},{11:11,21:21,6:6}],13:[function(e,t,i){"use strict";function n(e){return null===e?null:e.toLowerCase()}function r(e){return e.substring(0,1)+e.substring(1).replace(/_([a-z])(?=[a-z]|$)/g,function(e,t){return t.toUpperCase()})}function s(e,t){function i(e,t){return Error("illegal "+(t||"token")+" '"+e+"' (line "+ne.line()+j)}function s(){var e,t=[];do{if((e=re())!==F&&e!==J)throw i(e);t.push(re()),ue(e),e=oe()}while(e===F||e===J);return t.join("")}function q(e){var t=re();switch(n(t)){case J:case F:return se(t),s();case"true":return!0;case"false":return!1}try{return V(t)}catch(n){if(e&&g.test(t))return t;throw i(t,"value")}}function B(){var e=z(re()),t=e;return ue("to",!0)&&(t=z(re())),ue(E),[e,t]}function V(e){var t=1;"-"===e.charAt(0)&&(t=-1,e=e.substring(1));var r=n(e);switch(r){case"inf":return t*(1/0);case"nan":return NaN;case"0":return 0}if(/^[1-9][0-9]*$/.test(e))return t*parseInt(e,10);if(/^0[x][0-9a-f]+$/.test(r))return t*parseInt(e,16);if(/^0[0-7]+$/.test(e))return t*parseInt(e,8);if(/^(?!e)[0-9]*(?:\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(r))return t*parseFloat(e);throw i(e,"number")}function z(e,t){var r=n(e);switch(r){case"min":return 1;case"max":return 536870911;case"0":return 0}if("-"===e.charAt(0)&&!t)throw i(e,"id");if(/^-?[1-9][0-9]*$/.test(e))return parseInt(e,10);if(/^-?0[x][0-9a-f]+$/.test(r))return parseInt(e,16);if(/^-?0[0-7]+$/.test(e))return parseInt(e,8);throw i(e,"id")}function L(){if(void 0!==Y)throw i("package");if(Y=re(),!g.test(Y))throw i(Y,x);le=le.define(Y),ue(E)}function R(){var e,t=oe();switch(t){case"weak":e=te||(te=[]),re();break;case"public":re();default:e=ee||(ee=[])}t=s(),ue(E),e.push(t)}function P(){ue("="),ie=n(s());var e;if(["proto2",e="proto3"].indexOf(ie)<0)throw i(ie,"syntax");fe=ie===e,ue(E)}function $(e,t){switch(t){case O:return K(e,t),ue(E),!0;case"message":return I(e,t),!0;case"enum":return U(e,t),!0;case"service":return G(e,t),!0;case"extend":return Q(e,t),!0}return!1}function I(e,t){var r=re();if(!y.test(r))throw i(r,"type name");var s=new a(r);if(ue(T,!0)){for(;(t=re())!==S;){var o=n(t);if(!$(s,t))switch(o){case"map":C(s,o);break;case w:case k:case b:M(s,o);break;case"oneof":D(s,o);break;case"extensions":(s.extensions||(s.extensions=[])).push(B(s,o));break;case"reserved":(s.reserved||(s.reserved=[])).push(B(s,o));break;default:if(!fe||!g.test(t))throw i(t);se(t),M(s,k)}}ue(E,!0)}else ue(E);e.add(s)}function M(e,t,n){var s=re();if(!g.test(s))throw i(s,N);var o=re();if(!y.test(o))throw i(o,x);o=r(o),ue("=");var u=z(re()),a=Z(new f(o,u,s,t,n));a.repeated&&a.setOption("packed",fe,!0),e.add(a)}function C(e){ue("<");var t=re();if(void 0===v.mapKey[t])throw i(t,N);ue(",");var n=re();if(!g.test(n))throw i(n,N);ue(">");var s=re();if(!y.test(s))throw i(s,x);s=r(s),ue("=");var o=z(re()),u=Z(new h(s,o,t,n));e.add(u)}function D(e,t){var n=re();if(!y.test(n))throw i(n,x);n=r(n);var s=new l(n);if(ue(T,!0)){for(;(t=re())!==S;)t===O?(K(s,t),ue(E)):(se(t),M(s,k));ue(E,!0)}else ue(E);e.add(s)}function U(e,t){var r=re();if(!y.test(r))throw i(r,x);var s={},o=new c(r,s);if(ue(T,!0)){for(;(t=re())!==S;)n(t)===O?K(o):_(o,t);ue(E,!0)}else ue(E);e.add(o)}function _(e,t){if(!y.test(t))throw i(t,x);var n=t;ue("=");var r=z(re(),!0);e.values[n]=r,Z({})}function K(e,t){var n=ue(A,!0),r=re();if(!g.test(r))throw i(r,x);n&&(ue(j),r=A+r+j,t=oe(),m.test(t)&&(r+=t,re())),ue("="),H(e,r)}function H(e,t){if(ue(T,!0)){for(;(he=re())!==S;){if(!y.test(he))throw i(he,x);t=t+"."+he,ue(":",!0)?W(e,t,q(!0)):H(e,t)}ue(E,!0)}else W(e,t,q(!0))}function W(e,t,i){e.setOption?e.setOption(t,i):e[t]=i}function Z(e){if(ue("[",!0)){do K(e,O);while(ue(",",!0));ue("]")}return ue(E),e}function G(e,t){if(t=re(),!y.test(t))throw i(t,"service name");var r=t,s=new d(r);if(ue(T,!0)){for(;(t=re())!==S;){var o=n(t);switch(o){case O:K(s,o),ue(E);break;case"rpc":X(s,o);break;default:throw i(t)}}ue(E,!0)}else ue(E);e.add(s)}function X(e,t){var r=t,s=re();if(!y.test(s))throw i(s,x);var o,u,a,f;ue(A);var h;if(ue(h="stream",!0)&&(u=!0),!g.test(t=re()))throw i(t);if(o=t,ue(j),ue("returns"),ue(A),ue(h,!0)&&(f=!0),!g.test(t=re()))throw i(t);a=t,ue(j);var l=new p(s,r,o,a,u,f);if(ue(T,!0)){for(;(t=re())!==S;){var c=n(t);switch(c){case O:K(l,c),ue(E);break;default:throw i(t)}}ue(E,!0)}else ue(E);e.add(l)}function Q(e,t){var r=re();if(!g.test(r))throw i(r,"reference");if(ue(T,!0)){for(;(t=re())!==S;){var s=n(t);switch(s){case w:case b:case k:M(e,s,r);break;default:if(!fe||!g.test(t))throw i(t);se(t),M(e,k,r)}}ue(E,!0)}else ue(E)}t||(t=new u);var Y,ee,te,ie,ne=o(e),re=ne.next,se=ne.push,oe=ne.peek,ue=ne.skip,ae=!0,fe=!1;t||(t=new u);for(var he,le=t;null!==(he=re());){var ce=n(he);switch(ce){case"package":if(!ae)throw i(he);L();break;case"import":if(!ae)throw i(he);R();break;case"syntax":if(!ae)throw i(he);P();break;case O:if(!ae)throw i(he);K(le,he),ue(E);break;default:if($(le,he)){ae=!1;continue}throw i(he)}}return{package:Y,imports:ee,weakImports:te,syntax:ie,root:t}}t.exports=s;var o=e(18),u=e(16),a=e(19),f=e(6),h=e(8),l=e(12),c=e(5),d=e(17),p=e(9),v=e(20),y=/^[a-zA-Z_][a-zA-Z_0-9]*$/,g=/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,m=/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/,w="required",b="repeated",k="optional",O="option",x="name",N="type",T="{",S="}",A="(",j=")",E=";",F='"',J="'"},{12:12,16:16,17:17,18:18,19:19,20:20,5:5,6:6,8:8,9:9}],14:[function(e,t,i){"use strict";function n(e,t){if(e)for(var i=!(t&&t.fieldsOnly),n=this.constructor.$type.fields,r=Object.keys(e),s=0;s "+e.len)}function r(e){return this instanceof r?(this.buf=e,this.pos=0,void(this.len=e.length)):w.Buffer&&(!e||w.Buffer.isBuffer(e))&&new m(e)||new r(e)}function s(e,t){this.id=e,this.wireType=t}function o(){var e=0,t=0,i=0,r=0;if(this.len-this.pos>9){for(i=0;i<4;++i)if(r=this.buf[this.pos++],e|=(127&r)<<7*i,r<128)return new k(e>>>0,t>>>0);if(r=this.buf[this.pos++],e|=(127&r)<<28,t|=(127&r)>>4,r<128)return new k(e>>>0,t>>>0);for(i=0;i<5;++i)if(r=this.buf[this.pos++],t|=(127&r)<<7*i+3,r<128)return new k(e>>>0,t>>>0)}else{for(i=0;i<4;++i){if(this.pos>=this.len)throw n(this);if(r=this.buf[this.pos++],e|=(127&r)<<7*i,r<128)return new k(e>>>0,t>>>0)}if(this.pos>=this.len)throw n(this);if(r=this.buf[this.pos++],e|=(127&r)<<28,t|=(127&r)>>4,r<128)return new k(e>>>0,t>>>0);for(i=0;i<5;++i){if(this.pos>=this.len)throw n(this);if(r=this.buf[this.pos++],t|=(127&r)<<7*i+3,r<128)return new k(e>>>0,t>>>0)}}throw Error("invalid varint encoding")}function u(){return o.call(this).toLong()}function a(){return o.call(this).toNumber()}function f(){return o.call(this).toLong(!0)}function h(){return o.call(this).toNumber(!0)}function l(){return o.call(this).zzDecode().toLong()}function c(){return o.call(this).zzDecode().toNumber()}function d(){if(this.pos+8>this.len)throw n(this,8);return new k((this.buf[this.pos++]|this.buf[this.pos++]<<8|this.buf[this.pos++]<<16|this.buf[this.pos++]<<24)>>>0,(this.buf[this.pos++]|this.buf[this.pos++]<<8|this.buf[this.pos++]<<16|this.buf[this.pos++]<<24)>>>0)}function p(){return d.call(this).toLong(!0)}function v(){return d.call(this).toNumber(!0)}function y(){return d.call(this).zzDecode().toLong()}function g(){return d.call(this).zzDecode().toNumber()}function m(e){T&&T(),r.call(this,e)}t.exports=r,r.BufferReader=m;var w=e(24),b=e(1),k=w.LongBits,O=w.Long,x=r.prototype,N="undefined"!=typeof Uint8Array?Uint8Array:Array;x.h=N.prototype.slice||N.prototype.subarray,x.tag=function(){if(this.pos>=this.len)throw n(this);return new s(this.buf[this.pos]>>>3,7&this.buf[this.pos++])},x.int32=function(){var e=0,t=0,i=0;do{if(this.pos>=this.len)throw n(this);i=this.buf[this.pos++],t<32&&(e|=(127&i)<>>0},x.sint32=function(){var e=this.int32();return e>>>1^-(1&e)},x.int64=O&&u||a,x.uint64=O&&f||h,x.sint64=O&&l||c,x.bool=function(){return 0!==this.int32()},x.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return this.pos+=4,this.buf[this.pos-4]|this.buf[this.pos-3]<<8|this.buf[this.pos-2]<<16|this.buf[this.pos-1]<<24},x.sfixed32=function(){var e=this.fixed32();return e>>>1^-(1&e)},x.fixed64=O&&p||v,x.sfixed64=O&&y||g,x.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=b.read(this.buf,this.pos,!1,23,4);return this.pos+=4,e},x.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=b.read(this.buf,this.pos,!1,52,8);return this.pos+=8,e},x.bytes=function(){var e=this.int32()>>>0,t=this.pos,i=this.pos+e;if(i>this.len)throw n(this,e);return this.pos+=e,t===i?new this.buf.constructor(0):this.h.call(this.buf,t,i)},x.string=function(){var e=this.bytes(),t=e.length;if(t){for(var i=new Array(t),n=0,r=0;n191&&s<224)i[r++]=(31&s)<<6|63&e[n++];else if(s>239&&s<365){var o=((7&s)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;i[r++]=55296+(o>>10),i[r++]=56320+(1023&o)}else i[r++]=(15&s)<<12|(63&e[n++])<<6|63&e[n++]}return String.fromCharCode.apply(String,i.slice(0,r))}return""},x.skip=function(e){if(void 0===e){do if(this.pos>=this.len)throw n(this);while(128&this.buf[this.pos++])}else{if(this.pos+e>this.len)throw n(this,e);this.pos+=e}return this},x.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){var t=this.tag();if(4===t.wireType)break;this.skipType(t.wireType)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type: "+e)}return this},x.reset=function(e){return e?(this.buf=e,this.len=e.length):(this.buf=null,this.len=0),this.pos=0,this},x.finish=function(e){var t=this.pos?this.h.call(this.buf,this.pos):this.buf;return this.reset(e),t};var T=function(){if(!w.Buffer)throw Error("Buffer is not supported");S.h=w.Buffer.prototype.slice,T=!1},S=m.prototype=Object.create(r.prototype);S.constructor=m,S.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=this.buf.readFloatLE(this.pos,!0);return this.pos+=4,e},S.double=function(){if(this.pos+8>this.len)throw n(this,8);var e=this.buf.readDoubleLE(this.pos,!0);return this.pos+=8,e},S.string=function(){var e=this.int32()>>>0,t=this.pos,i=this.pos+e;if(i>this.len)throw n(this,e);return this.pos+=e,this.buf.toString("utf8",t,i)},S.finish=function(e){var t=this.pos?this.buf.slice(this.pos):this.buf;return this.reset(e),t}},{1:1,24:24}],16:[function(e,t,i){"use strict";function n(e){s.call(this,"",e),this.deferred=[],this.files=[]}function r(e){var t=e.parent.lookup(e.extend);if(t){var i=new u(e.getFullName(),e.id,e.type,e.rule,(void 0),e.options);return i.declaringField=e,e.extensionField=i,t.add(i),!0}return!1}t.exports=n;var s=e(10),o=s.extend(n),u=e(6),a=e(21),f=e(2);n.fromJSON=function(e,t){return t||(t=new n),t.setOptions(e.options).addJSON(e.nested)},o.resolvePath=a.resolvePath,o.load=function t(i,n){function r(e,t){if(n){var i=n;n=null,i(e,t)}}function s(t,i){try{if(a.isString(i)&&"{"===i.charAt(0)&&(i=JSON.parse(i)),a.isString(i)){var n=e(13)(i,u);n.imports&&n.imports.forEach(function(e){o(u.resolvePath(t,e))}),n.weakImports&&n.weakImports.forEach(function(e){o(u.resolvePath(t,e),!0)})}else u.setOptions(i.options).addJSON(i.nested)}catch(e){return void r(e)}h||r(null,u)}function o(e,t){var i=e.indexOf("google/protobuf/");if(i>-1){var o=e.substring(i);o in f&&(e=o)}if(!(u.files.indexOf(e)>-1)){if(u.files.push(e),e in f)return++h,void setTimeout(function(){--h,s(e,f[e])});++h,a.fetch(e,function(i,o){if(--h,n)return i?void(t||r(i)):void s(e,o)})}}var u=this;if(!n)return a.asPromise(t,u,i);var h=0;a.isString(i)&&(i=[i]),i.forEach(function(e){o(u.resolvePath("",e))}),h||r(null)},o.e=function(e){var t=this.deferred.slice();this.deferred=[];for(var i=0;i-1&&this.deferred.splice(t,1)}e.extensionField&&(e.extensionField.parent.remove(e.extensionField),e.extensionField=null)}else if(e instanceof s)for(var i=e.getNestedArray(),n=0;n0)return m.shift();if(w)return i();var n,o,u;do{if(v===y)return null;for(n=!1;/\s/.test(u=r(v));)if(u===a&&++g,++v===y)return null;if(r(v)===f){if(++v===y)throw t("comment");if(r(v)===f){for(;r(++v)!==a;)if(v===y)return null;++v,++g,n=!0}else{if((u=r(v))!==h)return f;do{if(u===a&&++g,++v===y)return null;o=u,u=r(v)}while(o!==h||u!==f);++v,n=!0}}}while(n);if(v===y)return null;var l=v;s.lastIndex=0;var c=s.test(r(l++));if(!c)for(;l]/g,o=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,u=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,a="\n",f="/",h="*"},{}],19:[function(e,t,i){"use strict";function n(e,t){s.call(this,e,t),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.j=null,this.k=null,this.l=null,this.m=null}function r(e){return e.j=e.k=e.l=e.m=null,delete e.encode,delete e.decode,e}t.exports=n;var s=e(10),o=s.prototype,u=s.extend(n),a=e(5),f=e(12),h=e(6),l=e(17),c=e(14),d=e(15),p=e(26),v=e(4),y=e(3),g=e(25),m=e(7),w=e(21),b=w.codegen;Object.defineProperties(u,{fieldsById:{get:u.getFieldsById=function(){if(this.j)return this.j;this.j={};for(var e=Object.keys(this.fields),t=0;t0?t.splice(--r,2):i?t.splice(r,1):++r:"."===t[r]?t.splice(r,1):++r;return n+t.join("/")}var a=i;a.codegen=e(22),a.isString=n,a.isObject=function(e){return Boolean(e&&"object"==typeof e)},a.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},a.toArray=function(e){if(!e)return[];for(var t=Object.keys(e),i=t.length,n=new Array(i),r=0;r ").replace(/\t/g," ")),r="return "+r;var s,o=[];Array.isArray(i)?s=i.slice():i?(s=Object.keys(i),o=s.map(function(e){return i[e]})):s=[];var u=Function.apply(null,s.concat(r));return o?u.apply(null,o):u()},e}t.exports=n;var r=/[{[]$/,s=/^[}\]]/,o=/:$/,u=/^\s*(?:if|else if|while|for)\b|\b(?:else)\s*$/,a=/\b(?:break|continue);?$|^\s*return\b/;n.supported=!1;try{n.supported=1===n("a","b")("return a-b").eof()(2,1)}catch(e){}n.verbose=!1},{}],23:[function(e,t,i){"use strict";function n(e,t){this.lo=e,this.hi=t}t.exports=n;var r=e(21),s=n.prototype,o=n.zero=new n(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1},n.fromNumber=function(e){if(0===e)return o;var t=e<0;e=Math.abs(e);var i=e>>>0,r=(e-i)/4294967296>>>0;return t&&(r=~r>>>0,i=~i>>>0,++i>4294967295&&(i=0,++r>4294967295&&(r=0))),new n(i,r)},n.from=function(e){switch(typeof e){case"number":return n.fromNumber(e);case"string":e=r.Long.fromString(e)}return(e.low||e.high)&&new n(e.low>>>0,e.high>>>0)||o},s.toNumber=function(e){return!e&&this.hi>>>31?(this.lo=~this.lo+1>>>0,this.hi=~this.hi>>>0,this.lo||(this.hi=this.hi+1>>>0),-(this.lo+4294967296*this.hi)):this.lo+4294967296*this.hi},s.toLong=function(e){return new r.Long(this.lo,this.hi,e)};var u=String.prototype.charCodeAt;n.fromHash=function(e){return new n((u.call(e,0)|u.call(e,1)<<8|u.call(e,2)<<16|u.call(e,3)<<24)>>>0,(u.call(e,4)|u.call(e,5)<<8|u.call(e,6)<<16|u.call(e,7)<<24)>>>0)},s.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24&255,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24&255)},s.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},s.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},s.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return 0===i?0===t?e<16384?e<128?1:2:e<1<<21?3:4:t<16384?t<128?5:6:t<1<<21?7:8:i<128?9:10}},{21:21}],24:[function(e,t,i){(function(t){"use strict";var n=i,r=n.LongBits=e(23),s=n.isNode=Boolean(t.process&&t.process.versions&&t.process.versions.node);if(n.Buffer=null,s)try{n.Buffer=e("buffer").Buffer}catch(e){}if(n.Long=t.dcodeIO&&t.dcodeIO.Long||null,!n.Long&&s)try{n.Long=e("long")}catch(e){}n.longToHash=function(e){return e?r.from(e).toHash():"\0\0\0\0\0\0\0\0"},n.longFromHash=function(e,t){var i=r.fromHash(e);return n.Long?n.Long.fromBits(i.lo,i.hi,t):i.toNumber(Boolean(t))},n.longNeq=function(e,t){return"number"==typeof e?"number"==typeof t?e!==t:(e=r.fromNumber(e)).lo!==t.low||e.hi!==t.high:"number"==typeof t?(t=r.fromNumber(t)).lo!==e.low||t.hi!==e.high:e.low!==t.low||e.high!==t.high}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{23:23,buffer:"buffer",long:"long"}],25:[function(e,t,i){"use strict";var n=i,r=e(5),s=e(19),o=e(21);n.fallback=function(e){for(var t=this.getFieldsArray(),i=0;i127;)e[t++]=127&i|128,i>>>=7;e[t]=i}function f(e,t,i){for(;i.hi||i.lo>127;)e[t++]=127&i.lo|128,i.lo=(i.lo>>>7|i.hi<<25)>>>0,i.hi>>>=7;e[t++]=i.lo}function h(e,t,i){e[t++]=255&i,e[t++]=i>>>8&255,e[t++]=i>>>16&255,e[t]=i>>>24&255}function l(e,t,i){k.write(e,i,t,!1,23,4)}function c(e,t,i){k.write(e,i,t,!1,52,8)}function d(e,t,i){for(var n=0;n>6|192,e[t++]=63&s|128):55296===(64512&s)&&n+1>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=63&s|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=63&s|128)}}function p(e){var t=e.length>>>0;if(t){for(var i,n=0,r=0;r>>=0,this.push(a,e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)},N.int32=function(e){return e<0?this.push(f,10,O.fromNumber(e)):this.uint32(e)},N.sint32=function(e){return this.uint32(e<<1^e>>31)},N.uint64=function(e){var t=O.from(e);return this.push(f,t.length(),t)},N.int64=N.uint64,N.sint64=function(e){var t=O.from(e).zzEncode();return this.push(f,t.length(),t)},N.bool=function(e){return this.push(u,1,e?1:0)},N.fixed32=function(e){return this.push(h,4,e>>>0)},N.sfixed32=function(e){return this.push(h,4,e<<1^e>>31)},N.fixed64=function(e){var t=O.from(e);return this.push(h,4,t.hi).push(h,4,t.lo)},N.sfixed64=function(e){var t=O.from(e).zzEncode();return this.push(h,4,t.hi).push(h,4,t.lo)},N.float=function(e){return this.push(l,4,e)},N.double=function(e){return this.push(c,8,e)};var T=x.prototype.set?function(e,t,i){e.set(i,t)}:function(e,t,i){for(var n=0;n>>0;return t?this.uint32(t).push(T,t,e):this.push(u,1,0)},N.string=function(e){var t=p(e);return t?this.uint32(t).push(d,t,e):this.push(u,1,0)},N.fork=function(){return this.stack.push(new s(this)),this.head=this.tail=new n(r,0,0),this.len=0,this},N.reset=function(){if(this.stack.length){var e=this.stack.pop();this.head=e.head,this.tail=e.tail,this.len=e.len}else this.head=this.tail=new n(r,0,0),this.len=0;return this},N.ldelim=function(e){var t=this.head,i=this.tail,n=this.len;return this.reset(),void 0!==e&&this.tag(e,2),this.uint32(n),this.tail.next=t.next,this.tail=i,this.len+=n,this},N.finish=function(){var e=this.head.next,t=new x(this.len),i=0;for(this.reset();e;)e.fn(t,i,e.val),i+=e.len,e=e.next;return t};var S=v.prototype=Object.create(o.prototype);S.constructor=v,S.float=function(e){return this.push(y,4,e)},S.double=function(e){return this.push(g,8,e)},S.bytes=function(e){var t=e.length>>>0;return t?this.uint32(t).push(m,t,e):this.push(u,1,0)},S.string=function(e){var t=p(e);return t?this.uint32(t).push(w,t,e):this.push(u,1,0)},S.finish=function(){var e=this.head.next,t=b.Buffer.allocUnsafe&&b.Buffer.allocUnsafe(this.len)||new b.Buffer(this.len),i=0;for(this.reset();e;)e.fn(t,i,e.val),i+=e.len,e=e.next;return t}},{1:1,24:24}],27:[function(e,t,i){(function(t){"use strict";function n(e,t,i){return"function"==typeof t?(i=t,t=new r.Root):t||(t=new r.Root),t.load(e,i)||r}var r=t.protobuf=i,s=e(21);r.load=n,r.tokenize=e(18),r.parse=e(13),r.Writer=e(26),r.BufferWriter=r.Writer.BufferWriter,r.Reader=e(15),r.BufferReader=r.Reader.BufferReader,r.encoder=e(4),r.decoder=e(3),r.verifier=e(25),r.ReflectionObject=e(11),r.Namespace=e(10),r.Root=e(16),r.Enum=e(5),r.Type=e(19),r.Field=e(6),r.OneOf=e(12),r.MapField=e(8),r.Service=e(17),r.Method=e(9),r.Prototype=e(14),r.inherits=e(7),r.types=e(20),r.common=e(2),r.util=s}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,2:2,20:20,21:21,25:25,26:26,3:3,4:4,5:5,6:6,7:7,8:8,9:9}]},{},[27]); //# sourceMappingURL=protobuf.min.js.map diff --git a/dist/protobuf.min.js.gz b/dist/protobuf.min.js.gz index 77082d4d2b881db31204871fa956c0c69cb6cdcb..9dfc131567aebf81c84b85b06fc4f7c721bb0bdb 100644 GIT binary patch literal 15763 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 ZsHn7i6(`+~usM7!d diff --git a/dist/protobuf.min.js.map b/dist/protobuf.min.js.map index b164c3473..e1758cbf6 100644 --- a/dist/protobuf.min.js.map +++ b/dist/protobuf.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/common.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/inherits.js","src/mapfield.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/prototype.js","src/reader.js","src/root.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen.js","src/util/longbits.js","src/verifier.js","src/writer.js","src/index.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","read","buffer","offset","isBE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","NaN","Infinity","Math","pow","write","value","c","rt","abs","isNaN","floor","log","LN2","common","name","json","test","nested","google","protobuf","Any","fields","type_url","type","id","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","keyType","Value","oneofs","kind","oneof","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","values","NULL_VALUE","ListValue","rule","decoder","Enum","Reader","types","util","fallback","reader","this","getFieldsById","limit","undefined","len","pos","message","getCtor","tag","field","resolve","resolvedType","map","resolvedKeyType","uint32","ks","vs","basic","decode","longToHash","repeated","packed","wireType","plimit","skipType","generate","mtype","getFieldsArray","gen","codegen","prop","safeProp","encoder","Writer","writer","fi","keys","Object","fork","mapKey","encode","ldelim","required","long","longNeq","defaultValue","reset","keyWireType","options","ReflectionObject","_valuesById","clearCache","enm","EnumPrototype","extend","_TypeError","defineProperties","valuesById","get","getValuesById","forEach","testJSON","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","isObject","toString","toLowerCase","optional","partOf","Long","extensionField","declaringField","_packed","FieldPrototype","Type","MapField","isPacked","getOption","setOption","ifNotSet","prototype","role","resolved","typeDefault","defaults","parent","lookup","optionDefault","fromValue","jsonConvert","String","Number","toNumber","charAt","inherits","clazz","classProperties","$type","noStatics","merge","finish","encodeDelimited","decodeDelimited","verify","Prototype","constructor","noRegister","setCtor","prototypeProperties","getOneofsArray","set","MapFieldPrototype","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","Namespace","_nestedArray","namespace","arrayToJSON","array","obj","NamespacePrototype","Service","nestedTypes","nestedError","ctor","join","nestedArray","getNestedArray","toArray","methods","addJSON","nestedJson","ns","nestedName","j","object","indexOf","prev","setOptions","onAdd","onRemove","define","path","split","Array","isArray","ptr","part","shift","resolveAll","parentAlreadyChecked","getRoot","slice","found","proto","create","Root","ReflectionObjectPrototype","root","fullName","getFullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","_fields","addFieldsToParent","OneOfPrototype","push","index","splice","lower","token","camelCase","substring","replace","$0","$1","toUpperCase","parse","source","illegal","tn","line","s_bclose","readString","next","s_dq","s_sq","skip","peek","readValue","acceptTypeRef","parseNumber","typeRefRe","readRange","start","parseId","end","s_semi","sign","tokenLower","parseInt","parseFloat","acceptNegative","parsePackage","pkg","s_name","parseImport","whichImports","weakImports","imports","parseSyntax","syntax","p3","isProto3","parseCommon","s_option","parseOption","parseType","parseEnum","parseService","parseExtension","nameRe","s_open","s_close","parseMapField","s_required","s_optional","s_repeated","parseField","parseOneOf","extensions","reserved","s_type","parseInlineOptions","valueType","parseEnumField","custom","s_bopen","fqTypeRefRe","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","package","properties","any","fieldsOnly","asJSON","key","indexOutOfRange","writeLength","RangeError","buf","Buffer","isBuffer","BufferReader","Tag","readLongVarint","lo","hi","b","LongBits","read_int64_long","toLong","read_int64_number","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readLongFixed","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","initBufferReader","ieee754","ReaderPrototype","ArrayImpl","Uint8Array","_slice","subarray","int32","octet","sint32","int64","uint64","sint64","bool","fixed32","sfixed32","fixed64","sfixed64","float","double","bytes","string","out","p","c1","fromCharCode","apply","remain","BufferReaderPrototype","readFloatLE","readDoubleLE","deferred","files","handleExtension","extendedType","sisterField","RootPrototype","resolvePath","load","filename","callback","err","cb","process","JSON","parsed","self","fetch","queued","weak","idx","altname","setTimeout","asPromise","newDeferred","_methodsArray","ServicePrototype","methodsArray","getMethodsArray","methodName","inherited","rpc","requestDelimited","responseDelimited","rpcService","defineProperty","request","requestData","setImmediate","responseData","response","err2","unescape","str","subject","re","stringDelim","stringDoubleRe","stringSingleRe","lastIndex","match","exec","stack","repeat","curr","s_nl","s_sl","s_as","delimRe","delim","expected","actual","equals","_fieldsById","_fieldsArray","_oneofsArray","_ctor","TypePrototype","Verifier","fieldsById","names","fieldsArray","oneofsArray","supported","eof","P","fieldName","oneOfName","filter","fld","readerOrBuffer","verifier","bake","emptyArray","freeze","fn","ctx","args","arguments","Promise","reject","concat","onload","xhr","status","responseText","fs","readFile","XMLHttpRequest","onreadystatechange","readyState","open","send","isAbsolutePath","normalizePath","parts","prefix","isNode","global","versions","node","dcodeIO","isFinite","description","TypeError","originPath","importPath","alreadyNormalized","from","toHash","longFromHash","hash","unsigned","bits","fromHash","fromBits","fromNumber","low","high","dst","src","newBuffer","size","fmt","level","indent","blockOpenRe","branchRe","casingRe","inCase","breakRe","blockCloseRe","format","params","param","stringify","scope","verbose","console","Function","LongBitsPrototype","zero","zzEncode","fromString","charCodeAt","mask","part0","part1","part2","VerifierPrototype","reason","hasReasonVar","Op","val","noop","State","tail","BufferWriter","writeByte","writeVarint32","writeVarint64","writeFixed32","writeFloat","writeDouble","writeString","c2","byteLength","strlen","writeFloatBuffer","writeFloatLE","writeDoubleBuffer","writeDoubleLE","writeBytesBuffer","copy","writeStringBuffer","WriterPrototype","op","writeBytes","state","pop","BufferWriterPrototype","allocUnsafe"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 1,\r\n nBits = -7,\r\n i = isBE ? 0 : (nBytes - 1),\r\n d = isBE ? 1 : -1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n};\r\n\r\nexports.write = function writeIEEE754(buffer, value, offset, isBE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isBE ? (nBytes - 1) : 0,\r\n d = isBE ? -1 : 1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object} google/protobuf/any.proto Any\r\n * @property {Object} google/protobuf/duration.proto Duration\r\n * @property {Object} google/protobuf/empty.proto Empty\r\n * @property {Object} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object} google/protobuf/timestamp.proto Timestamp\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.test(name)) {\r\n name = \"google/protobuf/\" + name + \".proto\";\r\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n }\r\n common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n// - google/protobuf/wrappers.proto\r\n\r\ncommon(\"any\", {\r\n Any: {\r\n fields: {\r\n type_url: {\r\n type: \"string\",\r\n id: 1\r\n },\r\n value: {\r\n type: \"bytes\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n Duration: timeType = {\r\n fields: {\r\n seconds: {\r\n type: \"int64\",\r\n id: 1\r\n },\r\n nanos: {\r\n type: \"int32\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\r\n Struct: {\r\n fields: {\r\n fields: {\r\n keyType: \"string\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n },\r\n Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\r\n }\r\n },\r\n fields: {\r\n nullValue: {\r\n type: \"NullValue\",\r\n id: 1\r\n },\r\n numberValue: {\r\n type: \"double\",\r\n id: 2\r\n },\r\n stringValue: {\r\n type: \"string\",\r\n id: 3\r\n },\r\n boolValue: {\r\n type: \"bool\",\r\n id: 4\r\n },\r\n structValue: {\r\n type: \"Struct\",\r\n id: 5\r\n },\r\n listValue: {\r\n type: \"ListValue\",\r\n id: 6\r\n }\r\n }\r\n },\r\n NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\r\n },\r\n ListValue: {\r\n fields: {\r\n values: {\r\n rule: \"repeated\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\n\r\n/**\r\n * Wire format decoder using code generation on top of reflection.\r\n * @namespace\r\n */\r\nvar decoder = exports;\r\n\r\nvar Enum = require(5),\r\n Reader = require(15),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Decodes a message of `this` message's type.\r\n * @param {Reader} reader Reader to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Populated runtime message\r\n * @this Type\r\n */\r\ndecoder.fallback = function fallback(reader, length) {\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = reader instanceof Reader ? reader : Reader(reader),\r\n limit = length === undefined ? reader.len : reader.pos + length,\r\n message = new (this.getCtor())();\r\n while (reader.pos < limit) {\r\n var tag = reader.tag(),\r\n field = fields[tag.id].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type;\r\n \r\n // Known fields\r\n if (field) {\r\n\r\n // Map fields\r\n if (field.map) {\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType,\r\n length = reader.uint32();\r\n var map = message[field.name] = {};\r\n if (length) {\r\n length += reader.pos;\r\n var ks = [], vs = [];\r\n while (reader.pos < length) {\r\n if (reader.tag().id === 1)\r\n ks[ks.length] = reader[keyType]();\r\n else if (types.basic[type] !== undefined)\r\n vs[vs.length] = reader[type]();\r\n else\r\n vs[vs.length] = field.resolvedType.decode(reader, reader.uint32());\r\n }\r\n for (var i = 0; i < ks.length; ++i)\r\n map[typeof ks[i] === 'object' ? util.longToHash(ks[i]) : ks[i]] = vs[i];\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n var values = message[field.name] || (message[field.name] = []);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined && tag.wireType === 2) {\r\n var plimit = reader.uint32() + reader.pos;\r\n while (reader.pos < plimit)\r\n values[values.length] = reader[type]();\r\n\r\n // Non-packed\r\n } else if (types.basic[type] !== undefined)\r\n values[values.length] = reader[type]();\r\n else\r\n values[values.length] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Non-repeated\r\n } else if (types.basic[type] !== undefined)\r\n message[field.name] = reader[type]();\r\n else\r\n message[field.name] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Unknown fields\r\n } else\r\n reader.skipType(tag.wireType);\r\n }\r\n return message;\r\n /* eslint-enable no-invalid-this, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {util.CodegenAppender} Unscoped codegen instance\r\n */\r\ndecoder.generate = function generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray(); \r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())\")\r\n (\"while(r.pos} [values] Enum values as an object, by name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nObject.defineProperties(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: EnumPrototype.getValuesById = function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\r\n };\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (this.values[name] !== undefined)\r\n throw Error('duplicate name \"' + name + '\" in ' + this);\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error('\"' + name + '\" is not a name of ' + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(19),\r\n Enum = require(5),\r\n MapField = require(8),\r\n types = require(20),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string} [rule=optional] Field rule\r\n * @param {string} [extend] Extended type if different from parent\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (extend !== undefined && !util.isString(extend))\r\n throw _TypeError(\"extend\");\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw _TypeError(\"rule\", \"a valid rule string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== 'optional' ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {?Type}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : false;\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {?(Type|Enum)}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {?Field}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {?Field}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nObject.defineProperties(FieldPrototype, {\r\n\r\n /**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n packed: {\r\n get: FieldPrototype.isPacked = function() {\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n if (json.keyType !== undefined)\r\n return MapField.fromJSON(name, json);\r\n return new Field(name, json.id, json.type, json.role, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n rule : this.rule !== \"optional\" && this.rule || undefined,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n var resolved = this.parent.lookup(this.type);\r\n if (resolved instanceof Type) {\r\n this.resolvedType = resolved;\r\n typeDefault = null;\r\n } else if (resolved instanceof Enum) {\r\n this.resolvedType = resolved;\r\n typeDefault = 0;\r\n } else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved determine the default value\r\n var optionDefault;\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else if (this.options && (optionDefault = this.options['default']) !== undefined) // eslint-disable-line dot-notation\r\n this.defaultValue = optionDefault;\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long)\r\n this.defaultValue = util.Long.fromValue(this.defaultValue);\r\n \r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Converts a field value to JSON using the specified options. Note that this method does not account for repeated fields and must be called once for each repeated element instead.\r\n * @param {*} value Field value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {*} Converted value\r\n * @see {@link Prototype#asJSON}\r\n */\r\nFieldPrototype.jsonConvert = function(value, options) {\r\n if (options) {\r\n if (this.resolvedType instanceof Enum && options['enum'] === String) // eslint-disable-line dot-notation\r\n return this.resolvedType.getValuesById()[value];\r\n else if (this.long && options.long)\r\n return options.long === Number\r\n ? typeof value === 'number'\r\n ? value\r\n : util.Long.fromValue(value).toNumber()\r\n : util.Long.fromValue(value, this.type.charAt(0) === 'u').toString();\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = inherits;\r\n\r\nvar Prototype = require(14),\r\n Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Options passed to {@link inherits}, modifying its behavior.\r\n * @typedef InheritanceOptions\r\n * @type {Object}\r\n * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor\r\n * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type\r\n */\r\n\r\n/**\r\n * Inherits a custom class from the message prototype of the specified message type.\r\n * @param {Function} clazz Inheriting class\r\n * @param {Type} type Inherited message type\r\n * @param {InheritanceOptions} [options] Inheritance options\r\n * @returns {Prototype} Created prototype\r\n */\r\nfunction inherits(clazz, type, options) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"clazz\", \"a function\");\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n if (!options)\r\n options = {};\r\n\r\n /**\r\n * This is not an actual type but stands as a reference for any constructor of a custom message class that you pass to the library.\r\n * @name Class\r\n * @extends Prototype\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set on the message\r\n * @see {@link inherits}\r\n */\r\n\r\n var classProperties = {\r\n \r\n /**\r\n * Reference to the reflected type.\r\n * @name Class.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n if (!options.noStatics)\r\n util.merge(classProperties, {\r\n\r\n /**\r\n * Encodes a message of this type to a buffer.\r\n * @name Class.encode\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Encodes a message of this type preceeded by its length as a varint to a buffer.\r\n * @name Class.encodeDelimited\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type from a buffer.\r\n * @name Class.decode\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decode: {\r\n value: function decode(buffer) {\r\n return this.$type.decode(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type preceeded by its length as a varint from a buffer.\r\n * @name Class.decodeDelimited\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decodeDelimited: {\r\n value: function decodeDelimited(buffer) {\r\n return this.$type.decodeDelimited(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Verifies a message of this type.\r\n * @name Class.verify\r\n * @function\r\n * @param {Prototype|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n verify: {\r\n value: function verify(message) {\r\n return this.$type.verify(message);\r\n }\r\n }\r\n\r\n }, true);\r\n\r\n Object.defineProperties(clazz, classProperties);\r\n var prototype = inherits.defineProperties(new Prototype(), type);\r\n clazz.prototype = prototype;\r\n prototype.constructor = clazz;\r\n\r\n if (!options.noRegister)\r\n type.setCtor(clazz);\r\n\r\n return prototype;\r\n}\r\n\r\n/**\r\n * Defines the reflected type's default values and virtual oneof properties on the specified prototype.\r\n * @memberof inherits\r\n * @param {Prototype} prototype Prototype to define properties upon\r\n * @param {Type} type Reflected message type\r\n * @returns {Prototype} The specified prototype\r\n */\r\ninherits.defineProperties = function defineProperties(prototype, type) {\r\n\r\n var prototypeProperties = {\r\n\r\n /**\r\n * Reference to the reflected type.\r\n * @name Prototype#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n // Initialize default values\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n if (!util.isObject(field.defaultValue))\r\n // objects are mutable (i.e. would modify the array on the prototype, not the instance)\r\n prototype[field.name] = field.defaultValue;\r\n });\r\n\r\n // Define each oneof with a non-enumerable getter and setter for the present field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n prototypeProperties[oneof.resolve().name] = {\r\n get: function() {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n var field = oneof.parent.fields[keys[i]];\r\n if (this[keys[i]] != field.defaultValue) // eslint-disable-line eqeqeq\r\n return keys[i];\r\n }\r\n return undefined;\r\n },\r\n set: function(value) {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperties(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(6);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nvar Enum = require(5),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new map field.\r\n * @classdesc Reflected map field.\r\n * @extends Field\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\r\n \r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {?ReflectionObject}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a map field.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n keyType : this.keyType,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n \r\n // Besides a value type, map fields have a key type to resolve\r\n var keyWireType = types.mapKey[this.keyType];\r\n if (keyWireType === undefined) {\r\n var resolved = this.parent.lookup(this.keyType);\r\n if (!(resolved instanceof Enum))\r\n throw Error(\"unresolvable map key type: \" + this.keyType);\r\n this.resolvedKeyType = resolved;\r\n }\r\n\r\n return FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean} [requestStream] Whether the request is streamed\r\n * @param {boolean} [responseStream] Whether the response is streamed\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (!util.isString(requestType))\r\n throw _TypeError(\"requestType\");\r\n if (!util.isString(responseType))\r\n throw _TypeError(\"responseType\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {?Type}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {Object} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object} json JSON object\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var resolved = this.parent.lookup(this.requestType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n this.resolvedRequestType = resolved;\r\n resolved = this.parent.lookup(this.responseType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n this.resolvedResponseType = resolved;\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n Field = require(6),\r\n Service = require(17),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\nvar nestedTypes = [ Enum, Type, Service, Field, Namespace ],\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');\r\n\r\n/**\r\n * Constructs a new namespace.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {?ReflectionObject[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\nObject.defineProperties(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: NamespacePrototype.getNestedArray = function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson)\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw _TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {?ReflectionObject} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespacePrototype.add = function add(object) {\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw _TypeError(\"object\", nestedError);\r\n if (object instanceof Field && object.extend === undefined)\r\n throw _TypeError(\"object\", \"an extension field when not part of a type\");\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespacePrototype.remove = function remove(object) {\r\n if (!(object instanceof ReflectionObject))\r\n throw _TypeError(\"object\", \"a ReflectionObject\");\r\n if (object.parent !== this || !this.nested)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split('.');\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolve() {\r\n var nested = this.getNestedArray(), i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, parentAlreadyChecked) {\r\n if (util.isString(path)) {\r\n if (!path.length)\r\n return null;\r\n path = path.split('.');\r\n } else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1));\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found && (path.length === 1 || found instanceof Namespace && (found = found.lookup(path.slice(1), true))))\r\n return found;\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path);\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.extend = extend;\r\n\r\nvar Root = require(16),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (options && !util.isObject(options))\r\n throw _TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {?Namespace}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(ReflectionObjectPrototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: ReflectionObjectPrototype.getRoot = function getRoot() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: ReflectionObjectPrototype.getFullName = function getFullName() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join('.');\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Lets the specified constructor extend this class.\r\n * @memberof ReflectionObject\r\n * @param {Function} constructor Extending constructor\r\n * @returns {Object} Prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var proto = constructor.prototype = Object.create(this.prototype);\r\n proto.constructor = constructor;\r\n constructor.extend = extend;\r\n return proto;\r\n}\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObjectPrototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Constructor name, space, full name\r\n */\r\nReflectionObjectPrototype.toString = function toString() {\r\n return this.constructor.name + \" \" + this.getFullName();\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(6),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]} [fieldNames] Field names\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw _TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {Array.}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof and are possibly not yet added to its parent.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._fields = [];\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n oneof._fields.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n if (field.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this._fields.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n var index = this._fields.indexOf(field);\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n this._fields.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fields.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(18),\r\n Root = require(16),\r\n Type = require(19),\r\n Field = require(6),\r\n MapField = require(8),\r\n OneOf = require(12),\r\n Enum = require(5),\r\n Service = require(17),\r\n Method = require(9),\r\n types = require(20);\r\n\r\nvar nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n fqTypeRefRe = /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/;\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(name) {\r\n return name.substring(0,1)\r\n + name.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\nvar s_required = \"required\",\r\n s_repeated = \"repeated\",\r\n s_optional = \"optional\",\r\n s_option = \"option\",\r\n s_name = \"name\",\r\n s_type = \"type\";\r\nvar s_open = \"{\",\r\n s_close = \"}\",\r\n s_bopen = '(',\r\n s_bclose = ')',\r\n s_semi = \";\",\r\n s_dq = '\"',\r\n s_sq = \"'\";\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object}\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} [root] Root to populate\r\n * @returns {ParserResult} Parser result\r\n */\r\nfunction parse(source, root) {\r\n /* eslint-disable default-case, callback-return */\r\n if (!root)\r\n root = new Root();\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\r\n\r\n var head = true,\r\n pkg,\r\n imports,\r\n weakImports,\r\n syntax,\r\n isProto3 = false;\r\n\r\n if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n function illegal(token, name) {\r\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (line \" + tn.line() + s_bclose);\r\n }\r\n\r\n function readString() {\r\n var values = [],\r\n token;\r\n do {\r\n if ((token = next()) !== s_dq && token !== s_sq)\r\n throw illegal(token);\r\n values.push(next());\r\n skip(token);\r\n token = peek();\r\n } while (token === s_dq || token === s_sq);\r\n return values.join('');\r\n }\r\n\r\n function readValue(acceptTypeRef) {\r\n var token = next();\r\n switch (lower(token)) {\r\n case s_sq:\r\n case s_dq:\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && typeRefRe.test(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(s_semi);\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\r\n var sign = 1;\r\n if (token.charAt(0) === '-') {\r\n sign = -1;\r\n token = token.substring(1);\r\n }\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, 'number');\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"min\": return 1;\r\n case \"max\": return 0x1FFFFFFF;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === '-' && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!typeRefRe.test(pkg))\r\n throw illegal(pkg, s_name);\r\n ptr = ptr.define(pkg);\r\n skip(s_semi);\r\n }\r\n\r\n function parseImport() {\r\n var token = peek();\r\n var whichImports;\r\n switch (token) {\r\n case \"weak\":\r\n whichImports = weakImports || (weakImports = []);\r\n next();\r\n break;\r\n case \"public\":\r\n next();\r\n // eslint-disable-line no-fallthrough\r\n default:\r\n whichImports = imports || (imports = []);\r\n break;\r\n }\r\n token = readString();\r\n skip(s_semi);\r\n whichImports.push(token);\r\n }\r\n\r\n function parseSyntax() {\r\n skip(\"=\");\r\n syntax = lower(readString());\r\n var p3;\r\n if ([ \"proto2\", p3 = \"proto3\" ].indexOf(syntax) < 0)\r\n throw illegal(syntax, \"syntax\");\r\n isProto3 = syntax === p3;\r\n skip(s_semi);\r\n }\r\n\r\n function parseCommon(parent, token) {\r\n switch (token) {\r\n\r\n case s_option:\r\n parseOption(parent, token);\r\n skip(s_semi);\r\n return true;\r\n\r\n case \"message\":\r\n parseType(parent, token);\r\n return true;\r\n\r\n case \"enum\":\r\n parseEnum(parent, token);\r\n return true;\r\n\r\n case \"service\":\r\n parseService(parent, token);\r\n return true;\r\n\r\n case \"extend\":\r\n parseExtension(parent, token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function parseType(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n case s_required:\r\n case s_optional:\r\n case s_repeated:\r\n parseField(type, tokenLower);\r\n break;\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, s_optional);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (!typeRefRe.test(type))\r\n throw illegal(type, s_type);\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\r\n if (field.repeated)\r\n field.setOption(\"packed\", isProto3, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseMapField(parent) {\r\n skip(\"<\");\r\n var keyType = next();\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, s_type);\r\n skip(\",\");\r\n var valueType = next();\r\n if (!typeRefRe.test(valueType))\r\n throw illegal(valueType, s_type);\r\n skip(\">\");\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (token === s_option) {\r\n parseOption(oneof, token);\r\n skip(s_semi);\r\n } else {\r\n push(token);\r\n parseField(oneof, s_optional);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (lower(token) === s_option)\r\n parseOption(enm);\r\n else\r\n parseEnumField(enm, token);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(s_bopen, true);\r\n var name = next();\r\n if (!typeRefRe.test(name))\r\n throw illegal(name, s_name);\r\n if (custom) {\r\n skip(s_bclose);\r\n name = s_bopen + name + s_bclose;\r\n token = peek();\r\n if (fqTypeRefRe.test(token)) {\r\n name += token;\r\n next();\r\n }\r\n }\r\n skip(\"=\");\r\n parseOptionValue(parent, name);\r\n }\r\n\r\n function parseOptionValue(parent, name) {\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n setOption(parent, name, readValue(true));\r\n // Does not enforce a delimiter to be universal\r\n }\r\n\r\n function setOption(parent, name, value) {\r\n if (parent.setOption)\r\n parent.setOption(name, value);\r\n else\r\n parent[name] = value;\r\n }\r\n\r\n function parseInlineOptions(parent) {\r\n if (skip(\"[\", true)) {\r\n do {\r\n parseOption(parent, s_option);\r\n } while (skip(\",\", true));\r\n skip(\"]\");\r\n }\r\n skip(s_semi);\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n if (!nameRe.test(token))\r\n throw illegal(token, \"service name\");\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(service, tokenLower);\r\n skip(s_semi);\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(s_bopen);\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(s_bclose); skip(\"returns\"); skip(s_bopen);\r\n if (skip(st, true))\r\n responseStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n responseType = token;\r\n skip(s_bclose);\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(method, tokenLower);\r\n skip(s_semi);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n if (!typeRefRe.test(reference))\r\n throw illegal(reference, \"reference\");\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_required:\r\n case s_repeated:\r\n case s_optional:\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(parent, s_optional, reference);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case s_option:\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(s_semi);\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\r\n }\r\n throw illegal(token);\r\n }\r\n }\r\n\r\n return {\r\n 'package' : pkg,\r\n 'imports' : imports,\r\n 'weakImports' : weakImports,\r\n 'syntax' : syntax,\r\n 'root' : root\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Prototype;\r\n\r\n/**\r\n * Options passed to the {@link Prototype|prototype constructor}, modifying its behavior.\r\n * @typedef PrototypeOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Sets only properties that reference a field\r\n */\r\n\r\n/**\r\n * Constructs a new prototype.\r\n * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.\r\n * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @param {PrototypeOptions} [options] Prototype options\r\n * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties, options) {\r\n if (properties) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (fields[keys[i]] || any)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/**\r\n * Converts a runtime message to a JSON object.\r\n * @param {Object.} [options] Conversion options\r\n * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field\r\n * @param {Function} [options.long] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @param {Function} [options.enum=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys = Object.keys(this);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = fields[key = keys[i]],\r\n value = this[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value && value.length) {\r\n var array = new Array(value.length);\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n array[j] = field.jsonConvert(value[j], options);\r\n json[key] = array;\r\n }\r\n } else\r\n json[key] = field.jsonConvert(value, options);\r\n } else if (any)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n Long = util.Long;\r\n\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader using the specified buffer.\r\n * When called as a function, returns an appropriate reader for the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n if (!(this instanceof Reader))\r\n return util.Buffer && (!buffer || util.Buffer.isBuffer(buffer)) && new BufferReader(buffer) || new Reader(buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\nReaderPrototype._slice = ArrayImpl.prototype.slice || ArrayImpl.prototype.subarray;\r\n\r\n/**\r\n * Tag read.\r\n * @constructor\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @ignore\r\n */\r\nfunction Tag(id, wireType) {\r\n this.id = id;\r\n this.wireType = wireType;\r\n}\r\n\r\n/**\r\n * Reads a tag.\r\n * @returns {{id: number, wireType: number}} Field id and wire type\r\n */\r\nReaderPrototype.tag = function read_tag() {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n return new Tag(this.buf[this.pos] >>> 3, this.buf[this.pos++] & 7);\r\n};\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.int32 = function read_int32() {\r\n var value = 0,\r\n shift = 0,\r\n octet = 0;\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n octet = this.buf[this.pos++];\r\n if (shift < 32)\r\n value |= (octet & 127) << shift;\r\n shift += 7;\r\n } while (octet & 128);\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.uint32 = function read_uint32() {\r\n return this.int32() >>> 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sint32 = function read_sint32() {\r\n var value = this.int32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a possibly 64 bits varint.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction readLongVarint() {\r\n var lo = 0, hi = 0,\r\n i = 0, b = 0;\r\n if (this.len - this.pos > 9) { // fast route\r\n for (i = 0; i < 4; ++i) {\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n } else {\r\n for (i = 0; i < 4; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n }\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.int64 = Long && read_int64_long || read_int64_number;\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.uint64 = Long && read_uint64_long || read_uint64_number;\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sint64 = Long && read_sint64_long || read_sint64_number;\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReaderPrototype.bool = function read_bool() {\r\n return this.int32() !== 0;\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n this.pos += 4;\r\n return this.buf[this.pos - 4]\r\n | this.buf[this.pos - 3] << 8\r\n | this.buf[this.pos - 2] << 16\r\n | this.buf[this.pos - 1] << 24;\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a 64 bit value.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner \r\n * @ignore\r\n */\r\nfunction readLongFixed() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n return new LongBits(\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n ,\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n );\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readLongFixed.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.fixed64 = Long && read_fixed64_long || read_fixed64_number;\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sfixed64 = Long && read_sfixed64_long || read_sfixed64_number;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 23, 4);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 52, 8);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReaderPrototype.bytes = function read_bytes() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReaderPrototype.string = function read_string() {\r\n // ref: https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\r\n var bytes = this.bytes(),\r\n len = bytes.length;\r\n if (len) {\r\n var out = new Array(len), p = 0, c = 0;\r\n while (p < len) {\r\n var c1 = bytes[p++];\r\n if (c1 < 128)\r\n out[c++] = c1;\r\n else if (c1 > 191 && c1 < 224)\r\n out[c++] = (c1 & 31) << 6 | bytes[p++] & 63;\r\n else if (c1 > 239 && c1 < 365) {\r\n var u = ((c1 & 7) << 18 | (bytes[p++] & 63) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63) - 0x10000;\r\n out[c++] = 0xD800 + (u >> 10);\r\n out[c++] = 0xDC00 + (u & 1023);\r\n } else\r\n out[c++] = (c1 & 15) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63;\r\n }\r\n return String.fromCharCode.apply(String, out.slice(0, c));\r\n }\r\n return \"\";\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skip = function skip(length) {\r\n if (length === undefined) {\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n } else {\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n var tag = this.tag();\r\n if (tag.wireType === 4)\r\n break;\r\n this.skipType(tag.wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n default:\r\n throw Error(\"invalid wire type: \" + wireType);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance and frees all resources.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.reset = function reset(buffer) {\r\n if (buffer) {\r\n this.buf = buffer;\r\n this.len = buffer.length;\r\n } else {\r\n this.buf = null; // makes it throw\r\n this.len = 0;\r\n }\r\n this.pos = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nReaderPrototype.finish = function finish(buffer) {\r\n var remain = this.pos\r\n ? this._slice.call(this.buf, this.pos)\r\n : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n\r\n// One time function to initialize BufferReader with the now-known buffer implementation's slice method\r\nvar initBufferReader = function() {\r\n if (!util.Buffer)\r\n throw Error(\"Buffer is not supported\");\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n if (initBufferReader)\r\n initBufferReader();\r\n Reader.call(this, buffer);\r\n}\r\n\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\n\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.float = function read_float_buffer() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = this.buf.readFloatLE(this.pos, true);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.double = function read_double_buffer() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n var value = this.buf.readDoubleLE(this.pos, true);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.string = function read_string_buffer() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return this.buf.toString(\"utf8\", start, end);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.finish = function finish_buffer(buffer) {\r\n var remain = this.pos ? this.buf.slice(this.pos) : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(6),\r\n util = require(21),\r\n common = require(2);\r\n\r\n/**\r\n * Constructs a new root namespace.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {Object} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files. \r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {*} json JSON definition\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string} Resolved path to `target`\r\n */\r\nRootPrototype.resolvePath = util.resolvePath;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {function(?Error, Root=)} [callback] Node-style callback function\r\n * @returns {Promise|undefined} A promise if `callback` has been omitted\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nRootPrototype.load = function load(filename, callback) {\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n var parsed = require(13)(source, self);\r\n if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!queued)\r\n finish(null, self);\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.indexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\r\n\r\n if (!queued)\r\n finish(null);\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.toString = function toString() {\r\n return this.constructor.name;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nvar Method = require(9),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new service.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nObject.defineProperties(ServicePrototype, {\r\n\r\n /**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\n methodsArray: {\r\n get: ServicePrototype.getMethodsArray = function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object} json JSON object\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolve() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @function\r\n * @param {Method} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {function(?Error, Uint8Array=)} callback Node-style callback called with the error, if any, and the response data\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpc RPC implementation ({@link RPCImpl|see})\r\n * @param {boolean} [requestDelimited=false] Whether request data is length delimited\r\n * @param {boolean} [responseDelimited=false] Whether response data is length delimited\r\n * @returns {Object} Runtime service\r\n */\r\nServicePrototype.create = function create(rpc, requestDelimited, responseDelimited) {\r\n var rpcService = {};\r\n Object.defineProperty(rpcService, \"$rpc\", {\r\n value: rpc\r\n });\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[method.name] = function(request, callback) {\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited && method.resolvedRequestType.encodeDelimited(request) || method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === 'function' && setImmediate || setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpc(method, requestData, function(err, responseData) {\r\n if (err) {\r\n callback(err);\r\n return;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited && method.resolvedResponseType.decodeDelimited(responseData) || method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n callback(err2);\r\n return;\r\n }\r\n callback(null, response);\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\r\n","\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\r\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\r\n\r\nvar s_nl = \"\\n\",\r\n s_sl = '/',\r\n s_as = '*';\r\n\r\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\r\n /* eslint-disable default-case, callback-return */\r\n source = source.toString();\r\n \r\n var offset = 0,\r\n length = source.length,\r\n line = 1;\r\n \r\n var stack = [];\r\n\r\n var stringDelim = null;\r\n\r\n /**\r\n * Creates an error for illegal syntax.\r\n * @param {string} subject Subject\r\n * @returns {Error} Error created\r\n * @inner\r\n */\r\n function illegal(subject) {\r\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n }\r\n\r\n /**\r\n * Reads a string till its end.\r\n * @returns {string} String read\r\n * @inner\r\n */\r\n function readString() {\r\n var re = stringDelim === '\"' ? stringDoubleRe : stringSingleRe;\r\n re.lastIndex = offset - 1;\r\n var match = re.exec(source);\r\n if (!match)\r\n throw illegal(\"string\");\r\n offset = re.lastIndex;\r\n push(stringDelim);\r\n stringDelim = null;\r\n return unescape(match[1]);\r\n }\r\n\r\n /**\r\n * Gets the character at `pos` within the source.\r\n * @param {number} pos Position\r\n * @returns {string} Character\r\n * @inner\r\n */\r\n function charAt(pos) {\r\n return source.charAt(pos);\r\n }\r\n\r\n /**\r\n * Obtains the next token.\r\n * @returns {?string} Next token or `null` on eof\r\n * @inner\r\n */\r\n function next() {\r\n if (stack.length > 0)\r\n return stack.shift();\r\n if (stringDelim)\r\n return readString();\r\n var repeat,\r\n prev,\r\n curr;\r\n do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.test(curr = charAt(offset))) {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n }\r\n if (charAt(offset) === s_sl) {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === s_sl) { // Line\r\n while (charAt(++offset) !== s_nl)\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === s_as) { /* Block */\r\n do {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== s_as || curr !== s_sl);\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return s_sl;\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\r\n var end = offset;\r\n delimRe.lastIndex = 0;\r\n var delim = delimRe.test(charAt(end++));\r\n if (!delim)\r\n while (end < length && !delimRe.test(charAt(end)))\r\n ++end;\r\n var token = source.substring(offset, offset = end);\r\n if (token === '\"' || token === \"'\")\r\n stringDelim = token;\r\n return token;\r\n }\r\n\r\n /**\r\n * Pushes a token back to the stack.\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function push(token) {\r\n stack.push(token);\r\n }\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @returns {?string} Token or `null` on eof\r\n * @inner\r\n */\r\n function peek() {\r\n if (!stack.length) {\r\n var token = next();\r\n if (token === null)\r\n return null;\r\n push(token);\r\n }\r\n return stack[0];\r\n }\r\n\r\n /**\r\n * Skips a token.\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] Whether the token is optional\r\n * @returns {boolean} `true` when skipped, `false` if not\r\n * @throws {Error} When a required token is not present\r\n * @inner\r\n */\r\n function skip(expected, optional) {\r\n var actual = peek(),\r\n equals = actual === expected;\r\n if (equals) {\r\n next();\r\n return true;\r\n }\r\n if (!optional)\r\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n return false;\r\n }\r\n\r\n return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable default-case, callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type; \r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nvar Enum = require(5),\r\n OneOf = require(12),\r\n Field = require(6),\r\n Service = require(17),\r\n Prototype = require(14),\r\n Reader = require(15),\r\n Writer = require(25),\r\n encoder = require(4),\r\n decoder = require(3),\r\n Verifier = require(24),\r\n inherits = require(7),\r\n util = require(21);\r\n\r\nvar codegen = util.codegen;\r\n\r\n/**\r\n * Constructs a new message type.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {?Function}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: TypePrototype.getFieldsById = function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: TypePrototype.getFieldsArray = function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: TypePrototype.getOneofsArray = function getOneofsArray() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Type#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: TypePrototype.getCtor = function getCtor() {\r\n if (this._ctor)\r\n return this._ctor;\r\n var ctor;\r\n if (codegen.supported)\r\n ctor = codegen(\"p\")(\"P.call(this,p)\").eof(this.getFullName() + \"$ctor\", {\r\n P: Prototype\r\n });\r\n else\r\n ctor = function GenericMessage(properties) {\r\n Prototype.call(this, properties);\r\n };\r\n ctor.prototype = inherits(ctor, this);\r\n this._ctor = ctor;\r\n return ctor;\r\n },\r\n set: TypePrototype.setCtor = function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = null;\r\n delete type.encode;\r\n delete type.decode;\r\n return type;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object} json JSON object\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\r\n });\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\r\n extensions : this.extensions && this.extensions.length ? this.extensions : undefined,\r\n reserved : this.reserved && this.reserved.length ? this.reserved : undefined,\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolve() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nTypePrototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object} [properties] Properties to set\r\n * @param {?Function} [ctor] Constructor to use.\r\n * Defaults to use the internal constuctor.\r\n * @returns {Prototype} Message instance\r\n */\r\nTypePrototype.create = function create(properties, ctor) {\r\n if (typeof properties === 'function') {\r\n ctor = properties;\r\n properties = undefined;\r\n } else if (properties /* already */ instanceof Prototype)\r\n return properties;\r\n if (ctor) {\r\n if (!(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n } else\r\n ctor = this.getCtor();\r\n return new ctor(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encode = function encode(message, writer) {\r\n return (this.encode = codegen.supported\r\n ? encoder.generate(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : encoder.fallback\r\n ).call(this, message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n return (this.decode = codegen.supported\r\n ? decoder.generate(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : decoder.fallback\r\n ).call(this, readerOrBuffer, length);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that enum values are valid and that any required fields are present.\r\n * @param {Prototype|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify(message) {\r\n var verifier = new Verifier(this);\r\n this.verify = codegen.supported\r\n ? verifier.generate()\r\n : verifier.verify;\r\n return this.verify(message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\nvar emptyArray = [];\r\nif (Object.freeze)\r\n Object.freeze(emptyArray);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ emptyArray\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.packed = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n], 2);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = exports;\r\n\r\nvar LongBits =\r\nutil.LongBits = require(\"./util/longbits\");\r\nutil.codegen = require(\"./util/codegen\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nvar isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Optional buffer class to use.\r\n * If you assign any compatible buffer implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Buffer = null;\r\n\r\nif (isNode)\r\n try { util.Buffer = require(\"buffer\").Buffer; } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Optional Long class to use.\r\n * If you assign any compatible long implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @memberof util\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nfunction isString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\n\r\nutil.isString = isString;\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return Boolean(value && typeof value === 'object');\r\n};\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || function isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=a string] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Returns a promise from a node-style function.\r\n * @memberof util\r\n * @param {function(Error, ...*)} fn Function to call\r\n * @param {Object} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var args = [];\r\n for (var i = 2; i < arguments.length; ++i)\r\n args.push(arguments[i]);\r\n return new Promise(function(resolve, reject) {\r\n fn.apply(ctx, args.concat(\r\n function(err/*, varargs */) {\r\n if (err) reject(err);\r\n else resolve.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n ));\r\n });\r\n}\r\n\r\nutil.asPromise = asPromise;\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {function(?Error, string=)} [callback] Node-style callback\r\n * @returns {Promise|undefined} Promise if callback has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, util, path);\r\n var fs; try { fs = require(\"fs\"); } catch (e) {} // eslint-disable-line no-empty\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", callback);\r\n var xhr = new XMLHttpRequest();\r\n function onload() {\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n if (isString(xhr.responseText))\r\n return callback(null, xhr.responseText);\r\n return callback(Error(\"request failed\"));\r\n }\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState === 4)\r\n onload();\r\n };\r\n xhr.open(\"GET\", path, true);\r\n xhr.send();\r\n return undefined;\r\n}\r\n\r\nutil.fetch = fetch;\r\n\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @memberof util\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\nfunction isAbsolutePath(path) {\r\n return /^(?:\\/|[a-zA-Z0-9]+:)/.test(path);\r\n}\r\n\r\nutil.isAbsolutePath = isAbsolutePath;\r\n\r\n/**\r\n * Normalizes the specified path.\r\n * @memberof util\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\nfunction normalizePath(path) {\r\n path = path.replace(/\\\\/g, '/')\r\n .replace(/\\/{2,}/g, '/');\r\n var parts = path.split('/');\r\n var abs = isAbsolutePath(path);\r\n var prefix = \"\";\r\n if (abs)\r\n prefix = parts.shift() + '/';\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === '..') {\r\n if (i > 0)\r\n parts.splice(--i, 2);\r\n else if (abs)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === '.')\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join('/');\r\n}\r\n\r\nutil.normalizePath = normalizePath;\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path that was used to fetch the origin file\r\n * @param {string} importPath Import path specified in the origin file\r\n * @param {boolean} [alreadyNormalized] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the imported file\r\n */\r\nutil.resolvePath = function resolvePath(originPath, importPath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n importPath = normalizePath(importPath);\r\n if (isAbsolutePath(importPath))\r\n return importPath;\r\n if (!alreadyNormalized)\r\n originPath = normalizePath(originPath);\r\n originPath = originPath.replace(/(?:\\/|^)[^/]+$/, '');\r\n return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath;\r\n};\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? LongBits.from(value).toHash()\r\n : '\\0\\0\\0\\0\\0\\0\\0\\0';\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === 'number'\r\n ? typeof b === 'number'\r\n ? a !== b\r\n : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === 'number'\r\n ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object} dst Destination object\r\n * @param {Object} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n// Reserved words, ref: https://msdn.microsoft.com/en-us/library/ttyab5c8.aspx\r\n// var reserved = \"break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,protected,return,super,switch,this,throw,true,try,typeof,var,while,with,abstract,boolean,byte,char,decimal,double,enum,final,float,get,implements,int,interface,internal,long,package,private,protected,public,sbyte,set,short,static,uint,ulong,ushort,void,assert,ensure,event,goto,invariant,namespace,native,require,synchronized,throws,transient,use,volatile\".split(',');\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n // NOTE: While dot notation looks cleaner it doesn't seem to have a significant impact on performance.\r\n // Hence, we can safe the extra bytes from providing the reserved keywords above for pre-ES5 envs.\r\n return /* /^[a-z_$][a-z0-9_$]*$/i.test(prop) && !reserved.indexOf(prop) ? \".\" + prop : */ \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * Programmatically generates a function.\r\n * @memberof util\r\n * @param {...string} params Function parameter names\r\n * @returns {util.CodegenAppender} Printf-like appender function\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen(/* varargs */) {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'];\r\n\r\n var indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * Appends a printf-like formatted line to the generated source. Returned when calling {@link util.codegen}.\r\n * @typedef CodegenAppender\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} format A printf-like format string\r\n * @param {...*} params Format replacements\r\n * @returns {util.CodegenAppender} Itself\r\n * @property {util.CodegenStringer} str\r\n * @property {util.CodegenEnder} eof\r\n * @see {@link https://nodejs.org/docs/latest/api/util.html#util_util_format_format_args}\r\n */\r\n /**/\r\n function gen() {\r\n var fmt = [];\r\n for (var i = 0; i < arguments.length; ++i)\r\n fmt[i] = arguments[i];\r\n var line = gen.fmt.apply(null, fmt);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (var index = 0; index < level; ++index)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n gen.fmt = function fmt(format) {\r\n var params = Array.prototype.slice.call(arguments, 1),\r\n index = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var param = params[index++];\r\n return $1 === \"j\"\r\n ? JSON.stringify(param)\r\n : String(param);\r\n });\r\n };\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @typedef CodegenStringer\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n */\r\n /**/\r\n gen.str = function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + args.join(\",\") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n };\r\n\r\n /**\r\n * Ends generation and builds the function.\r\n * @typedef CodegenEnder\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object|Array.} [scope] Function scope\r\n * @returns {function} A function to apply the scope manually when `scope` is an array, otherwise the generated function with scope applied\r\n */\r\n /**/\r\n gen.eof = function eof(name, scope) {\r\n if (name && typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var code = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + code.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n code = \"return \" + code;\r\n var params, values = [];\r\n if (Array.isArray(scope)) {\r\n params = scope.slice();\r\n } else if (scope) {\r\n params = Object.keys(scope);\r\n values = params.map(function(key) { return scope[key]; });\r\n } else\r\n params = [];\r\n var fn = Function.apply(null, params.concat(code)); // eslint-disable-line no-new-func\r\n return values ? fn.apply(null, values) : fn();\r\n };\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false;\r\ntry { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\n\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(21);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n value = Math.abs(value);\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nLongBits.from = function from(value) {\r\n switch (typeof value) { // eslint-disable-line default-case\r\n case 'number':\r\n return LongBits.fromNumber(value);\r\n case 'string':\r\n value = util.Long.fromString(value); // throws without a long lib\r\n }\r\n return (value.low || value.high) && new LongBits(value.low >>> 0, value.high >>> 0) || zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBitsPrototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n this.lo = ~this.lo + 1 >>> 0;\r\n this.hi = ~this.hi >>> 0;\r\n if (!this.lo)\r\n this.hi = this.hi + 1 >>> 0;\r\n return -(this.lo + this.hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBitsPrototype.toLong = function toLong(unsigned) {\r\n return new util.Long(this.lo, this.hi, unsigned);\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBitsPrototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 & 255,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24 & 255\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBitsPrototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n if (part2 === 0) {\r\n if (part1 === 0)\r\n return part0 < 1 << 14\r\n ? part0 < 1 << 7 ? 1 : 2\r\n : part0 < 1 << 21 ? 3 : 4;\r\n return part1 < 1 << 14\r\n ? part1 < 1 << 7 ? 5 : 6\r\n : part1 < 1 << 21 ? 7 : 8;\r\n }\r\n return part2 < 1 << 7 ? 9 : 10;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Verifier;\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new verifier for the specified message type.\r\n * @classdesc Runtime message verifier using code generation on top of reflection.\r\n * @constructor\r\n * @param {Type} type Message type\r\n */\r\nfunction Verifier(type) {\r\n\r\n /**\r\n * Message type.\r\n * @type {Type}\r\n */\r\n this.type = type;\r\n}\r\n\r\n/** @alias Verifier.prototype */\r\nvar VerifierPrototype = Verifier.prototype;\r\n\r\n// This is here to mimic Type so that fallback functions work without having to bind()\r\nObject.defineProperties(VerifierPrototype, {\r\n\r\n /**\r\n * Fields of this verifier's message type as an array for iteration.\r\n * @name Verifier#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: VerifierPrototype.getFieldsArray = function getFieldsArray() {\r\n return this.type.getFieldsArray();\r\n }\r\n },\r\n\r\n /**\r\n * Full name of this verifier's message type.\r\n * @name Verifier#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: VerifierPrototype.getFullName = function getFullName() {\r\n return this.type.getFullName();\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Verifies a runtime message of this verifier's message type.\r\n * @param {Prototype|Object} message Runtime message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nVerifierPrototype.verify = function verify_fallback(message) {\r\n var fields = this.getFieldsArray(),\r\n i = 0;\r\n while (i < fields.length) {\r\n var field = fields[i++].resolve(),\r\n value = message[field.name];\r\n\r\n if (value === undefined) {\r\n if (field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Enum && field.resolvedType.getValuesById()[value] === undefined) {\r\n return \"invalid enum value \" + field.name + \" = \" + value + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (!value && field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n var reason;\r\n if ((reason = field.resolvedType.verify(value)) !== null)\r\n return reason;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Generates a verifier specific to this verifier's message type.\r\n * @returns {function} Verifier function with an identical signature to {@link Verifier#verify}\r\n */\r\nVerifierPrototype.generate = function generate() {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = this.type.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n var hasReasonVar = false;\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n if (field.required) { gen\r\n\r\n (\"if(m%s===undefined)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n } else if (field.resolvedType instanceof Enum) {\r\n var values = util.toArray(field.resolvedType.values); gen\r\n\r\n (\"switch(m%s){\", prop)\r\n (\"default:\")\r\n (\"return 'invalid enum value %s = '+m%s+' in %s'\", field.name, prop, this.type.getFullName());\r\n\r\n for (var j = 0, l = values.length; j < l; ++j) gen\r\n (\"case %d:\", values[j]); gen\r\n (\"}\");\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (field.required) gen\r\n\r\n (\"if(!m%s)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, this.type.getFullName());\r\n\r\n if (!hasReasonVar) { gen(\"var r\"); hasReasonVar = true; } gen\r\n\r\n (\"if((r=types[%d].verify(m%s))!==null)\", i, prop)\r\n (\"return r\");\r\n }\r\n }\r\n return gen\r\n (\"return null\")\r\n\r\n .eof(this.type.getFullName() + \"$verify\", {\r\n types : fields.map(function(fld) { return fld.resolvedType; })\r\n });\r\n /* eslint-enable no-unexpected-multiline */\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(21),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits;\r\n\r\n/**\r\n * Constructs a new writer operation.\r\n * @classdesc Scheduled writer operation.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {*} val Value to write\r\n * @param {number} len Value byte length\r\n * @private\r\n * @ignore\r\n */\r\nfunction Op(fn, val, len) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {?Writer.Op}\r\n */\r\n this.next = null;\r\n}\r\n\r\nWriter.Op = Op;\r\n\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n}\r\n\r\nWriter.State = State;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * When called as a function, returns an appropriate writer for the current environment.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @exports Writer\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n if (!(this instanceof Writer))\r\n return util.Buffer && new BufferWriter() || new Writer();\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * State stack.\r\n * @type {Object[]}\r\n */\r\n this.stack = [];\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling linked operations with already prepared values.\r\n}\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.push = function push(fn, len, val) {\r\n var op = new Op(fn, val, len);\r\n this.tail.next = op;\r\n this.tail = op;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(buf, pos, val) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\n/**\r\n * Writes a tag.\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.tag = function write_tag(id, wireType) {\r\n return this.push(writeByte, 1, id << 3 | wireType & 7);\r\n};\r\n\r\nfunction writeVarint32(buf, pos, val) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value >>>= 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this.push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint32 = function write_sint32(value) {\r\n return this.uint32(value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeVarint64(buf, pos, val) {\r\n // tends to deoptimize. stays optimized when using bits directly.\r\n while (val.hi || val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.int64 = WriterPrototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sint64 = function sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bool = function write_bool(value) {\r\n return this.push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(buf, pos, val) {\r\n buf[pos++] = val & 255;\r\n buf[pos++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24 & 255;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\nfunction writeFloat(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 23, 4);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nfunction writeDouble(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 52, 8);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 8, value);\r\n};\r\n\r\nvar writeBytes = ArrayImpl.prototype.set\r\n ? function writeBytes_set(buf, pos, val) { buf.set(val, pos); }\r\n : function writeBytes_for(buf, pos, val) { for (var i = 0; i < val.length; ++i) buf[pos + i] = val[i]; };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeString(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i) {\r\n var c1 = val.charCodeAt(i), c2;\r\n if (c1 < 128) {\r\n buf[pos++] = c1;\r\n } else if (c1 < 2048) {\r\n buf[pos++] = c1 >> 6 | 192;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < val.length && ((c2 = val.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buf[pos++] = c1 >> 18 | 240;\r\n buf[pos++] = c1 >> 12 & 63 | 128;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else {\r\n buf[pos++] = c1 >> 12 | 224;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n }\r\n }\r\n}\r\n\r\nfunction byteLength(val) {\r\n var strlen = val.length >>> 0;\r\n if (strlen) {\r\n var len = 0;\r\n for (var i = 0, c1; i < strlen; ++i) {\r\n c1 = val.charCodeAt(i);\r\n if (c1 < 128)\r\n len += 1;\r\n else if (c1 < 2048)\r\n len += 2;\r\n else if ((c1 & 0xFC00) === 0xD800 && i + 1 < strlen && (val.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.string = function write_string(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeString, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#ldelim}, {@link Writer#reset} or {@link Writer#finish} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fork = function fork() {\r\n this.stack.push(new State(this));\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.reset = function reset() {\r\n if (this.stack.length) {\r\n var state = this.stack.pop();\r\n this.head = state.head;\r\n this.tail = state.tail;\r\n this.len = state.len;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @param {number} [id] Id with wire type 2 to prepend where applicable\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.ldelim = function ldelim(id) {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset();\r\n if (id !== undefined)\r\n this.tag(id, 2);\r\n this.uint32(len);\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations and frees all resources.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriterPrototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = new ArrayImpl(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer writer.\r\n * @classdesc Wire format writer using node buffers.\r\n * @exports BufferWriter\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nfunction writeFloatBuffer(buf, pos, val) {\r\n buf.writeFloatLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.float = function write_float_buffer(value) {\r\n return this.push(writeFloatBuffer, 4, value);\r\n};\r\n\r\nfunction writeDoubleBuffer(buf, pos, val) {\r\n buf.writeDoubleLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.double = function write_double_buffer(value) {\r\n return this.push(writeDoubleBuffer, 8, value);\r\n};\r\n\r\nfunction writeBytesBuffer(buf, pos, val) {\r\n if (val.length)\r\n val.copy(buf, pos, 0, val.length);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytesBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeStringBuffer(buf, pos, val) {\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeStringBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.finish = function finish_buffer() {\r\n var head = this.head.next, // skip noop\r\n buf = util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(this.len) || new util.Buffer(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @param {function(?Error, Root=)} [callback] Callback function\r\n * @returns {Promise|Object} A promise if callback has been omitted, otherwise the protobuf namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === 'function') {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback) || protobuf;\r\n}\r\n\r\nprotobuf.load = load;\r\n\r\n// Parser\r\nprotobuf.tokenize = require(\"./tokenize\");\r\nprotobuf.parse = require(\"./parse\");\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = protobuf.Writer.BufferWriter;\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = protobuf.Reader.BufferReader;\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Prototype = require(\"./prototype\");\r\nprotobuf.inherits = require(\"./inherits\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.util = util;\r\n"],"sourceRoot":"."} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/ieee754.js","src/common.js","src/decoder.js","src/encoder.js","src/enum.js","src/field.js","src/inherits.js","src/mapfield.js","src/method.js","src/namespace.js","src/object.js","src/oneof.js","src/parse.js","src/prototype.js","src/reader.js","src/root.js","src/service.js","src/tokenize.js","src/type.js","src/types.js","src/util.js","src/util/codegen.js","src/util/longbits.js","src/util/runtime.js","src/verifier.js","src/writer.js","src/index.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","read","buffer","offset","isBE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","NaN","Infinity","Math","pow","write","value","c","rt","abs","isNaN","floor","log","LN2","common","name","json","test","nested","google","protobuf","Any","fields","type_url","type","id","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","keyType","Value","oneofs","kind","oneof","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","values","NULL_VALUE","ListValue","rule","decoder","Enum","Reader","types","util","fallback","reader","this","getFieldsById","limit","undefined","len","pos","message","getCtor","tag","field","resolve","resolvedType","map","resolvedKeyType","uint32","ks","vs","basic","decode","longToHash","repeated","packed","wireType","plimit","skipType","generate","mtype","getFieldsArray","gen","codegen","prop","safeProp","encoder","Writer","writer","fi","keys","Object","fork","mapKey","encode","ldelim","required","long","longNeq","defaultValue","reset","keyWireType","options","ReflectionObject","_valuesById","clearCache","enm","EnumPrototype","extend","_TypeError","defineProperties","valuesById","get","getValuesById","forEach","testJSON","Boolean","fromJSON","toJSON","add","isString","isInteger","remove","Field","isObject","toString","toLowerCase","optional","partOf","Long","extensionField","declaringField","_packed","FieldPrototype","Type","MapField","isPacked","getOption","setOption","ifNotSet","prototype","role","resolved","typeDefault","defaults","parent","lookup","optionDefault","fromValue","jsonConvert","String","Number","toNumber","charAt","inherits","clazz","classProperties","$type","noStatics","merge","finish","encodeDelimited","decodeDelimited","verify","Prototype","constructor","noRegister","setCtor","prototypeProperties","getOneofsArray","set","MapFieldPrototype","Method","requestType","responseType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","MethodPrototype","Namespace","_nestedArray","namespace","arrayToJSON","array","obj","NamespacePrototype","Service","nestedTypes","nestedError","ctor","join","nestedArray","getNestedArray","toArray","methods","addJSON","nestedJson","ns","nestedName","j","object","indexOf","prev","setOptions","onAdd","onRemove","define","path","split","Array","isArray","ptr","part","shift","resolveAll","parentAlreadyChecked","getRoot","slice","found","proto","create","Root","ReflectionObjectPrototype","root","fullName","getFullName","unshift","_handleAdd","_handleRemove","OneOf","fieldNames","_fields","addFieldsToParent","OneOfPrototype","push","index","splice","lower","token","camelCase","substring","replace","$0","$1","toUpperCase","parse","source","illegal","tn","line","s_bclose","readString","next","s_dq","s_sq","skip","peek","readValue","acceptTypeRef","parseNumber","typeRefRe","readRange","start","parseId","end","s_semi","sign","tokenLower","parseInt","parseFloat","acceptNegative","parsePackage","pkg","s_name","parseImport","whichImports","weakImports","imports","parseSyntax","syntax","p3","isProto3","parseCommon","s_option","parseOption","parseType","parseEnum","parseService","parseExtension","nameRe","s_open","s_close","parseMapField","s_required","s_optional","s_repeated","parseField","parseOneOf","extensions","reserved","s_type","parseInlineOptions","valueType","parseEnumField","custom","s_bopen","fqTypeRefRe","parseOptionValue","service","parseMethod","st","method","reference","tokenize","head","package","properties","any","fieldsOnly","asJSON","key","indexOutOfRange","writeLength","RangeError","buf","Buffer","isBuffer","BufferReader","Tag","readLongVarint","lo","hi","b","LongBits","read_int64_long","toLong","read_int64_number","read_uint64_long","read_uint64_number","read_sint64_long","zzDecode","read_sint64_number","readLongFixed","read_fixed64_long","read_fixed64_number","read_sfixed64_long","read_sfixed64_number","initBufferReader","ieee754","ReaderPrototype","ArrayImpl","Uint8Array","_slice","subarray","int32","octet","sint32","int64","uint64","sint64","bool","fixed32","sfixed32","fixed64","sfixed64","float","double","bytes","string","out","p","c1","fromCharCode","apply","remain","BufferReaderPrototype","readFloatLE","readDoubleLE","deferred","files","handleExtension","extendedType","sisterField","RootPrototype","resolvePath","load","filename","callback","err","cb","process","JSON","parsed","self","fetch","queued","weak","idx","altname","setTimeout","asPromise","newDeferred","_methodsArray","ServicePrototype","methodsArray","getMethodsArray","methodName","inherited","rpc","requestDelimited","responseDelimited","rpcService","defineProperty","request","requestData","setImmediate","responseData","response","err2","unescape","str","subject","re","stringDelim","stringDoubleRe","stringSingleRe","lastIndex","match","exec","stack","repeat","curr","s_nl","s_sl","s_as","delimRe","delim","expected","actual","equals","_fieldsById","_fieldsArray","_oneofsArray","_ctor","TypePrototype","verifier","fieldsById","names","fieldsArray","oneofsArray","supported","eof","P","fieldName","oneOfName","filter","fld","readerOrBuffer","bake","emptyArray","freeze","fn","ctx","args","arguments","Promise","reject","concat","onload","xhr","status","responseText","fs","readFile","XMLHttpRequest","onreadystatechange","readyState","open","send","isAbsolutePath","normalizePath","parts","prefix","isFinite","description","TypeError","originPath","importPath","alreadyNormalized","dst","src","newBuffer","size","fmt","level","indent","blockOpenRe","branchRe","casingRe","inCase","breakRe","blockCloseRe","format","params","param","stringify","scope","verbose","console","Function","LongBitsPrototype","zero","zzEncode","fromNumber","from","fromString","low","high","unsigned","charCodeAt","fromHash","hash","toHash","mask","part0","part1","part2","isNode","global","versions","node","dcodeIO","longFromHash","bits","fromBits","reason","hasReasonVar","Op","val","noop","State","tail","BufferWriter","writeByte","writeVarint32","writeVarint64","writeFixed32","writeFloat","writeDouble","writeString","c2","byteLength","strlen","writeFloatBuffer","writeFloatLE","writeDoubleBuffer","writeDoubleLE","writeBytesBuffer","copy","writeStringBuffer","WriterPrototype","op","writeBytes","state","pop","BufferWriterPrototype","allocUnsafe"],"mappings":"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","file":"protobuf.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 1,\r\n nBits = -7,\r\n i = isBE ? 0 : (nBytes - 1),\r\n d = isBE ? 1 : -1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n};\r\n\r\nexports.write = function writeIEEE754(buffer, value, offset, isBE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isBE ? (nBytes - 1) : 0,\r\n d = isBE ? -1 : 1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = common;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {Object} google/protobuf/any.proto Any\r\n * @property {Object} google/protobuf/duration.proto Duration\r\n * @property {Object} google/protobuf/empty.proto Empty\r\n * @property {Object} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {Object} google/protobuf/timestamp.proto Timestamp\r\n */\r\nfunction common(name, json) {\r\n if (!/\\/|\\./.test(name)) {\r\n name = \"google/protobuf/\" + name + \".proto\";\r\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n }\r\n common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n// - google/protobuf/descriptor.proto\r\n// - google/protobuf/field_mask.proto\r\n// - google/protobuf/source_context.proto\r\n// - google/protobuf/type.proto\r\n// - google/protobuf/wrappers.proto\r\n\r\ncommon(\"any\", {\r\n Any: {\r\n fields: {\r\n type_url: {\r\n type: \"string\",\r\n id: 1\r\n },\r\n value: {\r\n type: \"bytes\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n Duration: timeType = {\r\n fields: {\r\n seconds: {\r\n type: \"int64\",\r\n id: 1\r\n },\r\n nanos: {\r\n type: \"int32\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\r\n Struct: {\r\n fields: {\r\n fields: {\r\n keyType: \"string\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n },\r\n Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [ \"nullValue\", \"numberValue\", \"stringValue\", \"boolValue\", \"structValue\", \"listValue\" ]\r\n }\r\n },\r\n fields: {\r\n nullValue: {\r\n type: \"NullValue\",\r\n id: 1\r\n },\r\n numberValue: {\r\n type: \"double\",\r\n id: 2\r\n },\r\n stringValue: {\r\n type: \"string\",\r\n id: 3\r\n },\r\n boolValue: {\r\n type: \"bool\",\r\n id: 4\r\n },\r\n structValue: {\r\n type: \"Struct\",\r\n id: 5\r\n },\r\n listValue: {\r\n type: \"ListValue\",\r\n id: 6\r\n }\r\n }\r\n },\r\n NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\r\n },\r\n ListValue: {\r\n fields: {\r\n values: {\r\n rule: \"repeated\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\n\r\n/**\r\n * Wire format decoder using code generation on top of reflection.\r\n * @namespace\r\n */\r\nvar decoder = exports;\r\n\r\nvar Enum = require(5),\r\n Reader = require(15),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Decodes a message of `this` message's type.\r\n * @param {Reader} reader Reader to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Populated runtime message\r\n * @this Type\r\n */\r\ndecoder.fallback = function fallback(reader, length) {\r\n /* eslint-disable no-invalid-this, block-scoped-var, no-redeclare */\r\n var fields = this.getFieldsById(),\r\n reader = reader instanceof Reader ? reader : Reader(reader),\r\n limit = length === undefined ? reader.len : reader.pos + length,\r\n message = new (this.getCtor())();\r\n while (reader.pos < limit) {\r\n var tag = reader.tag(),\r\n field = fields[tag.id].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"uint32\" : field.type;\r\n \r\n // Known fields\r\n if (field) {\r\n\r\n // Map fields\r\n if (field.map) {\r\n var keyType = field.resolvedKeyType /* only valid is enum */ ? \"uint32\" : field.keyType,\r\n length = reader.uint32();\r\n var map = message[field.name] = {};\r\n if (length) {\r\n length += reader.pos;\r\n var ks = [], vs = [];\r\n while (reader.pos < length) {\r\n if (reader.tag().id === 1)\r\n ks[ks.length] = reader[keyType]();\r\n else if (types.basic[type] !== undefined)\r\n vs[vs.length] = reader[type]();\r\n else\r\n vs[vs.length] = field.resolvedType.decode(reader, reader.uint32());\r\n }\r\n for (var i = 0; i < ks.length; ++i)\r\n map[typeof ks[i] === 'object' ? util.longToHash(ks[i]) : ks[i]] = vs[i];\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) {\r\n var values = message[field.name] || (message[field.name] = []);\r\n\r\n // Packed\r\n if (field.packed && types.packed[type] !== undefined && tag.wireType === 2) {\r\n var plimit = reader.uint32() + reader.pos;\r\n while (reader.pos < plimit)\r\n values[values.length] = reader[type]();\r\n\r\n // Non-packed\r\n } else if (types.basic[type] !== undefined)\r\n values[values.length] = reader[type]();\r\n else\r\n values[values.length] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Non-repeated\r\n } else if (types.basic[type] !== undefined)\r\n message[field.name] = reader[type]();\r\n else\r\n message[field.name] = field.resolvedType.decode(reader, reader.uint32());\r\n\r\n // Unknown fields\r\n } else\r\n reader.skipType(tag.wireType);\r\n }\r\n return message;\r\n /* eslint-enable no-invalid-this, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {util.CodegenAppender} Unscoped codegen instance\r\n */\r\ndecoder.generate = function generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray(); \r\n var gen = util.codegen(\"r\", \"l\")\r\n\r\n (\"r instanceof Reader||(r=Reader(r))\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new(this.getCtor())\")\r\n (\"while(r.pos} [values] Enum values as an object, by name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Enum(name, values, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = values || {}; // toJSON, marker\r\n\r\n /**\r\n * Cached values by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._valuesById = null;\r\n}\r\n\r\nObject.defineProperties(EnumPrototype, {\r\n\r\n /**\r\n * Enum values by id.\r\n * @name Enum#valuesById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n valuesById: {\r\n get: EnumPrototype.getValuesById = function getValuesById() {\r\n if (!this._valuesById) {\r\n this._valuesById = {};\r\n Object.keys(this.values).forEach(function(name) {\r\n var id = this.values[name];\r\n if (this._valuesById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._valuesById[id] = name;\r\n }, this);\r\n }\r\n return this._valuesById;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(enm) {\r\n enm._valuesById = null;\r\n return enm;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes an enum.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes an enum\r\n */\r\nEnum.testJSON = function testJSON(json) {\r\n return Boolean(json && json.values);\r\n};\r\n\r\n/**\r\n * Creates an enum from JSON.\r\n * @param {string} name Enum name\r\n * @param {Object.} json JSON object\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n return new Enum(name, json.values, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nEnumPrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n values : this.values\r\n };\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnumPrototype.add = function(name, id) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (this.values[name] !== undefined)\r\n throw Error('duplicate name \"' + name + '\" in ' + this);\r\n if (this.getValuesById()[id] !== undefined)\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnumPrototype.remove = function(name) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (this.values[name] === undefined)\r\n throw Error('\"' + name + '\" is not a name of ' + this);\r\n delete this.values[name];\r\n return clearCache(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Field;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = ReflectionObject.extend(Field);\r\n\r\nvar Type = require(19),\r\n Enum = require(5),\r\n MapField = require(8),\r\n types = require(20),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new message field. Note that {@link MapField|map fields} have their own class.\r\n * @classdesc Reflected message field.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string} [rule=optional] Field rule\r\n * @param {string} [extend] Extended type if different from parent\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Field(name, id, type, rule, extend, options) {\r\n if (util.isObject(rule)) {\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n options = extend;\r\n extend = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (!util.isInteger(id) || id < 0)\r\n throw _TypeError(\"id\", \"a non-negative integer\");\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (extend !== undefined && !util.isString(extend))\r\n throw _TypeError(\"extend\");\r\n if (rule !== undefined && !/^required|optional|repeated$/.test(rule = rule.toString().toLowerCase()))\r\n throw _TypeError(\"rule\", \"a valid rule string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== 'optional' ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {?Type}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {?OneOf}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field's default value. Only relevant when working with proto2.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : false;\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {?(Type|Enum)}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {?Field}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {?Field}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {?boolean}\r\n * @private\r\n */\r\n this._packed = null;\r\n}\r\n\r\nObject.defineProperties(FieldPrototype, {\r\n\r\n /**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n packed: {\r\n get: FieldPrototype.isPacked = function() {\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\")\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Tests if the specified JSON object describes a field.\r\n * @param {*} json Any JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nField.testJSON = function testJSON(json) {\r\n return Boolean(json && json.id !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n if (json.keyType !== undefined)\r\n return MapField.fromJSON(name, json);\r\n return new Field(name, json.id, json.type, json.role, json.extend, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n rule : this.rule !== \"optional\" && this.rule || undefined,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n var typeDefault = types.defaults[this.type];\r\n\r\n // if not a basic type, resolve it\r\n if (typeDefault === undefined) {\r\n var resolved = this.parent.lookup(this.type);\r\n if (resolved instanceof Type) {\r\n this.resolvedType = resolved;\r\n typeDefault = null;\r\n } else if (resolved instanceof Enum) {\r\n this.resolvedType = resolved;\r\n typeDefault = 0;\r\n } else\r\n throw Error(\"unresolvable field type: \" + this.type);\r\n }\r\n\r\n // when everything is resolved determine the default value\r\n var optionDefault;\r\n if (this.map)\r\n this.defaultValue = {};\r\n else if (this.repeated)\r\n this.defaultValue = [];\r\n else if (this.options && (optionDefault = this.options['default']) !== undefined) // eslint-disable-line dot-notation\r\n this.defaultValue = optionDefault;\r\n else\r\n this.defaultValue = typeDefault;\r\n\r\n if (this.long)\r\n this.defaultValue = util.Long.fromValue(this.defaultValue);\r\n \r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Converts a field value to JSON using the specified options. Note that this method does not account for repeated fields and must be called once for each repeated element instead.\r\n * @param {*} value Field value\r\n * @param {Object.} [options] Conversion options\r\n * @returns {*} Converted value\r\n * @see {@link Prototype#asJSON}\r\n */\r\nFieldPrototype.jsonConvert = function(value, options) {\r\n if (options) {\r\n if (this.resolvedType instanceof Enum && options['enum'] === String) // eslint-disable-line dot-notation\r\n return this.resolvedType.getValuesById()[value];\r\n else if (this.long && options.long)\r\n return options.long === Number\r\n ? typeof value === 'number'\r\n ? value\r\n : util.Long.fromValue(value).toNumber()\r\n : util.Long.fromValue(value, this.type.charAt(0) === 'u').toString();\r\n }\r\n return value;\r\n};\r\n","\"use strict\";\r\nmodule.exports = inherits;\r\n\r\nvar Prototype = require(14),\r\n Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Options passed to {@link inherits}, modifying its behavior.\r\n * @typedef InheritanceOptions\r\n * @type {Object}\r\n * @property {boolean} [noStatics=false] Skips adding the default static methods on top of the constructor\r\n * @property {boolean} [noRegister=false] Skips registering the constructor with the reflected type\r\n */\r\n\r\n/**\r\n * Inherits a custom class from the message prototype of the specified message type.\r\n * @param {Function} clazz Inheriting class\r\n * @param {Type} type Inherited message type\r\n * @param {InheritanceOptions} [options] Inheritance options\r\n * @returns {Prototype} Created prototype\r\n */\r\nfunction inherits(clazz, type, options) {\r\n if (typeof clazz !== 'function')\r\n throw _TypeError(\"clazz\", \"a function\");\r\n if (!(type instanceof Type))\r\n throw _TypeError(\"type\", \"a Type\");\r\n if (!options)\r\n options = {};\r\n\r\n /**\r\n * This is not an actual type but stands as a reference for any constructor of a custom message class that you pass to the library.\r\n * @name Class\r\n * @extends Prototype\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set on the message\r\n * @see {@link inherits}\r\n */\r\n\r\n var classProperties = {\r\n \r\n /**\r\n * Reference to the reflected type.\r\n * @name Class.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n if (!options.noStatics)\r\n util.merge(classProperties, {\r\n\r\n /**\r\n * Encodes a message of this type to a buffer.\r\n * @name Class.encode\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encode: {\r\n value: function encode(message, writer) {\r\n return this.$type.encode(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Encodes a message of this type preceeded by its length as a varint to a buffer.\r\n * @name Class.encodeDelimited\r\n * @function\r\n * @param {Prototype|Object} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Uint8Array} Encoded message\r\n */\r\n encodeDelimited: {\r\n value: function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer).finish();\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type from a buffer.\r\n * @name Class.decode\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decode: {\r\n value: function decode(buffer) {\r\n return this.$type.decode(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Decodes a message of this type preceeded by its length as a varint from a buffer.\r\n * @name Class.decodeDelimited\r\n * @function\r\n * @param {Uint8Array} buffer Buffer to decode\r\n * @returns {Prototype} Decoded message\r\n */\r\n decodeDelimited: {\r\n value: function decodeDelimited(buffer) {\r\n return this.$type.decodeDelimited(buffer);\r\n }\r\n },\r\n\r\n /**\r\n * Verifies a message of this type.\r\n * @name Class.verify\r\n * @function\r\n * @param {Prototype|Object} message Message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\n verify: {\r\n value: function verify(message) {\r\n return this.$type.verify(message);\r\n }\r\n }\r\n\r\n }, true);\r\n\r\n Object.defineProperties(clazz, classProperties);\r\n var prototype = inherits.defineProperties(new Prototype(), type);\r\n clazz.prototype = prototype;\r\n prototype.constructor = clazz;\r\n\r\n if (!options.noRegister)\r\n type.setCtor(clazz);\r\n\r\n return prototype;\r\n}\r\n\r\n/**\r\n * Defines the reflected type's default values and virtual oneof properties on the specified prototype.\r\n * @memberof inherits\r\n * @param {Prototype} prototype Prototype to define properties upon\r\n * @param {Type} type Reflected message type\r\n * @returns {Prototype} The specified prototype\r\n */\r\ninherits.defineProperties = function defineProperties(prototype, type) {\r\n\r\n var prototypeProperties = {\r\n\r\n /**\r\n * Reference to the reflected type.\r\n * @name Prototype#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n $type: {\r\n value: type\r\n }\r\n };\r\n\r\n // Initialize default values\r\n type.getFieldsArray().forEach(function(field) {\r\n field.resolve();\r\n if (!util.isObject(field.defaultValue))\r\n // objects are mutable (i.e. would modify the array on the prototype, not the instance)\r\n prototype[field.name] = field.defaultValue;\r\n });\r\n\r\n // Define each oneof with a non-enumerable getter and setter for the present field\r\n type.getOneofsArray().forEach(function(oneof) {\r\n prototypeProperties[oneof.resolve().name] = {\r\n get: function() {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n var field = oneof.parent.fields[keys[i]];\r\n if (this[keys[i]] != field.defaultValue) // eslint-disable-line eqeqeq\r\n return keys[i];\r\n }\r\n return undefined;\r\n },\r\n set: function(value) {\r\n var keys = oneof.oneof;\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (keys[i] !== value)\r\n delete this[keys[i]];\r\n }\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperties(prototype, prototypeProperties);\r\n return prototype;\r\n};\r\n","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\nvar Field = require(6);\r\n/** @alias Field.prototype */\r\nvar FieldPrototype = Field.prototype;\r\n/** @alias MapField.prototype */\r\nvar MapFieldPrototype = Field.extend(MapField);\r\n\r\nvar Enum = require(5),\r\n types = require(20),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new map field.\r\n * @classdesc Reflected map field.\r\n * @extends Field\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction MapField(name, id, keyType, type, options) {\r\n Field.call(this, name, id, type, options);\r\n if (!util.isString(keyType))\r\n throw util._TypeError(\"keyType\");\r\n \r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {?ReflectionObject}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a map field.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a field\r\n */\r\nMapField.testJSON = function testJSON(json) {\r\n return Field.testJSON(json) && json.keyType !== undefined;\r\n};\r\n\r\n/**\r\n * Constructs a map field from JSON.\r\n * @param {string} name Field name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.toJSON = function toJSON() {\r\n return {\r\n keyType : this.keyType,\r\n type : this.type,\r\n id : this.id,\r\n extend : this.extend,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapFieldPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n \r\n // Besides a value type, map fields have a key type to resolve\r\n var keyWireType = types.mapKey[this.keyType];\r\n if (keyWireType === undefined) {\r\n var resolved = this.parent.lookup(this.keyType);\r\n if (!(resolved instanceof Enum))\r\n throw Error(\"unresolvable map key type: \" + this.keyType);\r\n this.resolvedKeyType = resolved;\r\n }\r\n\r\n return FieldPrototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Method;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Method.prototype */\r\nvar MethodPrototype = ReflectionObject.extend(Method);\r\n\r\nvar Type = require(19),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new service method.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean} [requestStream] Whether the request is streamed\r\n * @param {boolean} [responseStream] Whether the response is streamed\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options) {\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n if (!util.isString(type))\r\n throw _TypeError(\"type\");\r\n if (!util.isString(requestType))\r\n throw _TypeError(\"requestType\");\r\n if (!util.isString(responseType))\r\n throw _TypeError(\"responseType\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {?Type}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {?Type}\r\n */\r\n this.resolvedResponseType = null;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service method.\r\n * @param {Object} json JSON object\r\n * @returns {boolean} `true` if the object describes a map field\r\n */\r\nMethod.testJSON = function testJSON(json) {\r\n return Boolean(json && json.requestType !== undefined);\r\n};\r\n\r\n/**\r\n * Constructs a service method from JSON.\r\n * @param {string} name Method name\r\n * @param {Object} json JSON object\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.toJSON = function toJSON() {\r\n return {\r\n type : this.type !== \"rpc\" && this.type || undefined,\r\n requestType : this.requestType,\r\n requestStream : this.requestStream,\r\n responseType : this.responseType,\r\n responseStream : this.responseStream,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethodPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var resolved = this.parent.lookup(this.requestType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable request type: \" + this.requestType);\r\n this.resolvedRequestType = resolved;\r\n resolved = this.parent.lookup(this.responseType);\r\n if (!(resolved && resolved instanceof Type))\r\n throw Error(\"unresolvable response type: \" + this.requestType);\r\n this.resolvedResponseType = resolved;\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = ReflectionObject.extend(Namespace);\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n Field = require(6),\r\n Service = require(17),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\nvar nestedTypes = [ Enum, Type, Service, Field, Namespace ],\r\n nestedError = \"one of \" + nestedTypes.map(function(ctor) { return ctor.name; }).join(', ');\r\n\r\n/**\r\n * Constructs a new namespace.\r\n * @classdesc Reflected namespace and base class of all reflection objects containing nested objects.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {?ReflectionObject[]}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\nObject.defineProperties(NamespacePrototype, {\r\n\r\n /**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name Namespace#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\n nestedArray: {\r\n get: NamespacePrototype.getNestedArray = function getNestedArray() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n }\r\n\r\n});\r\n\r\n/**\r\n * Tests if the specified JSON object describes not another reflection object.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes not another reflection object\r\n */\r\nNamespace.testJSON = function testJSON(json) {\r\n return Boolean(json\r\n && !json.fields // Type\r\n && !json.values // Enum\r\n && json.id === undefined // Field, MapField\r\n && !json.oneof // OneOf\r\n && !json.methods // Service\r\n && json.requestType === undefined // Method\r\n );\r\n};\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @param {string} name Namespace name\r\n * @param {Object} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nNamespacePrototype.toJSON = function toJSON() {\r\n return {\r\n options : this.options,\r\n nested : arrayToJSON(this.getNestedArray())\r\n };\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON();\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Adds nested elements to this namespace from JSON.\r\n * @param {Object.} nestedJson Nested JSON\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n if (nestedJson)\r\n Object.keys(nestedJson).forEach(function(nestedName) {\r\n var nested = nestedJson[nestedName];\r\n for (var j = 0; j < nestedTypes.length; ++j)\r\n if (nestedTypes[j].testJSON(nested))\r\n return ns.add(nestedTypes[j].fromJSON(nestedName, nested));\r\n throw _TypeError(\"nested.\" + nestedName, \"JSON for \" + nestedError);\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {?ReflectionObject} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespacePrototype.get = function get(name) {\r\n if (this.nested === undefined) // prevents deopt\r\n return null;\r\n return this.nested[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespacePrototype.add = function add(object) {\r\n if (!object || nestedTypes.indexOf(object.constructor) < 0)\r\n throw _TypeError(\"object\", nestedError);\r\n if (object instanceof Field && object.extend === undefined)\r\n throw _TypeError(\"object\", \"an extension field when not part of a type\");\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespacePrototype.remove = function remove(object) {\r\n if (!(object instanceof ReflectionObject))\r\n throw _TypeError(\"object\", \"a ReflectionObject\");\r\n if (object.parent !== this || !this.nested)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespacePrototype.define = function define(path, json) {\r\n if (util.isString(path))\r\n path = path.split('.');\r\n else if (!Array.isArray(path)) {\r\n json = path;\r\n path = undefined;\r\n }\r\n var ptr = this;\r\n if (path)\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespacePrototype.resolveAll = function resolve() {\r\n var nested = this.getNestedArray(), i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {?ReflectionObject} Looked up object or `null` if none could be found\r\n */\r\nNamespacePrototype.lookup = function lookup(path, parentAlreadyChecked) {\r\n if (util.isString(path)) {\r\n if (!path.length)\r\n return null;\r\n path = path.split('.');\r\n } else if (!path.length)\r\n return null;\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.getRoot().lookup(path.slice(1));\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found && (path.length === 1 || found instanceof Namespace && (found = found.lookup(path.slice(1), true))))\r\n return found;\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path);\r\n};\r\n","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.extend = extend;\r\n\r\nvar Root = require(16),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new reflection object.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n if (!util.isString(name))\r\n throw _TypeError(\"name\");\r\n if (options && !util.isObject(options))\r\n throw _TypeError(\"options\", \"an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {?Namespace}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n}\r\n\r\n/** @alias ReflectionObject.prototype */\r\nvar ReflectionObjectPrototype = ReflectionObject.prototype;\r\n\r\nObject.defineProperties(ReflectionObjectPrototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: ReflectionObjectPrototype.getRoot = function getRoot() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: ReflectionObjectPrototype.getFullName = function getFullName() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join('.');\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Lets the specified constructor extend this class.\r\n * @memberof ReflectionObject\r\n * @param {Function} constructor Extending constructor\r\n * @returns {Object} Prototype\r\n * @this ReflectionObject\r\n */\r\nfunction extend(constructor) {\r\n var proto = constructor.prototype = Object.create(this.prototype);\r\n proto.constructor = constructor;\r\n constructor.extend = extend;\r\n return proto;\r\n}\r\n\r\n/**\r\n * Converts this reflection object to its JSON representation.\r\n * @returns {Object} JSON object\r\n * @abstract\r\n */\r\nReflectionObjectPrototype.toJSON = function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObjectPrototype.onRemove = function onRemove(parent) {\r\n var root = parent.getRoot();\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n var root = this.getRoot();\r\n if (root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObjectPrototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObjectPrototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n Object.keys(options).forEach(function(name) {\r\n this.setOption(name, options[name], ifNotSet);\r\n }, this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Constructor name, space, full name\r\n */\r\nReflectionObjectPrototype.toString = function toString() {\r\n return this.constructor.name + \" \" + this.getFullName();\r\n};\r\n","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\nvar ReflectionObject = require(11);\r\n/** @alias OneOf.prototype */\r\nvar OneOfPrototype = ReflectionObject.extend(OneOf);\r\n\r\nvar Field = require(6),\r\n util = require(21);\r\n\r\nvar _TypeError = util._TypeError;\r\n\r\n/**\r\n * Constructs a new oneof.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]} [fieldNames] Field names\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction OneOf(name, fieldNames, options) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n if (fieldNames && !Array.isArray(fieldNames))\r\n throw _TypeError(\"fieldNames\", \"an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {Array.}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof and are possibly not yet added to its parent.\r\n * @type {Array.}\r\n * @private\r\n */\r\n this._fields = [];\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a oneof.\r\n * @param {*} json JSON object\r\n * @returns {boolean} `true` if the object describes a oneof\r\n */\r\nOneOf.testJSON = function testJSON(json) {\r\n return Boolean(json.oneof);\r\n};\r\n\r\n/**\r\n * Constructs a oneof from JSON.\r\n * @param {string} name Oneof name\r\n * @param {Object} json JSON object\r\n * @returns {MapField} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.toJSON = function toJSON() {\r\n return {\r\n oneof : this.oneof,\r\n options : this.options\r\n };\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n oneof._fields.forEach(function(field) {\r\n if (!field.parent)\r\n oneof.parent.add(field);\r\n });\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.add = function add(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n if (field.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this._fields.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOfPrototype.remove = function remove(field) {\r\n if (!(field instanceof Field))\r\n throw _TypeError(\"field\", \"a Field\");\r\n var index = this._fields.indexOf(field);\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n this._fields.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n if (index > -1)\r\n this.oneof.splice(index, 1);\r\n if (field.parent)\r\n field.parent.remove(field);\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOfPrototype.onRemove = function onRemove(parent) {\r\n this._fields.forEach(function(field) {\r\n if (field.parent)\r\n field.parent.remove(field);\r\n });\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n","\"use strict\";\r\nmodule.exports = parse;\r\n\r\nvar tokenize = require(18),\r\n Root = require(16),\r\n Type = require(19),\r\n Field = require(6),\r\n MapField = require(8),\r\n OneOf = require(12),\r\n Enum = require(5),\r\n Service = require(17),\r\n Method = require(9),\r\n types = require(20);\r\n\r\nvar nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n fqTypeRefRe = /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/;\r\n\r\nfunction lower(token) {\r\n return token === null ? null : token.toLowerCase();\r\n}\r\n\r\nfunction camelCase(name) {\r\n return name.substring(0,1)\r\n + name.substring(1)\r\n .replace(/_([a-z])(?=[a-z]|$)/g, function($0, $1) { return $1.toUpperCase(); });\r\n}\r\n\r\nvar s_required = \"required\",\r\n s_repeated = \"repeated\",\r\n s_optional = \"optional\",\r\n s_option = \"option\",\r\n s_name = \"name\",\r\n s_type = \"type\";\r\nvar s_open = \"{\",\r\n s_close = \"}\",\r\n s_bopen = '(',\r\n s_bclose = ')',\r\n s_semi = \";\",\r\n s_dq = '\"',\r\n s_sq = \"'\";\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @typedef ParserResult\r\n * @type {Object}\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} [root] Root to populate\r\n * @returns {ParserResult} Parser result\r\n */\r\nfunction parse(source, root) {\r\n /* eslint-disable default-case, callback-return */\r\n if (!root)\r\n root = new Root();\r\n\r\n var tn = tokenize(source),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip;\r\n\r\n var head = true,\r\n pkg,\r\n imports,\r\n weakImports,\r\n syntax,\r\n isProto3 = false;\r\n\r\n if (!root)\r\n root = new Root();\r\n\r\n var ptr = root;\r\n\r\n function illegal(token, name) {\r\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (line \" + tn.line() + s_bclose);\r\n }\r\n\r\n function readString() {\r\n var values = [],\r\n token;\r\n do {\r\n if ((token = next()) !== s_dq && token !== s_sq)\r\n throw illegal(token);\r\n values.push(next());\r\n skip(token);\r\n token = peek();\r\n } while (token === s_dq || token === s_sq);\r\n return values.join('');\r\n }\r\n\r\n function readValue(acceptTypeRef) {\r\n var token = next();\r\n switch (lower(token)) {\r\n case s_sq:\r\n case s_dq:\r\n push(token);\r\n return readString();\r\n case \"true\":\r\n return true;\r\n case \"false\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token);\r\n } catch (e) {\r\n if (acceptTypeRef && typeRefRe.test(token))\r\n return token;\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRange() {\r\n var start = parseId(next());\r\n var end = start;\r\n if (skip(\"to\", true))\r\n end = parseId(next());\r\n skip(s_semi);\r\n return [ start, end ];\r\n }\r\n\r\n function parseNumber(token) {\r\n var sign = 1;\r\n if (token.charAt(0) === '-') {\r\n sign = -1;\r\n token = token.substring(1);\r\n }\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"inf\": return sign * Infinity;\r\n case \"nan\": return NaN;\r\n case \"0\": return 0;\r\n }\r\n if (/^[1-9][0-9]*$/.test(token))\r\n return sign * parseInt(token, 10);\r\n if (/^0[x][0-9a-f]+$/.test(tokenLower))\r\n return sign * parseInt(token, 16);\r\n if (/^0[0-7]+$/.test(token))\r\n return sign * parseInt(token, 8);\r\n if (/^(?!e)[0-9]*(?:\\.[0-9]*)?(?:[e][+-]?[0-9]+)?$/.test(tokenLower))\r\n return sign * parseFloat(token);\r\n throw illegal(token, 'number');\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case \"min\": return 1;\r\n case \"max\": return 0x1FFFFFFF;\r\n case \"0\": return 0;\r\n }\r\n if (token.charAt(0) === '-' && !acceptNegative)\r\n throw illegal(token, \"id\");\r\n if (/^-?[1-9][0-9]*$/.test(token))\r\n return parseInt(token, 10);\r\n if (/^-?0[x][0-9a-f]+$/.test(tokenLower))\r\n return parseInt(token, 16);\r\n if (/^-?0[0-7]+$/.test(token))\r\n return parseInt(token, 8);\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n pkg = next();\r\n if (!typeRefRe.test(pkg))\r\n throw illegal(pkg, s_name);\r\n ptr = ptr.define(pkg);\r\n skip(s_semi);\r\n }\r\n\r\n function parseImport() {\r\n var token = peek();\r\n var whichImports;\r\n switch (token) {\r\n case \"weak\":\r\n whichImports = weakImports || (weakImports = []);\r\n next();\r\n break;\r\n case \"public\":\r\n next();\r\n // eslint-disable-line no-fallthrough\r\n default:\r\n whichImports = imports || (imports = []);\r\n break;\r\n }\r\n token = readString();\r\n skip(s_semi);\r\n whichImports.push(token);\r\n }\r\n\r\n function parseSyntax() {\r\n skip(\"=\");\r\n syntax = lower(readString());\r\n var p3;\r\n if ([ \"proto2\", p3 = \"proto3\" ].indexOf(syntax) < 0)\r\n throw illegal(syntax, \"syntax\");\r\n isProto3 = syntax === p3;\r\n skip(s_semi);\r\n }\r\n\r\n function parseCommon(parent, token) {\r\n switch (token) {\r\n\r\n case s_option:\r\n parseOption(parent, token);\r\n skip(s_semi);\r\n return true;\r\n\r\n case \"message\":\r\n parseType(parent, token);\r\n return true;\r\n\r\n case \"enum\":\r\n parseEnum(parent, token);\r\n return true;\r\n\r\n case \"service\":\r\n parseService(parent, token);\r\n return true;\r\n\r\n case \"extend\":\r\n parseExtension(parent, token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function parseType(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"type name\");\r\n var type = new Type(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n if (parseCommon(type, token))\r\n continue;\r\n switch (tokenLower) {\r\n case \"map\":\r\n parseMapField(type, tokenLower);\r\n break;\r\n case s_required:\r\n case s_optional:\r\n case s_repeated:\r\n parseField(type, tokenLower);\r\n break;\r\n case \"oneof\":\r\n parseOneOf(type, tokenLower);\r\n break;\r\n case \"extensions\":\r\n (type.extensions || (type.extensions = [])).push(readRange(type, tokenLower));\r\n break;\r\n case \"reserved\":\r\n (type.reserved || (type.reserved = [])).push(readRange(type, tokenLower));\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(type, s_optional);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (!typeRefRe.test(type))\r\n throw illegal(type, s_type);\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new Field(name, id, type, rule, extend));\r\n if (field.repeated)\r\n field.setOption(\"packed\", isProto3, /* ifNotSet */ true);\r\n parent.add(field);\r\n }\r\n\r\n function parseMapField(parent) {\r\n skip(\"<\");\r\n var keyType = next();\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, s_type);\r\n skip(\",\");\r\n var valueType = next();\r\n if (!typeRefRe.test(valueType))\r\n throw illegal(valueType, s_type);\r\n skip(\">\");\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var field = parseInlineOptions(new MapField(name, id, keyType, valueType));\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n name = camelCase(name);\r\n var oneof = new OneOf(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (token === s_option) {\r\n parseOption(oneof, token);\r\n skip(s_semi);\r\n } else {\r\n push(token);\r\n parseField(oneof, s_optional);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var values = {};\r\n var enm = new Enum(name, values);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (lower(token) === s_option)\r\n parseOption(enm);\r\n else\r\n parseEnumField(enm, token);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumField(parent, token) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n var name = token;\r\n skip(\"=\");\r\n var value = parseId(next(), true);\r\n parent.values[name] = value;\r\n parseInlineOptions({}); // skips enum value options\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var custom = skip(s_bopen, true);\r\n var name = next();\r\n if (!typeRefRe.test(name))\r\n throw illegal(name, s_name);\r\n if (custom) {\r\n skip(s_bclose);\r\n name = s_bopen + name + s_bclose;\r\n token = peek();\r\n if (fqTypeRefRe.test(token)) {\r\n name += token;\r\n next();\r\n }\r\n }\r\n skip(\"=\");\r\n parseOptionValue(parent, name);\r\n }\r\n\r\n function parseOptionValue(parent, name) {\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n if (!nameRe.test(token))\r\n throw illegal(token, s_name);\r\n name = name + \".\" + token;\r\n if (skip(\":\", true))\r\n setOption(parent, name, readValue(true));\r\n else\r\n parseOptionValue(parent, name);\r\n }\r\n skip(s_semi, true);\r\n } else\r\n setOption(parent, name, readValue(true));\r\n // Does not enforce a delimiter to be universal\r\n }\r\n\r\n function setOption(parent, name, value) {\r\n if (parent.setOption)\r\n parent.setOption(name, value);\r\n else\r\n parent[name] = value;\r\n }\r\n\r\n function parseInlineOptions(parent) {\r\n if (skip(\"[\", true)) {\r\n do {\r\n parseOption(parent, s_option);\r\n } while (skip(\",\", true));\r\n skip(\"]\");\r\n }\r\n skip(s_semi);\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n token = next();\r\n if (!nameRe.test(token))\r\n throw illegal(token, \"service name\");\r\n var name = token;\r\n var service = new Service(name);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(service, tokenLower);\r\n skip(s_semi);\r\n break;\r\n case \"rpc\":\r\n parseMethod(service, tokenLower);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n var name = next();\r\n if (!nameRe.test(name))\r\n throw illegal(name, s_name);\r\n var requestType, requestStream,\r\n responseType, responseStream;\r\n skip(s_bopen);\r\n var st;\r\n if (skip(st = \"stream\", true))\r\n requestStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n requestType = token;\r\n skip(s_bclose); skip(\"returns\"); skip(s_bopen);\r\n if (skip(st, true))\r\n responseStream = true;\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n responseType = token;\r\n skip(s_bclose);\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_option:\r\n parseOption(method, tokenLower);\r\n skip(s_semi);\r\n break;\r\n default:\r\n throw illegal(token);\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n var reference = next();\r\n if (!typeRefRe.test(reference))\r\n throw illegal(reference, \"reference\");\r\n if (skip(s_open, true)) {\r\n while ((token = next()) !== s_close) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n case s_required:\r\n case s_repeated:\r\n case s_optional:\r\n parseField(parent, tokenLower, reference);\r\n break;\r\n default:\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(parent, s_optional, reference);\r\n break;\r\n }\r\n }\r\n skip(s_semi, true);\r\n } else\r\n skip(s_semi);\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n var tokenLower = lower(token);\r\n switch (tokenLower) {\r\n\r\n case \"package\":\r\n if (!head)\r\n throw illegal(token);\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n if (!head)\r\n throw illegal(token);\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n if (!head)\r\n throw illegal(token);\r\n parseSyntax();\r\n break;\r\n\r\n case s_option:\r\n if (!head)\r\n throw illegal(token);\r\n parseOption(ptr, token);\r\n skip(s_semi);\r\n break;\r\n\r\n default:\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\r\n }\r\n throw illegal(token);\r\n }\r\n }\r\n\r\n return {\r\n 'package' : pkg,\r\n 'imports' : imports,\r\n 'weakImports' : weakImports,\r\n 'syntax' : syntax,\r\n 'root' : root\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Prototype;\r\n\r\n/**\r\n * Options passed to the {@link Prototype|prototype constructor}, modifying its behavior.\r\n * @typedef PrototypeOptions\r\n * @type {Object}\r\n * @property {boolean} [fieldsOnly=false] Sets only properties that reference a field\r\n */\r\n\r\n/**\r\n * Constructs a new prototype.\r\n * This method should be called from your custom constructors, i.e. `Prototype.call(this, properties)`.\r\n * @classdesc Runtime message prototype ready to be extended by custom classes or generated code.\r\n * @constructor\r\n * @param {Object.} [properties] Properties to set\r\n * @param {PrototypeOptions} [options] Prototype options\r\n * @abstract\r\n * @see {@link inherits}\r\n * @see {@link Class}\r\n */\r\nfunction Prototype(properties, options) {\r\n if (properties) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n keys = Object.keys(properties);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (fields[keys[i]] || any)\r\n this[keys[i]] = properties[keys[i]];\r\n }\r\n}\r\n\r\n/**\r\n * Converts a runtime message to a JSON object.\r\n * @param {Object.} [options] Conversion options\r\n * @param {boolean} [options.fieldsOnly=false] Converts only properties that reference a field\r\n * @param {Function} [options.long] Long conversion type. Only relevant with a long library.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to a possibly unsafe number without, and a `Long` with a long library.\r\n * @param {Function} [options.enum=Number] Enum value conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to the numeric ids.\r\n * @returns {Object.} JSON object\r\n */\r\nPrototype.prototype.asJSON = function asJSON(options) {\r\n var any = !(options && options.fieldsOnly),\r\n fields = this.constructor.$type.fields,\r\n json = {};\r\n var keys = Object.keys(this);\r\n for (var i = 0, key; i < keys.length; ++i) {\r\n var field = fields[key = keys[i]],\r\n value = this[key];\r\n if (field) {\r\n if (field.repeated) {\r\n if (value && value.length) {\r\n var array = new Array(value.length);\r\n for (var j = 0, l = value.length; j < l; ++j)\r\n array[j] = field.jsonConvert(value[j], options);\r\n json[key] = array;\r\n }\r\n } else\r\n json[key] = field.jsonConvert(value, options);\r\n } else if (any)\r\n json[key] = value;\r\n }\r\n return json;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nReader.BufferReader = BufferReader;\r\n\r\nvar util = require(24),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits,\r\n Long = util.Long;\r\n\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader using the specified buffer.\r\n * When called as a function, returns an appropriate reader for the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n if (!(this instanceof Reader))\r\n return util.Buffer && (!buffer || util.Buffer.isBuffer(buffer)) && new BufferReader(buffer) || new Reader(buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\n/** @alias Reader.prototype */\r\nvar ReaderPrototype = Reader.prototype;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\nReaderPrototype._slice = ArrayImpl.prototype.slice || ArrayImpl.prototype.subarray;\r\n\r\n/**\r\n * Tag read.\r\n * @constructor\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @ignore\r\n */\r\nfunction Tag(id, wireType) {\r\n this.id = id;\r\n this.wireType = wireType;\r\n}\r\n\r\n/**\r\n * Reads a tag.\r\n * @returns {{id: number, wireType: number}} Field id and wire type\r\n */\r\nReaderPrototype.tag = function read_tag() {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n return new Tag(this.buf[this.pos] >>> 3, this.buf[this.pos++] & 7);\r\n};\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.int32 = function read_int32() {\r\n var value = 0,\r\n shift = 0,\r\n octet = 0;\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n octet = this.buf[this.pos++];\r\n if (shift < 32)\r\n value |= (octet & 127) << shift;\r\n shift += 7;\r\n } while (octet & 128);\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.uint32 = function read_uint32() {\r\n return this.int32() >>> 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sint32 = function read_sint32() {\r\n var value = this.int32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a possibly 64 bits varint.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction readLongVarint() {\r\n var lo = 0, hi = 0,\r\n i = 0, b = 0;\r\n if (this.len - this.pos > 9) { // fast route\r\n for (i = 0; i < 4; ++i) {\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n } else {\r\n for (i = 0; i < 4; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << i * 7;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n lo |= (b & 127) << 28;\r\n hi |= (b & 127) >> 4;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n for (i = 0; i < 5; ++i) {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n b = this.buf[this.pos++];\r\n hi |= (b & 127) << i * 7 + 3;\r\n if (b < 128)\r\n return new LongBits(lo >>> 0, hi >>> 0);\r\n }\r\n }\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\nfunction read_int64_long() {\r\n return readLongVarint.call(this).toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_int64_number() {\r\n return readLongVarint.call(this).toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.int64 = Long && read_int64_long || read_int64_number;\r\n\r\nfunction read_uint64_long() {\r\n return readLongVarint.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_uint64_number() {\r\n return readLongVarint.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.uint64 = Long && read_uint64_long || read_uint64_number;\r\n\r\nfunction read_sint64_long() {\r\n return readLongVarint.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sint64_number() {\r\n return readLongVarint.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sint64 = Long && read_sint64_long || read_sint64_number;\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReaderPrototype.bool = function read_bool() {\r\n return this.int32() !== 0;\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.fixed32 = function read_fixed32() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n this.pos += 4;\r\n return this.buf[this.pos - 4]\r\n | this.buf[this.pos - 3] << 8\r\n | this.buf[this.pos - 2] << 16\r\n | this.buf[this.pos - 1] << 24;\r\n};\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 32 bits as a number.\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.sfixed32 = function read_sfixed32() {\r\n var value = this.fixed32();\r\n return value >>> 1 ^ -(value & 1);\r\n};\r\n\r\n/**\r\n * Reads a 64 bit value.\r\n * @returns {LongBits} Long bits\r\n * @this {Reader}\r\n * @inner \r\n * @ignore\r\n */\r\nfunction readLongFixed() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n return new LongBits(\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n ,\r\n ( this.buf[this.pos++]\r\n | this.buf[this.pos++] << 8\r\n | this.buf[this.pos++] << 16\r\n | this.buf[this.pos++] << 24 ) >>> 0\r\n );\r\n}\r\n\r\nfunction read_fixed64_long() {\r\n return readLongFixed.call(this).toLong(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_fixed64_number() {\r\n return readLongFixed.call(this).toNumber(true); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @function\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.fixed64 = Long && read_fixed64_long || read_fixed64_number;\r\n\r\nfunction read_sfixed64_long() {\r\n return readLongFixed.call(this).zzDecode().toLong(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\nfunction read_sfixed64_number() {\r\n return readLongFixed.call(this).zzDecode().toNumber(); // eslint-disable-line no-invalid-this\r\n}\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @returns {Long|number} Value read\r\n */\r\nReaderPrototype.sfixed64 = Long && read_sfixed64_long || read_sfixed64_number;\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.float = function read_float() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 23, 4);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReaderPrototype.double = function read_double() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = ieee754.read(this.buf, this.pos, false, 52, 8);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReaderPrototype.bytes = function read_bytes() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReaderPrototype.string = function read_string() {\r\n // ref: https://github.com/google/closure-library/blob/master/closure/goog/crypt/crypt.js\r\n var bytes = this.bytes(),\r\n len = bytes.length;\r\n if (len) {\r\n var out = new Array(len), p = 0, c = 0;\r\n while (p < len) {\r\n var c1 = bytes[p++];\r\n if (c1 < 128)\r\n out[c++] = c1;\r\n else if (c1 > 191 && c1 < 224)\r\n out[c++] = (c1 & 31) << 6 | bytes[p++] & 63;\r\n else if (c1 > 239 && c1 < 365) {\r\n var u = ((c1 & 7) << 18 | (bytes[p++] & 63) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63) - 0x10000;\r\n out[c++] = 0xD800 + (u >> 10);\r\n out[c++] = 0xDC00 + (u & 1023);\r\n } else\r\n out[c++] = (c1 & 15) << 12 | (bytes[p++] & 63) << 6 | bytes[p++] & 63;\r\n }\r\n return String.fromCharCode.apply(String, out.slice(0, c));\r\n }\r\n return \"\";\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skip = function skip(length) {\r\n if (length === undefined) {\r\n do {\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n } else {\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n var tag = this.tag();\r\n if (tag.wireType === 4)\r\n break;\r\n this.skipType(tag.wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n default:\r\n throw Error(\"invalid wire type: \" + wireType);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance and frees all resources.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Reader} `this`\r\n */\r\nReaderPrototype.reset = function reset(buffer) {\r\n if (buffer) {\r\n this.buf = buffer;\r\n this.len = buffer.length;\r\n } else {\r\n this.buf = null; // makes it throw\r\n this.len = 0;\r\n }\r\n this.pos = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of read operations, frees all resources and returns the remaining buffer.\r\n * @param {Uint8Array} [buffer] New buffer for a new sequence of read operations\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nReaderPrototype.finish = function finish(buffer) {\r\n var remain = this.pos\r\n ? this._slice.call(this.buf, this.pos)\r\n : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n\r\n// One time function to initialize BufferReader with the now-known buffer implementation's slice method\r\nvar initBufferReader = function() {\r\n if (!util.Buffer)\r\n throw Error(\"Buffer is not supported\");\r\n BufferReaderPrototype._slice = util.Buffer.prototype.slice;\r\n initBufferReader = false;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer reader.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n if (initBufferReader)\r\n initBufferReader();\r\n Reader.call(this, buffer);\r\n}\r\n\r\n/** @alias BufferReader.prototype */\r\nvar BufferReaderPrototype = BufferReader.prototype = Object.create(Reader.prototype);\r\n\r\nBufferReaderPrototype.constructor = BufferReader;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.float = function read_float_buffer() {\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n var value = this.buf.readFloatLE(this.pos, true);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.double = function read_double_buffer() {\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n var value = this.buf.readDoubleLE(this.pos, true);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.string = function read_string_buffer() {\r\n var length = this.int32() >>> 0,\r\n start = this.pos,\r\n end = this.pos + length;\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n return this.buf.toString(\"utf8\", start, end);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReaderPrototype.finish = function finish_buffer(buffer) {\r\n var remain = this.pos ? this.buf.slice(this.pos) : this.buf;\r\n this.reset(buffer);\r\n return remain;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Root;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Root.prototype */\r\nvar RootPrototype = Namespace.extend(Root);\r\n\r\nvar Field = require(6),\r\n util = require(21),\r\n common = require(2);\r\n\r\n/**\r\n * Constructs a new root namespace.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {Object} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files. \r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a JSON definition into a root namespace.\r\n * @param {*} json JSON definition\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n return root.setOptions(json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string} Resolved path to `target`\r\n */\r\nRootPrototype.resolvePath = util.resolvePath;\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {function(?Error, Root=)} [callback] Node-style callback function\r\n * @returns {Promise|undefined} A promise if `callback` has been omitted\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nRootPrototype.load = function load(filename, callback) {\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename);\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n var parsed = require(13)(source, self);\r\n if (parsed.imports)\r\n parsed.imports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name));\r\n });\r\n if (parsed.weakImports)\r\n parsed.weakImports.forEach(function(name) {\r\n fetch(self.resolvePath(filename, name), true);\r\n });\r\n }\r\n } catch (err) {\r\n finish(err);\r\n return;\r\n }\r\n if (!queued)\r\n finish(null, self);\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.indexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n filename.forEach(function(filename) {\r\n fetch(self.resolvePath(\"\", filename));\r\n });\r\n\r\n if (!queued)\r\n finish(null);\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction handleExtension(field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.getFullName(), field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleAdd = function handleAdd(object) {\r\n // Try to handle any deferred extensions\r\n var newDeferred = this.deferred.slice();\r\n this.deferred = []; // because the loop calls handleAdd\r\n var i = 0;\r\n while (i < newDeferred.length)\r\n if (handleExtension(newDeferred[i]))\r\n newDeferred.splice(i, 1);\r\n else\r\n ++i;\r\n this.deferred = newDeferred;\r\n // Handle new declaring extension fields without a sister field yet\r\n if (object instanceof Field && object.extend !== undefined && !object.extensionField && !handleExtension(object) && this.deferred.indexOf(object) < 0)\r\n this.deferred.push(object);\r\n else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleAdd(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRootPrototype._handleRemove = function handleRemove(object) {\r\n if (object instanceof Field) {\r\n // If a deferred declaring extension field, cancel the extension\r\n if (object.extend !== undefined && !object.extensionField) {\r\n var index = this.deferred.indexOf(object);\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n // If a declaring extension field with a sister field, remove its sister field\r\n if (object.extensionField) {\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n }\r\n } else if (object instanceof Namespace) {\r\n var nested = object.getNestedArray();\r\n for (var i = 0; i < nested.length; ++i) // recurse into the namespace\r\n this._handleRemove(nested[i]);\r\n }\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRootPrototype.toString = function toString() {\r\n return this.constructor.name;\r\n};\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Service.prototype */\r\nvar ServicePrototype = Namespace.extend(Service);\r\n\r\nvar Method = require(9),\r\n util = require(21);\r\n\r\n/**\r\n * Constructs a new service.\r\n * @classdesc Reflected service.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {?Method[]}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\nObject.defineProperties(ServicePrototype, {\r\n\r\n /**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\n methodsArray: {\r\n get: ServicePrototype.getMethodsArray = function getMethodsArray() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a service.\r\n * @param {Object} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a service\r\n */\r\nService.testJSON = function testJSON(json) {\r\n return Boolean(json && json.methods);\r\n};\r\n\r\n/**\r\n * Constructs a service from JSON.\r\n * @param {string} name Service name\r\n * @param {Object} json JSON object\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n if (json.methods)\r\n Object.keys(json.methods).forEach(function(methodName) {\r\n service.add(Method.fromJSON(methodName, json.methods[methodName]));\r\n });\r\n return service;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n methods : Namespace.arrayToJSON(this.getMethodsArray()) || {},\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.methods[name] || null;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.resolveAll = function resolve() {\r\n var methods = this.getMethodsArray();\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nServicePrototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @function\r\n * @param {Method} method Reflected method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {function(?Error, Uint8Array=)} callback Node-style callback called with the error, if any, and the response data\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {function(Method, Uint8Array, function)} rpc RPC implementation ({@link RPCImpl|see})\r\n * @param {boolean} [requestDelimited=false] Whether request data is length delimited\r\n * @param {boolean} [responseDelimited=false] Whether response data is length delimited\r\n * @returns {Object} Runtime service\r\n */\r\nServicePrototype.create = function create(rpc, requestDelimited, responseDelimited) {\r\n var rpcService = {};\r\n Object.defineProperty(rpcService, \"$rpc\", {\r\n value: rpc\r\n });\r\n this.getMethodsArray().forEach(function(method) {\r\n rpcService[method.name] = function(request, callback) {\r\n method.resolve();\r\n var requestData;\r\n try {\r\n requestData = (requestDelimited && method.resolvedRequestType.encodeDelimited(request) || method.resolvedRequestType.encode(request)).finish();\r\n } catch (err) {\r\n (typeof setImmediate === 'function' && setImmediate || setTimeout)(function() { callback(err); });\r\n return;\r\n }\r\n // Calls the custom RPC implementation with the reflected method and binary request data\r\n // and expects the rpc implementation to call its callback with the binary response data.\r\n rpc(method, requestData, function(err, responseData) {\r\n if (err) {\r\n callback(err);\r\n return;\r\n }\r\n var response;\r\n try {\r\n response = responseDelimited && method.resolvedResponseType.decodeDelimited(responseData) || method.resolvedResponseType.decode(responseData);\r\n } catch (err2) {\r\n callback(err2);\r\n return;\r\n }\r\n callback(null, response);\r\n });\r\n };\r\n });\r\n return rpcService;\r\n};\r\n","\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\r\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @typedef {Object} TokenizerHandle\r\n * @property {function():number} line Gets the current line number\r\n * @property {function():?string} next Gets the next token and advances (`null` on eof)\r\n * @property {function():?string} peek Peeks for the next token (`null` on eof)\r\n * @property {function(string)} push Pushes a token back to the stack\r\n * @property {function(string, boolean=):boolean} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n */\r\n\r\nvar s_nl = \"\\n\",\r\n s_sl = '/',\r\n s_as = '*';\r\n\r\nfunction unescape(str) {\r\n return str.replace(/\\\\(.?)/g, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n case \"0\":\r\n return \"\\u0000\";\r\n default:\r\n return $1;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @returns {TokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source) {\r\n /* eslint-disable default-case, callback-return */\r\n source = source.toString();\r\n \r\n var offset = 0,\r\n length = source.length,\r\n line = 1;\r\n \r\n var stack = [];\r\n\r\n var stringDelim = null;\r\n\r\n /**\r\n * Creates an error for illegal syntax.\r\n * @param {string} subject Subject\r\n * @returns {Error} Error created\r\n * @inner\r\n */\r\n function illegal(subject) {\r\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n }\r\n\r\n /**\r\n * Reads a string till its end.\r\n * @returns {string} String read\r\n * @inner\r\n */\r\n function readString() {\r\n var re = stringDelim === '\"' ? stringDoubleRe : stringSingleRe;\r\n re.lastIndex = offset - 1;\r\n var match = re.exec(source);\r\n if (!match)\r\n throw illegal(\"string\");\r\n offset = re.lastIndex;\r\n push(stringDelim);\r\n stringDelim = null;\r\n return unescape(match[1]);\r\n }\r\n\r\n /**\r\n * Gets the character at `pos` within the source.\r\n * @param {number} pos Position\r\n * @returns {string} Character\r\n * @inner\r\n */\r\n function charAt(pos) {\r\n return source.charAt(pos);\r\n }\r\n\r\n /**\r\n * Obtains the next token.\r\n * @returns {?string} Next token or `null` on eof\r\n * @inner\r\n */\r\n function next() {\r\n if (stack.length > 0)\r\n return stack.shift();\r\n if (stringDelim)\r\n return readString();\r\n var repeat,\r\n prev,\r\n curr;\r\n do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (/\\s/.test(curr = charAt(offset))) {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n }\r\n if (charAt(offset) === s_sl) {\r\n if (++offset === length)\r\n throw illegal(\"comment\");\r\n if (charAt(offset) === s_sl) { // Line\r\n while (charAt(++offset) !== s_nl)\r\n if (offset === length)\r\n return null;\r\n ++offset;\r\n ++line;\r\n repeat = true;\r\n } else if ((curr = charAt(offset)) === s_as) { /* Block */\r\n do {\r\n if (curr === s_nl)\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== s_as || curr !== s_sl);\r\n ++offset;\r\n repeat = true;\r\n } else\r\n return s_sl;\r\n }\r\n } while (repeat);\r\n\r\n if (offset === length)\r\n return null;\r\n var end = offset;\r\n delimRe.lastIndex = 0;\r\n var delim = delimRe.test(charAt(end++));\r\n if (!delim)\r\n while (end < length && !delimRe.test(charAt(end)))\r\n ++end;\r\n var token = source.substring(offset, offset = end);\r\n if (token === '\"' || token === \"'\")\r\n stringDelim = token;\r\n return token;\r\n }\r\n\r\n /**\r\n * Pushes a token back to the stack.\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function push(token) {\r\n stack.push(token);\r\n }\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @returns {?string} Token or `null` on eof\r\n * @inner\r\n */\r\n function peek() {\r\n if (!stack.length) {\r\n var token = next();\r\n if (token === null)\r\n return null;\r\n push(token);\r\n }\r\n return stack[0];\r\n }\r\n\r\n /**\r\n * Skips a token.\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] Whether the token is optional\r\n * @returns {boolean} `true` when skipped, `false` if not\r\n * @throws {Error} When a required token is not present\r\n * @inner\r\n */\r\n function skip(expected, optional) {\r\n var actual = peek(),\r\n equals = actual === expected;\r\n if (equals) {\r\n next();\r\n return true;\r\n }\r\n if (!optional)\r\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n return false;\r\n }\r\n\r\n return {\r\n line: function() { return line; },\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip\r\n };\r\n /* eslint-enable default-case, callback-return */\r\n}","\"use strict\";\r\nmodule.exports = Type; \r\n\r\nvar Namespace = require(10);\r\n/** @alias Namespace.prototype */\r\nvar NamespacePrototype = Namespace.prototype;\r\n/** @alias Type.prototype */\r\nvar TypePrototype = Namespace.extend(Type);\r\n\r\nvar Enum = require(5),\r\n OneOf = require(12),\r\n Field = require(6),\r\n Service = require(17),\r\n Prototype = require(14),\r\n Reader = require(15),\r\n Writer = require(26),\r\n encoder = require(4),\r\n decoder = require(3),\r\n verifier = require(25),\r\n inherits = require(7),\r\n util = require(21);\r\n\r\nvar codegen = util.codegen;\r\n\r\n/**\r\n * Constructs a new message type.\r\n * @classdesc Reflected message type.\r\n * @extends Namespace\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {?Field[]}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {?OneOf[]}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {?Function}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(TypePrototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: TypePrototype.getFieldsById = function getFieldsById() {\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n this._fieldsById = {};\r\n var names = Object.keys(this.fields);\r\n for (var i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: TypePrototype.getFieldsArray = function getFieldsArray() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: TypePrototype.getOneofsArray = function getOneofsArray() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * @name Type#ctor\r\n * @type {Prototype}\r\n */\r\n ctor: {\r\n get: TypePrototype.getCtor = function getCtor() {\r\n if (this._ctor)\r\n return this._ctor;\r\n var ctor;\r\n if (codegen.supported)\r\n ctor = codegen(\"p\")(\"P.call(this,p)\").eof(this.getFullName() + \"$ctor\", {\r\n P: Prototype\r\n });\r\n else\r\n ctor = function GenericMessage(properties) {\r\n Prototype.call(this, properties);\r\n };\r\n ctor.prototype = inherits(ctor, this);\r\n this._ctor = ctor;\r\n return ctor;\r\n },\r\n set: TypePrototype.setCtor = function setCtor(ctor) {\r\n if (ctor && !(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n this._ctor = ctor;\r\n }\r\n }\r\n});\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = type._ctor = null;\r\n delete type.encode;\r\n delete type.decode;\r\n return type;\r\n}\r\n\r\n/**\r\n * Tests if the specified JSON object describes a message type.\r\n * @param {*} json JSON object to test\r\n * @returns {boolean} `true` if the object describes a message type\r\n */\r\nType.testJSON = function testJSON(json) {\r\n return Boolean(json && json.fields);\r\n};\r\n\r\nvar nestedTypes = [ Enum, Type, Field, Service ];\r\n\r\n/**\r\n * Creates a type from JSON.\r\n * @param {string} name Message name\r\n * @param {Object} json JSON object\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n if (json.fields)\r\n Object.keys(json.fields).forEach(function(fieldName) {\r\n type.add(Field.fromJSON(fieldName, json.fields[fieldName]));\r\n });\r\n if (json.oneofs)\r\n Object.keys(json.oneofs).forEach(function(oneOfName) {\r\n type.add(OneOf.fromJSON(oneOfName, json.oneofs[oneOfName]));\r\n });\r\n if (json.nested)\r\n Object.keys(json.nested).forEach(function(nestedName) {\r\n var nested = json.nested[nestedName];\r\n for (var i = 0; i < nestedTypes.length; ++i) {\r\n if (nestedTypes[i].testJSON(nested)) {\r\n type.add(nestedTypes[i].fromJSON(nestedName, nested));\r\n return;\r\n }\r\n }\r\n throw Error(\"invalid nested object in \" + type + \": \" + nestedName);\r\n });\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n return type;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.toJSON = function toJSON() {\r\n var inherited = NamespacePrototype.toJSON.call(this);\r\n return {\r\n options : inherited && inherited.options || undefined,\r\n oneofs : Namespace.arrayToJSON(this.getOneofsArray()),\r\n fields : Namespace.arrayToJSON(this.getFieldsArray().filter(function(obj) { return !obj.declaringField; })) || {},\r\n extensions : this.extensions && this.extensions.length ? this.extensions : undefined,\r\n reserved : this.reserved && this.reserved.length ? this.reserved : undefined,\r\n nested : inherited && inherited.nested || undefined\r\n };\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.resolveAll = function resolve() {\r\n var fields = this.getFieldsArray(), i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.getOneofsArray(); i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return NamespacePrototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nTypePrototype.get = function get(name) {\r\n return NamespacePrototype.get.call(this, name) || this.fields && this.fields[name] || this.oneofs && this.oneofs[name] || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nTypePrototype.add = function add(object) {\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + '\" in ' + this);\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n if (this.getFieldsById()[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nTypePrototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n if (this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n delete this.fields[object.name];\r\n object.message = null;\r\n return clearCache(this);\r\n }\r\n return NamespacePrototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object} [properties] Properties to set\r\n * @param {?Function} [ctor] Constructor to use.\r\n * Defaults to use the internal constuctor.\r\n * @returns {Prototype} Message instance\r\n */\r\nTypePrototype.create = function create(properties, ctor) {\r\n if (typeof properties === 'function') {\r\n ctor = properties;\r\n properties = undefined;\r\n } else if (properties /* already */ instanceof Prototype)\r\n return properties;\r\n if (ctor) {\r\n if (!(ctor.prototype instanceof Prototype))\r\n throw util._TypeError(\"ctor\", \"a constructor inheriting from Prototype\");\r\n } else\r\n ctor = this.getCtor();\r\n return new ctor(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encode = function encode(message, writer) {\r\n return (this.encode = codegen.supported\r\n ? encoder.generate(this).eof(this.getFullName() + \"$encode\", {\r\n Writer : Writer,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : encoder.fallback\r\n ).call(this, message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Prototype|Object} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nTypePrototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decode = function decode(readerOrBuffer, length) {\r\n return (this.decode = codegen.supported\r\n ? decoder.generate(this).eof(this.getFullName() + \"$decode\", {\r\n Reader : Reader,\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; }),\r\n util : util\r\n })\r\n : decoder.fallback\r\n ).call(this, readerOrBuffer, length);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} readerOrBuffer Reader or buffer to decode from\r\n * @returns {Prototype} Decoded message\r\n */\r\nTypePrototype.decodeDelimited = function decodeDelimited(readerOrBuffer) {\r\n readerOrBuffer = readerOrBuffer instanceof Reader ? readerOrBuffer : Reader(readerOrBuffer);\r\n return this.decode(readerOrBuffer, readerOrBuffer.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that enum values are valid and that any required fields are present.\r\n * @param {Prototype|Object} message Message to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n */\r\nTypePrototype.verify = function verify(message) {\r\n return (this.verify = codegen.supported\r\n ? verifier.generate(this).eof(this.getFullName() + \"$verify\", {\r\n types : this.getFieldsArray().map(function(fld) { return fld.resolvedType; })\r\n })\r\n : verifier.fallback\r\n ).call(this, message);\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\nvar emptyArray = [];\r\nif (Object.freeze)\r\n Object.freeze(emptyArray);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ emptyArray\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n","\"use strict\";\r\n\r\n/**\r\n * Utility functions.\r\n * @namespace\r\n */\r\nvar util = exports;\r\n\r\nutil.codegen = require(22);\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @memberof util\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nfunction isString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\n\r\nutil.isString = isString;\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return Boolean(value && typeof value === 'object');\r\n};\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || function isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (!object)\r\n return [];\r\n var names = Object.keys(object),\r\n length = names.length;\r\n var array = new Array(length);\r\n for (var i = 0; i < length; ++i)\r\n array[i] = object[names[i]];\r\n return array;\r\n};\r\n\r\n/**\r\n * Creates a type error.\r\n * @param {string} name Argument name\r\n * @param {string} [description=a string] Expected argument descripotion\r\n * @returns {TypeError} Created type error\r\n * @private\r\n */\r\nutil._TypeError = function(name, description) {\r\n return TypeError(name + \" must be \" + (description || \"a string\"));\r\n};\r\n\r\n/**\r\n * Returns a promise from a node-style function.\r\n * @memberof util\r\n * @param {function(Error, ...*)} fn Function to call\r\n * @param {Object} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var args = [];\r\n for (var i = 2; i < arguments.length; ++i)\r\n args.push(arguments[i]);\r\n return new Promise(function(resolve, reject) {\r\n fn.apply(ctx, args.concat(\r\n function(err/*, varargs */) {\r\n if (err) reject(err);\r\n else resolve.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n ));\r\n });\r\n}\r\n\r\nutil.asPromise = asPromise;\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} path File path or url\r\n * @param {function(?Error, string=)} [callback] Node-style callback\r\n * @returns {Promise|undefined} Promise if callback has been omitted \r\n */\r\nfunction fetch(path, callback) {\r\n if (!callback)\r\n return asPromise(fetch, util, path);\r\n var fs; try { fs = require(\"fs\"); } catch (e) {} // eslint-disable-line no-empty\r\n if (fs && fs.readFile)\r\n return fs.readFile(path, \"utf8\", callback);\r\n var xhr = new XMLHttpRequest();\r\n function onload() {\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n if (isString(xhr.responseText))\r\n return callback(null, xhr.responseText);\r\n return callback(Error(\"request failed\"));\r\n }\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState === 4)\r\n onload();\r\n };\r\n xhr.open(\"GET\", path, true);\r\n xhr.send();\r\n return undefined;\r\n}\r\n\r\nutil.fetch = fetch;\r\n\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @memberof util\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\nfunction isAbsolutePath(path) {\r\n return /^(?:\\/|[a-zA-Z0-9]+:)/.test(path);\r\n}\r\n\r\nutil.isAbsolutePath = isAbsolutePath;\r\n\r\n/**\r\n * Normalizes the specified path.\r\n * @memberof util\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\nfunction normalizePath(path) {\r\n path = path.replace(/\\\\/g, '/')\r\n .replace(/\\/{2,}/g, '/');\r\n var parts = path.split('/');\r\n var abs = isAbsolutePath(path);\r\n var prefix = \"\";\r\n if (abs)\r\n prefix = parts.shift() + '/';\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === '..') {\r\n if (i > 0)\r\n parts.splice(--i, 2);\r\n else if (abs)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === '.')\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join('/');\r\n}\r\n\r\nutil.normalizePath = normalizePath;\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path that was used to fetch the origin file\r\n * @param {string} importPath Import path specified in the origin file\r\n * @param {boolean} [alreadyNormalized] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the imported file\r\n */\r\nutil.resolvePath = function resolvePath(originPath, importPath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n importPath = normalizePath(importPath);\r\n if (isAbsolutePath(importPath))\r\n return importPath;\r\n if (!alreadyNormalized)\r\n originPath = normalizePath(originPath);\r\n originPath = originPath.replace(/(?:\\/|^)[^/]+$/, '');\r\n return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath;\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @param {Object} dst Destination object\r\n * @param {Object} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object} Destination object\r\n */\r\nutil.merge = function merge(dst, src, ifNotSet) {\r\n if (src) {\r\n var keys = Object.keys(src);\r\n for (var i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n }\r\n return dst;\r\n};\r\n\r\n// Reserved words, ref: https://msdn.microsoft.com/en-us/library/ttyab5c8.aspx\r\n// var reserved = \"break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,protected,return,super,switch,this,throw,true,try,typeof,var,while,with,abstract,boolean,byte,char,decimal,double,enum,final,float,get,implements,int,interface,internal,long,package,private,protected,public,sbyte,set,short,static,uint,ulong,ushort,void,assert,ensure,event,goto,invariant,namespace,native,require,synchronized,throws,transient,use,volatile\".split(',');\r\n\r\n/**\r\n * Returns a safe property accessor for the specified properly name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n // NOTE: While dot notation looks cleaner it doesn't seem to have a significant impact on performance.\r\n // Hence, we can safe the extra bytes from providing the reserved keywords above for pre-ES5 envs.\r\n return /* /^[a-z_$][a-z0-9_$]*$/i.test(prop) && !reserved.indexOf(prop) ? \".\" + prop : */ \"['\" + prop.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"\\\\'\") + \"']\";\r\n};\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number} [size=0] Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(size) {\r\n return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0);\r\n};\r\n\r\n// Merge in runtime utility\r\nutil.merge(util, require(24));\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\nvar blockOpenRe = /[{[]$/,\r\n blockCloseRe = /^[}\\]]/,\r\n casingRe = /:$/,\r\n branchRe = /^\\s*(?:if|else if|while|for)\\b|\\b(?:else)\\s*$/,\r\n breakRe = /\\b(?:break|continue);?$|^\\s*return\\b/;\r\n\r\n/**\r\n * Programmatically generates a function.\r\n * @memberof util\r\n * @param {...string} params Function parameter names\r\n * @returns {util.CodegenAppender} Printf-like appender function\r\n * @property {boolean} supported Whether code generation is supported by the environment.\r\n * @property {boolean} verbose=false When set to true, codegen will log generated code to console. Useful for debugging.\r\n */\r\nfunction codegen(/* varargs */) {\r\n var args = Array.prototype.slice.call(arguments),\r\n src = ['\\t\"use strict\"'];\r\n\r\n var indent = 1,\r\n inCase = false;\r\n\r\n /**\r\n * Appends a printf-like formatted line to the generated source. Returned when calling {@link util.codegen}.\r\n * @typedef CodegenAppender\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} format A printf-like format string\r\n * @param {...*} params Format replacements\r\n * @returns {util.CodegenAppender} Itself\r\n * @property {util.CodegenStringer} str\r\n * @property {util.CodegenEnder} eof\r\n * @see {@link https://nodejs.org/docs/latest/api/util.html#util_util_format_format_args}\r\n */\r\n /**/\r\n function gen() {\r\n var fmt = [];\r\n for (var i = 0; i < arguments.length; ++i)\r\n fmt[i] = arguments[i];\r\n var line = gen.fmt.apply(null, fmt);\r\n var level = indent;\r\n if (src.length) {\r\n var prev = src[src.length - 1];\r\n\r\n // block open or one time branch\r\n if (blockOpenRe.test(prev))\r\n level = ++indent; // keep\r\n else if (branchRe.test(prev))\r\n ++level; // once\r\n \r\n // casing\r\n if (casingRe.test(prev) && !casingRe.test(line)) {\r\n level = ++indent;\r\n inCase = true;\r\n } else if (inCase && breakRe.test(prev)) {\r\n level = --indent;\r\n inCase = false;\r\n }\r\n\r\n // block close\r\n if (blockCloseRe.test(line))\r\n level = --indent;\r\n }\r\n for (var index = 0; index < level; ++index)\r\n line = \"\\t\" + line;\r\n src.push(line);\r\n return gen;\r\n }\r\n\r\n gen.fmt = function fmt(format) {\r\n var params = Array.prototype.slice.call(arguments, 1),\r\n index = 0;\r\n return format.replace(/%([djs])/g, function($0, $1) {\r\n var param = params[index++];\r\n return $1 === \"j\"\r\n ? JSON.stringify(param)\r\n : String(param);\r\n });\r\n };\r\n\r\n /**\r\n * Stringifies the so far generated function source.\r\n * @typedef CodegenStringer\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @returns {string} Function source using tabs for indentation\r\n */\r\n /**/\r\n gen.str = function str(name) {\r\n return \"function \" + (name ? name.replace(/[^\\w_$]/g, \"_\") : \"\") + \"(\" + args.join(\",\") + \") {\\n\" + src.join(\"\\n\") + \"\\n}\";\r\n };\r\n\r\n /**\r\n * Ends generation and builds the function.\r\n * @typedef CodegenEnder\r\n * @memberof util\r\n * @type {function}\r\n * @param {string} [name] Function name, defaults to generate an anonymous function\r\n * @param {Object|Array.} [scope] Function scope\r\n * @returns {function} A function to apply the scope manually when `scope` is an array, otherwise the generated function with scope applied\r\n */\r\n /**/\r\n gen.eof = function eof(name, scope) {\r\n if (name && typeof name === 'object') {\r\n scope = name;\r\n name = undefined;\r\n }\r\n var code = gen.str(name);\r\n if (codegen.verbose)\r\n console.log(\"--- codegen ---\\n\" + code.replace(/^/mg, \"> \").replace(/\\t/g, \" \")); // eslint-disable-line no-console\r\n code = \"return \" + code;\r\n var params, values = [];\r\n if (Array.isArray(scope)) {\r\n params = scope.slice();\r\n } else if (scope) {\r\n params = Object.keys(scope);\r\n values = params.map(function(key) { return scope[key]; });\r\n } else\r\n params = [];\r\n var fn = Function.apply(null, params.concat(code)); // eslint-disable-line no-new-func\r\n return values ? fn.apply(null, values) : fn();\r\n };\r\n\r\n return gen;\r\n}\r\n\r\ncodegen.supported = false;\r\ntry { codegen.supported = codegen(\"a\",\"b\")(\"return a-b\").eof()(2,1) === 1; } catch (e) {} // eslint-disable-line no-empty\r\n\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(21);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low bits\r\n * @param {number} hi High bits\r\n */\r\nfunction LongBits(lo, hi) { // make sure to always call this with unsigned 32bits for proper optimization\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi;\r\n}\r\n\r\n/** @alias util.LongBits.prototype */\r\nvar LongBitsPrototype = LongBits.prototype;\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n value = Math.abs(value);\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nLongBits.from = function from(value) {\r\n switch (typeof value) { // eslint-disable-line default-case\r\n case 'number':\r\n return LongBits.fromNumber(value);\r\n case 'string':\r\n value = util.Long.fromString(value); // throws without a long lib\r\n }\r\n return (value.low || value.high) && new LongBits(value.low >>> 0, value.high >>> 0) || zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBitsPrototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n this.lo = ~this.lo + 1 >>> 0;\r\n this.hi = ~this.hi >>> 0;\r\n if (!this.lo)\r\n this.hi = this.hi + 1 >>> 0;\r\n return -(this.lo + this.hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBitsPrototype.toLong = function toLong(unsigned) {\r\n return new util.Long(this.lo, this.hi, unsigned);\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBitsPrototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 & 255,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24 & 255\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBitsPrototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBitsPrototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n if (part2 === 0) {\r\n if (part1 === 0)\r\n return part0 < 1 << 14\r\n ? part0 < 1 << 7 ? 1 : 2\r\n : part0 < 1 << 21 ? 3 : 4;\r\n return part1 < 1 << 14\r\n ? part1 < 1 << 7 ? 5 : 6\r\n : part1 < 1 << 21 ? 7 : 8;\r\n }\r\n return part2 < 1 << 7 ? 9 : 10;\r\n};\r\n","\"use strict\";\r\n\r\nvar util = exports;\r\n\r\nvar LongBits = util.LongBits = require(\"./longbits\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nvar isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Optional buffer class to use.\r\n * If you assign any compatible buffer implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Buffer = null;\r\n\r\nif (isNode)\r\n try { util.Buffer = require(\"buffer\").Buffer; } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Optional Long class to use.\r\n * If you assign any compatible long implementation to this property, the library will use it.\r\n * @type {?Function}\r\n */\r\nutil.Long = global.dcodeIO && global.dcodeIO.Long || null;\r\n\r\nif (!util.Long && isNode)\r\n try { util.Long = require(\"long\"); } catch (e) {} // eslint-disable-line no-empty\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? LongBits.from(value).toHash()\r\n : '\\0\\0\\0\\0\\0\\0\\0\\0';\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Tests if two possibly long values are not equal.\r\n * @param {number|Long} a First value\r\n * @param {number|Long} b Second value\r\n * @returns {boolean} `true` if not equal\r\n */\r\nutil.longNeq = function longNeq(a, b) {\r\n return typeof a === 'number'\r\n ? typeof b === 'number'\r\n ? a !== b\r\n : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high\r\n : typeof b === 'number'\r\n ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high\r\n : a.low !== b.low || a.high !== b.high;\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Runtime message verifier using code generation on top of reflection.\r\n * @namespace\r\n */\r\nvar verifier = exports;\r\n\r\nvar Enum = require(5),\r\n Type = require(19),\r\n util = require(21);\r\n\r\n/**\r\n * Verifies a runtime message of `this` message type.\r\n * @param {Prototype|Object} message Runtime message or plain object to verify\r\n * @returns {?string} `null` if valid, otherwise the reason why it is not\r\n * @this {Type}\r\n */\r\nverifier.fallback = function fallback(message) {\r\n var fields = this.getFieldsArray(),\r\n i = 0;\r\n while (i < fields.length) {\r\n var field = fields[i++].resolve(),\r\n value = message[field.name];\r\n\r\n if (value === undefined) {\r\n if (field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Enum && field.resolvedType.getValuesById()[value] === undefined) {\r\n return \"invalid enum value \" + field.name + \" = \" + value + \" in \" + this.getFullName();\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (!value && field.required)\r\n return \"missing required field \" + field.name + \" in \" + this.getFullName();\r\n var reason;\r\n if ((reason = field.resolvedType.verify(value)) !== null)\r\n return reason;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {util.CodegenAppender} Unscoped codegen instance\r\n */\r\nverifier.generate = function generate(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var fields = mtype.getFieldsArray();\r\n var gen = util.codegen(\"m\");\r\n var hasReasonVar = false;\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n if (field.required) { gen\r\n\r\n (\"if(m%s===undefined)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, mtype.getFullName());\r\n\r\n } else if (field.resolvedType instanceof Enum) {\r\n var values = util.toArray(field.resolvedType.values); gen\r\n\r\n (\"switch(m%s){\", prop)\r\n (\"default:\")\r\n (\"return 'invalid enum value %s = '+m%s+' in %s'\", field.name, prop, mtype.getFullName());\r\n\r\n for (var j = 0, l = values.length; j < l; ++j) gen\r\n (\"case %d:\", values[j]); gen\r\n (\"}\");\r\n\r\n } else if (field.resolvedType instanceof Type) {\r\n if (field.required) gen\r\n\r\n (\"if(!m%s)\", prop)\r\n (\"return 'missing required field %s in %s'\", field.name, mtype.getFullName());\r\n\r\n if (!hasReasonVar) { gen(\"var r\"); hasReasonVar = true; } gen\r\n\r\n (\"if((r=types[%d].verify(m%s))!==null)\", i, prop)\r\n (\"return r\");\r\n }\r\n }\r\n return gen\r\n (\"return null\");\r\n /* eslint-enable no-unexpected-multiline */\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nWriter.BufferWriter = BufferWriter;\r\n\r\nvar util = require(24),\r\n ieee754 = require(1);\r\nvar LongBits = util.LongBits;\r\n\r\n/**\r\n * Constructs a new writer operation.\r\n * @classdesc Scheduled writer operation.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {*} val Value to write\r\n * @param {number} len Value byte length\r\n * @private\r\n * @ignore\r\n */\r\nfunction Op(fn, val, len) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {?Writer.Op}\r\n */\r\n this.next = null;\r\n}\r\n\r\nWriter.Op = Op;\r\n\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @private\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n}\r\n\r\nWriter.State = State;\r\n\r\nvar ArrayImpl = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\r\n\r\n/**\r\n * Constructs a new writer.\r\n * When called as a function, returns an appropriate writer for the current environment.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @exports Writer\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n if (!(this instanceof Writer))\r\n return util.Buffer && new BufferWriter() || new Writer();\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * State stack.\r\n * @type {Object[]}\r\n */\r\n this.stack = [];\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling linked operations with already prepared values.\r\n}\r\n\r\n/** @alias Writer.prototype */\r\nvar WriterPrototype = Writer.prototype;\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.push = function push(fn, len, val) {\r\n var op = new Op(fn, val, len);\r\n this.tail.next = op;\r\n this.tail = op;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(buf, pos, val) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\n/**\r\n * Writes a tag.\r\n * @param {number} id Field id\r\n * @param {number} wireType Wire type\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.tag = function write_tag(id, wireType) {\r\n return this.push(writeByte, 1, id << 3 | wireType & 7);\r\n};\r\n\r\nfunction writeVarint32(buf, pos, val) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.uint32 = function write_uint32(value) {\r\n value >>>= 0;\r\n return this.push(writeVarint32,\r\n value < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5\r\n , value);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this.push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sint32 = function write_sint32(value) {\r\n return this.uint32(value << 1 ^ value >> 31);\r\n};\r\n\r\nfunction writeVarint64(buf, pos, val) {\r\n // tends to deoptimize. stays optimized when using bits directly.\r\n while (val.hi || val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.int64 = WriterPrototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sint64 = function sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bool = function write_bool(value) {\r\n return this.push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(buf, pos, val) {\r\n buf[pos++] = val & 255;\r\n buf[pos++] = val >>> 8 & 255;\r\n buf[pos++] = val >>> 16 & 255;\r\n buf[pos ] = val >>> 24 & 255;\r\n}\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fixed32 = function write_fixed32(value) {\r\n return this.push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as fixed 32 bits, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.sfixed32 = function write_sfixed32(value) {\r\n return this.push(writeFixed32, 4, value << 1 ^ value >> 31);\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\n/**\r\n * Writes a 64 bit value as fixed 64 bits, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriterPrototype.sfixed64 = function write_sfixed64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);\r\n};\r\n\r\nfunction writeFloat(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 23, 4);\r\n}\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.float = function write_float(value) {\r\n return this.push(writeFloat, 4, value);\r\n};\r\n\r\nfunction writeDouble(buf, pos, val) {\r\n ieee754.write(buf, val, pos, false, 52, 8);\r\n}\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.double = function write_double(value) {\r\n return this.push(writeDouble, 8, value);\r\n};\r\n\r\nvar writeBytes = ArrayImpl.prototype.set\r\n ? function writeBytes_set(buf, pos, val) { buf.set(val, pos); }\r\n : function writeBytes_for(buf, pos, val) { for (var i = 0; i < val.length; ++i) buf[pos + i] = val[i]; };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytes, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeString(buf, pos, val) {\r\n for (var i = 0; i < val.length; ++i) {\r\n var c1 = val.charCodeAt(i), c2;\r\n if (c1 < 128) {\r\n buf[pos++] = c1;\r\n } else if (c1 < 2048) {\r\n buf[pos++] = c1 >> 6 | 192;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < val.length && ((c2 = val.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buf[pos++] = c1 >> 18 | 240;\r\n buf[pos++] = c1 >> 12 & 63 | 128;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n } else {\r\n buf[pos++] = c1 >> 12 | 224;\r\n buf[pos++] = c1 >> 6 & 63 | 128;\r\n buf[pos++] = c1 & 63 | 128;\r\n }\r\n }\r\n}\r\n\r\nfunction byteLength(val) {\r\n var strlen = val.length >>> 0;\r\n if (strlen) {\r\n var len = 0;\r\n for (var i = 0, c1; i < strlen; ++i) {\r\n c1 = val.charCodeAt(i);\r\n if (c1 < 128)\r\n len += 1;\r\n else if (c1 < 2048)\r\n len += 2;\r\n else if ((c1 & 0xFC00) === 0xD800 && i + 1 < strlen && (val.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.string = function write_string(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeString, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#ldelim}, {@link Writer#reset} or {@link Writer#finish} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.fork = function fork() {\r\n this.stack.push(new State(this));\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.reset = function reset() {\r\n if (this.stack.length) {\r\n var state = this.stack.pop();\r\n this.head = state.head;\r\n this.tail = state.tail;\r\n this.len = state.len;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @param {number} [id] Id with wire type 2 to prepend where applicable\r\n * @returns {Writer} `this`\r\n */\r\nWriterPrototype.ldelim = function ldelim(id) {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset();\r\n if (id !== undefined)\r\n this.tag(id, 2);\r\n this.uint32(len);\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the current sequence of write operations and frees all resources.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriterPrototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = new ArrayImpl(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n\r\n/**\r\n * Constructs a new buffer writer.\r\n * @classdesc Wire format writer using node buffers.\r\n * @exports BufferWriter\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/** @alias BufferWriter.prototype */\r\nvar BufferWriterPrototype = BufferWriter.prototype = Object.create(Writer.prototype);\r\nBufferWriterPrototype.constructor = BufferWriter;\r\n\r\nfunction writeFloatBuffer(buf, pos, val) {\r\n buf.writeFloatLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.float = function write_float_buffer(value) {\r\n return this.push(writeFloatBuffer, 4, value);\r\n};\r\n\r\nfunction writeDoubleBuffer(buf, pos, val) {\r\n buf.writeDoubleLE(val, pos, true);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.double = function write_double_buffer(value) {\r\n return this.push(writeDoubleBuffer, 8, value);\r\n};\r\n\r\nfunction writeBytesBuffer(buf, pos, val) {\r\n if (val.length)\r\n val.copy(buf, pos, 0, val.length);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.bytes = function write_bytes_buffer(value) {\r\n var len = value.length >>> 0;\r\n return len\r\n ? this.uint32(len).push(writeBytesBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\nfunction writeStringBuffer(buf, pos, val) {\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.string = function write_string_buffer(value) {\r\n var len = byteLength(value);\r\n return len\r\n ? this.uint32(len).push(writeStringBuffer, len, value)\r\n : this.push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriterPrototype.finish = function finish_buffer() {\r\n var head = this.head.next, // skip noop\r\n buf = util.Buffer.allocUnsafe && util.Buffer.allocUnsafe(this.len) || new util.Buffer(this.len),\r\n pos = 0;\r\n this.reset();\r\n while (head) {\r\n head.fn(buf, pos, head.val);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n return buf;\r\n};\r\n","\"use strict\";\r\nvar protobuf = global.protobuf = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @param {function(?Error, Root=)} [callback] Callback function\r\n * @returns {Promise|Object} A promise if callback has been omitted, otherwise the protobuf namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === 'function') {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback) || protobuf;\r\n}\r\n\r\nprotobuf.load = load;\r\n\r\n// Parser\r\nprotobuf.tokenize = require(\"./tokenize\");\r\nprotobuf.parse = require(\"./parse\");\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = protobuf.Writer.BufferWriter;\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = protobuf.Reader.BufferReader;\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Prototype = require(\"./prototype\");\r\nprotobuf.inherits = require(\"./inherits\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.common = require(\"./common\");\r\nprotobuf.util = util;\r\n"],"sourceRoot":"."} \ No newline at end of file diff --git a/runtime.js b/runtime.js index d691ff83b..195ea9bce 100644 --- a/runtime.js +++ b/runtime.js @@ -1,7 +1,7 @@ "use strict"; /** - * Minimal static code generator runtime. + * Minimal static codegen runtime. * @namespace */ var runtime = exports; @@ -20,34 +20,7 @@ runtime.Writer = require("./src/writer"); * Runtime utility. * @memberof runtime */ -var util = runtime.util = {}; - -/** - * Converts a number or long to an 8 characters long hash string. - * @param {Long|number} value Value to convert - * @returns {string} Hash - */ -util.longToHash = function longToHash(value) { - return value - ? LongBits.from(value).toHash() - : '\0\0\0\0\0\0\0\0'; -}; - -/** - * Tests if two possibly long values are not equal. - * @param {number|Long} a First value - * @param {number|Long} b Second value - * @returns {boolean} `true` if not equal - */ -util.longNeq = function longNeq(a, b) { - return typeof a === 'number' - ? typeof b === 'number' - ? a !== b - : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high - : typeof b === 'number' - ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high - : a.low !== b.low || a.high !== b.high; -}; +runtime.util = require("./src/util/runtime"); /** * Resolves lazy type references. diff --git a/src/reader.js b/src/reader.js index 551eddebf..e501227aa 100644 --- a/src/reader.js +++ b/src/reader.js @@ -3,7 +3,7 @@ module.exports = Reader; Reader.BufferReader = BufferReader; -var util = require("./util"), +var util = require("./util/runtime"), ieee754 = require("../lib/ieee754"); var LongBits = util.LongBits, Long = util.Long; diff --git a/src/types.js b/src/types.js index eafc6348b..1b6b04a32 100644 --- a/src/types.js +++ b/src/types.js @@ -115,6 +115,8 @@ types.mapKey = bake([ * @type {Object.} */ types.packed = bake([ + /* double */ 1, + /* float */ 5, /* int32 */ 0, /* uint32 */ 0, /* sint32 */ 0, @@ -126,4 +128,4 @@ types.packed = bake([ /* fixed64 */ 1, /* sfixed64 */ 1, /* bool */ 0 -], 2); +]); diff --git a/src/util.js b/src/util.js index 97b27f8cb..a6401d31a 100644 --- a/src/util.js +++ b/src/util.js @@ -6,37 +6,8 @@ */ var util = exports; -var LongBits = -util.LongBits = require("./util/longbits"); util.codegen = require("./util/codegen"); -/** - * Whether running within node or not. - * @memberof util - * @type {boolean} - */ -var isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node); - -/** - * Optional buffer class to use. - * If you assign any compatible buffer implementation to this property, the library will use it. - * @type {?Function} - */ -util.Buffer = null; - -if (isNode) - try { util.Buffer = require("buffer").Buffer; } catch (e) {} // eslint-disable-line no-empty - -/** - * Optional Long class to use. - * If you assign any compatible long implementation to this property, the library will use it. - * @type {?Function} - */ -util.Long = global.dcodeIO && global.dcodeIO.Long || null; - -if (!util.Long) - try { util.Long = require("long"); } catch (e) {} // eslint-disable-line no-empty - /** * Tests if the specified value is a string. * @memberof util @@ -213,46 +184,6 @@ util.resolvePath = function resolvePath(originPath, importPath, alreadyNormalize return originPath.length ? normalizePath(originPath + '/' + importPath) : importPath; }; -/** - * Converts a number or long to an 8 characters long hash string. - * @param {Long|number} value Value to convert - * @returns {string} Hash - */ -util.longToHash = function longToHash(value) { - return value - ? LongBits.from(value).toHash() - : '\0\0\0\0\0\0\0\0'; -}; - -/** - * Converts an 8 characters long hash string to a long or number. - * @param {string} hash Hash - * @param {boolean} [unsigned=false] Whether unsigned or not - * @returns {Long|number} Original value - */ -util.longFromHash = function longFromHash(hash, unsigned) { - var bits = LongBits.fromHash(hash); - if (util.Long) - return util.Long.fromBits(bits.lo, bits.hi, unsigned); - return bits.toNumber(Boolean(unsigned)); -}; - -/** - * Tests if two possibly long values are not equal. - * @param {number|Long} a First value - * @param {number|Long} b Second value - * @returns {boolean} `true` if not equal - */ -util.longNeq = function longNeq(a, b) { - return typeof a === 'number' - ? typeof b === 'number' - ? a !== b - : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high - : typeof b === 'number' - ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high - : a.low !== b.low || a.high !== b.high; -}; - /** * Merges the properties of the source object into the destination object. * @param {Object} dst Destination object @@ -292,3 +223,6 @@ util.safeProp = function safeProp(prop) { util.newBuffer = function newBuffer(size) { return new (util.Buffer || typeof Uint8Array !== 'undefined' && Uint8Array || Array)(size || 0); }; + +// Merge in runtime utility +util.merge(util, require("./util/runtime")); diff --git a/src/util/runtime.js b/src/util/runtime.js new file mode 100644 index 000000000..04521e7e3 --- /dev/null +++ b/src/util/runtime.js @@ -0,0 +1,72 @@ +"use strict"; + +var util = exports; + +var LongBits = util.LongBits = require("./longbits"); + +/** + * Whether running within node or not. + * @memberof util + * @type {boolean} + */ +var isNode = util.isNode = Boolean(global.process && global.process.versions && global.process.versions.node); + +/** + * Optional buffer class to use. + * If you assign any compatible buffer implementation to this property, the library will use it. + * @type {?Function} + */ +util.Buffer = null; + +if (isNode) + try { util.Buffer = require("buffer").Buffer; } catch (e) {} // eslint-disable-line no-empty + +/** + * Optional Long class to use. + * If you assign any compatible long implementation to this property, the library will use it. + * @type {?Function} + */ +util.Long = global.dcodeIO && global.dcodeIO.Long || null; + +if (!util.Long && isNode) + try { util.Long = require("long"); } catch (e) {} // eslint-disable-line no-empty + +/** + * Converts a number or long to an 8 characters long hash string. + * @param {Long|number} value Value to convert + * @returns {string} Hash + */ +util.longToHash = function longToHash(value) { + return value + ? LongBits.from(value).toHash() + : '\0\0\0\0\0\0\0\0'; +}; + +/** + * Converts an 8 characters long hash string to a long or number. + * @param {string} hash Hash + * @param {boolean} [unsigned=false] Whether unsigned or not + * @returns {Long|number} Original value + */ +util.longFromHash = function longFromHash(hash, unsigned) { + var bits = LongBits.fromHash(hash); + if (util.Long) + return util.Long.fromBits(bits.lo, bits.hi, unsigned); + return bits.toNumber(Boolean(unsigned)); +}; + +/** + * Tests if two possibly long values are not equal. + * @param {number|Long} a First value + * @param {number|Long} b Second value + * @returns {boolean} `true` if not equal + */ +util.longNeq = function longNeq(a, b) { + return typeof a === 'number' + ? typeof b === 'number' + ? a !== b + : (a = LongBits.fromNumber(a)).lo !== b.low || a.hi !== b.high + : typeof b === 'number' + ? (b = LongBits.fromNumber(b)).lo !== a.low || b.hi !== a.high + : a.low !== b.low || a.high !== b.high; +}; diff --git a/src/writer.js b/src/writer.js index da09ca3aa..27a47f1ad 100644 --- a/src/writer.js +++ b/src/writer.js @@ -3,7 +3,7 @@ module.exports = Writer; Writer.BufferWriter = BufferWriter; -var util = require("./util"), +var util = require("./util/runtime"), ieee754 = require("../lib/ieee754"); var LongBits = util.LongBits;