Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@apache-arrow/es2015-cjs

Package Overview
Dependencies
Maintainers
2
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@apache-arrow/es2015-cjs - npm Package Compare versions

Comparing version 0.3.0 to 0.3.1

11

Arrow.d.ts
import * as type_ from './type';
import * as data_ from './data';
import * as vector_ from './vector';
import * as util_ from './util/int';
import * as util_int_ from './util/int';
import * as util_bit_ from './util/bit';
import * as visitor_ from './visitor';

@@ -23,5 +24,6 @@ import * as view_ from './vector/view';

export declare namespace util {
export import Uint64 = util_.Uint64;
export import Int64 = util_.Int64;
export import Int128 = util_.Int128;
export import Uint64 = util_int_.Uint64;
export import Int64 = util_int_.Int64;
export import Int128 = util_int_.Int128;
export import packBools = util_bit_.packBools;
}

@@ -149,2 +151,3 @@ export declare namespace data {

export import And = predicate_.And;
export import Not = predicate_.Not;
export import GTeq = predicate_.GTeq;

@@ -151,0 +154,0 @@ export import LTeq = predicate_.LTeq;

@@ -22,3 +22,4 @@ "use strict";

const vector_ = require("./vector");
const util_ = require("./util/int");
const util_int_ = require("./util/int");
const util_bit_ = require("./util/bit");
const visitor_ = require("./visitor");

@@ -43,5 +44,6 @@ const view_ = require("./vector/view");

(function (util) {
util.Uint64 = util_.Uint64;
util.Int64 = util_.Int64;
util.Int128 = util_.Int128;
util.Uint64 = util_int_.Uint64;
util.Int64 = util_int_.Int64;
util.Int128 = util_int_.Int128;
util.packBools = util_bit_.packBools;
})(util = exports.util || (exports.util = {}));

@@ -176,2 +178,3 @@ var data;

predicate.And = predicate_.And;
predicate.Not = predicate_.Not;
predicate.GTeq = predicate_.GTeq;

@@ -219,10 +222,10 @@ predicate.LTeq = predicate_.LTeq;

recordbatch_1.RecordBatch['from'] = recordbatch_1.RecordBatch.from;
util_.Uint64['add'] = util_.Uint64.add;
util_.Uint64['multiply'] = util_.Uint64.multiply;
util_.Int64['add'] = util_.Int64.add;
util_.Int64['multiply'] = util_.Int64.multiply;
util_.Int64['fromString'] = util_.Int64.fromString;
util_.Int128['add'] = util_.Int128.add;
util_.Int128['multiply'] = util_.Int128.multiply;
util_.Int128['fromString'] = util_.Int128.fromString;
util_int_.Uint64['add'] = util_int_.Uint64.add;
util_int_.Uint64['multiply'] = util_int_.Uint64.multiply;
util_int_.Int64['add'] = util_int_.Int64.add;
util_int_.Int64['multiply'] = util_int_.Int64.multiply;
util_int_.Int64['fromString'] = util_int_.Int64.fromString;
util_int_.Int128['add'] = util_int_.Int128.add;
util_int_.Int128['multiply'] = util_int_.Int128.multiply;
util_int_.Int128['fromString'] = util_int_.Int128.fromString;
data_.ChunkedData['computeOffsets'] = data_.ChunkedData.computeOffsets;

@@ -276,2 +279,2 @@ type_.Type['NONE'] = type_.Type.NONE;

//# sourceMappingURL=data:application/json;charset=utf8;base64,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RyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFFBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQ2hCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLGNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQzVCLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzFCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFVBQUssR0FB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LENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0FBRW5ELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUNqRCxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBRXJELEtBQUssQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztBQUV0RSxLQUFLLENBQUMsSUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzdDLEtBQUssQ0FBQyxJQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDN0MsS0FBSyxDQUFDLElBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUMzQyxLQUFLLENBQUMsSUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQy9DLEtBQUssQ0FBQyxJQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDakQsS0FBSyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzdDLEtBQUssQ0FBQyxJQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDbkQsS0FBSyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzdDLEtBQUssQ0FBQyxJQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7QUFDdkQsS0FBSyxDQUFDLElBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNyRCxLQUFLLENBQUMsSUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzdDLEtBQUssQ0FBQyxJQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDakQsS0FBSyxDQUFDLElBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUMvQyxLQUFLLENBQUMsSUFBWSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDbkUsS0FBSyxDQUFDLElBQVksQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztBQUMvRCxLQUFLLENBQUMsSUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQzNDLEtBQUssQ0FBQyxJQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDekQsS0FBSyxDQUFDLElBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUN6RCxLQUFLLENBQUMsSUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBRTVELEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDakQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztBQUMvQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0FBQ25ELEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDckQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNqRCxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDdkQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNqRCxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7QUFDM0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztBQUN6RCxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDckQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUNuRCxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQzdELEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7QUFDL0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7QUFDdkUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0FBQ25FLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7QUFDL0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUU3RCxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQ3JELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDbkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztBQUV2RCxRQUFRLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7QUFDL0UsUUFBUSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDIiwiZmlsZSI6IkFycm93LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCAqIGFzIHR5cGVfIGZyb20gJy4vdHlwZSc7XG5pbXBvcnQgKiBhcyBkYXRhXyBmcm9tICcuL2RhdGEnO1xuaW1wb3J0ICogYXMgdmVjdG9yXyBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgKiBhcyB1dGlsXyBmcm9tICcuL3V0aWwvaW50JztcbmltcG9ydCAqIGFzIHZpc2l0b3JfIGZyb20gJy4vdmlzaXRvcic7XG5pbXBvcnQgKiBhcyB2aWV3XyBmcm9tICcuL3ZlY3Rvci92aWV3JztcbmltcG9ydCAqIGFzIHByZWRpY2F0ZV8gZnJvbSAnLi9wcmVkaWNhdGUnO1xuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0IHsgUmVjb3JkQmF0Y2ggfSBmcm9tICcuL3JlY29yZGJhdGNoJztcbmltcG9ydCB7IFNjaGVtYSwgRmllbGQsIFR5cGUgfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgVGFibGUsIERhdGFGcmFtZSwgTmV4dEZ1bmMsIEJpbmRGdW5jLCBDb3VudEJ5UmVzdWx0IH0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQgeyByZWFkLCByZWFkQXN5bmMgfSBmcm9tICcuL2lwYy9yZWFkZXIvYXJyb3cnO1xuXG5leHBvcnQgaW1wb3J0IFZpZXcgPSB2ZWN0b3JfLlZpZXc7XG5leHBvcnQgaW1wb3J0IFZlY3Rvckxpa2UgPSB2ZWN0b3JfLlZlY3Rvckxpa2U7XG5leHBvcnQgaW1wb3J0IFR5cGVkQXJyYXkgPSB0eXBlXy5UeXBlZEFycmF5O1xuZXhwb3J0IGltcG9ydCBJbnRCaXRXaWR0aCA9IHR5cGVfLkludEJpdFdpZHRoO1xuZXhwb3J0IGltcG9ydCBUaW1lQml0V2lkdGggPSB0eXBlXy5UaW1lQml0V2lkdGg7XG5leHBvcnQgaW1wb3J0IFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHR5cGVfLlR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcblxuZXhwb3J0IHsgcmVhZCwgcmVhZEFzeW5jIH07XG5leHBvcnQgeyBUYWJsZSwgRGF0YUZyYW1lLCBOZXh0RnVuYywgQmluZEZ1bmMsIENvdW50QnlSZXN1bHQgfTtcbmV4cG9ydCB7IEZpZWxkLCBTY2hlbWEsIFJlY29yZEJhdGNoLCBWZWN0b3IsIFR5cGUgfTtcblxuZXhwb3J0IG5hbWVzcGFjZSB1dGlsIHtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQ2NCA9IHV0aWxfLlVpbnQ2NDtcbiAgICBleHBvcnQgaW1wb3J0IEludDY0ID0gdXRpbF8uSW50NjQ7XG4gICAgZXhwb3J0IGltcG9ydCBJbnQxMjggPSB1dGlsXy5JbnQxMjg7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgZGF0YSB7XG4gICAgZXhwb3J0IGltcG9ydCBCYXNlRGF0YSA9IGRhdGFfLkJhc2VEYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgRmxhdERhdGEgPSBkYXRhXy5GbGF0RGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IEJvb2xEYXRhID0gZGF0YV8uQm9vbERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBGbGF0TGlzdERhdGEgPSBkYXRhXy5GbGF0TGlzdERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBEaWN0aW9uYXJ5RGF0YSA9IGRhdGFfLkRpY3Rpb25hcnlEYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgTmVzdGVkRGF0YSA9IGRhdGFfLk5lc3RlZERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBMaXN0RGF0YSA9IGRhdGFfLkxpc3REYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25EYXRhID0gZGF0YV8uVW5pb25EYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgU3BhcnNlVW5pb25EYXRhID0gZGF0YV8uU3BhcnNlVW5pb25EYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVuc2VVbmlvbkRhdGEgPSBkYXRhXy5EZW5zZVVuaW9uRGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IENodW5rZWREYXRhID0gZGF0YV8uQ2h1bmtlZERhdGE7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgZW51bV8ge1xuICAgIGV4cG9ydCBpbXBvcnQgVHlwZSA9IHR5cGVfLkFycm93VHlwZTtcbiAgICBleHBvcnQgaW1wb3J0IERhdGVVbml0ID0gdHlwZV8uRGF0ZVVuaXQ7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lVW5pdCA9IHR5cGVfLlRpbWVVbml0O1xuICAgIGV4cG9ydCBpbXBvcnQgUHJlY2lzaW9uID0gdHlwZV8uUHJlY2lzaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25Nb2RlID0gdHlwZV8uVW5pb25Nb2RlO1xuICAgIGV4cG9ydCBpbXBvcnQgVmVjdG9yVHlwZSA9IHR5cGVfLlZlY3RvclR5cGU7XG4gICAgZXhwb3J0IGltcG9ydCBJbnRlcnZhbFVuaXQgPSB0eXBlXy5JbnRlcnZhbFVuaXQ7XG4gICAgZXhwb3J0IGltcG9ydCBNZXNzYWdlSGVhZGVyID0gdHlwZV8uTWVzc2FnZUhlYWRlcjtcbiAgICBleHBvcnQgaW1wb3J0IE1ldGFkYXRhVmVyc2lvbiA9IHR5cGVfLk1ldGFkYXRhVmVyc2lvbjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB0eXBlIHtcbiAgICBleHBvcnQgaW1wb3J0IFNjaGVtYSA9IHR5cGVfLlNjaGVtYTtcbiAgICBleHBvcnQgaW1wb3J0IEZpZWxkID0gdHlwZV8uRmllbGQ7XG4gICAgZXhwb3J0IGltcG9ydCBOdWxsID0gdHlwZV8uTnVsbDtcbiAgICBleHBvcnQgaW1wb3J0IEludCA9IHR5cGVfLkludDtcbiAgICBleHBvcnQgaW1wb3J0IEludDggPSB0eXBlXy5JbnQ4O1xuICAgIGV4cG9ydCBpbXBvcnQgSW50MTYgPSB0eXBlXy5JbnQxNjtcbiAgICBleHBvcnQgaW1wb3J0IEludDMyID0gdHlwZV8uSW50MzI7XG4gICAgZXhwb3J0IGltcG9ydCBJbnQ2NCA9IHR5cGVfLkludDY0O1xuICAgIGV4cG9ydCBpbXBvcnQgVWludDggPSB0eXBlXy5VaW50ODtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQxNiA9IHR5cGVfLlVpbnQxNjtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQzMiA9IHR5cGVfLlVpbnQzMjtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQ2NCA9IHR5cGVfLlVpbnQ2NDtcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0ID0gdHlwZV8uRmxvYXQ7XG4gICAgZXhwb3J0IGltcG9ydCBGbG9hdDE2ID0gdHlwZV8uRmxvYXQxNjtcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0MzIgPSB0eXBlXy5GbG9hdDMyO1xuICAgIGV4cG9ydCBpbXBvcnQgRmxvYXQ2NCA9IHR5cGVfLkZsb2F0NjQ7XG4gICAgZXhwb3J0IGltcG9ydCBCaW5hcnkgPSB0eXBlXy5CaW5hcnk7XG4gICAgZXhwb3J0IGltcG9ydCBVdGY4ID0gdHlwZV8uVXRmODtcbiAgICBleHBvcnQgaW1wb3J0IEJvb2wgPSB0eXBlXy5Cb29sO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVjaW1hbCA9IHR5cGVfLkRlY2ltYWw7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlXyA9IHR5cGVfLkRhdGVfO1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZSA9IHR5cGVfLlRpbWU7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXAgPSB0eXBlXy5UaW1lc3RhbXA7XG4gICAgZXhwb3J0IGltcG9ydCBJbnRlcnZhbCA9IHR5cGVfLkludGVydmFsO1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdCA9IHR5cGVfLkxpc3Q7XG4gICAgZXhwb3J0IGltcG9ydCBTdHJ1Y3QgPSB0eXBlXy5TdHJ1Y3Q7XG4gICAgZXhwb3J0IGltcG9ydCBVbmlvbiA9IHR5cGVfLlVuaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVuc2VVbmlvbiA9IHR5cGVfLkRlbnNlVW5pb247XG4gICAgZXhwb3J0IGltcG9ydCBTcGFyc2VVbmlvbiA9IHR5cGVfLlNwYXJzZVVuaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplQmluYXJ5ID0gdHlwZV8uRml4ZWRTaXplQmluYXJ5O1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplTGlzdCA9IHR5cGVfLkZpeGVkU2l6ZUxpc3Q7XG4gICAgZXhwb3J0IGltcG9ydCBNYXBfID0gdHlwZV8uTWFwXztcbiAgICBleHBvcnQgaW1wb3J0IERpY3Rpb25hcnkgPSB0eXBlXy5EaWN0aW9uYXJ5O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIHZlY3RvciB7XG4gICAgZXhwb3J0IGltcG9ydCBWZWN0b3IgPSB2ZWN0b3JfLlZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IE51bGxWZWN0b3IgPSB2ZWN0b3JfLk51bGxWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBCb29sVmVjdG9yID0gdmVjdG9yXy5Cb29sVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgSW50VmVjdG9yID0gdmVjdG9yXy5JbnRWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBGbG9hdFZlY3RvciA9IHZlY3Rvcl8uRmxvYXRWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlVmVjdG9yID0gdmVjdG9yXy5EYXRlVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVjaW1hbFZlY3RvciA9IHZlY3Rvcl8uRGVjaW1hbFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IFRpbWVWZWN0b3IgPSB2ZWN0b3JfLlRpbWVWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXBWZWN0b3IgPSB2ZWN0b3JfLlRpbWVzdGFtcFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsVmVjdG9yID0gdmVjdG9yXy5JbnRlcnZhbFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEJpbmFyeVZlY3RvciA9IHZlY3Rvcl8uQmluYXJ5VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplQmluYXJ5VmVjdG9yID0gdmVjdG9yXy5GaXhlZFNpemVCaW5hcnlWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBVdGY4VmVjdG9yID0gdmVjdG9yXy5VdGY4VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdFZlY3RvciA9IHZlY3Rvcl8uTGlzdFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEZpeGVkU2l6ZUxpc3RWZWN0b3IgPSB2ZWN0b3JfLkZpeGVkU2l6ZUxpc3RWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBNYXBWZWN0b3IgPSB2ZWN0b3JfLk1hcFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IFN0cnVjdFZlY3RvciA9IHZlY3Rvcl8uU3RydWN0VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25WZWN0b3IgPSB2ZWN0b3JfLlVuaW9uVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRGljdGlvbmFyeVZlY3RvciA9IHZlY3Rvcl8uRGljdGlvbmFyeVZlY3Rvcjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB2aXNpdG9yIHtcbiAgICBleHBvcnQgaW1wb3J0IFR5cGVWaXNpdG9yID0gdmlzaXRvcl8uVHlwZVZpc2l0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBWZWN0b3JWaXNpdG9yID0gdmlzaXRvcl8uVmVjdG9yVmlzaXRvcjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB2aWV3IHtcbiAgICBleHBvcnQgaW1wb3J0IENodW5rZWRWaWV3ID0gdmlld18uQ2h1bmtlZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBEaWN0aW9uYXJ5VmlldyA9IHZpZXdfLkRpY3Rpb25hcnlWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdFZpZXcgPSB2aWV3Xy5MaXN0VmlldztcbiAgICBleHBvcnQgaW1wb3J0IEZpeGVkU2l6ZUxpc3RWaWV3ID0gdmlld18uRml4ZWRTaXplTGlzdFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBCaW5hcnlWaWV3ID0gdmlld18uQmluYXJ5VmlldztcbiAgICBleHBvcnQgaW1wb3J0IFV0ZjhWaWV3ID0gdmlld18uVXRmOFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBVbmlvblZpZXcgPSB2aWV3Xy5VbmlvblZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBEZW5zZVVuaW9uVmlldyA9IHZpZXdfLkRlbnNlVW5pb25WaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgTmVzdGVkVmlldyA9IHZpZXdfLk5lc3RlZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBTdHJ1Y3RWaWV3ID0gdmlld18uU3RydWN0VmlldztcbiAgICBleHBvcnQgaW1wb3J0IE1hcFZpZXcgPSB2aWV3Xy5NYXBWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRmxhdFZpZXcgPSB2aWV3Xy5GbGF0VmlldztcbiAgICBleHBvcnQgaW1wb3J0IE51bGxWaWV3ID0gdmlld18uTnVsbFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBCb29sVmlldyA9IHZpZXdfLkJvb2xWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVmFsaWRpdHlWaWV3ID0gdmlld18uVmFsaWRpdHlWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgUHJpbWl0aXZlVmlldyA9IHZpZXdfLlByaW1pdGl2ZVZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBGaXhlZFNpemVWaWV3ID0gdmlld18uRml4ZWRTaXplVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0MTZWaWV3ID0gdmlld18uRmxvYXQxNlZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlRGF5VmlldyA9IHZpZXdfLkRhdGVEYXlWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRGF0ZU1pbGxpc2Vjb25kVmlldyA9IHZpZXdfLkRhdGVNaWxsaXNlY29uZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXBEYXlWaWV3ID0gdmlld18uVGltZXN0YW1wRGF5VmlldztcbiAgICBleHBvcnQgaW1wb3J0IFRpbWVzdGFtcFNlY29uZFZpZXcgPSB2aWV3Xy5UaW1lc3RhbXBTZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wTWlsbGlzZWNvbmRWaWV3ID0gdmlld18uVGltZXN0YW1wTWlsbGlzZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wTWljcm9zZWNvbmRWaWV3ID0gdmlld18uVGltZXN0YW1wTWljcm9zZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wTmFub3NlY29uZFZpZXcgPSB2aWV3Xy5UaW1lc3RhbXBOYW5vc2Vjb25kVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsWWVhck1vbnRoVmlldyA9IHZpZXdfLkludGVydmFsWWVhck1vbnRoVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsWWVhclZpZXcgPSB2aWV3Xy5JbnRlcnZhbFllYXJWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgSW50ZXJ2YWxNb250aFZpZXcgPSB2aWV3Xy5JbnRlcnZhbE1vbnRoVmlldztcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBwcmVkaWNhdGUge1xuICAgIGV4cG9ydCBpbXBvcnQgY29sID0gcHJlZGljYXRlXy5jb2w7XG4gICAgZXhwb3J0IGltcG9ydCBsaXQgPSBwcmVkaWNhdGVfLmxpdDtcbiAgICBleHBvcnQgaW1wb3J0IGN1c3RvbSA9IHByZWRpY2F0ZV8uY3VzdG9tO1xuXG4gICAgZXhwb3J0IGltcG9ydCBPciA9IHByZWRpY2F0ZV8uT3I7XG4gICAgZXhwb3J0IGltcG9ydCBDb2wgPSBwcmVkaWNhdGVfLkNvbDtcbiAgICBleHBvcnQgaW1wb3J0IEFuZCA9IHByZWRpY2F0ZV8uQW5kO1xuICAgIGV4cG9ydCBpbXBvcnQgR1RlcSA9IHByZWRpY2F0ZV8uR1RlcTtcbiAgICBleHBvcnQgaW1wb3J0IExUZXEgPSBwcmVkaWNhdGVfLkxUZXE7XG4gICAgZXhwb3J0IGltcG9ydCBWYWx1ZSA9IHByZWRpY2F0ZV8uVmFsdWU7XG4gICAgZXhwb3J0IGltcG9ydCBFcXVhbHMgPSBwcmVkaWNhdGVfLkVxdWFscztcbiAgICBleHBvcnQgaW1wb3J0IExpdGVyYWwgPSBwcmVkaWNhdGVfLkxpdGVyYWw7XG4gICAgZXhwb3J0IGltcG9ydCBQcmVkaWNhdGUgPSBwcmVkaWNhdGVfLlByZWRpY2F0ZTtcblxuICAgIGV4cG9ydCBpbXBvcnQgUHJlZGljYXRlRnVuYyA9IHByZWRpY2F0ZV8uUHJlZGljYXRlRnVuYztcbn1cblxuLyogVGhlc2UgZXhwb3J0cyBhcmUgbmVlZGVkIGZvciB0aGUgY2xvc3VyZSBhbmQgdWdsaWZ5IHVtZCB0YXJnZXRzICovXG50cnkge1xuICAgIGxldCBBcnJvdzogYW55ID0gZXZhbCgnZXhwb3J0cycpO1xuICAgIGlmIChBcnJvdyAmJiB0eXBlb2YgQXJyb3cgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIHN0cmluZyBpbmRleGVycyB0ZWxsIGNsb3N1cmUgYW5kIHVnbGlmeSBub3QgdG8gcmVuYW1lIHRoZXNlIHByb3BlcnRpZXNcbiAgICAgICAgQXJyb3dbJ2RhdGEnXSA9IGRhdGE7XG4gICAgICAgIEFycm93Wyd0eXBlJ10gPSB0eXBlO1xuICAgICAgICBBcnJvd1sndXRpbCddID0gdXRpbDtcbiAgICAgICAgQXJyb3dbJ3ZpZXcnXSA9IHZpZXc7XG4gICAgICAgIEFycm93WydlbnVtXyddID0gZW51bV87XG4gICAgICAgIEFycm93Wyd2ZWN0b3InXSA9IHZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ3Zpc2l0b3InXSA9IHZpc2l0b3I7XG4gICAgICAgIEFycm93WydwcmVkaWNhdGUnXSA9IHByZWRpY2F0ZTtcblxuICAgICAgICBBcnJvd1sncmVhZCddID0gcmVhZDtcbiAgICAgICAgQXJyb3dbJ3JlYWRBc3luYyddID0gcmVhZEFzeW5jO1xuXG4gICAgICAgIEFycm93WydUeXBlJ10gPSBUeXBlO1xuICAgICAgICBBcnJvd1snRmllbGQnXSA9IEZpZWxkO1xuICAgICAgICBBcnJvd1snU2NoZW1hJ10gPSBTY2hlbWE7XG4gICAgICAgIEFycm93WydWZWN0b3InXSA9IFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1JlY29yZEJhdGNoJ10gPSBSZWNvcmRCYXRjaDtcblxuICAgICAgICBBcnJvd1snVGFibGUnXSA9IFRhYmxlO1xuICAgICAgICBBcnJvd1snQ291bnRCeVJlc3VsdCddID0gQ291bnRCeVJlc3VsdDtcbiAgICB9XG59IGNhdGNoIChlKSB7IC8qIG5vdCB0aGUgVU1EIGJ1bmRsZSAqLyB9XG4vKiBlbmQgdW1kIGV4cG9ydHMgKi9cblxuLy8gY2xvc3VyZSBjb21waWxlciBlcmFzZXMgc3RhdGljIHByb3BlcnRpZXMvbWV0aG9kczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci9pc3N1ZXMvMTc3NlxuLy8gc2V0IHRoZW0gdmlhIHN0cmluZyBpbmRleGVycyB0byBzYXZlIHRoZW0gZnJvbSB0aGUgbWFuZ2xlclxuU2NoZW1hWydmcm9tJ10gPSBTY2hlbWEuZnJvbTtcblRhYmxlWydmcm9tJ10gPSBUYWJsZS5mcm9tO1xuVGFibGVbJ2Zyb21Bc3luYyddID0gVGFibGUuZnJvbUFzeW5jO1xuVGFibGVbJ2VtcHR5J10gPSBUYWJsZS5lbXB0eTtcblZlY3RvclsnY3JlYXRlJ10gPSBWZWN0b3IuY3JlYXRlO1xuUmVjb3JkQmF0Y2hbJ2Zyb20nXSA9IFJlY29yZEJhdGNoLmZyb207XG5cbnV0aWxfLlVpbnQ2NFsnYWRkJ10gPSB1dGlsXy5VaW50NjQuYWRkO1xudXRpbF8uVWludDY0WydtdWx0aXBseSddID0gdXRpbF8uVWludDY0Lm11bHRpcGx5O1xuXG51dGlsXy5JbnQ2NFsnYWRkJ10gPSB1dGlsXy5JbnQ2NC5hZGQ7XG51dGlsXy5JbnQ2NFsnbXVsdGlwbHknXSA9IHV0aWxfLkludDY0Lm11bHRpcGx5O1xudXRpbF8uSW50NjRbJ2Zyb21TdHJpbmcnXSA9IHV0aWxfLkludDY0LmZyb21TdHJpbmc7XG5cbnV0aWxfLkludDEyOFsnYWRkJ10gPSB1dGlsXy5JbnQxMjguYWRkO1xudXRpbF8uSW50MTI4WydtdWx0aXBseSddID0gdXRpbF8uSW50MTI4Lm11bHRpcGx5O1xudXRpbF8uSW50MTI4Wydmcm9tU3RyaW5nJ10gPSB1dGlsXy5JbnQxMjguZnJvbVN0cmluZztcblxuZGF0YV8uQ2h1bmtlZERhdGFbJ2NvbXB1dGVPZmZzZXRzJ10gPSBkYXRhXy5DaHVua2VkRGF0YS5jb21wdXRlT2Zmc2V0cztcblxuKHR5cGVfLlR5cGUgYXMgYW55KVsnTk9ORSddID0gdHlwZV8uVHlwZS5OT05FO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnTnVsbCddID0gdHlwZV8uVHlwZS5OdWxsO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnSW50J10gPSB0eXBlXy5UeXBlLkludDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0Zsb2F0J10gPSB0eXBlXy5UeXBlLkZsb2F0O1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnQmluYXJ5J10gPSB0eXBlXy5UeXBlLkJpbmFyeTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1V0ZjgnXSA9IHR5cGVfLlR5cGUuVXRmODtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0Jvb2wnXSA9IHR5cGVfLlR5cGUuQm9vbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0RlY2ltYWwnXSA9IHR5cGVfLlR5cGUuRGVjaW1hbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0RhdGUnXSA9IHR5cGVfLlR5cGUuRGF0ZTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1RpbWUnXSA9IHR5cGVfLlR5cGUuVGltZTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1RpbWVzdGFtcCddID0gdHlwZV8uVHlwZS5UaW1lc3RhbXA7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydJbnRlcnZhbCddID0gdHlwZV8uVHlwZS5JbnRlcnZhbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0xpc3QnXSA9IHR5cGVfLlR5cGUuTGlzdDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1N0cnVjdCddID0gdHlwZV8uVHlwZS5TdHJ1Y3Q7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydVbmlvbiddID0gdHlwZV8uVHlwZS5Vbmlvbjtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0ZpeGVkU2l6ZUJpbmFyeSddID0gdHlwZV8uVHlwZS5GaXhlZFNpemVCaW5hcnk7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydGaXhlZFNpemVMaXN0J10gPSB0eXBlXy5UeXBlLkZpeGVkU2l6ZUxpc3Q7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydNYXAnXSA9IHR5cGVfLlR5cGUuTWFwO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnRGljdGlvbmFyeSddID0gdHlwZV8uVHlwZS5EaWN0aW9uYXJ5O1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnRGVuc2VVbmlvbiddID0gdHlwZV8uVHlwZS5EZW5zZVVuaW9uO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnU3BhcnNlVW5pb24nXSA9IHR5cGVfLlR5cGUuU3BhcnNlVW5pb247XG5cbnR5cGVfLkRhdGFUeXBlWydpc051bGwnXSA9IHR5cGVfLkRhdGFUeXBlLmlzTnVsbDtcbnR5cGVfLkRhdGFUeXBlWydpc0ludCddID0gdHlwZV8uRGF0YVR5cGUuaXNJbnQ7XG50eXBlXy5EYXRhVHlwZVsnaXNGbG9hdCddID0gdHlwZV8uRGF0YVR5cGUuaXNGbG9hdDtcbnR5cGVfLkRhdGFUeXBlWydpc0JpbmFyeSddID0gdHlwZV8uRGF0YVR5cGUuaXNCaW5hcnk7XG50eXBlXy5EYXRhVHlwZVsnaXNVdGY4J10gPSB0eXBlXy5EYXRhVHlwZS5pc1V0Zjg7XG50eXBlXy5EYXRhVHlwZVsnaXNCb29sJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0Jvb2w7XG50eXBlXy5EYXRhVHlwZVsnaXNEZWNpbWFsJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0RlY2ltYWw7XG50eXBlXy5EYXRhVHlwZVsnaXNEYXRlJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0RhdGU7XG50eXBlXy5EYXRhVHlwZVsnaXNUaW1lJ10gPSB0eXBlXy5EYXRhVHlwZS5pc1RpbWU7XG50eXBlXy5EYXRhVHlwZVsnaXNUaW1lc3RhbXAnXSA9IHR5cGVfLkRhdGFUeXBlLmlzVGltZXN0YW1wO1xudHlwZV8uRGF0YVR5cGVbJ2lzSW50ZXJ2YWwnXSA9IHR5cGVfLkRhdGFUeXBlLmlzSW50ZXJ2YWw7XG50eXBlXy5EYXRhVHlwZVsnaXNMaXN0J10gPSB0eXBlXy5EYXRhVHlwZS5pc0xpc3Q7XG50eXBlXy5EYXRhVHlwZVsnaXNTdHJ1Y3QnXSA9IHR5cGVfLkRhdGFUeXBlLmlzU3RydWN0O1xudHlwZV8uRGF0YVR5cGVbJ2lzVW5pb24nXSA9IHR5cGVfLkRhdGFUeXBlLmlzVW5pb247XG50eXBlXy5EYXRhVHlwZVsnaXNEZW5zZVVuaW9uJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0RlbnNlVW5pb247XG50eXBlXy5EYXRhVHlwZVsnaXNTcGFyc2VVbmlvbiddID0gdHlwZV8uRGF0YVR5cGUuaXNTcGFyc2VVbmlvbjtcbnR5cGVfLkRhdGFUeXBlWydpc0ZpeGVkU2l6ZUJpbmFyeSddID0gdHlwZV8uRGF0YVR5cGUuaXNGaXhlZFNpemVCaW5hcnk7XG50eXBlXy5EYXRhVHlwZVsnaXNGaXhlZFNpemVMaXN0J10gPSB0eXBlXy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUxpc3Q7XG50eXBlXy5EYXRhVHlwZVsnaXNNYXAnXSA9IHR5cGVfLkRhdGFUeXBlLmlzTWFwO1xudHlwZV8uRGF0YVR5cGVbJ2lzRGljdGlvbmFyeSddID0gdHlwZV8uRGF0YVR5cGUuaXNEaWN0aW9uYXJ5O1xuXG52ZWN0b3JfLkJvb2xWZWN0b3JbJ2Zyb20nXSA9IHZlY3Rvcl8uQm9vbFZlY3Rvci5mcm9tO1xudmVjdG9yXy5JbnRWZWN0b3JbJ2Zyb20nXSA9IHZlY3Rvcl8uSW50VmVjdG9yLmZyb207XG52ZWN0b3JfLkZsb2F0VmVjdG9yWydmcm9tJ10gPSB2ZWN0b3JfLkZsb2F0VmVjdG9yLmZyb207XG5cbnZpc2l0b3JfLlR5cGVWaXNpdG9yWyd2aXNpdFR5cGVJbmxpbmUnXSA9IHZpc2l0b3JfLlR5cGVWaXNpdG9yLnZpc2l0VHlwZUlubGluZTtcbnZpc2l0b3JfLlZlY3RvclZpc2l0b3JbJ3Zpc2l0VHlwZUlubGluZSddID0gdmlzaXRvcl8uVmVjdG9yVmlzaXRvci52aXNpdFR5cGVJbmxpbmU7Il19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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SUFDSCxXQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN0QixVQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNwQixTQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNsQixRQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUNoQixTQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNsQixVQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNwQixVQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNwQixVQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNwQixVQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNwQixXQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN0QixXQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN0QixXQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN0QixVQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNwQixZQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN4QixZQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN4QixZQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN4QixXQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN0QixTQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNsQixTQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNsQixZQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN4QixVQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNwQixTQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUM1QixhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUMxQixTQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJ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QUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ25ELEtBQUssQ0FBQyxJQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDN0MsS0FBSyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3ZELEtBQUssQ0FBQyxJQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDckQsS0FBSyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxJQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDL0MsS0FBSyxDQUFDLElBQVksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQ25FLEtBQUssQ0FBQyxJQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDL0QsS0FBSyxDQUFDLElBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUMzQyxLQUFLLENBQUMsSUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ3pELEtBQUssQ0FBQyxJ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QyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO0FBQy9FLFFBQVEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyIsImZpbGUiOiJBcnJvdy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgKiBhcyB0eXBlXyBmcm9tICcuL3R5cGUnO1xuaW1wb3J0ICogYXMgZGF0YV8gZnJvbSAnLi9kYXRhJztcbmltcG9ydCAqIGFzIHZlY3Rvcl8gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0ICogYXMgdXRpbF9pbnRfIGZyb20gJy4vdXRpbC9pbnQnO1xuaW1wb3J0ICogYXMgdXRpbF9iaXRfIGZyb20gJy4vdXRpbC9iaXQnO1xuaW1wb3J0ICogYXMgdmlzaXRvcl8gZnJvbSAnLi92aXNpdG9yJztcbmltcG9ydCAqIGFzIHZpZXdfIGZyb20gJy4vdmVjdG9yL3ZpZXcnO1xuaW1wb3J0ICogYXMgcHJlZGljYXRlXyBmcm9tICcuL3ByZWRpY2F0ZSc7XG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgeyBSZWNvcmRCYXRjaCB9IGZyb20gJy4vcmVjb3JkYmF0Y2gnO1xuaW1wb3J0IHsgU2NoZW1hLCBGaWVsZCwgVHlwZSB9IGZyb20gJy4vdHlwZSc7XG5pbXBvcnQgeyBUYWJsZSwgRGF0YUZyYW1lLCBOZXh0RnVuYywgQmluZEZ1bmMsIENvdW50QnlSZXN1bHQgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IHJlYWQsIHJlYWRBc3luYyB9IGZyb20gJy4vaXBjL3JlYWRlci9hcnJvdyc7XG5cbmV4cG9ydCBpbXBvcnQgVmlldyA9IHZlY3Rvcl8uVmlldztcbmV4cG9ydCBpbXBvcnQgVmVjdG9yTGlrZSA9IHZlY3Rvcl8uVmVjdG9yTGlrZTtcbmV4cG9ydCBpbXBvcnQgVHlwZWRBcnJheSA9IHR5cGVfLlR5cGVkQXJyYXk7XG5leHBvcnQgaW1wb3J0IEludEJpdFdpZHRoID0gdHlwZV8uSW50Qml0V2lkdGg7XG5leHBvcnQgaW1wb3J0IFRpbWVCaXRXaWR0aCA9IHR5cGVfLlRpbWVCaXRXaWR0aDtcbmV4cG9ydCBpbXBvcnQgVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gdHlwZV8uVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuXG5leHBvcnQgeyByZWFkLCByZWFkQXN5bmMgfTtcbmV4cG9ydCB7IFRhYmxlLCBEYXRhRnJhbWUsIE5leHRGdW5jLCBCaW5kRnVuYywgQ291bnRCeVJlc3VsdCB9O1xuZXhwb3J0IHsgRmllbGQsIFNjaGVtYSwgUmVjb3JkQmF0Y2gsIFZlY3RvciwgVHlwZSB9O1xuXG5leHBvcnQgbmFtZXNwYWNlIHV0aWwge1xuICAgIGV4cG9ydCBpbXBvcnQgVWludDY0ID0gdXRpbF9pbnRfLlVpbnQ2NDtcbiAgICBleHBvcnQgaW1wb3J0IEludDY0ID0gdXRpbF9pbnRfLkludDY0O1xuICAgIGV4cG9ydCBpbXBvcnQgSW50MTI4ID0gdXRpbF9pbnRfLkludDEyODtcbiAgICBleHBvcnQgaW1wb3J0IHBhY2tCb29scyA9IHV0aWxfYml0Xy5wYWNrQm9vbHM7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgZGF0YSB7XG4gICAgZXhwb3J0IGltcG9ydCBCYXNlRGF0YSA9IGRhdGFfLkJhc2VEYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgRmxhdERhdGEgPSBkYXRhXy5GbGF0RGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IEJvb2xEYXRhID0gZGF0YV8uQm9vbERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBGbGF0TGlzdERhdGEgPSBkYXRhXy5GbGF0TGlzdERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBEaWN0aW9uYXJ5RGF0YSA9IGRhdGFfLkRpY3Rpb25hcnlEYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgTmVzdGVkRGF0YSA9IGRhdGFfLk5lc3RlZERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBMaXN0RGF0YSA9IGRhdGFfLkxpc3REYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25EYXRhID0gZGF0YV8uVW5pb25EYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgU3BhcnNlVW5pb25EYXRhID0gZGF0YV8uU3BhcnNlVW5pb25EYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVuc2VVbmlvbkRhdGEgPSBkYXRhXy5EZW5zZVVuaW9uRGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IENodW5rZWREYXRhID0gZGF0YV8uQ2h1bmtlZERhdGE7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgZW51bV8ge1xuICAgIGV4cG9ydCBpbXBvcnQgVHlwZSA9IHR5cGVfLkFycm93VHlwZTtcbiAgICBleHBvcnQgaW1wb3J0IERhdGVVbml0ID0gdHlwZV8uRGF0ZVVuaXQ7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lVW5pdCA9IHR5cGVfLlRpbWVVbml0O1xuICAgIGV4cG9ydCBpbXBvcnQgUHJlY2lzaW9uID0gdHlwZV8uUHJlY2lzaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25Nb2RlID0gdHlwZV8uVW5pb25Nb2RlO1xuICAgIGV4cG9ydCBpbXBvcnQgVmVjdG9yVHlwZSA9IHR5cGVfLlZlY3RvclR5cGU7XG4gICAgZXhwb3J0IGltcG9ydCBJbnRlcnZhbFVuaXQgPSB0eXBlXy5JbnRlcnZhbFVuaXQ7XG4gICAgZXhwb3J0IGltcG9ydCBNZXNzYWdlSGVhZGVyID0gdHlwZV8uTWVzc2FnZUhlYWRlcjtcbiAgICBleHBvcnQgaW1wb3J0IE1ldGFkYXRhVmVyc2lvbiA9IHR5cGVfLk1ldGFkYXRhVmVyc2lvbjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB0eXBlIHtcbiAgICBleHBvcnQgaW1wb3J0IFNjaGVtYSA9IHR5cGVfLlNjaGVtYTtcbiAgICBleHBvcnQgaW1wb3J0IEZpZWxkID0gdHlwZV8uRmllbGQ7XG4gICAgZXhwb3J0IGltcG9ydCBOdWxsID0gdHlwZV8uTnVsbDtcbiAgICBleHBvcnQgaW1wb3J0IEludCA9IHR5cGVfLkludDtcbiAgICBleHBvcnQgaW1wb3J0IEludDggPSB0eXBlXy5JbnQ4O1xuICAgIGV4cG9ydCBpbXBvcnQgSW50MTYgPSB0eXBlXy5JbnQxNjtcbiAgICBleHBvcnQgaW1wb3J0IEludDMyID0gdHlwZV8uSW50MzI7XG4gICAgZXhwb3J0IGltcG9ydCBJbnQ2NCA9IHR5cGVfLkludDY0O1xuICAgIGV4cG9ydCBpbXBvcnQgVWludDggPSB0eXBlXy5VaW50ODtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQxNiA9IHR5cGVfLlVpbnQxNjtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQzMiA9IHR5cGVfLlVpbnQzMjtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQ2NCA9IHR5cGVfLlVpbnQ2NDtcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0ID0gdHlwZV8uRmxvYXQ7XG4gICAgZXhwb3J0IGltcG9ydCBGbG9hdDE2ID0gdHlwZV8uRmxvYXQxNjtcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0MzIgPSB0eXBlXy5GbG9hdDMyO1xuICAgIGV4cG9ydCBpbXBvcnQgRmxvYXQ2NCA9IHR5cGVfLkZsb2F0NjQ7XG4gICAgZXhwb3J0IGltcG9ydCBCaW5hcnkgPSB0eXBlXy5CaW5hcnk7XG4gICAgZXhwb3J0IGltcG9ydCBVdGY4ID0gdHlwZV8uVXRmODtcbiAgICBleHBvcnQgaW1wb3J0IEJvb2wgPSB0eXBlXy5Cb29sO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVjaW1hbCA9IHR5cGVfLkRlY2ltYWw7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlXyA9IHR5cGVfLkRhdGVfO1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZSA9IHR5cGVfLlRpbWU7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXAgPSB0eXBlXy5UaW1lc3RhbXA7XG4gICAgZXhwb3J0IGltcG9ydCBJbnRlcnZhbCA9IHR5cGVfLkludGVydmFsO1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdCA9IHR5cGVfLkxpc3Q7XG4gICAgZXhwb3J0IGltcG9ydCBTdHJ1Y3QgPSB0eXBlXy5TdHJ1Y3Q7XG4gICAgZXhwb3J0IGltcG9ydCBVbmlvbiA9IHR5cGVfLlVuaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVuc2VVbmlvbiA9IHR5cGVfLkRlbnNlVW5pb247XG4gICAgZXhwb3J0IGltcG9ydCBTcGFyc2VVbmlvbiA9IHR5cGVfLlNwYXJzZVVuaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplQmluYXJ5ID0gdHlwZV8uRml4ZWRTaXplQmluYXJ5O1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplTGlzdCA9IHR5cGVfLkZpeGVkU2l6ZUxpc3Q7XG4gICAgZXhwb3J0IGltcG9ydCBNYXBfID0gdHlwZV8uTWFwXztcbiAgICBleHBvcnQgaW1wb3J0IERpY3Rpb25hcnkgPSB0eXBlXy5EaWN0aW9uYXJ5O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIHZlY3RvciB7XG4gICAgZXhwb3J0IGltcG9ydCBWZWN0b3IgPSB2ZWN0b3JfLlZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IE51bGxWZWN0b3IgPSB2ZWN0b3JfLk51bGxWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBCb29sVmVjdG9yID0gdmVjdG9yXy5Cb29sVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgSW50VmVjdG9yID0gdmVjdG9yXy5JbnRWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBGbG9hdFZlY3RvciA9IHZlY3Rvcl8uRmxvYXRWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlVmVjdG9yID0gdmVjdG9yXy5EYXRlVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRGVjaW1hbFZlY3RvciA9IHZlY3Rvcl8uRGVjaW1hbFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IFRpbWVWZWN0b3IgPSB2ZWN0b3JfLlRpbWVWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXBWZWN0b3IgPSB2ZWN0b3JfLlRpbWVzdGFtcFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsVmVjdG9yID0gdmVjdG9yXy5JbnRlcnZhbFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEJpbmFyeVZlY3RvciA9IHZlY3Rvcl8uQmluYXJ5VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplQmluYXJ5VmVjdG9yID0gdmVjdG9yXy5GaXhlZFNpemVCaW5hcnlWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBVdGY4VmVjdG9yID0gdmVjdG9yXy5VdGY4VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdFZlY3RvciA9IHZlY3Rvcl8uTGlzdFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEZpeGVkU2l6ZUxpc3RWZWN0b3IgPSB2ZWN0b3JfLkZpeGVkU2l6ZUxpc3RWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBNYXBWZWN0b3IgPSB2ZWN0b3JfLk1hcFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IFN0cnVjdFZlY3RvciA9IHZlY3Rvcl8uU3RydWN0VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25WZWN0b3IgPSB2ZWN0b3JfLlVuaW9uVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRGljdGlvbmFyeVZlY3RvciA9IHZlY3Rvcl8uRGljdGlvbmFyeVZlY3Rvcjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB2aXNpdG9yIHtcbiAgICBleHBvcnQgaW1wb3J0IFR5cGVWaXNpdG9yID0gdmlzaXRvcl8uVHlwZVZpc2l0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBWZWN0b3JWaXNpdG9yID0gdmlzaXRvcl8uVmVjdG9yVmlzaXRvcjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB2aWV3IHtcbiAgICBleHBvcnQgaW1wb3J0IENodW5rZWRWaWV3ID0gdmlld18uQ2h1bmtlZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBEaWN0aW9uYXJ5VmlldyA9IHZpZXdfLkRpY3Rpb25hcnlWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdFZpZXcgPSB2aWV3Xy5MaXN0VmlldztcbiAgICBleHBvcnQgaW1wb3J0IEZpeGVkU2l6ZUxpc3RWaWV3ID0gdmlld18uRml4ZWRTaXplTGlzdFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBCaW5hcnlWaWV3ID0gdmlld18uQmluYXJ5VmlldztcbiAgICBleHBvcnQgaW1wb3J0IFV0ZjhWaWV3ID0gdmlld18uVXRmOFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBVbmlvblZpZXcgPSB2aWV3Xy5VbmlvblZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBEZW5zZVVuaW9uVmlldyA9IHZpZXdfLkRlbnNlVW5pb25WaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgTmVzdGVkVmlldyA9IHZpZXdfLk5lc3RlZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBTdHJ1Y3RWaWV3ID0gdmlld18uU3RydWN0VmlldztcbiAgICBleHBvcnQgaW1wb3J0IE1hcFZpZXcgPSB2aWV3Xy5NYXBWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRmxhdFZpZXcgPSB2aWV3Xy5GbGF0VmlldztcbiAgICBleHBvcnQgaW1wb3J0IE51bGxWaWV3ID0gdmlld18uTnVsbFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBCb29sVmlldyA9IHZpZXdfLkJvb2xWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVmFsaWRpdHlWaWV3ID0gdmlld18uVmFsaWRpdHlWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgUHJpbWl0aXZlVmlldyA9IHZpZXdfLlByaW1pdGl2ZVZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBGaXhlZFNpemVWaWV3ID0gdmlld18uRml4ZWRTaXplVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0MTZWaWV3ID0gdmlld18uRmxvYXQxNlZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlRGF5VmlldyA9IHZpZXdfLkRhdGVEYXlWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRGF0ZU1pbGxpc2Vjb25kVmlldyA9IHZpZXdfLkRhdGVNaWxsaXNlY29uZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXBEYXlWaWV3ID0gdmlld18uVGltZXN0YW1wRGF5VmlldztcbiAgICBleHBvcnQgaW1wb3J0IFRpbWVzdGFtcFNlY29uZFZpZXcgPSB2aWV3Xy5UaW1lc3RhbXBTZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wTWlsbGlzZWNvbmRWaWV3ID0gdmlld18uVGltZXN0YW1wTWlsbGlzZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wTWljcm9zZWNvbmRWaWV3ID0gdmlld18uVGltZXN0YW1wTWljcm9zZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wTmFub3NlY29uZFZpZXcgPSB2aWV3Xy5UaW1lc3RhbXBOYW5vc2Vjb25kVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsWWVhck1vbnRoVmlldyA9IHZpZXdfLkludGVydmFsWWVhck1vbnRoVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsWWVhclZpZXcgPSB2aWV3Xy5JbnRlcnZhbFllYXJWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgSW50ZXJ2YWxNb250aFZpZXcgPSB2aWV3Xy5JbnRlcnZhbE1vbnRoVmlldztcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBwcmVkaWNhdGUge1xuICAgIGV4cG9ydCBpbXBvcnQgY29sID0gcHJlZGljYXRlXy5jb2w7XG4gICAgZXhwb3J0IGltcG9ydCBsaXQgPSBwcmVkaWNhdGVfLmxpdDtcbiAgICBleHBvcnQgaW1wb3J0IGN1c3RvbSA9IHByZWRpY2F0ZV8uY3VzdG9tO1xuXG4gICAgZXhwb3J0IGltcG9ydCBPciA9IHByZWRpY2F0ZV8uT3I7XG4gICAgZXhwb3J0IGltcG9ydCBDb2wgPSBwcmVkaWNhdGVfLkNvbDtcbiAgICBleHBvcnQgaW1wb3J0IEFuZCA9IHByZWRpY2F0ZV8uQW5kO1xuICAgIGV4cG9ydCBpbXBvcnQgTm90ID0gcHJlZGljYXRlXy5Ob3Q7XG4gICAgZXhwb3J0IGltcG9ydCBHVGVxID0gcHJlZGljYXRlXy5HVGVxO1xuICAgIGV4cG9ydCBpbXBvcnQgTFRlcSA9IHByZWRpY2F0ZV8uTFRlcTtcbiAgICBleHBvcnQgaW1wb3J0IFZhbHVlID0gcHJlZGljYXRlXy5WYWx1ZTtcbiAgICBleHBvcnQgaW1wb3J0IEVxdWFscyA9IHByZWRpY2F0ZV8uRXF1YWxzO1xuICAgIGV4cG9ydCBpbXBvcnQgTGl0ZXJhbCA9IHByZWRpY2F0ZV8uTGl0ZXJhbDtcbiAgICBleHBvcnQgaW1wb3J0IFByZWRpY2F0ZSA9IHByZWRpY2F0ZV8uUHJlZGljYXRlO1xuXG4gICAgZXhwb3J0IGltcG9ydCBQcmVkaWNhdGVGdW5jID0gcHJlZGljYXRlXy5QcmVkaWNhdGVGdW5jO1xufVxuXG4vKiBUaGVzZSBleHBvcnRzIGFyZSBuZWVkZWQgZm9yIHRoZSBjbG9zdXJlIGFuZCB1Z2xpZnkgdW1kIHRhcmdldHMgKi9cbnRyeSB7XG4gICAgbGV0IEFycm93OiBhbnkgPSBldmFsKCdleHBvcnRzJyk7XG4gICAgaWYgKEFycm93ICYmIHR5cGVvZiBBcnJvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gc3RyaW5nIGluZGV4ZXJzIHRlbGwgY2xvc3VyZSBhbmQgdWdsaWZ5IG5vdCB0byByZW5hbWUgdGhlc2UgcHJvcGVydGllc1xuICAgICAgICBBcnJvd1snZGF0YSddID0gZGF0YTtcbiAgICAgICAgQXJyb3dbJ3R5cGUnXSA9IHR5cGU7XG4gICAgICAgIEFycm93Wyd1dGlsJ10gPSB1dGlsO1xuICAgICAgICBBcnJvd1sndmlldyddID0gdmlldztcbiAgICAgICAgQXJyb3dbJ2VudW1fJ10gPSBlbnVtXztcbiAgICAgICAgQXJyb3dbJ3ZlY3RvciddID0gdmVjdG9yO1xuICAgICAgICBBcnJvd1sndmlzaXRvciddID0gdmlzaXRvcjtcbiAgICAgICAgQXJyb3dbJ3ByZWRpY2F0ZSddID0gcHJlZGljYXRlO1xuXG4gICAgICAgIEFycm93WydyZWFkJ10gPSByZWFkO1xuICAgICAgICBBcnJvd1sncmVhZEFzeW5jJ10gPSByZWFkQXN5bmM7XG5cbiAgICAgICAgQXJyb3dbJ1R5cGUnXSA9IFR5cGU7XG4gICAgICAgIEFycm93WydGaWVsZCddID0gRmllbGQ7XG4gICAgICAgIEFycm93WydTY2hlbWEnXSA9IFNjaGVtYTtcbiAgICAgICAgQXJyb3dbJ1ZlY3RvciddID0gVmVjdG9yO1xuICAgICAgICBBcnJvd1snUmVjb3JkQmF0Y2gnXSA9IFJlY29yZEJhdGNoO1xuXG4gICAgICAgIEFycm93WydUYWJsZSddID0gVGFibGU7XG4gICAgICAgIEFycm93WydDb3VudEJ5UmVzdWx0J10gPSBDb3VudEJ5UmVzdWx0O1xuICAgIH1cbn0gY2F0Y2ggKGUpIHsgLyogbm90IHRoZSBVTUQgYnVuZGxlICovIH1cbi8qIGVuZCB1bWQgZXhwb3J0cyAqL1xuXG4vLyBjbG9zdXJlIGNvbXBpbGVyIGVyYXNlcyBzdGF0aWMgcHJvcGVydGllcy9tZXRob2RzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWNvbXBpbGVyL2lzc3Vlcy8xNzc2XG4vLyBzZXQgdGhlbSB2aWEgc3RyaW5nIGluZGV4ZXJzIHRvIHNhdmUgdGhlbSBmcm9tIHRoZSBtYW5nbGVyXG5TY2hlbWFbJ2Zyb20nXSA9IFNjaGVtYS5mcm9tO1xuVGFibGVbJ2Zyb20nXSA9IFRhYmxlLmZyb207XG5UYWJsZVsnZnJvbUFzeW5jJ10gPSBUYWJsZS5mcm9tQXN5bmM7XG5UYWJsZVsnZW1wdHknXSA9IFRhYmxlLmVtcHR5O1xuVmVjdG9yWydjcmVhdGUnXSA9IFZlY3Rvci5jcmVhdGU7XG5SZWNvcmRCYXRjaFsnZnJvbSddID0gUmVjb3JkQmF0Y2guZnJvbTtcblxudXRpbF9pbnRfLlVpbnQ2NFsnYWRkJ10gPSB1dGlsX2ludF8uVWludDY0LmFkZDtcbnV0aWxfaW50Xy5VaW50NjRbJ211bHRpcGx5J10gPSB1dGlsX2ludF8uVWludDY0Lm11bHRpcGx5O1xuXG51dGlsX2ludF8uSW50NjRbJ2FkZCddID0gdXRpbF9pbnRfLkludDY0LmFkZDtcbnV0aWxfaW50Xy5JbnQ2NFsnbXVsdGlwbHknXSA9IHV0aWxfaW50Xy5JbnQ2NC5tdWx0aXBseTtcbnV0aWxfaW50Xy5JbnQ2NFsnZnJvbVN0cmluZyddID0gdXRpbF9pbnRfLkludDY0LmZyb21TdHJpbmc7XG5cbnV0aWxfaW50Xy5JbnQxMjhbJ2FkZCddID0gdXRpbF9pbnRfLkludDEyOC5hZGQ7XG51dGlsX2ludF8uSW50MTI4WydtdWx0aXBseSddID0gdXRpbF9pbnRfLkludDEyOC5tdWx0aXBseTtcbnV0aWxfaW50Xy5JbnQxMjhbJ2Zyb21TdHJpbmcnXSA9IHV0aWxfaW50Xy5JbnQxMjguZnJvbVN0cmluZztcblxuZGF0YV8uQ2h1bmtlZERhdGFbJ2NvbXB1dGVPZmZzZXRzJ10gPSBkYXRhXy5DaHVua2VkRGF0YS5jb21wdXRlT2Zmc2V0cztcblxuKHR5cGVfLlR5cGUgYXMgYW55KVsnTk9ORSddID0gdHlwZV8uVHlwZS5OT05FO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnTnVsbCddID0gdHlwZV8uVHlwZS5OdWxsO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnSW50J10gPSB0eXBlXy5UeXBlLkludDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0Zsb2F0J10gPSB0eXBlXy5UeXBlLkZsb2F0O1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnQmluYXJ5J10gPSB0eXBlXy5UeXBlLkJpbmFyeTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1V0ZjgnXSA9IHR5cGVfLlR5cGUuVXRmODtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0Jvb2wnXSA9IHR5cGVfLlR5cGUuQm9vbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0RlY2ltYWwnXSA9IHR5cGVfLlR5cGUuRGVjaW1hbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0RhdGUnXSA9IHR5cGVfLlR5cGUuRGF0ZTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1RpbWUnXSA9IHR5cGVfLlR5cGUuVGltZTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1RpbWVzdGFtcCddID0gdHlwZV8uVHlwZS5UaW1lc3RhbXA7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydJbnRlcnZhbCddID0gdHlwZV8uVHlwZS5JbnRlcnZhbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0xpc3QnXSA9IHR5cGVfLlR5cGUuTGlzdDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1N0cnVjdCddID0gdHlwZV8uVHlwZS5TdHJ1Y3Q7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydVbmlvbiddID0gdHlwZV8uVHlwZS5Vbmlvbjtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0ZpeGVkU2l6ZUJpbmFyeSddID0gdHlwZV8uVHlwZS5GaXhlZFNpemVCaW5hcnk7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydGaXhlZFNpemVMaXN0J10gPSB0eXBlXy5UeXBlLkZpeGVkU2l6ZUxpc3Q7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydNYXAnXSA9IHR5cGVfLlR5cGUuTWFwO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnRGljdGlvbmFyeSddID0gdHlwZV8uVHlwZS5EaWN0aW9uYXJ5O1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnRGVuc2VVbmlvbiddID0gdHlwZV8uVHlwZS5EZW5zZVVuaW9uO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnU3BhcnNlVW5pb24nXSA9IHR5cGVfLlR5cGUuU3BhcnNlVW5pb247XG5cbnR5cGVfLkRhdGFUeXBlWydpc051bGwnXSA9IHR5cGVfLkRhdGFUeXBlLmlzTnVsbDtcbnR5cGVfLkRhdGFUeXBlWydpc0ludCddID0gdHlwZV8uRGF0YVR5cGUuaXNJbnQ7XG50eXBlXy5EYXRhVHlwZVsnaXNGbG9hdCddID0gdHlwZV8uRGF0YVR5cGUuaXNGbG9hdDtcbnR5cGVfLkRhdGFUeXBlWydpc0JpbmFyeSddID0gdHlwZV8uRGF0YVR5cGUuaXNCaW5hcnk7XG50eXBlXy5EYXRhVHlwZVsnaXNVdGY4J10gPSB0eXBlXy5EYXRhVHlwZS5pc1V0Zjg7XG50eXBlXy5EYXRhVHlwZVsnaXNCb29sJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0Jvb2w7XG50eXBlXy5EYXRhVHlwZVsnaXNEZWNpbWFsJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0RlY2ltYWw7XG50eXBlXy5EYXRhVHlwZVsnaXNEYXRlJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0RhdGU7XG50eXBlXy5EYXRhVHlwZVsnaXNUaW1lJ10gPSB0eXBlXy5EYXRhVHlwZS5pc1RpbWU7XG50eXBlXy5EYXRhVHlwZVsnaXNUaW1lc3RhbXAnXSA9IHR5cGVfLkRhdGFUeXBlLmlzVGltZXN0YW1wO1xudHlwZV8uRGF0YVR5cGVbJ2lzSW50ZXJ2YWwnXSA9IHR5cGVfLkRhdGFUeXBlLmlzSW50ZXJ2YWw7XG50eXBlXy5EYXRhVHlwZVsnaXNMaXN0J10gPSB0eXBlXy5EYXRhVHlwZS5pc0xpc3Q7XG50eXBlXy5EYXRhVHlwZVsnaXNTdHJ1Y3QnXSA9IHR5cGVfLkRhdGFUeXBlLmlzU3RydWN0O1xudHlwZV8uRGF0YVR5cGVbJ2lzVW5pb24nXSA9IHR5cGVfLkRhdGFUeXBlLmlzVW5pb247XG50eXBlXy5EYXRhVHlwZVsnaXNEZW5zZVVuaW9uJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0RlbnNlVW5pb247XG50eXBlXy5EYXRhVHlwZVsnaXNTcGFyc2VVbmlvbiddID0gdHlwZV8uRGF0YVR5cGUuaXNTcGFyc2VVbmlvbjtcbnR5cGVfLkRhdGFUeXBlWydpc0ZpeGVkU2l6ZUJpbmFyeSddID0gdHlwZV8uRGF0YVR5cGUuaXNGaXhlZFNpemVCaW5hcnk7XG50eXBlXy5EYXRhVHlwZVsnaXNGaXhlZFNpemVMaXN0J10gPSB0eXBlXy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUxpc3Q7XG50eXBlXy5EYXRhVHlwZVsnaXNNYXAnXSA9IHR5cGVfLkRhdGFUeXBlLmlzTWFwO1xudHlwZV8uRGF0YVR5cGVbJ2lzRGljdGlvbmFyeSddID0gdHlwZV8uRGF0YVR5cGUuaXNEaWN0aW9uYXJ5O1xuXG52ZWN0b3JfLkJvb2xWZWN0b3JbJ2Zyb20nXSA9IHZlY3Rvcl8uQm9vbFZlY3Rvci5mcm9tO1xudmVjdG9yXy5JbnRWZWN0b3JbJ2Zyb20nXSA9IHZlY3Rvcl8uSW50VmVjdG9yLmZyb207XG52ZWN0b3JfLkZsb2F0VmVjdG9yWydmcm9tJ10gPSB2ZWN0b3JfLkZsb2F0VmVjdG9yLmZyb207XG5cbnZpc2l0b3JfLlR5cGVWaXNpdG9yWyd2aXNpdFR5cGVJbmxpbmUnXSA9IHZpc2l0b3JfLlR5cGVWaXNpdG9yLnZpc2l0VHlwZUlubGluZTtcbnZpc2l0b3JfLlZlY3RvclZpc2l0b3JbJ3Zpc2l0VHlwZUlubGluZSddID0gdmlzaXRvcl8uVmVjdG9yVmlzaXRvci52aXNpdFR5cGVJbmxpbmU7Il19
#! /usr/bin/env node
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const Arrow = require("../Arrow");
const { parse } = require('json-bignum');
const optionList = [
var tslib_1 = require("tslib");
var fs = require("fs");
var Arrow = require("../Arrow");
var parse = require('json-bignum').parse;
var optionList = [
{

@@ -22,4 +23,4 @@ type: String,

];
const argv = require(`command-line-args`)(optionList, { partial: true });
const files = [...argv.file, ...(argv._unknown || [])].filter(Boolean);
var argv = require("command-line-args")(optionList, { partial: true });
var files = tslib_1.__spread(argv.file, (argv._unknown || [])).filter(Boolean);
if (!files.length) {

@@ -42,4 +43,3 @@ console.log(require('command-line-usage')([

header: 'Options',
optionList: [
...optionList,
optionList: tslib_1.__spread(optionList, [
{

@@ -49,3 +49,3 @@ name: 'help',

}
]
])
},

@@ -67,5 +67,4 @@ {

}
files.forEach((source) => {
debugger;
let table, input = fs.readFileSync(source);
files.forEach(function (source) {
var table, input = fs.readFileSync(source);
try {

@@ -75,7 +74,6 @@ table = Arrow.Table.from(input);

catch (e) {
debugger;
table = Arrow.Table.from(parse(input + ''));
}
if (argv.schema && argv.schema.length) {
table = table.select(...argv.schema);
table = table.select.apply(table, tslib_1.__spread(argv.schema));
}

@@ -85,2 +83,2 @@ table.rowsToString().pipe(process.stdout);

//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUM7SUFDekMsQ0FBQztJQUNELEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6ImJpbi9hcnJvdzJjc3YuanMiLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxuXG4vLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuLyogdHNsaW50OmRpc2FibGUgKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgQXJyb3cgZnJvbSAnLi4vQXJyb3cnO1xuXG5jb25zdCB7IHBhcnNlIH0gPSByZXF1aXJlKCdqc29uLWJpZ251bScpO1xuY29uc3Qgb3B0aW9uTGlzdCA9IFtcbiAgICB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgbmFtZTogJ3NjaGVtYScsIGFsaWFzOiAncycsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLCBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgdHlwZUxhYmVsOiAnW3VuZGVybGluZV17Y29sdW1uc30nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0Egc3BhY2UtZGVsaW1pdGVkIGxpc3Qgb2YgY29sdW1uIG5hbWVzJ1xuICAgIH0sXG4gICAge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG5hbWU6ICdmaWxlJywgYWxpYXM6ICdmJyxcbiAgICAgICAgb3B0aW9uYWw6IGZhbHNlLCBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgQXJyb3cgZmlsZSB0byByZWFkJ1xuICAgIH1cbl07XG5cbmNvbnN0IGFyZ3YgPSByZXF1aXJlKGBjb21tYW5kLWxpbmUtYXJnc2ApKG9wdGlvbkxpc3QsIHsgcGFydGlhbDogdHJ1ZSB9KTtcbmNvbnN0IGZpbGVzID0gWy4uLmFyZ3YuZmlsZSwgLi4uKGFyZ3YuX3Vua25vd24gfHwgW10pXS5maWx0ZXIoQm9vbGVhbik7XG5cbmlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgY29uc29sZS5sb2cocmVxdWlyZSgnY29tbWFuZC1saW5lLXVzYWdlJykoW1xuICAgICAgICB7XG4gICAgICAgICAgICBoZWFkZXI6ICdhcnJvdzJjc3YnLFxuICAgICAgICAgICAgY29udGVudDogJ1ByaW50IGEgQ1NWIGZyb20gYW4gQXJyb3cgZmlsZSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaGVhZGVyOiAnU3lub3BzaXMnLFxuICAgICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAgICAgICckIGFycm93MmNzdiBbdW5kZXJsaW5lXXtmaWxlLmFycm93fSBbW2JvbGRdey0tc2NoZW1hfSBjb2x1bW5fbmFtZSAuLi5dJyxcbiAgICAgICAgICAgICAgICAnJCBhcnJvdzJjc3YgW1tib2xkXXstLXNjaGVtYX0gY29sdW1uX25hbWUgLi4uXSBbW2JvbGRdey0tZmlsZX0gW3VuZGVybGluZV17ZmlsZS5hcnJvd31dJyxcbiAgICAgICAgICAgICAgICAnJCBhcnJvdzJjc3YgW2JvbGRdey1zfSBjb2x1bW5fMSBbYm9sZF17LXN9IGNvbHVtbl8yIFtbYm9sZF17LWZ9IFt1bmRlcmxpbmVde2ZpbGUuYXJyb3d9XScsXG4gICAgICAgICAgICAgICAgJyQgYXJyb3cyY3N2IFtbYm9sZF17LS1oZWxwfV0nXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcjogJ09wdGlvbnMnLFxuICAgICAgICAgICAgb3B0aW9uTGlzdDogW1xuICAgICAgICAgICAgICAgIC4uLm9wdGlvbkxpc3QsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaGVscCcsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnQgdGhpcyB1c2FnZSBndWlkZS4nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBoZWFkZXI6ICdFeGFtcGxlJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgICAgICAnJCBhcnJvdzJjc3YgLS1zY2hlbWEgZm9vIGJheiAtZiBzaW1wbGUuYXJyb3cnLFxuICAgICAgICAgICAgICAgICc+ICBmb28sICBiYXonLFxuICAgICAgICAgICAgICAgICc+ICAgIDEsICAgYWEnLFxuICAgICAgICAgICAgICAgICc+IG51bGwsIG51bGwnLFxuICAgICAgICAgICAgICAgICc+ICAgIDMsIG51bGwnLFxuICAgICAgICAgICAgICAgICc+ICAgIDQsICBiYmInLFxuICAgICAgICAgICAgICAgICc+ICAgIDUsIGNjY2MnLFxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gICAgXSkpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuZmlsZXMuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgZGVidWdnZXI7XG4gICAgbGV0IHRhYmxlOiBBcnJvdy5UYWJsZSwgaW5wdXQgPSBmcy5yZWFkRmlsZVN5bmMoc291cmNlKTtcbiAgICB0cnkge1xuICAgICAgICB0YWJsZSA9IEFycm93LlRhYmxlLmZyb20oaW5wdXQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZGVidWdnZXI7XG4gICAgICAgIHRhYmxlID0gQXJyb3cuVGFibGUuZnJvbShwYXJzZShpbnB1dCArICcnKSk7XG4gICAgfVxuICAgIGlmIChhcmd2LnNjaGVtYSAmJiBhcmd2LnNjaGVtYS5sZW5ndGgpIHtcbiAgICAgICAgdGFibGUgPSB0YWJsZS5zZWxlY3QoLi4uYXJndi5zY2hlbWEpO1xuICAgIH1cbiAgICB0YWJsZS5yb3dzVG9TdHJpbmcoKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTtcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMiLCJmaWxlIjoiYXJyb3cyY3N2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIyEgL3Vzci9iaW4vZW52IG5vZGVcblxuLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi8qIHRzbGludDpkaXNhYmxlICovXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIEFycm93IGZyb20gJy4uL0Fycm93JztcblxuY29uc3QgeyBwYXJzZSB9ID0gcmVxdWlyZSgnanNvbi1iaWdudW0nKTtcbmNvbnN0IG9wdGlvbkxpc3QgPSBbXG4gICAge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG5hbWU6ICdzY2hlbWEnLCBhbGlhczogJ3MnLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSwgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIHR5cGVMYWJlbDogJ1t1bmRlcmxpbmVde2NvbHVtbnN9JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdBIHNwYWNlLWRlbGltaXRlZCBsaXN0IG9mIGNvbHVtbiBuYW1lcydcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBuYW1lOiAnZmlsZScsIGFsaWFzOiAnZicsXG4gICAgICAgIG9wdGlvbmFsOiBmYWxzZSwgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIEFycm93IGZpbGUgdG8gcmVhZCdcbiAgICB9XG5dO1xuXG5jb25zdCBhcmd2ID0gcmVxdWlyZShgY29tbWFuZC1saW5lLWFyZ3NgKShvcHRpb25MaXN0LCB7IHBhcnRpYWw6IHRydWUgfSk7XG5jb25zdCBmaWxlcyA9IFsuLi5hcmd2LmZpbGUsIC4uLihhcmd2Ll91bmtub3duIHx8IFtdKV0uZmlsdGVyKEJvb2xlYW4pO1xuXG5pZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUubG9nKHJlcXVpcmUoJ2NvbW1hbmQtbGluZS11c2FnZScpKFtcbiAgICAgICAge1xuICAgICAgICAgICAgaGVhZGVyOiAnYXJyb3cyY3N2JyxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdQcmludCBhIENTViBmcm9tIGFuIEFycm93IGZpbGUnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcjogJ1N5bm9wc2lzJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgICAgICAnJCBhcnJvdzJjc3YgW3VuZGVybGluZV17ZmlsZS5hcnJvd30gW1tib2xkXXstLXNjaGVtYX0gY29sdW1uX25hbWUgLi4uXScsXG4gICAgICAgICAgICAgICAgJyQgYXJyb3cyY3N2IFtbYm9sZF17LS1zY2hlbWF9IGNvbHVtbl9uYW1lIC4uLl0gW1tib2xkXXstLWZpbGV9IFt1bmRlcmxpbmVde2ZpbGUuYXJyb3d9XScsXG4gICAgICAgICAgICAgICAgJyQgYXJyb3cyY3N2IFtib2xkXXstc30gY29sdW1uXzEgW2JvbGRdey1zfSBjb2x1bW5fMiBbW2JvbGRdey1mfSBbdW5kZXJsaW5lXXtmaWxlLmFycm93fV0nLFxuICAgICAgICAgICAgICAgICckIGFycm93MmNzdiBbW2JvbGRdey0taGVscH1dJ1xuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBoZWFkZXI6ICdPcHRpb25zJyxcbiAgICAgICAgICAgIG9wdGlvbkxpc3Q6IFtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25MaXN0LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2hlbHAnLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1ByaW50IHRoaXMgdXNhZ2UgZ3VpZGUuJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaGVhZGVyOiAnRXhhbXBsZScsXG4gICAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICAgICAgJyQgYXJyb3cyY3N2IC0tc2NoZW1hIGZvbyBiYXogLWYgc2ltcGxlLmFycm93JyxcbiAgICAgICAgICAgICAgICAnPiAgZm9vLCAgYmF6JyxcbiAgICAgICAgICAgICAgICAnPiAgICAxLCAgIGFhJyxcbiAgICAgICAgICAgICAgICAnPiBudWxsLCBudWxsJyxcbiAgICAgICAgICAgICAgICAnPiAgICAzLCBudWxsJyxcbiAgICAgICAgICAgICAgICAnPiAgICA0LCAgYmJiJyxcbiAgICAgICAgICAgICAgICAnPiAgICA1LCBjY2NjJyxcbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF0pKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmZpbGVzLmZvckVhY2goKHNvdXJjZSkgPT4ge1xuICAgIGxldCB0YWJsZTogQXJyb3cuVGFibGUsIGlucHV0ID0gZnMucmVhZEZpbGVTeW5jKHNvdXJjZSk7XG4gICAgdHJ5IHtcbiAgICAgICAgdGFibGUgPSBBcnJvdy5UYWJsZS5mcm9tKGlucHV0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRhYmxlID0gQXJyb3cuVGFibGUuZnJvbShwYXJzZShpbnB1dCArICcnKSk7XG4gICAgfVxuICAgIGlmIChhcmd2LnNjaGVtYSAmJiBhcmd2LnNjaGVtYS5sZW5ndGgpIHtcbiAgICAgICAgdGFibGUgPSB0YWJsZS5zZWxlY3QoLi4uYXJndi5zY2hlbWEpO1xuICAgIH1cbiAgICB0YWJsZS5yb3dzVG9TdHJpbmcoKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTtcbn0pO1xuIl19

@@ -74,7 +74,8 @@ import { VectorLike, Vector } from './vector';

protected _dictionary: Vector<T>;
protected _indicies: Data<Int<any>>;
readonly indicies: Data<Int<any, Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array>>;
protected _indices: Data<Int<any>>;
readonly indices: Data<Int<any, Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array>>;
readonly dictionary: Vector<T>;
constructor(type: Dictionary<T>, dictionary: Vector<T>, indicies: Data<Int<any>>);
constructor(type: Dictionary<T>, dictionary: Vector<T>, indices: Data<Int<any>>);
readonly nullCount: number;
readonly nullBitmap: Uint8Array | undefined;
clone<R extends Dictionary<T>>(type: R, length?: number, offset?: number): any;

@@ -81,0 +82,0 @@ protected sliceInternal(clone: this, _offset: number, _length: number): this;

@@ -102,18 +102,18 @@ "use strict";

class DictionaryData extends BaseData {
constructor(type, dictionary, indicies) {
super(type, indicies.length, indicies._nullCount);
this._indicies = indicies;
constructor(type, dictionary, indices) {
super(type, indices.length, indices.offset, indices._nullCount);
this._indices = indices;
this._dictionary = dictionary;
this.length = this._indicies.length;
}
get indicies() { return this._indicies; }
get indices() { return this._indices; }
get dictionary() { return this._dictionary; }
get nullCount() { return this._indicies.nullCount; }
get nullCount() { return this._indices.nullCount; }
get nullBitmap() { return this._indices.nullBitmap; }
clone(type, length = this.length, offset = this.offset) {
const data = this._dictionary.data.clone(type.dictionary);
return new DictionaryData(this.type, this._dictionary.clone(data), this._indicies.slice(offset - this.offset, length));
return new DictionaryData(this.type, this._dictionary.clone(data), this._indices.slice(offset - this.offset, length));
}
sliceInternal(clone, _offset, _length) {
clone.length = clone._indicies.length;
clone._nullCount = clone._indicies._nullCount;
clone.length = clone._indices.length;
clone._nullCount = clone._indices._nullCount;
return clone;

@@ -251,2 +251,2 @@ }

//# sourceMappingURL=data:application/json;charset=utf8;base64,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bkYsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxLQUFLLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQztRQUNsQyxLQUFLLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUQsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBcUIsWUFBeUI7UUFDL0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUM7WUFDckcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDeEIsQ0FBQztDQUNKO0FBL0RELGtDQStEQyIsImZpbGUiOiJkYXRhLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7IHBvcGNudF9iaXRfcmFuZ2UgfSBmcm9tICcuL3V0aWwvYml0JztcbmltcG9ydCB7IFZlY3Rvckxpa2UsIFZlY3RvciB9IGZyb20gJy4vdmVjdG9yJztcbmltcG9ydCB7IFZlY3RvclR5cGUsIFR5cGVkQXJyYXksIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgRGljdGlvbmFyeSB9IGZyb20gJy4vdHlwZSc7XG5pbXBvcnQgeyBJbnQsIEJvb2wsIEZsYXRMaXN0VHlwZSwgTGlzdCwgRml4ZWRTaXplTGlzdCwgU3RydWN0LCBNYXBfIH0gZnJvbSAnLi90eXBlJztcbmltcG9ydCB7IERhdGFUeXBlLCBGbGF0VHlwZSwgTGlzdFR5cGUsIE5lc3RlZFR5cGUsIFNpbmdsZU5lc3RlZFR5cGUsIERlbnNlVW5pb24sIFNwYXJzZVVuaW9uIH0gZnJvbSAnLi90eXBlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvVHlwZWRBcnJheTxUIGV4dGVuZHMgVHlwZWRBcnJheT4oQXJyYXlUeXBlOiBUeXBlZEFycmF5Q29uc3RydWN0b3I8VD4sIHZhbHVlcz86IFQgfCBBcnJheUxpa2U8bnVtYmVyPiB8IEl0ZXJhYmxlPG51bWJlcj4gfCBudWxsKTogVCB7XG4gICAgaWYgKCFBcnJheVR5cGUgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlcykpIHsgcmV0dXJuIHZhbHVlczsgfVxuICAgIHJldHVybiB2YWx1ZXMgaW5zdGFuY2VvZiBBcnJheVR5cGUgPyB2YWx1ZXNcbiAgICAgICAgIDogIXZhbHVlcyB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlcykgPyBBcnJheVR5cGUuZnJvbSh2YWx1ZXMgfHwgW10pXG4gICAgICAgICA6IG5ldyBBcnJheVR5cGUodmFsdWVzLmJ1ZmZlciwgdmFsdWVzLmJ5dGVPZmZzZXQsIHZhbHVlcy5ieXRlTGVuZ3RoIC8gQXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5UKTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0YTxUIGV4dGVuZHMgRGF0YVR5cGU+ID0gRGF0YVR5cGVzPFQ+W1RbJ1RUeXBlJ11dICYgQmFzZURhdGE8VD47XG5leHBvcnQgaW50ZXJmYWNlIERhdGFUeXBlczxUIGV4dGVuZHMgRGF0YVR5cGU+IHtcbi8qICAgICAgICAgICAgICAgIFtUeXBlLk5PTkVdKi8gIDA6IEJhc2VEYXRhPFQ+O1xuLyogICAgICAgICAgICAgICAgW1R5cGUuTnVsbF0qLyAgMTogRmxhdERhdGE8VD47XG4vKiAgICAgICAgICAgICAgICAgW1R5cGUuSW50XSovICAyOiBGbGF0RGF0YTxUPjtcbi8qICAgICAgICAgICAgICAgW1R5cGUuRmxvYXRdKi8gIDM6IEZsYXREYXRhPFQ+O1xuLyogICAgICAgICAgICAgIFtUeXBlLkJpbmFyeV0qLyAgNDogRmxhdExpc3REYXRhPFQ+O1xuLyogICAgICAgICAgICAgICAgW1R5cGUuVXRmOF0qLyAgNTogRmxhdExpc3REYXRhPFQ+O1xuLyogICAgICAgICAgICAgICAgW1R5cGUuQm9vbF0qLyAgNjogQm9vbERhdGE7XG4vKiAgICAgICAgICAgICBbVHlwZS5EZWNpbWFsXSovICA3OiBGbGF0RGF0YTxUPjtcbi8qICAgICAgICAgICAgICAgIFtUeXBlLkRhdGVdKi8gIDg6IEZsYXREYXRhPFQ+O1xuLyogICAgICAgICAgICAgICAgW1R5cGUuVGltZV0qLyAgOTogRmxhdERhdGE8VD47XG4vKiAgICAgICAgICAgW1R5cGUuVGltZXN0YW1wXSovIDEwOiBGbGF0RGF0YTxUPjtcbi8qICAgICAgICAgICAgW1R5cGUuSW50ZXJ2YWxdKi8gMTE6IEZsYXREYXRhPFQ+O1xuLyogICAgICAgICAgICAgICAgW1R5cGUuTGlzdF0qLyAxMjogTGlzdERhdGE8TGlzdDxUPj47XG4vKiAgICAgICAgICAgICAgW1R5cGUuU3RydWN0XSovIDEzOiBOZXN0ZWREYXRhPFN0cnVjdD47XG4vKiAgICAgICAgICAgICAgIFtUeXBlLlVuaW9uXSovIDE0OiBVbmlvbkRhdGE7XG4vKiAgICAgW1R5cGUuRml4ZWRTaXplQmluYXJ5XSovIDE1OiBGbGF0RGF0YTxUPjtcbi8qICAgICAgIFtUeXBlLkZpeGVkU2l6ZUxpc3RdKi8gMTY6IFNpbmdsZU5lc3RlZERhdGE8Rml4ZWRTaXplTGlzdDxUPj47XG4vKiAgICAgICAgICAgICAgICAgW1R5cGUuTWFwXSovIDE3OiBOZXN0ZWREYXRhPE1hcF8+O1xuLyogIFtUeXBlLkRlbnNlVW5pb25dKi8gRGVuc2VVbmlvbjogRGVuc2VVbmlvbkRhdGE7XG4vKltUeXBlLlNwYXJzZVVuaW9uXSovIFNwYXJzZVVuaW9uOiBTcGFyc2VVbmlvbkRhdGE7XG4vKlsgIFR5cGUuRGljdGlvbmFyeV0qLyBEaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5RGF0YTxhbnk+O1xufVxuLy8gV2hlbiBzbGljaW5nLCB3ZSBkbyBub3Qga25vdyB0aGUgbnVsbCBjb3VudCBvZiB0aGUgc2xpY2VkIHJhbmdlIHdpdGhvdXRcbi8vIGRvaW5nIHNvbWUgY29tcHV0YXRpb24uIFRvIGF2b2lkIGRvaW5nIHRoaXMgZWFnZXJseSwgd2Ugc2V0IHRoZSBudWxsIGNvdW50XG4vLyB0byAtMSAoYW55IG5lZ2F0aXZlIG51bWJlciB3aWxsIGRvKS4gV2hlbiBBcnJheTo6bnVsbF9jb3VudCBpcyBjYWxsZWQgdGhlXG4vLyBmaXJzdCB0aW1lLCB0aGUgbnVsbCBjb3VudCB3aWxsIGJlIGNvbXB1dGVkLiBTZWUgQVJST1ctMzNcbmV4cG9ydCB0eXBlIGtVbmtub3duTnVsbENvdW50ID0gLTE7XG5leHBvcnQgY29uc3Qga1Vua25vd25OdWxsQ291bnQgPSAtMTtcblxuZXhwb3J0IGNsYXNzIEJhc2VEYXRhPFQgZXh0ZW5kcyBEYXRhVHlwZSA9IERhdGFUeXBlPiBpbXBsZW1lbnRzIFZlY3Rvckxpa2Uge1xuICAgIHB1YmxpYyB0eXBlOiBUO1xuICAgIHB1YmxpYyBsZW5ndGg6IG51bWJlcjtcbiAgICBwdWJsaWMgb2Zmc2V0OiBudW1iZXI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHB1YmxpYyBjaGlsZERhdGE6IERhdGE8YW55PltdO1xuICAgIHByb3RlY3RlZCBfbnVsbENvdW50OiBudW1iZXIgfCBrVW5rbm93bk51bGxDb3VudDtcbiAgICBwcm90ZWN0ZWQgLyogIFtWZWN0b3JUeXBlLk9GRlNFVF06Ki8gMD86IEludDMyQXJyYXk7XG4gICAgcHJvdGVjdGVkIC8qICAgIFtWZWN0b3JUeXBlLkRBVEFdOiovIDE/OiBUWydUQXJyYXknXTtcbiAgICBwcm90ZWN0ZWQgLypbVmVjdG9yVHlwZS5WQUxJRElUWV06Ki8gMj86IFVpbnQ4QXJyYXk7XG4gICAgcHJvdGVjdGVkIC8qICAgIFtWZWN0b3JUeXBlLlRZUEVdOiovIDM/OiBJbnQ4QXJyYXk7XG4gICAgY29uc3RydWN0b3IodHlwZTogVCwgbGVuZ3RoOiBudW1iZXIsIG9mZnNldD86IG51bWJlciwgbnVsbENvdW50PzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gTWF0aC5mbG9vcihNYXRoLm1heChsZW5ndGggfHwgMCwgMCkpO1xuICAgICAgICB0aGlzLm9mZnNldCA9IE1hdGguZmxvb3IoTWF0aC5tYXgob2Zmc2V0IHx8IDAsIDApKTtcbiAgICAgICAgdGhpcy5fbnVsbENvdW50ID0gTWF0aC5mbG9vcihNYXRoLm1heChudWxsQ291bnQgfHwgMCwgLTEpKTtcbiAgICB9XG4gICAgcHVibGljIGdldCB0eXBlSWQoKSB7IHJldHVybiB0aGlzLnR5cGUuVFR5cGU7IH1cbiAgICBwdWJsaWMgZ2V0IG51bGxCaXRtYXAoKSB7IHJldHVybiB0aGlzW1ZlY3RvclR5cGUuVkFMSURJVFldOyB9XG4gICAgcHVibGljIGdldCBudWxsQ291bnQoKSB7XG4gICAgICAgIGxldCBudWxsQ291bnQgPSB0aGlzLl9udWxsQ291bnQ7XG4gICAgICAgIGxldCBudWxsQml0bWFwOiBVaW50OEFycmF5IHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAobnVsbENvdW50ID09PSAtMSAmJiAobnVsbEJpdG1hcCA9IHRoaXNbVmVjdG9yVHlwZS5WQUxJRElUWV0pKSB7XG4gICAgICAgICAgICB0aGlzLl9udWxsQ291bnQgPSBudWxsQ291bnQgPSB0aGlzLmxlbmd0aCAtIHBvcGNudF9iaXRfcmFuZ2UobnVsbEJpdG1hcCwgdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICsgdGhpcy5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsQ291bnQ7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZTxSIGV4dGVuZHMgVD4odHlwZTogUiwgbGVuZ3RoID0gdGhpcy5sZW5ndGgsIG9mZnNldCA9IHRoaXMub2Zmc2V0LCBudWxsQ291bnQgPSB0aGlzLl9udWxsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYXNlRGF0YSh0eXBlLCBsZW5ndGgsIG9mZnNldCwgbnVsbENvdW50KTtcbiAgICB9XG4gICAgcHVibGljIHNsaWNlKG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gbGVuZ3RoIDw9IDAgPyB0aGlzIDogdGhpcy5zbGljZUludGVybmFsKHRoaXMuY2xvbmUoXG4gICAgICAgICAgICB0aGlzLnR5cGUsIGxlbmd0aCwgdGhpcy5vZmZzZXQgKyBvZmZzZXQsICsodGhpcy5fbnVsbENvdW50ID09PSAwKSAtIDFcbiAgICAgICAgKSBhcyBhbnksIG9mZnNldCwgbGVuZ3RoKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNsaWNlSW50ZXJuYWwoY2xvbmU6IHRoaXMsIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgICAgICBsZXQgYXJyOiBhbnk7XG4gICAgICAgIC8vIElmIHR5cGVJZHMgZXhpc3QsIHNsaWNlIHRoZSB0eXBlSWRzIGJ1ZmZlclxuICAgICAgICAoYXJyID0gdGhpc1tWZWN0b3JUeXBlLlRZUEVdKSAmJiAoY2xvbmVbVmVjdG9yVHlwZS5UWVBFXSA9IHRoaXMuc2xpY2VEYXRhKGFyciwgb2Zmc2V0LCBsZW5ndGgpKTtcbiAgICAgICAgLy8gSWYgb2Zmc2V0cyBleGlzdCwgb25seSBzbGljZSB0aGUgb2Zmc2V0cyBidWZmZXJcbiAgICAgICAgKGFyciA9IHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdKSAmJiAoY2xvbmVbVmVjdG9yVHlwZS5PRkZTRVRdID0gdGhpcy5zbGljZU9mZnNldHMoYXJyLCBvZmZzZXQsIGxlbmd0aCkpIHx8XG4gICAgICAgICAgICAvLyBPdGhlcndpc2UgaWYgbm8gb2Zmc2V0cywgc2xpY2UgdGhlIGRhdGEgYnVmZmVyXG4gICAgICAgICAgICAoYXJyID0gdGhpc1tWZWN0b3JUeXBlLkRBVEFdKSAmJiAoY2xvbmVbVmVjdG9yVHlwZS5EQVRBXSA9IHRoaXMuc2xpY2VEYXRhKGFyciwgb2Zmc2V0LCBsZW5ndGgpKTtcbiAgICAgICAgcmV0dXJuIGNsb25lO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2xpY2VEYXRhKGRhdGE6IFRbJ1RBcnJheSddICYgVHlwZWRBcnJheSwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBkYXRhLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNsaWNlT2Zmc2V0cyh2YWx1ZU9mZnNldHM6IEludDMyQXJyYXksIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdmFsdWVPZmZzZXRzLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoICsgMSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmxhdERhdGE8VCBleHRlbmRzIEZsYXRUeXBlPiBleHRlbmRzIEJhc2VEYXRhPFQ+IHtcbiAgICBwdWJsaWMgLyogICAgW1ZlY3RvclR5cGUuREFUQV06Ki8gMTogVFsnVEFycmF5J107XG4gICAgcHVibGljIC8qW1ZlY3RvclR5cGUuVkFMSURJVFldOiovIDI6IFVpbnQ4QXJyYXk7XG4gICAgcHVibGljIGdldCB2YWx1ZXMoKSB7IHJldHVybiB0aGlzW1ZlY3RvclR5cGUuREFUQV07IH1cbiAgICBjb25zdHJ1Y3Rvcih0eXBlOiBULCBsZW5ndGg6IG51bWJlciwgbnVsbEJpdG1hcDogVWludDhBcnJheSB8IG51bGwgfCB1bmRlZmluZWQsIGRhdGE6IEl0ZXJhYmxlPG51bWJlcj4sIG9mZnNldD86IG51bWJlciwgbnVsbENvdW50PzogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKHR5cGUsIGxlbmd0aCwgb2Zmc2V0LCBudWxsQ291bnQpO1xuICAgICAgICB0aGlzW1ZlY3RvclR5cGUuREFUQV0gPSB0b1R5cGVkQXJyYXkodGhpcy5BcnJheVR5cGUsIGRhdGEpO1xuICAgICAgICB0aGlzW1ZlY3RvclR5cGUuVkFMSURJVFldID0gdG9UeXBlZEFycmF5KFVpbnQ4QXJyYXksIG51bGxCaXRtYXApO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IEFycmF5VHlwZSgpOiBUWydBcnJheVR5cGUnXSB7IHJldHVybiB0aGlzLnR5cGUuQXJyYXlUeXBlOyB9XG4gICAgcHVibGljIGNsb25lPFIgZXh0ZW5kcyBUPih0eXBlOiBSLCBsZW5ndGggPSB0aGlzLmxlbmd0aCwgb2Zmc2V0ID0gdGhpcy5vZmZzZXQsIG51bGxDb3VudCA9IHRoaXMuX251bGxDb3VudCkge1xuICAgICAgICByZXR1cm4gbmV3ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkodHlwZSwgbGVuZ3RoLCB0aGlzW1ZlY3RvclR5cGUuVkFMSURJVFldLCB0aGlzW1ZlY3RvclR5cGUuREFUQV0sIG9mZnNldCwgbnVsbENvdW50KSBhcyBGbGF0RGF0YTxSPjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb29sRGF0YSBleHRlbmRzIEZsYXREYXRhPEJvb2w+IHtcbiAgICBwcm90ZWN0ZWQgc2xpY2VEYXRhKGRhdGE6IFVpbnQ4QXJyYXkpIHsgcmV0dXJuIGRhdGE7IH1cbn1cblxuZXhwb3J0IGNsYXNzIEZsYXRMaXN0RGF0YTxUIGV4dGVuZHMgRmxhdExpc3RUeXBlPiBleHRlbmRzIEZsYXREYXRhPFQ+IHtcbiAgICBwdWJsaWMgLyogIFtWZWN0b3JUeXBlLk9GRlNFVF06Ki8gMDogSW50MzJBcnJheTtcbiAgICBwdWJsaWMgLyogICAgW1ZlY3RvclR5cGUuREFUQV06Ki8gMTogVFsnVEFycmF5J107XG4gICAgcHVibGljIC8qW1ZlY3RvclR5cGUuVkFMSURJVFldOiovIDI6IFVpbnQ4QXJyYXk7XG4gICAgcHVibGljIGdldCB2YWx1ZXMoKSB7IHJldHVybiB0aGlzW1ZlY3RvclR5cGUuREFUQV07IH1cbiAgICBwdWJsaWMgZ2V0IHZhbHVlT2Zmc2V0cygpIHsgcmV0dXJuIHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdOyB9XG4gICAgY29uc3RydWN0b3IodHlwZTogVCwgbGVuZ3RoOiBudW1iZXIsIG51bGxCaXRtYXA6IFVpbnQ4QXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkLCB2YWx1ZU9mZnNldHM6IEl0ZXJhYmxlPG51bWJlcj4sIGRhdGE6IFRbJ1RBcnJheSddLCBvZmZzZXQ/OiBudW1iZXIsIG51bGxDb3VudD86IG51bWJlcikge1xuICAgICAgICBzdXBlcih0eXBlLCBsZW5ndGgsIG51bGxCaXRtYXAsIGRhdGEsIG9mZnNldCwgbnVsbENvdW50KTtcbiAgICAgICAgdGhpc1tWZWN0b3JUeXBlLk9GRlNFVF0gPSB0b1R5cGVkQXJyYXkoSW50MzJBcnJheSwgdmFsdWVPZmZzZXRzKTtcbiAgICB9XG4gICAgcHVibGljIGNsb25lPFIgZXh0ZW5kcyBUPih0eXBlOiBSLCBsZW5ndGggPSB0aGlzLmxlbmd0aCwgb2Zmc2V0ID0gdGhpcy5vZmZzZXQsIG51bGxDb3VudCA9IHRoaXMuX251bGxDb3VudCkge1xuICAgICAgICByZXR1cm4gbmV3IEZsYXRMaXN0RGF0YSh0eXBlLCBsZW5ndGgsIHRoaXNbVmVjdG9yVHlwZS5WQUxJRElUWV0sIHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdLCB0aGlzW1ZlY3RvclR5cGUuREFUQV0sIG9mZnNldCwgbnVsbENvdW50KSBhcyBGbGF0TGlzdERhdGE8Uj47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGljdGlvbmFyeURhdGE8VCBleHRlbmRzIERhdGFUeXBlPiBleHRlbmRzIEJhc2VEYXRhPERpY3Rpb25hcnk8VD4+IHtcbiAgICBwcm90ZWN0ZWQgX2RpY3Rpb25hcnk6IFZlY3RvcjxUPjtcbiAgICBwcm90ZWN0ZWQgX2luZGljaWVzOiBEYXRhPEludDxhbnk+PjtcbiAgICBwdWJsaWMgZ2V0IGluZGljaWVzKCkgeyByZXR1cm4gdGhpcy5faW5kaWNpZXM7IH1cbiAgICBwdWJsaWMgZ2V0IGRpY3Rpb25hcnkoKSB7IHJldHVybiB0aGlzLl9kaWN0aW9uYXJ5OyB9XG4gICAgY29uc3RydWN0b3IodHlwZTogRGljdGlvbmFyeTxUPiwgZGljdGlvbmFyeTogVmVjdG9yPFQ+LCBpbmRpY2llczogRGF0YTxJbnQ8YW55Pj4pIHtcbiAgICAgICAgc3VwZXIodHlwZSwgaW5kaWNpZXMubGVuZ3RoLCAoaW5kaWNpZXMgYXMgYW55KS5fbnVsbENvdW50KTtcbiAgICAgICAgdGhpcy5faW5kaWNpZXMgPSBpbmRpY2llcztcbiAgICAgICAgdGhpcy5fZGljdGlvbmFyeSA9IGRpY3Rpb25hcnk7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gdGhpcy5faW5kaWNpZXMubGVuZ3RoO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IG51bGxDb3VudCgpIHsgcmV0dXJuIHRoaXMuX2luZGljaWVzLm51bGxDb3VudDsgfVxuICAgIHB1YmxpYyBjbG9uZTxSIGV4dGVuZHMgRGljdGlvbmFyeTxUPj4odHlwZTogUiwgbGVuZ3RoID0gdGhpcy5sZW5ndGgsIG9mZnNldCA9IHRoaXMub2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kaWN0aW9uYXJ5LmRhdGEuY2xvbmUodHlwZS5kaWN0aW9uYXJ5IGFzIGFueSk7XG4gICAgICAgIHJldHVybiBuZXcgRGljdGlvbmFyeURhdGE8Uj4oXG4gICAgICAgICAgICB0aGlzLnR5cGUgYXMgYW55LFxuICAgICAgICAgICAgdGhpcy5fZGljdGlvbmFyeS5jbG9uZShkYXRhKSBhcyBhbnksXG4gICAgICAgICAgICB0aGlzLl9pbmRpY2llcy5zbGljZShvZmZzZXQgLSB0aGlzLm9mZnNldCwgbGVuZ3RoKVxuICAgICAgICApIGFzIGFueTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNsaWNlSW50ZXJuYWwoY2xvbmU6IHRoaXMsIF9vZmZzZXQ6IG51bWJlciwgX2xlbmd0aDogbnVtYmVyKSB7XG4gICAgICAgIGNsb25lLmxlbmd0aCA9IGNsb25lLl9pbmRpY2llcy5sZW5ndGg7XG4gICAgICAgIGNsb25lLl9udWxsQ291bnQgPSAoY2xvbmUuX2luZGljaWVzIGFzIGFueSkuX251bGxDb3VudDtcbiAgICAgICAgcmV0dXJuIGNsb25lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5lc3RlZERhdGE8VCBleHRlbmRzIE5lc3RlZFR5cGUgPSBOZXN0ZWRUeXBlPiBleHRlbmRzIEJhc2VEYXRhPFQ+IHtcbiAgICBwdWJsaWMgLypbVmVjdG9yVHlwZS5WQUxJRElUWV06Ki8gMjogVWludDhBcnJheTtcbiAgICBjb25zdHJ1Y3Rvcih0eXBlOiBULCBsZW5ndGg6IG51bWJlciwgbnVsbEJpdG1hcDogVWludDhBcnJheSB8IG51bGwgfCB1bmRlZmluZWQsIGNoaWxkRGF0YTogRGF0YTxhbnk+W10sIG9mZnNldD86IG51bWJlciwgbnVsbENvdW50PzogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKHR5cGUsIGxlbmd0aCwgb2Zmc2V0LCBudWxsQ291bnQpO1xuICAgICAgICB0aGlzLmNoaWxkRGF0YSA9IGNoaWxkRGF0YTtcbiAgICAgICAgdGhpc1tWZWN0b3JUeXBlLlZBTElESVRZXSA9IHRvVHlwZWRBcnJheShVaW50OEFycmF5LCBudWxsQml0bWFwKTtcbiAgICB9XG4gICAgcHVibGljIGNsb25lPFIgZXh0ZW5kcyBUPih0eXBlOiBSLCBsZW5ndGggPSB0aGlzLmxlbmd0aCwgb2Zmc2V0ID0gdGhpcy5vZmZzZXQsIG51bGxDb3VudCA9IHRoaXMuX251bGxDb3VudCkge1xuICAgICAgICByZXR1cm4gbmV3IE5lc3RlZERhdGE8Uj4odHlwZSwgbGVuZ3RoLCB0aGlzW1ZlY3RvclR5cGUuVkFMSURJVFldLCB0aGlzLmNoaWxkRGF0YSwgb2Zmc2V0LCBudWxsQ291bnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2xpY2VJbnRlcm5hbChjbG9uZTogdGhpcywgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKSB7XG4gICAgICAgIGlmICghdGhpc1tWZWN0b3JUeXBlLk9GRlNFVF0pIHtcbiAgICAgICAgICAgIGNsb25lLmNoaWxkRGF0YSA9IHRoaXMuY2hpbGREYXRhLm1hcCgoY2hpbGQpID0+IGNoaWxkLnNsaWNlKG9mZnNldCwgbGVuZ3RoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1cGVyLnNsaWNlSW50ZXJuYWwoY2xvbmUsIG9mZnNldCwgbGVuZ3RoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTaW5nbGVOZXN0ZWREYXRhPFQgZXh0ZW5kcyBTaW5nbGVOZXN0ZWRUeXBlPiBleHRlbmRzIE5lc3RlZERhdGE8VD4ge1xuICAgIHByb3RlY3RlZCBfdmFsdWVzRGF0YTogRGF0YTxUPjtcbiAgICBwdWJsaWMgZ2V0IHZhbHVlcygpIHsgcmV0dXJuIHRoaXMuX3ZhbHVlc0RhdGE7IH1cbiAgICBjb25zdHJ1Y3Rvcih0eXBlOiBULCBsZW5ndGg6IG51bWJlciwgbnVsbEJpdG1hcDogVWludDhBcnJheSB8IG51bGwgfCB1bmRlZmluZWQsIHZhbHVlQ2hpbGREYXRhOiBEYXRhPFQ+LCBvZmZzZXQ/OiBudW1iZXIsIG51bGxDb3VudD86IG51bWJlcikge1xuICAgICAgICBzdXBlcih0eXBlLCBsZW5ndGgsIG51bGxCaXRtYXAsIFt2YWx1ZUNoaWxkRGF0YV0sIG9mZnNldCwgbnVsbENvdW50KTtcbiAgICAgICAgdGhpcy5fdmFsdWVzRGF0YSA9IHZhbHVlQ2hpbGREYXRhO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3REYXRhPFQgZXh0ZW5kcyBMaXN0VHlwZT4gZXh0ZW5kcyBTaW5nbGVOZXN0ZWREYXRhPFQ+IHtcbiAgICBwdWJsaWMgLyogIFtWZWN0b3JUeXBlLk9GRlNFVF06Ki8gMDogSW50MzJBcnJheTtcbiAgICBwdWJsaWMgLypbVmVjdG9yVHlwZS5WQUxJRElUWV06Ki8gMjogVWludDhBcnJheTtcbiAgICBwdWJsaWMgZ2V0IHZhbHVlT2Zmc2V0cygpIHsgcmV0dXJuIHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdOyB9XG4gICAgY29uc3RydWN0b3IodHlwZTogVCwgbGVuZ3RoOiBudW1iZXIsIG51bGxCaXRtYXA6IFVpbnQ4QXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkLCB2YWx1ZU9mZnNldHM6IEl0ZXJhYmxlPG51bWJlcj4sIHZhbHVlQ2hpbGREYXRhOiBEYXRhPFQ+LCBvZmZzZXQ/OiBudW1iZXIsIG51bGxDb3VudD86IG51bWJlcikge1xuICAgICAgICBzdXBlcih0eXBlLCBsZW5ndGgsIG51bGxCaXRtYXAsIHZhbHVlQ2hpbGREYXRhLCBvZmZzZXQsIG51bGxDb3VudCk7XG4gICAgICAgIHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdID0gdG9UeXBlZEFycmF5KEludDMyQXJyYXksIHZhbHVlT2Zmc2V0cyk7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZTxSIGV4dGVuZHMgVD4odHlwZTogUiwgbGVuZ3RoID0gdGhpcy5sZW5ndGgsIG9mZnNldCA9IHRoaXMub2Zmc2V0LCBudWxsQ291bnQgPSB0aGlzLl9udWxsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaXN0RGF0YTxSPih0eXBlLCBsZW5ndGgsIHRoaXNbVmVjdG9yVHlwZS5WQUxJRElUWV0sIHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdLCB0aGlzLl92YWx1ZXNEYXRhIGFzIGFueSwgb2Zmc2V0LCBudWxsQ291bnQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuaW9uRGF0YTxUIGV4dGVuZHMgKERlbnNlVW5pb24gfCBTcGFyc2VVbmlvbikgPSBhbnk+IGV4dGVuZHMgTmVzdGVkRGF0YTxUPiB7XG4gICAgcHVibGljIC8qICAgIFtWZWN0b3JUeXBlLlRZUEVdOiovIDM6IFRbJ1RBcnJheSddO1xuICAgIHB1YmxpYyBnZXQgdHlwZUlkcygpIHsgcmV0dXJuIHRoaXNbVmVjdG9yVHlwZS5UWVBFXTsgfVxuICAgIGNvbnN0cnVjdG9yKHR5cGU6IFQsIGxlbmd0aDogbnVtYmVyLCBudWxsQml0bWFwOiBVaW50OEFycmF5IHwgbnVsbCB8IHVuZGVmaW5lZCwgdHlwZUlkczogSXRlcmFibGU8bnVtYmVyPiwgY2hpbGREYXRhOiBEYXRhPGFueT5bXSwgb2Zmc2V0PzogbnVtYmVyLCBudWxsQ291bnQ/OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIodHlwZSwgbGVuZ3RoLCBudWxsQml0bWFwLCBjaGlsZERhdGEsIG9mZnNldCwgbnVsbENvdW50KTtcbiAgICAgICAgdGhpc1tWZWN0b3JUeXBlLlRZUEVdID0gdG9UeXBlZEFycmF5KEludDhBcnJheSwgdHlwZUlkcyk7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZTxSIGV4dGVuZHMgVD4odHlwZTogUiwgbGVuZ3RoID0gdGhpcy5sZW5ndGgsIG9mZnNldCA9IHRoaXMub2Zmc2V0LCBudWxsQ291bnQgPSB0aGlzLl9udWxsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVbmlvbkRhdGE8Uj4odHlwZSwgbGVuZ3RoLCB0aGlzW1ZlY3RvclR5cGUuVkFMSURJVFldLCB0aGlzW1ZlY3RvclR5cGUuVFlQRV0sIHRoaXMuY2hpbGREYXRhLCBvZmZzZXQsIG51bGxDb3VudCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3BhcnNlVW5pb25EYXRhIGV4dGVuZHMgVW5pb25EYXRhPFNwYXJzZVVuaW9uPiB7XG4gICAgY29uc3RydWN0b3IodHlwZTogU3BhcnNlVW5pb24sIGxlbmd0aDogbnVtYmVyLCBudWxsQml0bWFwOiBVaW50OEFycmF5IHwgbnVsbCB8IHVuZGVmaW5lZCwgdHlwZUlkczogSXRlcmFibGU8bnVtYmVyPiwgY2hpbGREYXRhOiBEYXRhPGFueT5bXSwgb2Zmc2V0PzogbnVtYmVyLCBudWxsQ291bnQ/OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIodHlwZSwgbGVuZ3RoLCBudWxsQml0bWFwLCB0eXBlSWRzLCBjaGlsZERhdGEsIG9mZnNldCwgbnVsbENvdW50KTtcbiAgICB9XG4gICAgcHVibGljIGNsb25lPFIgZXh0ZW5kcyBTcGFyc2VVbmlvbj4odHlwZTogUiwgbGVuZ3RoID0gdGhpcy5sZW5ndGgsIG9mZnNldCA9IHRoaXMub2Zmc2V0LCBudWxsQ291bnQgPSB0aGlzLl9udWxsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTcGFyc2VVbmlvbkRhdGEoXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbGVuZ3RoLFxuICAgICAgICAgICAgdGhpc1tWZWN0b3JUeXBlLlZBTElESVRZXSxcbiAgICAgICAgICAgIHRoaXNbVmVjdG9yVHlwZS5UWVBFXSxcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLFxuICAgICAgICAgICAgb2Zmc2V0LCBudWxsQ291bnRcbiAgICAgICAgKSBhcyBhbnkgYXMgVW5pb25EYXRhPFI+O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlbnNlVW5pb25EYXRhIGV4dGVuZHMgVW5pb25EYXRhPERlbnNlVW5pb24+IHtcbiAgICBwdWJsaWMgLyogIFtWZWN0b3JUeXBlLk9GRlNFVF06Ki8gMDogSW50MzJBcnJheTtcbiAgICBwdWJsaWMgZ2V0IHZhbHVlT2Zmc2V0cygpIHsgcmV0dXJuIHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdOyB9XG4gICAgY29uc3RydWN0b3IodHlwZTogRGVuc2VVbmlvbiwgbGVuZ3RoOiBudW1iZXIsIG51bGxCaXRtYXA6IFVpbnQ4QXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkLCB0eXBlSWRzOiBJdGVyYWJsZTxudW1iZXI+LCB2YWx1ZU9mZnNldHM6IEl0ZXJhYmxlPG51bWJlcj4sIGNoaWxkRGF0YTogRGF0YTxhbnk+W10sIG9mZnNldD86IG51bWJlciwgbnVsbENvdW50PzogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKHR5cGUsIGxlbmd0aCwgbnVsbEJpdG1hcCwgdHlwZUlkcywgY2hpbGREYXRhLCBvZmZzZXQsIG51bGxDb3VudCk7XG4gICAgICAgIHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdID0gdG9UeXBlZEFycmF5KEludDMyQXJyYXksIHZhbHVlT2Zmc2V0cyk7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZTxSIGV4dGVuZHMgRGVuc2VVbmlvbj4odHlwZTogUiwgbGVuZ3RoID0gdGhpcy5sZW5ndGgsIG9mZnNldCA9IHRoaXMub2Zmc2V0LCBudWxsQ291bnQgPSB0aGlzLl9udWxsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEZW5zZVVuaW9uRGF0YShcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBsZW5ndGgsXG4gICAgICAgICAgICB0aGlzW1ZlY3RvclR5cGUuVkFMSURJVFldLFxuICAgICAgICAgICAgdGhpc1tWZWN0b3JUeXBlLlRZUEVdLFxuICAgICAgICAgICAgdGhpc1tWZWN0b3JUeXBlLk9GRlNFVF0sXG4gICAgICAgICAgICB0aGlzLmNoaWxkRGF0YSxcbiAgICAgICAgICAgIG9mZnNldCwgbnVsbENvdW50XG4gICAgICAgICkgYXMgYW55IGFzIFVuaW9uRGF0YTxSPjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDaHVua2VkRGF0YTxUIGV4dGVuZHMgRGF0YVR5cGU+IGV4dGVuZHMgQmFzZURhdGE8VD4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwcm90ZWN0ZWQgX2NodW5rRGF0YTogRGF0YTxUPltdO1xuICAgIHByb3RlY3RlZCBfY2h1bmtWZWN0b3JzOiBWZWN0b3I8VD5bXTtcbiAgICBwcm90ZWN0ZWQgX2NodW5rT2Zmc2V0czogVWludDMyQXJyYXk7XG4gICAgcHVibGljIGdldCBjaHVua1ZlY3RvcnMoKSB7IHJldHVybiB0aGlzLl9jaHVua1ZlY3RvcnM7IH1cbiAgICBwdWJsaWMgZ2V0IGNodW5rT2Zmc2V0cygpIHsgcmV0dXJuIHRoaXMuX2NodW5rT2Zmc2V0czsgfVxuICAgIHB1YmxpYyBnZXQgY2h1bmtEYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2h1bmtEYXRhIHx8IChcbiAgICAgICAgICAgICAgIHRoaXMuX2NodW5rRGF0YSA9IHRoaXMuX2NodW5rVmVjdG9ycy5tYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHR5cGU6IFQsIGxlbmd0aDogbnVtYmVyLCBjaHVua1ZlY3RvcnM6IFZlY3RvcjxUPltdLCBvZmZzZXQ/OiBudW1iZXIsIG51bGxDb3VudD86IG51bWJlciwgY2h1bmtPZmZzZXRzPzogVWludDMyQXJyYXkpIHtcbiAgICAgICAgc3VwZXIodHlwZSwgbGVuZ3RoLCBvZmZzZXQsIG51bGxDb3VudCk7XG4gICAgICAgIHRoaXMuX2NodW5rVmVjdG9ycyA9IGNodW5rVmVjdG9ycztcbiAgICAgICAgdGhpcy5fY2h1bmtPZmZzZXRzID0gY2h1bmtPZmZzZXRzIHx8IENodW5rZWREYXRhLmNvbXB1dGVPZmZzZXRzKGNodW5rVmVjdG9ycyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgbnVsbENvdW50KCkge1xuICAgICAgICBsZXQgbnVsbENvdW50ID0gdGhpcy5fbnVsbENvdW50O1xuICAgICAgICBpZiAobnVsbENvdW50ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5fbnVsbENvdW50ID0gbnVsbENvdW50ID0gdGhpcy5fY2h1bmtWZWN0b3JzLnJlZHVjZSgoeCwgYykgPT4geCArIGMubnVsbENvdW50LCAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbENvdW50O1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmU8UiBleHRlbmRzIFQ+KHR5cGU6IFIsIGxlbmd0aCA9IHRoaXMubGVuZ3RoLCBvZmZzZXQgPSB0aGlzLm9mZnNldCwgbnVsbENvdW50ID0gdGhpcy5fbnVsbENvdW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2h1bmtlZERhdGE8Uj4oXG4gICAgICAgICAgICB0eXBlLCBsZW5ndGgsXG4gICAgICAgICAgICB0aGlzLl9jaHVua1ZlY3RvcnMubWFwKCh2ZWMpID0+IHZlYy5jbG9uZSh2ZWMuZGF0YS5jbG9uZSh0eXBlKSkpIGFzIGFueSxcbiAgICAgICAgICAgIG9mZnNldCwgbnVsbENvdW50LCB0aGlzLl9jaHVua09mZnNldHNcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNsaWNlSW50ZXJuYWwoY2xvbmU6IHRoaXMsIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBjaHVua3MgPSB0aGlzLl9jaHVua1ZlY3RvcnM7XG4gICAgICAgIGNvbnN0IG9mZnNldHMgPSB0aGlzLl9jaHVua09mZnNldHM7XG4gICAgICAgIGNvbnN0IGNodW5rU2xpY2VzOiBWZWN0b3I8VD5bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBjaGlsZEluZGV4ID0gLTEsIG51bUNoaWxkcmVuID0gY2h1bmtzLmxlbmd0aDsgKytjaGlsZEluZGV4IDwgbnVtQ2hpbGRyZW47KSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNodW5rc1tjaGlsZEluZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTGVuZ3RoID0gY2hpbGQubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgY2hpbGRPZmZzZXQgPSBvZmZzZXRzW2NoaWxkSW5kZXhdO1xuICAgICAgICAgICAgLy8gSWYgdGhlIGNoaWxkIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgc2xpY2UgYm91bmRhcnksIGV4Y2x1ZGVcbiAgICAgICAgICAgIGlmIChjaGlsZE9mZnNldCA+PSBvZmZzZXQgKyBsZW5ndGgpIHsgY29udGludWU7IH1cbiAgICAgICAgICAgIC8vIElmIHRoZSBjaGlsZCBpcyB0byB0aGUgbGVmdCBvZiBvZiB0aGUgc2xpY2UgYm91bmRhcnksIGV4Y2x1ZGVcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPj0gY2hpbGRPZmZzZXQgKyBjaGlsZExlbmd0aCkgeyBjb250aW51ZTsgfVxuICAgICAgICAgICAgLy8gSWYgdGhlIGNoaWxkIGlzIGJldHdlZW4gYm90aCBsZWZ0IGFuZCByaWdodCBib3VuZGFyaWVzLCBpbmNsdWRlIHcvbyBzbGljaW5nXG4gICAgICAgICAgICBpZiAoY2hpbGRPZmZzZXQgPj0gb2Zmc2V0ICYmIChjaGlsZE9mZnNldCArIGNoaWxkTGVuZ3RoKSA8PSBvZmZzZXQgKyBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjaHVua1NsaWNlcy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHRoZSBjaGlsZCBvdmVybGFwcyBvbmUgb2YgdGhlIHNsaWNlIGJvdW5kYXJpZXMsIGluY2x1ZGUgdGhhdCBzbGljZVxuICAgICAgICAgICAgY29uc3QgYmVnaW4gPSBNYXRoLm1heCgwLCBvZmZzZXQgLSBjaGlsZE9mZnNldCk7XG4gICAgICAgICAgICBjb25zdCBlbmQgPSBiZWdpbiArIE1hdGgubWluKGNoaWxkTGVuZ3RoIC0gYmVnaW4sIChvZmZzZXQgKyBsZW5ndGgpIC0gY2hpbGRPZmZzZXQpO1xuICAgICAgICAgICAgY2h1bmtTbGljZXMucHVzaChjaGlsZC5zbGljZShiZWdpbiwgZW5kKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2xvbmUuX2NodW5rVmVjdG9ycyA9IGNodW5rU2xpY2VzO1xuICAgICAgICBjbG9uZS5fY2h1bmtPZmZzZXRzID0gQ2h1bmtlZERhdGEuY29tcHV0ZU9mZnNldHMoY2h1bmtTbGljZXMpO1xuICAgICAgICByZXR1cm4gY2xvbmU7XG4gICAgfVxuICAgIHN0YXRpYyBjb21wdXRlT2Zmc2V0czxUIGV4dGVuZHMgRGF0YVR5cGU+KGNoaWxkVmVjdG9yczogVmVjdG9yPFQ+W10pIHtcbiAgICAgICAgY29uc3QgY2hpbGRPZmZzZXRzID0gbmV3IFVpbnQzMkFycmF5KGNoaWxkVmVjdG9ycy5sZW5ndGggKyAxKTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwLCBsZW5ndGggPSBjaGlsZE9mZnNldHMubGVuZ3RoLCBjaGlsZE9mZnNldCA9IGNoaWxkT2Zmc2V0c1swXSA9IDA7ICsraW5kZXggPCBsZW5ndGg7KSB7XG4gICAgICAgICAgICBjaGlsZE9mZnNldHNbaW5kZXhdID0gKGNoaWxkT2Zmc2V0ICs9IGNoaWxkVmVjdG9yc1tpbmRleCAtIDFdLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoaWxkT2Zmc2V0cztcbiAgICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1lBQ25GLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsS0FBSyxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7UUFDbEMsS0FBSyxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELE1BQU0sQ0FBQyxjQUFjLENBQXFCLFlBQXlCO1FBQy9ELE1BQU0sWUFBWSxHQUFHLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUQsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDO1lBQ3JHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQ3hCLENBQUM7Q0FDSjtBQS9ERCxrQ0ErREMiLCJmaWxlIjoiZGF0YS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBwb3BjbnRfYml0X3JhbmdlIH0gZnJvbSAnLi91dGlsL2JpdCc7XG5pbXBvcnQgeyBWZWN0b3JMaWtlLCBWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgeyBWZWN0b3JUeXBlLCBUeXBlZEFycmF5LCBUeXBlZEFycmF5Q29uc3RydWN0b3IsIERpY3Rpb25hcnkgfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgSW50LCBCb29sLCBGbGF0TGlzdFR5cGUsIExpc3QsIEZpeGVkU2l6ZUxpc3QsIFN0cnVjdCwgTWFwXyB9IGZyb20gJy4vdHlwZSc7XG5pbXBvcnQgeyBEYXRhVHlwZSwgRmxhdFR5cGUsIExpc3RUeXBlLCBOZXN0ZWRUeXBlLCBTaW5nbGVOZXN0ZWRUeXBlLCBEZW5zZVVuaW9uLCBTcGFyc2VVbmlvbiB9IGZyb20gJy4vdHlwZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1R5cGVkQXJyYXk8VCBleHRlbmRzIFR5cGVkQXJyYXk+KEFycmF5VHlwZTogVHlwZWRBcnJheUNvbnN0cnVjdG9yPFQ+LCB2YWx1ZXM/OiBUIHwgQXJyYXlMaWtlPG51bWJlcj4gfCBJdGVyYWJsZTxudW1iZXI+IHwgbnVsbCk6IFQge1xuICAgIGlmICghQXJyYXlUeXBlICYmIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZXMpKSB7IHJldHVybiB2YWx1ZXM7IH1cbiAgICByZXR1cm4gdmFsdWVzIGluc3RhbmNlb2YgQXJyYXlUeXBlID8gdmFsdWVzXG4gICAgICAgICA6ICF2YWx1ZXMgfHwgIUFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZXMpID8gQXJyYXlUeXBlLmZyb20odmFsdWVzIHx8IFtdKVxuICAgICAgICAgOiBuZXcgQXJyYXlUeXBlKHZhbHVlcy5idWZmZXIsIHZhbHVlcy5ieXRlT2Zmc2V0LCB2YWx1ZXMuYnl0ZUxlbmd0aCAvIEFycmF5VHlwZS5CWVRFU19QRVJfRUxFTUVOVCk7XG59XG5cbmV4cG9ydCB0eXBlIERhdGE8VCBleHRlbmRzIERhdGFUeXBlPiA9IERhdGFUeXBlczxUPltUWydUVHlwZSddXSAmIEJhc2VEYXRhPFQ+O1xuZXhwb3J0IGludGVyZmFjZSBEYXRhVHlwZXM8VCBleHRlbmRzIERhdGFUeXBlPiB7XG4vKiAgICAgICAgICAgICAgICBbVHlwZS5OT05FXSovICAwOiBCYXNlRGF0YTxUPjtcbi8qICAgICAgICAgICAgICAgIFtUeXBlLk51bGxdKi8gIDE6IEZsYXREYXRhPFQ+O1xuLyogICAgICAgICAgICAgICAgIFtUeXBlLkludF0qLyAgMjogRmxhdERhdGE8VD47XG4vKiAgICAgICAgICAgICAgIFtUeXBlLkZsb2F0XSovICAzOiBGbGF0RGF0YTxUPjtcbi8qICAgICAgICAgICAgICBbVHlwZS5CaW5hcnldKi8gIDQ6IEZsYXRMaXN0RGF0YTxUPjtcbi8qICAgICAgICAgICAgICAgIFtUeXBlLlV0ZjhdKi8gIDU6IEZsYXRMaXN0RGF0YTxUPjtcbi8qICAgICAgICAgICAgICAgIFtUeXBlLkJvb2xdKi8gIDY6IEJvb2xEYXRhO1xuLyogICAgICAgICAgICAgW1R5cGUuRGVjaW1hbF0qLyAgNzogRmxhdERhdGE8VD47XG4vKiAgICAgICAgICAgICAgICBbVHlwZS5EYXRlXSovICA4OiBGbGF0RGF0YTxUPjtcbi8qICAgICAgICAgICAgICAgIFtUeXBlLlRpbWVdKi8gIDk6IEZsYXREYXRhPFQ+O1xuLyogICAgICAgICAgIFtUeXBlLlRpbWVzdGFtcF0qLyAxMDogRmxhdERhdGE8VD47XG4vKiAgICAgICAgICAgIFtUeXBlLkludGVydmFsXSovIDExOiBGbGF0RGF0YTxUPjtcbi8qICAgICAgICAgICAgICAgIFtUeXBlLkxpc3RdKi8gMTI6IExpc3REYXRhPExpc3Q8VD4+O1xuLyogICAgICAgICAgICAgIFtUeXBlLlN0cnVjdF0qLyAxMzogTmVzdGVkRGF0YTxTdHJ1Y3Q+O1xuLyogICAgICAgICAgICAgICBbVHlwZS5Vbmlvbl0qLyAxNDogVW5pb25EYXRhO1xuLyogICAgIFtUeXBlLkZpeGVkU2l6ZUJpbmFyeV0qLyAxNTogRmxhdERhdGE8VD47XG4vKiAgICAgICBbVHlwZS5GaXhlZFNpemVMaXN0XSovIDE2OiBTaW5nbGVOZXN0ZWREYXRhPEZpeGVkU2l6ZUxpc3Q8VD4+O1xuLyogICAgICAgICAgICAgICAgIFtUeXBlLk1hcF0qLyAxNzogTmVzdGVkRGF0YTxNYXBfPjtcbi8qICBbVHlwZS5EZW5zZVVuaW9uXSovIERlbnNlVW5pb246IERlbnNlVW5pb25EYXRhO1xuLypbVHlwZS5TcGFyc2VVbmlvbl0qLyBTcGFyc2VVbmlvbjogU3BhcnNlVW5pb25EYXRhO1xuLypbICBUeXBlLkRpY3Rpb25hcnldKi8gRGljdGlvbmFyeTogRGljdGlvbmFyeURhdGE8YW55Pjtcbn1cbi8vIFdoZW4gc2xpY2luZywgd2UgZG8gbm90IGtub3cgdGhlIG51bGwgY291bnQgb2YgdGhlIHNsaWNlZCByYW5nZSB3aXRob3V0XG4vLyBkb2luZyBzb21lIGNvbXB1dGF0aW9uLiBUbyBhdm9pZCBkb2luZyB0aGlzIGVhZ2VybHksIHdlIHNldCB0aGUgbnVsbCBjb3VudFxuLy8gdG8gLTEgKGFueSBuZWdhdGl2ZSBudW1iZXIgd2lsbCBkbykuIFdoZW4gQXJyYXk6Om51bGxfY291bnQgaXMgY2FsbGVkIHRoZVxuLy8gZmlyc3QgdGltZSwgdGhlIG51bGwgY291bnQgd2lsbCBiZSBjb21wdXRlZC4gU2VlIEFSUk9XLTMzXG5leHBvcnQgdHlwZSBrVW5rbm93bk51bGxDb3VudCA9IC0xO1xuZXhwb3J0IGNvbnN0IGtVbmtub3duTnVsbENvdW50ID0gLTE7XG5cbmV4cG9ydCBjbGFzcyBCYXNlRGF0YTxUIGV4dGVuZHMgRGF0YVR5cGUgPSBEYXRhVHlwZT4gaW1wbGVtZW50cyBWZWN0b3JMaWtlIHtcbiAgICBwdWJsaWMgdHlwZTogVDtcbiAgICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gICAgcHVibGljIG9mZnNldDogbnVtYmVyO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwdWJsaWMgY2hpbGREYXRhOiBEYXRhPGFueT5bXTtcbiAgICBwcm90ZWN0ZWQgX251bGxDb3VudDogbnVtYmVyIHwga1Vua25vd25OdWxsQ291bnQ7XG4gICAgcHJvdGVjdGVkIC8qICBbVmVjdG9yVHlwZS5PRkZTRVRdOiovIDA/OiBJbnQzMkFycmF5O1xuICAgIHByb3RlY3RlZCAvKiAgICBbVmVjdG9yVHlwZS5EQVRBXToqLyAxPzogVFsnVEFycmF5J107XG4gICAgcHJvdGVjdGVkIC8qW1ZlY3RvclR5cGUuVkFMSURJVFldOiovIDI/OiBVaW50OEFycmF5O1xuICAgIHByb3RlY3RlZCAvKiAgICBbVmVjdG9yVHlwZS5UWVBFXToqLyAzPzogSW50OEFycmF5O1xuICAgIGNvbnN0cnVjdG9yKHR5cGU6IFQsIGxlbmd0aDogbnVtYmVyLCBvZmZzZXQ/OiBudW1iZXIsIG51bGxDb3VudD86IG51bWJlcikge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IE1hdGguZmxvb3IoTWF0aC5tYXgobGVuZ3RoIHx8IDAsIDApKTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSBNYXRoLmZsb29yKE1hdGgubWF4KG9mZnNldCB8fCAwLCAwKSk7XG4gICAgICAgIHRoaXMuX251bGxDb3VudCA9IE1hdGguZmxvb3IoTWF0aC5tYXgobnVsbENvdW50IHx8IDAsIC0xKSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdHlwZUlkKCkgeyByZXR1cm4gdGhpcy50eXBlLlRUeXBlOyB9XG4gICAgcHVibGljIGdldCBudWxsQml0bWFwKCkgeyByZXR1cm4gdGhpc1tWZWN0b3JUeXBlLlZBTElESVRZXTsgfVxuICAgIHB1YmxpYyBnZXQgbnVsbENvdW50KCkge1xuICAgICAgICBsZXQgbnVsbENvdW50ID0gdGhpcy5fbnVsbENvdW50O1xuICAgICAgICBsZXQgbnVsbEJpdG1hcDogVWludDhBcnJheSB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKG51bGxDb3VudCA9PT0gLTEgJiYgKG51bGxCaXRtYXAgPSB0aGlzW1ZlY3RvclR5cGUuVkFMSURJVFldKSkge1xuICAgICAgICAgICAgdGhpcy5fbnVsbENvdW50ID0gbnVsbENvdW50ID0gdGhpcy5sZW5ndGggLSBwb3BjbnRfYml0X3JhbmdlKG51bGxCaXRtYXAsIHRoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArIHRoaXMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbENvdW50O1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmU8UiBleHRlbmRzIFQ+KHR5cGU6IFIsIGxlbmd0aCA9IHRoaXMubGVuZ3RoLCBvZmZzZXQgPSB0aGlzLm9mZnNldCwgbnVsbENvdW50ID0gdGhpcy5fbnVsbENvdW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgQmFzZURhdGEodHlwZSwgbGVuZ3RoLCBvZmZzZXQsIG51bGxDb3VudCk7XG4gICAgfVxuICAgIHB1YmxpYyBzbGljZShvZmZzZXQ6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGxlbmd0aCA8PSAwID8gdGhpcyA6IHRoaXMuc2xpY2VJbnRlcm5hbCh0aGlzLmNsb25lKFxuICAgICAgICAgICAgdGhpcy50eXBlLCBsZW5ndGgsIHRoaXMub2Zmc2V0ICsgb2Zmc2V0LCArKHRoaXMuX251bGxDb3VudCA9PT0gMCkgLSAxXG4gICAgICAgICkgYXMgYW55LCBvZmZzZXQsIGxlbmd0aCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzbGljZUludGVybmFsKGNsb25lOiB0aGlzLCBvZmZzZXQ6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGFycjogYW55O1xuICAgICAgICAvLyBJZiB0eXBlSWRzIGV4aXN0LCBzbGljZSB0aGUgdHlwZUlkcyBidWZmZXJcbiAgICAgICAgKGFyciA9IHRoaXNbVmVjdG9yVHlwZS5UWVBFXSkgJiYgKGNsb25lW1ZlY3RvclR5cGUuVFlQRV0gPSB0aGlzLnNsaWNlRGF0YShhcnIsIG9mZnNldCwgbGVuZ3RoKSk7XG4gICAgICAgIC8vIElmIG9mZnNldHMgZXhpc3QsIG9ubHkgc2xpY2UgdGhlIG9mZnNldHMgYnVmZmVyXG4gICAgICAgIChhcnIgPSB0aGlzW1ZlY3RvclR5cGUuT0ZGU0VUXSkgJiYgKGNsb25lW1ZlY3RvclR5cGUuT0ZGU0VUXSA9IHRoaXMuc2xpY2VPZmZzZXRzKGFyciwgb2Zmc2V0LCBsZW5ndGgpKSB8fFxuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGlmIG5vIG9mZnNldHMsIHNsaWNlIHRoZSBkYXRhIGJ1ZmZlclxuICAgICAgICAgICAgKGFyciA9IHRoaXNbVmVjdG9yVHlwZS5EQVRBXSkgJiYgKGNsb25lW1ZlY3RvclR5cGUuREFUQV0gPSB0aGlzLnNsaWNlRGF0YShhcnIsIG9mZnNldCwgbGVuZ3RoKSk7XG4gICAgICAgIHJldHVybiBjbG9uZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNsaWNlRGF0YShkYXRhOiBUWydUQXJyYXknXSAmIFR5cGVkQXJyYXksIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzbGljZU9mZnNldHModmFsdWVPZmZzZXRzOiBJbnQzMkFycmF5LCBvZmZzZXQ6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlT2Zmc2V0cy5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCArIDEpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZsYXREYXRhPFQgZXh0ZW5kcyBGbGF0VHlwZT4gZXh0ZW5kcyBCYXNlRGF0YTxUPiB7XG4gICAgcHVibGljIC8qICAgIFtWZWN0b3JUeXBlLkRBVEFdOiovIDE6IFRbJ1RBcnJheSddO1xuICAgIHB1YmxpYyAvKltWZWN0b3JUeXBlLlZBTElESVRZXToqLyAyOiBVaW50OEFycmF5O1xuICAgIHB1YmxpYyBnZXQgdmFsdWVzKCkgeyByZXR1cm4gdGhpc1tWZWN0b3JUeXBlLkRBVEFdOyB9XG4gICAgY29uc3RydWN0b3IodHlwZTogVCwgbGVuZ3RoOiBudW1iZXIsIG51bGxCaXRtYXA6IFVpbnQ4QXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkLCBkYXRhOiBJdGVyYWJsZTxudW1iZXI+LCBvZmZzZXQ/OiBudW1iZXIsIG51bGxDb3VudD86IG51bWJlcikge1xuICAgICAgICBzdXBlcih0eXBlLCBsZW5ndGgsIG9mZnNldCwgbnVsbENvdW50KTtcbiAgICAgICAgdGhpc1tWZWN0b3JUeXBlLkRBVEFdID0gdG9UeXBlZEFycmF5KHRoaXMuQXJyYXlUeXBlLCBkYXRhKTtcbiAgICAgICAgdGhpc1tWZWN0b3JUeXBlLlZBTElESVRZXSA9IHRvVHlwZWRBcnJheShVaW50OEFycmF5LCBudWxsQml0bWFwKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBBcnJheVR5cGUoKTogVFsnQXJyYXlUeXBlJ10geyByZXR1cm4gdGhpcy50eXBlLkFycmF5VHlwZTsgfVxuICAgIHB1YmxpYyBjbG9uZTxSIGV4dGVuZHMgVD4odHlwZTogUiwgbGVuZ3RoID0gdGhpcy5sZW5ndGgsIG9mZnNldCA9IHRoaXMub2Zmc2V0LCBudWxsQ291bnQgPSB0aGlzLl9udWxsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpKHR5cGUsIGxlbmd0aCwgdGhpc1tWZWN0b3JUeXBlLlZBTElESVRZXSwgdGhpc1tWZWN0b3JUeXBlLkRBVEFdLCBvZmZzZXQsIG51bGxDb3VudCkgYXMgRmxhdERhdGE8Uj47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQm9vbERhdGEgZXh0ZW5kcyBGbGF0RGF0YTxCb29sPiB7XG4gICAgcHJvdGVjdGVkIHNsaWNlRGF0YShkYXRhOiBVaW50OEFycmF5KSB7IHJldHVybiBkYXRhOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBGbGF0TGlzdERhdGE8VCBleHRlbmRzIEZsYXRMaXN0VHlwZT4gZXh0ZW5kcyBGbGF0RGF0YTxUPiB7XG4gICAgcHVibGljIC8qICBbVmVjdG9yVHlwZS5PRkZTRVRdOiovIDA6IEludDMyQXJyYXk7XG4gICAgcHVibGljIC8qICAgIFtWZWN0b3JUeXBlLkRBVEFdOiovIDE6IFRbJ1RBcnJheSddO1xuICAgIHB1YmxpYyAvKltWZWN0b3JUeXBlLlZBTElESVRZXToqLyAyOiBVaW50OEFycmF5O1xuICAgIHB1YmxpYyBnZXQgdmFsdWVzKCkgeyByZXR1cm4gdGhpc1tWZWN0b3JUeXBlLkRBVEFdOyB9XG4gICAgcHVibGljIGdldCB2YWx1ZU9mZnNldHMoKSB7IHJldHVybiB0aGlzW1ZlY3RvclR5cGUuT0ZGU0VUXTsgfVxuICAgIGNvbnN0cnVjdG9yKHR5cGU6IFQsIGxlbmd0aDogbnVtYmVyLCBudWxsQml0bWFwOiBVaW50OEFycmF5IHwgbnVsbCB8IHVuZGVmaW5lZCwgdmFsdWVPZmZzZXRzOiBJdGVyYWJsZTxudW1iZXI+LCBkYXRhOiBUWydUQXJyYXknXSwgb2Zmc2V0PzogbnVtYmVyLCBudWxsQ291bnQ/OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIodHlwZSwgbGVuZ3RoLCBudWxsQml0bWFwLCBkYXRhLCBvZmZzZXQsIG51bGxDb3VudCk7XG4gICAgICAgIHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdID0gdG9UeXBlZEFycmF5KEludDMyQXJyYXksIHZhbHVlT2Zmc2V0cyk7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZTxSIGV4dGVuZHMgVD4odHlwZTogUiwgbGVuZ3RoID0gdGhpcy5sZW5ndGgsIG9mZnNldCA9IHRoaXMub2Zmc2V0LCBudWxsQ291bnQgPSB0aGlzLl9udWxsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGbGF0TGlzdERhdGEodHlwZSwgbGVuZ3RoLCB0aGlzW1ZlY3RvclR5cGUuVkFMSURJVFldLCB0aGlzW1ZlY3RvclR5cGUuT0ZGU0VUXSwgdGhpc1tWZWN0b3JUeXBlLkRBVEFdLCBvZmZzZXQsIG51bGxDb3VudCkgYXMgRmxhdExpc3REYXRhPFI+O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlEYXRhPFQgZXh0ZW5kcyBEYXRhVHlwZT4gZXh0ZW5kcyBCYXNlRGF0YTxEaWN0aW9uYXJ5PFQ+PiB7XG4gICAgcHJvdGVjdGVkIF9kaWN0aW9uYXJ5OiBWZWN0b3I8VD47XG4gICAgcHJvdGVjdGVkIF9pbmRpY2VzOiBEYXRhPEludDxhbnk+PjtcbiAgICBwdWJsaWMgZ2V0IGluZGljZXMoKSB7IHJldHVybiB0aGlzLl9pbmRpY2VzOyB9XG4gICAgcHVibGljIGdldCBkaWN0aW9uYXJ5KCkgeyByZXR1cm4gdGhpcy5fZGljdGlvbmFyeTsgfVxuICAgIGNvbnN0cnVjdG9yKHR5cGU6IERpY3Rpb25hcnk8VD4sIGRpY3Rpb25hcnk6IFZlY3RvcjxUPiwgaW5kaWNlczogRGF0YTxJbnQ8YW55Pj4pIHtcbiAgICAgICAgc3VwZXIodHlwZSwgaW5kaWNlcy5sZW5ndGgsIGluZGljZXMub2Zmc2V0LCAoaW5kaWNlcyBhcyBhbnkpLl9udWxsQ291bnQpO1xuICAgICAgICB0aGlzLl9pbmRpY2VzID0gaW5kaWNlcztcbiAgICAgICAgdGhpcy5fZGljdGlvbmFyeSA9IGRpY3Rpb25hcnk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgbnVsbENvdW50KCkgeyByZXR1cm4gdGhpcy5faW5kaWNlcy5udWxsQ291bnQ7IH1cbiAgICBwdWJsaWMgZ2V0IG51bGxCaXRtYXAoKSB7IHJldHVybiB0aGlzLl9pbmRpY2VzLm51bGxCaXRtYXA7IH1cbiAgICBwdWJsaWMgY2xvbmU8UiBleHRlbmRzIERpY3Rpb25hcnk8VD4+KHR5cGU6IFIsIGxlbmd0aCA9IHRoaXMubGVuZ3RoLCBvZmZzZXQgPSB0aGlzLm9mZnNldCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fZGljdGlvbmFyeS5kYXRhLmNsb25lKHR5cGUuZGljdGlvbmFyeSBhcyBhbnkpO1xuICAgICAgICByZXR1cm4gbmV3IERpY3Rpb25hcnlEYXRhPFI+KFxuICAgICAgICAgICAgdGhpcy50eXBlIGFzIGFueSxcbiAgICAgICAgICAgIHRoaXMuX2RpY3Rpb25hcnkuY2xvbmUoZGF0YSkgYXMgYW55LFxuICAgICAgICAgICAgdGhpcy5faW5kaWNlcy5zbGljZShvZmZzZXQgLSB0aGlzLm9mZnNldCwgbGVuZ3RoKVxuICAgICAgICApIGFzIGFueTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNsaWNlSW50ZXJuYWwoY2xvbmU6IHRoaXMsIF9vZmZzZXQ6IG51bWJlciwgX2xlbmd0aDogbnVtYmVyKSB7XG4gICAgICAgIGNsb25lLmxlbmd0aCA9IGNsb25lLl9pbmRpY2VzLmxlbmd0aDtcbiAgICAgICAgY2xvbmUuX251bGxDb3VudCA9IChjbG9uZS5faW5kaWNlcyBhcyBhbnkpLl9udWxsQ291bnQ7XG4gICAgICAgIHJldHVybiBjbG9uZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOZXN0ZWREYXRhPFQgZXh0ZW5kcyBOZXN0ZWRUeXBlID0gTmVzdGVkVHlwZT4gZXh0ZW5kcyBCYXNlRGF0YTxUPiB7XG4gICAgcHVibGljIC8qW1ZlY3RvclR5cGUuVkFMSURJVFldOiovIDI6IFVpbnQ4QXJyYXk7XG4gICAgY29uc3RydWN0b3IodHlwZTogVCwgbGVuZ3RoOiBudW1iZXIsIG51bGxCaXRtYXA6IFVpbnQ4QXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkLCBjaGlsZERhdGE6IERhdGE8YW55PltdLCBvZmZzZXQ/OiBudW1iZXIsIG51bGxDb3VudD86IG51bWJlcikge1xuICAgICAgICBzdXBlcih0eXBlLCBsZW5ndGgsIG9mZnNldCwgbnVsbENvdW50KTtcbiAgICAgICAgdGhpcy5jaGlsZERhdGEgPSBjaGlsZERhdGE7XG4gICAgICAgIHRoaXNbVmVjdG9yVHlwZS5WQUxJRElUWV0gPSB0b1R5cGVkQXJyYXkoVWludDhBcnJheSwgbnVsbEJpdG1hcCk7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZTxSIGV4dGVuZHMgVD4odHlwZTogUiwgbGVuZ3RoID0gdGhpcy5sZW5ndGgsIG9mZnNldCA9IHRoaXMub2Zmc2V0LCBudWxsQ291bnQgPSB0aGlzLl9udWxsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOZXN0ZWREYXRhPFI+KHR5cGUsIGxlbmd0aCwgdGhpc1tWZWN0b3JUeXBlLlZBTElESVRZXSwgdGhpcy5jaGlsZERhdGEsIG9mZnNldCwgbnVsbENvdW50KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNsaWNlSW50ZXJuYWwoY2xvbmU6IHRoaXMsIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdKSB7XG4gICAgICAgICAgICBjbG9uZS5jaGlsZERhdGEgPSB0aGlzLmNoaWxkRGF0YS5tYXAoKGNoaWxkKSA9PiBjaGlsZC5zbGljZShvZmZzZXQsIGxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdXBlci5zbGljZUludGVybmFsKGNsb25lLCBvZmZzZXQsIGxlbmd0aCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2luZ2xlTmVzdGVkRGF0YTxUIGV4dGVuZHMgU2luZ2xlTmVzdGVkVHlwZT4gZXh0ZW5kcyBOZXN0ZWREYXRhPFQ+IHtcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlc0RhdGE6IERhdGE8VD47XG4gICAgcHVibGljIGdldCB2YWx1ZXMoKSB7IHJldHVybiB0aGlzLl92YWx1ZXNEYXRhOyB9XG4gICAgY29uc3RydWN0b3IodHlwZTogVCwgbGVuZ3RoOiBudW1iZXIsIG51bGxCaXRtYXA6IFVpbnQ4QXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkLCB2YWx1ZUNoaWxkRGF0YTogRGF0YTxUPiwgb2Zmc2V0PzogbnVtYmVyLCBudWxsQ291bnQ/OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIodHlwZSwgbGVuZ3RoLCBudWxsQml0bWFwLCBbdmFsdWVDaGlsZERhdGFdLCBvZmZzZXQsIG51bGxDb3VudCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlc0RhdGEgPSB2YWx1ZUNoaWxkRGF0YTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0RGF0YTxUIGV4dGVuZHMgTGlzdFR5cGU+IGV4dGVuZHMgU2luZ2xlTmVzdGVkRGF0YTxUPiB7XG4gICAgcHVibGljIC8qICBbVmVjdG9yVHlwZS5PRkZTRVRdOiovIDA6IEludDMyQXJyYXk7XG4gICAgcHVibGljIC8qW1ZlY3RvclR5cGUuVkFMSURJVFldOiovIDI6IFVpbnQ4QXJyYXk7XG4gICAgcHVibGljIGdldCB2YWx1ZU9mZnNldHMoKSB7IHJldHVybiB0aGlzW1ZlY3RvclR5cGUuT0ZGU0VUXTsgfVxuICAgIGNvbnN0cnVjdG9yKHR5cGU6IFQsIGxlbmd0aDogbnVtYmVyLCBudWxsQml0bWFwOiBVaW50OEFycmF5IHwgbnVsbCB8IHVuZGVmaW5lZCwgdmFsdWVPZmZzZXRzOiBJdGVyYWJsZTxudW1iZXI+LCB2YWx1ZUNoaWxkRGF0YTogRGF0YTxUPiwgb2Zmc2V0PzogbnVtYmVyLCBudWxsQ291bnQ/OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIodHlwZSwgbGVuZ3RoLCBudWxsQml0bWFwLCB2YWx1ZUNoaWxkRGF0YSwgb2Zmc2V0LCBudWxsQ291bnQpO1xuICAgICAgICB0aGlzW1ZlY3RvclR5cGUuT0ZGU0VUXSA9IHRvVHlwZWRBcnJheShJbnQzMkFycmF5LCB2YWx1ZU9mZnNldHMpO1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmU8UiBleHRlbmRzIFQ+KHR5cGU6IFIsIGxlbmd0aCA9IHRoaXMubGVuZ3RoLCBvZmZzZXQgPSB0aGlzLm9mZnNldCwgbnVsbENvdW50ID0gdGhpcy5fbnVsbENvdW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgTGlzdERhdGE8Uj4odHlwZSwgbGVuZ3RoLCB0aGlzW1ZlY3RvclR5cGUuVkFMSURJVFldLCB0aGlzW1ZlY3RvclR5cGUuT0ZGU0VUXSwgdGhpcy5fdmFsdWVzRGF0YSBhcyBhbnksIG9mZnNldCwgbnVsbENvdW50KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmlvbkRhdGE8VCBleHRlbmRzIChEZW5zZVVuaW9uIHwgU3BhcnNlVW5pb24pID0gYW55PiBleHRlbmRzIE5lc3RlZERhdGE8VD4ge1xuICAgIHB1YmxpYyAvKiAgICBbVmVjdG9yVHlwZS5UWVBFXToqLyAzOiBUWydUQXJyYXknXTtcbiAgICBwdWJsaWMgZ2V0IHR5cGVJZHMoKSB7IHJldHVybiB0aGlzW1ZlY3RvclR5cGUuVFlQRV07IH1cbiAgICBjb25zdHJ1Y3Rvcih0eXBlOiBULCBsZW5ndGg6IG51bWJlciwgbnVsbEJpdG1hcDogVWludDhBcnJheSB8IG51bGwgfCB1bmRlZmluZWQsIHR5cGVJZHM6IEl0ZXJhYmxlPG51bWJlcj4sIGNoaWxkRGF0YTogRGF0YTxhbnk+W10sIG9mZnNldD86IG51bWJlciwgbnVsbENvdW50PzogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKHR5cGUsIGxlbmd0aCwgbnVsbEJpdG1hcCwgY2hpbGREYXRhLCBvZmZzZXQsIG51bGxDb3VudCk7XG4gICAgICAgIHRoaXNbVmVjdG9yVHlwZS5UWVBFXSA9IHRvVHlwZWRBcnJheShJbnQ4QXJyYXksIHR5cGVJZHMpO1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmU8UiBleHRlbmRzIFQ+KHR5cGU6IFIsIGxlbmd0aCA9IHRoaXMubGVuZ3RoLCBvZmZzZXQgPSB0aGlzLm9mZnNldCwgbnVsbENvdW50ID0gdGhpcy5fbnVsbENvdW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgVW5pb25EYXRhPFI+KHR5cGUsIGxlbmd0aCwgdGhpc1tWZWN0b3JUeXBlLlZBTElESVRZXSwgdGhpc1tWZWN0b3JUeXBlLlRZUEVdLCB0aGlzLmNoaWxkRGF0YSwgb2Zmc2V0LCBudWxsQ291bnQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNwYXJzZVVuaW9uRGF0YSBleHRlbmRzIFVuaW9uRGF0YTxTcGFyc2VVbmlvbj4ge1xuICAgIGNvbnN0cnVjdG9yKHR5cGU6IFNwYXJzZVVuaW9uLCBsZW5ndGg6IG51bWJlciwgbnVsbEJpdG1hcDogVWludDhBcnJheSB8IG51bGwgfCB1bmRlZmluZWQsIHR5cGVJZHM6IEl0ZXJhYmxlPG51bWJlcj4sIGNoaWxkRGF0YTogRGF0YTxhbnk+W10sIG9mZnNldD86IG51bWJlciwgbnVsbENvdW50PzogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKHR5cGUsIGxlbmd0aCwgbnVsbEJpdG1hcCwgdHlwZUlkcywgY2hpbGREYXRhLCBvZmZzZXQsIG51bGxDb3VudCk7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZTxSIGV4dGVuZHMgU3BhcnNlVW5pb24+KHR5cGU6IFIsIGxlbmd0aCA9IHRoaXMubGVuZ3RoLCBvZmZzZXQgPSB0aGlzLm9mZnNldCwgbnVsbENvdW50ID0gdGhpcy5fbnVsbENvdW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgU3BhcnNlVW5pb25EYXRhKFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICAgIHRoaXNbVmVjdG9yVHlwZS5WQUxJRElUWV0sXG4gICAgICAgICAgICB0aGlzW1ZlY3RvclR5cGUuVFlQRV0sXG4gICAgICAgICAgICB0aGlzLmNoaWxkRGF0YSxcbiAgICAgICAgICAgIG9mZnNldCwgbnVsbENvdW50XG4gICAgICAgICkgYXMgYW55IGFzIFVuaW9uRGF0YTxSPjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZW5zZVVuaW9uRGF0YSBleHRlbmRzIFVuaW9uRGF0YTxEZW5zZVVuaW9uPiB7XG4gICAgcHVibGljIC8qICBbVmVjdG9yVHlwZS5PRkZTRVRdOiovIDA6IEludDMyQXJyYXk7XG4gICAgcHVibGljIGdldCB2YWx1ZU9mZnNldHMoKSB7IHJldHVybiB0aGlzW1ZlY3RvclR5cGUuT0ZGU0VUXTsgfVxuICAgIGNvbnN0cnVjdG9yKHR5cGU6IERlbnNlVW5pb24sIGxlbmd0aDogbnVtYmVyLCBudWxsQml0bWFwOiBVaW50OEFycmF5IHwgbnVsbCB8IHVuZGVmaW5lZCwgdHlwZUlkczogSXRlcmFibGU8bnVtYmVyPiwgdmFsdWVPZmZzZXRzOiBJdGVyYWJsZTxudW1iZXI+LCBjaGlsZERhdGE6IERhdGE8YW55PltdLCBvZmZzZXQ/OiBudW1iZXIsIG51bGxDb3VudD86IG51bWJlcikge1xuICAgICAgICBzdXBlcih0eXBlLCBsZW5ndGgsIG51bGxCaXRtYXAsIHR5cGVJZHMsIGNoaWxkRGF0YSwgb2Zmc2V0LCBudWxsQ291bnQpO1xuICAgICAgICB0aGlzW1ZlY3RvclR5cGUuT0ZGU0VUXSA9IHRvVHlwZWRBcnJheShJbnQzMkFycmF5LCB2YWx1ZU9mZnNldHMpO1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmU8UiBleHRlbmRzIERlbnNlVW5pb24+KHR5cGU6IFIsIGxlbmd0aCA9IHRoaXMubGVuZ3RoLCBvZmZzZXQgPSB0aGlzLm9mZnNldCwgbnVsbENvdW50ID0gdGhpcy5fbnVsbENvdW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgRGVuc2VVbmlvbkRhdGEoXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbGVuZ3RoLFxuICAgICAgICAgICAgdGhpc1tWZWN0b3JUeXBlLlZBTElESVRZXSxcbiAgICAgICAgICAgIHRoaXNbVmVjdG9yVHlwZS5UWVBFXSxcbiAgICAgICAgICAgIHRoaXNbVmVjdG9yVHlwZS5PRkZTRVRdLFxuICAgICAgICAgICAgdGhpcy5jaGlsZERhdGEsXG4gICAgICAgICAgICBvZmZzZXQsIG51bGxDb3VudFxuICAgICAgICApIGFzIGFueSBhcyBVbmlvbkRhdGE8Uj47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2h1bmtlZERhdGE8VCBleHRlbmRzIERhdGFUeXBlPiBleHRlbmRzIEJhc2VEYXRhPFQ+IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHJvdGVjdGVkIF9jaHVua0RhdGE6IERhdGE8VD5bXTtcbiAgICBwcm90ZWN0ZWQgX2NodW5rVmVjdG9yczogVmVjdG9yPFQ+W107XG4gICAgcHJvdGVjdGVkIF9jaHVua09mZnNldHM6IFVpbnQzMkFycmF5O1xuICAgIHB1YmxpYyBnZXQgY2h1bmtWZWN0b3JzKCkgeyByZXR1cm4gdGhpcy5fY2h1bmtWZWN0b3JzOyB9XG4gICAgcHVibGljIGdldCBjaHVua09mZnNldHMoKSB7IHJldHVybiB0aGlzLl9jaHVua09mZnNldHM7IH1cbiAgICBwdWJsaWMgZ2V0IGNodW5rRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NodW5rRGF0YSB8fCAoXG4gICAgICAgICAgICAgICB0aGlzLl9jaHVua0RhdGEgPSB0aGlzLl9jaHVua1ZlY3RvcnMubWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcih0eXBlOiBULCBsZW5ndGg6IG51bWJlciwgY2h1bmtWZWN0b3JzOiBWZWN0b3I8VD5bXSwgb2Zmc2V0PzogbnVtYmVyLCBudWxsQ291bnQ/OiBudW1iZXIsIGNodW5rT2Zmc2V0cz86IFVpbnQzMkFycmF5KSB7XG4gICAgICAgIHN1cGVyKHR5cGUsIGxlbmd0aCwgb2Zmc2V0LCBudWxsQ291bnQpO1xuICAgICAgICB0aGlzLl9jaHVua1ZlY3RvcnMgPSBjaHVua1ZlY3RvcnM7XG4gICAgICAgIHRoaXMuX2NodW5rT2Zmc2V0cyA9IGNodW5rT2Zmc2V0cyB8fCBDaHVua2VkRGF0YS5jb21wdXRlT2Zmc2V0cyhjaHVua1ZlY3RvcnMpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IG51bGxDb3VudCgpIHtcbiAgICAgICAgbGV0IG51bGxDb3VudCA9IHRoaXMuX251bGxDb3VudDtcbiAgICAgICAgaWYgKG51bGxDb3VudCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX251bGxDb3VudCA9IG51bGxDb3VudCA9IHRoaXMuX2NodW5rVmVjdG9ycy5yZWR1Y2UoKHgsIGMpID0+IHggKyBjLm51bGxDb3VudCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGxDb3VudDtcbiAgICB9XG4gICAgcHVibGljIGNsb25lPFIgZXh0ZW5kcyBUPih0eXBlOiBSLCBsZW5ndGggPSB0aGlzLmxlbmd0aCwgb2Zmc2V0ID0gdGhpcy5vZmZzZXQsIG51bGxDb3VudCA9IHRoaXMuX251bGxDb3VudCkge1xuICAgICAgICByZXR1cm4gbmV3IENodW5rZWREYXRhPFI+KFxuICAgICAgICAgICAgdHlwZSwgbGVuZ3RoLFxuICAgICAgICAgICAgdGhpcy5fY2h1bmtWZWN0b3JzLm1hcCgodmVjKSA9PiB2ZWMuY2xvbmUodmVjLmRhdGEuY2xvbmUodHlwZSkpKSBhcyBhbnksXG4gICAgICAgICAgICBvZmZzZXQsIG51bGxDb3VudCwgdGhpcy5fY2h1bmtPZmZzZXRzXG4gICAgICAgICk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzbGljZUludGVybmFsKGNsb25lOiB0aGlzLCBvZmZzZXQ6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgY2h1bmtzID0gdGhpcy5fY2h1bmtWZWN0b3JzO1xuICAgICAgICBjb25zdCBvZmZzZXRzID0gdGhpcy5fY2h1bmtPZmZzZXRzO1xuICAgICAgICBjb25zdCBjaHVua1NsaWNlczogVmVjdG9yPFQ+W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgY2hpbGRJbmRleCA9IC0xLCBudW1DaGlsZHJlbiA9IGNodW5rcy5sZW5ndGg7ICsrY2hpbGRJbmRleCA8IG51bUNoaWxkcmVuOykge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaHVua3NbY2hpbGRJbmRleF07XG4gICAgICAgICAgICBjb25zdCBjaGlsZExlbmd0aCA9IGNoaWxkLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkT2Zmc2V0ID0gb2Zmc2V0c1tjaGlsZEluZGV4XTtcbiAgICAgICAgICAgIC8vIElmIHRoZSBjaGlsZCBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHNsaWNlIGJvdW5kYXJ5LCBleGNsdWRlXG4gICAgICAgICAgICBpZiAoY2hpbGRPZmZzZXQgPj0gb2Zmc2V0ICsgbGVuZ3RoKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgY2hpbGQgaXMgdG8gdGhlIGxlZnQgb2Ygb2YgdGhlIHNsaWNlIGJvdW5kYXJ5LCBleGNsdWRlXG4gICAgICAgICAgICBpZiAob2Zmc2V0ID49IGNoaWxkT2Zmc2V0ICsgY2hpbGRMZW5ndGgpIHsgY29udGludWU7IH1cbiAgICAgICAgICAgIC8vIElmIHRoZSBjaGlsZCBpcyBiZXR3ZWVuIGJvdGggbGVmdCBhbmQgcmlnaHQgYm91bmRhcmllcywgaW5jbHVkZSB3L28gc2xpY2luZ1xuICAgICAgICAgICAgaWYgKGNoaWxkT2Zmc2V0ID49IG9mZnNldCAmJiAoY2hpbGRPZmZzZXQgKyBjaGlsZExlbmd0aCkgPD0gb2Zmc2V0ICsgbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2h1bmtTbGljZXMucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgY2hpbGQgb3ZlcmxhcHMgb25lIG9mIHRoZSBzbGljZSBib3VuZGFyaWVzLCBpbmNsdWRlIHRoYXQgc2xpY2VcbiAgICAgICAgICAgIGNvbnN0IGJlZ2luID0gTWF0aC5tYXgoMCwgb2Zmc2V0IC0gY2hpbGRPZmZzZXQpO1xuICAgICAgICAgICAgY29uc3QgZW5kID0gYmVnaW4gKyBNYXRoLm1pbihjaGlsZExlbmd0aCAtIGJlZ2luLCAob2Zmc2V0ICsgbGVuZ3RoKSAtIGNoaWxkT2Zmc2V0KTtcbiAgICAgICAgICAgIGNodW5rU2xpY2VzLnB1c2goY2hpbGQuc2xpY2UoYmVnaW4sIGVuZCkpO1xuICAgICAgICB9XG4gICAgICAgIGNsb25lLl9jaHVua1ZlY3RvcnMgPSBjaHVua1NsaWNlcztcbiAgICAgICAgY2xvbmUuX2NodW5rT2Zmc2V0cyA9IENodW5rZWREYXRhLmNvbXB1dGVPZmZzZXRzKGNodW5rU2xpY2VzKTtcbiAgICAgICAgcmV0dXJuIGNsb25lO1xuICAgIH1cbiAgICBzdGF0aWMgY29tcHV0ZU9mZnNldHM8VCBleHRlbmRzIERhdGFUeXBlPihjaGlsZFZlY3RvcnM6IFZlY3RvcjxUPltdKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkT2Zmc2V0cyA9IG5ldyBVaW50MzJBcnJheShjaGlsZFZlY3RvcnMubGVuZ3RoICsgMSk7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMCwgbGVuZ3RoID0gY2hpbGRPZmZzZXRzLmxlbmd0aCwgY2hpbGRPZmZzZXQgPSBjaGlsZE9mZnNldHNbMF0gPSAwOyArK2luZGV4IDwgbGVuZ3RoOykge1xuICAgICAgICAgICAgY2hpbGRPZmZzZXRzW2luZGV4XSA9IChjaGlsZE9mZnNldCArPSBjaGlsZFZlY3RvcnNbaW5kZXggLSAxXS5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGlsZE9mZnNldHM7XG4gICAgfVxufVxuIl19

@@ -94,3 +94,3 @@ "use strict";

visitDictionary(type) {
return new data_1.DictionaryData(type, this.dictionaries.get(type.id), this.visit(type.indicies));
return new data_1.DictionaryData(type, this.dictionaries.get(type.id), this.visit(type.indices));
}

@@ -131,2 +131,2 @@ getFieldMetadata() { return this.nodes.next().value; }

//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUwsQ0FBQztDQUNKO0FBckVELHdDQXFFQyIsImZpbGUiOiJpcGMvcmVhZGVyL3ZlY3Rvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuLi8uLi92ZWN0b3InO1xuaW1wb3J0IHsgUmVjb3JkQmF0Y2ggfSBmcm9tICcuLi8uLi9yZWNvcmRiYXRjaCc7XG5pbXBvcnQgeyBUeXBlVmlzaXRvciB9IGZyb20gJy4uLy4uL3Zpc2l0b3InO1xuaW1wb3J0IHsgRmxhdFR5cGUsIE5lc3RlZFR5cGUsIExpc3RUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZSc7XG5pbXBvcnQgeyBNZXNzYWdlLCBGaWVsZE1ldGFkYXRhLCBCdWZmZXJNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhJztcbmltcG9ydCB7IEZsYXREYXRhLCBMaXN0RGF0YSwgTmVzdGVkRGF0YSwgU2luZ2xlTmVzdGVkRGF0YSwgRGVuc2VVbmlvbkRhdGEsIFNwYXJzZVVuaW9uRGF0YSwgQm9vbERhdGEsIEZsYXRMaXN0RGF0YSwgRGljdGlvbmFyeURhdGEgfSBmcm9tICcuLi8uLi9kYXRhJztcbmltcG9ydCB7XG4gICAgU2NoZW1hLCBGaWVsZCxcbiAgICBEaWN0aW9uYXJ5LFxuICAgIE51bGwsIEludCwgRmxvYXQsXG4gICAgQmluYXJ5LCBCb29sLCBVdGY4LCBEZWNpbWFsLFxuICAgIERhdGVfLCBUaW1lLCBUaW1lc3RhbXAsIEludGVydmFsLFxuICAgIExpc3QsIFN0cnVjdCwgVW5pb24sIEZpeGVkU2l6ZUJpbmFyeSwgRml4ZWRTaXplTGlzdCwgTWFwXyxcbiAgICBVbmlvbk1vZGUsIFNwYXJzZVVuaW9uLCBEZW5zZVVuaW9uLCBGbGF0TGlzdFR5cGUsIERhdGFUeXBlLFxufSBmcm9tICcuLi8uLi90eXBlJztcblxuZXhwb3J0IGZ1bmN0aW9uKiByZWFkUmVjb3JkQmF0Y2hlcyhtZXNzYWdlczogSXRlcmFibGU8eyBzY2hlbWE6IFNjaGVtYSwgbWVzc2FnZTogTWVzc2FnZSwgbG9hZGVyOiBUeXBlRGF0YUxvYWRlciB9Pikge1xuICAgIGZvciAoY29uc3QgeyBzY2hlbWEsIG1lc3NhZ2UsIGxvYWRlciB9IG9mIG1lc3NhZ2VzKSB7XG4gICAgICAgIHlpZWxkKiByZWFkUmVjb3JkQmF0Y2goc2NoZW1hLCBtZXNzYWdlLCBsb2FkZXIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiByZWFkUmVjb3JkQmF0Y2hlc0FzeW5jKG1lc3NhZ2VzOiBBc3luY0l0ZXJhYmxlPHsgc2NoZW1hOiBTY2hlbWEsIG1lc3NhZ2U6IE1lc3NhZ2UsIGxvYWRlcjogVHlwZURhdGFMb2FkZXIgfT4pIHtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHsgc2NoZW1hLCBtZXNzYWdlLCBsb2FkZXIgfSBvZiBtZXNzYWdlcykge1xuICAgICAgICB5aWVsZCogcmVhZFJlY29yZEJhdGNoKHNjaGVtYSwgbWVzc2FnZSwgbG9hZGVyKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogcmVhZFJlY29yZEJhdGNoKHNjaGVtYTogU2NoZW1hLCBtZXNzYWdlOiBNZXNzYWdlLCBsb2FkZXI6IFR5cGVEYXRhTG9hZGVyKSB7XG4gICAgaWYgKE1lc3NhZ2UuaXNSZWNvcmRCYXRjaChtZXNzYWdlKSkge1xuICAgICAgICB5aWVsZCBuZXcgUmVjb3JkQmF0Y2goc2NoZW1hLCBtZXNzYWdlLmxlbmd0aCwgbG9hZGVyLnZpc2l0RmllbGRzKHNjaGVtYS5maWVsZHMpKTtcbiAgICB9IGVsc2UgaWYgKE1lc3NhZ2UuaXNEaWN0aW9uYXJ5QmF0Y2gobWVzc2FnZSkpIHtcbiAgICAgICAgY29uc3QgZGljdGlvbmFyeUlkID0gbWVzc2FnZS5pZDtcbiAgICAgICAgY29uc3QgZGljdGlvbmFyaWVzID0gbG9hZGVyLmRpY3Rpb25hcmllcztcbiAgICAgICAgY29uc3QgZGljdGlvbmFyeUZpZWxkID0gc2NoZW1hLmRpY3Rpb25hcmllcy5nZXQoZGljdGlvbmFyeUlkKSE7XG4gICAgICAgIGNvbnN0IGRpY3Rpb25hcnlEYXRhVHlwZSA9IChkaWN0aW9uYXJ5RmllbGQudHlwZSBhcyBEaWN0aW9uYXJ5KS5kaWN0aW9uYXJ5O1xuICAgICAgICBsZXQgZGljdGlvbmFyeVZlY3RvciA9IFZlY3Rvci5jcmVhdGUobG9hZGVyLnZpc2l0KGRpY3Rpb25hcnlEYXRhVHlwZSkpO1xuICAgICAgICBpZiAobWVzc2FnZS5pc0RlbHRhICYmIGRpY3Rpb25hcmllcy5oYXMoZGljdGlvbmFyeUlkKSkge1xuICAgICAgICAgICAgZGljdGlvbmFyeVZlY3RvciA9IGRpY3Rpb25hcmllcy5nZXQoZGljdGlvbmFyeUlkKSEuY29uY2F0KGRpY3Rpb25hcnlWZWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGRpY3Rpb25hcmllcy5zZXQoZGljdGlvbmFyeUlkLCBkaWN0aW9uYXJ5VmVjdG9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUeXBlRGF0YUxvYWRlciBleHRlbmRzIFR5cGVWaXNpdG9yIHtcblxuICAgIHB1YmxpYyBkaWN0aW9uYXJpZXM6IE1hcDxudW1iZXIsIFZlY3Rvcj47XG4gICAgcHJvdGVjdGVkIG5vZGVzOiBJdGVyYXRvcjxGaWVsZE1ldGFkYXRhPjtcbiAgICBwcm90ZWN0ZWQgYnVmZmVyczogSXRlcmF0b3I8QnVmZmVyTWV0YWRhdGE+O1xuXG4gICAgY29uc3RydWN0b3Iobm9kZXM6IEl0ZXJhdG9yPEZpZWxkTWV0YWRhdGE+LCBidWZmZXJzOiBJdGVyYXRvcjxCdWZmZXJNZXRhZGF0YT4sIGRpY3Rpb25hcmllczogTWFwPG51bWJlciwgVmVjdG9yPikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5vZGVzID0gbm9kZXM7XG4gICAgICAgIHRoaXMuYnVmZmVycyA9IGJ1ZmZlcnM7XG4gICAgICAgIHRoaXMuZGljdGlvbmFyaWVzID0gZGljdGlvbmFyaWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyB2aXNpdEZpZWxkcyhmaWVsZHM6IEZpZWxkW10pIHsgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB0aGlzLnZpc2l0KGZpZWxkLnR5cGUpKTsgfVxuXG4gICAgcHVibGljIHZpc2l0TnVsbCAgICAgICAgICAgKHR5cGU6IE51bGwpICAgICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdE51bGxUeXBlKHR5cGUpOyAgIH1cbiAgICBwdWJsaWMgdmlzaXRJbnQgICAgICAgICAgICAodHlwZTogSW50KSAgICAgICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0RmxhdFR5cGUodHlwZSk7ICAgfVxuICAgIHB1YmxpYyB2aXNpdEZsb2F0ICAgICAgICAgICh0eXBlOiBGbG9hdCkgICAgICAgICAgIHsgcmV0dXJuIHRoaXMudmlzaXRGbGF0VHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0QmluYXJ5ICAgICAgICAgKHR5cGU6IEJpbmFyeSkgICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdEZsYXRMaXN0KHR5cGUpOyAgIH1cbiAgICBwdWJsaWMgdmlzaXRVdGY4ICAgICAgICAgICAodHlwZTogVXRmOCkgICAgICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0RmxhdExpc3QodHlwZSk7ICAgfVxuICAgIHB1YmxpYyB2aXNpdEJvb2wgICAgICAgICAgICh0eXBlOiBCb29sKSAgICAgICAgICAgIHsgcmV0dXJuIHRoaXMudmlzaXRCb29sVHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0RGVjaW1hbCAgICAgICAgKHR5cGU6IERlY2ltYWwpICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdEZsYXRUeXBlKHR5cGUpOyAgIH1cbiAgICBwdWJsaWMgdmlzaXREYXRlICAgICAgICAgICAodHlwZTogRGF0ZV8pICAgICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0RmxhdFR5cGUodHlwZSk7ICAgfVxuICAgIHB1YmxpYyB2aXNpdFRpbWUgICAgICAgICAgICh0eXBlOiBUaW1lKSAgICAgICAgICAgIHsgcmV0dXJuIHRoaXMudmlzaXRGbGF0VHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0VGltZXN0YW1wICAgICAgKHR5cGU6IFRpbWVzdGFtcCkgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdEZsYXRUeXBlKHR5cGUpOyAgIH1cbiAgICBwdWJsaWMgdmlzaXRJbnRlcnZhbCAgICAgICAodHlwZTogSW50ZXJ2YWwpICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0RmxhdFR5cGUodHlwZSk7ICAgfVxuICAgIHB1YmxpYyB2aXNpdExpc3QgICAgICAgICAgICh0eXBlOiBMaXN0KSAgICAgICAgICAgIHsgcmV0dXJuIHRoaXMudmlzaXRMaXN0VHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0U3RydWN0ICAgICAgICAgKHR5cGU6IFN0cnVjdCkgICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdE5lc3RlZFR5cGUodHlwZSk7IH1cbiAgICBwdWJsaWMgdmlzaXRVbmlvbiAgICAgICAgICAodHlwZTogVW5pb24pICAgICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0VW5pb25UeXBlKHR5cGUpOyAgfVxuICAgIHB1YmxpYyB2aXNpdEZpeGVkU2l6ZUJpbmFyeSh0eXBlOiBGaXhlZFNpemVCaW5hcnkpIHsgcmV0dXJuIHRoaXMudmlzaXRGbGF0VHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0Rml4ZWRTaXplTGlzdCAgKHR5cGU6IEZpeGVkU2l6ZUxpc3QpICAgeyByZXR1cm4gdGhpcy52aXNpdEZpeGVkU2l6ZUxpc3RUeXBlKHR5cGUpOyB9XG4gICAgcHVibGljIHZpc2l0TWFwICAgICAgICAgICAgKHR5cGU6IE1hcF8pICAgICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdE5lc3RlZFR5cGUodHlwZSk7IH1cbiAgICBwdWJsaWMgdmlzaXREaWN0aW9uYXJ5ICAgICAodHlwZTogRGljdGlvbmFyeSkgICAgICB7XG4gICAgICAgIHJldHVybiBuZXcgRGljdGlvbmFyeURhdGEodHlwZSwgdGhpcy5kaWN0aW9uYXJpZXMuZ2V0KHR5cGUuaWQpISwgdGhpcy52aXNpdCh0eXBlLmluZGljaWVzKSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBnZXRGaWVsZE1ldGFkYXRhKCkgeyByZXR1cm4gdGhpcy5ub2Rlcy5uZXh0KCkudmFsdWU7IH1cbiAgICBwcm90ZWN0ZWQgZ2V0QnVmZmVyTWV0YWRhdGEoKSB7IHJldHVybiB0aGlzLmJ1ZmZlcnMubmV4dCgpLnZhbHVlOyB9XG4gICAgcHJvdGVjdGVkIHJlYWROdWxsQml0bWFwPFQgZXh0ZW5kcyBEYXRhVHlwZT4odHlwZTogVCwgbnVsbENvdW50OiBudW1iZXIsIGJ1ZmZlciA9IHRoaXMuZ2V0QnVmZmVyTWV0YWRhdGEoKSkge1xuICAgICAgICByZXR1cm4gbnVsbENvdW50ID4gMCAmJiB0aGlzLnJlYWREYXRhKHR5cGUsIGJ1ZmZlcikgfHwgbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkRGF0YTxUIGV4dGVuZHMgRGF0YVR5cGU+KHR5cGU6IFQsIGJ1ZmZlcj86IEJ1ZmZlck1ldGFkYXRhKTogYW55O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkT2Zmc2V0czxUIGV4dGVuZHMgRGF0YVR5cGU+KHR5cGU6IFQsIGJ1ZmZlcj86IEJ1ZmZlck1ldGFkYXRhKTogYW55O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkVHlwZUlkczxUIGV4dGVuZHMgRGF0YVR5cGU+KHR5cGU6IFQsIGJ1ZmZlcj86IEJ1ZmZlck1ldGFkYXRhKTogYW55O1xuICAgIHByb3RlY3RlZCB2aXNpdE51bGxUeXBlKHR5cGU6IE51bGwsIHsgbGVuZ3RoLCBudWxsQ291bnQgfTogRmllbGRNZXRhZGF0YSA9IHRoaXMuZ2V0RmllbGRNZXRhZGF0YSgpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRmxhdERhdGE8YW55Pih0eXBlLCBsZW5ndGgsIHRoaXMucmVhZE51bGxCaXRtYXAodHlwZSwgbnVsbENvdW50KSwgbmV3IFVpbnQ4QXJyYXkoMCksIDAsIG51bGxDb3VudCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCB2aXNpdEZsYXRUeXBlPFQgZXh0ZW5kcyBGbGF0VHlwZT4odHlwZTogVCwgeyBsZW5ndGgsIG51bGxDb3VudCB9OiBGaWVsZE1ldGFkYXRhID0gdGhpcy5nZXRGaWVsZE1ldGFkYXRhKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGbGF0RGF0YTxUPih0eXBlLCBsZW5ndGgsIHRoaXMucmVhZE51bGxCaXRtYXAodHlwZSwgbnVsbENvdW50KSwgdGhpcy5yZWFkRGF0YSh0eXBlKSwgMCwgbnVsbENvdW50KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHZpc2l0Qm9vbFR5cGUodHlwZTogQm9vbCwgeyBsZW5ndGgsIG51bGxDb3VudCB9OiBGaWVsZE1ldGFkYXRhID0gdGhpcy5nZXRGaWVsZE1ldGFkYXRhKCksIGRhdGE/OiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiBuZXcgQm9vbERhdGEodHlwZSwgbGVuZ3RoLCB0aGlzLnJlYWROdWxsQml0bWFwKHR5cGUsIG51bGxDb3VudCksIGRhdGEgfHwgdGhpcy5yZWFkRGF0YSh0eXBlKSwgMCwgbnVsbENvdW50KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHZpc2l0RmxhdExpc3Q8VCBleHRlbmRzIEZsYXRMaXN0VHlwZT4odHlwZTogVCwgeyBsZW5ndGgsIG51bGxDb3VudCB9OiBGaWVsZE1ldGFkYXRhID0gdGhpcy5nZXRGaWVsZE1ldGFkYXRhKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGbGF0TGlzdERhdGE8VD4odHlwZSwgbGVuZ3RoLCB0aGlzLnJlYWROdWxsQml0bWFwKHR5cGUsIG51bGxDb3VudCksIHRoaXMucmVhZE9mZnNldHModHlwZSksIHRoaXMucmVhZERhdGEodHlwZSksIDAsIG51bGxDb3VudCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCB2aXNpdExpc3RUeXBlPFQgZXh0ZW5kcyBMaXN0VHlwZT4odHlwZTogVCwgeyBsZW5ndGgsIG51bGxDb3VudCB9OiBGaWVsZE1ldGFkYXRhID0gdGhpcy5nZXRGaWVsZE1ldGFkYXRhKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaXN0RGF0YTxUPih0eXBlLCBsZW5ndGgsIHRoaXMucmVhZE51bGxCaXRtYXAodHlwZSwgbnVsbENvdW50KSwgdGhpcy5yZWFkT2Zmc2V0cyh0eXBlKSwgdGhpcy52aXNpdCh0eXBlLmNoaWxkcmVuIVswXS50eXBlKSwgMCwgbnVsbENvdW50KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHZpc2l0Rml4ZWRTaXplTGlzdFR5cGU8VCBleHRlbmRzIEZpeGVkU2l6ZUxpc3Q+KHR5cGU6IFQsIHsgbGVuZ3RoLCBudWxsQ291bnQgfTogRmllbGRNZXRhZGF0YSA9IHRoaXMuZ2V0RmllbGRNZXRhZGF0YSgpKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2luZ2xlTmVzdGVkRGF0YTxUPih0eXBlLCBsZW5ndGgsIHRoaXMucmVhZE51bGxCaXRtYXAodHlwZSwgbnVsbENvdW50KSwgdGhpcy52aXNpdCh0eXBlLmNoaWxkcmVuIVswXS50eXBlKSwgMCwgbnVsbENvdW50KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHZpc2l0TmVzdGVkVHlwZTxUIGV4dGVuZHMgTmVzdGVkVHlwZT4odHlwZTogVCwgeyBsZW5ndGgsIG51bGxDb3VudCB9OiBGaWVsZE1ldGFkYXRhID0gdGhpcy5nZXRGaWVsZE1ldGFkYXRhKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOZXN0ZWREYXRhPFQ+KHR5cGUsIGxlbmd0aCwgdGhpcy5yZWFkTnVsbEJpdG1hcCh0eXBlLCBudWxsQ291bnQpLCB0aGlzLnZpc2l0RmllbGRzKHR5cGUuY2hpbGRyZW4pLCAwLCBudWxsQ291bnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgdmlzaXRVbmlvblR5cGUodHlwZTogRGVuc2VVbmlvbiB8IFNwYXJzZVVuaW9uLCB7IGxlbmd0aCwgbnVsbENvdW50IH06IEZpZWxkTWV0YWRhdGEgPSB0aGlzLmdldEZpZWxkTWV0YWRhdGEoKSkge1xuICAgICAgICByZXR1cm4gdHlwZS5tb2RlID09PSBVbmlvbk1vZGUuU3BhcnNlID9cbiAgICAgICAgICAgIG5ldyBTcGFyc2VVbmlvbkRhdGEodHlwZSBhcyBTcGFyc2VVbmlvbiwgbGVuZ3RoLCB0aGlzLnJlYWROdWxsQml0bWFwKHR5cGUsIG51bGxDb3VudCksIHRoaXMucmVhZFR5cGVJZHModHlwZSksIHRoaXMudmlzaXRGaWVsZHModHlwZS5jaGlsZHJlbiksIDAsIG51bGxDb3VudCkgOlxuICAgICAgICAgICAgbmV3IERlbnNlVW5pb25EYXRhKHR5cGUgYXMgRGVuc2VVbmlvbiwgbGVuZ3RoLCB0aGlzLnJlYWROdWxsQml0bWFwKHR5cGUsIG51bGxDb3VudCksIHRoaXMucmVhZE9mZnNldHModHlwZSksIHRoaXMucmVhZFR5cGVJZHModHlwZSksIHRoaXMudmlzaXRGaWVsZHModHlwZS5jaGlsZHJlbiksIDAsIG51bGxDb3VudCk7XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUwsQ0FBQztDQUNKO0FBckVELHdDQXFFQyIsImZpbGUiOiJpcGMvcmVhZGVyL3ZlY3Rvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuLi8uLi92ZWN0b3InO1xuaW1wb3J0IHsgUmVjb3JkQmF0Y2ggfSBmcm9tICcuLi8uLi9yZWNvcmRiYXRjaCc7XG5pbXBvcnQgeyBUeXBlVmlzaXRvciB9IGZyb20gJy4uLy4uL3Zpc2l0b3InO1xuaW1wb3J0IHsgRmxhdFR5cGUsIE5lc3RlZFR5cGUsIExpc3RUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZSc7XG5pbXBvcnQgeyBNZXNzYWdlLCBGaWVsZE1ldGFkYXRhLCBCdWZmZXJNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhJztcbmltcG9ydCB7IEZsYXREYXRhLCBMaXN0RGF0YSwgTmVzdGVkRGF0YSwgU2luZ2xlTmVzdGVkRGF0YSwgRGVuc2VVbmlvbkRhdGEsIFNwYXJzZVVuaW9uRGF0YSwgQm9vbERhdGEsIEZsYXRMaXN0RGF0YSwgRGljdGlvbmFyeURhdGEgfSBmcm9tICcuLi8uLi9kYXRhJztcbmltcG9ydCB7XG4gICAgU2NoZW1hLCBGaWVsZCxcbiAgICBEaWN0aW9uYXJ5LFxuICAgIE51bGwsIEludCwgRmxvYXQsXG4gICAgQmluYXJ5LCBCb29sLCBVdGY4LCBEZWNpbWFsLFxuICAgIERhdGVfLCBUaW1lLCBUaW1lc3RhbXAsIEludGVydmFsLFxuICAgIExpc3QsIFN0cnVjdCwgVW5pb24sIEZpeGVkU2l6ZUJpbmFyeSwgRml4ZWRTaXplTGlzdCwgTWFwXyxcbiAgICBVbmlvbk1vZGUsIFNwYXJzZVVuaW9uLCBEZW5zZVVuaW9uLCBGbGF0TGlzdFR5cGUsIERhdGFUeXBlLFxufSBmcm9tICcuLi8uLi90eXBlJztcblxuZXhwb3J0IGZ1bmN0aW9uKiByZWFkUmVjb3JkQmF0Y2hlcyhtZXNzYWdlczogSXRlcmFibGU8eyBzY2hlbWE6IFNjaGVtYSwgbWVzc2FnZTogTWVzc2FnZSwgbG9hZGVyOiBUeXBlRGF0YUxvYWRlciB9Pikge1xuICAgIGZvciAoY29uc3QgeyBzY2hlbWEsIG1lc3NhZ2UsIGxvYWRlciB9IG9mIG1lc3NhZ2VzKSB7XG4gICAgICAgIHlpZWxkKiByZWFkUmVjb3JkQmF0Y2goc2NoZW1hLCBtZXNzYWdlLCBsb2FkZXIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiByZWFkUmVjb3JkQmF0Y2hlc0FzeW5jKG1lc3NhZ2VzOiBBc3luY0l0ZXJhYmxlPHsgc2NoZW1hOiBTY2hlbWEsIG1lc3NhZ2U6IE1lc3NhZ2UsIGxvYWRlcjogVHlwZURhdGFMb2FkZXIgfT4pIHtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHsgc2NoZW1hLCBtZXNzYWdlLCBsb2FkZXIgfSBvZiBtZXNzYWdlcykge1xuICAgICAgICB5aWVsZCogcmVhZFJlY29yZEJhdGNoKHNjaGVtYSwgbWVzc2FnZSwgbG9hZGVyKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogcmVhZFJlY29yZEJhdGNoKHNjaGVtYTogU2NoZW1hLCBtZXNzYWdlOiBNZXNzYWdlLCBsb2FkZXI6IFR5cGVEYXRhTG9hZGVyKSB7XG4gICAgaWYgKE1lc3NhZ2UuaXNSZWNvcmRCYXRjaChtZXNzYWdlKSkge1xuICAgICAgICB5aWVsZCBuZXcgUmVjb3JkQmF0Y2goc2NoZW1hLCBtZXNzYWdlLmxlbmd0aCwgbG9hZGVyLnZpc2l0RmllbGRzKHNjaGVtYS5maWVsZHMpKTtcbiAgICB9IGVsc2UgaWYgKE1lc3NhZ2UuaXNEaWN0aW9uYXJ5QmF0Y2gobWVzc2FnZSkpIHtcbiAgICAgICAgY29uc3QgZGljdGlvbmFyeUlkID0gbWVzc2FnZS5pZDtcbiAgICAgICAgY29uc3QgZGljdGlvbmFyaWVzID0gbG9hZGVyLmRpY3Rpb25hcmllcztcbiAgICAgICAgY29uc3QgZGljdGlvbmFyeUZpZWxkID0gc2NoZW1hLmRpY3Rpb25hcmllcy5nZXQoZGljdGlvbmFyeUlkKSE7XG4gICAgICAgIGNvbnN0IGRpY3Rpb25hcnlEYXRhVHlwZSA9IChkaWN0aW9uYXJ5RmllbGQudHlwZSBhcyBEaWN0aW9uYXJ5KS5kaWN0aW9uYXJ5O1xuICAgICAgICBsZXQgZGljdGlvbmFyeVZlY3RvciA9IFZlY3Rvci5jcmVhdGUobG9hZGVyLnZpc2l0KGRpY3Rpb25hcnlEYXRhVHlwZSkpO1xuICAgICAgICBpZiAobWVzc2FnZS5pc0RlbHRhICYmIGRpY3Rpb25hcmllcy5oYXMoZGljdGlvbmFyeUlkKSkge1xuICAgICAgICAgICAgZGljdGlvbmFyeVZlY3RvciA9IGRpY3Rpb25hcmllcy5nZXQoZGljdGlvbmFyeUlkKSEuY29uY2F0KGRpY3Rpb25hcnlWZWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGRpY3Rpb25hcmllcy5zZXQoZGljdGlvbmFyeUlkLCBkaWN0aW9uYXJ5VmVjdG9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUeXBlRGF0YUxvYWRlciBleHRlbmRzIFR5cGVWaXNpdG9yIHtcblxuICAgIHB1YmxpYyBkaWN0aW9uYXJpZXM6IE1hcDxudW1iZXIsIFZlY3Rvcj47XG4gICAgcHJvdGVjdGVkIG5vZGVzOiBJdGVyYXRvcjxGaWVsZE1ldGFkYXRhPjtcbiAgICBwcm90ZWN0ZWQgYnVmZmVyczogSXRlcmF0b3I8QnVmZmVyTWV0YWRhdGE+O1xuXG4gICAgY29uc3RydWN0b3Iobm9kZXM6IEl0ZXJhdG9yPEZpZWxkTWV0YWRhdGE+LCBidWZmZXJzOiBJdGVyYXRvcjxCdWZmZXJNZXRhZGF0YT4sIGRpY3Rpb25hcmllczogTWFwPG51bWJlciwgVmVjdG9yPikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5vZGVzID0gbm9kZXM7XG4gICAgICAgIHRoaXMuYnVmZmVycyA9IGJ1ZmZlcnM7XG4gICAgICAgIHRoaXMuZGljdGlvbmFyaWVzID0gZGljdGlvbmFyaWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyB2aXNpdEZpZWxkcyhmaWVsZHM6IEZpZWxkW10pIHsgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB0aGlzLnZpc2l0KGZpZWxkLnR5cGUpKTsgfVxuXG4gICAgcHVibGljIHZpc2l0TnVsbCAgICAgICAgICAgKHR5cGU6IE51bGwpICAgICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdE51bGxUeXBlKHR5cGUpOyAgIH1cbiAgICBwdWJsaWMgdmlzaXRJbnQgICAgICAgICAgICAodHlwZTogSW50KSAgICAgICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0RmxhdFR5cGUodHlwZSk7ICAgfVxuICAgIHB1YmxpYyB2aXNpdEZsb2F0ICAgICAgICAgICh0eXBlOiBGbG9hdCkgICAgICAgICAgIHsgcmV0dXJuIHRoaXMudmlzaXRGbGF0VHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0QmluYXJ5ICAgICAgICAgKHR5cGU6IEJpbmFyeSkgICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdEZsYXRMaXN0KHR5cGUpOyAgIH1cbiAgICBwdWJsaWMgdmlzaXRVdGY4ICAgICAgICAgICAodHlwZTogVXRmOCkgICAgICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0RmxhdExpc3QodHlwZSk7ICAgfVxuICAgIHB1YmxpYyB2aXNpdEJvb2wgICAgICAgICAgICh0eXBlOiBCb29sKSAgICAgICAgICAgIHsgcmV0dXJuIHRoaXMudmlzaXRCb29sVHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0RGVjaW1hbCAgICAgICAgKHR5cGU6IERlY2ltYWwpICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdEZsYXRUeXBlKHR5cGUpOyAgIH1cbiAgICBwdWJsaWMgdmlzaXREYXRlICAgICAgICAgICAodHlwZTogRGF0ZV8pICAgICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0RmxhdFR5cGUodHlwZSk7ICAgfVxuICAgIHB1YmxpYyB2aXNpdFRpbWUgICAgICAgICAgICh0eXBlOiBUaW1lKSAgICAgICAgICAgIHsgcmV0dXJuIHRoaXMudmlzaXRGbGF0VHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0VGltZXN0YW1wICAgICAgKHR5cGU6IFRpbWVzdGFtcCkgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdEZsYXRUeXBlKHR5cGUpOyAgIH1cbiAgICBwdWJsaWMgdmlzaXRJbnRlcnZhbCAgICAgICAodHlwZTogSW50ZXJ2YWwpICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0RmxhdFR5cGUodHlwZSk7ICAgfVxuICAgIHB1YmxpYyB2aXNpdExpc3QgICAgICAgICAgICh0eXBlOiBMaXN0KSAgICAgICAgICAgIHsgcmV0dXJuIHRoaXMudmlzaXRMaXN0VHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0U3RydWN0ICAgICAgICAgKHR5cGU6IFN0cnVjdCkgICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdE5lc3RlZFR5cGUodHlwZSk7IH1cbiAgICBwdWJsaWMgdmlzaXRVbmlvbiAgICAgICAgICAodHlwZTogVW5pb24pICAgICAgICAgICB7IHJldHVybiB0aGlzLnZpc2l0VW5pb25UeXBlKHR5cGUpOyAgfVxuICAgIHB1YmxpYyB2aXNpdEZpeGVkU2l6ZUJpbmFyeSh0eXBlOiBGaXhlZFNpemVCaW5hcnkpIHsgcmV0dXJuIHRoaXMudmlzaXRGbGF0VHlwZSh0eXBlKTsgICB9XG4gICAgcHVibGljIHZpc2l0Rml4ZWRTaXplTGlzdCAgKHR5cGU6IEZpeGVkU2l6ZUxpc3QpICAgeyByZXR1cm4gdGhpcy52aXNpdEZpeGVkU2l6ZUxpc3RUeXBlKHR5cGUpOyB9XG4gICAgcHVibGljIHZpc2l0TWFwICAgICAgICAgICAgKHR5cGU6IE1hcF8pICAgICAgICAgICAgeyByZXR1cm4gdGhpcy52aXNpdE5lc3RlZFR5cGUodHlwZSk7IH1cbiAgICBwdWJsaWMgdmlzaXREaWN0aW9uYXJ5ICAgICAodHlwZTogRGljdGlvbmFyeSkgICAgICB7XG4gICAgICAgIHJldHVybiBuZXcgRGljdGlvbmFyeURhdGEodHlwZSwgdGhpcy5kaWN0aW9uYXJpZXMuZ2V0KHR5cGUuaWQpISwgdGhpcy52aXNpdCh0eXBlLmluZGljZXMpKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGdldEZpZWxkTWV0YWRhdGEoKSB7IHJldHVybiB0aGlzLm5vZGVzLm5leHQoKS52YWx1ZTsgfVxuICAgIHByb3RlY3RlZCBnZXRCdWZmZXJNZXRhZGF0YSgpIHsgcmV0dXJuIHRoaXMuYnVmZmVycy5uZXh0KCkudmFsdWU7IH1cbiAgICBwcm90ZWN0ZWQgcmVhZE51bGxCaXRtYXA8VCBleHRlbmRzIERhdGFUeXBlPih0eXBlOiBULCBudWxsQ291bnQ6IG51bWJlciwgYnVmZmVyID0gdGhpcy5nZXRCdWZmZXJNZXRhZGF0YSgpKSB7XG4gICAgICAgIHJldHVybiBudWxsQ291bnQgPiAwICYmIHRoaXMucmVhZERhdGEodHlwZSwgYnVmZmVyKSB8fCBuZXcgVWludDhBcnJheSgwKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWREYXRhPFQgZXh0ZW5kcyBEYXRhVHlwZT4odHlwZTogVCwgYnVmZmVyPzogQnVmZmVyTWV0YWRhdGEpOiBhbnk7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRPZmZzZXRzPFQgZXh0ZW5kcyBEYXRhVHlwZT4odHlwZTogVCwgYnVmZmVyPzogQnVmZmVyTWV0YWRhdGEpOiBhbnk7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRUeXBlSWRzPFQgZXh0ZW5kcyBEYXRhVHlwZT4odHlwZTogVCwgYnVmZmVyPzogQnVmZmVyTWV0YWRhdGEpOiBhbnk7XG4gICAgcHJvdGVjdGVkIHZpc2l0TnVsbFR5cGUodHlwZTogTnVsbCwgeyBsZW5ndGgsIG51bGxDb3VudCB9OiBGaWVsZE1ldGFkYXRhID0gdGhpcy5nZXRGaWVsZE1ldGFkYXRhKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGbGF0RGF0YTxhbnk+KHR5cGUsIGxlbmd0aCwgdGhpcy5yZWFkTnVsbEJpdG1hcCh0eXBlLCBudWxsQ291bnQpLCBuZXcgVWludDhBcnJheSgwKSwgMCwgbnVsbENvdW50KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHZpc2l0RmxhdFR5cGU8VCBleHRlbmRzIEZsYXRUeXBlPih0eXBlOiBULCB7IGxlbmd0aCwgbnVsbENvdW50IH06IEZpZWxkTWV0YWRhdGEgPSB0aGlzLmdldEZpZWxkTWV0YWRhdGEoKSkge1xuICAgICAgICByZXR1cm4gbmV3IEZsYXREYXRhPFQ+KHR5cGUsIGxlbmd0aCwgdGhpcy5yZWFkTnVsbEJpdG1hcCh0eXBlLCBudWxsQ291bnQpLCB0aGlzLnJlYWREYXRhKHR5cGUpLCAwLCBudWxsQ291bnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgdmlzaXRCb29sVHlwZSh0eXBlOiBCb29sLCB7IGxlbmd0aCwgbnVsbENvdW50IH06IEZpZWxkTWV0YWRhdGEgPSB0aGlzLmdldEZpZWxkTWV0YWRhdGEoKSwgZGF0YT86IFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCb29sRGF0YSh0eXBlLCBsZW5ndGgsIHRoaXMucmVhZE51bGxCaXRtYXAodHlwZSwgbnVsbENvdW50KSwgZGF0YSB8fCB0aGlzLnJlYWREYXRhKHR5cGUpLCAwLCBudWxsQ291bnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgdmlzaXRGbGF0TGlzdDxUIGV4dGVuZHMgRmxhdExpc3RUeXBlPih0eXBlOiBULCB7IGxlbmd0aCwgbnVsbENvdW50IH06IEZpZWxkTWV0YWRhdGEgPSB0aGlzLmdldEZpZWxkTWV0YWRhdGEoKSkge1xuICAgICAgICByZXR1cm4gbmV3IEZsYXRMaXN0RGF0YTxUPih0eXBlLCBsZW5ndGgsIHRoaXMucmVhZE51bGxCaXRtYXAodHlwZSwgbnVsbENvdW50KSwgdGhpcy5yZWFkT2Zmc2V0cyh0eXBlKSwgdGhpcy5yZWFkRGF0YSh0eXBlKSwgMCwgbnVsbENvdW50KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHZpc2l0TGlzdFR5cGU8VCBleHRlbmRzIExpc3RUeXBlPih0eXBlOiBULCB7IGxlbmd0aCwgbnVsbENvdW50IH06IEZpZWxkTWV0YWRhdGEgPSB0aGlzLmdldEZpZWxkTWV0YWRhdGEoKSkge1xuICAgICAgICByZXR1cm4gbmV3IExpc3REYXRhPFQ+KHR5cGUsIGxlbmd0aCwgdGhpcy5yZWFkTnVsbEJpdG1hcCh0eXBlLCBudWxsQ291bnQpLCB0aGlzLnJlYWRPZmZzZXRzKHR5cGUpLCB0aGlzLnZpc2l0KHR5cGUuY2hpbGRyZW4hWzBdLnR5cGUpLCAwLCBudWxsQ291bnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgdmlzaXRGaXhlZFNpemVMaXN0VHlwZTxUIGV4dGVuZHMgRml4ZWRTaXplTGlzdD4odHlwZTogVCwgeyBsZW5ndGgsIG51bGxDb3VudCB9OiBGaWVsZE1ldGFkYXRhID0gdGhpcy5nZXRGaWVsZE1ldGFkYXRhKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVOZXN0ZWREYXRhPFQ+KHR5cGUsIGxlbmd0aCwgdGhpcy5yZWFkTnVsbEJpdG1hcCh0eXBlLCBudWxsQ291bnQpLCB0aGlzLnZpc2l0KHR5cGUuY2hpbGRyZW4hWzBdLnR5cGUpLCAwLCBudWxsQ291bnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgdmlzaXROZXN0ZWRUeXBlPFQgZXh0ZW5kcyBOZXN0ZWRUeXBlPih0eXBlOiBULCB7IGxlbmd0aCwgbnVsbENvdW50IH06IEZpZWxkTWV0YWRhdGEgPSB0aGlzLmdldEZpZWxkTWV0YWRhdGEoKSkge1xuICAgICAgICByZXR1cm4gbmV3IE5lc3RlZERhdGE8VD4odHlwZSwgbGVuZ3RoLCB0aGlzLnJlYWROdWxsQml0bWFwKHR5cGUsIG51bGxDb3VudCksIHRoaXMudmlzaXRGaWVsZHModHlwZS5jaGlsZHJlbiksIDAsIG51bGxDb3VudCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCB2aXNpdFVuaW9uVHlwZSh0eXBlOiBEZW5zZVVuaW9uIHwgU3BhcnNlVW5pb24sIHsgbGVuZ3RoLCBudWxsQ291bnQgfTogRmllbGRNZXRhZGF0YSA9IHRoaXMuZ2V0RmllbGRNZXRhZGF0YSgpKSB7XG4gICAgICAgIHJldHVybiB0eXBlLm1vZGUgPT09IFVuaW9uTW9kZS5TcGFyc2UgP1xuICAgICAgICAgICAgbmV3IFNwYXJzZVVuaW9uRGF0YSh0eXBlIGFzIFNwYXJzZVVuaW9uLCBsZW5ndGgsIHRoaXMucmVhZE51bGxCaXRtYXAodHlwZSwgbnVsbENvdW50KSwgdGhpcy5yZWFkVHlwZUlkcyh0eXBlKSwgdGhpcy52aXNpdEZpZWxkcyh0eXBlLmNoaWxkcmVuKSwgMCwgbnVsbENvdW50KSA6XG4gICAgICAgICAgICBuZXcgRGVuc2VVbmlvbkRhdGEodHlwZSBhcyBEZW5zZVVuaW9uLCBsZW5ndGgsIHRoaXMucmVhZE51bGxCaXRtYXAodHlwZSwgbnVsbENvdW50KSwgdGhpcy5yZWFkT2Zmc2V0cyh0eXBlKSwgdGhpcy5yZWFkVHlwZUlkcyh0eXBlKSwgdGhpcy52aXNpdEZpZWxkcyh0eXBlLmNoaWxkcmVuKSwgMCwgbnVsbENvdW50KTtcbiAgICB9XG59XG4iXX0=
{
"name": "@apache-arrow/es2015-cjs",
"version": "0.3.0",
"version": "0.3.1",
"main": "Arrow.js",

@@ -5,0 +5,0 @@ "types": "Arrow.d.ts",

@@ -7,4 +7,7 @@ import { RecordBatch } from './recordbatch';

eq(other: Value<T> | T): Predicate;
lteq(other: Value<T> | T): Predicate;
gteq(other: Value<T> | T): Predicate;
le(other: Value<T> | T): Predicate;
ge(other: Value<T> | T): Predicate;
lt(other: Value<T> | T): Predicate;
gt(other: Value<T> | T): Predicate;
ne(other: Value<T> | T): Predicate;
}

@@ -26,2 +29,3 @@ export declare class Literal<T = any> extends Value<T> {

or(expr: Predicate): Predicate;
not(): Predicate;
ands(): Predicate[];

@@ -71,2 +75,7 @@ }

}
export declare class Not extends Predicate {
readonly child: Predicate;
constructor(child: Predicate);
bind(batch: RecordBatch): (idx: number, batch: RecordBatch) => boolean;
}
export declare class CustomPredicate extends Predicate {

@@ -73,0 +82,0 @@ private next;

@@ -27,3 +27,3 @@ "use strict";

}
lteq(other) {
le(other) {
if (!(other instanceof Value)) {

@@ -34,3 +34,3 @@ other = new Literal(other);

}
gteq(other) {
ge(other) {
if (!(other instanceof Value)) {

@@ -41,2 +41,11 @@ other = new Literal(other);

}
lt(other) {
return new Not(this.ge(other));
}
gt(other) {
return new Not(this.le(other));
}
ne(other) {
return new Not(this.eq(other));
}
}

@@ -80,2 +89,3 @@ exports.Value = Value;

or(expr) { return new Or(this, expr); }
not() { return new Not(this); }
ands() { return [this]; }

@@ -222,2 +232,13 @@ }

exports.GTeq = GTeq;
class Not extends Predicate {
constructor(child) {
super();
this.child = child;
}
bind(batch) {
const func = this.child.bind(batch);
return (idx, batch) => !func(idx, batch);
}
}
exports.Not = Not;
class CustomPredicate extends Predicate {

@@ -244,2 +265,2 @@ constructor(next, bind_) {

//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxJQUFpQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNKO0FBckJELG9CQXFCQztBQUVELHFCQUE2QixTQUFRLFNBQVM7SUFDMUMsWUFBb0IsSUFBbUIsRUFBVSxLQUFtQztRQUNoRixLQUFLLEVBQUUsQ0FBQztRQURRLFNBQUksR0FBSixJQUFJLENBQWU7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUE4QjtJQUVwRixDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQWtCO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztDQUNKO0FBVEQsMENBU0M7QUFFRCxhQUFvQixDQUFNLElBQWdCLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBbEUsa0JBQWtFO0FBQ2xFLGFBQW9CLENBQVMsSUFBYyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQS9ELGtCQUErRDtBQUMvRCxnQkFBdUIsSUFBbUIsRUFBRSxJQUFrQztJQUMxRSxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFGRCx3QkFFQyIsImZpbGUiOiJwcmVkaWNhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgUmVjb3JkQmF0Y2ggfSBmcm9tICcuL3JlY29yZGJhdGNoJztcbmltcG9ydCB7IFZlY3RvciwgRGljdGlvbmFyeVZlY3RvciB9IGZyb20gJy4vdmVjdG9yJztcblxuZXhwb3J0IHR5cGUgVmFsdWVGdW5jPFQ+ID0gKGlkeDogbnVtYmVyLCBjb2xzOiBSZWNvcmRCYXRjaCkgPT4gVCB8IG51bGw7XG5leHBvcnQgdHlwZSBQcmVkaWNhdGVGdW5jID0gKGlkeDogbnVtYmVyLCBjb2xzOiBSZWNvcmRCYXRjaCkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhbHVlPFQ+IHtcbiAgICBlcShvdGhlcjogVmFsdWU8VD4gfCBUKTogUHJlZGljYXRlIHtcbiAgICAgICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBWYWx1ZSkpIHsgb3RoZXIgPSBuZXcgTGl0ZXJhbChvdGhlcik7IH1cbiAgICAgICAgcmV0dXJuIG5ldyBFcXVhbHModGhpcywgb3RoZXIpO1xuICAgIH1cbiAgICBsdGVxKG90aGVyOiBWYWx1ZTxUPiB8IFQpOiBQcmVkaWNhdGUge1xuICAgICAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFZhbHVlKSkgeyBvdGhlciA9IG5ldyBMaXRlcmFsKG90aGVyKTsgfVxuICAgICAgICByZXR1cm4gbmV3IExUZXEodGhpcywgb3RoZXIpO1xuICAgIH1cbiAgICBndGVxKG90aGVyOiBWYWx1ZTxUPiB8IFQpOiBQcmVkaWNhdGUge1xuICAgICAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFZhbHVlKSkgeyBvdGhlciA9IG5ldyBMaXRlcmFsKG90aGVyKTsgfVxuICAgICAgICByZXR1cm4gbmV3IEdUZXEodGhpcywgb3RoZXIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpdGVyYWw8VD0gYW55PiBleHRlbmRzIFZhbHVlPFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdjogVCkgeyBzdXBlcigpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2w8VD0gYW55PiBleHRlbmRzIFZhbHVlPFQ+IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHVibGljIHZlY3RvcjogVmVjdG9yO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwdWJsaWMgY29saWR4OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nKSB7IHN1cGVyKCk7IH1cbiAgICBiaW5kKGJhdGNoOiBSZWNvcmRCYXRjaCkge1xuICAgICAgICBpZiAoIXRoaXMuY29saWR4KSB7XG4gICAgICAgICAgICAvLyBBc3N1bWUgY29sdW1uIGluZGV4IGRvZXNuJ3QgY2hhbmdlIGJldHdlZW4gY2FsbHMgdG8gYmluZFxuICAgICAgICAgICAgLy90aGlzLmNvbGlkeCA9IGNvbHMuZmluZEluZGV4KHYgPT4gdi5uYW1lLmluZGV4T2YodGhpcy5uYW1lKSAhPSAtMSk7XG4gICAgICAgICAgICB0aGlzLmNvbGlkeCA9IC0xO1xuICAgICAgICAgICAgY29uc3QgZmllbGRzID0gYmF0Y2guc2NoZW1hLmZpZWxkcztcbiAgICAgICAgICAgIGZvciAobGV0IGlkeCA9IC0xOyArK2lkeCA8IGZpZWxkcy5sZW5ndGg7KSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tpZHhdLm5hbWUgPT09IHRoaXMubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbGlkeCA9IGlkeDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY29saWR4IDwgMCkgeyB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBiaW5kIENvbCBcIiR7dGhpcy5uYW1lfVwiYCk7IH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZlY3RvciA9IGJhdGNoLmdldENoaWxkQXQodGhpcy5jb2xpZHgpITtcbiAgICAgICAgcmV0dXJuIHRoaXMudmVjdG9yLmdldC5iaW5kKHRoaXMudmVjdG9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcmVkaWNhdGUge1xuICAgIGFic3RyYWN0IGJpbmQoYmF0Y2g6IFJlY29yZEJhdGNoKTogUHJlZGljYXRlRnVuYztcbiAgICBhbmQoZXhwcjogUHJlZGljYXRlKTogUHJlZGljYXRlIHsgcmV0dXJuIG5ldyBBbmQodGhpcywgZXhwcik7IH1cbiAgICBvcihleHByOiBQcmVkaWNhdGUpOiBQcmVkaWNhdGUgeyByZXR1cm4gbmV3IE9yKHRoaXMsIGV4cHIpOyB9XG4gICAgYW5kcygpOiBQcmVkaWNhdGVbXSB7IHJldHVybiBbdGhpc107IH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBhcmlzb25QcmVkaWNhdGU8VD0gYW55PiBleHRlbmRzIFByZWRpY2F0ZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGxlZnQ6IFZhbHVlPFQ+LCBwdWJsaWMgcmVhZG9ubHkgcmlnaHQ6IFZhbHVlPFQ+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgYmluZChiYXRjaDogUmVjb3JkQmF0Y2gpIHtcbiAgICAgICAgaWYgKHRoaXMubGVmdCBpbnN0YW5jZW9mIExpdGVyYWwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJpZ2h0IGluc3RhbmNlb2YgTGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9iaW5kTGl0TGl0KGJhdGNoLCB0aGlzLmxlZnQsIHRoaXMucmlnaHQpO1xuICAgICAgICAgICAgfSBlbHNlIHsgLy8gcmlnaHQgaXMgYSBDb2xcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9iaW5kTGl0Q29sKGJhdGNoLCB0aGlzLmxlZnQsIHRoaXMucmlnaHQgYXMgQ29sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgLy8gbGVmdCBpcyBhIENvbFxuICAgICAgICAgICAgaWYgKHRoaXMucmlnaHQgaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRDb2xMaXQoYmF0Y2gsIHRoaXMubGVmdCBhcyBDb2wsIHRoaXMucmlnaHQpO1xuICAgICAgICAgICAgfSBlbHNlIHsgLy8gcmlnaHQgaXMgYSBDb2xcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYmluZENvbENvbChiYXRjaCwgdGhpcy5sZWZ0IGFzIENvbCwgdGhpcy5yaWdodCBhcyBDb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9iaW5kTGl0TGl0KGJhdGNoOiBSZWNvcmRCYXRjaCwgbGVmdDogTGl0ZXJhbCwgcmlnaHQ6IExpdGVyYWwpOiBQcmVkaWNhdGVGdW5jO1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfYmluZENvbENvbChiYXRjaDogUmVjb3JkQmF0Y2gsIGxlZnQ6IENvbCwgcmlnaHQ6IENvbCk6IFByZWRpY2F0ZUZ1bmM7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9iaW5kQ29sTGl0KGJhdGNoOiBSZWNvcmRCYXRjaCwgY29sOiBDb2wsIGxpdDogTGl0ZXJhbCk6IFByZWRpY2F0ZUZ1bmM7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9iaW5kTGl0Q29sKGJhdGNoOiBSZWNvcmRCYXRjaCwgbGl0OiBMaXRlcmFsLCBjb2w6IENvbCk6IFByZWRpY2F0ZUZ1bmM7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21iaW5hdGlvblByZWRpY2F0ZSBleHRlbmRzIFByZWRpY2F0ZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGxlZnQ6IFByZWRpY2F0ZSwgcHVibGljIHJlYWRvbmx5IHJpZ2h0OiBQcmVkaWNhdGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBbmQgZXh0ZW5kcyBDb21iaW5hdGlvblByZWRpY2F0ZSB7XG4gICAgYmluZChiYXRjaDogUmVjb3JkQmF0Y2gpIHtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMubGVmdC5iaW5kKGJhdGNoKTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSB0aGlzLnJpZ2h0LmJpbmQoYmF0Y2gpO1xuICAgICAgICByZXR1cm4gKGlkeDogbnVtYmVyLCBiYXRjaDogUmVjb3JkQmF0Y2gpID0+IGxlZnQoaWR4LCBiYXRjaCkgJiYgcmlnaHQoaWR4LCBiYXRjaCk7XG4gICAgfVxuICAgIGFuZHMoKTogUHJlZGljYXRlW10geyByZXR1cm4gdGhpcy5sZWZ0LmFuZHMoKS5jb25jYXQodGhpcy5yaWdodC5hbmRzKCkpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBPciBleHRlbmRzIENvbWJpbmF0aW9uUHJlZGljYXRlIHtcbiAgICBiaW5kKGJhdGNoOiBSZWNvcmRCYXRjaCkge1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy5sZWZ0LmJpbmQoYmF0Y2gpO1xuICAgICAgICBjb25zdCByaWdodCA9IHRoaXMucmlnaHQuYmluZChiYXRjaCk7XG4gICAgICAgIHJldHVybiAoaWR4OiBudW1iZXIsIGJhdGNoOiBSZWNvcmRCYXRjaCkgPT4gbGVmdChpZHgsIGJhdGNoKSB8fCByaWdodChpZHgsIGJhdGNoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcXVhbHMgZXh0ZW5kcyBDb21wYXJpc29uUHJlZGljYXRlIHtcbiAgICAvLyBIZWxwZXJzIHVzZWQgdG8gY2FjaGUgZGljdGlvbmFyeSByZXZlcnNlIGxvb2t1cHMgYmV0d2VlbiBjYWxscyB0byBiaW5kXG4gICAgcHJpdmF0ZSBsYXN0RGljdGlvbmFyeTogVmVjdG9yfHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIGxhc3RLZXk6IG51bWJlcnx1bmRlZmluZWQ7XG5cbiAgICBwcm90ZWN0ZWQgX2JpbmRMaXRMaXQoX2JhdGNoOiBSZWNvcmRCYXRjaCwgbGVmdDogTGl0ZXJhbCwgcmlnaHQ6IExpdGVyYWwpOiBQcmVkaWNhdGVGdW5jIHtcbiAgICAgICAgY29uc3QgcnRybjogYm9vbGVhbiA9IGxlZnQudiA9PSByaWdodC52O1xuICAgICAgICByZXR1cm4gKCkgPT4gcnRybjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2JpbmRDb2xDb2woYmF0Y2g6IFJlY29yZEJhdGNoLCBsZWZ0OiBDb2wsIHJpZ2h0OiBDb2wpOiBQcmVkaWNhdGVGdW5jIHtcbiAgICAgICAgY29uc3QgbGVmdF9mdW5jID0gbGVmdC5iaW5kKGJhdGNoKTtcbiAgICAgICAgY29uc3QgcmlnaHRfZnVuYyA9IHJpZ2h0LmJpbmQoYmF0Y2gpO1xuICAgICAgICByZXR1cm4gKGlkeDogbnVtYmVyLCBiYXRjaDogUmVjb3JkQmF0Y2gpID0+IGxlZnRfZnVuYyhpZHgsIGJhdGNoKSA9PSByaWdodF9mdW5jKGlkeCwgYmF0Y2gpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYmluZENvbExpdChiYXRjaDogUmVjb3JkQmF0Y2gsIGNvbDogQ29sLCBsaXQ6IExpdGVyYWwpOiBQcmVkaWNhdGVGdW5jIHtcbiAgICAgICAgY29uc3QgY29sX2Z1bmMgPSBjb2wuYmluZChiYXRjaCk7XG4gICAgICAgIGlmIChjb2wudmVjdG9yIGluc3RhbmNlb2YgRGljdGlvbmFyeVZlY3Rvcikge1xuICAgICAgICAgICAgbGV0IGtleTogYW55O1xuICAgICAgICAgICAgY29uc3QgdmVjdG9yID0gY29sLnZlY3RvciBhcyBEaWN0aW9uYXJ5VmVjdG9yO1xuICAgICAgICAgICAgaWYgKHZlY3Rvci5kaWN0aW9uYXJ5ICE9PSB0aGlzLmxhc3REaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICAgICAga2V5ID0gdmVjdG9yLnJldmVyc2VMb29rdXAobGl0LnYpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdERpY3Rpb25hcnkgPSB2ZWN0b3IuZGljdGlvbmFyeTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RLZXkgPSBrZXk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGtleSA9IHRoaXMubGFzdEtleTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtleSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGUgdmFsdWUgZG9lc24ndCBleGlzdCBpbiB0aGUgZGljdGlvbmFyeSAtIGFsd2F5cyByZXR1cm5cbiAgICAgICAgICAgICAgICAvLyBmYWxzZVxuICAgICAgICAgICAgICAgIC8vIFRPRE86IHNwZWNpYWwtY2FzZSBvZiBQcmVkaWNhdGVGdW5jIHRoYXQgZW5jYXBzdWxhdGVzIHRoaXNcbiAgICAgICAgICAgICAgICAvLyBcImFsd2F5cyBmYWxzZVwiIGJlaGF2aW9yLiBUaGF0IHdheSBmaWx0ZXJpbmcgb3BlcmF0aW9ucyBkb24ndFxuICAgICAgICAgICAgICAgIC8vIGhhdmUgdG8gYm90aGVyIGNoZWNraW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2ZWN0b3IuZ2V0S2V5KGlkeCkgPT09IGtleTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChpZHg6IG51bWJlciwgY29sczogUmVjb3JkQmF0Y2gpID0+IGNvbF9mdW5jKGlkeCwgY29scykgPT0gbGl0LnY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2JpbmRMaXRDb2woYmF0Y2g6IFJlY29yZEJhdGNoLCBsaXQ6IExpdGVyYWwsIGNvbDogQ29sKSB7XG4gICAgICAgIC8vIEVxdWFscyBpcyBjb211dGF0aXZlXG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kQ29sTGl0KGJhdGNoLCBjb2wsIGxpdCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTFRlcSBleHRlbmRzIENvbXBhcmlzb25QcmVkaWNhdGUge1xuICAgIHByb3RlY3RlZCBfYmluZExpdExpdChfYmF0Y2g6IFJlY29yZEJhdGNoLCBsZWZ0OiBMaXRlcmFsLCByaWdodDogTGl0ZXJhbCk6IFByZWRpY2F0ZUZ1bmMge1xuICAgICAgICBjb25zdCBydHJuOiBib29sZWFuID0gbGVmdC52IDw9IHJpZ2h0LnY7XG4gICAgICAgIHJldHVybiAoKSA9PiBydHJuO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYmluZENvbENvbChiYXRjaDogUmVjb3JkQmF0Y2gsIGxlZnQ6IENvbCwgcmlnaHQ6IENvbCk6IFByZWRpY2F0ZUZ1bmMge1xuICAgICAgICBjb25zdCBsZWZ0X2Z1bmMgPSBsZWZ0LmJpbmQoYmF0Y2gpO1xuICAgICAgICBjb25zdCByaWdodF9mdW5jID0gcmlnaHQuYmluZChiYXRjaCk7XG4gICAgICAgIHJldHVybiAoaWR4OiBudW1iZXIsIGNvbHM6IFJlY29yZEJhdGNoKSA9PiBsZWZ0X2Z1bmMoaWR4LCBjb2xzKSA8PSByaWdodF9mdW5jKGlkeCwgY29scyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9iaW5kQ29sTGl0KGJhdGNoOiBSZWNvcmRCYXRjaCwgY29sOiBDb2wsIGxpdDogTGl0ZXJhbCk6IFByZWRpY2F0ZUZ1bmMge1xuICAgICAgICBjb25zdCBjb2xfZnVuYyA9IGNvbC5iaW5kKGJhdGNoKTtcbiAgICAgICAgcmV0dXJuIChpZHg6IG51bWJlciwgY29sczogUmVjb3JkQmF0Y2gpID0+IGNvbF9mdW5jKGlkeCwgY29scykgPD0gbGl0LnY7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9iaW5kTGl0Q29sKGJhdGNoOiBSZWNvcmRCYXRjaCwgbGl0OiBMaXRlcmFsLCBjb2w6IENvbCkge1xuICAgICAgICBjb25zdCBjb2xfZnVuYyA9IGNvbC5iaW5kKGJhdGNoKTtcbiAgICAgICAgcmV0dXJuIChpZHg6IG51bWJlciwgY29sczogUmVjb3JkQmF0Y2gpID0+IGxpdC52IDw9IGNvbF9mdW5jKGlkeCwgY29scyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR1RlcSBleHRlbmRzIENvbXBhcmlzb25QcmVkaWNhdGUge1xuICAgIHByb3RlY3RlZCBfYmluZExpdExpdChfYmF0Y2g6IFJlY29yZEJhdGNoLCBsZWZ0OiBMaXRlcmFsLCByaWdodDogTGl0ZXJhbCk6IFByZWRpY2F0ZUZ1bmMge1xuICAgICAgICBjb25zdCBydHJuOiBib29sZWFuID0gbGVmdC52ID49IHJpZ2h0LnY7XG4gICAgICAgIHJldHVybiAoKSA9PiBydHJuO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYmluZENvbENvbChiYXRjaDogUmVjb3JkQmF0Y2gsIGxlZnQ6IENvbCwgcmlnaHQ6IENvbCk6IFByZWRpY2F0ZUZ1bmMge1xuICAgICAgICBjb25zdCBsZWZ0X2Z1bmMgPSBsZWZ0LmJpbmQoYmF0Y2gpO1xuICAgICAgICBjb25zdCByaWdodF9mdW5jID0gcmlnaHQuYmluZChiYXRjaCk7XG4gICAgICAgIHJldHVybiAoaWR4OiBudW1iZXIsIGNvbHM6IFJlY29yZEJhdGNoKSA9PiBsZWZ0X2Z1bmMoaWR4LCBjb2xzKSA+PSByaWdodF9mdW5jKGlkeCwgY29scyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9iaW5kQ29sTGl0KGJhdGNoOiBSZWNvcmRCYXRjaCwgY29sOiBDb2wsIGxpdDogTGl0ZXJhbCk6IFByZWRpY2F0ZUZ1bmMge1xuICAgICAgICBjb25zdCBjb2xfZnVuYyA9IGNvbC5iaW5kKGJhdGNoKTtcbiAgICAgICAgcmV0dXJuIChpZHg6IG51bWJlciwgY29sczogUmVjb3JkQmF0Y2gpID0+IGNvbF9mdW5jKGlkeCwgY29scykgPj0gbGl0LnY7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9iaW5kTGl0Q29sKGJhdGNoOiBSZWNvcmRCYXRjaCwgbGl0OiBMaXRlcmFsLCBjb2w6IENvbCkge1xuICAgICAgICBjb25zdCBjb2xfZnVuYyA9IGNvbC5iaW5kKGJhdGNoKTtcbiAgICAgICAgcmV0dXJuIChpZHg6IG51bWJlciwgY29sczogUmVjb3JkQmF0Y2gpID0+IGxpdC52ID49IGNvbF9mdW5jKGlkeCwgY29scyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3VzdG9tUHJlZGljYXRlIGV4dGVuZHMgUHJlZGljYXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5leHQ6IFByZWRpY2F0ZUZ1bmMsIHByaXZhdGUgYmluZF86IChiYXRjaDogUmVjb3JkQmF0Y2gpID0+IHZvaWQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBiaW5kKGJhdGNoOiBSZWNvcmRCYXRjaCkge1xuICAgICAgICB0aGlzLmJpbmRfKGJhdGNoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubmV4dDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXQodjogYW55KTogVmFsdWU8YW55PiB7IHJldHVybiBuZXcgTGl0ZXJhbCh2KTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGNvbChuOiBzdHJpbmcpOiBDb2w8YW55PiB7IHJldHVybiBuZXcgQ29sKG4pOyB9XG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tKG5leHQ6IFByZWRpY2F0ZUZ1bmMsIGJpbmQ6IChiYXRjaDogUmVjb3JkQmF0Y2gpID0+IHZvaWQpIHtcbiAgICByZXR1cm4gbmV3IEN1c3RvbVByZWRpY2F0ZShuZXh0LCBiaW5kKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QztRQUNoRixLQUFLLEVBQUUsQ0FBQztRQURRLFNBQUksR0FBSixJQUFJLENBQWU7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUE4QjtJQUVwRixDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQWtCO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztDQUNKO0FBVEQsMENBU0M7QUFFRCxhQUFvQixDQUFNLElBQWdCLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBbEUsa0JBQWtFO0FBQ2xFLGFBQW9CLENBQVMsSUFBYyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQS9ELGtCQUErRDtBQUMvRCxnQkFBdUIsSUFBbUIsRUFBRSxJQUFrQztJQUMxRSxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFGRCx3QkFFQyIsImZpbGUiOiJwcmVkaWNhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgUmVjb3JkQmF0Y2ggfSBmcm9tICcuL3JlY29yZGJhdGNoJztcbmltcG9ydCB7IFZlY3RvciwgRGljdGlvbmFyeVZlY3RvciB9IGZyb20gJy4vdmVjdG9yJztcblxuZXhwb3J0IHR5cGUgVmFsdWVGdW5jPFQ+ID0gKGlkeDogbnVtYmVyLCBjb2xzOiBSZWNvcmRCYXRjaCkgPT4gVCB8IG51bGw7XG5leHBvcnQgdHlwZSBQcmVkaWNhdGVGdW5jID0gKGlkeDogbnVtYmVyLCBjb2xzOiBSZWNvcmRCYXRjaCkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhbHVlPFQ+IHtcbiAgICBlcShvdGhlcjogVmFsdWU8VD4gfCBUKTogUHJlZGljYXRlIHtcbiAgICAgICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBWYWx1ZSkpIHsgb3RoZXIgPSBuZXcgTGl0ZXJhbChvdGhlcik7IH1cbiAgICAgICAgcmV0dXJuIG5ldyBFcXVhbHModGhpcywgb3RoZXIpO1xuICAgIH1cbiAgICBsZShvdGhlcjogVmFsdWU8VD4gfCBUKTogUHJlZGljYXRlIHtcbiAgICAgICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBWYWx1ZSkpIHsgb3RoZXIgPSBuZXcgTGl0ZXJhbChvdGhlcik7IH1cbiAgICAgICAgcmV0dXJuIG5ldyBMVGVxKHRoaXMsIG90aGVyKTtcbiAgICB9XG4gICAgZ2Uob3RoZXI6IFZhbHVlPFQ+IHwgVCk6IFByZWRpY2F0ZSB7XG4gICAgICAgIGlmICghKG90aGVyIGluc3RhbmNlb2YgVmFsdWUpKSB7IG90aGVyID0gbmV3IExpdGVyYWwob3RoZXIpOyB9XG4gICAgICAgIHJldHVybiBuZXcgR1RlcSh0aGlzLCBvdGhlcik7XG4gICAgfVxuICAgIGx0KG90aGVyOiBWYWx1ZTxUPiB8IFQpOiBQcmVkaWNhdGUge1xuICAgICAgICByZXR1cm4gbmV3IE5vdCh0aGlzLmdlKG90aGVyKSk7XG4gICAgfVxuICAgIGd0KG90aGVyOiBWYWx1ZTxUPiB8IFQpOiBQcmVkaWNhdGUge1xuICAgICAgICByZXR1cm4gbmV3IE5vdCh0aGlzLmxlKG90aGVyKSk7XG4gICAgfVxuICAgIG5lKG90aGVyOiBWYWx1ZTxUPiB8IFQpOiBQcmVkaWNhdGUge1xuICAgICAgICByZXR1cm4gbmV3IE5vdCh0aGlzLmVxKG90aGVyKSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGl0ZXJhbDxUPSBhbnk+IGV4dGVuZHMgVmFsdWU8VD4ge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB2OiBUKSB7IHN1cGVyKCk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbDxUPSBhbnk+IGV4dGVuZHMgVmFsdWU8VD4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwdWJsaWMgdmVjdG9yOiBWZWN0b3I7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHB1YmxpYyBjb2xpZHg6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHsgc3VwZXIoKTsgfVxuICAgIGJpbmQoYmF0Y2g6IFJlY29yZEJhdGNoKSB7XG4gICAgICAgIGlmICghdGhpcy5jb2xpZHgpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZSBjb2x1bW4gaW5kZXggZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBjYWxscyB0byBiaW5kXG4gICAgICAgICAgICAvL3RoaXMuY29saWR4ID0gY29scy5maW5kSW5kZXgodiA9PiB2Lm5hbWUuaW5kZXhPZih0aGlzLm5hbWUpICE9IC0xKTtcbiAgICAgICAgICAgIHRoaXMuY29saWR4ID0gLTE7XG4gICAgICAgICAgICBjb25zdCBmaWVsZHMgPSBiYXRjaC5zY2hlbWEuZmllbGRzO1xuICAgICAgICAgICAgZm9yIChsZXQgaWR4ID0gLTE7ICsraWR4IDwgZmllbGRzLmxlbmd0aDspIHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2lkeF0ubmFtZSA9PT0gdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29saWR4ID0gaWR4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5jb2xpZHggPCAwKSB7IHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGJpbmQgQ29sIFwiJHt0aGlzLm5hbWV9XCJgKTsgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudmVjdG9yID0gYmF0Y2guZ2V0Q2hpbGRBdCh0aGlzLmNvbGlkeCkhO1xuICAgICAgICByZXR1cm4gdGhpcy52ZWN0b3IuZ2V0LmJpbmQodGhpcy52ZWN0b3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByZWRpY2F0ZSB7XG4gICAgYWJzdHJhY3QgYmluZChiYXRjaDogUmVjb3JkQmF0Y2gpOiBQcmVkaWNhdGVGdW5jO1xuICAgIGFuZChleHByOiBQcmVkaWNhdGUpOiBQcmVkaWNhdGUgeyByZXR1cm4gbmV3IEFuZCh0aGlzLCBleHByKTsgfVxuICAgIG9yKGV4cHI6IFByZWRpY2F0ZSk6IFByZWRpY2F0ZSB7IHJldHVybiBuZXcgT3IodGhpcywgZXhwcik7IH1cbiAgICBub3QoKTogUHJlZGljYXRlIHsgcmV0dXJuIG5ldyBOb3QodGhpcyk7IH1cbiAgICBhbmRzKCk6IFByZWRpY2F0ZVtdIHsgcmV0dXJuIFt0aGlzXTsgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tcGFyaXNvblByZWRpY2F0ZTxUPSBhbnk+IGV4dGVuZHMgUHJlZGljYXRlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgbGVmdDogVmFsdWU8VD4sIHB1YmxpYyByZWFkb25seSByaWdodDogVmFsdWU8VD4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBiaW5kKGJhdGNoOiBSZWNvcmRCYXRjaCkge1xuICAgICAgICBpZiAodGhpcy5sZWZ0IGluc3RhbmNlb2YgTGl0ZXJhbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmlnaHQgaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRMaXRMaXQoYmF0Y2gsIHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyByaWdodCBpcyBhIENvbFxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRMaXRDb2woYmF0Y2gsIHRoaXMubGVmdCwgdGhpcy5yaWdodCBhcyBDb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgeyAvLyBsZWZ0IGlzIGEgQ29sXG4gICAgICAgICAgICBpZiAodGhpcy5yaWdodCBpbnN0YW5jZW9mIExpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYmluZENvbExpdChiYXRjaCwgdGhpcy5sZWZ0IGFzIENvbCwgdGhpcy5yaWdodCk7XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyByaWdodCBpcyBhIENvbFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9iaW5kQ29sQ29sKGJhdGNoLCB0aGlzLmxlZnQgYXMgQ29sLCB0aGlzLnJpZ2h0IGFzIENvbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2JpbmRMaXRMaXQoYmF0Y2g6IFJlY29yZEJhdGNoLCBsZWZ0OiBMaXRlcmFsLCByaWdodDogTGl0ZXJhbCk6IFByZWRpY2F0ZUZ1bmM7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9iaW5kQ29sQ29sKGJhdGNoOiBSZWNvcmRCYXRjaCwgbGVmdDogQ29sLCByaWdodDogQ29sKTogUHJlZGljYXRlRnVuYztcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2JpbmRDb2xMaXQoYmF0Y2g6IFJlY29yZEJhdGNoLCBjb2w6IENvbCwgbGl0OiBMaXRlcmFsKTogUHJlZGljYXRlRnVuYztcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2JpbmRMaXRDb2woYmF0Y2g6IFJlY29yZEJhdGNoLCBsaXQ6IExpdGVyYWwsIGNvbDogQ29sKTogUHJlZGljYXRlRnVuYztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbWJpbmF0aW9uUHJlZGljYXRlIGV4dGVuZHMgUHJlZGljYXRlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgbGVmdDogUHJlZGljYXRlLCBwdWJsaWMgcmVhZG9ubHkgcmlnaHQ6IFByZWRpY2F0ZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFuZCBleHRlbmRzIENvbWJpbmF0aW9uUHJlZGljYXRlIHtcbiAgICBiaW5kKGJhdGNoOiBSZWNvcmRCYXRjaCkge1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy5sZWZ0LmJpbmQoYmF0Y2gpO1xuICAgICAgICBjb25zdCByaWdodCA9IHRoaXMucmlnaHQuYmluZChiYXRjaCk7XG4gICAgICAgIHJldHVybiAoaWR4OiBudW1iZXIsIGJhdGNoOiBSZWNvcmRCYXRjaCkgPT4gbGVmdChpZHgsIGJhdGNoKSAmJiByaWdodChpZHgsIGJhdGNoKTtcbiAgICB9XG4gICAgYW5kcygpOiBQcmVkaWNhdGVbXSB7IHJldHVybiB0aGlzLmxlZnQuYW5kcygpLmNvbmNhdCh0aGlzLnJpZ2h0LmFuZHMoKSk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yIGV4dGVuZHMgQ29tYmluYXRpb25QcmVkaWNhdGUge1xuICAgIGJpbmQoYmF0Y2g6IFJlY29yZEJhdGNoKSB7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxlZnQuYmluZChiYXRjaCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5yaWdodC5iaW5kKGJhdGNoKTtcbiAgICAgICAgcmV0dXJuIChpZHg6IG51bWJlciwgYmF0Y2g6IFJlY29yZEJhdGNoKSA9PiBsZWZ0KGlkeCwgYmF0Y2gpIHx8IHJpZ2h0KGlkeCwgYmF0Y2gpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVxdWFscyBleHRlbmRzIENvbXBhcmlzb25QcmVkaWNhdGUge1xuICAgIC8vIEhlbHBlcnMgdXNlZCB0byBjYWNoZSBkaWN0aW9uYXJ5IHJldmVyc2UgbG9va3VwcyBiZXR3ZWVuIGNhbGxzIHRvIGJpbmRcbiAgICBwcml2YXRlIGxhc3REaWN0aW9uYXJ5OiBWZWN0b3J8dW5kZWZpbmVkO1xuICAgIHByaXZhdGUgbGFzdEtleTogbnVtYmVyfHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCBfYmluZExpdExpdChfYmF0Y2g6IFJlY29yZEJhdGNoLCBsZWZ0OiBMaXRlcmFsLCByaWdodDogTGl0ZXJhbCk6IFByZWRpY2F0ZUZ1bmMge1xuICAgICAgICBjb25zdCBydHJuOiBib29sZWFuID0gbGVmdC52ID09IHJpZ2h0LnY7XG4gICAgICAgIHJldHVybiAoKSA9PiBydHJuO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYmluZENvbENvbChiYXRjaDogUmVjb3JkQmF0Y2gsIGxlZnQ6IENvbCwgcmlnaHQ6IENvbCk6IFByZWRpY2F0ZUZ1bmMge1xuICAgICAgICBjb25zdCBsZWZ0X2Z1bmMgPSBsZWZ0LmJpbmQoYmF0Y2gpO1xuICAgICAgICBjb25zdCByaWdodF9mdW5jID0gcmlnaHQuYmluZChiYXRjaCk7XG4gICAgICAgIHJldHVybiAoaWR4OiBudW1iZXIsIGJhdGNoOiBSZWNvcmRCYXRjaCkgPT4gbGVmdF9mdW5jKGlkeCwgYmF0Y2gpID09IHJpZ2h0X2Z1bmMoaWR4LCBiYXRjaCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9iaW5kQ29sTGl0KGJhdGNoOiBSZWNvcmRCYXRjaCwgY29sOiBDb2wsIGxpdDogTGl0ZXJhbCk6IFByZWRpY2F0ZUZ1bmMge1xuICAgICAgICBjb25zdCBjb2xfZnVuYyA9IGNvbC5iaW5kKGJhdGNoKTtcbiAgICAgICAgaWYgKGNvbC52ZWN0b3IgaW5zdGFuY2VvZiBEaWN0aW9uYXJ5VmVjdG9yKSB7XG4gICAgICAgICAgICBsZXQga2V5OiBhbnk7XG4gICAgICAgICAgICBjb25zdCB2ZWN0b3IgPSBjb2wudmVjdG9yIGFzIERpY3Rpb25hcnlWZWN0b3I7XG4gICAgICAgICAgICBpZiAodmVjdG9yLmRpY3Rpb25hcnkgIT09IHRoaXMubGFzdERpY3Rpb25hcnkpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSB2ZWN0b3IucmV2ZXJzZUxvb2t1cChsaXQudik7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0RGljdGlvbmFyeSA9IHZlY3Rvci5kaWN0aW9uYXJ5O1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdEtleSA9IGtleTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAga2V5ID0gdGhpcy5sYXN0S2V5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSBkb2Vzbid0IGV4aXN0IGluIHRoZSBkaWN0aW9uYXJ5IC0gYWx3YXlzIHJldHVyblxuICAgICAgICAgICAgICAgIC8vIGZhbHNlXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogc3BlY2lhbC1jYXNlIG9mIFByZWRpY2F0ZUZ1bmMgdGhhdCBlbmNhcHN1bGF0ZXMgdGhpc1xuICAgICAgICAgICAgICAgIC8vIFwiYWx3YXlzIGZhbHNlXCIgYmVoYXZpb3IuIFRoYXQgd2F5IGZpbHRlcmluZyBvcGVyYXRpb25zIGRvbid0XG4gICAgICAgICAgICAgICAgLy8gaGF2ZSB0byBib3RoZXIgY2hlY2tpbmdcbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoaWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZlY3Rvci5nZXRLZXkoaWR4KSA9PT0ga2V5O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKGlkeDogbnVtYmVyLCBjb2xzOiBSZWNvcmRCYXRjaCkgPT4gY29sX2Z1bmMoaWR4LCBjb2xzKSA9PSBsaXQudjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYmluZExpdENvbChiYXRjaDogUmVjb3JkQmF0Y2gsIGxpdDogTGl0ZXJhbCwgY29sOiBDb2wpIHtcbiAgICAgICAgLy8gRXF1YWxzIGlzIGNvbXV0YXRpdmVcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRDb2xMaXQoYmF0Y2gsIGNvbCwgbGl0KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMVGVxIGV4dGVuZHMgQ29tcGFyaXNvblByZWRpY2F0ZSB7XG4gICAgcHJvdGVjdGVkIF9iaW5kTGl0TGl0KF9iYXRjaDogUmVjb3JkQmF0Y2gsIGxlZnQ6IExpdGVyYWwsIHJpZ2h0OiBMaXRlcmFsKTogUHJlZGljYXRlRnVuYyB7XG4gICAgICAgIGNvbnN0IHJ0cm46IGJvb2xlYW4gPSBsZWZ0LnYgPD0gcmlnaHQudjtcbiAgICAgICAgcmV0dXJuICgpID0+IHJ0cm47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9iaW5kQ29sQ29sKGJhdGNoOiBSZWNvcmRCYXRjaCwgbGVmdDogQ29sLCByaWdodDogQ29sKTogUHJlZGljYXRlRnVuYyB7XG4gICAgICAgIGNvbnN0IGxlZnRfZnVuYyA9IGxlZnQuYmluZChiYXRjaCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0X2Z1bmMgPSByaWdodC5iaW5kKGJhdGNoKTtcbiAgICAgICAgcmV0dXJuIChpZHg6IG51bWJlciwgY29sczogUmVjb3JkQmF0Y2gpID0+IGxlZnRfZnVuYyhpZHgsIGNvbHMpIDw9IHJpZ2h0X2Z1bmMoaWR4LCBjb2xzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2JpbmRDb2xMaXQoYmF0Y2g6IFJlY29yZEJhdGNoLCBjb2w6IENvbCwgbGl0OiBMaXRlcmFsKTogUHJlZGljYXRlRnVuYyB7XG4gICAgICAgIGNvbnN0IGNvbF9mdW5jID0gY29sLmJpbmQoYmF0Y2gpO1xuICAgICAgICByZXR1cm4gKGlkeDogbnVtYmVyLCBjb2xzOiBSZWNvcmRCYXRjaCkgPT4gY29sX2Z1bmMoaWR4LCBjb2xzKSA8PSBsaXQudjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2JpbmRMaXRDb2woYmF0Y2g6IFJlY29yZEJhdGNoLCBsaXQ6IExpdGVyYWwsIGNvbDogQ29sKSB7XG4gICAgICAgIGNvbnN0IGNvbF9mdW5jID0gY29sLmJpbmQoYmF0Y2gpO1xuICAgICAgICByZXR1cm4gKGlkeDogbnVtYmVyLCBjb2xzOiBSZWNvcmRCYXRjaCkgPT4gbGl0LnYgPD0gY29sX2Z1bmMoaWR4LCBjb2xzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHVGVxIGV4dGVuZHMgQ29tcGFyaXNvblByZWRpY2F0ZSB7XG4gICAgcHJvdGVjdGVkIF9iaW5kTGl0TGl0KF9iYXRjaDogUmVjb3JkQmF0Y2gsIGxlZnQ6IExpdGVyYWwsIHJpZ2h0OiBMaXRlcmFsKTogUHJlZGljYXRlRnVuYyB7XG4gICAgICAgIGNvbnN0IHJ0cm46IGJvb2xlYW4gPSBsZWZ0LnYgPj0gcmlnaHQudjtcbiAgICAgICAgcmV0dXJuICgpID0+IHJ0cm47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9iaW5kQ29sQ29sKGJhdGNoOiBSZWNvcmRCYXRjaCwgbGVmdDogQ29sLCByaWdodDogQ29sKTogUHJlZGljYXRlRnVuYyB7XG4gICAgICAgIGNvbnN0IGxlZnRfZnVuYyA9IGxlZnQuYmluZChiYXRjaCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0X2Z1bmMgPSByaWdodC5iaW5kKGJhdGNoKTtcbiAgICAgICAgcmV0dXJuIChpZHg6IG51bWJlciwgY29sczogUmVjb3JkQmF0Y2gpID0+IGxlZnRfZnVuYyhpZHgsIGNvbHMpID49IHJpZ2h0X2Z1bmMoaWR4LCBjb2xzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2JpbmRDb2xMaXQoYmF0Y2g6IFJlY29yZEJhdGNoLCBjb2w6IENvbCwgbGl0OiBMaXRlcmFsKTogUHJlZGljYXRlRnVuYyB7XG4gICAgICAgIGNvbnN0IGNvbF9mdW5jID0gY29sLmJpbmQoYmF0Y2gpO1xuICAgICAgICByZXR1cm4gKGlkeDogbnVtYmVyLCBjb2xzOiBSZWNvcmRCYXRjaCkgPT4gY29sX2Z1bmMoaWR4LCBjb2xzKSA+PSBsaXQudjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2JpbmRMaXRDb2woYmF0Y2g6IFJlY29yZEJhdGNoLCBsaXQ6IExpdGVyYWwsIGNvbDogQ29sKSB7XG4gICAgICAgIGNvbnN0IGNvbF9mdW5jID0gY29sLmJpbmQoYmF0Y2gpO1xuICAgICAgICByZXR1cm4gKGlkeDogbnVtYmVyLCBjb2xzOiBSZWNvcmRCYXRjaCkgPT4gbGl0LnYgPj0gY29sX2Z1bmMoaWR4LCBjb2xzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3QgZXh0ZW5kcyBQcmVkaWNhdGUge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjaGlsZDogUHJlZGljYXRlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgYmluZChiYXRjaDogUmVjb3JkQmF0Y2gpIHtcbiAgICAgICAgY29uc3QgZnVuYyA9IHRoaXMuY2hpbGQuYmluZChiYXRjaCk7XG4gICAgICAgIHJldHVybiAoaWR4OiBudW1iZXIsIGJhdGNoOiBSZWNvcmRCYXRjaCkgPT4gIWZ1bmMoaWR4LCBiYXRjaCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3VzdG9tUHJlZGljYXRlIGV4dGVuZHMgUHJlZGljYXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5leHQ6IFByZWRpY2F0ZUZ1bmMsIHByaXZhdGUgYmluZF86IChiYXRjaDogUmVjb3JkQmF0Y2gpID0+IHZvaWQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBiaW5kKGJhdGNoOiBSZWNvcmRCYXRjaCkge1xuICAgICAgICB0aGlzLmJpbmRfKGJhdGNoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubmV4dDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXQodjogYW55KTogVmFsdWU8YW55PiB7IHJldHVybiBuZXcgTGl0ZXJhbCh2KTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGNvbChuOiBzdHJpbmcpOiBDb2w8YW55PiB7IHJldHVybiBuZXcgQ29sKG4pOyB9XG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tKG5leHQ6IFByZWRpY2F0ZUZ1bmMsIGJpbmQ6IChiYXRjaDogUmVjb3JkQmF0Y2gpID0+IHZvaWQpIHtcbiAgICByZXR1cm4gbmV3IEN1c3RvbVByZWRpY2F0ZShuZXh0LCBiaW5kKTtcbn1cbiJdfQ==

@@ -189,3 +189,3 @@ <!---

npm install @apache-arrow/es2015-umd # standalone es2015/UMD package
npm install @apache-arrow/esnext-esm # standalone esNext/CommonJS package
npm install @apache-arrow/esnext-cjs # standalone esNext/CommonJS package
npm install @apache-arrow/esnext-esm # standalone esNext/ESModules package

@@ -216,2 +216,3 @@ npm install @apache-arrow/esnext-umd # standalone esNext/UMD package

* [rxjs-mapd](https://github.com/graphistry/rxjs-mapd) -- A MapD Core node-driver that returns query results as Arrow columns
* [Perspective](https://github.com/jpmorganchase/perspective) -- Perspective is a streaming data visualization engine by J.P. Morgan for JavaScript for building real-time & user-configurable analytics entirely in the browser.

@@ -218,0 +219,0 @@ ## Companies & Organizations

@@ -155,3 +155,3 @@ "use strict";

count_by.bind(batch);
const keys = count_by.vector.indicies;
const keys = count_by.vector.indices;
// yield all indices

@@ -257,3 +257,3 @@ for (let index = -1, numRows = batch.length; ++index < numRows;) {

count_by.bind(batch);
const keys = count_by.vector.indicies;
const keys = count_by.vector.indices;
// yield all indices

@@ -344,2 +344,2 @@ for (let index = -1, numRows = batch.length; ++index < numRows;) {

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw2REFBNkQ7QUFDN0QsK0RBQStEO0FBQy9ELHdEQUF3RDtBQUN4RCw2REFBNkQ7QUFDN0Qsb0RBQW9EO0FBQ3BELDZEQUE2RDtBQUM3RCw2REFBNkQ7QUFDN0QsRUFBRTtBQUNGLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsNkRBQTZEO0FBQzdELDhEQUE4RDtBQUM5RCx5REFBeUQ7QUFDekQsNERBQTREO0FBQzVELDBEQUEwRDtBQUMxRCxxQkFBcUI7OztBQUVyQiwrQ0FBNEM7QUFDNUMsMkNBQTZDO0FBQzdDLGlDQUErQztBQUMvQyw4Q0FBcUQ7QUFDckQsMENBQTJEO0FBQzNELHFDQUE2RTtBQUM3RSw4Q0FBK0M7QUFZL0M7SUF3REksWUFBWSxHQUFHLElBQVc7UUFiMUIsbURBQW1EO1FBQ2hDLGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBYTVDLElBQUksTUFBYyxDQUFDO1FBQ25CLElBQUksT0FBc0IsQ0FBQztRQUMzQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksYUFBTSxDQUFDLENBQUMsQ0FBQztZQUM1QixNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSx5QkFBVyxDQUFDLENBQUMsQ0FBQztZQUN4QyxNQUFNLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3hDLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE1BQU0sR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyQyxJQUFJLHlCQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQzdDLENBQUM7SUF6RUQsTUFBTSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxhQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBa0U7UUFDMUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNWLElBQUksTUFBMEIsQ0FBQztZQUMvQixJQUFJLGFBQWEsR0FBa0IsRUFBRSxDQUFDO1lBQ3RDLEdBQUcsQ0FBQyxDQUFDLElBQUksV0FBVyxJQUFJLFlBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sR0FBRyxNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQztnQkFDdEMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLGFBQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsTUFBTSxDQUFPLFNBQVMsQ0FBQyxPQUFxRDs7WUFDeEUsRUFBRSxDQUFDLENBQUMsd0JBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLElBQUksTUFBMEIsQ0FBQztnQkFDL0IsSUFBSSxhQUFhLEdBQWtCLEVBQUUsQ0FBQzs7b0JBQ3RDLEdBQUcsQ0FBQyxDQUEwQixJQUFBLEtBQUEsc0JBQUEsaUJBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxJQUFBO3dCQUFyQyxJQUFJLFdBQVcsaUJBQUEsQ0FBQTt3QkFDdEIsTUFBTSxHQUFHLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDO3dCQUN0QyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3FCQUNuQzs7Ozs7Ozs7O2dCQUNELE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxhQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxrQkFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDOztRQUN6QixDQUFDO0tBQUE7SUFDRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQW9CO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksYUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksWUFBWSxxQkFBVyxDQUFDLENBQUM7WUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUErQixDQUFDLENBQUM7WUFDOUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSx5QkFBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUF1Q00sR0FBRyxDQUFDLEtBQWE7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDO0lBQ3pDLENBQUM7SUFDTSxTQUFTLENBQUMsSUFBWTtRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUNNLFdBQVcsQ0FBQyxLQUFhO1FBQzVCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTztZQUNyQyxDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ00sY0FBYyxDQUFDLElBQVk7UUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ00sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBUyxDQUFDO0lBQ3ZELENBQUM7SUFDTSxNQUFNLENBQUMsU0FBb0I7UUFDOUIsTUFBTSxDQUFDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ00sSUFBSSxDQUFDLElBQWMsRUFBRSxJQUFlO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUQsR0FBRyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEdBQUcsVUFBVSxHQUFHLENBQUM7WUFDbkQsZUFBZTtZQUNmLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFDLENBQUM7WUFDMUIsb0JBQW9CO1lBQ3BCLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUNNLEtBQUssS0FBYSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkMsT0FBTyxDQUFDLElBQWtCO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2pFLHNFQUFzRTtRQUN0RSxxREFBcUQ7UUFDckQsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQTBCLENBQUM7UUFDbkQsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sWUFBWSx5QkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7UUFDbEYsQ0FBQztRQUNELHdEQUF3RDtRQUN4RCxzREFBc0Q7UUFDdEQsTUFBTSxNQUFNLEdBQWdCLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEUsR0FBRyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEdBQUcsVUFBVSxHQUFHLENBQUM7WUFDbkQsZUFBZTtZQUNmLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsQyx5QkFBeUI7WUFDekIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixNQUFNLElBQUksR0FBSSxRQUFRLENBQUMsTUFBMkIsQ0FBQyxRQUFRLENBQUM7WUFDNUQsb0JBQW9CO1lBQ3BCLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDO2dCQUM5RCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQixFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFBQyxDQUFDO1lBQ3hDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsa0JBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ00sTUFBTSxDQUFDLEdBQUcsV0FBcUI7UUFDbEMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFDTSxRQUFRLENBQUMsU0FBa0I7UUFDOUIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQ00sWUFBWSxDQUFDLFNBQVMsR0FBRyxLQUFLO1FBQ2pDLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDSjtBQXJKRCxzQkFxSkM7QUFFRDtJQUdJLFlBQWEsT0FBc0IsRUFBRSxTQUFvQjtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBQ00sSUFBSSxDQUFDLElBQWMsRUFBRSxJQUFlO1FBQ3ZDLDJCQUEyQjtRQUMzQix1Q0FBdUM7UUFDdkMsNERBQTREO1FBQzVELE1BQU07UUFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDbEMsR0FBRyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEdBQUcsVUFBVSxHQUFHLENBQUM7WUFDbkQsZUFBZTtZQUNmLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsQyw0QkFBNEI7WUFDNUIsaUVBQWlFO1lBQ2pFLHVCQUF1QjtZQUN2QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFDLENBQUM7WUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0Msb0JBQW9CO1lBQ3BCLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDO2dCQUM5RCxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQ00sS0FBSztRQUNSLDJCQUEyQjtRQUMzQixlQUFlO1FBQ2YsdUNBQXVDO1FBQ3ZDLCtDQUErQztRQUMvQyxNQUFNO1FBQ04sY0FBYztRQUNkLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNsQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsR0FBRyxVQUFVLEdBQUcsQ0FBQztZQUNuRCxlQUFlO1lBQ2YsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLG9CQUFvQjtZQUNwQixHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssR0FBRyxPQUFPLEdBQUcsQ0FBQztnQkFDOUQsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQUMsRUFBRSxHQUFHLENBQUM7Z0JBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQ00sTUFBTSxDQUFDLFNBQW9CO1FBQzlCLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUN4QixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUNoQyxDQUFDO0lBQ04sQ0FBQztJQUNNLE9BQU8sQ0FBQyxJQUFrQjtRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxlQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqRSxzRUFBc0U7UUFDdEUscURBQXFEO1FBQ3JELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUEwQixDQUFDO1FBQ25ELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLFlBQVkseUJBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCx3REFBd0Q7UUFDeEQsc0RBQXNEO1FBQ3RELE1BQU0sTUFBTSxHQUFnQixJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLEdBQUcsQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxHQUFHLFVBQVUsR0FBRyxDQUFDO1lBQ25ELGVBQWU7WUFDZixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MseUJBQXlCO1lBQ3pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsTUFBTSxJQUFJLEdBQUksUUFBUSxDQUFDLE1BQTJCLENBQUMsUUFBUSxDQUFDO1lBQzVELG9CQUFvQjtZQUNwQixHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssR0FBRyxPQUFPLEdBQUcsQ0FBQztnQkFDOUQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFBQyxDQUFDO1lBQ25FLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsa0JBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0o7QUFFRCxtQkFBMkIsU0FBUSxLQUFLO0lBQ3BDLFlBQVksTUFBYyxFQUFFLE1BQXNCO1FBQzlDLEtBQUssQ0FDRCxJQUFJLHlCQUFXLENBQUMsSUFBSSxhQUFNLENBQUM7WUFDdkIsSUFBSSxZQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDaEMsSUFBSSxZQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDbkMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQ2xDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDTSxNQUFNO1FBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUUsQ0FBQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBRSxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLEVBQW9DLENBQUM7UUFDcEQsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNsQixDQUFDO0NBQ0o7QUFuQkQsc0NBbUJDO0FBRUQ7SUFDSSxZQUFvQixRQUFrQztRQUFsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtJQUFHLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzdDLElBQUksQ0FBQyxLQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxLQUFLLENBQUMsS0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RyxNQUFNLENBQUMsS0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoSCxJQUFJLENBQUMsTUFBNkI7UUFDOUIsSUFBSSxHQUEyQixDQUFDO1FBQ2hDLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNiLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLEdBQUcsQ0FBQztvQkFDQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUFDLEtBQUssQ0FBQztvQkFBQyxDQUFDO2dCQUM1QyxDQUFDLFFBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ3hELENBQUM7WUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBRSxNQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNKO0FBdEJELHNEQXNCQztBQUVELFFBQVEsQ0FBQyxtQkFBbUIsS0FBWSxFQUFFLFNBQVMsR0FBRyxLQUFLO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ25DLE1BQU0sTUFBTSxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsNkRBQTZEO0lBQzdELEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUM5QyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFJLENBQUM7WUFDekMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEYsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3JCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QixDQUFDO0FBQ0wsQ0FBQztBQUVELGlCQUFpQixHQUFXLEVBQUUsSUFBWSxFQUFFLENBQVM7SUFDakQsTUFBTSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELG1CQUFtQixDQUFNO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkcsQ0FBQyIsImZpbGUiOiJ0YWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBSZWNvcmRCYXRjaCB9IGZyb20gJy4vcmVjb3JkYmF0Y2gnO1xuaW1wb3J0IHsgQ29sLCBQcmVkaWNhdGUgfSBmcm9tICcuL3ByZWRpY2F0ZSc7XG5pbXBvcnQgeyBTY2hlbWEsIEZpZWxkLCBTdHJ1Y3QgfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgcmVhZCwgcmVhZEFzeW5jIH0gZnJvbSAnLi9pcGMvcmVhZGVyL2Fycm93JztcbmltcG9ydCB7IGlzUHJvbWlzZSwgaXNBc3luY0l0ZXJhYmxlIH0gZnJvbSAnLi91dGlsL2NvbXBhdCc7XG5pbXBvcnQgeyBWZWN0b3IsIERpY3Rpb25hcnlWZWN0b3IsIEludFZlY3RvciwgU3RydWN0VmVjdG9yIH0gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0IHsgQ2h1bmtlZFZpZXcgfSBmcm9tICcuL3ZlY3Rvci9jaHVua2VkJztcblxuZXhwb3J0IHR5cGUgTmV4dEZ1bmMgPSAoaWR4OiBudW1iZXIsIGJhdGNoOiBSZWNvcmRCYXRjaCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEJpbmRGdW5jID0gKGJhdGNoOiBSZWNvcmRCYXRjaCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhRnJhbWUge1xuICAgIGZpbHRlcihwcmVkaWNhdGU6IFByZWRpY2F0ZSk6IERhdGFGcmFtZTtcbiAgICBzY2FuKG5leHQ6IE5leHRGdW5jLCBiaW5kPzogQmluZEZ1bmMpOiB2b2lkO1xuICAgIGNvdW50KCk6IG51bWJlcjtcbiAgICBjb3VudEJ5KGNvbDogKENvbHxzdHJpbmcpKTogQ291bnRCeVJlc3VsdDtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlIGltcGxlbWVudHMgRGF0YUZyYW1lIHtcbiAgICBzdGF0aWMgZW1wdHkoKSB7IHJldHVybiBuZXcgVGFibGUobmV3IFNjaGVtYShbXSksIFtdKTsgfVxuICAgIHN0YXRpYyBmcm9tKHNvdXJjZXM/OiBJdGVyYWJsZTxVaW50OEFycmF5IHwgQnVmZmVyIHwgc3RyaW5nPiB8IG9iamVjdCB8IHN0cmluZykge1xuICAgICAgICBpZiAoc291cmNlcykge1xuICAgICAgICAgICAgbGV0IHNjaGVtYTogU2NoZW1hIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IHJlY29yZEJhdGNoZXM6IFJlY29yZEJhdGNoW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IHJlY29yZEJhdGNoIG9mIHJlYWQoc291cmNlcykpIHtcbiAgICAgICAgICAgICAgICBzY2hlbWEgPSBzY2hlbWEgfHwgcmVjb3JkQmF0Y2guc2NoZW1hO1xuICAgICAgICAgICAgICAgIHJlY29yZEJhdGNoZXMucHVzaChyZWNvcmRCYXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRhYmxlKHNjaGVtYSB8fCBuZXcgU2NoZW1hKFtdKSwgcmVjb3JkQmF0Y2hlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFRhYmxlLmVtcHR5KCk7XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyBmcm9tQXN5bmMoc291cmNlcz86IEFzeW5jSXRlcmFibGU8VWludDhBcnJheSB8IEJ1ZmZlciB8IHN0cmluZz4pIHtcbiAgICAgICAgaWYgKGlzQXN5bmNJdGVyYWJsZShzb3VyY2VzKSkge1xuICAgICAgICAgICAgbGV0IHNjaGVtYTogU2NoZW1hIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IHJlY29yZEJhdGNoZXM6IFJlY29yZEJhdGNoW10gPSBbXTtcbiAgICAgICAgICAgIGZvciBhd2FpdCAobGV0IHJlY29yZEJhdGNoIG9mIHJlYWRBc3luYyhzb3VyY2VzKSkge1xuICAgICAgICAgICAgICAgIHNjaGVtYSA9IHNjaGVtYSB8fCByZWNvcmRCYXRjaC5zY2hlbWE7XG4gICAgICAgICAgICAgICAgcmVjb3JkQmF0Y2hlcy5wdXNoKHJlY29yZEJhdGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFibGUoc2NoZW1hIHx8IG5ldyBTY2hlbWEoW10pLCByZWNvcmRCYXRjaGVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1Byb21pc2Uoc291cmNlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBUYWJsZS5mcm9tKGF3YWl0IHNvdXJjZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBUYWJsZS5mcm9tKHNvdXJjZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBUYWJsZS5lbXB0eSgpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVN0cnVjdChzdHJ1Y3Q6IFN0cnVjdFZlY3Rvcikge1xuICAgICAgICBjb25zdCBzY2hlbWEgPSBuZXcgU2NoZW1hKHN0cnVjdC50eXBlLmNoaWxkcmVuKTtcbiAgICAgICAgY29uc3QgY2h1bmtzID0gc3RydWN0LnZpZXcgaW5zdGFuY2VvZiBDaHVua2VkVmlldyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdC52aWV3LmNodW5rVmVjdG9ycyBhcyBTdHJ1Y3RWZWN0b3JbXSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJ1Y3RdO1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlKGNodW5rcy5tYXAoKGNodW5rKSA9PiBuZXcgUmVjb3JkQmF0Y2goc2NoZW1hLCBjaHVuay5sZW5ndGgsIGNodW5rLnZpZXcuY2hpbGREYXRhKSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSBzY2hlbWE6IFNjaGVtYTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IG51bUNvbHM6IG51bWJlcjtcbiAgICAvLyBMaXN0IG9mIGlubmVyIFJlY29yZEJhdGNoZXNcbiAgICBwdWJsaWMgcmVhZG9ubHkgYmF0Y2hlczogUmVjb3JkQmF0Y2hbXTtcbiAgICAvLyBMaXN0IG9mIGlubmVyIFZlY3RvcnMsIHBvc3NpYmx5IHNwYW5uaW5nIGJhdGNoZXNcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbHVtbnM6IFZlY3Rvcjxhbnk+W10gPSBbXTtcbiAgICAvLyBVbmlvbiBvZiBhbGwgaW5uZXIgUmVjb3JkQmF0Y2hlcyBpbnRvIG9uZSBSZWNvcmRCYXRjaCwgcG9zc2libHkgY2h1bmtlZC5cbiAgICAvLyBJZiB0aGUgVGFibGUgaGFzIGp1c3Qgb25lIGlubmVyIFJlY29yZEJhdGNoLCB0aGlzIHBvaW50cyB0byB0aGF0LlxuICAgIC8vIElmIHRoZSBUYWJsZSBoYXMgbXVsdGlwbGUgaW5uZXIgUmVjb3JkQmF0Y2hlcywgdGhlbiB0aGlzIGlzIGEgQ2h1bmtlZCB2aWV3XG4gICAgLy8gb3ZlciB0aGUgbGlzdCBvZiBSZWNvcmRCYXRjaGVzLiBUaGlzIGFsbG93cyB1cyB0byBkZWxlZ2F0ZSB0aGUgcmVzcG9uc2liaWxpdHlcbiAgICAvLyBvZiBpbmRleGluZywgaXRlcmF0aW5nLCBzbGljaW5nLCBhbmQgdmlzaXRpbmcgdG8gdGhlIE5lc3RlZC9DaHVua2VkIERhdGEvVmlld3MuXG4gICAgcHVibGljIHJlYWRvbmx5IGJhdGNoZXNVbmlvbjogUmVjb3JkQmF0Y2g7XG5cbiAgICBjb25zdHJ1Y3RvcihiYXRjaGVzOiBSZWNvcmRCYXRjaFtdKTtcbiAgICBjb25zdHJ1Y3RvciguLi5iYXRjaGVzOiBSZWNvcmRCYXRjaFtdKTtcbiAgICBjb25zdHJ1Y3RvcihzY2hlbWE6IFNjaGVtYSwgYmF0Y2hlczogUmVjb3JkQmF0Y2hbXSk7XG4gICAgY29uc3RydWN0b3Ioc2NoZW1hOiBTY2hlbWEsIC4uLmJhdGNoZXM6IFJlY29yZEJhdGNoW10pO1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGxldCBzY2hlbWE6IFNjaGVtYTtcbiAgICAgICAgbGV0IGJhdGNoZXM6IFJlY29yZEJhdGNoW107XG4gICAgICAgIGlmIChhcmdzWzBdIGluc3RhbmNlb2YgU2NoZW1hKSB7XG4gICAgICAgICAgICBzY2hlbWEgPSBhcmdzWzBdO1xuICAgICAgICAgICAgYmF0Y2hlcyA9IEFycmF5LmlzQXJyYXkoYXJnc1sxXVswXSkgPyBhcmdzWzFdWzBdIDogYXJnc1sxXTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzWzBdIGluc3RhbmNlb2YgUmVjb3JkQmF0Y2gpIHtcbiAgICAgICAgICAgIHNjaGVtYSA9IChiYXRjaGVzID0gYXJncylbMF0uc2NoZW1hO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2NoZW1hID0gKGJhdGNoZXMgPSBhcmdzWzBdKVswXS5zY2hlbWE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgIHRoaXMuYmF0Y2hlcyA9IGJhdGNoZXM7XG4gICAgICAgIHRoaXMuYmF0Y2hlc1VuaW9uID0gYmF0Y2hlcy5sZW5ndGggPT0gMCA/XG4gICAgICAgICAgICBuZXcgUmVjb3JkQmF0Y2goc2NoZW1hLCAwLCBbXSkgOlxuICAgICAgICAgICAgYmF0Y2hlcy5yZWR1Y2UoKHVuaW9uLCBiYXRjaCkgPT4gdW5pb24uY29uY2F0KGJhdGNoKSk7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gdGhpcy5iYXRjaGVzVW5pb24ubGVuZ3RoO1xuICAgICAgICB0aGlzLm51bUNvbHMgPSB0aGlzLmJhdGNoZXNVbmlvbi5udW1Db2xzO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0KGluZGV4OiBudW1iZXIpOiBTdHJ1Y3RbJ1RWYWx1ZSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmF0Y2hlc1VuaW9uLmdldChpbmRleCkhO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0Q29sdW1uKG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2x1bW5BdCh0aGlzLmdldENvbHVtbkluZGV4KG5hbWUpKTtcbiAgICB9XG4gICAgcHVibGljIGdldENvbHVtbkF0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLm51bUNvbHNcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLl9jb2x1bW5zW2luZGV4XSB8fCAoXG4gICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNbaW5kZXhdID0gdGhpcy5iYXRjaGVzVW5pb24uZ2V0Q2hpbGRBdChpbmRleCkhKTtcbiAgICB9XG4gICAgcHVibGljIGdldENvbHVtbkluZGV4KG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlbWEuZmllbGRzLmZpbmRJbmRleCgoZikgPT4gZi5uYW1lID09PSBuYW1lKTtcbiAgICB9XG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8U3RydWN0WydUVmFsdWUnXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXRjaGVzVW5pb25bU3ltYm9sLml0ZXJhdG9yXSgpIGFzIGFueTtcbiAgICB9XG4gICAgcHVibGljIGZpbHRlcihwcmVkaWNhdGU6IFByZWRpY2F0ZSk6IERhdGFGcmFtZSB7XG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyZWREYXRhRnJhbWUodGhpcy5iYXRjaGVzLCBwcmVkaWNhdGUpO1xuICAgIH1cbiAgICBwdWJsaWMgc2NhbihuZXh0OiBOZXh0RnVuYywgYmluZD86IEJpbmRGdW5jKSB7XG4gICAgICAgIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmJhdGNoZXMsIG51bUJhdGNoZXMgPSBiYXRjaGVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgYmF0Y2hJbmRleCA9IC0xOyArK2JhdGNoSW5kZXggPCBudW1CYXRjaGVzOykge1xuICAgICAgICAgICAgLy8gbG9hZCBiYXRjaGVzXG4gICAgICAgICAgICBjb25zdCBiYXRjaCA9IGJhdGNoZXNbYmF0Y2hJbmRleF07XG4gICAgICAgICAgICBpZiAoYmluZCkgeyBiaW5kKGJhdGNoKTsgfVxuICAgICAgICAgICAgLy8geWllbGQgYWxsIGluZGljZXNcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gLTEsIG51bVJvd3MgPSBiYXRjaC5sZW5ndGg7ICsraW5kZXggPCBudW1Sb3dzOykge1xuICAgICAgICAgICAgICAgIG5leHQoaW5kZXgsIGJhdGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgY291bnQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMubGVuZ3RoOyB9XG4gICAgcHVibGljIGNvdW50QnkobmFtZTogQ29sIHwgc3RyaW5nKTogQ291bnRCeVJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmJhdGNoZXMsIG51bUJhdGNoZXMgPSBiYXRjaGVzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgY291bnRfYnkgPSB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgPyBuZXcgQ29sKG5hbWUpIDogbmFtZTtcbiAgICAgICAgLy8gQXNzdW1lIHRoYXQgYWxsIGRpY3Rpb25hcnkgYmF0Y2hlcyBhcmUgZGVsdGFzLCB3aGljaCBtZWFucyB0aGF0IHRoZVxuICAgICAgICAvLyBsYXN0IHJlY29yZCBiYXRjaCBoYXMgdGhlIG1vc3QgY29tcGxldGUgZGljdGlvbmFyeVxuICAgICAgICBjb3VudF9ieS5iaW5kKGJhdGNoZXNbbnVtQmF0Y2hlcyAtIDFdKTtcbiAgICAgICAgY29uc3QgdmVjdG9yID0gY291bnRfYnkudmVjdG9yIGFzIERpY3Rpb25hcnlWZWN0b3I7XG4gICAgICAgIGlmICghKHZlY3RvciBpbnN0YW5jZW9mIERpY3Rpb25hcnlWZWN0b3IpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdW50QnkgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgZGljdGlvbmFyeS1lbmNvZGVkIGNvbHVtbnMnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiBBZGp1c3QgYXJyYXkgYnl0ZSB3aWR0aCBiYXNlZCBvbiBvdmVyYWxsIGxlbmd0aFxuICAgICAgICAvLyAoZS5nLiBpZiB0aGlzLmxlbmd0aCA8PSAyNTUgdXNlIFVpbnQ4QXJyYXksIGV0Yy4uLilcbiAgICAgICAgY29uc3QgY291bnRzOiBVaW50MzJBcnJheSA9IG5ldyBVaW50MzJBcnJheSh2ZWN0b3IuZGljdGlvbmFyeS5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBiYXRjaEluZGV4ID0gLTE7ICsrYmF0Y2hJbmRleCA8IG51bUJhdGNoZXM7KSB7XG4gICAgICAgICAgICAvLyBsb2FkIGJhdGNoZXNcbiAgICAgICAgICAgIGNvbnN0IGJhdGNoID0gYmF0Y2hlc1tiYXRjaEluZGV4XTtcbiAgICAgICAgICAgIC8vIHJlYmluZCB0aGUgY291bnRCeSBDb2xcbiAgICAgICAgICAgIGNvdW50X2J5LmJpbmQoYmF0Y2gpO1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IChjb3VudF9ieS52ZWN0b3IgYXMgRGljdGlvbmFyeVZlY3RvcikuaW5kaWNpZXM7XG4gICAgICAgICAgICAvLyB5aWVsZCBhbGwgaW5kaWNlc1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAtMSwgbnVtUm93cyA9IGJhdGNoLmxlbmd0aDsgKytpbmRleCA8IG51bVJvd3M7KSB7XG4gICAgICAgICAgICAgICAgbGV0IGtleSA9IGtleXMuZ2V0KGluZGV4KTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBudWxsKSB7IGNvdW50c1trZXldKys7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IENvdW50QnlSZXN1bHQodmVjdG9yLmRpY3Rpb25hcnksIEludFZlY3Rvci5mcm9tKGNvdW50cykpO1xuICAgIH1cbiAgICBwdWJsaWMgc2VsZWN0KC4uLmNvbHVtbk5hbWVzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlKHRoaXMuYmF0Y2hlcy5tYXAoKGJhdGNoKSA9PiBiYXRjaC5zZWxlY3QoLi4uY29sdW1uTmFtZXMpKSk7XG4gICAgfVxuICAgIHB1YmxpYyB0b1N0cmluZyhzZXBhcmF0b3I/OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IHN0ciA9ICcnO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiB0aGlzLnJvd3NUb1N0cmluZyhzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgICBzdHIgKz0gcm93ICsgJ1xcbic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgcHVibGljIHJvd3NUb1N0cmluZyhzZXBhcmF0b3IgPSAnIHwgJyk6IFRhYmxlVG9TdHJpbmdJdGVyYXRvciB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVUb1N0cmluZ0l0ZXJhdG9yKHRhYmxlUm93c1RvU3RyaW5nKHRoaXMsIHNlcGFyYXRvcikpO1xuICAgIH1cbn1cblxuY2xhc3MgRmlsdGVyZWREYXRhRnJhbWUgaW1wbGVtZW50cyBEYXRhRnJhbWUge1xuICAgIHByaXZhdGUgcHJlZGljYXRlOiBQcmVkaWNhdGU7XG4gICAgcHJpdmF0ZSBiYXRjaGVzOiBSZWNvcmRCYXRjaFtdO1xuICAgIGNvbnN0cnVjdG9yIChiYXRjaGVzOiBSZWNvcmRCYXRjaFtdLCBwcmVkaWNhdGU6IFByZWRpY2F0ZSkge1xuICAgICAgICB0aGlzLmJhdGNoZXMgPSBiYXRjaGVzO1xuICAgICAgICB0aGlzLnByZWRpY2F0ZSA9IHByZWRpY2F0ZTtcbiAgICB9XG4gICAgcHVibGljIHNjYW4obmV4dDogTmV4dEZ1bmMsIGJpbmQ/OiBCaW5kRnVuYykge1xuICAgICAgICAvLyBpbmxpbmVkIHZlcnNpb24gb2YgdGhpczpcbiAgICAgICAgLy8gdGhpcy5wYXJlbnQuc2NhbigoaWR4LCBjb2x1bW5zKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAodGhpcy5wcmVkaWNhdGUoaWR4LCBjb2x1bW5zKSkgbmV4dChpZHgsIGNvbHVtbnMpO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgY29uc3QgYmF0Y2hlcyA9IHRoaXMuYmF0Y2hlcztcbiAgICAgICAgY29uc3QgbnVtQmF0Y2hlcyA9IGJhdGNoZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBiYXRjaEluZGV4ID0gLTE7ICsrYmF0Y2hJbmRleCA8IG51bUJhdGNoZXM7KSB7XG4gICAgICAgICAgICAvLyBsb2FkIGJhdGNoZXNcbiAgICAgICAgICAgIGNvbnN0IGJhdGNoID0gYmF0Y2hlc1tiYXRjaEluZGV4XTtcbiAgICAgICAgICAgIC8vIFRPRE86IGJpbmQgYmF0Y2hlcyBsYXppbHlcbiAgICAgICAgICAgIC8vIElmIHByZWRpY2F0ZSBkb2Vzbid0IG1hdGNoIGFueXRoaW5nIGluIHRoZSBiYXRjaCB3ZSBkb24ndCBuZWVkXG4gICAgICAgICAgICAvLyB0byBiaW5kIHRoZSBjYWxsYmFja1xuICAgICAgICAgICAgaWYgKGJpbmQpIHsgYmluZChiYXRjaCk7IH1cbiAgICAgICAgICAgIGNvbnN0IHByZWRpY2F0ZSA9IHRoaXMucHJlZGljYXRlLmJpbmQoYmF0Y2gpO1xuICAgICAgICAgICAgLy8geWllbGQgYWxsIGluZGljZXNcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gLTEsIG51bVJvd3MgPSBiYXRjaC5sZW5ndGg7ICsraW5kZXggPCBudW1Sb3dzOykge1xuICAgICAgICAgICAgICAgIGlmIChwcmVkaWNhdGUoaW5kZXgsIGJhdGNoKSkgeyBuZXh0KGluZGV4LCBiYXRjaCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgY291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gaW5saW5lZCB2ZXJzaW9uIG9mIHRoaXM6XG4gICAgICAgIC8vIGxldCBzdW0gPSAwO1xuICAgICAgICAvLyB0aGlzLnBhcmVudC5zY2FuKChpZHgsIGNvbHVtbnMpID0+IHtcbiAgICAgICAgLy8gICAgIGlmICh0aGlzLnByZWRpY2F0ZShpZHgsIGNvbHVtbnMpKSArK3N1bTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIC8vIHJldHVybiBzdW07XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBjb25zdCBiYXRjaGVzID0gdGhpcy5iYXRjaGVzO1xuICAgICAgICBjb25zdCBudW1CYXRjaGVzID0gYmF0Y2hlcy5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGJhdGNoSW5kZXggPSAtMTsgKytiYXRjaEluZGV4IDwgbnVtQmF0Y2hlczspIHtcbiAgICAgICAgICAgIC8vIGxvYWQgYmF0Y2hlc1xuICAgICAgICAgICAgY29uc3QgYmF0Y2ggPSBiYXRjaGVzW2JhdGNoSW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgcHJlZGljYXRlID0gdGhpcy5wcmVkaWNhdGUuYmluZChiYXRjaCk7XG4gICAgICAgICAgICAvLyB5aWVsZCBhbGwgaW5kaWNlc1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAtMSwgbnVtUm93cyA9IGJhdGNoLmxlbmd0aDsgKytpbmRleCA8IG51bVJvd3M7KSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZWRpY2F0ZShpbmRleCwgYmF0Y2gpKSB7ICsrc3VtOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG4gICAgcHVibGljIGZpbHRlcihwcmVkaWNhdGU6IFByZWRpY2F0ZSk6IERhdGFGcmFtZSB7XG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyZWREYXRhRnJhbWUoXG4gICAgICAgICAgICB0aGlzLmJhdGNoZXMsXG4gICAgICAgICAgICB0aGlzLnByZWRpY2F0ZS5hbmQocHJlZGljYXRlKVxuICAgICAgICApO1xuICAgIH1cbiAgICBwdWJsaWMgY291bnRCeShuYW1lOiBDb2wgfCBzdHJpbmcpOiBDb3VudEJ5UmVzdWx0IHtcbiAgICAgICAgY29uc3QgYmF0Y2hlcyA9IHRoaXMuYmF0Y2hlcywgbnVtQmF0Y2hlcyA9IGJhdGNoZXMubGVuZ3RoO1xuICAgICAgICBjb25zdCBjb3VudF9ieSA9IHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyA/IG5ldyBDb2wobmFtZSkgOiBuYW1lO1xuICAgICAgICAvLyBBc3N1bWUgdGhhdCBhbGwgZGljdGlvbmFyeSBiYXRjaGVzIGFyZSBkZWx0YXMsIHdoaWNoIG1lYW5zIHRoYXQgdGhlXG4gICAgICAgIC8vIGxhc3QgcmVjb3JkIGJhdGNoIGhhcyB0aGUgbW9zdCBjb21wbGV0ZSBkaWN0aW9uYXJ5XG4gICAgICAgIGNvdW50X2J5LmJpbmQoYmF0Y2hlc1tudW1CYXRjaGVzIC0gMV0pO1xuICAgICAgICBjb25zdCB2ZWN0b3IgPSBjb3VudF9ieS52ZWN0b3IgYXMgRGljdGlvbmFyeVZlY3RvcjtcbiAgICAgICAgaWYgKCEodmVjdG9yIGluc3RhbmNlb2YgRGljdGlvbmFyeVZlY3RvcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY291bnRCeSBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBkaWN0aW9uYXJ5LWVuY29kZWQgY29sdW1ucycpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE86IEFkanVzdCBhcnJheSBieXRlIHdpZHRoIGJhc2VkIG9uIG92ZXJhbGwgbGVuZ3RoXG4gICAgICAgIC8vIChlLmcuIGlmIHRoaXMubGVuZ3RoIDw9IDI1NSB1c2UgVWludDhBcnJheSwgZXRjLi4uKVxuICAgICAgICBjb25zdCBjb3VudHM6IFVpbnQzMkFycmF5ID0gbmV3IFVpbnQzMkFycmF5KHZlY3Rvci5kaWN0aW9uYXJ5Lmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGJhdGNoSW5kZXggPSAtMTsgKytiYXRjaEluZGV4IDwgbnVtQmF0Y2hlczspIHtcbiAgICAgICAgICAgIC8vIGxvYWQgYmF0Y2hlc1xuICAgICAgICAgICAgY29uc3QgYmF0Y2ggPSBiYXRjaGVzW2JhdGNoSW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgcHJlZGljYXRlID0gdGhpcy5wcmVkaWNhdGUuYmluZChiYXRjaCk7XG4gICAgICAgICAgICAvLyByZWJpbmQgdGhlIGNvdW50QnkgQ29sXG4gICAgICAgICAgICBjb3VudF9ieS5iaW5kKGJhdGNoKTtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSAoY291bnRfYnkudmVjdG9yIGFzIERpY3Rpb25hcnlWZWN0b3IpLmluZGljaWVzO1xuICAgICAgICAgICAgLy8geWllbGQgYWxsIGluZGljZXNcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gLTEsIG51bVJvd3MgPSBiYXRjaC5sZW5ndGg7ICsraW5kZXggPCBudW1Sb3dzOykge1xuICAgICAgICAgICAgICAgIGxldCBrZXkgPSBrZXlzLmdldChpbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gbnVsbCAmJiBwcmVkaWNhdGUoaW5kZXgsIGJhdGNoKSkgeyBjb3VudHNba2V5XSsrOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBDb3VudEJ5UmVzdWx0KHZlY3Rvci5kaWN0aW9uYXJ5LCBJbnRWZWN0b3IuZnJvbShjb3VudHMpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb3VudEJ5UmVzdWx0IGV4dGVuZHMgVGFibGUgaW1wbGVtZW50cyBEYXRhRnJhbWUge1xuICAgIGNvbnN0cnVjdG9yKHZhbHVlczogVmVjdG9yLCBjb3VudHM6IEludFZlY3Rvcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgbmV3IFJlY29yZEJhdGNoKG5ldyBTY2hlbWEoW1xuICAgICAgICAgICAgICAgIG5ldyBGaWVsZCgndmFsdWVzJywgdmFsdWVzLnR5cGUpLFxuICAgICAgICAgICAgICAgIG5ldyBGaWVsZCgnY291bnRzJywgY291bnRzLnR5cGUpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIGNvdW50cy5sZW5ndGgsIFt2YWx1ZXMsIGNvdW50c11cbiAgICAgICAgKSk7XG4gICAgfVxuICAgIHB1YmxpYyB0b0pTT04oKTogT2JqZWN0IHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXRDb2x1bW5BdCgwKSE7XG4gICAgICAgIGNvbnN0IGNvdW50cyA9IHRoaXMuZ2V0Q29sdW1uQXQoMSkhO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fSBhcyB7IFtrOiBzdHJpbmddOiBudW1iZXIgfCBudWxsIH07XG4gICAgICAgIGZvciAobGV0IGkgPSAtMTsgKytpIDwgdGhpcy5sZW5ndGg7KSB7XG4gICAgICAgICAgICByZXN1bHRbdmFsdWVzLmdldChpKV0gPSBjb3VudHMuZ2V0KGkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVUb1N0cmluZ0l0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGl0ZXJhdG9yOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4pIHt9XG4gICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7IHJldHVybiB0aGlzLml0ZXJhdG9yOyB9XG4gICAgbmV4dCh2YWx1ZT86IGFueSkgeyByZXR1cm4gdGhpcy5pdGVyYXRvci5uZXh0KHZhbHVlKTsgfVxuICAgIHRocm93KGVycm9yPzogYW55KSB7IHJldHVybiB0aGlzLml0ZXJhdG9yLnRocm93ICYmIHRoaXMuaXRlcmF0b3IudGhyb3coZXJyb3IpIHx8IHsgZG9uZTogdHJ1ZSwgdmFsdWU6ICcnIH07IH1cbiAgICByZXR1cm4odmFsdWU/OiBhbnkpIHsgcmV0dXJuIHRoaXMuaXRlcmF0b3IucmV0dXJuICYmIHRoaXMuaXRlcmF0b3IucmV0dXJuKHZhbHVlKSB8fCB7IGRvbmU6IHRydWUsIHZhbHVlOiAnJyB9OyB9XG4gICAgcGlwZShzdHJlYW06IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSkge1xuICAgICAgICBsZXQgcmVzOiBJdGVyYXRvclJlc3VsdDxzdHJpbmc+O1xuICAgICAgICBsZXQgd3JpdGUgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RyZWFtWyd3cml0YWJsZSddKSB7XG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHJlcyA9IHRoaXMubmV4dCgpKS5kb25lKSB7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoc3RyZWFtWyd3cml0ZSddKHJlcy52YWx1ZSArICdcXG4nLCAndXRmOCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcmVzIHx8ICFyZXMuZG9uZSkge1xuICAgICAgICAgICAgICAgIHN0cmVhbVsnb25jZSddKCdkcmFpbicsIHdyaXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIShzdHJlYW0gYXMgYW55KVsnaXNUVFknXSkge1xuICAgICAgICAgICAgICAgIHN0cmVhbVsnZW5kJ10oJ1xcbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB3cml0ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24qIHRhYmxlUm93c1RvU3RyaW5nKHRhYmxlOiBUYWJsZSwgc2VwYXJhdG9yID0gJyB8ICcpIHtcbiAgICBjb25zdCBmaWVsZHMgPSB0YWJsZS5zY2hlbWEuZmllbGRzO1xuICAgIGNvbnN0IGhlYWRlciA9IFsncm93X2lkJywgLi4uZmllbGRzLm1hcCgoZikgPT4gYCR7Zn1gKV0ubWFwKHN0cmluZ2lmeSk7XG4gICAgY29uc3QgbWF4Q29sdW1uV2lkdGhzID0gaGVhZGVyLm1hcCh4ID0+IHgubGVuZ3RoKTtcbiAgICAvLyBQYXNzIG9uZSB0byBjb252ZXJ0IHRvIHN0cmluZ3MgYW5kIGNvdW50IG1heCBjb2x1bW4gd2lkdGhzXG4gICAgZm9yIChsZXQgaSA9IC0xLCBuID0gdGFibGUubGVuZ3RoIC0gMTsgKytpIDwgbjspIHtcbiAgICAgICAgbGV0IHZhbCwgcm93ID0gW2ksIC4uLnRhYmxlLmdldChpKV07XG4gICAgICAgIGZvciAobGV0IGogPSAtMSwgayA9IHJvdy5sZW5ndGg7ICsraiA8IGs7ICkge1xuICAgICAgICAgICAgdmFsID0gc3RyaW5naWZ5KHJvd1tqXSk7XG4gICAgICAgICAgICBtYXhDb2x1bW5XaWR0aHNbal0gPSBNYXRoLm1heChtYXhDb2x1bW5XaWR0aHNbal0sIHZhbC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHlpZWxkIGhlYWRlci5tYXAoKHgsIGopID0+IGxlZnRQYWQoeCwgJyAnLCBtYXhDb2x1bW5XaWR0aHNbal0pKS5qb2luKHNlcGFyYXRvcik7XG4gICAgZm9yIChsZXQgaSA9IC0xOyArK2kgPCB0YWJsZS5sZW5ndGg7KSB7XG4gICAgICAgIHlpZWxkIFtpLCAuLi50YWJsZS5nZXQoaSldXG4gICAgICAgICAgICAubWFwKCh4KSA9PiBzdHJpbmdpZnkoeCkpXG4gICAgICAgICAgICAubWFwKCh4LCBqKSA9PiBsZWZ0UGFkKHgsICcgJywgbWF4Q29sdW1uV2lkdGhzW2pdKSlcbiAgICAgICAgICAgIC5qb2luKHNlcGFyYXRvcik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsZWZ0UGFkKHN0cjogc3RyaW5nLCBmaWxsOiBzdHJpbmcsIG46IG51bWJlcikge1xuICAgIHJldHVybiAobmV3IEFycmF5KG4gKyAxKS5qb2luKGZpbGwpICsgc3RyKS5zbGljZSgtMSAqIG4pO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkoeDogYW55KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyA/IGBcIiR7eH1cImAgOiBBcnJheUJ1ZmZlci5pc1ZpZXcoeCkgPyBgWyR7eH1dYCA6IEpTT04uc3RyaW5naWZ5KHgpO1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELG1CQUFtQixDQUFNO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkcsQ0FBQyIsImZpbGUiOiJ0YWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBSZWNvcmRCYXRjaCB9IGZyb20gJy4vcmVjb3JkYmF0Y2gnO1xuaW1wb3J0IHsgQ29sLCBQcmVkaWNhdGUgfSBmcm9tICcuL3ByZWRpY2F0ZSc7XG5pbXBvcnQgeyBTY2hlbWEsIEZpZWxkLCBTdHJ1Y3QgfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgcmVhZCwgcmVhZEFzeW5jIH0gZnJvbSAnLi9pcGMvcmVhZGVyL2Fycm93JztcbmltcG9ydCB7IGlzUHJvbWlzZSwgaXNBc3luY0l0ZXJhYmxlIH0gZnJvbSAnLi91dGlsL2NvbXBhdCc7XG5pbXBvcnQgeyBWZWN0b3IsIERpY3Rpb25hcnlWZWN0b3IsIEludFZlY3RvciwgU3RydWN0VmVjdG9yIH0gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0IHsgQ2h1bmtlZFZpZXcgfSBmcm9tICcuL3ZlY3Rvci9jaHVua2VkJztcblxuZXhwb3J0IHR5cGUgTmV4dEZ1bmMgPSAoaWR4OiBudW1iZXIsIGJhdGNoOiBSZWNvcmRCYXRjaCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEJpbmRGdW5jID0gKGJhdGNoOiBSZWNvcmRCYXRjaCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhRnJhbWUge1xuICAgIGZpbHRlcihwcmVkaWNhdGU6IFByZWRpY2F0ZSk6IERhdGFGcmFtZTtcbiAgICBzY2FuKG5leHQ6IE5leHRGdW5jLCBiaW5kPzogQmluZEZ1bmMpOiB2b2lkO1xuICAgIGNvdW50KCk6IG51bWJlcjtcbiAgICBjb3VudEJ5KGNvbDogKENvbHxzdHJpbmcpKTogQ291bnRCeVJlc3VsdDtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlIGltcGxlbWVudHMgRGF0YUZyYW1lIHtcbiAgICBzdGF0aWMgZW1wdHkoKSB7IHJldHVybiBuZXcgVGFibGUobmV3IFNjaGVtYShbXSksIFtdKTsgfVxuICAgIHN0YXRpYyBmcm9tKHNvdXJjZXM/OiBJdGVyYWJsZTxVaW50OEFycmF5IHwgQnVmZmVyIHwgc3RyaW5nPiB8IG9iamVjdCB8IHN0cmluZykge1xuICAgICAgICBpZiAoc291cmNlcykge1xuICAgICAgICAgICAgbGV0IHNjaGVtYTogU2NoZW1hIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IHJlY29yZEJhdGNoZXM6IFJlY29yZEJhdGNoW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IHJlY29yZEJhdGNoIG9mIHJlYWQoc291cmNlcykpIHtcbiAgICAgICAgICAgICAgICBzY2hlbWEgPSBzY2hlbWEgfHwgcmVjb3JkQmF0Y2guc2NoZW1hO1xuICAgICAgICAgICAgICAgIHJlY29yZEJhdGNoZXMucHVzaChyZWNvcmRCYXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRhYmxlKHNjaGVtYSB8fCBuZXcgU2NoZW1hKFtdKSwgcmVjb3JkQmF0Y2hlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFRhYmxlLmVtcHR5KCk7XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyBmcm9tQXN5bmMoc291cmNlcz86IEFzeW5jSXRlcmFibGU8VWludDhBcnJheSB8IEJ1ZmZlciB8IHN0cmluZz4pIHtcbiAgICAgICAgaWYgKGlzQXN5bmNJdGVyYWJsZShzb3VyY2VzKSkge1xuICAgICAgICAgICAgbGV0IHNjaGVtYTogU2NoZW1hIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IHJlY29yZEJhdGNoZXM6IFJlY29yZEJhdGNoW10gPSBbXTtcbiAgICAgICAgICAgIGZvciBhd2FpdCAobGV0IHJlY29yZEJhdGNoIG9mIHJlYWRBc3luYyhzb3VyY2VzKSkge1xuICAgICAgICAgICAgICAgIHNjaGVtYSA9IHNjaGVtYSB8fCByZWNvcmRCYXRjaC5zY2hlbWE7XG4gICAgICAgICAgICAgICAgcmVjb3JkQmF0Y2hlcy5wdXNoKHJlY29yZEJhdGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFibGUoc2NoZW1hIHx8IG5ldyBTY2hlbWEoW10pLCByZWNvcmRCYXRjaGVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1Byb21pc2Uoc291cmNlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBUYWJsZS5mcm9tKGF3YWl0IHNvdXJjZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBUYWJsZS5mcm9tKHNvdXJjZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBUYWJsZS5lbXB0eSgpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVN0cnVjdChzdHJ1Y3Q6IFN0cnVjdFZlY3Rvcikge1xuICAgICAgICBjb25zdCBzY2hlbWEgPSBuZXcgU2NoZW1hKHN0cnVjdC50eXBlLmNoaWxkcmVuKTtcbiAgICAgICAgY29uc3QgY2h1bmtzID0gc3RydWN0LnZpZXcgaW5zdGFuY2VvZiBDaHVua2VkVmlldyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdC52aWV3LmNodW5rVmVjdG9ycyBhcyBTdHJ1Y3RWZWN0b3JbXSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJ1Y3RdO1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlKGNodW5rcy5tYXAoKGNodW5rKSA9PiBuZXcgUmVjb3JkQmF0Y2goc2NoZW1hLCBjaHVuay5sZW5ndGgsIGNodW5rLnZpZXcuY2hpbGREYXRhKSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSBzY2hlbWE6IFNjaGVtYTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IG51bUNvbHM6IG51bWJlcjtcbiAgICAvLyBMaXN0IG9mIGlubmVyIFJlY29yZEJhdGNoZXNcbiAgICBwdWJsaWMgcmVhZG9ubHkgYmF0Y2hlczogUmVjb3JkQmF0Y2hbXTtcbiAgICAvLyBMaXN0IG9mIGlubmVyIFZlY3RvcnMsIHBvc3NpYmx5IHNwYW5uaW5nIGJhdGNoZXNcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbHVtbnM6IFZlY3Rvcjxhbnk+W10gPSBbXTtcbiAgICAvLyBVbmlvbiBvZiBhbGwgaW5uZXIgUmVjb3JkQmF0Y2hlcyBpbnRvIG9uZSBSZWNvcmRCYXRjaCwgcG9zc2libHkgY2h1bmtlZC5cbiAgICAvLyBJZiB0aGUgVGFibGUgaGFzIGp1c3Qgb25lIGlubmVyIFJlY29yZEJhdGNoLCB0aGlzIHBvaW50cyB0byB0aGF0LlxuICAgIC8vIElmIHRoZSBUYWJsZSBoYXMgbXVsdGlwbGUgaW5uZXIgUmVjb3JkQmF0Y2hlcywgdGhlbiB0aGlzIGlzIGEgQ2h1bmtlZCB2aWV3XG4gICAgLy8gb3ZlciB0aGUgbGlzdCBvZiBSZWNvcmRCYXRjaGVzLiBUaGlzIGFsbG93cyB1cyB0byBkZWxlZ2F0ZSB0aGUgcmVzcG9uc2liaWxpdHlcbiAgICAvLyBvZiBpbmRleGluZywgaXRlcmF0aW5nLCBzbGljaW5nLCBhbmQgdmlzaXRpbmcgdG8gdGhlIE5lc3RlZC9DaHVua2VkIERhdGEvVmlld3MuXG4gICAgcHVibGljIHJlYWRvbmx5IGJhdGNoZXNVbmlvbjogUmVjb3JkQmF0Y2g7XG5cbiAgICBjb25zdHJ1Y3RvcihiYXRjaGVzOiBSZWNvcmRCYXRjaFtdKTtcbiAgICBjb25zdHJ1Y3RvciguLi5iYXRjaGVzOiBSZWNvcmRCYXRjaFtdKTtcbiAgICBjb25zdHJ1Y3RvcihzY2hlbWE6IFNjaGVtYSwgYmF0Y2hlczogUmVjb3JkQmF0Y2hbXSk7XG4gICAgY29uc3RydWN0b3Ioc2NoZW1hOiBTY2hlbWEsIC4uLmJhdGNoZXM6IFJlY29yZEJhdGNoW10pO1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGxldCBzY2hlbWE6IFNjaGVtYTtcbiAgICAgICAgbGV0IGJhdGNoZXM6IFJlY29yZEJhdGNoW107XG4gICAgICAgIGlmIChhcmdzWzBdIGluc3RhbmNlb2YgU2NoZW1hKSB7XG4gICAgICAgICAgICBzY2hlbWEgPSBhcmdzWzBdO1xuICAgICAgICAgICAgYmF0Y2hlcyA9IEFycmF5LmlzQXJyYXkoYXJnc1sxXVswXSkgPyBhcmdzWzFdWzBdIDogYXJnc1sxXTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzWzBdIGluc3RhbmNlb2YgUmVjb3JkQmF0Y2gpIHtcbiAgICAgICAgICAgIHNjaGVtYSA9IChiYXRjaGVzID0gYXJncylbMF0uc2NoZW1hO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2NoZW1hID0gKGJhdGNoZXMgPSBhcmdzWzBdKVswXS5zY2hlbWE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgIHRoaXMuYmF0Y2hlcyA9IGJhdGNoZXM7XG4gICAgICAgIHRoaXMuYmF0Y2hlc1VuaW9uID0gYmF0Y2hlcy5sZW5ndGggPT0gMCA/XG4gICAgICAgICAgICBuZXcgUmVjb3JkQmF0Y2goc2NoZW1hLCAwLCBbXSkgOlxuICAgICAgICAgICAgYmF0Y2hlcy5yZWR1Y2UoKHVuaW9uLCBiYXRjaCkgPT4gdW5pb24uY29uY2F0KGJhdGNoKSk7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gdGhpcy5iYXRjaGVzVW5pb24ubGVuZ3RoO1xuICAgICAgICB0aGlzLm51bUNvbHMgPSB0aGlzLmJhdGNoZXNVbmlvbi5udW1Db2xzO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0KGluZGV4OiBudW1iZXIpOiBTdHJ1Y3RbJ1RWYWx1ZSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmF0Y2hlc1VuaW9uLmdldChpbmRleCkhO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0Q29sdW1uKG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2x1bW5BdCh0aGlzLmdldENvbHVtbkluZGV4KG5hbWUpKTtcbiAgICB9XG4gICAgcHVibGljIGdldENvbHVtbkF0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLm51bUNvbHNcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLl9jb2x1bW5zW2luZGV4XSB8fCAoXG4gICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNbaW5kZXhdID0gdGhpcy5iYXRjaGVzVW5pb24uZ2V0Q2hpbGRBdChpbmRleCkhKTtcbiAgICB9XG4gICAgcHVibGljIGdldENvbHVtbkluZGV4KG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlbWEuZmllbGRzLmZpbmRJbmRleCgoZikgPT4gZi5uYW1lID09PSBuYW1lKTtcbiAgICB9XG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8U3RydWN0WydUVmFsdWUnXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXRjaGVzVW5pb25bU3ltYm9sLml0ZXJhdG9yXSgpIGFzIGFueTtcbiAgICB9XG4gICAgcHVibGljIGZpbHRlcihwcmVkaWNhdGU6IFByZWRpY2F0ZSk6IERhdGFGcmFtZSB7XG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyZWREYXRhRnJhbWUodGhpcy5iYXRjaGVzLCBwcmVkaWNhdGUpO1xuICAgIH1cbiAgICBwdWJsaWMgc2NhbihuZXh0OiBOZXh0RnVuYywgYmluZD86IEJpbmRGdW5jKSB7XG4gICAgICAgIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmJhdGNoZXMsIG51bUJhdGNoZXMgPSBiYXRjaGVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgYmF0Y2hJbmRleCA9IC0xOyArK2JhdGNoSW5kZXggPCBudW1CYXRjaGVzOykge1xuICAgICAgICAgICAgLy8gbG9hZCBiYXRjaGVzXG4gICAgICAgICAgICBjb25zdCBiYXRjaCA9IGJhdGNoZXNbYmF0Y2hJbmRleF07XG4gICAgICAgICAgICBpZiAoYmluZCkgeyBiaW5kKGJhdGNoKTsgfVxuICAgICAgICAgICAgLy8geWllbGQgYWxsIGluZGljZXNcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gLTEsIG51bVJvd3MgPSBiYXRjaC5sZW5ndGg7ICsraW5kZXggPCBudW1Sb3dzOykge1xuICAgICAgICAgICAgICAgIG5leHQoaW5kZXgsIGJhdGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgY291bnQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMubGVuZ3RoOyB9XG4gICAgcHVibGljIGNvdW50QnkobmFtZTogQ29sIHwgc3RyaW5nKTogQ291bnRCeVJlc3VsdCB7XG4gICAgICAgIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmJhdGNoZXMsIG51bUJhdGNoZXMgPSBiYXRjaGVzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgY291bnRfYnkgPSB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgPyBuZXcgQ29sKG5hbWUpIDogbmFtZTtcbiAgICAgICAgLy8gQXNzdW1lIHRoYXQgYWxsIGRpY3Rpb25hcnkgYmF0Y2hlcyBhcmUgZGVsdGFzLCB3aGljaCBtZWFucyB0aGF0IHRoZVxuICAgICAgICAvLyBsYXN0IHJlY29yZCBiYXRjaCBoYXMgdGhlIG1vc3QgY29tcGxldGUgZGljdGlvbmFyeVxuICAgICAgICBjb3VudF9ieS5iaW5kKGJhdGNoZXNbbnVtQmF0Y2hlcyAtIDFdKTtcbiAgICAgICAgY29uc3QgdmVjdG9yID0gY291bnRfYnkudmVjdG9yIGFzIERpY3Rpb25hcnlWZWN0b3I7XG4gICAgICAgIGlmICghKHZlY3RvciBpbnN0YW5jZW9mIERpY3Rpb25hcnlWZWN0b3IpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdW50QnkgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgZGljdGlvbmFyeS1lbmNvZGVkIGNvbHVtbnMnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiBBZGp1c3QgYXJyYXkgYnl0ZSB3aWR0aCBiYXNlZCBvbiBvdmVyYWxsIGxlbmd0aFxuICAgICAgICAvLyAoZS5nLiBpZiB0aGlzLmxlbmd0aCA8PSAyNTUgdXNlIFVpbnQ4QXJyYXksIGV0Yy4uLilcbiAgICAgICAgY29uc3QgY291bnRzOiBVaW50MzJBcnJheSA9IG5ldyBVaW50MzJBcnJheSh2ZWN0b3IuZGljdGlvbmFyeS5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBiYXRjaEluZGV4ID0gLTE7ICsrYmF0Y2hJbmRleCA8IG51bUJhdGNoZXM7KSB7XG4gICAgICAgICAgICAvLyBsb2FkIGJhdGNoZXNcbiAgICAgICAgICAgIGNvbnN0IGJhdGNoID0gYmF0Y2hlc1tiYXRjaEluZGV4XTtcbiAgICAgICAgICAgIC8vIHJlYmluZCB0aGUgY291bnRCeSBDb2xcbiAgICAgICAgICAgIGNvdW50X2J5LmJpbmQoYmF0Y2gpO1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IChjb3VudF9ieS52ZWN0b3IgYXMgRGljdGlvbmFyeVZlY3RvcikuaW5kaWNlcztcbiAgICAgICAgICAgIC8vIHlpZWxkIGFsbCBpbmRpY2VzXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IC0xLCBudW1Sb3dzID0gYmF0Y2gubGVuZ3RoOyArK2luZGV4IDwgbnVtUm93czspIHtcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0ga2V5cy5nZXQoaW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09IG51bGwpIHsgY291bnRzW2tleV0rKzsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQ291bnRCeVJlc3VsdCh2ZWN0b3IuZGljdGlvbmFyeSwgSW50VmVjdG9yLmZyb20oY291bnRzKSk7XG4gICAgfVxuICAgIHB1YmxpYyBzZWxlY3QoLi4uY29sdW1uTmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGUodGhpcy5iYXRjaGVzLm1hcCgoYmF0Y2gpID0+IGJhdGNoLnNlbGVjdCguLi5jb2x1bW5OYW1lcykpKTtcbiAgICB9XG4gICAgcHVibGljIHRvU3RyaW5nKHNlcGFyYXRvcj86IHN0cmluZykge1xuICAgICAgICBsZXQgc3RyID0gJyc7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMucm93c1RvU3RyaW5nKHNlcGFyYXRvcikpIHtcbiAgICAgICAgICAgIHN0ciArPSByb3cgKyAnXFxuJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBwdWJsaWMgcm93c1RvU3RyaW5nKHNlcGFyYXRvciA9ICcgfCAnKTogVGFibGVUb1N0cmluZ0l0ZXJhdG9yIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZVRvU3RyaW5nSXRlcmF0b3IodGFibGVSb3dzVG9TdHJpbmcodGhpcywgc2VwYXJhdG9yKSk7XG4gICAgfVxufVxuXG5jbGFzcyBGaWx0ZXJlZERhdGFGcmFtZSBpbXBsZW1lbnRzIERhdGFGcmFtZSB7XG4gICAgcHJpdmF0ZSBwcmVkaWNhdGU6IFByZWRpY2F0ZTtcbiAgICBwcml2YXRlIGJhdGNoZXM6IFJlY29yZEJhdGNoW107XG4gICAgY29uc3RydWN0b3IgKGJhdGNoZXM6IFJlY29yZEJhdGNoW10sIHByZWRpY2F0ZTogUHJlZGljYXRlKSB7XG4gICAgICAgIHRoaXMuYmF0Y2hlcyA9IGJhdGNoZXM7XG4gICAgICAgIHRoaXMucHJlZGljYXRlID0gcHJlZGljYXRlO1xuICAgIH1cbiAgICBwdWJsaWMgc2NhbihuZXh0OiBOZXh0RnVuYywgYmluZD86IEJpbmRGdW5jKSB7XG4gICAgICAgIC8vIGlubGluZWQgdmVyc2lvbiBvZiB0aGlzOlxuICAgICAgICAvLyB0aGlzLnBhcmVudC5zY2FuKChpZHgsIGNvbHVtbnMpID0+IHtcbiAgICAgICAgLy8gICAgIGlmICh0aGlzLnByZWRpY2F0ZShpZHgsIGNvbHVtbnMpKSBuZXh0KGlkeCwgY29sdW1ucyk7XG4gICAgICAgIC8vIH0pO1xuICAgICAgICBjb25zdCBiYXRjaGVzID0gdGhpcy5iYXRjaGVzO1xuICAgICAgICBjb25zdCBudW1CYXRjaGVzID0gYmF0Y2hlcy5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGJhdGNoSW5kZXggPSAtMTsgKytiYXRjaEluZGV4IDwgbnVtQmF0Y2hlczspIHtcbiAgICAgICAgICAgIC8vIGxvYWQgYmF0Y2hlc1xuICAgICAgICAgICAgY29uc3QgYmF0Y2ggPSBiYXRjaGVzW2JhdGNoSW5kZXhdO1xuICAgICAgICAgICAgLy8gVE9ETzogYmluZCBiYXRjaGVzIGxhemlseVxuICAgICAgICAgICAgLy8gSWYgcHJlZGljYXRlIGRvZXNuJ3QgbWF0Y2ggYW55dGhpbmcgaW4gdGhlIGJhdGNoIHdlIGRvbid0IG5lZWRcbiAgICAgICAgICAgIC8vIHRvIGJpbmQgdGhlIGNhbGxiYWNrXG4gICAgICAgICAgICBpZiAoYmluZCkgeyBiaW5kKGJhdGNoKTsgfVxuICAgICAgICAgICAgY29uc3QgcHJlZGljYXRlID0gdGhpcy5wcmVkaWNhdGUuYmluZChiYXRjaCk7XG4gICAgICAgICAgICAvLyB5aWVsZCBhbGwgaW5kaWNlc1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAtMSwgbnVtUm93cyA9IGJhdGNoLmxlbmd0aDsgKytpbmRleCA8IG51bVJvd3M7KSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZWRpY2F0ZShpbmRleCwgYmF0Y2gpKSB7IG5leHQoaW5kZXgsIGJhdGNoKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xuICAgICAgICAvLyBpbmxpbmVkIHZlcnNpb24gb2YgdGhpczpcbiAgICAgICAgLy8gbGV0IHN1bSA9IDA7XG4gICAgICAgIC8vIHRoaXMucGFyZW50LnNjYW4oKGlkeCwgY29sdW1ucykgPT4ge1xuICAgICAgICAvLyAgICAgaWYgKHRoaXMucHJlZGljYXRlKGlkeCwgY29sdW1ucykpICsrc3VtO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgLy8gcmV0dXJuIHN1bTtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmJhdGNoZXM7XG4gICAgICAgIGNvbnN0IG51bUJhdGNoZXMgPSBiYXRjaGVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgYmF0Y2hJbmRleCA9IC0xOyArK2JhdGNoSW5kZXggPCBudW1CYXRjaGVzOykge1xuICAgICAgICAgICAgLy8gbG9hZCBiYXRjaGVzXG4gICAgICAgICAgICBjb25zdCBiYXRjaCA9IGJhdGNoZXNbYmF0Y2hJbmRleF07XG4gICAgICAgICAgICBjb25zdCBwcmVkaWNhdGUgPSB0aGlzLnByZWRpY2F0ZS5iaW5kKGJhdGNoKTtcbiAgICAgICAgICAgIC8vIHlpZWxkIGFsbCBpbmRpY2VzXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IC0xLCBudW1Sb3dzID0gYmF0Y2gubGVuZ3RoOyArK2luZGV4IDwgbnVtUm93czspIHtcbiAgICAgICAgICAgICAgICBpZiAocHJlZGljYXRlKGluZGV4LCBiYXRjaCkpIHsgKytzdW07IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgIH1cbiAgICBwdWJsaWMgZmlsdGVyKHByZWRpY2F0ZTogUHJlZGljYXRlKTogRGF0YUZyYW1lIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXJlZERhdGFGcmFtZShcbiAgICAgICAgICAgIHRoaXMuYmF0Y2hlcyxcbiAgICAgICAgICAgIHRoaXMucHJlZGljYXRlLmFuZChwcmVkaWNhdGUpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHB1YmxpYyBjb3VudEJ5KG5hbWU6IENvbCB8IHN0cmluZyk6IENvdW50QnlSZXN1bHQge1xuICAgICAgICBjb25zdCBiYXRjaGVzID0gdGhpcy5iYXRjaGVzLCBudW1CYXRjaGVzID0gYmF0Y2hlcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGNvdW50X2J5ID0gdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnID8gbmV3IENvbChuYW1lKSA6IG5hbWU7XG4gICAgICAgIC8vIEFzc3VtZSB0aGF0IGFsbCBkaWN0aW9uYXJ5IGJhdGNoZXMgYXJlIGRlbHRhcywgd2hpY2ggbWVhbnMgdGhhdCB0aGVcbiAgICAgICAgLy8gbGFzdCByZWNvcmQgYmF0Y2ggaGFzIHRoZSBtb3N0IGNvbXBsZXRlIGRpY3Rpb25hcnlcbiAgICAgICAgY291bnRfYnkuYmluZChiYXRjaGVzW251bUJhdGNoZXMgLSAxXSk7XG4gICAgICAgIGNvbnN0IHZlY3RvciA9IGNvdW50X2J5LnZlY3RvciBhcyBEaWN0aW9uYXJ5VmVjdG9yO1xuICAgICAgICBpZiAoISh2ZWN0b3IgaW5zdGFuY2VvZiBEaWN0aW9uYXJ5VmVjdG9yKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VudEJ5IGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGRpY3Rpb25hcnktZW5jb2RlZCBjb2x1bW5zJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogQWRqdXN0IGFycmF5IGJ5dGUgd2lkdGggYmFzZWQgb24gb3ZlcmFsbCBsZW5ndGhcbiAgICAgICAgLy8gKGUuZy4gaWYgdGhpcy5sZW5ndGggPD0gMjU1IHVzZSBVaW50OEFycmF5LCBldGMuLi4pXG4gICAgICAgIGNvbnN0IGNvdW50czogVWludDMyQXJyYXkgPSBuZXcgVWludDMyQXJyYXkodmVjdG9yLmRpY3Rpb25hcnkubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgYmF0Y2hJbmRleCA9IC0xOyArK2JhdGNoSW5kZXggPCBudW1CYXRjaGVzOykge1xuICAgICAgICAgICAgLy8gbG9hZCBiYXRjaGVzXG4gICAgICAgICAgICBjb25zdCBiYXRjaCA9IGJhdGNoZXNbYmF0Y2hJbmRleF07XG4gICAgICAgICAgICBjb25zdCBwcmVkaWNhdGUgPSB0aGlzLnByZWRpY2F0ZS5iaW5kKGJhdGNoKTtcbiAgICAgICAgICAgIC8vIHJlYmluZCB0aGUgY291bnRCeSBDb2xcbiAgICAgICAgICAgIGNvdW50X2J5LmJpbmQoYmF0Y2gpO1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IChjb3VudF9ieS52ZWN0b3IgYXMgRGljdGlvbmFyeVZlY3RvcikuaW5kaWNlcztcbiAgICAgICAgICAgIC8vIHlpZWxkIGFsbCBpbmRpY2VzXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IC0xLCBudW1Sb3dzID0gYmF0Y2gubGVuZ3RoOyArK2luZGV4IDwgbnVtUm93czspIHtcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0ga2V5cy5nZXQoaW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09IG51bGwgJiYgcHJlZGljYXRlKGluZGV4LCBiYXRjaCkpIHsgY291bnRzW2tleV0rKzsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQ291bnRCeVJlc3VsdCh2ZWN0b3IuZGljdGlvbmFyeSwgSW50VmVjdG9yLmZyb20oY291bnRzKSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ291bnRCeVJlc3VsdCBleHRlbmRzIFRhYmxlIGltcGxlbWVudHMgRGF0YUZyYW1lIHtcbiAgICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IFZlY3RvciwgY291bnRzOiBJbnRWZWN0b3I8YW55Pikge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG5ldyBSZWNvcmRCYXRjaChuZXcgU2NoZW1hKFtcbiAgICAgICAgICAgICAgICBuZXcgRmllbGQoJ3ZhbHVlcycsIHZhbHVlcy50eXBlKSxcbiAgICAgICAgICAgICAgICBuZXcgRmllbGQoJ2NvdW50cycsIGNvdW50cy50eXBlKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBjb3VudHMubGVuZ3RoLCBbdmFsdWVzLCBjb3VudHNdXG4gICAgICAgICkpO1xuICAgIH1cbiAgICBwdWJsaWMgdG9KU09OKCk6IE9iamVjdCB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0Q29sdW1uQXQoMCkhO1xuICAgICAgICBjb25zdCBjb3VudHMgPSB0aGlzLmdldENvbHVtbkF0KDEpITtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge30gYXMgeyBbazogc3RyaW5nXTogbnVtYmVyIHwgbnVsbCB9O1xuICAgICAgICBmb3IgKGxldCBpID0gLTE7ICsraSA8IHRoaXMubGVuZ3RoOykge1xuICAgICAgICAgICAgcmVzdWx0W3ZhbHVlcy5nZXQoaSldID0gY291bnRzLmdldChpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlVG9TdHJpbmdJdGVyYXRvciBpbXBsZW1lbnRzIEl0ZXJhYmxlSXRlcmF0b3I8c3RyaW5nPiB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpdGVyYXRvcjogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+KSB7fVxuICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeyByZXR1cm4gdGhpcy5pdGVyYXRvcjsgfVxuICAgIG5leHQodmFsdWU/OiBhbnkpIHsgcmV0dXJuIHRoaXMuaXRlcmF0b3IubmV4dCh2YWx1ZSk7IH1cbiAgICB0aHJvdyhlcnJvcj86IGFueSkgeyByZXR1cm4gdGhpcy5pdGVyYXRvci50aHJvdyAmJiB0aGlzLml0ZXJhdG9yLnRocm93KGVycm9yKSB8fCB7IGRvbmU6IHRydWUsIHZhbHVlOiAnJyB9OyB9XG4gICAgcmV0dXJuKHZhbHVlPzogYW55KSB7IHJldHVybiB0aGlzLml0ZXJhdG9yLnJldHVybiAmJiB0aGlzLml0ZXJhdG9yLnJldHVybih2YWx1ZSkgfHwgeyBkb25lOiB0cnVlLCB2YWx1ZTogJycgfTsgfVxuICAgIHBpcGUoc3RyZWFtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pIHtcbiAgICAgICAgbGV0IHJlczogSXRlcmF0b3JSZXN1bHQ8c3RyaW5nPjtcbiAgICAgICAgbGV0IHdyaXRlID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0cmVhbVsnd3JpdGFibGUnXSkge1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChyZXMgPSB0aGlzLm5leHQoKSkuZG9uZSkgeyBicmVhazsgfVxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHN0cmVhbVsnd3JpdGUnXShyZXMudmFsdWUgKyAnXFxuJywgJ3V0ZjgnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJlcyB8fCAhcmVzLmRvbmUpIHtcbiAgICAgICAgICAgICAgICBzdHJlYW1bJ29uY2UnXSgnZHJhaW4nLCB3cml0ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCEoc3RyZWFtIGFzIGFueSlbJ2lzVFRZJ10pIHtcbiAgICAgICAgICAgICAgICBzdHJlYW1bJ2VuZCddKCdcXG4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd3JpdGUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uKiB0YWJsZVJvd3NUb1N0cmluZyh0YWJsZTogVGFibGUsIHNlcGFyYXRvciA9ICcgfCAnKSB7XG4gICAgY29uc3QgZmllbGRzID0gdGFibGUuc2NoZW1hLmZpZWxkcztcbiAgICBjb25zdCBoZWFkZXIgPSBbJ3Jvd19pZCcsIC4uLmZpZWxkcy5tYXAoKGYpID0+IGAke2Z9YCldLm1hcChzdHJpbmdpZnkpO1xuICAgIGNvbnN0IG1heENvbHVtbldpZHRocyA9IGhlYWRlci5tYXAoeCA9PiB4Lmxlbmd0aCk7XG4gICAgLy8gUGFzcyBvbmUgdG8gY29udmVydCB0byBzdHJpbmdzIGFuZCBjb3VudCBtYXggY29sdW1uIHdpZHRoc1xuICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IHRhYmxlLmxlbmd0aCAtIDE7ICsraSA8IG47KSB7XG4gICAgICAgIGxldCB2YWwsIHJvdyA9IFtpLCAuLi50YWJsZS5nZXQoaSldO1xuICAgICAgICBmb3IgKGxldCBqID0gLTEsIGsgPSByb3cubGVuZ3RoOyArK2ogPCBrOyApIHtcbiAgICAgICAgICAgIHZhbCA9IHN0cmluZ2lmeShyb3dbal0pO1xuICAgICAgICAgICAgbWF4Q29sdW1uV2lkdGhzW2pdID0gTWF0aC5tYXgobWF4Q29sdW1uV2lkdGhzW2pdLCB2YWwubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB5aWVsZCBoZWFkZXIubWFwKCh4LCBqKSA9PiBsZWZ0UGFkKHgsICcgJywgbWF4Q29sdW1uV2lkdGhzW2pdKSkuam9pbihzZXBhcmF0b3IpO1xuICAgIGZvciAobGV0IGkgPSAtMTsgKytpIDwgdGFibGUubGVuZ3RoOykge1xuICAgICAgICB5aWVsZCBbaSwgLi4udGFibGUuZ2V0KGkpXVxuICAgICAgICAgICAgLm1hcCgoeCkgPT4gc3RyaW5naWZ5KHgpKVxuICAgICAgICAgICAgLm1hcCgoeCwgaikgPT4gbGVmdFBhZCh4LCAnICcsIG1heENvbHVtbldpZHRoc1tqXSkpXG4gICAgICAgICAgICAuam9pbihzZXBhcmF0b3IpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbGVmdFBhZChzdHI6IHN0cmluZywgZmlsbDogc3RyaW5nLCBuOiBudW1iZXIpIHtcbiAgICByZXR1cm4gKG5ldyBBcnJheShuICsgMSkuam9pbihmaWxsKSArIHN0cikuc2xpY2UoLTEgKiBuKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KHg6IGFueSkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyBgXCIke3h9XCJgIDogQXJyYXlCdWZmZXIuaXNWaWV3KHgpID8gYFske3h9XWAgOiBKU09OLnN0cmluZ2lmeSh4KTtcbn1cbiJdfQ==

@@ -40,3 +40,3 @@ /// <reference types="flatbuffers" />

readonly [Symbol.toStringTag]: string;
readonly indicies: T | Int<any>;
readonly indices: T | Int<any>;
}

@@ -349,5 +349,5 @@ export declare type TimeBitWidth = 32 | 64;

readonly dictionary: T;
readonly indicies: Int<any>;
readonly indices: Int<any>;
readonly isOrdered: boolean;
constructor(dictionary: T, indicies: Int<any>, id?: Long | number | null, isOrdered?: boolean | null);
constructor(dictionary: T, indices: Int<any>, id?: Long | number | null, isOrdered?: boolean | null);
readonly ArrayType: any;

@@ -354,0 +354,0 @@ toString(): string;

@@ -149,3 +149,3 @@ import { Data } from './data';

export declare class DictionaryVector<T extends DataType = DataType> extends Vector<Dictionary<T>> {
readonly indicies: Vector<Int>;
readonly indices: Vector<Int>;
readonly dictionary: Vector<T>;

@@ -152,0 +152,0 @@ constructor(data: Data<Dictionary<T>>, view?: View<Dictionary<T>>);

@@ -5,5 +5,5 @@ import { Data } from '../data';

export declare class DictionaryView<T extends DataType> implements View<T> {
indicies: Vector<Int>;
indices: Vector<Int>;
dictionary: Vector<T>;
constructor(dictionary: Vector<T>, indicies: Vector<Int>);
constructor(dictionary: Vector<T>, indices: Vector<Int>);
clone(data: Data<Dictionary<T>>): this;

@@ -10,0 +10,0 @@ isValid(index: number): boolean;

@@ -20,17 +20,17 @@ "use strict";

class DictionaryView {
constructor(dictionary, indicies) {
this.indicies = indicies;
constructor(dictionary, indices) {
this.indices = indices;
this.dictionary = dictionary;
}
clone(data) {
return new DictionaryView(data.dictionary, this.indicies.clone(data.indicies));
return new DictionaryView(data.dictionary, this.indices.clone(data.indices));
}
isValid(index) {
return this.indicies.isValid(index);
return this.indices.isValid(index);
}
get(index) {
return this.dictionary.get(this.indicies.get(index));
return this.dictionary.get(this.indices.get(index));
}
set(index, value) {
this.dictionary.set(this.indicies.get(index), value);
this.dictionary.set(this.indices.get(index), value);
}

@@ -41,5 +41,5 @@ toArray() {

*[Symbol.iterator]() {
const values = this.dictionary, indicies = this.indicies;
for (let index = -1, n = indicies.length; ++index < n;) {
yield values.get(indicies.get(index));
const values = this.dictionary, indices = this.indices;
for (let index = -1, n = indices.length; ++index < n;) {
yield values.get(indices.get(index));
}

@@ -53,4 +53,4 @@ }

}
// ... then find the first occurence of that key in indicies
return this.indicies.indexOf(key);
// ... then find the first occurence of that key in indices
return this.indices.indexOf(key);
}

@@ -60,2 +60,2 @@ }

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9kaWN0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw2REFBNkQ7QUFDN0QsK0RBQStEO0FBQy9ELHdEQUF3RDtBQUN4RCw2REFBNkQ7QUFDN0Qsb0RBQW9EO0FBQ3BELDZEQUE2RDtBQUM3RCw2REFBNkQ7QUFDN0QsRUFBRTtBQUNGLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsNkRBQTZEO0FBQzdELDhEQUE4RDtBQUM5RCx5REFBeUQ7QUFDekQsNERBQTREO0FBQzVELDBEQUEwRDtBQUMxRCxxQkFBcUI7O0FBTXJCO0lBR0ksWUFBWSxVQUFxQixFQUFFLFFBQXFCO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFDTSxLQUFLLENBQUMsSUFBeUI7UUFDbEMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFTLENBQUM7SUFDM0YsQ0FBQztJQUNNLE9BQU8sQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ00sR0FBRyxDQUFDLEtBQWE7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNNLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBa0I7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNNLE9BQU87UUFDVixNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDTSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pELEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3JELE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7SUFDTSxPQUFPLENBQUMsTUFBbUI7UUFDOUIseURBQXlEO1FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQUMsQ0FBQztRQUUvQiw0REFBNEQ7UUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDSjtBQXBDRCx3Q0FvQ0MiLCJmaWxlIjoidmVjdG9yL2RpY3Rpb25hcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgRGF0YSB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHsgVmlldywgVmVjdG9yIH0gZnJvbSAnLi4vdmVjdG9yJztcbmltcG9ydCB7IEl0ZXJhYmxlQXJyYXlMaWtlLCBEYXRhVHlwZSwgRGljdGlvbmFyeSwgSW50IH0gZnJvbSAnLi4vdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBEaWN0aW9uYXJ5VmlldzxUIGV4dGVuZHMgRGF0YVR5cGU+IGltcGxlbWVudHMgVmlldzxUPiB7XG4gICAgcHVibGljIGluZGljaWVzOiBWZWN0b3I8SW50PjtcbiAgICBwdWJsaWMgZGljdGlvbmFyeTogVmVjdG9yPFQ+O1xuICAgIGNvbnN0cnVjdG9yKGRpY3Rpb25hcnk6IFZlY3RvcjxUPiwgaW5kaWNpZXM6IFZlY3RvcjxJbnQ+KSB7XG4gICAgICAgIHRoaXMuaW5kaWNpZXMgPSBpbmRpY2llcztcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJ5ID0gZGljdGlvbmFyeTtcbiAgICB9XG4gICAgcHVibGljIGNsb25lKGRhdGE6IERhdGE8RGljdGlvbmFyeTxUPj4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEaWN0aW9uYXJ5VmlldyhkYXRhLmRpY3Rpb25hcnksIHRoaXMuaW5kaWNpZXMuY2xvbmUoZGF0YS5pbmRpY2llcykpIGFzIHRoaXM7XG4gICAgfVxuICAgIHB1YmxpYyBpc1ZhbGlkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNpZXMuaXNWYWxpZChpbmRleCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcik6IFRbJ1RWYWx1ZSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeS5nZXQodGhpcy5pbmRpY2llcy5nZXQoaW5kZXgpKTtcbiAgICB9XG4gICAgcHVibGljIHNldChpbmRleDogbnVtYmVyLCB2YWx1ZTogVFsnVFZhbHVlJ10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJ5LnNldCh0aGlzLmluZGljaWVzLmdldChpbmRleCksIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8VFsnVFZhbHVlJ10+IHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzXTtcbiAgICB9XG4gICAgcHVibGljICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFRbJ1RWYWx1ZSddPiB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZGljdGlvbmFyeSwgaW5kaWNpZXMgPSB0aGlzLmluZGljaWVzO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IC0xLCBuID0gaW5kaWNpZXMubGVuZ3RoOyArK2luZGV4IDwgbjspIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbHVlcy5nZXQoaW5kaWNpZXMuZ2V0KGluZGV4KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGluZGV4T2Yoc2VhcmNoOiBUWydUVmFsdWUnXSkge1xuICAgICAgICAvLyBGaXJzdCBmaW5kIHRoZSBkaWN0aW9uYXJ5IGtleSBmb3IgdGhlIGRlc2lyZWQgdmFsdWUuLi5cbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5kaWN0aW9uYXJ5LmluZGV4T2Yoc2VhcmNoKTtcbiAgICAgICAgaWYgKGtleSA9PT0gLTEpIHsgcmV0dXJuIGtleTsgfVxuXG4gICAgICAgIC8vIC4uLiB0aGVuIGZpbmQgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiB0aGF0IGtleSBpbiBpbmRpY2llc1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRpY2llcy5pbmRleE9mKGtleSEpO1xuICAgIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9kaWN0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw2REFBNkQ7QUFDN0QsK0RBQStEO0FBQy9ELHdEQUF3RDtBQUN4RCw2REFBNkQ7QUFDN0Qsb0RBQW9EO0FBQ3BELDZEQUE2RDtBQUM3RCw2REFBNkQ7QUFDN0QsRUFBRTtBQUNGLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsNkRBQTZEO0FBQzdELDhEQUE4RDtBQUM5RCx5REFBeUQ7QUFDekQsNERBQTREO0FBQzVELDBEQUEwRDtBQUMxRCxxQkFBcUI7O0FBTXJCO0lBR0ksWUFBWSxVQUFxQixFQUFFLE9BQW9CO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFDTSxLQUFLLENBQUMsSUFBeUI7UUFDbEMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFTLENBQUM7SUFDekYsQ0FBQztJQUNNLE9BQU8sQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ00sR0FBRyxDQUFDLEtBQWE7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNNLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBa0I7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNNLE9BQU87UUFDVixNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDTSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3ZELEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3BELE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNMLENBQUM7SUFDTSxPQUFPLENBQUMsTUFBbUI7UUFDOUIseURBQXlEO1FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQUMsQ0FBQztRQUUvQiwyREFBMkQ7UUFDM0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQXBDRCx3Q0FvQ0MiLCJmaWxlIjoidmVjdG9yL2RpY3Rpb25hcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgRGF0YSB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHsgVmlldywgVmVjdG9yIH0gZnJvbSAnLi4vdmVjdG9yJztcbmltcG9ydCB7IEl0ZXJhYmxlQXJyYXlMaWtlLCBEYXRhVHlwZSwgRGljdGlvbmFyeSwgSW50IH0gZnJvbSAnLi4vdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBEaWN0aW9uYXJ5VmlldzxUIGV4dGVuZHMgRGF0YVR5cGU+IGltcGxlbWVudHMgVmlldzxUPiB7XG4gICAgcHVibGljIGluZGljZXM6IFZlY3RvcjxJbnQ+O1xuICAgIHB1YmxpYyBkaWN0aW9uYXJ5OiBWZWN0b3I8VD47XG4gICAgY29uc3RydWN0b3IoZGljdGlvbmFyeTogVmVjdG9yPFQ+LCBpbmRpY2VzOiBWZWN0b3I8SW50Pikge1xuICAgICAgICB0aGlzLmluZGljZXMgPSBpbmRpY2VzO1xuICAgICAgICB0aGlzLmRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5O1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmUoZGF0YTogRGF0YTxEaWN0aW9uYXJ5PFQ+Pik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3IERpY3Rpb25hcnlWaWV3KGRhdGEuZGljdGlvbmFyeSwgdGhpcy5pbmRpY2VzLmNsb25lKGRhdGEuaW5kaWNlcykpIGFzIHRoaXM7XG4gICAgfVxuICAgIHB1YmxpYyBpc1ZhbGlkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNlcy5pc1ZhbGlkKGluZGV4KTtcbiAgICB9XG4gICAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogVFsnVFZhbHVlJ10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5LmdldCh0aGlzLmluZGljZXMuZ2V0KGluZGV4KSk7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQoaW5kZXg6IG51bWJlciwgdmFsdWU6IFRbJ1RWYWx1ZSddKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGljdGlvbmFyeS5zZXQodGhpcy5pbmRpY2VzLmdldChpbmRleCksIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8VFsnVFZhbHVlJ10+IHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzXTtcbiAgICB9XG4gICAgcHVibGljICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFRbJ1RWYWx1ZSddPiB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZGljdGlvbmFyeSwgaW5kaWNlcyA9IHRoaXMuaW5kaWNlcztcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAtMSwgbiA9IGluZGljZXMubGVuZ3RoOyArK2luZGV4IDwgbjspIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbHVlcy5nZXQoaW5kaWNlcy5nZXQoaW5kZXgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgaW5kZXhPZihzZWFyY2g6IFRbJ1RWYWx1ZSddKSB7XG4gICAgICAgIC8vIEZpcnN0IGZpbmQgdGhlIGRpY3Rpb25hcnkga2V5IGZvciB0aGUgZGVzaXJlZCB2YWx1ZS4uLlxuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmRpY3Rpb25hcnkuaW5kZXhPZihzZWFyY2gpO1xuICAgICAgICBpZiAoa2V5ID09PSAtMSkgeyByZXR1cm4ga2V5OyB9XG5cbiAgICAgICAgLy8gLi4uIHRoZW4gZmluZCB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoYXQga2V5IGluIGluZGljZXNcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNlcy5pbmRleE9mKGtleSEpO1xuICAgIH1cbn1cbiJdfQ==

@@ -320,7 +320,7 @@ "use strict";

exports.epochDaysToMs = epochDaysToMs;
function epochMillisecondsLongToMs(data, index) { return 4294967296 * (data[index + 1]) + data[index]; }
function epochMillisecondsLongToMs(data, index) { return 4294967296 * (data[index + 1]) + (data[index] >>> 0); }
exports.epochMillisecondsLongToMs = epochMillisecondsLongToMs;
function epochMicrosecondsLongToMs(data, index) { return 4294967296 * (data[index + 1] / 1000) + (data[index] / 1000); }
function epochMicrosecondsLongToMs(data, index) { return 4294967296 * (data[index + 1] / 1000) + ((data[index] >>> 0) / 1000); }
exports.epochMicrosecondsLongToMs = epochMicrosecondsLongToMs;
function epochNanosecondsLongToMs(data, index) { return 4294967296 * (data[index + 1] / 1000000) + (data[index] / 1000000); }
function epochNanosecondsLongToMs(data, index) { return 4294967296 * (data[index + 1] / 1000000) + ((data[index] >>> 0) / 1000000); }
exports.epochNanosecondsLongToMs = epochNanosecondsLongToMs;

@@ -338,2 +338,2 @@ function epochMillisecondsToDate(epochMs) { return new Date(epochMs); }

//# sourceMappingURL=data:application/json;charset=utf8;base64,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SUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUF4Siw0REFBd0o7QUFFeEosaUNBQXdDLE9BQWUsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQXRGLDBEQUFzRjtBQUN0Rix5QkFBZ0MsSUFBZ0IsRUFBRSxLQUFhLElBQUksTUFBTSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBaEksMENBQWdJO0FBQ2hJLDRCQUFtQyxJQUFnQixFQUFFLEtBQWEsSUFBSSxNQUFNLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQXRJLGdEQUFzSTtBQUN0SSxvQ0FBMkMsSUFBZ0IsRUFBRSxLQUFhLElBQUksTUFBTSxDQUFDLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUF0SixnRUFBc0o7QUFDdEoscUNBQTRDLElBQWdCLEVBQUUsS0FBYSxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBeEosa0VBQXdKIiwiZmlsZSI6InZlY3Rvci9mbGF0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7IERhdGEgfSBmcm9tICcuLi9kYXRhJztcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuLi92ZWN0b3InO1xuaW1wb3J0IHsgZ2V0Qm9vbCwgc2V0Qm9vbCwgaXRlcmF0ZUJpdHMgfSBmcm9tICcuLi91dGlsL2JpdCc7XG5pbXBvcnQgeyBCb29sLCBGbG9hdDE2LCBEYXRlXywgSW50ZXJ2YWwsIE51bGwsIEludDMyLCBUaW1lc3RhbXAgfSBmcm9tICcuLi90eXBlJztcbmltcG9ydCB7IERhdGFUeXBlLCBGbGF0VHlwZSwgUHJpbWl0aXZlVHlwZSwgSXRlcmFibGVBcnJheUxpa2UgfSBmcm9tICcuLi90eXBlJztcblxuZXhwb3J0IGNsYXNzIEZsYXRWaWV3PFQgZXh0ZW5kcyBGbGF0VHlwZT4gaW1wbGVtZW50cyBWaWV3PFQ+IHtcbiAgICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gICAgcHVibGljIHZhbHVlczogVFsnVEFycmF5J107XG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0YTxUPikge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IGRhdGEudmFsdWVzO1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmUoZGF0YTogRGF0YTxUPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3ICg8YW55PiB0aGlzLmNvbnN0cnVjdG9yKShkYXRhKSBhcyB0aGlzO1xuICAgIH1cbiAgICBwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcik6IFRbJ1RWYWx1ZSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XTtcbiAgICB9XG4gICAgcHVibGljIHNldChpbmRleDogbnVtYmVyLCB2YWx1ZTogVFsnVFZhbHVlJ10pOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XSA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgdG9BcnJheSgpOiBJdGVyYWJsZUFycmF5TGlrZTxUWydUVmFsdWUnXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3ViYXJyYXkoMCwgdGhpcy5sZW5ndGgpO1xuICAgIH1cbiAgICBwdWJsaWMgaW5kZXhPZihzZWFyY2g6IFRbJ1RWYWx1ZSddKSB7XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHRoaXMpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gc2VhcmNoKSB7IHJldHVybiBpbmRleDsgfVxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8VFsnVFZhbHVlJ10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLnN1YmFycmF5KDAsIHRoaXMubGVuZ3RoKVtTeW1ib2wuaXRlcmF0b3JdKCkgYXMgSXRlcmFibGVJdGVyYXRvcjxUWydUVmFsdWUnXT47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTnVsbFZpZXcgaW1wbGVtZW50cyBWaWV3PE51bGw+IHtcbiAgICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0YTxOdWxsPikge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoO1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmUoZGF0YTogRGF0YTxOdWxsPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3ICg8YW55PiB0aGlzLmNvbnN0cnVjdG9yKShkYXRhKSBhcyB0aGlzO1xuICAgIH1cbiAgICBwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQoKTogdm9pZCB7fVxuICAgIHB1YmxpYyBnZXQoKSB7IHJldHVybiBudWxsOyB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8bnVsbD4ge1xuICAgICAgICByZXR1cm4gWy4uLnRoaXNdO1xuICAgIH1cbiAgICBwdWJsaWMgaW5kZXhPZihzZWFyY2g6IGFueSkge1xuICAgICAgICAvLyBpZiB5b3UncmUgbG9va2luZyBmb3IgbnVsbHMgYW5kIHRoZSB2aWV3IGlzbid0IGVtcHR5LCB3ZSd2ZSBnb3QgJ2VtIVxuICAgICAgICByZXR1cm4gc2VhcmNoID09PSBudWxsICYmIHRoaXMubGVuZ3RoID4gMCA/IDAgOiAtMTtcbiAgICB9XG4gICAgcHVibGljICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPG51bGw+IHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAtMSwgbGVuZ3RoID0gdGhpcy5sZW5ndGg7ICsraW5kZXggPCBsZW5ndGg7KSB7XG4gICAgICAgICAgICB5aWVsZCBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQm9vbFZpZXcgZXh0ZW5kcyBGbGF0VmlldzxCb29sPiB7XG4gICAgcHJvdGVjdGVkIG9mZnNldDogbnVtYmVyO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERhdGE8Qm9vbD4pIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gZGF0YS5vZmZzZXQ7XG4gICAgfVxuICAgIHB1YmxpYyB0b0FycmF5KCkgeyByZXR1cm4gWy4uLnRoaXNdOyB9XG4gICAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGJvb2xCaXRJbmRleCA9IHRoaXMub2Zmc2V0ICsgaW5kZXg7XG4gICAgICAgIHJldHVybiBnZXRCb29sKG51bGwsIGluZGV4LCB0aGlzLnZhbHVlc1tib29sQml0SW5kZXggPj4gM10sIGJvb2xCaXRJbmRleCAlIDgpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0KGluZGV4OiBudW1iZXIsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHNldEJvb2wodGhpcy52YWx1ZXMsIHRoaXMub2Zmc2V0ICsgaW5kZXgsIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gaXRlcmF0ZUJpdHM8Ym9vbGVhbj4odGhpcy52YWx1ZXMsIHRoaXMub2Zmc2V0LCB0aGlzLmxlbmd0aCwgdGhpcy52YWx1ZXMsIGdldEJvb2wpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbGlkaXR5VmlldzxUIGV4dGVuZHMgRGF0YVR5cGU+IGltcGxlbWVudHMgVmlldzxUPiB7XG4gICAgcHJvdGVjdGVkIHZpZXc6IFZpZXc8VD47XG4gICAgcHJvdGVjdGVkIGxlbmd0aDogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBvZmZzZXQ6IG51bWJlcjtcbiAgICBwcm90ZWN0ZWQgbnVsbEJpdG1hcDogVWludDhBcnJheTtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRhPFQ+LCB2aWV3OiBWaWV3PFQ+KSB7XG4gICAgICAgIHRoaXMudmlldyA9IHZpZXc7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gZGF0YS5vZmZzZXQ7XG4gICAgICAgIHRoaXMubnVsbEJpdG1hcCA9IGRhdGEubnVsbEJpdG1hcCE7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZShkYXRhOiBEYXRhPFQ+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiBuZXcgVmFsaWRpdHlWaWV3KGRhdGEsIHRoaXMudmlldy5jbG9uZShkYXRhKSkgYXMgdGhpcztcbiAgICB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8VFsnVFZhbHVlJ10gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBbLi4udGhpc107XG4gICAgfVxuICAgIHB1YmxpYyBpbmRleE9mKHNlYXJjaDogVFsnVFZhbHVlJ10pIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdGhpcykge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBzZWFyY2gpIHsgcmV0dXJuIGluZGV4OyB9XG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBwdWJsaWMgaXNWYWxpZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG51bGxCaXRJbmRleCA9IHRoaXMub2Zmc2V0ICsgaW5kZXg7XG4gICAgICAgIHJldHVybiBnZXRCb29sKG51bGwsIGluZGV4LCB0aGlzLm51bGxCaXRtYXBbbnVsbEJpdEluZGV4ID4+IDNdLCBudWxsQml0SW5kZXggJSA4KTtcbiAgICB9XG4gICAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogVFsnVFZhbHVlJ10gfCBudWxsIHtcbiAgICAgICAgY29uc3QgbnVsbEJpdEluZGV4ID0gdGhpcy5vZmZzZXQgKyBpbmRleDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TnVsbGFibGUodGhpcy52aWV3LCBpbmRleCwgdGhpcy5udWxsQml0bWFwW251bGxCaXRJbmRleCA+PiAzXSwgbnVsbEJpdEluZGV4ICUgOCk7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQoaW5kZXg6IG51bWJlciwgdmFsdWU6IFRbJ1RWYWx1ZSddIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoc2V0Qm9vbCh0aGlzLm51bGxCaXRtYXAsIHRoaXMub2Zmc2V0ICsgaW5kZXgsIHZhbHVlICE9IG51bGwpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXcuc2V0KGluZGV4LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8VFsnVFZhbHVlJ10gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBpdGVyYXRlQml0czxUWydUVmFsdWUnXSB8IG51bGw+KHRoaXMubnVsbEJpdG1hcCwgdGhpcy5vZmZzZXQsIHRoaXMubGVuZ3RoLCB0aGlzLnZpZXcsIHRoaXMuZ2V0TnVsbGFibGUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZ2V0TnVsbGFibGUodmlldzogVmlldzxUPiwgaW5kZXg6IG51bWJlciwgYnl0ZTogbnVtYmVyLCBiaXQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gZ2V0Qm9vbCh2aWV3LCBpbmRleCwgYnl0ZSwgYml0KSA/IHZpZXcuZ2V0KGluZGV4KSA6IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJpbWl0aXZlVmlldzxUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4gZXh0ZW5kcyBGbGF0VmlldzxUPiB7XG4gICAgcHVibGljIHNpemU6IG51bWJlcjtcbiAgICBwdWJsaWMgQXJyYXlUeXBlOiBUWydBcnJheVR5cGUnXTtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRhPFQ+LCBzaXplPzogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLnNpemUgPSBzaXplIHx8IDE7XG4gICAgICAgIHRoaXMuQXJyYXlUeXBlID0gZGF0YS50eXBlLkFycmF5VHlwZTtcbiAgICB9XG4gICAgcHVibGljIGNsb25lKGRhdGE6IERhdGE8VD4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIG5ldyAoPGFueT4gdGhpcy5jb25zdHJ1Y3RvcikoZGF0YSwgdGhpcy5zaXplKSBhcyB0aGlzO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZ2V0VmFsdWUodmFsdWVzOiBUWydUQXJyYXknXSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogVFsnVFZhbHVlJ10ge1xuICAgICAgICByZXR1cm4gdmFsdWVzW2luZGV4ICogc2l6ZV07XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZXM6IFRbJ1RBcnJheSddLCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHZhbHVlOiBUWydUVmFsdWUnXSk6IHZvaWQge1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplXSA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0KGluZGV4OiBudW1iZXIpOiBUWydUVmFsdWUnXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKHRoaXMudmFsdWVzLCBpbmRleCwgdGhpcy5zaXplKTtcbiAgICB9XG4gICAgcHVibGljIHNldChpbmRleDogbnVtYmVyLCB2YWx1ZTogVFsnVFZhbHVlJ10pOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZXMsIGluZGV4LCB0aGlzLnNpemUsIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8VFsnVFZhbHVlJ10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA+IDEgP1xuICAgICAgICAgICAgbmV3IHRoaXMuQXJyYXlUeXBlKHRoaXMpIDpcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnN1YmFycmF5KDAsIHRoaXMubGVuZ3RoKTtcbiAgICB9XG4gICAgcHVibGljICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFRbJ1RWYWx1ZSddPiB7XG4gICAgICAgIGNvbnN0IGdldCA9IHRoaXMuZ2V0VmFsdWU7XG4gICAgICAgIGNvbnN0IHsgc2l6ZSwgdmFsdWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gLTE7ICsraW5kZXggPCBsZW5ndGg7KSB7XG4gICAgICAgICAgICB5aWVsZCBnZXQodmFsdWVzLCBpbmRleCwgc2l6ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaXhlZFNpemVWaWV3PFQgZXh0ZW5kcyBQcmltaXRpdmVUeXBlPiBleHRlbmRzIFByaW1pdGl2ZVZpZXc8VD4ge1xuICAgIHB1YmxpYyB0b0FycmF5KCk6IEl0ZXJhYmxlQXJyYXlMaWtlPFRbJ1RWYWx1ZSddPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgICB9XG4gICAgcHVibGljIGluZGV4T2Yoc2VhcmNoOiBUWydUVmFsdWUnXSkge1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB0aGlzKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUuZXZlcnkoKGQ6IG51bWJlciwgaTogbnVtYmVyKSA9PiBkID09PSBzZWFyY2hbaV0pKSB7IHJldHVybiBpbmRleDsgfVxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogVFsnVEFycmF5J10sIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IFRbJ1RWYWx1ZSddIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5zdWJhcnJheShpbmRleCAqIHNpemUsIGluZGV4ICogc2l6ZSArIHNpemUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWUodmFsdWVzOiBUWydUQXJyYXknXSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCB2YWx1ZTogVFsnVFZhbHVlJ10pOiB2b2lkIHtcbiAgICAgICAgdmFsdWVzLnNldCgodmFsdWUgYXMgVFsnVEFycmF5J10pLnN1YmFycmF5KDAsIHNpemUpLCBpbmRleCAqIHNpemUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZsb2F0MTZWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxGbG9hdDE2PiB7XG4gICAgcHVibGljIHRvQXJyYXkoKSB7IHJldHVybiBuZXcgRmxvYXQzMkFycmF5KHRoaXMpOyB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogVWludDE2QXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAodmFsdWVzW2luZGV4ICogc2l6ZV0gLSAzMjc2NykgLyAzMjc2NztcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogVWludDE2QXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplXSA9ICh2YWx1ZSAqIDMyNzY3KSArIDMyNzY3O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGVEYXlWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxEYXRlXz4ge1xuICAgIHB1YmxpYyB0b0FycmF5KCkgeyByZXR1cm4gWy4uLnRoaXNdOyB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBlcG9jaERheXNUb0RhdGUodmFsdWVzLCBpbmRleCAqIHNpemUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWUodmFsdWVzOiBJbnQzMkFycmF5LCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gdmFsdWUudmFsdWVPZigpIC8gODY0MDAwMDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZU1pbGxpc2Vjb25kVmlldyBleHRlbmRzIEZpeGVkU2l6ZVZpZXc8RGF0ZV8+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IERhdGUge1xuICAgICAgICByZXR1cm4gZXBvY2hNaWxsaXNlY29uZHNMb25nVG9EYXRlKHZhbHVlcywgaW5kZXggKiBzaXplKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCB2YWx1ZTogRGF0ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlcG9jaE1zID0gdmFsdWUudmFsdWVPZigpO1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplXSA9IChlcG9jaE1zICUgNDI5NDk2NzI5NikgfCAwO1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplICsgc2l6ZV0gPSAoZXBvY2hNcyAvIDQyOTQ5NjcyOTYpIHwgMDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUaW1lc3RhbXBEYXlWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxUaW1lc3RhbXA+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBlcG9jaERheXNUb01zKHZhbHVlcywgaW5kZXggKiBzaXplKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBlcG9jaE1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZV0gPSAoZXBvY2hNcyAvIDg2NDAwMDAwKSB8IDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZXN0YW1wU2Vjb25kVmlldyBleHRlbmRzIFByaW1pdGl2ZVZpZXc8VGltZXN0YW1wPiB7XG4gICAgcHVibGljIHRvQXJyYXkoKSB7IHJldHVybiBbLi4udGhpc107IH1cbiAgICBwcm90ZWN0ZWQgZ2V0VmFsdWUodmFsdWVzOiBJbnQzMkFycmF5LCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZXBvY2hTZWNvbmRzVG9Ncyh2YWx1ZXMsIGluZGV4ICogc2l6ZSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlciwgZXBvY2hNczogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gKGVwb2NoTXMgLyAxMDAwKSB8IDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZXN0YW1wTWlsbGlzZWNvbmRWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxUaW1lc3RhbXA+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBlcG9jaE1pbGxpc2Vjb25kc0xvbmdUb01zKHZhbHVlcywgaW5kZXggKiBzaXplKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBlcG9jaE1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZV0gPSAoZXBvY2hNcyAlIDQyOTQ5NjcyOTYpIHwgMDtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZSArIHNpemVdID0gKGVwb2NoTXMgLyA0Mjk0OTY3Mjk2KSB8IDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZXN0YW1wTWljcm9zZWNvbmRWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxUaW1lc3RhbXA+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBlcG9jaE1pY3Jvc2Vjb25kc0xvbmdUb01zKHZhbHVlcywgaW5kZXggKiBzaXplKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBlcG9jaE1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZV0gPSAoKGVwb2NoTXMgLyAxMDAwKSAlIDQyOTQ5NjcyOTYpIHwgMDtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZSArIHNpemVdID0gKChlcG9jaE1zIC8gMTAwMCkgLyA0Mjk0OTY3Mjk2KSB8IDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZXN0YW1wTmFub3NlY29uZFZpZXcgZXh0ZW5kcyBQcmltaXRpdmVWaWV3PFRpbWVzdGFtcD4ge1xuICAgIHB1YmxpYyB0b0FycmF5KCkgeyByZXR1cm4gWy4uLnRoaXNdOyB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGVwb2NoTmFub3NlY29uZHNMb25nVG9Ncyh2YWx1ZXMsIGluZGV4ICogc2l6ZSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlciwgZXBvY2hNczogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gKChlcG9jaE1zIC8gMTAwMDAwMCkgJSA0Mjk0OTY3Mjk2KSB8IDA7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemUgKyBzaXplXSA9ICgoZXBvY2hNcyAvIDEwMDAwMDApIC8gNDI5NDk2NzI5NikgfCAwO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludGVydmFsWWVhck1vbnRoVmlldyBleHRlbmRzIFByaW1pdGl2ZVZpZXc8SW50ZXJ2YWw+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IEludDMyQXJyYXkge1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHZhbHVlc1tpbmRleCAqIHNpemVdO1xuICAgICAgICByZXR1cm4gbmV3IEludDMyQXJyYXkoW2ludGVydmFsIC8gMTIsIC8qIHllYXJzICovIGludGVydmFsICUgMTIgIC8qIG1vbnRocyAqL10pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWUodmFsdWVzOiBJbnQzMkFycmF5LCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHZhbHVlOiBJbnQzMkFycmF5KTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gKHZhbHVlWzBdICogMTIpICsgKHZhbHVlWzFdICUgMTIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludGVydmFsWWVhclZpZXcgZXh0ZW5kcyBQcmltaXRpdmVWaWV3PEludDMyPiB7XG4gICAgcHVibGljIHRvQXJyYXkoKSB7IHJldHVybiBbLi4udGhpc107IH1cbiAgICBwcm90ZWN0ZWQgZ2V0VmFsdWUodmFsdWVzOiBJbnQzMkFycmF5LCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdmFsdWVzW2luZGV4ICogc2l6ZV0gLyAxMjtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gKHZhbHVlICogMTIpICsgKHZhbHVlc1tpbmRleCAqIHNpemVdICUgMTIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludGVydmFsTW9udGhWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxJbnQzMj4ge1xuICAgIHB1YmxpYyB0b0FycmF5KCkgeyByZXR1cm4gWy4uLnRoaXNdOyB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlc1tpbmRleCAqIHNpemVdICUgMTI7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplXSA9ICh2YWx1ZXNbaW5kZXggKiBzaXplXSAqIDEyKSArICh2YWx1ZSAlIDEyKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcG9jaFNlY29uZHNUb01zKGRhdGE6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIpIHsgcmV0dXJuIDEwMDAgKiBkYXRhW2luZGV4XTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoRGF5c1RvTXMoZGF0YTogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlcikgeyByZXR1cm4gODY0MDAwMDAgKiBkYXRhW2luZGV4XTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoTWlsbGlzZWNvbmRzTG9uZ1RvTXMoZGF0YTogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlcikgeyByZXR1cm4gNDI5NDk2NzI5NiAqIChkYXRhW2luZGV4ICsgMV0pICsgZGF0YVtpbmRleF07IH1cbmV4cG9ydCBmdW5jdGlvbiBlcG9jaE1pY3Jvc2Vjb25kc0xvbmdUb01zKGRhdGE6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIpIHsgcmV0dXJuIDQyOTQ5NjcyOTYgKiAoZGF0YVtpbmRleCArIDFdIC8gMTAwMCkgKyAoZGF0YVtpbmRleF0gLyAxMDAwKTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoTmFub3NlY29uZHNMb25nVG9NcyhkYXRhOiBJbnQzMkFycmF5LCBpbmRleDogbnVtYmVyKSB7IHJldHVybiA0Mjk0OTY3Mjk2ICogKGRhdGFbaW5kZXggKyAxXSAvIDEwMDAwMDApICsgKGRhdGFbaW5kZXhdIC8gMTAwMDAwMCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoTWlsbGlzZWNvbmRzVG9EYXRlKGVwb2NoTXM6IG51bWJlcikgeyByZXR1cm4gbmV3IERhdGUoZXBvY2hNcyk7IH1cbmV4cG9ydCBmdW5jdGlvbiBlcG9jaERheXNUb0RhdGUoZGF0YTogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlcikgeyByZXR1cm4gZXBvY2hNaWxsaXNlY29uZHNUb0RhdGUoZXBvY2hEYXlzVG9NcyhkYXRhLCBpbmRleCkpOyB9XG5leHBvcnQgZnVuY3Rpb24gZXBvY2hTZWNvbmRzVG9EYXRlKGRhdGE6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIpIHsgcmV0dXJuIGVwb2NoTWlsbGlzZWNvbmRzVG9EYXRlKGVwb2NoU2Vjb25kc1RvTXMoZGF0YSwgaW5kZXgpKTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoTmFub3NlY29uZHNMb25nVG9EYXRlKGRhdGE6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIpIHsgcmV0dXJuIGVwb2NoTWlsbGlzZWNvbmRzVG9EYXRlKGVwb2NoTmFub3NlY29uZHNMb25nVG9NcyhkYXRhLCBpbmRleCkpOyB9XG5leHBvcnQgZnVuY3Rpb24gZXBvY2hNaWxsaXNlY29uZHNMb25nVG9EYXRlKGRhdGE6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIpIHsgcmV0dXJuIGVwb2NoTWlsbGlzZWNvbmRzVG9EYXRlKGVwb2NoTWlsbGlzZWNvbmRzTG9uZ1RvTXMoZGF0YSwgaW5kZXgpKTsgfVxuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,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R0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFoSyw0REFBZ0s7QUFFaEssaUNBQXdDLE9BQWUsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQXRGLDBEQUFzRjtBQUN0Rix5QkFBZ0MsSUFBZ0IsRUFBRSxLQUFhLElBQUksTUFBTSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBaEksMENBQWdJO0FBQ2hJLDRCQUFtQyxJQUFnQixFQUFFLEtBQWEsSUFBSSxNQUFNLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQXRJLGdEQUFzSTtBQUN0SSxvQ0FBMkMsSUFBZ0IsRUFBRSxLQUFhLElBQUksTUFBTSxDQUFDLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUF0SixnRUFBc0o7QUFDdEoscUNBQTRDLElBQWdCLEVBQUUsS0FBYSxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBeEosa0VBQXdKIiwiZmlsZSI6InZlY3Rvci9mbGF0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7IERhdGEgfSBmcm9tICcuLi9kYXRhJztcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuLi92ZWN0b3InO1xuaW1wb3J0IHsgZ2V0Qm9vbCwgc2V0Qm9vbCwgaXRlcmF0ZUJpdHMgfSBmcm9tICcuLi91dGlsL2JpdCc7XG5pbXBvcnQgeyBCb29sLCBGbG9hdDE2LCBEYXRlXywgSW50ZXJ2YWwsIE51bGwsIEludDMyLCBUaW1lc3RhbXAgfSBmcm9tICcuLi90eXBlJztcbmltcG9ydCB7IERhdGFUeXBlLCBGbGF0VHlwZSwgUHJpbWl0aXZlVHlwZSwgSXRlcmFibGVBcnJheUxpa2UgfSBmcm9tICcuLi90eXBlJztcblxuZXhwb3J0IGNsYXNzIEZsYXRWaWV3PFQgZXh0ZW5kcyBGbGF0VHlwZT4gaW1wbGVtZW50cyBWaWV3PFQ+IHtcbiAgICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gICAgcHVibGljIHZhbHVlczogVFsnVEFycmF5J107XG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0YTxUPikge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IGRhdGEudmFsdWVzO1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmUoZGF0YTogRGF0YTxUPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3ICg8YW55PiB0aGlzLmNvbnN0cnVjdG9yKShkYXRhKSBhcyB0aGlzO1xuICAgIH1cbiAgICBwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcik6IFRbJ1RWYWx1ZSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XTtcbiAgICB9XG4gICAgcHVibGljIHNldChpbmRleDogbnVtYmVyLCB2YWx1ZTogVFsnVFZhbHVlJ10pOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XSA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgdG9BcnJheSgpOiBJdGVyYWJsZUFycmF5TGlrZTxUWydUVmFsdWUnXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3ViYXJyYXkoMCwgdGhpcy5sZW5ndGgpO1xuICAgIH1cbiAgICBwdWJsaWMgaW5kZXhPZihzZWFyY2g6IFRbJ1RWYWx1ZSddKSB7XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHRoaXMpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gc2VhcmNoKSB7IHJldHVybiBpbmRleDsgfVxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8VFsnVFZhbHVlJ10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLnN1YmFycmF5KDAsIHRoaXMubGVuZ3RoKVtTeW1ib2wuaXRlcmF0b3JdKCkgYXMgSXRlcmFibGVJdGVyYXRvcjxUWydUVmFsdWUnXT47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTnVsbFZpZXcgaW1wbGVtZW50cyBWaWV3PE51bGw+IHtcbiAgICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0YTxOdWxsPikge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoO1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmUoZGF0YTogRGF0YTxOdWxsPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3ICg8YW55PiB0aGlzLmNvbnN0cnVjdG9yKShkYXRhKSBhcyB0aGlzO1xuICAgIH1cbiAgICBwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQoKTogdm9pZCB7fVxuICAgIHB1YmxpYyBnZXQoKSB7IHJldHVybiBudWxsOyB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8bnVsbD4ge1xuICAgICAgICByZXR1cm4gWy4uLnRoaXNdO1xuICAgIH1cbiAgICBwdWJsaWMgaW5kZXhPZihzZWFyY2g6IGFueSkge1xuICAgICAgICAvLyBpZiB5b3UncmUgbG9va2luZyBmb3IgbnVsbHMgYW5kIHRoZSB2aWV3IGlzbid0IGVtcHR5LCB3ZSd2ZSBnb3QgJ2VtIVxuICAgICAgICByZXR1cm4gc2VhcmNoID09PSBudWxsICYmIHRoaXMubGVuZ3RoID4gMCA/IDAgOiAtMTtcbiAgICB9XG4gICAgcHVibGljICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPG51bGw+IHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAtMSwgbGVuZ3RoID0gdGhpcy5sZW5ndGg7ICsraW5kZXggPCBsZW5ndGg7KSB7XG4gICAgICAgICAgICB5aWVsZCBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQm9vbFZpZXcgZXh0ZW5kcyBGbGF0VmlldzxCb29sPiB7XG4gICAgcHJvdGVjdGVkIG9mZnNldDogbnVtYmVyO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERhdGE8Qm9vbD4pIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gZGF0YS5vZmZzZXQ7XG4gICAgfVxuICAgIHB1YmxpYyB0b0FycmF5KCkgeyByZXR1cm4gWy4uLnRoaXNdOyB9XG4gICAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGJvb2xCaXRJbmRleCA9IHRoaXMub2Zmc2V0ICsgaW5kZXg7XG4gICAgICAgIHJldHVybiBnZXRCb29sKG51bGwsIGluZGV4LCB0aGlzLnZhbHVlc1tib29sQml0SW5kZXggPj4gM10sIGJvb2xCaXRJbmRleCAlIDgpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0KGluZGV4OiBudW1iZXIsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHNldEJvb2wodGhpcy52YWx1ZXMsIHRoaXMub2Zmc2V0ICsgaW5kZXgsIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gaXRlcmF0ZUJpdHM8Ym9vbGVhbj4odGhpcy52YWx1ZXMsIHRoaXMub2Zmc2V0LCB0aGlzLmxlbmd0aCwgdGhpcy52YWx1ZXMsIGdldEJvb2wpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbGlkaXR5VmlldzxUIGV4dGVuZHMgRGF0YVR5cGU+IGltcGxlbWVudHMgVmlldzxUPiB7XG4gICAgcHJvdGVjdGVkIHZpZXc6IFZpZXc8VD47XG4gICAgcHJvdGVjdGVkIGxlbmd0aDogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBvZmZzZXQ6IG51bWJlcjtcbiAgICBwcm90ZWN0ZWQgbnVsbEJpdG1hcDogVWludDhBcnJheTtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRhPFQ+LCB2aWV3OiBWaWV3PFQ+KSB7XG4gICAgICAgIHRoaXMudmlldyA9IHZpZXc7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gZGF0YS5vZmZzZXQ7XG4gICAgICAgIHRoaXMubnVsbEJpdG1hcCA9IGRhdGEubnVsbEJpdG1hcCE7XG4gICAgfVxuICAgIHB1YmxpYyBjbG9uZShkYXRhOiBEYXRhPFQ+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiBuZXcgVmFsaWRpdHlWaWV3KGRhdGEsIHRoaXMudmlldy5jbG9uZShkYXRhKSkgYXMgdGhpcztcbiAgICB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8VFsnVFZhbHVlJ10gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBbLi4udGhpc107XG4gICAgfVxuICAgIHB1YmxpYyBpbmRleE9mKHNlYXJjaDogVFsnVFZhbHVlJ10pIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdGhpcykge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBzZWFyY2gpIHsgcmV0dXJuIGluZGV4OyB9XG4gICAgICAgICAgICArK2luZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBwdWJsaWMgaXNWYWxpZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG51bGxCaXRJbmRleCA9IHRoaXMub2Zmc2V0ICsgaW5kZXg7XG4gICAgICAgIHJldHVybiBnZXRCb29sKG51bGwsIGluZGV4LCB0aGlzLm51bGxCaXRtYXBbbnVsbEJpdEluZGV4ID4+IDNdLCBudWxsQml0SW5kZXggJSA4KTtcbiAgICB9XG4gICAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogVFsnVFZhbHVlJ10gfCBudWxsIHtcbiAgICAgICAgY29uc3QgbnVsbEJpdEluZGV4ID0gdGhpcy5vZmZzZXQgKyBpbmRleDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TnVsbGFibGUodGhpcy52aWV3LCBpbmRleCwgdGhpcy5udWxsQml0bWFwW251bGxCaXRJbmRleCA+PiAzXSwgbnVsbEJpdEluZGV4ICUgOCk7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQoaW5kZXg6IG51bWJlciwgdmFsdWU6IFRbJ1RWYWx1ZSddIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoc2V0Qm9vbCh0aGlzLm51bGxCaXRtYXAsIHRoaXMub2Zmc2V0ICsgaW5kZXgsIHZhbHVlICE9IG51bGwpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXcuc2V0KGluZGV4LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8VFsnVFZhbHVlJ10gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBpdGVyYXRlQml0czxUWydUVmFsdWUnXSB8IG51bGw+KHRoaXMubnVsbEJpdG1hcCwgdGhpcy5vZmZzZXQsIHRoaXMubGVuZ3RoLCB0aGlzLnZpZXcsIHRoaXMuZ2V0TnVsbGFibGUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZ2V0TnVsbGFibGUodmlldzogVmlldzxUPiwgaW5kZXg6IG51bWJlciwgYnl0ZTogbnVtYmVyLCBiaXQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gZ2V0Qm9vbCh2aWV3LCBpbmRleCwgYnl0ZSwgYml0KSA/IHZpZXcuZ2V0KGluZGV4KSA6IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJpbWl0aXZlVmlldzxUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4gZXh0ZW5kcyBGbGF0VmlldzxUPiB7XG4gICAgcHVibGljIHNpemU6IG51bWJlcjtcbiAgICBwdWJsaWMgQXJyYXlUeXBlOiBUWydBcnJheVR5cGUnXTtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRhPFQ+LCBzaXplPzogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLnNpemUgPSBzaXplIHx8IDE7XG4gICAgICAgIHRoaXMuQXJyYXlUeXBlID0gZGF0YS50eXBlLkFycmF5VHlwZTtcbiAgICB9XG4gICAgcHVibGljIGNsb25lKGRhdGE6IERhdGE8VD4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIG5ldyAoPGFueT4gdGhpcy5jb25zdHJ1Y3RvcikoZGF0YSwgdGhpcy5zaXplKSBhcyB0aGlzO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZ2V0VmFsdWUodmFsdWVzOiBUWydUQXJyYXknXSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogVFsnVFZhbHVlJ10ge1xuICAgICAgICByZXR1cm4gdmFsdWVzW2luZGV4ICogc2l6ZV07XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZXM6IFRbJ1RBcnJheSddLCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHZhbHVlOiBUWydUVmFsdWUnXSk6IHZvaWQge1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplXSA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0KGluZGV4OiBudW1iZXIpOiBUWydUVmFsdWUnXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKHRoaXMudmFsdWVzLCBpbmRleCwgdGhpcy5zaXplKTtcbiAgICB9XG4gICAgcHVibGljIHNldChpbmRleDogbnVtYmVyLCB2YWx1ZTogVFsnVFZhbHVlJ10pOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZXMsIGluZGV4LCB0aGlzLnNpemUsIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIHRvQXJyYXkoKTogSXRlcmFibGVBcnJheUxpa2U8VFsnVFZhbHVlJ10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA+IDEgP1xuICAgICAgICAgICAgbmV3IHRoaXMuQXJyYXlUeXBlKHRoaXMpIDpcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnN1YmFycmF5KDAsIHRoaXMubGVuZ3RoKTtcbiAgICB9XG4gICAgcHVibGljICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFRbJ1RWYWx1ZSddPiB7XG4gICAgICAgIGNvbnN0IGdldCA9IHRoaXMuZ2V0VmFsdWU7XG4gICAgICAgIGNvbnN0IHsgc2l6ZSwgdmFsdWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gLTE7ICsraW5kZXggPCBsZW5ndGg7KSB7XG4gICAgICAgICAgICB5aWVsZCBnZXQodmFsdWVzLCBpbmRleCwgc2l6ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaXhlZFNpemVWaWV3PFQgZXh0ZW5kcyBQcmltaXRpdmVUeXBlPiBleHRlbmRzIFByaW1pdGl2ZVZpZXc8VD4ge1xuICAgIHB1YmxpYyB0b0FycmF5KCk6IEl0ZXJhYmxlQXJyYXlMaWtlPFRbJ1RWYWx1ZSddPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgICB9XG4gICAgcHVibGljIGluZGV4T2Yoc2VhcmNoOiBUWydUVmFsdWUnXSkge1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB0aGlzKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUuZXZlcnkoKGQ6IG51bWJlciwgaTogbnVtYmVyKSA9PiBkID09PSBzZWFyY2hbaV0pKSB7IHJldHVybiBpbmRleDsgfVxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogVFsnVEFycmF5J10sIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IFRbJ1RWYWx1ZSddIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5zdWJhcnJheShpbmRleCAqIHNpemUsIGluZGV4ICogc2l6ZSArIHNpemUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWUodmFsdWVzOiBUWydUQXJyYXknXSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCB2YWx1ZTogVFsnVFZhbHVlJ10pOiB2b2lkIHtcbiAgICAgICAgdmFsdWVzLnNldCgodmFsdWUgYXMgVFsnVEFycmF5J10pLnN1YmFycmF5KDAsIHNpemUpLCBpbmRleCAqIHNpemUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZsb2F0MTZWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxGbG9hdDE2PiB7XG4gICAgcHVibGljIHRvQXJyYXkoKSB7IHJldHVybiBuZXcgRmxvYXQzMkFycmF5KHRoaXMpOyB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogVWludDE2QXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAodmFsdWVzW2luZGV4ICogc2l6ZV0gLSAzMjc2NykgLyAzMjc2NztcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogVWludDE2QXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplXSA9ICh2YWx1ZSAqIDMyNzY3KSArIDMyNzY3O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGVEYXlWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxEYXRlXz4ge1xuICAgIHB1YmxpYyB0b0FycmF5KCkgeyByZXR1cm4gWy4uLnRoaXNdOyB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBlcG9jaERheXNUb0RhdGUodmFsdWVzLCBpbmRleCAqIHNpemUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWUodmFsdWVzOiBJbnQzMkFycmF5LCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gdmFsdWUudmFsdWVPZigpIC8gODY0MDAwMDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZU1pbGxpc2Vjb25kVmlldyBleHRlbmRzIEZpeGVkU2l6ZVZpZXc8RGF0ZV8+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IERhdGUge1xuICAgICAgICByZXR1cm4gZXBvY2hNaWxsaXNlY29uZHNMb25nVG9EYXRlKHZhbHVlcywgaW5kZXggKiBzaXplKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCB2YWx1ZTogRGF0ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlcG9jaE1zID0gdmFsdWUudmFsdWVPZigpO1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplXSA9IChlcG9jaE1zICUgNDI5NDk2NzI5NikgfCAwO1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplICsgc2l6ZV0gPSAoZXBvY2hNcyAvIDQyOTQ5NjcyOTYpIHwgMDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUaW1lc3RhbXBEYXlWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxUaW1lc3RhbXA+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBlcG9jaERheXNUb01zKHZhbHVlcywgaW5kZXggKiBzaXplKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBlcG9jaE1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZV0gPSAoZXBvY2hNcyAvIDg2NDAwMDAwKSB8IDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZXN0YW1wU2Vjb25kVmlldyBleHRlbmRzIFByaW1pdGl2ZVZpZXc8VGltZXN0YW1wPiB7XG4gICAgcHVibGljIHRvQXJyYXkoKSB7IHJldHVybiBbLi4udGhpc107IH1cbiAgICBwcm90ZWN0ZWQgZ2V0VmFsdWUodmFsdWVzOiBJbnQzMkFycmF5LCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZXBvY2hTZWNvbmRzVG9Ncyh2YWx1ZXMsIGluZGV4ICogc2l6ZSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlciwgZXBvY2hNczogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gKGVwb2NoTXMgLyAxMDAwKSB8IDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZXN0YW1wTWlsbGlzZWNvbmRWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxUaW1lc3RhbXA+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBlcG9jaE1pbGxpc2Vjb25kc0xvbmdUb01zKHZhbHVlcywgaW5kZXggKiBzaXplKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBlcG9jaE1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZV0gPSAoZXBvY2hNcyAlIDQyOTQ5NjcyOTYpIHwgMDtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZSArIHNpemVdID0gKGVwb2NoTXMgLyA0Mjk0OTY3Mjk2KSB8IDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZXN0YW1wTWljcm9zZWNvbmRWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxUaW1lc3RhbXA+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBlcG9jaE1pY3Jvc2Vjb25kc0xvbmdUb01zKHZhbHVlcywgaW5kZXggKiBzaXplKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBlcG9jaE1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZV0gPSAoKGVwb2NoTXMgLyAxMDAwKSAlIDQyOTQ5NjcyOTYpIHwgMDtcbiAgICAgICAgdmFsdWVzW2luZGV4ICogc2l6ZSArIHNpemVdID0gKChlcG9jaE1zIC8gMTAwMCkgLyA0Mjk0OTY3Mjk2KSB8IDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZXN0YW1wTmFub3NlY29uZFZpZXcgZXh0ZW5kcyBQcmltaXRpdmVWaWV3PFRpbWVzdGFtcD4ge1xuICAgIHB1YmxpYyB0b0FycmF5KCkgeyByZXR1cm4gWy4uLnRoaXNdOyB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGVwb2NoTmFub3NlY29uZHNMb25nVG9Ncyh2YWx1ZXMsIGluZGV4ICogc2l6ZSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlciwgZXBvY2hNczogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gKChlcG9jaE1zIC8gMTAwMDAwMCkgJSA0Mjk0OTY3Mjk2KSB8IDA7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemUgKyBzaXplXSA9ICgoZXBvY2hNcyAvIDEwMDAwMDApIC8gNDI5NDk2NzI5NikgfCAwO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludGVydmFsWWVhck1vbnRoVmlldyBleHRlbmRzIFByaW1pdGl2ZVZpZXc8SW50ZXJ2YWw+IHtcbiAgICBwdWJsaWMgdG9BcnJheSgpIHsgcmV0dXJuIFsuLi50aGlzXTsgfVxuICAgIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcik6IEludDMyQXJyYXkge1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHZhbHVlc1tpbmRleCAqIHNpemVdO1xuICAgICAgICByZXR1cm4gbmV3IEludDMyQXJyYXkoW2ludGVydmFsIC8gMTIsIC8qIHllYXJzICovIGludGVydmFsICUgMTIgIC8qIG1vbnRocyAqL10pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWUodmFsdWVzOiBJbnQzMkFycmF5LCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHZhbHVlOiBJbnQzMkFycmF5KTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gKHZhbHVlWzBdICogMTIpICsgKHZhbHVlWzFdICUgMTIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludGVydmFsWWVhclZpZXcgZXh0ZW5kcyBQcmltaXRpdmVWaWV3PEludDMyPiB7XG4gICAgcHVibGljIHRvQXJyYXkoKSB7IHJldHVybiBbLi4udGhpc107IH1cbiAgICBwcm90ZWN0ZWQgZ2V0VmFsdWUodmFsdWVzOiBJbnQzMkFycmF5LCBpbmRleDogbnVtYmVyLCBzaXplOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdmFsdWVzW2luZGV4ICogc2l6ZV0gLyAxMjtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHZhbHVlc1tpbmRleCAqIHNpemVdID0gKHZhbHVlICogMTIpICsgKHZhbHVlc1tpbmRleCAqIHNpemVdICUgMTIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludGVydmFsTW9udGhWaWV3IGV4dGVuZHMgUHJpbWl0aXZlVmlldzxJbnQzMj4ge1xuICAgIHB1YmxpYyB0b0FycmF5KCkgeyByZXR1cm4gWy4uLnRoaXNdOyB9XG4gICAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlczogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlc1tpbmRleCAqIHNpemVdICUgMTI7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZXM6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB2YWx1ZXNbaW5kZXggKiBzaXplXSA9ICh2YWx1ZXNbaW5kZXggKiBzaXplXSAqIDEyKSArICh2YWx1ZSAlIDEyKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcG9jaFNlY29uZHNUb01zKGRhdGE6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIpIHsgcmV0dXJuIDEwMDAgKiBkYXRhW2luZGV4XTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoRGF5c1RvTXMoZGF0YTogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlcikgeyByZXR1cm4gODY0MDAwMDAgKiBkYXRhW2luZGV4XTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoTWlsbGlzZWNvbmRzTG9uZ1RvTXMoZGF0YTogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlcikgeyByZXR1cm4gNDI5NDk2NzI5NiAqIChkYXRhW2luZGV4ICsgMV0pICsgKGRhdGFbaW5kZXhdID4+PiAwKTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoTWljcm9zZWNvbmRzTG9uZ1RvTXMoZGF0YTogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlcikgeyByZXR1cm4gNDI5NDk2NzI5NiAqIChkYXRhW2luZGV4ICsgMV0gLyAxMDAwKSArICgoZGF0YVtpbmRleF0gPj4+IDApIC8gMTAwMCk7IH1cbmV4cG9ydCBmdW5jdGlvbiBlcG9jaE5hbm9zZWNvbmRzTG9uZ1RvTXMoZGF0YTogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlcikgeyByZXR1cm4gNDI5NDk2NzI5NiAqIChkYXRhW2luZGV4ICsgMV0gLyAxMDAwMDAwKSArICgoZGF0YVtpbmRleF0gPj4+IDApIC8gMTAwMDAwMCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoTWlsbGlzZWNvbmRzVG9EYXRlKGVwb2NoTXM6IG51bWJlcikgeyByZXR1cm4gbmV3IERhdGUoZXBvY2hNcyk7IH1cbmV4cG9ydCBmdW5jdGlvbiBlcG9jaERheXNUb0RhdGUoZGF0YTogSW50MzJBcnJheSwgaW5kZXg6IG51bWJlcikgeyByZXR1cm4gZXBvY2hNaWxsaXNlY29uZHNUb0RhdGUoZXBvY2hEYXlzVG9NcyhkYXRhLCBpbmRleCkpOyB9XG5leHBvcnQgZnVuY3Rpb24gZXBvY2hTZWNvbmRzVG9EYXRlKGRhdGE6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIpIHsgcmV0dXJuIGVwb2NoTWlsbGlzZWNvbmRzVG9EYXRlKGVwb2NoU2Vjb25kc1RvTXMoZGF0YSwgaW5kZXgpKTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGVwb2NoTmFub3NlY29uZHNMb25nVG9EYXRlKGRhdGE6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIpIHsgcmV0dXJuIGVwb2NoTWlsbGlzZWNvbmRzVG9EYXRlKGVwb2NoTmFub3NlY29uZHNMb25nVG9NcyhkYXRhLCBpbmRleCkpOyB9XG5leHBvcnQgZnVuY3Rpb24gZXBvY2hNaWxsaXNlY29uZHNMb25nVG9EYXRlKGRhdGE6IEludDMyQXJyYXksIGluZGV4OiBudW1iZXIpIHsgcmV0dXJuIGVwb2NoTWlsbGlzZWNvbmRzVG9EYXRlKGVwb2NoTWlsbGlzZWNvbmRzTG9uZ1RvTXMoZGF0YSwgaW5kZXgpKTsgfVxuIl19

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc