UNPKG

@c4tplatform/caminojs

Version:
113 lines 13.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.EssentialProposal = exports.VoteOption = void 0; const buffer_1 = require("buffer/"); const bintools_1 = __importDefault(require("../../../utils/bintools")); const serialization_1 = require("../../../utils/serialization"); const common_1 = require("../../../common"); /** * @ignore */ const bintools = bintools_1.default.getInstance(); const serialization = serialization_1.Serialization.getInstance(); class VoteOption extends common_1.NBytes { clone() { let newbase = new VoteOption(); newbase.fromBuffer(this.toBuffer()); return newbase; } create() { return new VoteOption(); } /** * VoteOption for a [[Tx]] */ constructor() { super(); this._typeName = "VoteOption"; this._typeID = undefined; //serialize and deserialize both are inherited this.bytes = buffer_1.Buffer.alloc(8); this.bsize = 8; } } exports.VoteOption = VoteOption; class EssentialProposal { constructor(start, end) { this.start = buffer_1.Buffer.alloc(8); this.end = buffer_1.Buffer.alloc(8); this.numOptions = buffer_1.Buffer.alloc(4); this.start = start; this.end = end; this.options = []; } getStart() { return this.start; } getEnd() { return this.end; } getOptions() { return this.options; } /** * Adds a option to the proposal and returns the index off the added option. */ addOption(option) { this.options.push(option); if (this.options) { this.numOptions.writeUInt32BE(this.options.length, 0); } return this.options.length - 1; } serialize(encoding = "hex") { let fields = { start: serialization.encoder(this.start, encoding, "Buffer", "number"), end: serialization.encoder(this.end, encoding, "Buffer", "number"), options: this.options.map((opt) => opt.serialize(encoding)) }; return fields; } deserialize(fields, encoding = "hex") { this.start = serialization.decoder(fields["start"], encoding, "number", "Buffer"); this.end = serialization.decoder(fields["end"], encoding, "number", "Buffer"); this.numOptions.writeUInt32BE(this.options.length, 0); this.options = fields["options"].map((opt) => new VoteOption().deserialize(opt, encoding)); return this; } fromBuffer(bytes, offset = 0) { this.numOptions = bintools.copyFrom(bytes, offset, offset + 4); // this.numOptions.readUInt32BE(0) offset += 4; const optionCount = this.numOptions.readUInt32BE(0); this.options = []; for (let i = 0; i < optionCount; i++) { const option = new VoteOption(); offset = option.fromBuffer(bytes, offset); this.options.push(option); } this.start = bintools.copyFrom(bytes, offset, offset + 8); offset += 8; this.end = bintools.copyFrom(bytes, offset, offset + 8); offset += 8; return offset; } /** * Returns a {@link https://github.com/feross/buffer|Buffer} representation of the [[BaseProposal]]. */ toBuffer() { const barr = [this.numOptions]; let bsize = this.numOptions.length; this.options.forEach((opt) => { bsize += opt.getSize(); barr.push(opt.toBuffer()); }); barr.push(this.start, this.end); bsize += this.start.length + this.end.length; return buffer_1.Buffer.concat(barr, bsize); } } exports.EssentialProposal = EssentialProposal; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNzZW50aWFscHJvcG9zYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpcy9wbGF0Zm9ybXZtL2FkZHByb3Bvc2FsdHgvZXNzZW50aWFscHJvcG9zYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0NBQWdDO0FBQ2hDLHVFQUE4QztBQUM5QyxnRUFBZ0Y7QUFDaEYsNENBQXdDO0FBRXhDOztHQUVHO0FBQ0gsTUFBTSxRQUFRLEdBQWEsa0JBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQUNqRCxNQUFNLGFBQWEsR0FBa0IsNkJBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQUVoRSxNQUFhLFVBQVcsU0FBUSxlQUFNO0lBU3BDLEtBQUs7UUFDSCxJQUFJLE9BQU8sR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFBO1FBQzFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDbkMsT0FBTyxPQUFlLENBQUE7SUFDeEIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksVUFBVSxFQUFVLENBQUE7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0g7UUFDRSxLQUFLLEVBQUUsQ0FBQTtRQXRCQyxjQUFTLEdBQUcsWUFBWSxDQUFBO1FBQ3hCLFlBQU8sR0FBRyxTQUFTLENBQUE7UUFFN0IsOENBQThDO1FBRXBDLFVBQUssR0FBRyxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZCLFVBQUssR0FBRyxDQUFDLENBQUE7SUFpQm5CLENBQUM7Q0FDRjtBQXpCRCxnQ0F5QkM7QUFFRCxNQUFzQixpQkFBaUI7SUFNckMsWUFBWSxLQUFjLEVBQUUsR0FBWTtRQUw5QixVQUFLLEdBQVcsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvQixRQUFHLEdBQVcsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUU3QixlQUFVLEdBQVcsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUc1QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQ25CLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxNQUFrQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7U0FDdEQ7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsU0FBUyxDQUFDLFdBQStCLEtBQUs7UUFDNUMsSUFBSSxNQUFNLEdBQUc7WUFDWCxLQUFLLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO1lBQ3RFLEdBQUcsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFDbEUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzVELENBQUE7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLFdBQStCLEtBQUs7UUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsT0FBTyxDQUNoQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLENBQ1QsQ0FBQTtRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUNiLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxDQUNULENBQUE7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUMzQyxJQUFJLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQzVDLENBQUE7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYSxFQUFFLFNBQWlCLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUMsa0NBQWtDO1FBQ2pHLE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUNqQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUE7WUFDL0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3pELE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDdkQsTUFBTSxJQUFJLENBQUMsQ0FBQTtRQUNYLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE1BQU0sSUFBSSxHQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3hDLElBQUksS0FBSyxHQUFXLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFBO1FBRTFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDM0IsS0FBSyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQzNCLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUE7UUFFNUMsT0FBTyxlQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0NBQ0Y7QUFuR0QsOENBbUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcImJ1ZmZlci9cIlxuaW1wb3J0IEJpblRvb2xzIGZyb20gXCIuLi8uLi8uLi91dGlscy9iaW50b29sc1wiXG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uLCBTZXJpYWxpemVkRW5jb2RpbmcgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvc2VyaWFsaXphdGlvblwiXG5pbXBvcnQgeyBOQnl0ZXMgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uXCJcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IGJpbnRvb2xzOiBCaW5Ub29scyA9IEJpblRvb2xzLmdldEluc3RhbmNlKClcbmNvbnN0IHNlcmlhbGl6YXRpb246IFNlcmlhbGl6YXRpb24gPSBTZXJpYWxpemF0aW9uLmdldEluc3RhbmNlKClcblxuZXhwb3J0IGNsYXNzIFZvdGVPcHRpb24gZXh0ZW5kcyBOQnl0ZXMge1xuICBwcm90ZWN0ZWQgX3R5cGVOYW1lID0gXCJWb3RlT3B0aW9uXCJcbiAgcHJvdGVjdGVkIF90eXBlSUQgPSB1bmRlZmluZWRcblxuICAvL3NlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgYm90aCBhcmUgaW5oZXJpdGVkXG5cbiAgcHJvdGVjdGVkIGJ5dGVzID0gQnVmZmVyLmFsbG9jKDgpXG4gIHByb3RlY3RlZCBic2l6ZSA9IDhcblxuICBjbG9uZSgpOiB0aGlzIHtcbiAgICBsZXQgbmV3YmFzZTogVm90ZU9wdGlvbiA9IG5ldyBWb3RlT3B0aW9uKClcbiAgICBuZXdiYXNlLmZyb21CdWZmZXIodGhpcy50b0J1ZmZlcigpKVxuICAgIHJldHVybiBuZXdiYXNlIGFzIHRoaXNcbiAgfVxuXG4gIGNyZWF0ZSgpOiB0aGlzIHtcbiAgICByZXR1cm4gbmV3IFZvdGVPcHRpb24oKSBhcyB0aGlzXG4gIH1cblxuICAvKipcbiAgICogVm90ZU9wdGlvbiBmb3IgYSBbW1R4XV1cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRXNzZW50aWFsUHJvcG9zYWwge1xuICBwcm90ZWN0ZWQgc3RhcnQ6IEJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg4KVxuICBwcm90ZWN0ZWQgZW5kOiBCdWZmZXIgPSBCdWZmZXIuYWxsb2MoOClcbiAgcHJvdGVjdGVkIG9wdGlvbnM6IFZvdGVPcHRpb25bXSAvLyBUT0RPOiBkZWZpbmUgaW4gZWFjaCBQcm9wb3NhbCBzZXBhcmF0ZWxseVxuICBwcm90ZWN0ZWQgbnVtT3B0aW9uczogQnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpXG5cbiAgY29uc3RydWN0b3Ioc3RhcnQ/OiBCdWZmZXIsIGVuZD86IEJ1ZmZlcikge1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydFxuICAgIHRoaXMuZW5kID0gZW5kXG4gICAgdGhpcy5vcHRpb25zID0gW11cbiAgfVxuXG4gIGdldFN0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0XG4gIH1cblxuICBnZXRFbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5kXG4gIH1cblxuICBnZXRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgb3B0aW9uIHRvIHRoZSBwcm9wb3NhbCBhbmQgcmV0dXJucyB0aGUgaW5kZXggb2ZmIHRoZSBhZGRlZCBvcHRpb24uXG4gICAqL1xuICBhZGRPcHRpb24ob3B0aW9uOiBWb3RlT3B0aW9uKTogbnVtYmVyIHtcbiAgICB0aGlzLm9wdGlvbnMucHVzaChvcHRpb24pXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgdGhpcy5udW1PcHRpb25zLndyaXRlVUludDMyQkUodGhpcy5vcHRpb25zLmxlbmd0aCwgMClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sZW5ndGggLSAxXG4gIH1cblxuICBzZXJpYWxpemUoZW5jb2Rpbmc6IFNlcmlhbGl6ZWRFbmNvZGluZyA9IFwiaGV4XCIpOiBvYmplY3Qge1xuICAgIGxldCBmaWVsZHMgPSB7XG4gICAgICBzdGFydDogc2VyaWFsaXphdGlvbi5lbmNvZGVyKHRoaXMuc3RhcnQsIGVuY29kaW5nLCBcIkJ1ZmZlclwiLCBcIm51bWJlclwiKSxcbiAgICAgIGVuZDogc2VyaWFsaXphdGlvbi5lbmNvZGVyKHRoaXMuZW5kLCBlbmNvZGluZywgXCJCdWZmZXJcIiwgXCJudW1iZXJcIiksXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMubWFwKChvcHQpID0+IG9wdC5zZXJpYWxpemUoZW5jb2RpbmcpKVxuICAgIH1cbiAgICByZXR1cm4gZmllbGRzXG4gIH1cblxuICBkZXNlcmlhbGl6ZShmaWVsZHM6IG9iamVjdCwgZW5jb2Rpbmc6IFNlcmlhbGl6ZWRFbmNvZGluZyA9IFwiaGV4XCIpOiB0aGlzIHtcbiAgICB0aGlzLnN0YXJ0ID0gc2VyaWFsaXphdGlvbi5kZWNvZGVyKFxuICAgICAgZmllbGRzW1wic3RhcnRcIl0sXG4gICAgICBlbmNvZGluZyxcbiAgICAgIFwibnVtYmVyXCIsXG4gICAgICBcIkJ1ZmZlclwiXG4gICAgKVxuICAgIHRoaXMuZW5kID0gc2VyaWFsaXphdGlvbi5kZWNvZGVyKFxuICAgICAgZmllbGRzW1wiZW5kXCJdLFxuICAgICAgZW5jb2RpbmcsXG4gICAgICBcIm51bWJlclwiLFxuICAgICAgXCJCdWZmZXJcIlxuICAgIClcbiAgICB0aGlzLm51bU9wdGlvbnMud3JpdGVVSW50MzJCRSh0aGlzLm9wdGlvbnMubGVuZ3RoLCAwKVxuICAgIHRoaXMub3B0aW9ucyA9IGZpZWxkc1tcIm9wdGlvbnNcIl0ubWFwKChvcHQpID0+XG4gICAgICBuZXcgVm90ZU9wdGlvbigpLmRlc2VyaWFsaXplKG9wdCwgZW5jb2RpbmcpXG4gICAgKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGZyb21CdWZmZXIoYnl0ZXM6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIgPSAwKTogbnVtYmVyIHtcbiAgICB0aGlzLm51bU9wdGlvbnMgPSBiaW50b29scy5jb3B5RnJvbShieXRlcywgb2Zmc2V0LCBvZmZzZXQgKyA0KSAvLyB0aGlzLm51bU9wdGlvbnMucmVhZFVJbnQzMkJFKDApXG4gICAgb2Zmc2V0ICs9IDRcbiAgICBjb25zdCBvcHRpb25Db3VudCA9IHRoaXMubnVtT3B0aW9ucy5yZWFkVUludDMyQkUoMClcbiAgICB0aGlzLm9wdGlvbnMgPSBbXVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9uQ291bnQ7IGkrKykge1xuICAgICAgY29uc3Qgb3B0aW9uID0gbmV3IFZvdGVPcHRpb24oKVxuICAgICAgb2Zmc2V0ID0gb3B0aW9uLmZyb21CdWZmZXIoYnl0ZXMsIG9mZnNldClcbiAgICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbilcbiAgICB9XG4gICAgdGhpcy5zdGFydCA9IGJpbnRvb2xzLmNvcHlGcm9tKGJ5dGVzLCBvZmZzZXQsIG9mZnNldCArIDgpXG4gICAgb2Zmc2V0ICs9IDhcbiAgICB0aGlzLmVuZCA9IGJpbnRvb2xzLmNvcHlGcm9tKGJ5dGVzLCBvZmZzZXQsIG9mZnNldCArIDgpXG4gICAgb2Zmc2V0ICs9IDhcbiAgICByZXR1cm4gb2Zmc2V0XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBbW0Jhc2VQcm9wb3NhbF1dLlxuICAgKi9cbiAgdG9CdWZmZXIoKTogQnVmZmVyIHtcbiAgICBjb25zdCBiYXJyOiBCdWZmZXJbXSA9IFt0aGlzLm51bU9wdGlvbnNdXG4gICAgbGV0IGJzaXplOiBudW1iZXIgPSB0aGlzLm51bU9wdGlvbnMubGVuZ3RoXG5cbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgob3B0KSA9PiB7XG4gICAgICBic2l6ZSArPSBvcHQuZ2V0U2l6ZSgpXG4gICAgICBiYXJyLnB1c2gob3B0LnRvQnVmZmVyKCkpXG4gICAgfSlcblxuICAgIGJhcnIucHVzaCh0aGlzLnN0YXJ0LCB0aGlzLmVuZClcbiAgICBic2l6ZSArPSB0aGlzLnN0YXJ0Lmxlbmd0aCArIHRoaXMuZW5kLmxlbmd0aFxuXG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoYmFyciwgYnNpemUpXG4gIH1cbn1cbiJdfQ==